From: Stefan Kangas Date: Fri, 24 Sep 2021 20:04:55 +0000 (+0200) Subject: checkdoc: Improve wide line warning to decrease false positives X-Git-Tag: emacs-28.0.90~680 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=54cfadd92f080572f6f2ccf89829d38daaa56529;p=emacs.git checkdoc: Improve wide line warning to decrease false positives * lisp/emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine): Respect 'byte-compile-docstring-max-column' if it is set. Allow the first line to be three characters longer than the others to account for indentation and the opening string character. --- diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el index 06720cfa2eb..df93d392417 100644 --- a/lisp/emacs-lisp/checkdoc.el +++ b/lisp/emacs-lisp/checkdoc.el @@ -1685,20 +1685,28 @@ function,command,variable,option or symbol." ms1)))))) ;; first line can be wider if necessary to fit the ;; information that ought to be there. (save-excursion - (let ((start (point)) - (eol nil)) + (let* ((start (point)) + (eol nil) + ;; Respect this file local variable. + (max-column (max 80 byte-compile-docstring-max-column)) + ;; Allow the first line to be three characters longer, to + ;; fit the leading ` "' while still having a docstring + ;; shorter than e.g. 80 characters. + (first t) + (get-max-column (lambda () (+ max-column (if first 3 0))))) (while (and (< (point) e) (or (progn (end-of-line) (setq eol (point)) - (< (current-column) 80)) + (< (current-column) (funcall get-max-column))) (progn (beginning-of-line) (re-search-forward "\\\\\\\\[[<{]" eol t)) - (checkdoc-in-sample-code-p start e))) + (checkdoc-in-sample-code-p start e))) + (setq first nil) (forward-line 1)) (end-of-line) - (if (and (< (point) e) (> (current-column) 80)) + (if (and (< (point) e) (> (current-column) (funcall get-max-column))) (checkdoc-create-error - "Some lines are over 80 columns wide" + (format "Some lines are over %d columns wide" max-column) s (save-excursion (goto-char s) (line-end-position)))))) ;; Here we deviate to tests based on a variable or function. ;; We must do this before checking for symbols in quotes because there