diff --git a/modules/lang/emacs-lisp/config.el b/modules/lang/emacs-lisp/config.el index 9cb5f9b64..f4eb8bf89 100644 --- a/modules/lang/emacs-lisp/config.el +++ b/modules/lang/emacs-lisp/config.el @@ -64,25 +64,28 @@ Functions are differentiated into special forms, built-in functions and library/userland functions" (catch 'matcher (while (re-search-forward "\\_<.+?\\_>" end t) - (let ((symbol (intern-soft (match-string-no-properties 0)))) - (and (cond ((null symbol) nil) - ((eq symbol t) nil) - ((special-variable-p symbol) - (setq +emacs-lisp--face 'font-lock-variable-name-face)) - ((and (fboundp symbol) - (eq (char-before (match-beginning 0)) ?\()) - (let ((unaliased (indirect-function symbol t))) - (unless (or (macrop unaliased) - (special-form-p unaliased)) - (let (unadvised) - (while (not (eq (setq unadvised (ad-get-orig-definition unaliased)) - (setq unaliased (indirect-function unadvised t))))) - unaliased) - (setq +emacs-lisp--face - (if (subrp unaliased) - 'font-lock-constant-face - 'font-lock-function-name-face)))))) - (throw 'matcher t)))) + (unless (save-excursion + (let ((ppss (syntax-ppss))) + (or (nth 3 ppss) (nth 4 ppss)))) + (let ((symbol (intern-soft (match-string-no-properties 0)))) + (and (cond ((null symbol) nil) + ((eq symbol t) nil) + ((special-variable-p symbol) + (setq +emacs-lisp--face 'font-lock-variable-name-face)) + ((and (fboundp symbol) + (eq (char-before (match-beginning 0)) ?\()) + (let ((unaliased (indirect-function symbol t))) + (unless (or (macrop unaliased) + (special-form-p unaliased)) + (let (unadvised) + (while (not (eq (setq unadvised (ad-get-orig-definition unaliased)) + (setq unaliased (indirect-function unadvised t))))) + unaliased) + (setq +emacs-lisp--face + (if (subrp unaliased) + 'font-lock-constant-face + 'font-lock-function-name-face)))))) + (throw 'matcher t))))) nil)) (eval-when-compile (byte-compile #'+emacs-lisp-highlight-vars-and-faces))