From 54cfadd92f080572f6f2ccf89829d38daaa56529 Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Fri, 24 Sep 2021 22:04:55 +0200 Subject: [PATCH] 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. --- lisp/emacs-lisp/checkdoc.el | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) 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 -- 2.39.2