emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Bug: Matching tags: results incomplete when mixing group tags and their ancestors [9.1.7 (9.1.7-12-g74f6ed-elpaplus @ /home/martin/.emacs.d/elpa/org-plus-contrib-20180305/)]
@ 2018-03-12  7:31 Martin Kampas
  2018-03-15 14:44 ` Martin Kampas
  0 siblings, 1 reply; 6+ messages in thread
From: Martin Kampas @ 2018-03-12  7:31 UTC (permalink / raw)
  To: emacs-orgmode

Hi,

Here is an example Org file:

------------
#+TAGS: [ tag1 : tag2 ] [ tag2 : tag3 ] [ tag3 : tag4 ]
* Tag1           :tag1:
* Tag2           :tag2:
* Tag3           :tag3:
* Tag4           :tag4:
------------

Searching headlines by tags works well unless you combine a group tag together with some of its ancestor tags in the query.

1) GOOD - Searching for "tag1" marks all four headlines.
2) GOOD - Searching for "tag3" marks headlines "Tag3" and "Tag4".
3) BAD - Searching for "tag1+tag3" marks just headline "Tag3" providing an incomplete result. Expected result: headlines "Tag3" and "Tag4" are marked.

With more complex tag set it may happen quite easily that such a search is done.

The bug seems to be in org-tags-expand.

(org-tags-expand "tag1")
#("{\\<\\(?:tag[1-4]\\)\\>}" 0 20 (grouptag t))
(org-tags-expand "tag3")
#("{\\<\\(?:tag[34]\\)\\>}" 0 19 (grouptag t))
(org-tags-expand "tag1+tag3")
#("{\\<\\(?:tag[1-4]\\)\\>}+tag3" 0 20 (grouptag t))

In the third invocation "tag3" was left unexpanded.

Best regards,
Martin


Emacs  : GNU Emacs 25.3.1 (x86_64-pc-linux-gnu, GTK+ Version 3.22.26)
 of 2018-02-09
Package: Org mode version 9.1.7 (9.1.7-12-g74f6ed-elpaplus @ /home/martin/.emacs.d/elpa/org-plus-contrib-20180305/)

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Bug: Matching tags: results incomplete when mixing group tags and their ancestors [9.1.7 (9.1.7-12-g74f6ed-elpaplus @ /home/martin/.emacs.d/elpa/org-plus-contrib-20180305/)]
  2018-03-12  7:31 Bug: Matching tags: results incomplete when mixing group tags and their ancestors [9.1.7 (9.1.7-12-g74f6ed-elpaplus @ /home/martin/.emacs.d/elpa/org-plus-contrib-20180305/)] Martin Kampas
@ 2018-03-15 14:44 ` Martin Kampas
  2018-03-16 22:05   ` Nicolas Goaziou
  2018-03-21  1:14   ` Bastien
  0 siblings, 2 replies; 6+ messages in thread
From: Martin Kampas @ 2018-03-15 14:44 UTC (permalink / raw)
  To: emacs-orgmode

Hi,

This seems to fix the bug.

Best Regards,
Martin

From fef860e356a4ca75366f69ec9c2d52252c9d7d3f Mon Sep 17 00:00:00 2001
From: Martin Kampas <martin.kampas@hidden>
Date: Thu, 15 Mar 2018 15:41:53 +0100
Subject: [PATCH] Fix matching tags when mixing group tags and their ancestors

* lisp/org.el (org-expand-tags): Fix recursion stop condition

See http://lists.gnu.org/r/emacs-orgmode/2018-03/msg00228.html
---
 lisp/org.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lisp/org.el b/lisp/org.el
index 76bc60c88..7bf013390 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -13960,7 +13960,7 @@ When DOWNCASE is non-nil, expand downcased TAGS."
 		 (tag (match-string 2 return-match))
 		 (tag (if downcased (downcase tag) tag)))
 	    (unless (or (get-text-property 0 'grouptag (match-string 2 return-
match))
-		        (member tag work-already-expanded))
+		        (member tag tags-already-expanded))
 	      (setq tags-in-group (assoc tag taggroups))
 	      (push tag work-already-expanded)
 	      ;; Recursively expand each tag in the group, if the tag hasn't
-- 
2.16.2

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: Bug: Matching tags: results incomplete when mixing group tags and their ancestors [9.1.7 (9.1.7-12-g74f6ed-elpaplus @ /home/martin/.emacs.d/elpa/org-plus-contrib-20180305/)]
  2018-03-15 14:44 ` Martin Kampas
@ 2018-03-16 22:05   ` Nicolas Goaziou
  2018-03-21  1:14   ` Bastien
  1 sibling, 0 replies; 6+ messages in thread
From: Nicolas Goaziou @ 2018-03-16 22:05 UTC (permalink / raw)
  To: Martin Kampas; +Cc: emacs-orgmode

Hello,

Martin Kampas <martin.kampas@ubedi.net> writes:

> This seems to fix the bug.

Thank you. Would you mind also providing a couple of tests for that?

Regards,

-- 
Nicolas Goaziou

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Bug: Matching tags: results incomplete when mixing group tags and their ancestors [9.1.7 (9.1.7-12-g74f6ed-elpaplus @ /home/martin/.emacs.d/elpa/org-plus-contrib-20180305/)]
  2018-03-15 14:44 ` Martin Kampas
  2018-03-16 22:05   ` Nicolas Goaziou
@ 2018-03-21  1:14   ` Bastien
  2018-03-22  5:32     ` Martin Kampas
  1 sibling, 1 reply; 6+ messages in thread
From: Bastien @ 2018-03-21  1:14 UTC (permalink / raw)
  To: Martin Kampas; +Cc: emacs-orgmode

Hi Martin,

Martin Kampas <martin.kampas@ubedi.net> writes:

> This seems to fix the bug.

I applied the patch, thanks!  If you have time to add tests,
that'd be great, as Nicolas suggested.

Best,

-- 
 Bastien

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Bug: Matching tags: results incomplete when mixing group tags and their ancestors [9.1.7 (9.1.7-12-g74f6ed-elpaplus @ /home/martin/.emacs.d/elpa/org-plus-contrib-20180305/)]
  2018-03-21  1:14   ` Bastien
@ 2018-03-22  5:32     ` Martin Kampas
  2018-03-22  8:22       ` Bastien Guerry
  0 siblings, 1 reply; 6+ messages in thread
From: Martin Kampas @ 2018-03-22  5:32 UTC (permalink / raw)
  To: Bastien; +Cc: emacs-orgmode

Hi Bastien,

> If you have time to add tests, that'd be great, as Nicolas suggested.

Here you are.

Best Regards,
Martin

From bd8059e18fa3bd2977415449139fc626d03817a3 Mon Sep 17 00:00:00 2001
From: Martin Kampas <martin.kampas@hidden>
Date: Thu, 22 Mar 2018 06:20:31 +0100
Subject: [PATCH] Extend match-sparse-tree test for tag hierarchies

* test-org.el (test-org/match-sparse-tree): Extend test after commit
894ec00 (org.el: Fix recursion stop condition when expanding tags).
---
 testing/lisp/test-org.el | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/testing/lisp/test-org.el b/testing/lisp/test-org.el
index e97dfe775..8d8b36f86 100644
--- a/testing/lisp/test-org.el
+++ b/testing/lisp/test-org.el
@@ -5765,6 +5765,15 @@ Paragraph<point>"
      (org-match-sparse-tree nil "Lev_1")
      (search-forward "H4")
      (org-invisible-p2)))
+  (should-not
+   (org-test-with-temp-text
+       "#+TAGS: [ Lev_1 : Lev_2 ]\n
+#+TAGS: [ Lev_2 : Lev_3 ]\n
+#+TAGS: { Lev_3 : Lev_4 }\n
+* H\n** H1 :Lev_1:\n** H2 :Lev_2:\n** H3 :Lev_3:\n** H4 :Lev_4:"
+     (org-match-sparse-tree nil "Lev_1+Lev_3")
+     (search-forward "H4")
+     (org-invisible-p2)))
   ;; Match regular expressions in tags
   (should-not
    (org-test-with-temp-text
-- 
2.16.2

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: Bug: Matching tags: results incomplete when mixing group tags and their ancestors [9.1.7 (9.1.7-12-g74f6ed-elpaplus @ /home/martin/.emacs.d/elpa/org-plus-contrib-20180305/)]
  2018-03-22  5:32     ` Martin Kampas
@ 2018-03-22  8:22       ` Bastien Guerry
  0 siblings, 0 replies; 6+ messages in thread
From: Bastien Guerry @ 2018-03-22  8:22 UTC (permalink / raw)
  To: Martin Kampas; +Cc: emacs-orgmode

Hi Martin,

applied with a slight change in the changelog message, as we
ought to avoid commit references there.  Such references are
fine at the bottom of the message though.

Thanks!

-- 
 Bastien

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2018-03-22  8:22 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-12  7:31 Bug: Matching tags: results incomplete when mixing group tags and their ancestors [9.1.7 (9.1.7-12-g74f6ed-elpaplus @ /home/martin/.emacs.d/elpa/org-plus-contrib-20180305/)] Martin Kampas
2018-03-15 14:44 ` Martin Kampas
2018-03-16 22:05   ` Nicolas Goaziou
2018-03-21  1:14   ` Bastien
2018-03-22  5:32     ` Martin Kampas
2018-03-22  8:22       ` Bastien Guerry

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).