mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-29 07:58:28 +00:00
Warn about overly long docstring in lambda
* lisp/emacs-lisp/bytecomp.el (byte-compile-docstring-length-warn): Warn about overly long docstring in lambda. (Bug#44858) (byte-compile--wide-docstring-p): Improve comment. * test/lisp/emacs-lisp/bytecomp-tests.el ("warn-wide-docstring-defun.el"): Update to test for the above new warning.
This commit is contained in:
parent
89bac05aaa
commit
c51b1c02db
@ -1666,7 +1666,10 @@ URLs."
|
|||||||
(seq "(" (* (not ")")) ")")))
|
(seq "(" (* (not ")")) ")")))
|
||||||
")")))
|
")")))
|
||||||
""
|
""
|
||||||
;; Heuristic: assume these substitutions are of some length N.
|
;; Heuristic: We can't reliably do `subsititute-command-keys'
|
||||||
|
;; substitutions, since the value of a keymap in general can't be
|
||||||
|
;; known at compile time. So instead, we assume that these
|
||||||
|
;; substitutions are of some length N.
|
||||||
(replace-regexp-in-string
|
(replace-regexp-in-string
|
||||||
(rx "\\" (or (seq "[" (* (not "]")) "]")))
|
(rx "\\" (or (seq "[" (* (not "]")) "]")))
|
||||||
(make-string byte-compile--wide-docstring-substitution-len ?x)
|
(make-string byte-compile--wide-docstring-substitution-len ?x)
|
||||||
@ -1686,13 +1689,6 @@ value, it will override this variable."
|
|||||||
"Warn if documentation string of FORM is too wide.
|
"Warn if documentation string of FORM is too wide.
|
||||||
It is too wide if it has any lines longer than the largest of
|
It is too wide if it has any lines longer than the largest of
|
||||||
`fill-column' and `byte-compile-docstring-max-column'."
|
`fill-column' and `byte-compile-docstring-max-column'."
|
||||||
;; This has some limitations that it would be nice to fix:
|
|
||||||
;; 1. We don't try to handle defuns. It is somewhat tricky to get
|
|
||||||
;; it right since `defun' is a macro. Also, some macros
|
|
||||||
;; themselves produce defuns (e.g. `define-derived-mode').
|
|
||||||
;; 2. We assume that any `subsititute-command-keys' command replacement has a
|
|
||||||
;; given length. We can't reliably do these replacements, since the value
|
|
||||||
;; of the keymaps in general can't be known at compile time.
|
|
||||||
(when (byte-compile-warning-enabled-p 'docstrings)
|
(when (byte-compile-warning-enabled-p 'docstrings)
|
||||||
(let ((col (max byte-compile-docstring-max-column fill-column))
|
(let ((col (max byte-compile-docstring-max-column fill-column))
|
||||||
kind name docs)
|
kind name docs)
|
||||||
@ -1703,12 +1699,10 @@ It is too wide if it has any lines longer than the largest of
|
|||||||
(setq kind (nth 0 form))
|
(setq kind (nth 0 form))
|
||||||
(setq name (nth 1 form))
|
(setq name (nth 1 form))
|
||||||
(setq docs (nth 3 form)))
|
(setq docs (nth 3 form)))
|
||||||
;; Here is how one could add lambda's here:
|
('lambda
|
||||||
;; ('lambda
|
(setq kind "") ; can't be "function", unfortunately
|
||||||
;; (setq kind "") ; can't be "function", unfortunately
|
(setq docs (and (stringp (nth 2 form))
|
||||||
;; (setq docs (and (stringp (nth 2 form))
|
(nth 2 form)))))
|
||||||
;; (nth 2 form))))
|
|
||||||
)
|
|
||||||
(when (and (consp name) (eq (car name) 'quote))
|
(when (and (consp name) (eq (car name) 'quote))
|
||||||
(setq name (cadr name)))
|
(setq name (cadr name)))
|
||||||
(setq name (if name (format " `%s'" name) ""))
|
(setq name (if name (format " `%s'" name) ""))
|
||||||
|
@ -937,10 +937,9 @@ byte-compiled. Run with dynamic binding."
|
|||||||
"warn-wide-docstring-define-obsolete-variable-alias.el"
|
"warn-wide-docstring-define-obsolete-variable-alias.el"
|
||||||
"defvaralias .foo. docstring wider than .* characters")
|
"defvaralias .foo. docstring wider than .* characters")
|
||||||
|
|
||||||
;; TODO: We don't yet issue warnings for defuns.
|
|
||||||
(bytecomp--define-warning-file-test
|
(bytecomp--define-warning-file-test
|
||||||
"warn-wide-docstring-defun.el"
|
"warn-wide-docstring-defun.el"
|
||||||
"wider than .* characters" 'reverse)
|
"wider than .* characters")
|
||||||
|
|
||||||
(bytecomp--define-warning-file-test
|
(bytecomp--define-warning-file-test
|
||||||
"warn-wide-docstring-defvar.el"
|
"warn-wide-docstring-defvar.el"
|
||||||
|
Loading…
Reference in New Issue
Block a user