emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* [BUG]: unexpected behavior related to org-indent-block
@ 2024-01-11 11:33 gerard.vermeulen
  2024-01-11 12:37 ` Ihor Radchenko
  0 siblings, 1 reply; 11+ messages in thread
From: gerard.vermeulen @ 2024-01-11 11:33 UTC (permalink / raw)
  To: Emacs orgmode

Below, I show 2 commands to be run with point on a source block.
I expect that those commands modify an Org file identically, but
they do not.  It fails when `org-indent-block' is called in a
loop after each `(insert (org-element-interpret-data copy))' and
it works when `org-indent-block' is called in a separate loop
after insertion of all `(org-element-interpret-data copy)'s:

#+begin_src emacs-lisp :results silent
(defun make-2-indent-fails ()
   "Make 2 modified blocks, but fails."
   (interactive)
   (let ((copy (org-element-copy (org-element-at-point)))
         (n 0))
     (delete-region (org-element-begin copy) (org-element-end copy))
     (while (< n 2)
       (cl-incf n)
       (org-element-put-property copy :value (format "copy %s" n))
       (insert (org-element-interpret-data copy))
       (org-indent-block))))

(defun make-2-indent-works ()
   "Make 2 modified blocks, and works."
   (interactive)
   (let ((copy (org-element-copy (org-element-at-point)))
         (n 0))
     (delete-region (org-element-begin copy) (org-element-end copy))
     (while (< n 2)
       (cl-incf n)
       (org-element-put-property copy :value (format "copy %s" n))
       (insert (org-element-interpret-data copy)))
     (org-previous-block n)
     (while (> n 0)
       (cl-decf n)
       (org-indent-block))))
#+end_src

Example block:
---
#+begin_src emacs-lisp
<point>
#+end_src
---
make-2-indent-fails results in
---
#+begin_src emacs-lisp
copy 1
#+end_src
---
make-2-indent-works results in
---
#+begin_src emacs-lisp
copy 1
#+end_src
#+begin_src emacs-lisp
copy 2
#+end_src
---

I think that it is also weird that this bug does not show up in
this ERT test while it does outside ERT:
#+begin_src emacs-lisp :results silent
(ert-deftest test-make-2-indent-fails ()
   "Test unfolded `make-2-indent-fails'."
   (org-test-with-temp-text "
,#+begin_src emacs-lisp
<point>
,#+end_src
"
     (let ((copy (org-element-copy (org-element-at-point)))
           (word "copy")
           (n 0))
       (delete-region (org-element-begin copy) (org-element-end copy))
       (while (< n 2)
         (cl-incf n)
         (org-element-put-property copy :value (format "%s %s" word n))
         ;; Why does this work inside ERT and not outside ERT?
         (insert (org-element-interpret-data copy))
         (org-indent-block))
       (message "`%s'" (buffer-substring (point-min) (point-max)))
       (goto-char (point-min))
       (while (> n 0)
         (cl-decf n)
         (should (re-search-forward word)))
       (should-not (re-search-forward word nil 'noerror)))))
#+end_src

Regards -- Gerard



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

* Re: [BUG]: unexpected behavior related to org-indent-block
  2024-01-11 11:33 [BUG]: unexpected behavior related to org-indent-block gerard.vermeulen
@ 2024-01-11 12:37 ` Ihor Radchenko
  2024-01-11 14:14   ` gerard.vermeulen
  2024-01-12 19:19   ` Ihor Radchenko
  0 siblings, 2 replies; 11+ messages in thread
From: Ihor Radchenko @ 2024-01-11 12:37 UTC (permalink / raw)
  To: gerard.vermeulen; +Cc: Emacs orgmode

gerard.vermeulen@posteo.net writes:

> Below, I show 2 commands to be run with point on a source block.
> I expect that those commands modify an Org file identically, but
> they do not.  It fails when `org-indent-block' is called in a
> loop after each `(insert (org-element-interpret-data copy))' and
> it works when `org-indent-block' is called in a separate loop
> after insertion of all `(org-element-interpret-data copy)'s:
> ...
> Example block:
> ---
> #+begin_src emacs-lisp
> <point>
> #+end_src
> ---
> make-2-indent-fails results in
> ---
> #+begin_src emacs-lisp
> copy 1
> #+end_src

I cannot reproduce.
I am seeing

make-2-indent-fails results in
---
#+begin_src emacs-lisp
copy 1
#+end_src
#+begin_src emacs-lisp
copy 2
#+end_src
<point>

On the latest main.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>


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

* Re: [BUG]: unexpected behavior related to org-indent-block
  2024-01-11 12:37 ` Ihor Radchenko
@ 2024-01-11 14:14   ` gerard.vermeulen
  2024-01-11 15:04     ` Ihor Radchenko
  2024-01-12 19:19   ` Ihor Radchenko
  1 sibling, 1 reply; 11+ messages in thread
From: gerard.vermeulen @ 2024-01-11 14:14 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Emacs orgmode



On 11.01.2024 13:37, Ihor Radchenko wrote:
> gerard.vermeulen@posteo.net writes:
> 
>> Below, I show 2 commands to be run with point on a source block.
>> I expect that those commands modify an Org file identically, but
>> they do not.  It fails when `org-indent-block' is called in a
>> loop after each `(insert (org-element-interpret-data copy))' and
>> it works when `org-indent-block' is called in a separate loop
>> after insertion of all `(org-element-interpret-data copy)'s:
>> ...
>> Example block:
>> ---
>> #+begin_src emacs-lisp
>> <point>
>> #+end_src
>> ---
>> make-2-indent-fails results in
>> ---
>> #+begin_src emacs-lisp
>> copy 1
>> #+end_src
> 
> I cannot reproduce.
> I am seeing
> 
> make-2-indent-fails results in
> ---
> #+begin_src emacs-lisp
> copy 1
> #+end_src
> #+begin_src emacs-lisp
> copy 2
> #+end_src
> <point>
> 
> On the latest main.

This is strange:
I pulled the latest main and created a clean org-emacs directory
where I put a minimal init.el reading:

(when (eq system-type 'darwin)
   (setopt ns-alternate-modifier nil
           ns-command-modifier 'meta
           ns-right-command-modifier 'super))

(push (expand-file-name "~/VCS/org-mode/lisp") load-path)
(require 'org)

After emacs --init-directory org-emacs, I get (code in the
result blocks got now indented):

Example block:
---
#+begin_src emacs-lisp
<point>
#+end_src
---
make-2-indent-fails results in
---
#+begin_src emacs-lisp
   copy 1
#+end_src
---
make-2-indent-works results in
---
#+begin_src emacs-lisp
   copy 1
#+end_src
#+begin_src emacs-lisp
   copy 2
#+end_src
---
I have no idea what I can do now.
My Emacs is also recent main and built by me with minimal configure 
options.



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

* Re: [BUG]: unexpected behavior related to org-indent-block
  2024-01-11 14:14   ` gerard.vermeulen
@ 2024-01-11 15:04     ` Ihor Radchenko
  2024-01-11 15:48       ` gerard.vermeulen
  0 siblings, 1 reply; 11+ messages in thread
From: Ihor Radchenko @ 2024-01-11 15:04 UTC (permalink / raw)
  To: gerard.vermeulen; +Cc: Emacs orgmode

gerard.vermeulen@posteo.net writes:

>> I cannot reproduce.
> ...
> This is strange:
> I pulled the latest main and created a clean org-emacs directory
> where I put a minimal init.el reading:
>...
> I have no idea what I can do now.
> My Emacs is also recent main and built by me with minimal configure 
> options.

Try using released Emacs version. Emacs master builds are a subject of
unexpected bugs sometimes.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>


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

* Re: [BUG]: unexpected behavior related to org-indent-block
  2024-01-11 15:04     ` Ihor Radchenko
@ 2024-01-11 15:48       ` gerard.vermeulen
  2024-01-11 16:01         ` Ihor Radchenko
  0 siblings, 1 reply; 11+ messages in thread
From: gerard.vermeulen @ 2024-01-11 15:48 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Emacs orgmode



On 11.01.2024 16:04, Ihor Radchenko wrote:
> gerard.vermeulen@posteo.net writes:
> 
>>> I cannot reproduce.
>> ...
>> This is strange:
>> I pulled the latest main and created a clean org-emacs directory
>> where I put a minimal init.el reading:
>> ...
>> I have no idea what I can do now.
>> My Emacs is also recent main and built by me with minimal configure
>> options.
> 
> Try using released Emacs version. Emacs master builds are a subject of
> unexpected bugs sometimes.

I get exactly the same results on Emacs-29.1 as on Emacs master.

For Emacs-29.1 (tar.xy) and Emacs master I have done (nothing special):
LIBRARY_PATH=/usr/local/Cellar/libgccjit/13.2.0/lib/gcc/13 make 
configure="--prefix=${HOME}/opt --disable-ns-self-contained"

Regards -- Gerard


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

* Re: [BUG]: unexpected behavior related to org-indent-block
  2024-01-11 15:48       ` gerard.vermeulen
@ 2024-01-11 16:01         ` Ihor Radchenko
  2024-01-11 16:41           ` gerard.vermeulen
  0 siblings, 1 reply; 11+ messages in thread
From: Ihor Radchenko @ 2024-01-11 16:01 UTC (permalink / raw)
  To: gerard.vermeulen; +Cc: Emacs orgmode

gerard.vermeulen@posteo.net writes:

>> Try using released Emacs version. Emacs master builds are a subject of
>> unexpected bugs sometimes.
>
> I get exactly the same results on Emacs-29.1 as on Emacs master.
>
> For Emacs-29.1 (tar.xy) and Emacs master I have done (nothing special):
> LIBRARY_PATH=/usr/local/Cellar/libgccjit/13.2.0/lib/gcc/13 make 
> configure="--prefix=${HOME}/opt --disable-ns-self-contained"

Strange.
You can also try
cd /path/to/org/git
make repro

If you still see the problem, we may need to narrow down the problem on
your side using debugger.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>


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

* Re: [BUG]: unexpected behavior related to org-indent-block
  2024-01-11 16:01         ` Ihor Radchenko
@ 2024-01-11 16:41           ` gerard.vermeulen
  2024-01-11 17:28             ` Ihor Radchenko
  0 siblings, 1 reply; 11+ messages in thread
From: gerard.vermeulen @ 2024-01-11 16:41 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Emacs orgmode



On 11.01.2024 17:01, Ihor Radchenko wrote:
> gerard.vermeulen@posteo.net writes:
> 
>>> Try using released Emacs version. Emacs master builds are a subject 
>>> of
>>> unexpected bugs sometimes.
>> 
>> I get exactly the same results on Emacs-29.1 as on Emacs master.
>> 
>> For Emacs-29.1 (tar.xy) and Emacs master I have done (nothing 
>> special):
>> LIBRARY_PATH=/usr/local/Cellar/libgccjit/13.2.0/lib/gcc/13 make
>> configure="--prefix=${HOME}/opt --disable-ns-self-contained"
> 
> Strange.
> You can also try
> cd /path/to/org/git
> make repro
> 
I get:

Debugger entered--Lisp error: (void-function org-element-begin)
   (org-element-begin copy)
   (delete-region (org-element-begin copy) (org-element-end copy))
   (let ((copy (org-element-copy (org-element-at-point))) (n 0)) 
(delete-region (org-element-begin copy) (org-element-end copy)) (while 
(< n 2) (cl-incf n) (org-element-put-property copy :value (format "copy 
%s" n)) (insert (org-element-interpret-data copy)) (org-indent-block)))
   make-2-indent-fails()
   funcall-interactively(make-2-indent-fails)
   command-execute(make-2-indent-fails record)

I think it is strange that org-element-begin is void.
> 
> If you still see the problem, we may need to narrow down the problem on
> your side using debugger.

I have zero experience with the debugger.



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

* Re: [BUG]: unexpected behavior related to org-indent-block
  2024-01-11 16:41           ` gerard.vermeulen
@ 2024-01-11 17:28             ` Ihor Radchenko
  2024-01-11 18:06               ` gerard.vermeulen
  0 siblings, 1 reply; 11+ messages in thread
From: Ihor Radchenko @ 2024-01-11 17:28 UTC (permalink / raw)
  To: gerard.vermeulen; +Cc: Emacs orgmode

gerard.vermeulen@posteo.net writes:

>> You can also try
>> cd /path/to/org/git
>> make repro
>> 
> I get:
>
> Debugger entered--Lisp error: (void-function org-element-begin)
>    (org-element-begin copy)

This means that your Org mode git folder is not on main branch.
You can try
  git checkout main

or re-clone the Org repository:

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

>> If you still see the problem, we may need to narrow down the problem on
>> your side using debugger.
>
> I have zero experience with the debugger.

As the last resort, we can do it by screen sharing in BBB/Jitsi.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>


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

* Re: [BUG]: unexpected behavior related to org-indent-block
  2024-01-11 17:28             ` Ihor Radchenko
@ 2024-01-11 18:06               ` gerard.vermeulen
  2024-01-11 18:18                 ` Ihor Radchenko
  0 siblings, 1 reply; 11+ messages in thread
From: gerard.vermeulen @ 2024-01-11 18:06 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Emacs orgmode



On 11.01.2024 18:28, Ihor Radchenko wrote:
> gerard.vermeulen@posteo.net writes:
> 
>>> You can also try
>>> cd /path/to/org/git
>>> make repro
>>> 
>> I get:
>> 
>> Debugger entered--Lisp error: (void-function org-element-begin)
>>    (org-element-begin copy)
> 
> This means that your Org mode git folder is not on main branch.
> You can try
>   git checkout main
> 
> or re-clone the Org repository:
> 
>   git clone https://git.savannah.gnu.org/cgit/emacs/org-mode.git/
> 

This is the output of "git checkout" in my Org repository clone:

python-3.11.7:0→vermeulen@bt-pc226:~/VCS/org-mode% git checkout   
(git)-[main]-
Your branch is up to date with 'origin/main'.

After "make repro" and (org-version) I get

Org mode version 9.6.15 (release_9.6.15 @ 
/Users/vermeulen/opt/share/emacs/30.0.50/lisp/org/)

Something else on my system makes "make repro" behave unexpectedly.

>>> If you still see the problem, we may need to narrow down the problem 
>>> on
>>> your side using debugger.
>> 
>> I have zero experience with the debugger.
> 
> As the last resort, we can do it by screen sharing in BBB/Jitsi.

OK. I have Jitsi installed on my system, but not much experience in
screen sharing.


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

* Re: [BUG]: unexpected behavior related to org-indent-block
  2024-01-11 18:06               ` gerard.vermeulen
@ 2024-01-11 18:18                 ` Ihor Radchenko
  0 siblings, 0 replies; 11+ messages in thread
From: Ihor Radchenko @ 2024-01-11 18:18 UTC (permalink / raw)
  To: gerard.vermeulen; +Cc: Emacs orgmode

gerard.vermeulen@posteo.net writes:

>> This means that your Org mode git folder is not on main branch.
>> You can try
>>   git checkout main
>> 
>> or re-clone the Org repository:
>> 
>>   git clone https://git.savannah.gnu.org/cgit/emacs/org-mode.git/
>> 
>
> This is the output of "git checkout" in my Org repository clone:
>
> python-3.11.7:0→vermeulen@bt-pc226:~/VCS/org-mode% git checkout   
> (git)-[main]-
> Your branch is up to date with 'origin/main'.
>
> After "make repro" and (org-version) I get
>
> Org mode version 9.6.15 (release_9.6.15 @ 
> /Users/vermeulen/opt/share/emacs/30.0.50/lisp/org/)
>
> Something else on my system makes "make repro" behave unexpectedly.

Super-weird.

>>>> If you still see the problem, we may need to narrow down the problem 
>>>> on
>>>> your side using debugger.
>>> 
>>> I have zero experience with the debugger.
>> 
>> As the last resort, we can do it by screen sharing in BBB/Jitsi.
>
> OK. I have Jitsi installed on my system, but not much experience in
> screen sharing.

You can just use browser. Use
https://bbb.emacsverse.org/b/iho-h7r-qg8-led link.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>


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

* Re: [BUG]: unexpected behavior related to org-indent-block
  2024-01-11 12:37 ` Ihor Radchenko
  2024-01-11 14:14   ` gerard.vermeulen
@ 2024-01-12 19:19   ` Ihor Radchenko
  1 sibling, 0 replies; 11+ messages in thread
From: Ihor Radchenko @ 2024-01-12 19:19 UTC (permalink / raw)
  To: gerard.vermeulen; +Cc: Emacs orgmode

Ihor Radchenko <yantar92@posteo.net> writes:

>> ---
>> #+begin_src emacs-lisp
>> <point>
>> #+end_src
>> ---
> ...
> I cannot reproduce.

"---" turned out to be important.
This is not a bug.

After

(insert (org-element-interpret-data copy))

The point ends up at
--- line, which is not recognized as a source block. So,

(org-indent-block)

signals an error. This error is intended.

I updated the docstring to make it clear that error is thrown when not at
block.

Handled, on main.
https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/?id=1aa4552e5

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>


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

end of thread, other threads:[~2024-01-12 19:17 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-01-11 11:33 [BUG]: unexpected behavior related to org-indent-block gerard.vermeulen
2024-01-11 12:37 ` Ihor Radchenko
2024-01-11 14:14   ` gerard.vermeulen
2024-01-11 15:04     ` Ihor Radchenko
2024-01-11 15:48       ` gerard.vermeulen
2024-01-11 16:01         ` Ihor Radchenko
2024-01-11 16:41           ` gerard.vermeulen
2024-01-11 17:28             ` Ihor Radchenko
2024-01-11 18:06               ` gerard.vermeulen
2024-01-11 18:18                 ` Ihor Radchenko
2024-01-12 19:19   ` Ihor Radchenko

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).