diff options
author | Lars Ingebrigtsen <larsi@gnus.org> | 2021-07-31 17:44:43 +0200 |
---|---|---|
committer | Lars Ingebrigtsen <larsi@gnus.org> | 2021-07-31 17:44:43 +0200 |
commit | f6c5a801efdad6cc7ed16ac0b1fa53599b84bc91 (patch) | |
tree | 733b465030587f28fc1dbf2970d646245802517d /test/src/search-tests.el | |
parent | c4239ec32c944e74252937bfc52e341f81b7a5a4 (diff) | |
download | emacs-f6c5a801efdad6cc7ed16ac0b1fa53599b84bc91.tar.gz emacs-f6c5a801efdad6cc7ed16ac0b1fa53599b84bc91.tar.bz2 emacs-f6c5a801efdad6cc7ed16ac0b1fa53599b84bc91.zip |
Adjust how `replace-match' runs modification hooks
* src/editfns.c (Fsubst_char_in_region)
(Ftranslate_region_internal):
* src/cmds.c (internal_self_insert): Update callers.
* src/insdel.c (replace_range): Allow inhibiting
signal_after_change/update_compositions.
* src/lisp.h: Update.
* src/search.c (Freplace_match): Run the modification hooks at the
end instead of before adjusting point (bug#42424).
Diffstat (limited to 'test/src/search-tests.el')
-rw-r--r-- | test/src/search-tests.el | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/test/src/search-tests.el b/test/src/search-tests.el new file mode 100644 index 00000000000..b7b4ab9a8ff --- /dev/null +++ b/test/src/search-tests.el @@ -0,0 +1,42 @@ +;;; search-tests.el --- tests for search.c functions -*- lexical-binding: t -*- + +;; Copyright (C) 2015-2016, 2018-2021 Free Software Foundation, Inc. + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. + +;;; Code: + +(require 'ert) + +(ert-deftest test-replace-match-modification-hooks () + (let ((ov-set nil)) + (with-temp-buffer + (insert "1 abc") + (setq ov-set (make-overlay 3 5)) + (overlay-put + ov-set 'modification-hooks + (list (lambda (o after &rest _args) + (when after + (let ((inhibit-modification-hooks t)) + (save-excursion + (goto-char 2) + (insert "234"))))))) + (goto-char 3) + (if (search-forward "bc") + (replace-match "bcd")) + (should (= (point) 10))))) + +;;; search-tests.el ends here |