summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichalis V <mvar.40k@gmail.com>2021-08-17 14:20:57 +0200
committerLars Ingebrigtsen <larsi@gnus.org>2021-08-17 14:20:57 +0200
commit00fdf80e21909366fcba0eab84fe68c803a3a3eb (patch)
treedd068919b26ba5ac9fc63f1d363ad72e7376a476
parente6fb7e44cc7da97f7c29246dbff89009de9a4633 (diff)
downloademacs-00fdf80e21909366fcba0eab84fe68c803a3a3eb.tar.gz
Improve `forward-sexp' in *Help* buffers
* lisp/help-mode.el (help-mode-syntax-table): New variable (bug#39134). (help-make-xrefs): Use it to make picking out symbols in curved quotes work reliably. (help-xref-on-pp): Ditto.
-rw-r--r--lisp/help-mode.el13
1 files changed, 11 insertions, 2 deletions
diff --git a/lisp/help-mode.el b/lisp/help-mode.el
index e2d8ee0f591..b53d00d0fb8 100644
--- a/lisp/help-mode.el
+++ b/lisp/help-mode.el
@@ -140,6 +140,15 @@ The format is (FUNCTION ARGS...).")
(setq-default help-xref-stack nil help-xref-stack-item nil)
(setq-default help-xref-forward-stack nil help-xref-forward-stack-item nil)
+(defvar help-mode-syntax-table
+ (let ((table (make-syntax-table emacs-lisp-mode-syntax-table)))
+ ;; treat single quotes as parens so that forward-sexp does not
+ ;; break when quoted string contains punctuation
+ (modify-syntax-entry ?‘ "(’ " table)
+ (modify-syntax-entry ?’ ")‘ " table)
+ table)
+ "Syntax table used in `help-mode'.")
+
(defcustom help-mode-hook nil
"Hook run by `help-mode'."
:type 'hook
@@ -520,7 +529,7 @@ that."
(let ((stab (syntax-table))
(case-fold-search t)
(inhibit-read-only t))
- (set-syntax-table emacs-lisp-mode-syntax-table)
+ (set-syntax-table help-mode-syntax-table)
;; The following should probably be abstracted out.
(unwind-protect
(progn
@@ -673,7 +682,7 @@ See `help-make-xrefs'."
(defun help-xref-on-pp (from to)
"Add xrefs for symbols in `pp's output between FROM and TO."
(if (> (- to from) 5000) nil
- (with-syntax-table emacs-lisp-mode-syntax-table
+ (with-syntax-table help-mode-syntax-table
(save-excursion
(save-restriction
(narrow-to-region from to)