From a01166562cec3f97e722b627cf5db8ef49338cde Mon Sep 17 00:00:00 2001 From: Mauro Aranda Date: Mon, 8 Mar 2021 08:11:38 -0300 Subject: [PATCH] Make checkdoc--next-docstring use the doc-string-elt property This follows from a fix for Bug#46918 and a discussion to use doc-string-elt: https://lists.gnu.org/archive/html/emacs-devel/2021-03/msg00232.html * lisp/emacs-lisp/checkdoc.el (checkdoc--next-docstring): Check for a non-nil doc-string-elt property, instead of hard-coding the supported symbols. Use that property to position point at the doc-string. --- lisp/emacs-lisp/checkdoc.el | 33 +++++++++------------------------ 1 file changed, 9 insertions(+), 24 deletions(-) diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el index 213ab43184f..ee2e77480d5 100644 --- a/lisp/emacs-lisp/checkdoc.el +++ b/lisp/emacs-lisp/checkdoc.el @@ -931,35 +931,20 @@ don't move point." ;; Don't bug out if the file is empty (or a ;; definition ends prematurely. (end-of-file))) - (`(,(or 'defun 'defvar 'defcustom 'defmacro 'defconst 'defsubst 'defadvice - 'cl-defun 'cl-defgeneric 'cl-defmacro) + (`(,(and (pred symbolp) def + (let (and doc (guard doc)) (function-get def 'doc-string-elt))) ,(pred symbolp) ;; Require an initializer, i.e. ignore single-argument `defvar' ;; forms, which never have a doc string. ,_ . ,_) (down-list) - ;; Skip over function or macro name, symbol to be defined, and - ;; initializer or argument list. - (forward-sexp 3) - (skip-chars-forward " \n\t") - t) - (`(,'cl-defmethod - ,(pred symbolp) - . ,rest) - (down-list) - (forward-sexp (pcase (car rest) - ;; No qualifier, so skip like we would have skipped in - ;; the first clause of the outer `pcase'. - ((pred listp) 3) - (':extra - ;; Skip the :extra qualifier together with its string too. - ;; Skip any additional qualifier. - (if (memq (nth 2 rest) '(:around :before :after)) - 6 - 5)) - ;; Skip :before, :after or :around qualifier too. - ((or ':around ':before ':after) - 4))) + ;; Skip over function or macro name. + (forward-sexp 1) + ;; And now skip until the docstring. + (forward-sexp (1- ; We already skipped the function or macro name. + (cond + ((numberp doc) doc) + ((functionp doc) (funcall doc))))) (skip-chars-forward " \n\t") t))) -- 2.39.2