branch: externals/yasnippet
commit bd2fdc8f7da489972e36222ec5a64c85f4a81b4b
Author: Stefan Monnier <[email protected]>
Commit: Stefan Monnier <[email protected]>
* yasnippet.el (yas--snippet-create): Remove CC-mode workaround for #953
---
yasnippet.el | 47 ++++++++++++++++++++++++++++-------------------
1 file changed, 28 insertions(+), 19 deletions(-)
diff --git a/yasnippet.el b/yasnippet.el
index b64e48808e..d6c2c12371 100644
--- a/yasnippet.el
+++ b/yasnippet.el
@@ -4075,25 +4075,34 @@ Returns the newly created snippet."
;; content.
(let ((buffer-undo-list t))
(goto-char begin)
- ;; Call before and after change functions manually,
- ;; otherwise cc-mode's cache can get messed up. Don't use
- ;; `inhibit-modification-hooks' for that, that blocks
- ;; overlay and text property hooks as well! FIXME: Maybe
- ;; use `combine-change-calls'? (Requires Emacs 27+ though.)
- (run-hook-with-args 'before-change-functions begin end)
- (let ((before-change-functions nil)
- (after-change-functions nil))
- ;; Some versions of cc-mode (might be the one with Emacs
- ;; 24.3 only) fail when inserting snippet content in a
- ;; narrowed buffer, so make sure to insert before
- ;; narrowing.
- (insert content)
- (narrow-to-region begin (point))
- (goto-char (point-min))
- (yas--snippet-parse-create snippet))
- (run-hook-with-args 'after-change-functions
- (point-min) (point-max)
- (- end begin)))
+ (if (> emacs-major-version 29)
+ ;; Don't use the workaround for CC-mode's cache,
+ ;; since it was presumably a bug in CC-mode, so either
+ ;; it's fixed already, or it should get fixed.
+ (progn
+ (insert content)
+ (narrow-to-region begin (point))
+ (goto-char (point-min))
+ (yas--snippet-parse-create snippet))
+ ;; Call before and after change functions manually,
+ ;; otherwise cc-mode's cache can get messed up. Don't use
+ ;; `inhibit-modification-hooks' for that, that blocks
+ ;; overlay and text property hooks as well! FIXME: Maybe
+ ;; use `combine-change-calls'? (Requires Emacs 27+ though.)
+ (run-hook-with-args 'before-change-functions begin end)
+ (let ((before-change-functions nil)
+ (after-change-functions nil))
+ ;; Some versions of cc-mode (might be the one with Emacs
+ ;; 24.3 only) fail when inserting snippet content in a
+ ;; narrowed buffer, so make sure to insert before
+ ;; narrowing.
+ (insert content)
+ (narrow-to-region begin (point))
+ (goto-char (point-min))
+ (yas--snippet-parse-create snippet))
+ (run-hook-with-args 'after-change-functions
+ (point-min) (point-max)
+ (- end begin))))
(when (listp buffer-undo-list)
(push (cons (point-min) (point-max))
buffer-undo-list))