mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-06 06:20:55 -08:00
Put the define-minor-mode boilerplate at the end of the doc strings
* lisp/emacs-lisp/easy-mmode.el (easy-mmode--mode-docstring): Put the boilerplate at the end of the doc string.
This commit is contained in:
parent
9c30276c42
commit
ec464789df
1 changed files with 42 additions and 24 deletions
|
|
@ -82,9 +82,7 @@ replacing its case-insensitive matches with the literal string in LIGHTER."
|
|||
(replace-regexp-in-string (regexp-quote lighter) lighter name t t))))
|
||||
|
||||
(defconst easy-mmode--arg-docstring
|
||||
"
|
||||
|
||||
This is a minor mode. If called interactively, toggle the `%s'
|
||||
"This is a minor mode. If called interactively, toggle the `%s'
|
||||
mode. If the prefix argument is positive, enable the mode, and
|
||||
if it is zero or negative, disable the mode.
|
||||
|
||||
|
|
@ -100,27 +98,47 @@ it is disabled.")
|
|||
|
||||
(defun easy-mmode--mode-docstring (doc mode-pretty-name keymap-sym
|
||||
getter)
|
||||
(let ((doc (or doc (format "Toggle %s on or off.
|
||||
|
||||
\\{%s}" mode-pretty-name keymap-sym))))
|
||||
(if (string-match-p "\\bARG\\b" doc)
|
||||
;; If we have a doc string, and it's already complete (which we
|
||||
;; guess at with the simple heuristic below), then just return that
|
||||
;; as is.
|
||||
(if (and doc (string-match-p "\\bARG\\b" doc))
|
||||
doc
|
||||
;; Compose a new doc string.
|
||||
(with-temp-buffer
|
||||
(let ((lines (if doc
|
||||
(string-lines doc)
|
||||
(list (format "Toggle %s on or off." mode-pretty-name)))))
|
||||
;; Insert the first line from the doc string.
|
||||
(insert (pop lines))
|
||||
;; Ensure that we have (only) one blank line after the first
|
||||
;; line.
|
||||
(ensure-empty-lines)
|
||||
(while (and lines
|
||||
(string-empty-p (car lines)))
|
||||
(pop lines))
|
||||
;; Insert the doc string.
|
||||
(dolist (line lines)
|
||||
(insert line "\n"))
|
||||
(ensure-empty-lines)
|
||||
;; Insert the boilerplate.
|
||||
(let* ((fill-prefix nil)
|
||||
(docs-fc (bound-and-true-p emacs-lisp-docstring-fill-column))
|
||||
(fill-column (if (integerp docs-fc) docs-fc 65))
|
||||
(argdoc (format easy-mmode--arg-docstring mode-pretty-name
|
||||
;; Avoid having quotes turn into pretty quotes.
|
||||
(string-replace "'" "\\\\='"
|
||||
(format "%S" getter))))
|
||||
(filled (if (fboundp 'fill-region)
|
||||
(with-temp-buffer
|
||||
(format "%S" getter)))))
|
||||
(let ((start (point)))
|
||||
(insert argdoc)
|
||||
(fill-region (point-min) (point-max) 'left t)
|
||||
(buffer-string))
|
||||
argdoc)))
|
||||
(replace-regexp-in-string "\\(\n\n\\|\\'\\)\\(.\\|\n\\)*\\'"
|
||||
(concat filled "\\1")
|
||||
doc nil nil 1)))))
|
||||
(when (fboundp 'fill-region)
|
||||
(fill-region start (point) 'left t))))
|
||||
;; Finally, insert the keymap.
|
||||
(when (and (boundp keymap-sym)
|
||||
(or (not doc)
|
||||
(not (string-search "\\{" doc))))
|
||||
(ensure-empty-lines)
|
||||
(insert (format "\\{%s}" keymap-sym)))
|
||||
(buffer-string)))))
|
||||
|
||||
;;;###autoload
|
||||
(defalias 'easy-mmode-define-minor-mode #'define-minor-mode)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue