1
0
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:
Basil L. Contovounesios 2020-12-27 14:21:50 +00:00
parent 4c55eeee39
commit 25dadca0d1
No known key found for this signature in database
GPG Key ID: 205AB54A5D5D8CFF
3 changed files with 16 additions and 14 deletions

View File

@ -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

View File

@ -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

View File

@ -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