Re: [BUG] org-element-cache: The inherited property is set wrong

2022-01-21 Thread Ihor Radchenko
Kaushal Modi  writes:

> I have also been seeing some issues when adding/modidying heading tags
> (C-c C-q), and I was able to narrow it down to the element caching
> mechanism.
>
> Issue: Org mode/Emacs hangs kind of indefinitely when I do C-c C-q,
> but that doesn't happen each time.
>
> Once I set org-element-use-cache to nil, Emacs stopped hanging.
>
> Looking at your bug report, I believe that the issue I am seeing with
> cache and Org tags could be very much related. So thanks for
> submitting this.

The issue here had nothing to do with hanging. You are probably seeing
yet another bug.

By hang, do you mean that even C-g does not restore responsiveness?

Best,
Ihor



Re: [BUG] org-element-cache: The inherited property is set wrong

2022-01-21 Thread Ihor Radchenko
Anders Johansson  writes:

>> I don’t know if this is the best solution though.
>> Perhaps this is needed also in org--get-local-tags where a similar
>> thing is done? (but only the fontification seems to matter there)
>
> I now noted that this differed in Ihor's org-fold-universal-core
> branch which I use and main (org-get-tags has an extra argument
> fontify for org-fold). But I believe the caching issue is relevant on
> both branches (and in either case a topic for Ihor).

Yep, it is a common bug. I have also fixed the issue in my branch now.

By the way, I am almost done with preparing merge for org-fold. Once I
figure out an issue with pixel string-width in older Emacs, it should be
properly ready to be merged(;

Best,
Ihor



Re: [BUG] org-element-cache: The inherited property is set wrong

2022-01-21 Thread Ihor Radchenko
Anders Johansson  writes:

> Hi,
> I had some trouble with completing tags, where the already set tags
> were wrongly identified. I have dug this down to a problem with
> caching.
>
> with org-element-use-cache=t and org-use-tag-inheritance=t
> --- Org
> * headline 1 :tag1:
> ** headline 2 :tag2:
> --- end org
>
> ...
> A solution that seems to work for me was to change
>  (cl-copy-list cached-tags)
> to
> (mapcar #'copy-sequence cached-tags)

Fixed.

Thanks for the detailed analysis and the solution! I have seen this bug
myself in the past, but was not able to reproduce reliably.

Best,
Ihor



Re: [BUG] org-element-cache: The inherited property is set wrong

2022-01-20 Thread Kaushal Modi
Hi Anders,

I have also been seeing some issues when adding/modidying heading tags
(C-c C-q), and I was able to narrow it down to the element caching
mechanism.

Issue: Org mode/Emacs hangs kind of indefinitely when I do C-c C-q,
but that doesn't happen each time.

Once I set org-element-use-cache to nil, Emacs stopped hanging.

Looking at your bug report, I believe that the issue I am seeing with
cache and Org tags could be very much related. So thanks for
submitting this.

--
Kaushal Modi



Re: [BUG] org-element-cache: The inherited property is set wrong

2022-01-20 Thread Anders Johansson
> I don’t know if this is the best solution though.
> Perhaps this is needed also in org--get-local-tags where a similar
> thing is done? (but only the fontification seems to matter there)

I now noted that this differed in Ihor's org-fold-universal-core
branch which I use and main (org-get-tags has an extra argument
fontify for org-fold). But I believe the caching issue is relevant on
both branches (and in either case a topic for Ihor).

Best,
Anders



[BUG] org-element-cache: The inherited property is set wrong

2022-01-20 Thread Anders Johansson
Hi,
I had some trouble with completing tags, where the already set tags
were wrongly identified. I have dug this down to a problem with
caching.

with org-element-use-cache=t and org-use-tag-inheritance=t
--- Org
* headline 1 :tag1:
** headline 2 :tag2:
--- end org

When invoking org-set-tags-command (and quitting),  on headline 1,
then headline 2, then headline 1 again, "tag1" is no longer shown as
one of the existing tags in the minibuffer. This is because it has
erronously been assigned an :inherited property in the
cache-representation for headline 1 when inherited tags were
calculated for headline 2. This happens in org-get-tags, where
inherited tags are parsed from the cache and given the :inherited
property, but unfortunately this is done to the same string objects,
so that this property is added in the cache tree both for the taglist
of headline 1 and headline 2.

(cl-copy-list cached-tags) is used there, but only copies the list and
not the string objects.

A solution that seems to work for me was to change
 (cl-copy-list cached-tags)
to
(mapcar #'copy-sequence cached-tags)

(found it here: https://stackoverflow.com/a/47794586)

I don’t know if this is the best solution though.
Perhaps this is needed also in org--get-local-tags where a similar
thing is done? (but only the fontification seems to matter there)


Best,
Anders Johansson (who is otherwise as mentioned in an earlier
discussion very appreciative of org-element-cache)