summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2022-08-15 07:30:11 +0200
committerLars Ingebrigtsen <larsi@gnus.org>2022-08-15 07:30:25 +0200
commit90b4ee6575e79da9922433dca17f14e9303676ca (patch)
tree6c9eb8061a2ee17fd546184e7c8721a3a5421ff7
parent97da8eeb7c739ca549c9769996fc6da326d587fc (diff)
downloademacs-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.
-rw-r--r--lisp/emacs-lisp/lisp-mode.el9
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."