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

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

[elpa] externals/org 7a14d60 1/2: Fix element property queries for inlin


From: ELPA Syncer
Subject: [elpa] externals/org 7a14d60 1/2: Fix element property queries for inlinetasks
Date: Mon, 22 Nov 2021 06:57:24 -0500 (EST)

branch: externals/org
commit 7a14d6035cdaa135671695fced8431aa26cb5e9d
Author: Ihor Radchenko <yantar92@gmail.com>
Commit: Ihor Radchenko <yantar92@gmail.com>

    Fix element property queries for inlinetasks
    
    * lisp/org.el (org-get-tags): Do not ignore local tags in inlinetasks.
    (org-in-commented-heading-p): Do not ignore commented inlinetasks.
    * testing/lisp/test-org.el (test-org/get-tags): Add tests for
    inlinetasks.
    
    Fixes 
https://list.orgmode.org/CAKJdtO8-KkVvhcviTqhi+DMZmSK=o37jn1jJPM9qxcuXZPnGgw@mail.gmail.com/T/#u
---
 lisp/org.el              | 56 ++++++++++++++++++++++++------------------------
 testing/lisp/test-org.el | 13 +++++++++++
 2 files changed, 41 insertions(+), 28 deletions(-)

diff --git a/lisp/org.el b/lisp/org.el
index 331bd9f..df3d139 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -12629,34 +12629,34 @@ Inherited tags have the `inherited' text property."
              (not local))
         org-scanner-tags
       (org-with-point-at (unless (org-element-type pos-or-element)
-                           (or pos-or-element (point)))
-        (unless (and (not (org-element-type pos-or-element))
-                     (org-before-first-heading-p))
-          (unless (org-element-type pos-or-element) (org-back-to-heading t))
-          (let ((ltags (if (org-element-type pos-or-element)
-                           (org-element-property :tags (org-element-lineage 
pos-or-element '(headline) t))
-                         (org--get-local-tags)))
-                itags)
-            (if (or local (not org-use-tag-inheritance)) ltags
-              (let ((cached (and (org-element--cache-active-p)
-                                 (if (org-element-type pos-or-element)
-                                     (org-element-lineage pos-or-element 
'(headline) t)
-                                   (org-element-at-point nil 'cached)))))
-                (if cached
-                    (while (setq cached (org-element-property :parent cached))
-                      (setq itags (nconc (mapcar #'org-add-prop-inherited
-                                                 ;; If we do not wrap result 
into `cl-copy-list', reference would
-                                                 ;; be returned and cache 
element might be modified directly.
-                                                 (cl-copy-list 
(org-element-property :tags cached)))
-                                         itags)))
-                  (while (org-up-heading-safe)
+                        (or pos-or-element (point)))
+        (unless (or (org-element-type pos-or-element)
+                    (org-before-first-heading-p))
+          (org-back-to-heading t))
+        (let ((ltags (if (org-element-type pos-or-element)
+                         (org-element-property :tags (org-element-lineage 
pos-or-element '(headline inlinetask) t))
+                       (org--get-local-tags)))
+              itags)
+          (if (or local (not org-use-tag-inheritance)) ltags
+            (let ((cached (and (org-element--cache-active-p)
+                               (if (org-element-type pos-or-element)
+                                   (org-element-lineage pos-or-element 
'(headline org-data inlinetask) t)
+                                 (org-element-at-point nil 'cached)))))
+              (if cached
+                  (while (setq cached (org-element-property :parent cached))
                     (setq itags (nconc (mapcar #'org-add-prop-inherited
-                                              (org--get-local-tags))
-                                      itags)))))
-              (setq itags (append org-file-tags itags))
-              (nreverse
-              (delete-dups
-               (nreverse (nconc (org-remove-uninherited-tags itags) 
ltags)))))))))))
+                                               ;; If we do not wrap result 
into `cl-copy-list', reference would
+                                               ;; be returned and cache 
element might be modified directly.
+                                               (cl-copy-list 
(org-element-property :tags cached)))
+                                       itags)))
+                (while (org-up-heading-safe)
+                  (setq itags (nconc (mapcar #'org-add-prop-inherited
+                                            (org--get-local-tags))
+                                    itags)))))
+            (setq itags (append org-file-tags itags))
+            (nreverse
+            (delete-dups
+             (nreverse (nconc (org-remove-uninherited-tags itags) 
ltags))))))))))
 
 (defun org-get-buffer-tags ()
   "Get a table of all tags used in the buffer, for completion."
@@ -20735,7 +20735,7 @@ Optional argument ELEMENT contains element at point."
     (let ((el (or element (org-element-at-point nil 'cached))))
       (if el
           (catch :found
-            (setq el (org-element-lineage el '(headline) 'include-self))
+            (setq el (org-element-lineage el '(headline inlinetask) 
'include-self))
             (if no-inheritance
                 (org-element-property :commentedp el)
               (while el
diff --git a/testing/lisp/test-org.el b/testing/lisp/test-org.el
index 5838b19..73e9afc 100644
--- a/testing/lisp/test-org.el
+++ b/testing/lisp/test-org.el
@@ -6788,6 +6788,19 @@ Paragraph<point>"
   (should
    (equal '("foo" "bar")
          (org-test-with-temp-text "* Test :foo:bar:" (org-get-tags))))
+  ;; Tags for inlinetasks.
+  (should
+   (equal '("foo" "bar")
+          (progn
+            (require 'org-inlinetask)
+            (org-test-with-temp-text (concat (make-string 
org-inlinetask-min-level ?*) " Test :foo:bar:")
+              (org-get-tags (org-element-at-point))))))
+  (should
+   (equal '("foo" "bar")
+          (progn
+            (require 'org-inlinetask)
+            (org-test-with-temp-text (concat (make-string 
org-inlinetask-min-level ?*) " Test :foo:bar:")
+              (org-get-tags nil)))))
   ;; Return nil when there is no tag.
   (should-not
    (org-test-with-temp-text "* Test" (org-get-tags)))



reply via email to

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