Make (find-face-definition 'default) work more reliably

* lisp/emacs-lisp/find-func.el (find-function--defface): New
function (bug#30230).
(find-function-regexp-alist): Use it to skip past definitions
inside comments and strings.
This commit is contained in:
Lars Ingebrigtsen
2021-06-25 17:16:28 +02:00
parent 553221fc55
commit 9e8d8e1a03

View File

@@ -123,10 +123,18 @@ should insert the feature name."
:group 'xref
:version "25.1")
(defun find-function--defface (symbol)
(catch 'found
(while (re-search-forward (format find-face-regexp symbol) nil t)
(unless (ppss-comment-or-string-start
(save-excursion (syntax-ppss (match-beginning 0))))
;; We're not in a comment or a string.
(throw 'found t)))))
(defvar find-function-regexp-alist
'((nil . find-function-regexp)
(defvar . find-variable-regexp)
(defface . find-face-regexp)
(defface . find-function--defface)
(feature . find-feature-regexp)
(defalias . find-alias-regexp))
"Alist mapping definition types into regexp variables.