Fix quoting of help for functions with odd names
While investigating Bug#20759, I discovered other quoting problems: C-h f mishandled characters like backslash and quote in function names. This fix changes the behavior so that 'C-h f pcase RET' now generates "... (\` QPAT) ..." instead of "... (` QPAT) ...", because '(format "%S" '(` FOO))' returns "(\\` FOO)". A comment in src/lread.c's read1 function says that the backslash will be needed starting in Emacs 25, which implies that 'format' is correct and the old pcase documention was wrong to omit the backslash. * lisp/emacs-lisp/nadvice.el (advice--make-docstring): * lisp/help-fns.el (help-fns--signature): * lisp/help.el (help-add-fundoc-usage): * lisp/progmodes/elisp-mode.el (elisp-function-argstring): Use help--make-usage-docstring rather than formatting help-make-usage. * lisp/emacs-lisp/pcase.el (pcase--make-docstring): Return raw docstring. * lisp/help-fns.el (help-fns--signature): New arg RAW, to return raw docstring. Take more care to distinguish raw from cooked dstrings. (describe-function-1): Let help-fns--signature substitute command keys. * lisp/help.el (help--docstring-quote): New function. (help-split-fundoc): Use it, to quote funny characters more systematically. (help--make-usage): Rename from help-make-usage, since this should be private. Leave an obsolete alias for the old name. (help--make-usage-docstring): New function. * test/automated/help-fns.el (help-fns-test-funny-names): New test.
This commit is contained in:
parent
eda386fc71
commit
b220562637
6 changed files with 79 additions and 38 deletions
|
@ -114,7 +114,7 @@ Each element has the form (WHERE BYTECODE STACK) where:
|
|||
(usage (help-split-fundoc origdoc function)))
|
||||
(setq usage (if (null usage)
|
||||
(let ((arglist (help-function-arglist flist)))
|
||||
(format "%S" (help-make-usage function arglist)))
|
||||
(help--make-usage-docstring function arglist))
|
||||
(setq origdoc (cdr usage)) (car usage)))
|
||||
(help-add-fundoc-usage (concat docstring origdoc) usage))))
|
||||
|
||||
|
|
|
@ -163,7 +163,7 @@ Currently, the following patterns are provided this way:"
|
|||
expansion))))
|
||||
|
||||
(declare-function help-fns--signature "help-fns"
|
||||
(function doc real-def real-function))
|
||||
(function doc real-def real-function raw))
|
||||
|
||||
;; FIXME: Obviously, this will collide with nadvice's use of
|
||||
;; function-documentation if we happen to advise `pcase'.
|
||||
|
@ -183,7 +183,7 @@ Currently, the following patterns are provided this way:"
|
|||
(insert "\n\n-- ")
|
||||
(let* ((doc (documentation me 'raw)))
|
||||
(setq doc (help-fns--signature symbol doc me
|
||||
(indirect-function me)))
|
||||
(indirect-function me) t))
|
||||
(insert "\n" (or doc "Not documented.")))))))
|
||||
(let ((combined-doc (buffer-string)))
|
||||
(if ud (help-add-fundoc-usage combined-doc (car ud)) combined-doc)))))
|
||||
|
@ -870,7 +870,7 @@ QPAT can take the following forms:
|
|||
(QPAT1 . QPAT2) matches if QPAT1 matches the car and QPAT2 the cdr.
|
||||
[QPAT1 QPAT2..QPATn] matches a vector of length n and QPAT1..QPATn match
|
||||
its 0..(n-1)th elements, respectively.
|
||||
,PAT matches if the pattern PAT matches.
|
||||
,PAT matches if the pattern PAT matches.
|
||||
STRING matches if the object is `equal' to STRING.
|
||||
ATOM matches if the object is `eq' to ATOM."
|
||||
(declare (debug (pcase-QPAT)))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue