]> git.eshelyaron.com Git - emacs.git/commitdiff
checkdoc: Avoid false positive for keybinding in docstring
authorStefan Kangas <stefankangas@gmail.com>
Sun, 24 Dec 2023 13:27:48 +0000 (14:27 +0100)
committerStefan Kangas <stefankangas@gmail.com>
Sun, 24 Dec 2023 13:27:48 +0000 (14:27 +0100)
* lisp/emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine):
Avoid false positive when a variable contains a keybinding (for
example, "C-g").  (Bug#68002)
* test/lisp/emacs-lisp/checkdoc-tests.el
(checkdoc-docstring-avoid-false-positive-ok): New test.

lisp/emacs-lisp/checkdoc.el
test/lisp/emacs-lisp/checkdoc-tests.el

index 471a2fbdf48eab9408807f14ddfc3b8bc7239510..dd7cfd82b1d49acb36b24d4a0a09b4cd60181a46 100644 (file)
@@ -1611,8 +1611,11 @@ may require more formatting")
        (let ((f nil) (m nil) (start (point))
              ;; Ignore the "A-" modifier: it is uncommon in practice,
              ;; and leads to false positives in regexp ranges.
-             (re "[^`‘A-Za-z0-9_]\\([CMs]-[a-zA-Z]\\|\\(\\([CMs]-\\)?\
-mouse-[0-3]\\)\\)\\>"))
+             (re (rx (not (any "0-9A-Za-z_`‘-"))
+                     (group (or (seq (any "CMs") "-" (any "A-Za-z"))
+                                (group (opt (group (any "CMs") "-"))
+                                       "mouse-" (any "0-3"))))
+                     eow)))
         ;; Find the first key sequence not in a sample
         (while (and (not f) (setq m (re-search-forward re e t)))
           (setq f (not (checkdoc-in-sample-code-p start e))))
index 57694bd424b713bac673979ea09e1fd053587ebe..242e41c7f0817941e1e83d7b0b77800b0d86a7a8 100644 (file)
     (insert "(defun foo())")
     (should-error (checkdoc-defun) :type 'user-error)))
 
+(ert-deftest checkdoc-docstring-avoid-false-positive-ok ()
+  "Check that Bug#68002 is fixed."
+  (with-temp-buffer
+    (emacs-lisp-mode)
+    (insert "(defvar org-element--cache-interrupt-C-g-count 0
+  \"Current number of `org-element--cache-sync' calls.
+See `org-element--cache-interrupt-C-g'.\")")
+    (checkdoc-defun)))
+
 (ert-deftest checkdoc-cl-defmethod-ok ()
   "Checkdoc should be happy with a simple correct cl-defmethod."
   (with-temp-buffer