mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-06 06:20:55 -08:00
Fix pluralization in shortdoc-help-fns-examples-function
* lisp/emacs-lisp/shortdoc.el (shortdoc-help-fns-examples-function): Implement a better logic to pluralize "Example", by counting the number of arrow characters in the example string. (Bug#61877) * test/lisp/emacs-lisp/shortdoc-tests.el (shortdoc-help-fns-examples-function-test): Add a test.
This commit is contained in:
parent
9191fd50d2
commit
d19416d15c
2 changed files with 45 additions and 5 deletions
|
|
@ -1621,13 +1621,38 @@ doesn't has any shortdoc information."
|
|||
You can add this function to the `help-fns-describe-function-functions'
|
||||
hook to show examples of using FUNCTION in *Help* buffers produced
|
||||
by \\[describe-function]."
|
||||
(let ((examples (shortdoc-function-examples function))
|
||||
(times 0))
|
||||
(let* ((examples (shortdoc-function-examples function))
|
||||
(num-examples (length examples))
|
||||
(times 0))
|
||||
(dolist (example examples)
|
||||
(when (zerop times)
|
||||
(if (eq (length examples) 1)
|
||||
(insert "\n Example:\n\n")
|
||||
(insert "\n Examples:\n\n")))
|
||||
(if (> num-examples 1)
|
||||
(insert "\n Examples:\n\n")
|
||||
;; Some functions have more than one example per group.
|
||||
;; Count the number of arrows to know if we need to
|
||||
;; pluralize "Example".
|
||||
(let* ((text (cdr example))
|
||||
(count 0)
|
||||
(pos 0)
|
||||
(end (length text))
|
||||
(double-arrow (if (char-displayable-p ?⇒)
|
||||
" ⇒"
|
||||
" =>"))
|
||||
(double-arrow-example (if (char-displayable-p ?⇒)
|
||||
" e.g. ⇒"
|
||||
" e.g. =>"))
|
||||
(single-arrow (if (char-displayable-p ?→)
|
||||
" →"
|
||||
" ->")))
|
||||
(while (and (< pos end)
|
||||
(or (string-match double-arrow text pos)
|
||||
(string-match double-arrow-example text pos)
|
||||
(string-match single-arrow text pos)))
|
||||
(setq count (1+ count)
|
||||
pos (match-end 0)))
|
||||
(if (> count 1)
|
||||
(insert "\n Examples:\n\n")
|
||||
(insert "\n Example:\n\n")))))
|
||||
(setq times (1+ times))
|
||||
(insert " ")
|
||||
(insert (cdr example))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue