Re: Recent folding issues

2022-07-23 Thread Jack Kamm
Ihor Radchenko  writes:

> Thanks for another detailed report!
> Fixed on main via 39005dc09.
>
> Let me know if you notice any other inconsistencies.

Thanks very much Ihor! Much appreciated :)

I'll let you know if I notice any other issues -- everything seems to be 
working well so far.

Best,
Jack



Re: Recent folding issues

2022-07-19 Thread Ihor Radchenko
Jack Kamm  writes:

> If I put the cursor on Headline 1 and call evil-open-below, I don't
> immediately see a new line, and the buffer looks as above, but with the
> pointer "inside" the elipses. As soon as I start typing, it will unfold
> the last subheading of Headline 1, and the buffer looks like this after
> I finished typing:
>
>> * Headline 1
>> *** Headline 1b1
>>
>> Stuff
>>
>> * New typing here
>> * Headline 2
>
> And also I got the message:
>
>> org-fold-check-before-invisible-edit--text-properties: Edit in invisible 
>> region aborted, repeat to confirm with text visible
>
> Whereas with org-fold-core-style set to "overlays", I get the old
> behavior -- after typing "o" on Headline 1, I see this:
>
>> * Headline 1...
>>  
>> * Headline 2
>
> With the pointer on the new line, and after typing I see:
>
>> * Headline 1...
>> * New typing here 
>> * Headline 2

Thanks for another detailed report!
Fixed on main via 39005dc09.

Let me know if you notice any other inconsistencies.
For clarity, this particular change had been tested for over a year
before it was merged.

Best,
Ihor



Re: Recent folding issues

2022-07-14 Thread Ihor Radchenko
Jack Kamm  writes:

>> Can you try the attached patch set?
>
> Thanks for the very prompt patchset!
>
> Testing on the minimal example, the patchset solves the problem I
> reported.
>
> After some brief testing with my usual config, it solves the problem of
> headlines running together after capture, and also solves the problem of
> unfolding the above headline when calling evil-open-above (vim's "O"
> key).

Thanks for testing!
Applied onto main via a79a742cb, f29ccf316, and 8e2fed82e.

I haven't looked into the other problem yet. Too tired today.

Best,
Ihor



Re: Recent folding issues

2022-07-13 Thread Jack Kamm
Hi Ihor,

> Can you try the attached patch set?

Thanks for the very prompt patchset!

Testing on the minimal example, the patchset solves the problem I
reported.

After some brief testing with my usual config, it solves the problem of
headlines running together after capture, and also solves the problem of
unfolding the above headline when calling evil-open-above (vim's "O"
key).

I'm still having some issues with evil-open-below (vim's "o" key). I
don't have a minimal config for this yet -- it requires the 3rd party
package evil, and I'm not sure if emacs has a built-in equivalent to
evil-open-below. But here's a description of what I observe.

Suppose I have an org file like this:

> * Headline 1
> ** Headline 1a
> ** Headline 1b
> *** Headline 1b1
> 
> Stuff
> 
> * Headline 2

Then I collapse the buffer to look like this:

> * Headline 1...
> * Headline 2

If I put the cursor on Headline 1 and call evil-open-below, I don't
immediately see a new line, and the buffer looks as above, but with the
pointer "inside" the elipses. As soon as I start typing, it will unfold
the last subheading of Headline 1, and the buffer looks like this after
I finished typing:

> * Headline 1
> *** Headline 1b1
>
> Stuff
>
> * New typing here
> * Headline 2

And also I got the message:

> org-fold-check-before-invisible-edit--text-properties: Edit in invisible 
> region aborted, repeat to confirm with text visible

Whereas with org-fold-core-style set to "overlays", I get the old
behavior -- after typing "o" on Headline 1, I see this:

> * Headline 1...
>  
> * Headline 2

With the pointer on the new line, and after typing I see:

> * Headline 1...
> * New typing here 
> * Headline 2



Re: Recent folding issues

2022-07-12 Thread Ihor Radchenko
Jack Kamm  writes:

>> I cannot reproduce. Please, update your Org to the latest version, try
>> to reproduce, and provide the detailed steps required to obtain the
>> confusing behaviour you are seeing.
>
> I attach a couple files for a minimal reproducible example of both
> issues.
>
> Steps to reproduce:

Thanks!
Can you try the attached patch set?

Best,
Ihor

>From a79a742cbff01b7815cffba806c28ea45a4da63c Mon Sep 17 00:00:00 2001
Message-Id: 
From: Ihor Radchenko 
Date: Tue, 12 Jul 2022 15:05:45 +0800
Subject: [PATCH 1/3] Revert "org.el: Improve performance of deletion commands"

This reverts commit 46df681336c83c826b367d2803f59560165bdeba.

The optimization broke folding fragility checks.
---
 lisp/org.el | 74 ++---
 1 file changed, 36 insertions(+), 38 deletions(-)

diff --git a/lisp/org.el b/lisp/org.el
index 3d4de5b4f..d85b5818e 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -16156,19 +16156,18 @@ (defun org-delete-backward-char (N)
 still be marked for re-alignment if the field did fill the entire column,
 because, in this case the deletion might narrow the column."
   (interactive "p")
-  (org-fold-core-ignore-modifications
-(save-match-data
-  (org-fold-check-before-invisible-edit 'delete-backward)
-  (if (and (= N 1)
-	   (not overwrite-mode)
-	   (not (org-region-active-p))
-	   (not (eq (char-before) ?|))
-	   (save-excursion (skip-chars-backward " \t") (not (bolp)))
-	   (looking-at-p ".*?|")
-	   (org-at-table-p))
-	  (progn (forward-char -1) (org-delete-char 1))
-(backward-delete-char N)
-(org-fix-tags-on-the-fly)
+  (save-match-data
+(org-fold-check-before-invisible-edit 'delete-backward)
+(if (and (= N 1)
+	 (not overwrite-mode)
+	 (not (org-region-active-p))
+	 (not (eq (char-before) ?|))
+	 (save-excursion (skip-chars-backward " \t") (not (bolp)))
+	 (looking-at-p ".*?|")
+	 (org-at-table-p))
+	(progn (forward-char -1) (org-delete-char 1))
+  (backward-delete-char N)
+  (org-fix-tags-on-the-fly
 
 (defun org-delete-char (N)
   "Like `delete-char', but insert whitespace at field end in tables.
@@ -16177,31 +16176,30 @@ (defun org-delete-char (N)
 still be marked for re-alignment if the field did fill the entire column,
 because, in this case the deletion might narrow the column."
   (interactive "p")
-  (org-fold-core-ignore-modifications
-(save-match-data
-  (org-fold-check-before-invisible-edit 'delete)
-  (cond
-   ((or (/= N 1)
-	(eq (char-after) ?|)
-	(save-excursion (skip-chars-backward " \t") (bolp))
-	(not (org-at-table-p)))
-(delete-char N)
-(org-fix-tags-on-the-fly))
-   ((looking-at ".\\(.*?\\)|")
-(let* ((update? org-table-may-need-update)
-	   (noalign (looking-at-p ".*?  |")))
-	  (delete-char 1)
-	  (org-table-with-shrunk-field
-	   (save-excursion
-	 ;; Last space is `org-table-separator-space', so insert
-	 ;; a regular one before it instead.
-	 (goto-char (- (match-end 0) 2))
-	 (insert " ")))
-	  ;; If there were two spaces at the end, this field does not
-	  ;; determine the width of the column.
-	  (when noalign (setq org-table-may-need-update update?
-   (t
-(delete-char N))
+  (save-match-data
+(org-fold-check-before-invisible-edit 'delete)
+(cond
+ ((or (/= N 1)
+	  (eq (char-after) ?|)
+	  (save-excursion (skip-chars-backward " \t") (bolp))
+	  (not (org-at-table-p)))
+  (delete-char N)
+  (org-fix-tags-on-the-fly))
+ ((looking-at ".\\(.*?\\)|")
+  (let* ((update? org-table-may-need-update)
+	 (noalign (looking-at-p ".*?  |")))
+	(delete-char 1)
+	(org-table-with-shrunk-field
+	 (save-excursion
+	   ;; Last space is `org-table-separator-space', so insert
+	   ;; a regular one before it instead.
+	   (goto-char (- (match-end 0) 2))
+	   (insert " ")))
+	;; If there were two spaces at the end, this field does not
+	;; determine the width of the column.
+	(when noalign (setq org-table-may-need-update update?
+ (t
+  (delete-char N)
 
 ;; Make `delete-selection-mode' work with Org mode and Orgtbl mode
 (put 'org-self-insert-command 'delete-selection
-- 
2.35.1

>From f29ccf3161a51f700bb3375a16acab563baceb49 Mon Sep 17 00:00:00 2001
Message-Id: 
In-Reply-To: 
References: 
From: Ihor Radchenko 
Date: Tue, 12 Jul 2022 21:30:58 +0800
Subject: [PATCH 2/3] test-org-fold: Cover the issue fixed by previous commit

*
testing/lisp/test-org-fold.el (test-org-fold/org-fold-reveal-broken-structure):
Test `org-delete-char' instead of `delete-char'.  The former is the
function used interactively.
---
 testing/lisp/test-org-fold.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/testing/lisp/test-org-fold.el b/testing/lisp/test-org-fold.el
index 40afe55ae..a26346175 100644
--- a/testing/lisp/test-org-fold.el
+++ b/testing/lisp/test-org-fold.el
@@ -410,7 +410,7 @@ 

Re: Recent folding issues

2022-07-12 Thread Jack Kamm
Hi Ihor,

> May you provide the output of M-x org-version?

Org mode version 9.5.4 (release_9.5.4-623-gc66bdb @ 
/home/jack/dev/org-mode/lisp/)

I also updated org-mode to the most recent version (last commit 5
hours ago).

> I cannot reproduce. Please, update your Org to the latest version, try
> to reproduce, and provide the detailed steps required to obtain the
> confusing behaviour you are seeing.

I attach a couple files for a minimal reproducible example of both
issues.

Steps to reproduce:

0. Download the attached init.el and test.org. Edit the absolute path
   of "test.org" in the capture template in "init.el" to the location
   you downloaded it.

   Then do "emacs -q --load init.el test.org"

   test.org should look like this now:

> * Headline 1
> * 2021
> * 2022
> * Headline 4

1. Next, do "M-x org-capture". Then type "c". Then create the following note:

>  Test entry 1

Then press C-c C-c. Buffer should look like this now:

> * Headline 1
> * 2021
> * 2022
> 
> ** 2022-07 July
> 
> *** 2022-07-11 Monday
> 
>  Test entry 1
> 
> * Headline 4

2. Shift-TAB until all headlines are collapsed. Buffer should look like this:

> * Headline 1
> * 2021
> * 2022...
> * Headline 4

3. Capture a second note: do M-x org-capture, type "c", and create the entry:

>  Test entry 2

And press C-c C-c.

Now, an error appears: I observe two headlines running into each other
on the last line, like so:

> * Headline 1
> * 2021
> * 2022...
> ** 2022-07 July...
> *** 2022-07-11 Monday...
>  Test entry 2...* Headline 4

Now, to produce the other issue. Shift-tab until all headlines are
collapsed again. Doing this a couple times will also fix the above
error, and the buffer should look like this now:

> * Headline 1
> * 2021
> * 2022...
> * Headline 4

Put the pointer at the start of the line "* Headline 4". Then press Enter.

A newline is placed above "* Headline 4", but also, the preceding
headline "* 2022", has been expanded, so the buffer looks like this to me:

> * Headline 1
> * 2021
> * 2022
> 
> ** 2022-07 July
> 
> *** 2022-07-11 Monday
> 
>  Test entry 1
> 
>  Test entry 2
> 
> 
> * Headline 4

However, I would instead expect to see the following:

> * Headline 1
> * 2021
> * 2022...
> 
> * Headline 4

Which is what I observe when org-fold-core-style is set to overlays.

Best,
Jack

(add-to-list 'load-path "~/dev/org-mode/lisp")

(customize-set-variable
 'org-capture-templates
 '(("c" "capture" entry (file+olp+datetree
 "~/dev/orgmode-devel/220711-folding-issues/test.org")
"* %?"
:empty-lines 1 :jump-to-captured t)))


* Headline 1
* 2021
* 2022
* Headline 4


Re: Recent folding issues

2022-07-11 Thread William Denton

On 11 July 2022, Jack Kamm wrote:


2. When folded, I frequently found multiple headlines to be displayed on
the same line, like so:

* Headline 1...
* Headline 2...* Headline 3...
* Headline 4

Hitting Shift-Tab a few times (org-global-cycle) usually fixed the
problem.


That's very much like a problem I've been getting (see the message I just sent 
to the list), which Ihor has also been helping with.  For me, just now when the 
problem happened again (I realize this is anecdotal, not reproducible) hitting 
TAB a lot on the headline might work, but hitting TAB on other headlines did 
nothing, and Shift-TAB would expand /some/ headlines but not the one where the 
pointer was!


So I'm in the same boat as you, and trying various things to figure out what's 
going on.



Cheers,

Bill

--
William Denton
https://www.miskatonic.org/
Librarian, artist and licensed private investigator.
Toronto, Canada



Re: Recent folding issues

2022-07-11 Thread Ihor Radchenko
Jack Kamm  writes:

> I started noticing a couple issues with folding, after updating my
> org-mode in recent months:

May you provide the output of M-x org-version?

> 1. Inserting text below or above a folded headline will cause it to
> unfold. I am not sure if this is an intentional change, but I find the
> new behavior confusing -- usually I am trying to enter a new headline,
> and the unfolding causes me to lose my context and forget what level I
> wanted my new headline to be.

I cannot reproduce. Please, update your Org to the latest version, try
to reproduce, and provide the detailed steps required to obtain the
confusing behaviour you are seeing.
See https://orgmode.org/manual/Feedback.html

> 2. When folded, I frequently found multiple headlines to be displayed on
> the same line, like so:
>
> * Headline 1...
> * Headline 2...* Headline 3...
> * Headline 4
>
> Hitting Shift-Tab a few times (org-global-cycle) usually fixed the
> problem.

Again, I cannot reproduce. If you can reliably obtain this erroneous
behaviour, please give us the information how to reproduce it. Then, we
will be able to fix it.

> After reading ORG-NEWS, I found out about org-fold-core-style, and have
> set it to 'overlays, which solved both of my problems.
>
> However, this makes me wonder whether it should be the default
> value. The help for it says:
>
>> Can be either ‘text-properties’ or ‘overlays’.
>> The former is faster on large files, while the latter is generally
>> less error-prone.
>
> Since the latter is less error-prone, shouldn't it be the default? And
> then a user can switch the value if they have really large files and
> need better performance. It's great that performance is being improved
> for large files, but I'm not sure this is ready to be the default yet.

I now clarified the docstring of org-fold-core-style.
"Error-prone" there refers to third-party packages that are relying on
the old implementation detail of folding.

Note that this feature is not a part of the stable Org release. It is
the development branch. We are trying our best to avoid bugs, but bugs
are pretty hard to avoid when introducing major changes like this.

Of course, we will fix the reported bugs given that enough information
is provided to reproduce them.

So, no, 'overlays should not be the default. You may also check out
https://blog.tecosaur.com/tmio/2022-05-31-folding.html

Best,
Ihor




Recent folding issues

2022-07-11 Thread Jack Kamm
I started noticing a couple issues with folding, after updating my
org-mode in recent months:

1. Inserting text below or above a folded headline will cause it to
unfold. I am not sure if this is an intentional change, but I find the
new behavior confusing -- usually I am trying to enter a new headline,
and the unfolding causes me to lose my context and forget what level I
wanted my new headline to be.

2. When folded, I frequently found multiple headlines to be displayed on
the same line, like so:

* Headline 1...
* Headline 2...* Headline 3...
* Headline 4

Hitting Shift-Tab a few times (org-global-cycle) usually fixed the
problem.

After reading ORG-NEWS, I found out about org-fold-core-style, and have
set it to 'overlays, which solved both of my problems.

However, this makes me wonder whether it should be the default
value. The help for it says:

> Can be either ‘text-properties’ or ‘overlays’.
> The former is faster on large files, while the latter is generally
> less error-prone.

Since the latter is less error-prone, shouldn't it be the default? And
then a user can switch the value if they have really large files and
need better performance. It's great that performance is being improved
for large files, but I'm not sure this is ready to be the default yet.