Jelajahi Sumber

org-element: Fix interpretation as todo kwd when prefix of headline

* lisp/org-element.el (org-element-headline-parser): Check for space
  after todo-kwd.
* testing/lisp/test-org-element.el (test-org-element/headline-todo-keyword):
  Respective tests.
Marco Wahl 7 tahun lalu
induk
melakukan
2b76aebfc6
2 mengubah file dengan 13 tambahan dan 2 penghapusan
  1. 2 2
      lisp/org-element.el
  2. 11 0
      testing/lisp/test-org-element.el

+ 2 - 2
lisp/org-element.el

@@ -931,10 +931,10 @@ Assume point is at beginning of the headline."
 	   (level (prog1 (org-reduced-level (skip-chars-forward "*"))
 		    (skip-chars-forward " \t")))
 	   (todo (and org-todo-regexp
-		      (let (case-fold-search) (looking-at org-todo-regexp))
+		      (let (case-fold-search) (looking-at (concat org-todo-regexp " ")))
 		      (progn (goto-char (match-end 0))
 			     (skip-chars-forward " \t")
-			     (match-string 0))))
+			     (match-string 1))))
 	   (todo-type
 	    (and todo (if (member todo org-done-keywords) 'done 'todo)))
 	   (priority (and (looking-at "\\[#.\\][ \t]*")

+ 11 - 0
testing/lisp/test-org-element.el

@@ -1014,6 +1014,17 @@ Some other text
 
 ;;;; Headline
 
+(ert-deftest test-org-element/headline-todo-keyword ()
+  "Test todo keyword recognition."
+  ;; Reference test.
+  (org-test-with-temp-text "* TODO Headline"
+    (let ((org-todo-keywords '((sequence "TODO" "DONE"))))
+      (should (org-element-property :todo-keyword (org-element-at-point)))))
+  ;; Todo keyword is prefix of headlines first word.
+  (org-test-with-temp-text "* TODOHeadline"
+    (let ((org-todo-keywords '((sequence "TODO" "DONE"))))
+      (should-not (org-element-property :todo-keyword (org-element-at-point))))))
+
 (ert-deftest test-org-element/headline-comment-keyword ()
   "Test COMMENT keyword recognition."
   ;; Reference test.