Misc minor pending tweaks

* yasnippet.el (yas-minor-mode): Fix docstring (issue#1210).
(yas--save-restriction-and-widen): Use workaround only for the old
Emacsen where it was needed.
(yas--snippet-create): Adjust Emacs version where CC-mode needed
a workaround.
(help-snippet-def): Remove useless use of `purecopy`.
This commit is contained in:
Stefan Monnier 2025-04-03 12:40:54 -04:00
parent 5b315f1753
commit 2c20b10fc3

View File

@ -891,18 +891,10 @@ which decides on the snippet to expand.")
;;;###autoload ;;;###autoload
(define-minor-mode yas-minor-mode (define-minor-mode yas-minor-mode
"Toggle YASnippet mode. "YASnippet minor mode.
When YASnippet mode is enabled, `yas-expand', normally bound to When YASnippet mode is enabled, `yas-expand', normally bound to
the TAB key, expands snippets of code depending on the major the TAB key, expands snippets of code depending on the major mode."
mode.
With no argument, this command toggles the mode.
positive prefix argument turns on the mode.
Negative prefix argument turns off the mode.
Key bindings:
\\{yas-minor-mode-map}"
:lighter " yas" ;; The indicator for the mode line. :lighter " yas" ;; The indicator for the mode line.
(cond ((and yas-minor-mode (featurep 'yasnippet)) (cond ((and yas-minor-mode (featurep 'yasnippet))
;; Install the direct keymaps in `emulation-mode-map-alists' ;; Install the direct keymaps in `emulation-mode-map-alists'
@ -1463,7 +1455,7 @@ Returns (TEMPLATES START END). This function respects
(defun yas--remove-misc-free-from-undo (old-undo-list) (defun yas--remove-misc-free-from-undo (old-undo-list)
"Tries to work around Emacs Bug#30931. "Tries to work around Emacs Bug#30931.
Helper function for `yas--save-restriction-and-widen'." Helper function for `yas--save-restriction-and-widen'."
;; If Bug#30931 is unfixed, we get (#<Lisp_Misc_Free> . INTEGER) ;; If Bug#30931 is unfixed (Emacs<26.2), we get (#<Lisp_Misc_Free> . INTEGER)
;; entries in the undo list. If we call `type-of' on the ;; entries in the undo list. If we call `type-of' on the
;; Lisp_Misc_Free object then Emacs aborts, so try to find it by ;; Lisp_Misc_Free object then Emacs aborts, so try to find it by
;; checking that its type is none of the expected ones. ;; checking that its type is none of the expected ones.
@ -1487,15 +1479,16 @@ Helper function for `yas--save-restriction-and-widen'."
(defmacro yas--save-restriction-and-widen (&rest body) (defmacro yas--save-restriction-and-widen (&rest body)
"Equivalent to (save-restriction (widen) BODY). "Equivalent to (save-restriction (widen) BODY).
Also tries to work around Emacs Bug#30931." Also tries to work around Emacs Bug#30931, fixed in Emacs-26.2."
(declare (debug (body)) (indent 0)) (declare (debug (body)) (indent 0))
;; Disable garbage collection, since it could cause an abort. (let ((main `(save-restriction (widen) ,@body)))
`(let ((gc-cons-threshold most-positive-fixnum) (if (< emacs-major-version 27)
(old-undo-list buffer-undo-list)) ;; Disable garbage collection, since it could cause an abort.
(prog1 (save-restriction `(let ((gc-cons-threshold most-positive-fixnum)
(widen) (old-undo-list buffer-undo-list))
,@body) (prog1 ,main
(yas--remove-misc-free-from-undo old-undo-list)))) (yas--remove-misc-free-from-undo old-undo-list)))
main)))
(defun yas--eval-for-string (form) (defun yas--eval-for-string (form)
"Evaluate FORM and convert the result to string." "Evaluate FORM and convert the result to string."
@ -4133,7 +4126,7 @@ Returns the newly created snippet."
(unwind-protect (unwind-protect
(let ((buffer-undo-list t)) (let ((buffer-undo-list t))
(goto-char begin) (goto-char begin)
(if (> emacs-major-version 29) (if (< emacs-major-version 27)
;; Don't use the workaround for CC-mode's cache, ;; Don't use the workaround for CC-mode's cache,
;; since it was presumably a bug in CC-mode, so either ;; since it was presumably a bug in CC-mode, so either
;; it's fixed already, or it should get fixed. ;; it's fixed already, or it should get fixed.
@ -4161,6 +4154,7 @@ Returns the newly created snippet."
(run-hook-with-args 'after-change-functions (run-hook-with-args 'after-change-functions
(point-min) (point-max) (point-min) (point-max)
(- end begin)))) (- end begin))))
;; FIXME: Use `undo-amalgamate-change-group'?
(when (listp buffer-undo-list) (when (listp buffer-undo-list)
(push (cons (point-min) (point-max)) (push (cons (point-min) (point-max))
buffer-undo-list))) buffer-undo-list)))
@ -5056,7 +5050,7 @@ object satisfying `yas--field-p' to restrict the expansion to.")))
(define-button-type 'help-snippet-def (define-button-type 'help-snippet-def
:supertype 'help-xref :supertype 'help-xref
'help-function (lambda (template) (yas--visit-snippet-file-1 template)) 'help-function (lambda (template) (yas--visit-snippet-file-1 template))
'help-echo (purecopy "mouse-2, RET: find snippets's definition")) 'help-echo "mouse-2, RET: find snippets's definition")
(defun yas--snippet-description-finish-runonce () (defun yas--snippet-description-finish-runonce ()
"Final adjustments for the help buffer when snippets are concerned." "Final adjustments for the help buffer when snippets are concerned."