diff options
author | Mauro Aranda <maurooaranda@gmail.com> | 2021-03-08 08:11:38 -0300 |
---|---|---|
committer | Mauro Aranda <maurooaranda@gmail.com> | 2021-03-08 08:12:23 -0300 |
commit | a01166562cec3f97e722b627cf5db8ef49338cde (patch) | |
tree | 4321c27e68cec628a7740d49a38bc2a0b4c06149 /lisp/emacs-lisp/checkdoc.el | |
parent | 11d3af3c7b9dc5a2910807d311168fb82d962d0d (diff) | |
download | emacs-a01166562cec3f97e722b627cf5db8ef49338cde.tar.gz emacs-a01166562cec3f97e722b627cf5db8ef49338cde.tar.bz2 emacs-a01166562cec3f97e722b627cf5db8ef49338cde.zip |
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.
Diffstat (limited to 'lisp/emacs-lisp/checkdoc.el')
-rw-r--r-- | lisp/emacs-lisp/checkdoc.el | 33 |
1 files 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))) |