emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/org 1db301a 4/4: element: Drop `org-end-of-subtree' use


From: ELPA Syncer
Subject: [elpa] externals/org 1db301a 4/4: element: Drop `org-end-of-subtree' use
Date: Sat, 20 Nov 2021 13:57:26 -0500 (EST)

branch: externals/org
commit 1db301a758c8bb6bf0160702368d6b47384b5e43
Author: Nicolas Goaziou <mail@nicolasgoaziou.fr>
Commit: Nicolas Goaziou <mail@nicolasgoaziou.fr>

    element: Drop `org-end-of-subtree' use
    
    * lisp/org-element.el (org-element-headline-parser): Implement
    a simple end of subtree search instead of relying on
    `org-end-of-subtree'.
---
 lisp/org-element.el | 24 ++++++++++--------------
 1 file changed, 10 insertions(+), 14 deletions(-)

diff --git a/lisp/org-element.el b/lisp/org-element.el
index 4ffc15e..ba43eca 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -72,7 +72,6 @@
 (require 'org-table)
 
 (declare-function org-at-heading-p "org" (&optional _))
-(declare-function org-end-of-subtree "org" (&optional invisible-ok to-heading))
 (declare-function org-escape-code-in-string "org-src" (s))
 (declare-function org-macro-escape-arguments "org-macro" (&rest args))
 (declare-function org-macro-extract-arguments "org-macro" (s))
@@ -1090,8 +1089,9 @@ parsed as a secondary string, but as a plain string 
instead.
 Assume point is at beginning of the headline."
   (save-excursion
     (let* ((begin (point))
-          (level (prog1 (org-reduced-level (skip-chars-forward "*"))
-                   (skip-chars-forward " \t")))
+           (true-level (prog1 (skip-chars-forward "*")
+                         (skip-chars-forward " \t")))
+          (level (org-reduced-level true-level))
           (todo (and org-todo-regexp
                      (let (case-fold-search) (looking-at (concat 
org-todo-regexp " ")))
                      (progn (goto-char (match-end 0))
@@ -1124,17 +1124,13 @@ Assume point is at beginning of the headline."
                                    (string= org-footnote-section raw-value)))
           (standard-props (org-element--get-node-properties))
           (time-props (org-element--get-time-properties))
-          (end (save-excursion
-                  ;; Make sure that `org-end-of-subtree' does not try
-                  ;; to use cache.  The headline parser might be
-                  ;; called in the midst of cache processing.
-                  ;; FIXME: We cannot simply bind `org-element-use-cache' here
-                  ;; because apparently some magic related to lexical
-                  ;; scoping prevents `org-element--cache-active-p' call inside
-                  ;; `org-end-of-subtree' to use the overridden value
-                  ;; of `org-element-use-cache'.
-                  (org-element-with-disabled-cache
-                      (org-end-of-subtree t t))))
+          (end
+            (save-excursion
+              (let ((re (rx-to-string
+                         `(seq line-start (** 1 ,true-level "*") " "))))
+                (if (re-search-forward re nil t)
+                    (line-beginning-position)
+                  (point-max)))))
           (contents-begin (save-excursion
                             (forward-line)
                             (skip-chars-forward " \r\t\n" end)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]