1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-24 06:20:43 -08:00

; elisp-scope.el: Clean up symbol role definitions.

* lisp/progmodes/elisp-mode.el (elisp-fontify-semantically):
Fix typo in doc string.
(elisp--annotate-symbol-with-help-echo): Accept plain string
as value of ':help' symbol role property.
* lisp/emacs-lisp/elisp-scope.el: Remove unused symbol role
properties from all defined symbol roles.  Use plain strings
for ':help' instead of wrapping them with 'cl-constantly'.
Cease 'require'ing 'cl-lib', no longer needed in runtime.
(elisp-scope-define-symbol-role): Update doc string.
This commit is contained in:
Eshel Yaron 2025-10-12 10:14:29 +02:00
parent 0d7fc4516c
commit 026f3bbd8d
No known key found for this signature in database
GPG key ID: EF3EE9CA35D78618
2 changed files with 64 additions and 129 deletions

View file

@ -131,8 +131,6 @@
;;; Code: ;;; Code:
(require 'cl-lib)
(defun elisp-scope--define-symbol-role (name parents props) (defun elisp-scope--define-symbol-role (name parents props)
(put name 'elisp-scope-parent-roles parents) (put name 'elisp-scope-parent-roles parents)
(put name 'elisp-scope-role-properties props)) (put name 'elisp-scope-role-properties props))
@ -145,7 +143,17 @@ of (other) symbols in ELisp source code. For example, the symbol role
`face' characterizes symbols that are face names. `face' characterizes symbols that are face names.
PROPS is a plist specifying the properties of the new symbol role NAME. PROPS is a plist specifying the properties of the new symbol role NAME.
NAME inherits properties that do not appear in PROPS from its PARENTS." NAME inherits properties that do not appear in PROPS from its PARENTS.
Common symbol role properties are:
- `:doc': short documentation string describing this symbol role.
- `:face': face for highlighting symbols with this role.
- `:help': `help-echo' text for symbols with this role.
See also `elisp-scope-get-symbol-role-property' and
`elisp-scope-set-symbol-role-property' for getting and setting values of
symbol role properties."
(declare (indent defun)) (declare (indent defun))
`(elisp-scope--define-symbol-role ',name ',parents ,(when props `(list ,@props)))) `(elisp-scope--define-symbol-role ',name ',parents ,(when props `(list ,@props))))
@ -230,25 +238,19 @@ NAME inherits properties that do not appear in PROPS from its PARENTS."
(elisp-scope-define-symbol-role symbol-role () (elisp-scope-define-symbol-role symbol-role ()
:doc "Symbol role names." :doc "Symbol role names."
:definition 'symbol-role-definition
:face 'elisp-symbol-role :face 'elisp-symbol-role
:help (cl-constantly "Symbol role") :help "Symbol role")
:namespace 'symbol-role)
(elisp-scope-define-symbol-role symbol-role-definition (symbol-role) (elisp-scope-define-symbol-role symbol-role-definition (symbol-role)
:doc "Symbol role name definitions." :doc "Symbol role name definitions."
:face 'elisp-symbol-role-definition :face 'elisp-symbol-role-definition
:help (cl-constantly "Symbol role definition") :help "Symbol role definition")
:imenu "Symbol Role"
:namespace 'symbol-role)
(elisp-scope-define-symbol-role variable () (elisp-scope-define-symbol-role variable ()
:doc "Abstract symbol role of variables." :doc "Abstract symbol role of variables.")
:namespace 'variable)
(elisp-scope-define-symbol-role free-variable (variable) (elisp-scope-define-symbol-role free-variable (variable)
:doc "Variable names." :doc "Variable names."
:definition 'defvar
:face 'elisp-free-variable :face 'elisp-free-variable
:help (lambda (beg end _def) :help (lambda (beg end _def)
(if-let* ((sym (intern (buffer-substring-no-properties beg end)))) (if-let* ((sym (intern (buffer-substring-no-properties beg end))))
@ -262,38 +264,34 @@ NAME inherits properties that do not appear in PROPS from its PARENTS."
(elisp-scope-define-symbol-role bound-variable (variable) (elisp-scope-define-symbol-role bound-variable (variable)
:doc "Local variable names." :doc "Local variable names."
:face 'elisp-bound-variable :face 'elisp-bound-variable
:help (cl-constantly "Local variable")) :help "Local variable")
(elisp-scope-define-symbol-role binding-variable (bound-variable) (elisp-scope-define-symbol-role binding-variable (bound-variable)
:doc "Local variable definitions." :doc "Local variable definitions."
:face 'elisp-binding-variable :face 'elisp-binding-variable
:help (cl-constantly "Local variable binding")) :help "Local variable binding")
(elisp-scope-define-symbol-role shadowed-variable (variable) (elisp-scope-define-symbol-role shadowed-variable (variable)
:doc "Locally shadowed variable names." :doc "Locally shadowed variable names."
:face 'elisp-shadowed-variable :face 'elisp-shadowed-variable
:help (cl-constantly "Locally shadowed variable")) :help "Locally shadowed variable")
(elisp-scope-define-symbol-role shadowing-variable (shadowed-variable) (elisp-scope-define-symbol-role shadowing-variable (shadowed-variable)
:doc "Local variable definitions." :doc "Locally shadowing variables."
:face 'elisp-shadowing-variable :face 'elisp-shadowing-variable
:help (cl-constantly "Local variable shadowing")) :help "Local variable shadowing")
(elisp-scope-define-symbol-role face () (elisp-scope-define-symbol-role face ()
:doc "Face names." :doc "Face names."
:definition 'defface
:face 'elisp-face :face 'elisp-face
:help (lambda (beg end _def) :help (lambda (beg end _def)
(elisp--help-echo beg end 'face-documentation "Face")) (elisp--help-echo beg end 'face-documentation "Face")))
:namespace 'face)
(elisp-scope-define-symbol-role callable () (elisp-scope-define-symbol-role callable ()
:doc "Abstract symbol role of function-like symbols." :doc "Abstract symbol role of function-like symbols.")
:namespace 'function)
(elisp-scope-define-symbol-role function (callable) (elisp-scope-define-symbol-role function (callable)
:doc "Function names." :doc "Function names."
:definition '(defun defcmd)
:face 'elisp-function-reference :face 'elisp-function-reference
:help (lambda (beg end def) :help (lambda (beg end def)
(cond ((equal beg def) "Local function definition") (cond ((equal beg def) "Local function definition")
@ -308,7 +306,7 @@ NAME inherits properties that do not appear in PROPS from its PARENTS."
(elisp-scope-define-symbol-role unknown (function) (elisp-scope-define-symbol-role unknown (function)
:doc "Unknown symbols at function position." :doc "Unknown symbols at function position."
:face 'elisp-unknown-call :face 'elisp-unknown-call
:help (cl-constantly "Unknown callable")) :help "Unknown callable")
(elisp-scope-define-symbol-role non-local-exit (function) (elisp-scope-define-symbol-role non-local-exit (function)
:doc "Functions that do not return." :doc "Functions that do not return."
@ -320,7 +318,6 @@ NAME inherits properties that do not appear in PROPS from its PARENTS."
(elisp-scope-define-symbol-role macro (callable) (elisp-scope-define-symbol-role macro (callable)
:doc "Macro names." :doc "Macro names."
:definition 'defmacro
:face 'elisp-macro-call :face 'elisp-macro-call
:help (lambda (beg end _def) :help (lambda (beg end _def)
(if-let* ((sym (intern-soft (buffer-substring-no-properties beg end)))) (if-let* ((sym (intern-soft (buffer-substring-no-properties beg end))))
@ -338,97 +335,85 @@ NAME inherits properties that do not appear in PROPS from its PARENTS."
(elisp-scope-define-symbol-role throw-tag () (elisp-scope-define-symbol-role throw-tag ()
:doc "Symbols used as `throw'/`catch' tags." :doc "Symbols used as `throw'/`catch' tags."
:face 'elisp-throw-tag :face 'elisp-throw-tag
:help (cl-constantly "`throw'/`catch' tag")) :help "`throw'/`catch' tag")
(elisp-scope-define-symbol-role warning-type () (elisp-scope-define-symbol-role warning-type ()
:doc "Byte-compilation warning types." :doc "Byte-compilation warning types."
:face 'elisp-warning-type :face 'elisp-warning-type
:help (cl-constantly "Warning type")) :help "Warning type")
(elisp-scope-define-symbol-role feature () (elisp-scope-define-symbol-role feature ()
:doc "Feature names." :doc "Feature names."
:definition 'deffeature
:face 'elisp-feature :face 'elisp-feature
:help (cl-constantly "Feature") :help "Feature")
:namespace 'feature)
(elisp-scope-define-symbol-role deffeature (feature) (elisp-scope-define-symbol-role deffeature (feature)
:doc "Feature definitions." :doc "Feature definitions."
:imenu "Feature" :help "Feature definition")
:help (cl-constantly "Feature definition"))
(elisp-scope-define-symbol-role function-property-declaration () (elisp-scope-define-symbol-role function-property-declaration ()
:doc "Function/macro property declaration types." :doc "Function/macro property declaration types."
:face 'elisp-function-property-declaration :face 'elisp-function-property-declaration
:help (cl-constantly "Function/macro property declaration")) :help "Function/macro property declaration")
(elisp-scope-define-symbol-role rx-construct () (elisp-scope-define-symbol-role rx-construct ()
:doc "`rx' constructs." :doc "`rx' constructs."
:face 'elisp-rx :face 'elisp-rx
:help (cl-constantly "`rx' construct")) :help "`rx' construct")
(elisp-scope-define-symbol-role theme () (elisp-scope-define-symbol-role theme ()
:doc "Custom theme names." :doc "Custom theme names."
:definition 'deftheme
:face 'elisp-theme :face 'elisp-theme
:help (cl-constantly "Theme")) :help "Theme")
(elisp-scope-define-symbol-role deftheme (theme) (elisp-scope-define-symbol-role deftheme (theme)
:doc "Custom theme definitions." :doc "Custom theme definitions."
:imenu "Theme" :help "Theme definition")
:help (cl-constantly "Theme definition"))
(elisp-scope-define-symbol-role thing () (elisp-scope-define-symbol-role thing ()
:doc "`thing-at-point' \"thing\" identifiers." :doc "`thing-at-point' \"thing\" identifiers."
:face 'elisp-thing :face 'elisp-thing
:help (cl-constantly "Thing (text object)")) :help "Thing (text object)")
(elisp-scope-define-symbol-role slot () (elisp-scope-define-symbol-role slot ()
:doc "EIEIO slots." :doc "EIEIO slots."
:face 'elisp-slot :face 'elisp-slot
:help (cl-constantly "Slot")) :help "Slot")
(elisp-scope-define-symbol-role widget-type () (elisp-scope-define-symbol-role widget-type ()
:doc "Widget types." :doc "Widget types."
:definition 'widget-type-definition
:face 'elisp-widget-type :face 'elisp-widget-type
:help (cl-constantly "Widget type") :help "Widget type")
:namespace 'widget-type)
(elisp-scope-define-symbol-role widget-type-definition (widget-type) (elisp-scope-define-symbol-role widget-type-definition (widget-type)
:doc "Widget type definitions." :doc "Widget type definitions."
:imenu "Widget" :help "Widget type definition")
:help (cl-constantly "Widget type definition"))
(elisp-scope-define-symbol-role type () (elisp-scope-define-symbol-role type ()
:doc "ELisp object type names." :doc "ELisp object type names."
:face 'elisp-type :face 'elisp-type
:help (cl-constantly "Type")) :help "Type")
(elisp-scope-define-symbol-role deftype (type) (elisp-scope-define-symbol-role deftype (type)
:doc "ELisp object type definitions." :doc "ELisp object type definitions."
:imenu "Type" :help "Type definition")
:help (cl-constantly "Type definition"))
(elisp-scope-define-symbol-role group () (elisp-scope-define-symbol-role group ()
:doc "Customization groups." :doc "Customization groups."
:definition 'defgroup
:face 'elisp-group :face 'elisp-group
:help (cl-constantly "Customization group")) :help "Customization group")
(elisp-scope-define-symbol-role defgroup (group) (elisp-scope-define-symbol-role defgroup (group)
:doc "Customization group definitions." :doc "Customization group definitions."
:imenu "Group" :help "Customization group definition")
:help (cl-constantly "Customization group definition"))
(elisp-scope-define-symbol-role nnoo-backend () (elisp-scope-define-symbol-role nnoo-backend ()
:doc "`nnoo' backend names." :doc "`nnoo' backend names."
:face 'elisp-nnoo-backend :face 'elisp-nnoo-backend
:help (cl-constantly "`nnoo' backend")) :help "`nnoo' backend")
(elisp-scope-define-symbol-role condition () (elisp-scope-define-symbol-role condition ()
:doc "`condition-case' conditions." :doc "`condition-case' conditions."
:definition 'defcondition
:face 'elisp-condition :face 'elisp-condition
:help (lambda (beg end _def) :help (lambda (beg end _def)
(if-let* ((sym (intern (buffer-substring-no-properties beg end)))) (if-let* ((sym (intern (buffer-substring-no-properties beg end))))
@ -438,72 +423,53 @@ NAME inherits properties that do not appear in PROPS from its PARENTS."
"`condition-case' condition" "`condition-case' condition"
(when (and msg (not (string-empty-p msg))) (when (and msg (not (string-empty-p msg)))
`(": " ,msg))))) `(": " ,msg)))))
"`condition-case' condition")) "`condition-case' condition")))
:namespace 'condition)
(elisp-scope-define-symbol-role defcondition (condition) (elisp-scope-define-symbol-role defcondition (condition)
:doc "`condition-case' condition definitions." :doc "`condition-case' condition definitions."
:definition 'defcondition :help "`condition-case' condition definition")
:help (cl-constantly "`condition-case' condition definition"))
(elisp-scope-define-symbol-role ampersand () (elisp-scope-define-symbol-role ampersand ()
:doc "Argument list markers, such as `&optional' and `&rest'." :doc "Argument list markers, such as `&optional' and `&rest'."
:face 'elisp-ampersand :face 'elisp-ampersand
:help (cl-constantly "Arguments separator")) :help "Arguments separator")
(elisp-scope-define-symbol-role constant () (elisp-scope-define-symbol-role constant ()
:doc "Self-evaluating symbols." :doc "Self-evaluating symbols."
:face 'elisp-constant :face 'elisp-constant
:help (cl-constantly "Constant")) :help "Constant")
(elisp-scope-define-symbol-role defun () (elisp-scope-define-symbol-role defun ()
:doc "Function definitions." :doc "Function definitions."
:definition 'defun
:face 'elisp-defun :face 'elisp-defun
:help (cl-constantly "Function definition") :help "Function definition")
:imenu "Function"
:namespace 'function)
(elisp-scope-define-symbol-role defmacro () (elisp-scope-define-symbol-role defmacro ()
:doc "Macro definitions." :doc "Macro definitions."
:definition 'defmacro
:face 'elisp-defmacro :face 'elisp-defmacro
:help (cl-constantly "Macro definition") :help "Macro definition")
:imenu "Macro"
:namespace 'function)
(elisp-scope-define-symbol-role defcmd (defun) (elisp-scope-define-symbol-role defcmd (defun)
:doc "Command definitions." :doc "Command definitions."
:definition 'defcmd :help "Command definition")
:help (cl-constantly "Command definition")
:imenu "Command")
(elisp-scope-define-symbol-role defvar () (elisp-scope-define-symbol-role defvar ()
:doc "Variable definitions." :doc "Variable definitions."
:definition 'defvar
:face 'elisp-defvar :face 'elisp-defvar
:help (cl-constantly "Special variable definition") :help "Special variable definition")
:imenu "Variable"
:namespace 'variable)
(elisp-scope-define-symbol-role special-variable-declaration () (elisp-scope-define-symbol-role special-variable-declaration ()
:doc "Special variable declarations." :doc "Special variable declarations."
:definition 'defvar
:face 'elisp-special-variable-declaration :face 'elisp-special-variable-declaration
:help (cl-constantly "Special variable declaration") :help "Special variable declaration")
:namespace 'variable)
(elisp-scope-define-symbol-role defface () (elisp-scope-define-symbol-role defface ()
:doc "Face definitions." :doc "Face definitions."
:definition 'defface
:face 'elisp-defface :face 'elisp-defface
:help (cl-constantly "Face definition") :help "Face definition")
:imenu "Face"
:namespace 'face)
(elisp-scope-define-symbol-role major-mode () (elisp-scope-define-symbol-role major-mode ()
:doc "Major mode names." :doc "Major mode names."
:definition 'major-mode-definition
:face 'elisp-major-mode-name :face 'elisp-major-mode-name
:help (lambda (beg end _def) :help (lambda (beg end _def)
(if-let* ((sym (intern (buffer-substring-no-properties beg end)))) (if-let* ((sym (intern (buffer-substring-no-properties beg end))))
@ -511,13 +477,11 @@ NAME inherits properties that do not appear in PROPS from its PARENTS."
(if-let* ((doc (documentation sym))) (if-let* ((doc (documentation sym)))
(format "Major mode `%S'.\n\n%s" sym doc) (format "Major mode `%S'.\n\n%s" sym doc)
"Major mode")) "Major mode"))
"Major mode")) "Major mode")))
:namespace 'function)
(elisp-scope-define-symbol-role major-mode-definition (major-mode) (elisp-scope-define-symbol-role major-mode-definition (major-mode)
:doc "Major mode definitions." :doc "Major mode definitions."
:help (cl-constantly "Major mode definition") :help "Major mode definition")
:imenu "Major Mode")
(elisp-scope-define-symbol-role block () (elisp-scope-define-symbol-role block ()
:doc "`cl-block' block names." :doc "`cl-block' block names."
@ -526,22 +490,16 @@ NAME inherits properties that do not appear in PROPS from its PARENTS."
(elisp-scope-define-symbol-role icon () (elisp-scope-define-symbol-role icon ()
:doc "Icon names." :doc "Icon names."
:definition 'deficon
:face 'elisp-icon :face 'elisp-icon
:help (cl-constantly "Icon") :help "Icon")
:namespace 'icon)
(elisp-scope-define-symbol-role deficon () (elisp-scope-define-symbol-role deficon ()
:doc "Icon definitions." :doc "Icon definitions."
:definition 'deficon
:face 'elisp-deficon :face 'elisp-deficon
:help (cl-constantly "Icon definition") :help "Icon definition")
:imenu "Icon"
:namespace 'icon)
(elisp-scope-define-symbol-role oclosure () (elisp-scope-define-symbol-role oclosure ()
:doc "OClosure type names." :doc "OClosure type names."
:definition 'defoclosure
:face 'elisp-oclosure :face 'elisp-oclosure
:help (lambda (beg end _def) :help (lambda (beg end _def)
(if-let* ((sym (intern (buffer-substring-no-properties beg end)))) (if-let* ((sym (intern (buffer-substring-no-properties beg end))))
@ -549,20 +507,15 @@ NAME inherits properties that do not appear in PROPS from its PARENTS."
(if-let* ((doc (oclosure--class-docstring (get sym 'cl--class)))) (if-let* ((doc (oclosure--class-docstring (get sym 'cl--class))))
(format "OClosure type `%S'.\n\n%s" sym doc) (format "OClosure type `%S'.\n\n%s" sym doc)
"OClosure type")) "OClosure type"))
"OClosure type")) "OClosure type")))
:namespace 'oclosure)
(elisp-scope-define-symbol-role defoclosure () (elisp-scope-define-symbol-role defoclosure ()
:doc "OClosure type definitions." :doc "OClosure type definitions."
:definition 'defoclosure
:face 'elisp-defoclosure :face 'elisp-defoclosure
:help (cl-constantly "OClosure type definition") :help "OClosure type definition")
:imenu "OClosure type"
:namespace 'oclosure)
(elisp-scope-define-symbol-role coding () (elisp-scope-define-symbol-role coding ()
:doc "Coding system names." :doc "Coding system names."
:definition 'defcoding
:face 'elisp-coding :face 'elisp-coding
:help (lambda (beg end _def) :help (lambda (beg end _def)
(if-let* ((sym (intern (buffer-substring-no-properties beg end)))) (if-let* ((sym (intern (buffer-substring-no-properties beg end))))
@ -570,20 +523,15 @@ NAME inherits properties that do not appear in PROPS from its PARENTS."
(if-let* ((doc (coding-system-doc-string sym))) (if-let* ((doc (coding-system-doc-string sym)))
(format "Coding system `%S'.\n\n%s" sym doc) (format "Coding system `%S'.\n\n%s" sym doc)
"Coding system")) "Coding system"))
"Coding system")) "Coding system")))
:namespace 'coding)
(elisp-scope-define-symbol-role defcoding () (elisp-scope-define-symbol-role defcoding ()
:doc "Coding system definitions." :doc "Coding system definitions."
:definition 'defcoding
:face 'elisp-defcoding :face 'elisp-defcoding
:help (cl-constantly "Coding system definition") :help "Coding system definition")
:imenu "Coding system"
:namespace 'coding)
(elisp-scope-define-symbol-role charset () (elisp-scope-define-symbol-role charset ()
:doc "Charset names." :doc "Charset names."
:definition 'defcharset
:face 'elisp-charset :face 'elisp-charset
:help (lambda (beg end _def) :help (lambda (beg end _def)
(if-let* ((sym (intern (buffer-substring-no-properties beg end)))) (if-let* ((sym (intern (buffer-substring-no-properties beg end))))
@ -591,20 +539,15 @@ NAME inherits properties that do not appear in PROPS from its PARENTS."
(if-let* ((doc (charset-description sym))) (if-let* ((doc (charset-description sym)))
(format "Charset `%S'.\n\n%s" sym doc) (format "Charset `%S'.\n\n%s" sym doc)
"Charset")) "Charset"))
"Charset")) "Charset")))
:namespace 'charset)
(elisp-scope-define-symbol-role defcharset () (elisp-scope-define-symbol-role defcharset ()
:doc "Charset definitions." :doc "Charset definitions."
:definition 'defcharset
:face 'elisp-defcharset :face 'elisp-defcharset
:help (cl-constantly "Charset definition") :help "Charset definition")
:imenu "Charset"
:namespace 'charset)
(elisp-scope-define-symbol-role completion-category () (elisp-scope-define-symbol-role completion-category ()
:doc "Completion categories." :doc "Completion categories."
:definition 'completion-category-definition
:face 'elisp-completion-category :face 'elisp-completion-category
:help (lambda (beg end _def) :help (lambda (beg end _def)
(if-let* ((sym (intern (buffer-substring-no-properties beg end)))) (if-let* ((sym (intern (buffer-substring-no-properties beg end))))
@ -612,16 +555,12 @@ NAME inherits properties that do not appear in PROPS from its PARENTS."
(if-let* ((doc (get sym 'completion-category-documentation))) (if-let* ((doc (get sym 'completion-category-documentation)))
(format "Completion category `%S'.\n\n%s" sym doc) (format "Completion category `%S'.\n\n%s" sym doc)
"Completion category")) "Completion category"))
"Completion category")) "Completion category")))
:namespace 'completion-category)
(elisp-scope-define-symbol-role completion-category-definition () (elisp-scope-define-symbol-role completion-category-definition ()
:doc "Completion category definitions." :doc "Completion category definitions."
:definition 'completion-category-definition
:face 'elisp-completion-category-definition :face 'elisp-completion-category-definition
:help (cl-constantly "Completion category definition") :help "Completion category definition")
:imenu "Completion category"
:namespace 'completion-category)
(defvar elisp-scope-counter nil) (defvar elisp-scope-counter nil)
@ -2575,10 +2514,6 @@ property, or if the current buffer is trusted (see `trusted-content-p')."
(:face (:face
(if-let* ((q (elisp-scope--unquote (cadr props)))) (elisp-scope-face-1 q) (if-let* ((q (elisp-scope--unquote (cadr props)))) (elisp-scope-face-1 q)
(elisp-scope-1 (cadr props)))) (elisp-scope-1 (cadr props))))
(:definition
(if-let* ((q (elisp-scope--unquote (cadr props))))
(dolist (st (ensure-list q)) (elisp-scope-report-s st 'symbol-role))
(elisp-scope-1 (cadr props))))
(otherwise (elisp-scope-1 (cadr props)))) (otherwise (elisp-scope-1 (cadr props))))
(setq props (cddr props)))) (setq props (cddr props))))

View file

@ -295,7 +295,7 @@ expand some macro calls in your code to analyze the expanded forms. In
untrusted buffers, for security reasons, macro-expansion is restricted untrusted buffers, for security reasons, macro-expansion is restricted
to safe macros only (see `elisp-scope-safe-macro-p'). Hence in to safe macros only (see `elisp-scope-safe-macro-p'). Hence in
untrusted buffers the arguments of some macros might not be analyzed, untrusted buffers the arguments of some macros might not be analyzed,
and therefore not highighted. and therefore not highlighted.
See the function `elisp-scope-analyze-form' for more details about the See the function `elisp-scope-analyze-form' for more details about the
code analysis." code analysis."
@ -510,8 +510,8 @@ code analysis."
(when elisp-add-help-echo (when elisp-add-help-echo
(put-text-property (put-text-property
beg end 'help-echo beg end 'help-echo
(when-let* ((fun (elisp-scope-get-symbol-role-property type :help))) (when-let* ((hlp (elisp-scope-get-symbol-role-property type :help)))
(funcall fun beg end def))))) (if (stringp hlp) hlp (funcall hlp beg end def))))))
(defvar font-lock-beg) (defvar font-lock-beg)
(defvar font-lock-end) (defvar font-lock-end)