diff options
| author | Eshel Yaron | 2025-10-12 10:14:29 +0200 |
|---|---|---|
| committer | Eshel Yaron | 2025-10-12 10:17:00 +0200 |
| commit | 026f3bbd8d394ecf3fead9ee2d45dc54ce40b60a (patch) | |
| tree | bf61c3c16b45ae20c2e778b4b70568abe77d4eef | |
| parent | 0d7fc4516c9e4a36bd6d36b041a11ebc5c99d107 (diff) | |
| download | emacs-026f3bbd8d394ecf3fead9ee2d45dc54ce40b60a.tar.gz emacs-026f3bbd8d394ecf3fead9ee2d45dc54ce40b60a.zip | |
; 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.
| -rw-r--r-- | lisp/emacs-lisp/elisp-scope.el | 187 | ||||
| -rw-r--r-- | lisp/progmodes/elisp-mode.el | 6 |
2 files changed, 64 insertions, 129 deletions
diff --git a/lisp/emacs-lisp/elisp-scope.el b/lisp/emacs-lisp/elisp-scope.el index 340b9f55558..36acf7cbd0c 100644 --- a/lisp/emacs-lisp/elisp-scope.el +++ b/lisp/emacs-lisp/elisp-scope.el | |||
| @@ -131,8 +131,6 @@ | |||
| 131 | 131 | ||
| 132 | ;;; Code: | 132 | ;;; Code: |
| 133 | 133 | ||
| 134 | (require 'cl-lib) | ||
| 135 | |||
| 136 | (defun elisp-scope--define-symbol-role (name parents props) | 134 | (defun elisp-scope--define-symbol-role (name parents props) |
| 137 | (put name 'elisp-scope-parent-roles parents) | 135 | (put name 'elisp-scope-parent-roles parents) |
| 138 | (put name 'elisp-scope-role-properties props)) | 136 | (put name 'elisp-scope-role-properties props)) |
| @@ -145,7 +143,17 @@ of (other) symbols in ELisp source code. For example, the symbol role | |||
| 145 | `face' characterizes symbols that are face names. | 143 | `face' characterizes symbols that are face names. |
| 146 | 144 | ||
| 147 | PROPS is a plist specifying the properties of the new symbol role NAME. | 145 | PROPS is a plist specifying the properties of the new symbol role NAME. |
| 148 | NAME inherits properties that do not appear in PROPS from its PARENTS." | 146 | NAME inherits properties that do not appear in PROPS from its PARENTS. |
| 147 | |||
| 148 | Common symbol role properties are: | ||
| 149 | |||
| 150 | - `:doc': short documentation string describing this symbol role. | ||
| 151 | - `:face': face for highlighting symbols with this role. | ||
| 152 | - `:help': `help-echo' text for symbols with this role. | ||
| 153 | |||
| 154 | See also `elisp-scope-get-symbol-role-property' and | ||
| 155 | `elisp-scope-set-symbol-role-property' for getting and setting values of | ||
| 156 | symbol role properties." | ||
| 149 | (declare (indent defun)) | 157 | (declare (indent defun)) |
| 150 | `(elisp-scope--define-symbol-role ',name ',parents ,(when props `(list ,@props)))) | 158 | `(elisp-scope--define-symbol-role ',name ',parents ,(when props `(list ,@props)))) |
| 151 | 159 | ||
| @@ -230,25 +238,19 @@ NAME inherits properties that do not appear in PROPS from its PARENTS." | |||
| 230 | 238 | ||
| 231 | (elisp-scope-define-symbol-role symbol-role () | 239 | (elisp-scope-define-symbol-role symbol-role () |
| 232 | :doc "Symbol role names." | 240 | :doc "Symbol role names." |
| 233 | :definition 'symbol-role-definition | ||
| 234 | :face 'elisp-symbol-role | 241 | :face 'elisp-symbol-role |
| 235 | :help (cl-constantly "Symbol role") | 242 | :help "Symbol role") |
| 236 | :namespace 'symbol-role) | ||
| 237 | 243 | ||
| 238 | (elisp-scope-define-symbol-role symbol-role-definition (symbol-role) | 244 | (elisp-scope-define-symbol-role symbol-role-definition (symbol-role) |
| 239 | :doc "Symbol role name definitions." | 245 | :doc "Symbol role name definitions." |
| 240 | :face 'elisp-symbol-role-definition | 246 | :face 'elisp-symbol-role-definition |
| 241 | :help (cl-constantly "Symbol role definition") | 247 | :help "Symbol role definition") |
| 242 | :imenu "Symbol Role" | ||
| 243 | :namespace 'symbol-role) | ||
| 244 | 248 | ||
| 245 | (elisp-scope-define-symbol-role variable () | 249 | (elisp-scope-define-symbol-role variable () |
| 246 | :doc "Abstract symbol role of variables." | 250 | :doc "Abstract symbol role of variables.") |
| 247 | :namespace 'variable) | ||
| 248 | 251 | ||
| 249 | (elisp-scope-define-symbol-role free-variable (variable) | 252 | (elisp-scope-define-symbol-role free-variable (variable) |
| 250 | :doc "Variable names." | 253 | :doc "Variable names." |
| 251 | :definition 'defvar | ||
| 252 | :face 'elisp-free-variable | 254 | :face 'elisp-free-variable |
| 253 | :help (lambda (beg end _def) | 255 | :help (lambda (beg end _def) |
| 254 | (if-let* ((sym (intern (buffer-substring-no-properties beg end)))) | 256 | (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." | |||
| 262 | (elisp-scope-define-symbol-role bound-variable (variable) | 264 | (elisp-scope-define-symbol-role bound-variable (variable) |
| 263 | :doc "Local variable names." | 265 | :doc "Local variable names." |
| 264 | :face 'elisp-bound-variable | 266 | :face 'elisp-bound-variable |
| 265 | :help (cl-constantly "Local variable")) | 267 | :help "Local variable") |
| 266 | 268 | ||
| 267 | (elisp-scope-define-symbol-role binding-variable (bound-variable) | 269 | (elisp-scope-define-symbol-role binding-variable (bound-variable) |
| 268 | :doc "Local variable definitions." | 270 | :doc "Local variable definitions." |
| 269 | :face 'elisp-binding-variable | 271 | :face 'elisp-binding-variable |
| 270 | :help (cl-constantly "Local variable binding")) | 272 | :help "Local variable binding") |
| 271 | 273 | ||
| 272 | (elisp-scope-define-symbol-role shadowed-variable (variable) | 274 | (elisp-scope-define-symbol-role shadowed-variable (variable) |
| 273 | :doc "Locally shadowed variable names." | 275 | :doc "Locally shadowed variable names." |
| 274 | :face 'elisp-shadowed-variable | 276 | :face 'elisp-shadowed-variable |
| 275 | :help (cl-constantly "Locally shadowed variable")) | 277 | :help "Locally shadowed variable") |
| 276 | 278 | ||
| 277 | (elisp-scope-define-symbol-role shadowing-variable (shadowed-variable) | 279 | (elisp-scope-define-symbol-role shadowing-variable (shadowed-variable) |
| 278 | :doc "Local variable definitions." | 280 | :doc "Locally shadowing variables." |
| 279 | :face 'elisp-shadowing-variable | 281 | :face 'elisp-shadowing-variable |
| 280 | :help (cl-constantly "Local variable shadowing")) | 282 | :help "Local variable shadowing") |
| 281 | 283 | ||
| 282 | (elisp-scope-define-symbol-role face () | 284 | (elisp-scope-define-symbol-role face () |
| 283 | :doc "Face names." | 285 | :doc "Face names." |
| 284 | :definition 'defface | ||
| 285 | :face 'elisp-face | 286 | :face 'elisp-face |
| 286 | :help (lambda (beg end _def) | 287 | :help (lambda (beg end _def) |
| 287 | (elisp--help-echo beg end 'face-documentation "Face")) | 288 | (elisp--help-echo beg end 'face-documentation "Face"))) |
| 288 | :namespace 'face) | ||
| 289 | 289 | ||
| 290 | (elisp-scope-define-symbol-role callable () | 290 | (elisp-scope-define-symbol-role callable () |
| 291 | :doc "Abstract symbol role of function-like symbols." | 291 | :doc "Abstract symbol role of function-like symbols.") |
| 292 | :namespace 'function) | ||
| 293 | 292 | ||
| 294 | (elisp-scope-define-symbol-role function (callable) | 293 | (elisp-scope-define-symbol-role function (callable) |
| 295 | :doc "Function names." | 294 | :doc "Function names." |
| 296 | :definition '(defun defcmd) | ||
| 297 | :face 'elisp-function-reference | 295 | :face 'elisp-function-reference |
| 298 | :help (lambda (beg end def) | 296 | :help (lambda (beg end def) |
| 299 | (cond ((equal beg def) "Local function definition") | 297 | (cond ((equal beg def) "Local function definition") |
| @@ -308,7 +306,7 @@ NAME inherits properties that do not appear in PROPS from its PARENTS." | |||
| 308 | (elisp-scope-define-symbol-role unknown (function) | 306 | (elisp-scope-define-symbol-role unknown (function) |
| 309 | :doc "Unknown symbols at function position." | 307 | :doc "Unknown symbols at function position." |
| 310 | :face 'elisp-unknown-call | 308 | :face 'elisp-unknown-call |
| 311 | :help (cl-constantly "Unknown callable")) | 309 | :help "Unknown callable") |
| 312 | 310 | ||
| 313 | (elisp-scope-define-symbol-role non-local-exit (function) | 311 | (elisp-scope-define-symbol-role non-local-exit (function) |
| 314 | :doc "Functions that do not return." | 312 | :doc "Functions that do not return." |
| @@ -320,7 +318,6 @@ NAME inherits properties that do not appear in PROPS from its PARENTS." | |||
| 320 | 318 | ||
| 321 | (elisp-scope-define-symbol-role macro (callable) | 319 | (elisp-scope-define-symbol-role macro (callable) |
| 322 | :doc "Macro names." | 320 | :doc "Macro names." |
| 323 | :definition 'defmacro | ||
| 324 | :face 'elisp-macro-call | 321 | :face 'elisp-macro-call |
| 325 | :help (lambda (beg end _def) | 322 | :help (lambda (beg end _def) |
| 326 | (if-let* ((sym (intern-soft (buffer-substring-no-properties beg end)))) | 323 | (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." | |||
| 338 | (elisp-scope-define-symbol-role throw-tag () | 335 | (elisp-scope-define-symbol-role throw-tag () |
| 339 | :doc "Symbols used as `throw'/`catch' tags." | 336 | :doc "Symbols used as `throw'/`catch' tags." |
| 340 | :face 'elisp-throw-tag | 337 | :face 'elisp-throw-tag |
| 341 | :help (cl-constantly "`throw'/`catch' tag")) | 338 | :help "`throw'/`catch' tag") |
| 342 | 339 | ||
| 343 | (elisp-scope-define-symbol-role warning-type () | 340 | (elisp-scope-define-symbol-role warning-type () |
| 344 | :doc "Byte-compilation warning types." | 341 | :doc "Byte-compilation warning types." |
| 345 | :face 'elisp-warning-type | 342 | :face 'elisp-warning-type |
| 346 | :help (cl-constantly "Warning type")) | 343 | :help "Warning type") |
| 347 | 344 | ||
| 348 | (elisp-scope-define-symbol-role feature () | 345 | (elisp-scope-define-symbol-role feature () |
| 349 | :doc "Feature names." | 346 | :doc "Feature names." |
| 350 | :definition 'deffeature | ||
| 351 | :face 'elisp-feature | 347 | :face 'elisp-feature |
| 352 | :help (cl-constantly "Feature") | 348 | :help "Feature") |
| 353 | :namespace 'feature) | ||
| 354 | 349 | ||
| 355 | (elisp-scope-define-symbol-role deffeature (feature) | 350 | (elisp-scope-define-symbol-role deffeature (feature) |
| 356 | :doc "Feature definitions." | 351 | :doc "Feature definitions." |
| 357 | :imenu "Feature" | 352 | :help "Feature definition") |
| 358 | :help (cl-constantly "Feature definition")) | ||
| 359 | 353 | ||
| 360 | (elisp-scope-define-symbol-role function-property-declaration () | 354 | (elisp-scope-define-symbol-role function-property-declaration () |
| 361 | :doc "Function/macro property declaration types." | 355 | :doc "Function/macro property declaration types." |
| 362 | :face 'elisp-function-property-declaration | 356 | :face 'elisp-function-property-declaration |
| 363 | :help (cl-constantly "Function/macro property declaration")) | 357 | :help "Function/macro property declaration") |
| 364 | 358 | ||
| 365 | (elisp-scope-define-symbol-role rx-construct () | 359 | (elisp-scope-define-symbol-role rx-construct () |
| 366 | :doc "`rx' constructs." | 360 | :doc "`rx' constructs." |
| 367 | :face 'elisp-rx | 361 | :face 'elisp-rx |
| 368 | :help (cl-constantly "`rx' construct")) | 362 | :help "`rx' construct") |
| 369 | 363 | ||
| 370 | (elisp-scope-define-symbol-role theme () | 364 | (elisp-scope-define-symbol-role theme () |
| 371 | :doc "Custom theme names." | 365 | :doc "Custom theme names." |
| 372 | :definition 'deftheme | ||
| 373 | :face 'elisp-theme | 366 | :face 'elisp-theme |
| 374 | :help (cl-constantly "Theme")) | 367 | :help "Theme") |
| 375 | 368 | ||
| 376 | (elisp-scope-define-symbol-role deftheme (theme) | 369 | (elisp-scope-define-symbol-role deftheme (theme) |
| 377 | :doc "Custom theme definitions." | 370 | :doc "Custom theme definitions." |
| 378 | :imenu "Theme" | 371 | :help "Theme definition") |
| 379 | :help (cl-constantly "Theme definition")) | ||
| 380 | 372 | ||
| 381 | (elisp-scope-define-symbol-role thing () | 373 | (elisp-scope-define-symbol-role thing () |
| 382 | :doc "`thing-at-point' \"thing\" identifiers." | 374 | :doc "`thing-at-point' \"thing\" identifiers." |
| 383 | :face 'elisp-thing | 375 | :face 'elisp-thing |
| 384 | :help (cl-constantly "Thing (text object)")) | 376 | :help "Thing (text object)") |
| 385 | 377 | ||
| 386 | (elisp-scope-define-symbol-role slot () | 378 | (elisp-scope-define-symbol-role slot () |
| 387 | :doc "EIEIO slots." | 379 | :doc "EIEIO slots." |
| 388 | :face 'elisp-slot | 380 | :face 'elisp-slot |
| 389 | :help (cl-constantly "Slot")) | 381 | :help "Slot") |
| 390 | 382 | ||
| 391 | (elisp-scope-define-symbol-role widget-type () | 383 | (elisp-scope-define-symbol-role widget-type () |
| 392 | :doc "Widget types." | 384 | :doc "Widget types." |
| 393 | :definition 'widget-type-definition | ||
| 394 | :face 'elisp-widget-type | 385 | :face 'elisp-widget-type |
| 395 | :help (cl-constantly "Widget type") | 386 | :help "Widget type") |
| 396 | :namespace 'widget-type) | ||
| 397 | 387 | ||
| 398 | (elisp-scope-define-symbol-role widget-type-definition (widget-type) | 388 | (elisp-scope-define-symbol-role widget-type-definition (widget-type) |
| 399 | :doc "Widget type definitions." | 389 | :doc "Widget type definitions." |
| 400 | :imenu "Widget" | 390 | :help "Widget type definition") |
| 401 | :help (cl-constantly "Widget type definition")) | ||
| 402 | 391 | ||
| 403 | (elisp-scope-define-symbol-role type () | 392 | (elisp-scope-define-symbol-role type () |
| 404 | :doc "ELisp object type names." | 393 | :doc "ELisp object type names." |
| 405 | :face 'elisp-type | 394 | :face 'elisp-type |
| 406 | :help (cl-constantly "Type")) | 395 | :help "Type") |
| 407 | 396 | ||
| 408 | (elisp-scope-define-symbol-role deftype (type) | 397 | (elisp-scope-define-symbol-role deftype (type) |
| 409 | :doc "ELisp object type definitions." | 398 | :doc "ELisp object type definitions." |
| 410 | :imenu "Type" | 399 | :help "Type definition") |
| 411 | :help (cl-constantly "Type definition")) | ||
| 412 | 400 | ||
| 413 | (elisp-scope-define-symbol-role group () | 401 | (elisp-scope-define-symbol-role group () |
| 414 | :doc "Customization groups." | 402 | :doc "Customization groups." |
| 415 | :definition 'defgroup | ||
| 416 | :face 'elisp-group | 403 | :face 'elisp-group |
| 417 | :help (cl-constantly "Customization group")) | 404 | :help "Customization group") |
| 418 | 405 | ||
| 419 | (elisp-scope-define-symbol-role defgroup (group) | 406 | (elisp-scope-define-symbol-role defgroup (group) |
| 420 | :doc "Customization group definitions." | 407 | :doc "Customization group definitions." |
| 421 | :imenu "Group" | 408 | :help "Customization group definition") |
| 422 | :help (cl-constantly "Customization group definition")) | ||
| 423 | 409 | ||
| 424 | (elisp-scope-define-symbol-role nnoo-backend () | 410 | (elisp-scope-define-symbol-role nnoo-backend () |
| 425 | :doc "`nnoo' backend names." | 411 | :doc "`nnoo' backend names." |
| 426 | :face 'elisp-nnoo-backend | 412 | :face 'elisp-nnoo-backend |
| 427 | :help (cl-constantly "`nnoo' backend")) | 413 | :help "`nnoo' backend") |
| 428 | 414 | ||
| 429 | (elisp-scope-define-symbol-role condition () | 415 | (elisp-scope-define-symbol-role condition () |
| 430 | :doc "`condition-case' conditions." | 416 | :doc "`condition-case' conditions." |
| 431 | :definition 'defcondition | ||
| 432 | :face 'elisp-condition | 417 | :face 'elisp-condition |
| 433 | :help (lambda (beg end _def) | 418 | :help (lambda (beg end _def) |
| 434 | (if-let* ((sym (intern (buffer-substring-no-properties beg end)))) | 419 | (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." | |||
| 438 | "`condition-case' condition" | 423 | "`condition-case' condition" |
| 439 | (when (and msg (not (string-empty-p msg))) | 424 | (when (and msg (not (string-empty-p msg))) |
| 440 | `(": " ,msg))))) | 425 | `(": " ,msg))))) |
| 441 | "`condition-case' condition")) | 426 | "`condition-case' condition"))) |
| 442 | :namespace 'condition) | ||
| 443 | 427 | ||
| 444 | (elisp-scope-define-symbol-role defcondition (condition) | 428 | (elisp-scope-define-symbol-role defcondition (condition) |
| 445 | :doc "`condition-case' condition definitions." | 429 | :doc "`condition-case' condition definitions." |
| 446 | :definition 'defcondition | 430 | :help "`condition-case' condition definition") |
| 447 | :help (cl-constantly "`condition-case' condition definition")) | ||
| 448 | 431 | ||
| 449 | (elisp-scope-define-symbol-role ampersand () | 432 | (elisp-scope-define-symbol-role ampersand () |
| 450 | :doc "Argument list markers, such as `&optional' and `&rest'." | 433 | :doc "Argument list markers, such as `&optional' and `&rest'." |
| 451 | :face 'elisp-ampersand | 434 | :face 'elisp-ampersand |
| 452 | :help (cl-constantly "Arguments separator")) | 435 | :help "Arguments separator") |
| 453 | 436 | ||
| 454 | (elisp-scope-define-symbol-role constant () | 437 | (elisp-scope-define-symbol-role constant () |
| 455 | :doc "Self-evaluating symbols." | 438 | :doc "Self-evaluating symbols." |
| 456 | :face 'elisp-constant | 439 | :face 'elisp-constant |
| 457 | :help (cl-constantly "Constant")) | 440 | :help "Constant") |
| 458 | 441 | ||
| 459 | (elisp-scope-define-symbol-role defun () | 442 | (elisp-scope-define-symbol-role defun () |
| 460 | :doc "Function definitions." | 443 | :doc "Function definitions." |
| 461 | :definition 'defun | ||
| 462 | :face 'elisp-defun | 444 | :face 'elisp-defun |
| 463 | :help (cl-constantly "Function definition") | 445 | :help "Function definition") |
| 464 | :imenu "Function" | ||
| 465 | :namespace 'function) | ||
| 466 | 446 | ||
| 467 | (elisp-scope-define-symbol-role defmacro () | 447 | (elisp-scope-define-symbol-role defmacro () |
| 468 | :doc "Macro definitions." | 448 | :doc "Macro definitions." |
| 469 | :definition 'defmacro | ||
| 470 | :face 'elisp-defmacro | 449 | :face 'elisp-defmacro |
| 471 | :help (cl-constantly "Macro definition") | 450 | :help "Macro definition") |
| 472 | :imenu "Macro" | ||
| 473 | :namespace 'function) | ||
| 474 | 451 | ||
| 475 | (elisp-scope-define-symbol-role defcmd (defun) | 452 | (elisp-scope-define-symbol-role defcmd (defun) |
| 476 | :doc "Command definitions." | 453 | :doc "Command definitions." |
| 477 | :definition 'defcmd | 454 | :help "Command definition") |
| 478 | :help (cl-constantly "Command definition") | ||
| 479 | :imenu "Command") | ||
| 480 | 455 | ||
| 481 | (elisp-scope-define-symbol-role defvar () | 456 | (elisp-scope-define-symbol-role defvar () |
| 482 | :doc "Variable definitions." | 457 | :doc "Variable definitions." |
| 483 | :definition 'defvar | ||
| 484 | :face 'elisp-defvar | 458 | :face 'elisp-defvar |
| 485 | :help (cl-constantly "Special variable definition") | 459 | :help "Special variable definition") |
| 486 | :imenu "Variable" | ||
| 487 | :namespace 'variable) | ||
| 488 | 460 | ||
| 489 | (elisp-scope-define-symbol-role special-variable-declaration () | 461 | (elisp-scope-define-symbol-role special-variable-declaration () |
| 490 | :doc "Special variable declarations." | 462 | :doc "Special variable declarations." |
| 491 | :definition 'defvar | ||
| 492 | :face 'elisp-special-variable-declaration | 463 | :face 'elisp-special-variable-declaration |
| 493 | :help (cl-constantly "Special variable declaration") | 464 | :help "Special variable declaration") |
| 494 | :namespace 'variable) | ||
| 495 | 465 | ||
| 496 | (elisp-scope-define-symbol-role defface () | 466 | (elisp-scope-define-symbol-role defface () |
| 497 | :doc "Face definitions." | 467 | :doc "Face definitions." |
| 498 | :definition 'defface | ||
| 499 | :face 'elisp-defface | 468 | :face 'elisp-defface |
| 500 | :help (cl-constantly "Face definition") | 469 | :help "Face definition") |
| 501 | :imenu "Face" | ||
| 502 | :namespace 'face) | ||
| 503 | 470 | ||
| 504 | (elisp-scope-define-symbol-role major-mode () | 471 | (elisp-scope-define-symbol-role major-mode () |
| 505 | :doc "Major mode names." | 472 | :doc "Major mode names." |
| 506 | :definition 'major-mode-definition | ||
| 507 | :face 'elisp-major-mode-name | 473 | :face 'elisp-major-mode-name |
| 508 | :help (lambda (beg end _def) | 474 | :help (lambda (beg end _def) |
| 509 | (if-let* ((sym (intern (buffer-substring-no-properties beg end)))) | 475 | (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." | |||
| 511 | (if-let* ((doc (documentation sym))) | 477 | (if-let* ((doc (documentation sym))) |
| 512 | (format "Major mode `%S'.\n\n%s" sym doc) | 478 | (format "Major mode `%S'.\n\n%s" sym doc) |
| 513 | "Major mode")) | 479 | "Major mode")) |
| 514 | "Major mode")) | 480 | "Major mode"))) |
| 515 | :namespace 'function) | ||
| 516 | 481 | ||
| 517 | (elisp-scope-define-symbol-role major-mode-definition (major-mode) | 482 | (elisp-scope-define-symbol-role major-mode-definition (major-mode) |
| 518 | :doc "Major mode definitions." | 483 | :doc "Major mode definitions." |
| 519 | :help (cl-constantly "Major mode definition") | 484 | :help "Major mode definition") |
| 520 | :imenu "Major Mode") | ||
| 521 | 485 | ||
| 522 | (elisp-scope-define-symbol-role block () | 486 | (elisp-scope-define-symbol-role block () |
| 523 | :doc "`cl-block' block names." | 487 | :doc "`cl-block' block names." |
| @@ -526,22 +490,16 @@ NAME inherits properties that do not appear in PROPS from its PARENTS." | |||
| 526 | 490 | ||
| 527 | (elisp-scope-define-symbol-role icon () | 491 | (elisp-scope-define-symbol-role icon () |
| 528 | :doc "Icon names." | 492 | :doc "Icon names." |
| 529 | :definition 'deficon | ||
| 530 | :face 'elisp-icon | 493 | :face 'elisp-icon |
| 531 | :help (cl-constantly "Icon") | 494 | :help "Icon") |
| 532 | :namespace 'icon) | ||
| 533 | 495 | ||
| 534 | (elisp-scope-define-symbol-role deficon () | 496 | (elisp-scope-define-symbol-role deficon () |
| 535 | :doc "Icon definitions." | 497 | :doc "Icon definitions." |
| 536 | :definition 'deficon | ||
| 537 | :face 'elisp-deficon | 498 | :face 'elisp-deficon |
| 538 | :help (cl-constantly "Icon definition") | 499 | :help "Icon definition") |
| 539 | :imenu "Icon" | ||
| 540 | :namespace 'icon) | ||
| 541 | 500 | ||
| 542 | (elisp-scope-define-symbol-role oclosure () | 501 | (elisp-scope-define-symbol-role oclosure () |
| 543 | :doc "OClosure type names." | 502 | :doc "OClosure type names." |
| 544 | :definition 'defoclosure | ||
| 545 | :face 'elisp-oclosure | 503 | :face 'elisp-oclosure |
| 546 | :help (lambda (beg end _def) | 504 | :help (lambda (beg end _def) |
| 547 | (if-let* ((sym (intern (buffer-substring-no-properties beg end)))) | 505 | (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." | |||
| 549 | (if-let* ((doc (oclosure--class-docstring (get sym 'cl--class)))) | 507 | (if-let* ((doc (oclosure--class-docstring (get sym 'cl--class)))) |
| 550 | (format "OClosure type `%S'.\n\n%s" sym doc) | 508 | (format "OClosure type `%S'.\n\n%s" sym doc) |
| 551 | "OClosure type")) | 509 | "OClosure type")) |
| 552 | "OClosure type")) | 510 | "OClosure type"))) |
| 553 | :namespace 'oclosure) | ||
| 554 | 511 | ||
| 555 | (elisp-scope-define-symbol-role defoclosure () | 512 | (elisp-scope-define-symbol-role defoclosure () |
| 556 | :doc "OClosure type definitions." | 513 | :doc "OClosure type definitions." |
| 557 | :definition 'defoclosure | ||
| 558 | :face 'elisp-defoclosure | 514 | :face 'elisp-defoclosure |
| 559 | :help (cl-constantly "OClosure type definition") | 515 | :help "OClosure type definition") |
| 560 | :imenu "OClosure type" | ||
| 561 | :namespace 'oclosure) | ||
| 562 | 516 | ||
| 563 | (elisp-scope-define-symbol-role coding () | 517 | (elisp-scope-define-symbol-role coding () |
| 564 | :doc "Coding system names." | 518 | :doc "Coding system names." |
| 565 | :definition 'defcoding | ||
| 566 | :face 'elisp-coding | 519 | :face 'elisp-coding |
| 567 | :help (lambda (beg end _def) | 520 | :help (lambda (beg end _def) |
| 568 | (if-let* ((sym (intern (buffer-substring-no-properties beg end)))) | 521 | (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." | |||
| 570 | (if-let* ((doc (coding-system-doc-string sym))) | 523 | (if-let* ((doc (coding-system-doc-string sym))) |
| 571 | (format "Coding system `%S'.\n\n%s" sym doc) | 524 | (format "Coding system `%S'.\n\n%s" sym doc) |
| 572 | "Coding system")) | 525 | "Coding system")) |
| 573 | "Coding system")) | 526 | "Coding system"))) |
| 574 | :namespace 'coding) | ||
| 575 | 527 | ||
| 576 | (elisp-scope-define-symbol-role defcoding () | 528 | (elisp-scope-define-symbol-role defcoding () |
| 577 | :doc "Coding system definitions." | 529 | :doc "Coding system definitions." |
| 578 | :definition 'defcoding | ||
| 579 | :face 'elisp-defcoding | 530 | :face 'elisp-defcoding |
| 580 | :help (cl-constantly "Coding system definition") | 531 | :help "Coding system definition") |
| 581 | :imenu "Coding system" | ||
| 582 | :namespace 'coding) | ||
| 583 | 532 | ||
| 584 | (elisp-scope-define-symbol-role charset () | 533 | (elisp-scope-define-symbol-role charset () |
| 585 | :doc "Charset names." | 534 | :doc "Charset names." |
| 586 | :definition 'defcharset | ||
| 587 | :face 'elisp-charset | 535 | :face 'elisp-charset |
| 588 | :help (lambda (beg end _def) | 536 | :help (lambda (beg end _def) |
| 589 | (if-let* ((sym (intern (buffer-substring-no-properties beg end)))) | 537 | (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." | |||
| 591 | (if-let* ((doc (charset-description sym))) | 539 | (if-let* ((doc (charset-description sym))) |
| 592 | (format "Charset `%S'.\n\n%s" sym doc) | 540 | (format "Charset `%S'.\n\n%s" sym doc) |
| 593 | "Charset")) | 541 | "Charset")) |
| 594 | "Charset")) | 542 | "Charset"))) |
| 595 | :namespace 'charset) | ||
| 596 | 543 | ||
| 597 | (elisp-scope-define-symbol-role defcharset () | 544 | (elisp-scope-define-symbol-role defcharset () |
| 598 | :doc "Charset definitions." | 545 | :doc "Charset definitions." |
| 599 | :definition 'defcharset | ||
| 600 | :face 'elisp-defcharset | 546 | :face 'elisp-defcharset |
| 601 | :help (cl-constantly "Charset definition") | 547 | :help "Charset definition") |
| 602 | :imenu "Charset" | ||
| 603 | :namespace 'charset) | ||
| 604 | 548 | ||
| 605 | (elisp-scope-define-symbol-role completion-category () | 549 | (elisp-scope-define-symbol-role completion-category () |
| 606 | :doc "Completion categories." | 550 | :doc "Completion categories." |
| 607 | :definition 'completion-category-definition | ||
| 608 | :face 'elisp-completion-category | 551 | :face 'elisp-completion-category |
| 609 | :help (lambda (beg end _def) | 552 | :help (lambda (beg end _def) |
| 610 | (if-let* ((sym (intern (buffer-substring-no-properties beg end)))) | 553 | (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." | |||
| 612 | (if-let* ((doc (get sym 'completion-category-documentation))) | 555 | (if-let* ((doc (get sym 'completion-category-documentation))) |
| 613 | (format "Completion category `%S'.\n\n%s" sym doc) | 556 | (format "Completion category `%S'.\n\n%s" sym doc) |
| 614 | "Completion category")) | 557 | "Completion category")) |
| 615 | "Completion category")) | 558 | "Completion category"))) |
| 616 | :namespace 'completion-category) | ||
| 617 | 559 | ||
| 618 | (elisp-scope-define-symbol-role completion-category-definition () | 560 | (elisp-scope-define-symbol-role completion-category-definition () |
| 619 | :doc "Completion category definitions." | 561 | :doc "Completion category definitions." |
| 620 | :definition 'completion-category-definition | ||
| 621 | :face 'elisp-completion-category-definition | 562 | :face 'elisp-completion-category-definition |
| 622 | :help (cl-constantly "Completion category definition") | 563 | :help "Completion category definition") |
| 623 | :imenu "Completion category" | ||
| 624 | :namespace 'completion-category) | ||
| 625 | 564 | ||
| 626 | (defvar elisp-scope-counter nil) | 565 | (defvar elisp-scope-counter nil) |
| 627 | 566 | ||
| @@ -2575,10 +2514,6 @@ property, or if the current buffer is trusted (see `trusted-content-p')." | |||
| 2575 | (:face | 2514 | (:face |
| 2576 | (if-let* ((q (elisp-scope--unquote (cadr props)))) (elisp-scope-face-1 q) | 2515 | (if-let* ((q (elisp-scope--unquote (cadr props)))) (elisp-scope-face-1 q) |
| 2577 | (elisp-scope-1 (cadr props)))) | 2516 | (elisp-scope-1 (cadr props)))) |
| 2578 | (:definition | ||
| 2579 | (if-let* ((q (elisp-scope--unquote (cadr props)))) | ||
| 2580 | (dolist (st (ensure-list q)) (elisp-scope-report-s st 'symbol-role)) | ||
| 2581 | (elisp-scope-1 (cadr props)))) | ||
| 2582 | (otherwise (elisp-scope-1 (cadr props)))) | 2517 | (otherwise (elisp-scope-1 (cadr props)))) |
| 2583 | (setq props (cddr props)))) | 2518 | (setq props (cddr props)))) |
| 2584 | 2519 | ||
diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el index b6a89b62112..2b452bd2a0f 100644 --- a/lisp/progmodes/elisp-mode.el +++ b/lisp/progmodes/elisp-mode.el | |||
| @@ -295,7 +295,7 @@ expand some macro calls in your code to analyze the expanded forms. In | |||
| 295 | untrusted buffers, for security reasons, macro-expansion is restricted | 295 | untrusted buffers, for security reasons, macro-expansion is restricted |
| 296 | to safe macros only (see `elisp-scope-safe-macro-p'). Hence in | 296 | to safe macros only (see `elisp-scope-safe-macro-p'). Hence in |
| 297 | untrusted buffers the arguments of some macros might not be analyzed, | 297 | untrusted buffers the arguments of some macros might not be analyzed, |
| 298 | and therefore not highighted. | 298 | and therefore not highlighted. |
| 299 | 299 | ||
| 300 | See the function `elisp-scope-analyze-form' for more details about the | 300 | See the function `elisp-scope-analyze-form' for more details about the |
| 301 | code analysis." | 301 | code analysis." |
| @@ -510,8 +510,8 @@ code analysis." | |||
| 510 | (when elisp-add-help-echo | 510 | (when elisp-add-help-echo |
| 511 | (put-text-property | 511 | (put-text-property |
| 512 | beg end 'help-echo | 512 | beg end 'help-echo |
| 513 | (when-let* ((fun (elisp-scope-get-symbol-role-property type :help))) | 513 | (when-let* ((hlp (elisp-scope-get-symbol-role-property type :help))) |
| 514 | (funcall fun beg end def))))) | 514 | (if (stringp hlp) hlp (funcall hlp beg end def)))))) |
| 515 | 515 | ||
| 516 | (defvar font-lock-beg) | 516 | (defvar font-lock-beg) |
| 517 | (defvar font-lock-end) | 517 | (defvar font-lock-end) |