mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-29 07:58:28 +00:00
Hyperlink symbol names without word syntax in Help
* lisp/emacs-lisp/lisp-mode.el (lisp-el-font-lock-keywords-2) (lisp-cl-font-lock-keywords-2): Allow single-character symbol names. * lisp/help-mode.el (help-xref-symbol-regexp): Also match symbol names starting with symbol syntax (bug#6601, bug#24309). * test/lisp/help-mode-tests.el (help-mode-tests-xref-button): Test hyperlink creation for function names without symbol syntax.
This commit is contained in:
parent
4c55eeee39
commit
25dadca0d1
@ -456,8 +456,7 @@ This will generate compile-time constants from BINDINGS."
|
||||
("\\(\\\\\\)\\([^\"\\]\\)"
|
||||
(1 (elisp--font-lock-backslash) prepend))
|
||||
;; Words inside ‘’ and `' tend to be symbol names.
|
||||
(,(concat "[`‘]\\(\\(?:\\sw\\|\\s_\\|\\\\.\\)"
|
||||
lisp-mode-symbol-regexp "\\)['’]")
|
||||
(,(concat "[`‘]\\(" lisp-mode-symbol-regexp "\\)['’]")
|
||||
(1 font-lock-constant-face prepend))
|
||||
;; Constant values.
|
||||
(,(concat "\\_<:" lisp-mode-symbol-regexp "\\_>")
|
||||
@ -507,8 +506,7 @@ This will generate compile-time constants from BINDINGS."
|
||||
(,(concat "(" cl-errs-re "\\_>")
|
||||
(1 font-lock-warning-face))
|
||||
;; Words inside ‘’ and `' tend to be symbol names.
|
||||
(,(concat "[`‘]\\(\\(?:\\sw\\|\\s_\\|\\\\.\\)"
|
||||
lisp-mode-symbol-regexp "\\)['’]")
|
||||
(,(concat "[`‘]\\(" lisp-mode-symbol-regexp "\\)['’]")
|
||||
(1 font-lock-constant-face prepend))
|
||||
;; Uninterned symbols, e.g., (defpackage #:my-package ...)
|
||||
;; must come before keywords below to have effect
|
||||
|
@ -357,8 +357,7 @@ Commands:
|
||||
"\\(symbol\\|program\\|property\\)\\|" ; Don't link
|
||||
"\\(source \\(?:code \\)?\\(?:of\\|for\\)\\)\\)"
|
||||
"[ \t\n]+\\)?"
|
||||
;; Note starting with word-syntax character:
|
||||
"['`‘]\\(\\sw\\(\\sw\\|\\s_\\)+\\|`\\)['’]"))
|
||||
"['`‘]\\(\\(?:\\sw\\|\\s_\\)+\\|`\\)['’]"))
|
||||
"Regexp matching doc string references to symbols.
|
||||
|
||||
The words preceding the quoted symbol can be used in doc strings to
|
||||
|
@ -72,14 +72,19 @@ Lisp concepts such as car, cdr, cons cell and list.")
|
||||
#'info)))))
|
||||
|
||||
(ert-deftest help-mode-tests-xref-button ()
|
||||
(with-temp-buffer
|
||||
(insert "See also the function ‘interactive’.")
|
||||
(string-match help-xref-symbol-regexp (buffer-string))
|
||||
(help-xref-button 8 'help-function)
|
||||
(should-not (button-at 22))
|
||||
(should-not (button-at 35))
|
||||
(let ((button (button-at 30)))
|
||||
(should (eq (button-type button) 'help-function)))))
|
||||
(let* ((fmt "See also the function ‘%s’.")
|
||||
;; 1+ translates string index to buffer position.
|
||||
(beg (1+ (string-search "%" fmt))))
|
||||
(with-temp-buffer
|
||||
(dolist (fn '(interactive \` = + - * / %))
|
||||
(erase-buffer)
|
||||
(insert (format fmt fn))
|
||||
(goto-char (point-min))
|
||||
(re-search-forward help-xref-symbol-regexp)
|
||||
(help-xref-button 8 'help-function)
|
||||
(should-not (button-at (1- beg)))
|
||||
(should-not (button-at (+ beg (length (symbol-name fn)))))
|
||||
(should (eq (button-type (button-at beg)) 'help-function))))))
|
||||
|
||||
(ert-deftest help-mode-tests-insert-xref-button ()
|
||||
(with-temp-buffer
|
||||
|
Loading…
Reference in New Issue
Block a user