forked from mirrors/org-mode
Ensure that org-get-tags returns all local tags
* lisp/org.el: (org-get-tags) Create a clearer separation between local and inherited tags in the function, so that org-remove-uninherited tags is only run on inherited tags. This is important to avoid destroying existing tags when adding new tags. * testing/lisp/test-org.el: (test-org/get-tags) Add regression test
This commit is contained in:
parent
ab1f7712de
commit
5e27b2fd32
15
lisp/org.el
15
lisp/org.el
|
@ -14722,14 +14722,15 @@ Inherited tags have the `inherited' text property."
|
|||
(org-with-point-at (or pos (point))
|
||||
(unless (org-before-first-heading-p)
|
||||
(org-back-to-heading t)
|
||||
(let ((tags (org--get-local-tags)))
|
||||
(if (or local (not org-use-tag-inheritance)) tags
|
||||
(let ((ltags (org--get-local-tags)) itags)
|
||||
(if (or local (not org-use-tag-inheritance)) ltags
|
||||
(setq itags org-file-tags)
|
||||
(while (org-up-heading-safe)
|
||||
(setq tags (append (mapcar #'org-add-prop-inherited
|
||||
(org--get-local-tags))
|
||||
tags)))
|
||||
(org-remove-uninherited-tags
|
||||
(delete-dups (append org-file-tags tags)))))))))
|
||||
(setq itags (append (mapcar #'org-add-prop-inherited
|
||||
(org--get-local-tags))
|
||||
itags)))
|
||||
(delete-dups
|
||||
(append (org-remove-uninherited-tags itags) ltags))))))))
|
||||
|
||||
(defun org-get-buffer-tags ()
|
||||
"Get a table of all tags used in the buffer, for completion."
|
||||
|
|
|
@ -6190,6 +6190,13 @@ Paragraph<point>"
|
|||
(equal '("foo")
|
||||
(org-test-with-temp-text "* H1 :foo:\n* <point>H2 :bar:"
|
||||
(org-get-tags 1))))
|
||||
;; Make sure tags excluded from inheritance are returned if local
|
||||
(should
|
||||
(equal '("foo")
|
||||
(org-test-with-temp-text "* Test :foo:"
|
||||
(let ((org-use-tag-inheritance t)
|
||||
(org-tags-exclude-from-inheritance '("foo")))
|
||||
(org-get-tags)))))
|
||||
;; Pathological case: tagged headline with an empty body.
|
||||
(should (org-test-with-temp-text "* :tag:" (org-get-tags))))
|
||||
|
||||
|
|
Loading…
Reference in New Issue