浏览代码

Fix sloppiness when collecting keywords

* lisp/org.el (org--collect-keywords-1): Use an accurate
function instead of an approximation. Accuracy trumps speed when parsing.
* testing/lisp/test-org.el (test-org/collect-keywords): New test.
Nicolas Goaziou 3 年之前
父节点
当前提交
d3143feaf7
共有 2 个文件被更改,包括 6 次插入1 次删除
  1. 1 1
      lisp/org.el
  2. 5 0
      testing/lisp/test-org.el

+ 1 - 1
lisp/org.el

@@ -4544,7 +4544,7 @@ directory."
     (let ((case-fold-search t)
 	  (regexp (org-make-options-regexp keywords)))
       (while (and keywords (re-search-forward regexp nil t))
-        (let ((element (org-with-point-at (match-beginning 0) (org-element-keyword-parser (line-end-position) (list (match-beginning 0))))))
+        (let ((element (org-element-at-point)))
           (when (eq 'keyword (org-element-type element))
             (let ((value (org-element-property :value element)))
               (pcase (org-element-property :key element)

+ 5 - 0
testing/lisp/test-org.el

@@ -2648,6 +2648,11 @@ SCHEDULED: <2014-03-04 tue.>"
 	    (org-mode-restart)
 	    (cdr (assoc "a" org-keyword-properties))))))
 
+(ert-deftest test-org/collect-keywords ()
+  "Test `org-collect-keywords'."
+  (should-not
+   (org-test-with-temp-text "#+begin_example\n#+foo: bar\n#+end_example"
+     (org-collect-keywords '("FOO")))))
 
 
 ;;; Links