emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Suspected bug: example block in a footnote doesn't fold if starts with 2 blank lines
@ 2022-08-30  7:54 Alain.Cochard
  2022-08-31  1:57 ` Ihor Radchenko
  0 siblings, 1 reply; 4+ messages in thread
From: Alain.Cochard @ 2022-08-30  7:54 UTC (permalink / raw)
  To: Org Mode List


Hello.  When I visit an org buffer containing only:

  foo[fn:1]

  [fn:1] bar
  #+begin_example


  x
  #+end_example

then, hitting <TAB> when the cursor is on either '#' does nothing
(i.e., no folding).

Tested with 'emacs -Q' and the following combinations:

GNU Emacs 27.2 (build 1, x86_64-redhat-linux-gnu, GTK+ Version
3.24.30, cairo version 1.17.4) of 2021-08-07 Org mode version 9.4.4
(release_9.4.4 @ /usr/share/emacs/27.2/lisp/org/)

GNU Emacs 28.1 (build 3, x86_64-pc-linux-gnu, GTK+ Version 3.24.30,
cairo version 1.17.4) of 2022-08-16 Org mode version 9.5.2
(release_9.5.2-25-gaf6f12 @
/home/cochard/usr/local/emacs-28.1/lisp/org/)

GNU Emacs 29.0.50 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.30,
cairo version 1.17.4) of 2022-08-22 Org mode version 9.5.4
(release_9.5.4-17-g6e991f @
/home/cochard/usr/local/emacs-29/lisp/org/)

-- 
EOST (École et Observatoire des Sciences de la Terre) 
ITE (Institut Terre & Environnement) | alain.cochard@unistra.fr
5 rue René Descartes   [bureau 106]  | Phone: +33 (0)3 68 85 50 44 
F-67084 Strasbourg Cedex, France     | [ slot available for rent ]



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

* Re: Suspected bug: example block in a footnote doesn't fold if starts with 2 blank lines
  2022-08-30  7:54 Suspected bug: example block in a footnote doesn't fold if starts with 2 blank lines Alain.Cochard
@ 2022-08-31  1:57 ` Ihor Radchenko
  2022-08-31 12:23   ` Alain.Cochard
  0 siblings, 1 reply; 4+ messages in thread
From: Ihor Radchenko @ 2022-08-31  1:57 UTC (permalink / raw)
  To: alain.cochard; +Cc: Org Mode List

Alain.Cochard@unistra.fr writes:

> Hello.  When I visit an org buffer containing only:
>
>   foo[fn:1]
>
>   [fn:1] bar
>   #+begin_example
>
>
>   x
>   #+end_example
>
> then, hitting <TAB> when the cursor is on either '#' does nothing
> (i.e., no folding).

This is not a bug. Just unintuitive syntax:

https://orgmode.org/manual/Creating-Footnotes.html#Creating-Footnotes
>> A footnote is started by a footnote marker in square brackets in
>> column 0, no indentation allowed. It ends at the next footnote
>> definition, headline, or after two consecutive empty lines. The
>> footnote reference is simply the marker in square brackets, inside
>> text. Markers always start with ‘fn:’.

The important part is:
It ends at the next footnote definition, headline, or after two consecutive empty lines.

So, your example is

foo[fn:1]

<begin footnote-definition>[fn:1] bar
#+begin_example ;; <- this is not considered an example block because no
major org elements can be inside a footnote definition.


<end footnote-definition after two empty lines>
<begin paragraph>x
#+end_example
<end paragraph>

-- 
Ihor Radchenko,
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] 4+ messages in thread

* Re: Suspected bug: example block in a footnote doesn't fold if starts with 2 blank lines
  2022-08-31  1:57 ` Ihor Radchenko
@ 2022-08-31 12:23   ` Alain.Cochard
  2022-09-02 12:41     ` Syntax of footnote-definition: can we allow double empty lines inside? (was: Suspected bug: example block in a footnote doesn't fold if starts with 2 blank lines) Ihor Radchenko
  0 siblings, 1 reply; 4+ messages in thread
From: Alain.Cochard @ 2022-08-31 12:23 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: alain.cochard, Org Mode List

Ihor Radchenko writes on Wed 31 Aug 2022 09:57:

 > This is not a bug. Just unintuitive syntax:
 > [...]
 > The important part is: It ends at the next footnote definition,
 > headline, or after two consecutive empty lines.
 > 
 > So, your example is
 > 
 > foo[fn:1]
 > 
 > <begin footnote-definition>[fn:1] bar
 > #+begin_example ;; <- this is not considered an example block because no
 > major org elements can be inside a footnote definition.
 > 
 > 
 > <end footnote-definition after two empty lines>
 > <begin paragraph>x
 > #+end_example
 > <end paragraph>

Thanks a lot for answering.

Is there an official definition for "major org element" ? (I could not
find anything relevant in the manual.)

I guess a headline would qualify (and it would not have occurred to me
to use a headline within a footnote; the manual is clear in that
respect anyway).

But then a list item would probably qualify as well?  But, as far as I
can see, lists and footnotes work perfectly well together... (because
2 consecutive empty lines also mark the end of a list item?)

Furthermore, as long as there is not more than one empty line in a
row, blocks also appear to me to work just fine within footnotes,
including upon latex export, and I use things like the following all
the time:

   #+LATEX_HEADER: \usepackage{fancyvrb}
   #+LATEX_HEADER: \VerbatimFootnotes
   foot[fn:1]

   [fn:1] note 
   #+begin_src fortran
	 print*,"foo"
   #+end_src

I simply never had to use 2 consecutive empty lines in blocks up to
now...

So I guess I'll turn my "suspected bug" into a feature request: that
#+BEGIN ... #+END blocks behave the same way whether they are within a
footnote or not.

Regards

-- 
EOST (École et Observatoire des Sciences de la Terre) 
ITE (Institut Terre & Environnement) | alain.cochard@unistra.fr
5 rue René Descartes   [bureau 106]  | Phone: +33 (0)3 68 85 50 44 
F-67084 Strasbourg Cedex, France     | [ slot available for rent ]



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

* Syntax of footnote-definition: can we allow double empty lines inside? (was: Suspected bug: example block in a footnote doesn't fold if starts with 2 blank lines)
  2022-08-31 12:23   ` Alain.Cochard
@ 2022-09-02 12:41     ` Ihor Radchenko
  0 siblings, 0 replies; 4+ messages in thread
From: Ihor Radchenko @ 2022-09-02 12:41 UTC (permalink / raw)
  To: Alain.Cochard; +Cc: Org Mode List

Alain.Cochard@unistra.fr writes:

> Ihor Radchenko writes on Wed 31 Aug 2022 09:57:
>
>  > This is not a bug. Just unintuitive syntax:
>  > [...]
>  > The important part is: It ends at the next footnote definition,
>  > headline, or after two consecutive empty lines.
>  > 
>  > So, your example is
>  > 
>  > foo[fn:1]
>  > 
>  > <begin footnote-definition>[fn:1] bar
>  > #+begin_example ;; <- this is not considered an example block because no
>  > major org elements can be inside a footnote definition.
>  > 
>  > 
>  > <end footnote-definition after two empty lines>
>  > <begin paragraph>x
>  > #+end_example
>  > <end paragraph>
>
> Thanks a lot for answering.
>
> Is there an official definition for "major org element" ? (I could not
> find anything relevant in the manual.)

Sorry, I actually confused things in attempt to make things more clear.
The official Org syntax defines 2 types of syntax structures:
elements and objects. Elements can be: (1) headings, (2) sections, (3)
greater elements, (4) lesser elements.

Each Org document is a sequence of elements with no gaps in-between.
Objects (e.g. markup) may be separated by plain text and must always be
inside an existing element.

Headings, sections, and greater elements can contain other elements
inside, while lesser elements cannot.

By "major element" I was actually referring to lesser element
(non-object). Not only I was wrong (footnote-definition is a greater
element), but also used a confusing terminology.

You can refer to https://orgmode.org/worg/dev/org-syntax.html for more
detailed info.

> I guess a headline would qualify (and it would not have occurred to me
> to use a headline within a footnote; the manual is clear in that
> respect anyway).
>
> But then a list item would probably qualify as well?  But, as far as I
> can see, lists and footnotes work perfectly well together... (because
> 2 consecutive empty lines also mark the end of a list item?)
>
> Furthermore, as long as there is not more than one empty line in a
> row, blocks also appear to me to work just fine within footnotes,
> including upon latex export, and I use things like the following all
> the time:
>
>    #+LATEX_HEADER: \usepackage{fancyvrb}
>    #+LATEX_HEADER: \VerbatimFootnotes
>    foot[fn:1]
>
>    [fn:1] note 
>    #+begin_src fortran
> 	 print*,"foo"
>    #+end_src
>
> I simply never had to use 2 consecutive empty lines in blocks up to
> now...
>
> So I guess I'll turn my "suspected bug" into a feature request: that
> #+BEGIN ... #+END blocks behave the same way whether they are within a
> footnote or not.

You are right, there is currently no way to have double blank lines
_inside_ footnote definition. This is because Org syntax prohibits
elements inside a greater element to influence the parent boundaries.
Once Org parser encounters ^[fn:...] right after previously parsed
element, it immediately looks forward for (1) next footnote definition
^[fn:...]; (2) headline ^\*+ ; (3) double blank lines; and sets the
footnote definition boundaries accordingly. Unconditionally. No
backtracking is allowed for the performance reasons.

The consequence is inability to have source blocks containing double
blank lines inside a footnote definition.

This is not an easy problem because we need to ensure backwards
compatibility and avoid doing major changes to Org syntax. The best I
can think of is allowing to escape blank lines like #+ and * lines
inside the code blocks with ",". See 12.6 Literal Examples section of
the manual, for example:

#+BEGIN_EXAMPLE
,* I am no real headline
#+END_EXAMPLE

We may add the same for double blank lines

#+BEGIN_EXAMPLE

,* I am no real headline

,
#+END_EXAMPLE

The downside is overly verbose ordinary code blocks. Double blank lines
may not be uncommon in the wild; sprinkling commas around many source
blocks will be ugly.

Alternative ideas are welcome.

-- 
Ihor Radchenko,
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] 4+ messages in thread

end of thread, other threads:[~2022-09-02 12:41 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-30  7:54 Suspected bug: example block in a footnote doesn't fold if starts with 2 blank lines Alain.Cochard
2022-08-31  1:57 ` Ihor Radchenko
2022-08-31 12:23   ` Alain.Cochard
2022-09-02 12:41     ` Syntax of footnote-definition: can we allow double empty lines inside? (was: Suspected bug: example block in a footnote doesn't fold if starts with 2 blank lines) 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).