diff options
author | Lars Ingebrigtsen <larsi@gnus.org> | 2022-08-15 07:30:11 +0200 |
---|---|---|
committer | Lars Ingebrigtsen <larsi@gnus.org> | 2022-08-15 07:30:25 +0200 |
commit | 90b4ee6575e79da9922433dca17f14e9303676ca (patch) | |
tree | 6c9eb8061a2ee17fd546184e7c8721a3a5421ff7 /lisp/emacs-lisp/lisp-mode.el | |
parent | 97da8eeb7c739ca549c9769996fc6da326d587fc (diff) | |
download | emacs-90b4ee6575e79da9922433dca17f14e9303676ca.tar.gz |
Further lisp-current-defun-name tweaks
* lisp/emacs-lisp/lisp-mode.el (lisp-current-defun-name): Further
tweaks to make (autoload 'foo) work again. Perhaps this should
all be reverted to the original version and then given a new rething.
Diffstat (limited to 'lisp/emacs-lisp/lisp-mode.el')
-rw-r--r-- | lisp/emacs-lisp/lisp-mode.el | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el index c31fbec640c..c56a9660e7c 100644 --- a/lisp/emacs-lisp/lisp-mode.el +++ b/lisp/emacs-lisp/lisp-mode.el @@ -760,7 +760,9 @@ decided heuristically.)" ;; If there's an edebug spec, use that to determine what the ;; name is. (when symbol - (let ((spec (get symbol 'edebug-form-spec))) + (let ((spec (or (get symbol 'edebug-form-spec) + (and (eq (get symbol 'lisp-indent-function) 'defun) + (get 'defun 'edebug-form-spec))))) (save-excursion (when (and (eq (car-safe spec) '&define) (memq 'name spec)) @@ -768,6 +770,9 @@ decided heuristically.)" (while (and spec (not name)) (let ((candidate (ignore-errors (read (current-buffer))))) (when (eq (pop spec) 'name) + (when (and (consp candidate) + (symbolp (car (delete 'quote candidate)))) + (setq candidate (car (delete 'quote candidate)))) (setq name candidate spec nil)))))))) ;; We didn't have an edebug spec (or couldn't find the @@ -783,7 +788,7 @@ decided heuristically.)" (symbolp (car (delete 'quote candidate)))) (setq name (car (delete 'quote candidate))))))) (when-let ((result (or name symbol))) - (symbol-name result))))))) + (and (symbolp result) (symbol-name result)))))))) (defvar-keymap lisp-mode-shared-map :doc "Keymap for commands shared by all sorts of Lisp modes." |