* Ignore Local Variables list in source blocks @ 2024-12-18 4:13 Joseph Turner 2024-12-18 17:16 ` Max Nikulin 0 siblings, 1 reply; 9+ messages in thread From: Joseph Turner @ 2024-12-18 4:13 UTC (permalink / raw) To: Org Mode Mailing List; +Cc: bohonghuang Hello! Is there a way to make Emacs ignore Local Variables lists which appear inside of source blocks? For example, is there a way to include the following content in an Org file without Emacs attempting to locally set foo to bar? #+BEGIN_EXAMPLE # Local Variables: # foo: 'bar # End: #+END_EXAMPLE This issue first came up in org-srs: https://github.com/bohonghuang/org-srs/issues/7 Thank you, Joseph ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Ignore Local Variables list in source blocks 2024-12-18 4:13 Ignore Local Variables list in source blocks Joseph Turner @ 2024-12-18 17:16 ` Max Nikulin 2024-12-19 21:37 ` Joseph Turner via General discussions about Org-mode. 0 siblings, 1 reply; 9+ messages in thread From: Max Nikulin @ 2024-12-18 17:16 UTC (permalink / raw) To: Joseph Turner, emacs-orgmode; +Cc: bohonghuang On 18/12/2024 11:13, Joseph Turner wrote: > > Is there a way to make Emacs ignore Local Variables lists which appear > inside of source blocks? > > For example, is there a way to include the following content in an Org > file without Emacs attempting to locally set foo to bar? > > #+BEGIN_EXAMPLE > # Local Variables: > # foo: 'bar > # End: > #+END_EXAMPLE Have you tried to create a comment block below? #+begin_comment Deactivate local variables above in the example block: Local Variables: End: #+end_comment If it is not enough (and breaking the example into 2 parts is not acceptable) then ask Emacs developers. I do not think, Org should (and has a chance) to deal with this feature (info "(emacs) Specifying File Variables") <https://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Variables.html> ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Ignore Local Variables list in source blocks 2024-12-18 17:16 ` Max Nikulin @ 2024-12-19 21:37 ` Joseph Turner via General discussions about Org-mode. 2024-12-20 14:46 ` Max Nikulin 2024-12-20 15:37 ` Copy info node name (was: Re: Ignore Local Variables list in source blocks) Max Nikulin 0 siblings, 2 replies; 9+ messages in thread From: Joseph Turner via General discussions about Org-mode. @ 2024-12-19 21:37 UTC (permalink / raw) To: emacs-orgmode; +Cc: bohonghuang, Max Nikulin Max Nikulin <manikulin@gmail.com> writes: > On 18/12/2024 11:13, Joseph Turner wrote: >> Is there a way to make Emacs ignore Local Variables lists which >> appear >> inside of source blocks? >> For example, is there a way to include the following content in an >> Org >> file without Emacs attempting to locally set foo to bar? >> #+BEGIN_EXAMPLE >> # Local Variables: >> # foo: 'bar >> # End: >> #+END_EXAMPLE > > Have you tried to create a comment block below? > > #+begin_comment > Deactivate local variables above in the example block: > Local Variables: > End: > #+end_comment In my testing, in order to make Emacs ignore the `foo: bar' binding, the empty Local Variables list actually needs to go first. > If it is not enough (and breaking the example into 2 parts is not > acceptable) then ask Emacs developers. I do not think, Org should (and > has a chance) to deal with this feature Yes, I agree that Org should not deal with this feature. Splitting the example into two parts results in "File mode specification error: (user-error Local variables entry is missing the prefix) " upon opening the file. You can test with this: --8<---------------cut here---------------start------------->8--- #+BEGIN_SRC org # Local Variables: #+END_SRC #+BEGIN_SRC org # org-srs-review-new-items-per-day: 30 # org-srs-review-max-reviews-per-day: 100 # End: #+END_SRC --8<---------------cut here---------------end--------------->8--- > (info "(emacs) Specifying File Variables") By the way, is there a built-in command to copy that (info ...) sexp when viewing that info page? > <https://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Variables.html> Thanks, I just re-read that page more carefully, and I see this: If some unrelated text might look to Emacs as a local variables list, you can countermand that by inserting a form-feed character (a page delimiter, *note Pages::) after that text. Emacs only looks for file-local variables in the last page of a file, after the last page delimiter. In the org-srs README.org, I think we can just throw a \f at the bottom of the file (or before a Local Variables list which we do want to use). Problem solved! Thank you, Max! Joseph ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Ignore Local Variables list in source blocks 2024-12-19 21:37 ` Joseph Turner via General discussions about Org-mode. @ 2024-12-20 14:46 ` Max Nikulin 2024-12-20 14:53 ` Nikolaos Chatzikonstantinou 2024-12-21 2:11 ` Joseph Turner 2024-12-20 15:37 ` Copy info node name (was: Re: Ignore Local Variables list in source blocks) Max Nikulin 1 sibling, 2 replies; 9+ messages in thread From: Max Nikulin @ 2024-12-20 14:46 UTC (permalink / raw) To: Joseph Turner, emacs-orgmode; +Cc: bohonghuang On 20/12/2024 04:37, Joseph Turner wrote: > Max Nikulin writes: >> Have you tried to create a comment block below? >> >> #+begin_comment >> Deactivate local variables above in the example block: >> Local Variables: >> End: >> #+end_comment > > In my testing, in order to make Emacs ignore the `foo: bar' binding, the > empty Local Variables list actually needs to go first. Then it is more fragile in the case of complex documents, but still may be viable for simple ones with single example. > Splitting the example into two parts results in "File mode specification > error: (user-error Local variables entry is missing the prefix) " upon > opening the file. I expected that the code looking up for local variables is reasonably shy. > You can test with this: > #+BEGIN_SRC org > # Local Variables: > #+END_SRC > > #+BEGIN_SRC org > # org-srs-review-new-items-per-day: 30 > # org-srs-review-max-reviews-per-day: 100 > # End: > #+END_SRC Unfortunately : # Local Variables: #+BEGIN_EXAMPLE # org-srs-review-new-items-per-day: 30 # org-srs-review-max-reviews-per-day: 100 # End: #+END_EXAMPLE Causes a warning as well: "Local variables list is not properly terminated" >> (info "(emacs) Specifying File Variables") > > By the way, is there a built-in command to copy that (info ...) sexp > when viewing that info page? A short answer "C-0 c" or "C-0 w". Maybe I will send a longer one, dropping bohonghuang from Cc. >> <https://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Variables.html> > > Thanks, I just re-read that page more carefully, and I see this: > > If some unrelated text might look to Emacs as a local variables > list, you can countermand that by inserting a form-feed character (a > page delimiter, *note Pages::) after that text. Emacs only looks for > file-local variables in the last page of a file, after the last page > delimiter. I do not like non-printable characters. E.g. Thunderbird rendered your message with confusingly large vertical space in the middle. Outside of Emacs, kludges like ";;; org.el ends here" are not common. I would not be surprised by some issues on attempt to edit the README.org file on the GitHub site directly. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Ignore Local Variables list in source blocks 2024-12-20 14:46 ` Max Nikulin @ 2024-12-20 14:53 ` Nikolaos Chatzikonstantinou 2024-12-21 2:13 ` Joseph Turner 2024-12-21 2:13 ` Joseph Turner 2024-12-21 2:11 ` Joseph Turner 1 sibling, 2 replies; 9+ messages in thread From: Nikolaos Chatzikonstantinou @ 2024-12-20 14:53 UTC (permalink / raw) To: Joseph Turner, emacs-orgmode, bohonghuang On Fri, Dec 20, 2024 at 9:46 AM Max Nikulin <manikulin@gmail.com> wrote: > > On 20/12/2024 04:37, Joseph Turner wrote: > > Max Nikulin writes: > >> Have you tried to create a comment block below? > >> > >> #+begin_comment > >> Deactivate local variables above in the example block: > >> Local Variables: > >> End: > >> #+end_comment > > > > In my testing, in order to make Emacs ignore the `foo: bar' binding, the > > empty Local Variables list actually needs to go first. > > Then it is more fragile in the case of complex documents, but still may > be viable for simple ones with single example. > > > Splitting the example into two parts results in "File mode specification > > error: (user-error Local variables entry is missing the prefix) " upon > > opening the file. > > I expected that the code looking up for local variables is reasonably shy. > > > You can test with this: > > #+BEGIN_SRC org > > # Local Variables: > > #+END_SRC > > > > #+BEGIN_SRC org > > # org-srs-review-new-items-per-day: 30 > > # org-srs-review-max-reviews-per-day: 100 > > # End: > > #+END_SRC > > Unfortunately > > : # Local Variables: > #+BEGIN_EXAMPLE > # org-srs-review-new-items-per-day: 30 > # org-srs-review-max-reviews-per-day: 100 > # End: > #+END_EXAMPLE > > Causes a warning as well: > "Local variables list is not properly terminated" > > >> (info "(emacs) Specifying File Variables") > > > > By the way, is there a built-in command to copy that (info ...) sexp > > when viewing that info page? > > A short answer "C-0 c" or "C-0 w". Maybe I will send a longer one, > dropping bohonghuang from Cc. > > >> <https://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Variables.html> > > > > Thanks, I just re-read that page more carefully, and I see this: > > > > If some unrelated text might look to Emacs as a local variables > > list, you can countermand that by inserting a form-feed character (a > > page delimiter, *note Pages::) after that text. Emacs only looks for > > file-local variables in the last page of a file, after the last page > > delimiter. > > I do not like non-printable characters. E.g. Thunderbird rendered your > message with confusingly large vertical space in the middle. Outside of > Emacs, kludges like ";;; org.el ends here" are not common. I would not > be surprised by some issues on attempt to edit the README.org file on > the GitHub site directly. If I do something like #+begin_comment Local Variables: End: #+end_comment #+begin_src Local Variables: foo: 40 End: #+end_src Then the variable is not set, as Emacs does not look for a Local Variables list more than once. Regards, Nikolaos Chatzikonstantinou ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Ignore Local Variables list in source blocks 2024-12-20 14:53 ` Nikolaos Chatzikonstantinou @ 2024-12-21 2:13 ` Joseph Turner 2024-12-21 2:13 ` Joseph Turner 1 sibling, 0 replies; 9+ messages in thread From: Joseph Turner @ 2024-12-21 2:13 UTC (permalink / raw) To: Nikolaos Chatzikonstantinou; +Cc: emacs-orgmode, bohonghuang Nikolaos Chatzikonstantinou <nchatz314@gmail.com> writes: [...] > If I do something like > > #+begin_comment > Local Variables: > End: > #+end_comment > > #+begin_src > Local Variables: > foo: 40 > End: > #+end_src > > Then the variable is not set, as Emacs does not look for a Local > Variables list more than once. Thanks! This approach is a bit fragile, though since Emacs only looks at the last 3000 characters for "Local Variables:". Joseph ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Ignore Local Variables list in source blocks 2024-12-20 14:53 ` Nikolaos Chatzikonstantinou 2024-12-21 2:13 ` Joseph Turner @ 2024-12-21 2:13 ` Joseph Turner 1 sibling, 0 replies; 9+ messages in thread From: Joseph Turner @ 2024-12-21 2:13 UTC (permalink / raw) To: Nikolaos Chatzikonstantinou; +Cc: emacs-orgmode, bohonghuang Nikolaos Chatzikonstantinou <nchatz314@gmail.com> writes: [...] > If I do something like > > #+begin_comment > Local Variables: > End: > #+end_comment > > #+begin_src > Local Variables: > foo: 40 > End: > #+end_src > > Then the variable is not set, as Emacs does not look for a Local > Variables list more than once. Thanks! This approach is a bit fragile, since Emacs only looks at the last 3000 characters for "Local Variables:". Joseph ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Ignore Local Variables list in source blocks 2024-12-20 14:46 ` Max Nikulin 2024-12-20 14:53 ` Nikolaos Chatzikonstantinou @ 2024-12-21 2:11 ` Joseph Turner 1 sibling, 0 replies; 9+ messages in thread From: Joseph Turner @ 2024-12-21 2:11 UTC (permalink / raw) To: emacs-orgmode; +Cc: bohonghuang Max Nikulin <manikulin@gmail.com> writes: [...] >>> (info "(emacs) Specifying File Variables") >> By the way, is there a built-in command to copy that (info ...) sexp >> when viewing that info page? > > A short answer "C-0 c" or "C-0 w". Maybe I will send a longer one, > dropping bohonghuang from Cc. Thanks! Very good to know about! >>> <https://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Variables.html> >> Thanks, I just re-read that page more carefully, and I see this: >> If some unrelated text might look to Emacs as a local variables >> list, you can countermand that by inserting a form-feed character (a >> page delimiter, *note Pages::) after that text. Emacs only looks for >> file-local variables in the last page of a file, after the last page >> delimiter. > > I do not like non-printable characters. E.g. Thunderbird rendered your > message with confusingly large vertical space in the middle. Outside > of Emacs, kludges like ";;; org.el ends here" are not common. I would > not be surprised by some issues on attempt to edit the README.org file > on the GitHub site directly. Also good to know about. Thanks! Joseph ^ permalink raw reply [flat|nested] 9+ messages in thread
* Copy info node name (was: Re: Ignore Local Variables list in source blocks) 2024-12-19 21:37 ` Joseph Turner via General discussions about Org-mode. 2024-12-20 14:46 ` Max Nikulin @ 2024-12-20 15:37 ` Max Nikulin 1 sibling, 0 replies; 9+ messages in thread From: Max Nikulin @ 2024-12-20 15:37 UTC (permalink / raw) To: Joseph Turner, emacs-orgmode; +Cc: rms Due to a recent texinfo thread on emacs-devel, I have added RMS to Cc. On 20/12/2024 04:37, Joseph Turner wrote: > Max Nikulin writes: >> (info "(emacs) Specifying File Variables") > By the way, is there a built-in command to copy that (info ...) sexp > when viewing that info page? TLDR; "C-0 c" or "C-0 w" Actually to get the reference above I copied and edited the file part of the HTTP URL >> <https://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Variables.html> Autocompletion from browsing history in address bar is a rather convenient feature to quickly open some document visited earlier. Unfortunately HTML page metadata does not contain manual and node names, so a browser extension that copies info references, while possible, would not be reliable. (I have noticed that HTML links may have extra data-manual="elisp" attributes without data-node conterpart.) Back to Emacs, `org-store-link' allows to save an info link for insertion into an Org mode document. However I am unaware of any command that allows to create a more precise reference. Enough nodes have index anchors and it may be more convenient: <https://www.gnu.org/software/bash/manual/html_node/Bash-Variables.html#index-_005f> An issue with Org links to index anchors that they can not be easily exported to html_node variant of the texinfo document, especially if the manual is not installed on the machine. (E.g. sphinx puts machine-readable index of sections and anchors along with HTML files.) Earlier I have not tries to find if it is possible to copy info node name as *a command*. Actually neither (info "(info)"), nor (info "(info-stnd"), nor (info "(emacs)") describe how to copy current node name, so the feature is a part of hidden UI. I still had an impression that I have seen a keybinding somewhere. This time I found it in "C-h m" list, it is present in "?" info help as well (of course, without details related to sexp). The final step is the docstring for the "c" and "w" key bindings. `Info-copy-current-node-name' An advantage of the (info "(emacs) Specifying File Variables") form is that it usually can be used to open specific part of the document in a standalone info browser. (Eli believes they are dead.) Another feature I missed in info browsers is equivalent of browser "copy link" context menu option for links. It is handy to copy link for notes without leaving the current document. I am not surprised that people use any option (HTTP URL, etc.), but not "(emacs) Specifying File Variables" form (or some dedicated URL scheme). The feature is hidden (and incompatible with yelp and khelpcenter). ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2024-12-21 2:14 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-12-18 4:13 Ignore Local Variables list in source blocks Joseph Turner 2024-12-18 17:16 ` Max Nikulin 2024-12-19 21:37 ` Joseph Turner via General discussions about Org-mode. 2024-12-20 14:46 ` Max Nikulin 2024-12-20 14:53 ` Nikolaos Chatzikonstantinou 2024-12-21 2:13 ` Joseph Turner 2024-12-21 2:13 ` Joseph Turner 2024-12-21 2:11 ` Joseph Turner 2024-12-20 15:37 ` Copy info node name (was: Re: Ignore Local Variables list in source blocks) Max Nikulin
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).