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.
This commit is contained in:
Lars Ingebrigtsen 2022-08-15 07:30:11 +02:00
parent 97da8eeb7c
commit 90b4ee6575

View file

@ -760,7 +760,9 @@ decided heuristically.)"
;; If there's an edebug spec, use that to determine what the ;; If there's an edebug spec, use that to determine what the
;; name is. ;; name is.
(when symbol (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 (save-excursion
(when (and (eq (car-safe spec) '&define) (when (and (eq (car-safe spec) '&define)
(memq 'name spec)) (memq 'name spec))
@ -768,6 +770,9 @@ decided heuristically.)"
(while (and spec (not name)) (while (and spec (not name))
(let ((candidate (ignore-errors (read (current-buffer))))) (let ((candidate (ignore-errors (read (current-buffer)))))
(when (eq (pop spec) 'name) (when (eq (pop spec) 'name)
(when (and (consp candidate)
(symbolp (car (delete 'quote candidate))))
(setq candidate (car (delete 'quote candidate))))
(setq name candidate (setq name candidate
spec nil)))))))) spec nil))))))))
;; We didn't have an edebug spec (or couldn't find the ;; We didn't have an edebug spec (or couldn't find the
@ -783,7 +788,7 @@ decided heuristically.)"
(symbolp (car (delete 'quote candidate)))) (symbolp (car (delete 'quote candidate))))
(setq name (car (delete 'quote candidate))))))) (setq name (car (delete 'quote candidate)))))))
(when-let ((result (or name symbol))) (when-let ((result (or name symbol)))
(symbol-name result))))))) (and (symbolp result) (symbol-name result))))))))
(defvar-keymap lisp-mode-shared-map (defvar-keymap lisp-mode-shared-map
:doc "Keymap for commands shared by all sorts of Lisp modes." :doc "Keymap for commands shared by all sorts of Lisp modes."