summaryrefslogtreecommitdiff
path: root/test/automated/help-fns.el
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2015-06-11 10:23:46 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2015-06-11 10:24:38 -0700
commitb2205626370071bc85dc07b043c833bc50c0baec (patch)
tree9f317202483e1a28bd75cd4faddb521d708006d2 /test/automated/help-fns.el
parenteda386fc71419a6ec33f2f5fe73d7cb7ce51c028 (diff)
downloademacs-b2205626370071bc85dc07b043c833bc50c0baec.tar.gz
emacs-b2205626370071bc85dc07b043c833bc50c0baec.tar.bz2
emacs-b2205626370071bc85dc07b043c833bc50c0baec.zip
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.
Diffstat (limited to 'test/automated/help-fns.el')
-rw-r--r--test/automated/help-fns.el23
1 files changed, 23 insertions, 0 deletions
diff --git a/test/automated/help-fns.el b/test/automated/help-fns.el
index ba87593f420..4815ac68257 100644
--- a/test/automated/help-fns.el
+++ b/test/automated/help-fns.el
@@ -34,4 +34,27 @@
(goto-char (point-min))
(should (search-forward "autoloaded Lisp macro" (line-end-position)))))
+(defun abc\\\[universal-argument\]b\`c\'d\\e\"f (x)
+ "A function with a funny name.
+
+\(fn XYYZZY)"
+ x)
+
+(defun defgh\\\[universal-argument\]b\`c\'d\\e\"f (x)
+ "Another function with a funny name."
+ x)
+
+(ert-deftest help-fns-test-funny-names ()
+ "Test for help with functions with funny names."
+ (describe-function 'abc\\\[universal-argument\]b\`c\'d\\e\"f)
+ (with-current-buffer "*Help*"
+ (goto-char (point-min))
+ (should (search-forward
+ "(abc\\\\\\[universal-argument\\]b\\`c\\'d\\\\e\\\"f XYYZZY)")))
+ (describe-function 'defgh\\\[universal-argument\]b\`c\'d\\e\"f)
+ (with-current-buffer "*Help*"
+ (goto-char (point-min))
+ (should (search-forward
+ "(defgh\\\\\\[universal-argument\\]b\\`c\\'d\\\\e\\\"f X)"))))
+
;;; help-fns.el ends here