]> git.eshelyaron.com Git - emacs.git/commitdiff
Make (find-face-definition 'default) work more reliably
authorLars Ingebrigtsen <larsi@gnus.org>
Fri, 25 Jun 2021 15:16:28 +0000 (17:16 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Fri, 25 Jun 2021 15:16:28 +0000 (17:16 +0200)
* 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.

lisp/emacs-lisp/find-func.el

index 58876a45e19be5323dbc036f12a8bfce6395e27d..7bc3e6b25ff916a42ed3fc50a203f04865c29b47 100644 (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.