summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
authorMauro Aranda <maurooaranda@gmail.com>2021-03-08 08:11:38 -0300
committerMauro Aranda <maurooaranda@gmail.com>2021-03-08 08:12:23 -0300
commita01166562cec3f97e722b627cf5db8ef49338cde (patch)
tree4321c27e68cec628a7740d49a38bc2a0b4c06149 /lisp/emacs-lisp
parent11d3af3c7b9dc5a2910807d311168fb82d962d0d (diff)
downloademacs-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')
-rw-r--r--lisp/emacs-lisp/checkdoc.el33
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)))