* did behaviour of RET change again? @ 2020-12-18 13:06 Eric S Fraga 2020-12-18 14:42 ` Pankaj Jangid ` (2 more replies) 0 siblings, 3 replies; 17+ messages in thread From: Eric S Fraga @ 2020-12-18 13:06 UTC (permalink / raw) To: Emacs Org mode mailing list Just a quick heads-up: I have just installed org from git (a few hours ago) and now it seems that RET no longer indents. Is this intentional? I know that there has been some discussion on the mailing list but I seem to have lost track of the decision, if any, taken. RET and C-j now behave the same (although bound to different functions). I have electric-indent-mode enabled and expected RET to indent accordingly. Have I missed something? thank you, eric -- : Eric S Fraga via Emacs 28.0.50, Org release_9.4.3-150-g6b83c6 ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: did behaviour of RET change again? 2020-12-18 13:06 did behaviour of RET change again? Eric S Fraga @ 2020-12-18 14:42 ` Pankaj Jangid 2020-12-18 14:59 ` Eric S Fraga 2020-12-18 18:33 ` Berry, Charles via General discussions about Org-mode. 2020-12-20 17:25 ` Bastien 2 siblings, 1 reply; 17+ messages in thread From: Pankaj Jangid @ 2020-12-18 14:42 UTC (permalink / raw) To: Emacs Org mode mailing list Eric S Fraga <e.fraga@ucl.ac.uk> writes: > I have just installed org from git (a few hours ago) and now it seems > that RET no longer indents. Is this intentional? > > I know that there has been some discussion on the mailing list but I > seem to have lost track of the decision, if any, taken. RET and C-j now > behave the same (although bound to different functions). I have > electric-indent-mode enabled and expected RET to indent accordingly. I am using 9.4.2 from emacs-master. It is working fine there. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: did behaviour of RET change again? 2020-12-18 14:42 ` Pankaj Jangid @ 2020-12-18 14:59 ` Eric S Fraga 2020-12-19 4:21 ` Pankaj Jangid 0 siblings, 1 reply; 17+ messages in thread From: Eric S Fraga @ 2020-12-18 14:59 UTC (permalink / raw) To: Emacs Org mode mailing list On Friday, 18 Dec 2020 at 20:12, Pankaj Jangid wrote: > I am using 9.4.2 from emacs-master. It is working fine there. I'm on 9.4.3... -- : Eric S Fraga via Emacs 28.0.50, Org release_9.4.3-150-g6b83c6 ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: did behaviour of RET change again? 2020-12-18 14:59 ` Eric S Fraga @ 2020-12-19 4:21 ` Pankaj Jangid 0 siblings, 0 replies; 17+ messages in thread From: Pankaj Jangid @ 2020-12-19 4:21 UTC (permalink / raw) To: Emacs Org mode mailing list Eric S Fraga <e.fraga@ucl.ac.uk> writes: > On Friday, 18 Dec 2020 at 20:12, Pankaj Jangid wrote: >> I am using 9.4.2 from emacs-master. It is working fine there. > > I'm on 9.4.3... Today, I have 9.4.3 from emacs-master. And the feature is working perfectly fine in this as well C-j and RET, both working accordingly. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: did behaviour of RET change again? 2020-12-18 13:06 did behaviour of RET change again? Eric S Fraga 2020-12-18 14:42 ` Pankaj Jangid @ 2020-12-18 18:33 ` Berry, Charles via General discussions about Org-mode. 2020-12-20 17:25 ` Bastien 2 siblings, 0 replies; 17+ messages in thread From: Berry, Charles via General discussions about Org-mode. @ 2020-12-18 18:33 UTC (permalink / raw) To: Eric S Fraga; +Cc: Emacs Org mode mailing list > On Dec 18, 2020, at 5:06 AM, Eric S Fraga <e.fraga@ucl.ac.uk> wrote: > > Just a quick heads-up: > > I have just installed org from git (a few hours ago) and now it seems > that RET no longer indents. Is this intentional? > > I know that there has been some discussion on the mailing list but I > seem to have lost track of the decision, if any, taken. That was Subject: How to preserve empty headings X-Universally-Unique-Identifier: 3B7C5634-13EF-4F54-B9A6-C3D8C4342A8D AFAICS, the behavior discussed there is unchanged as of this moment (9.4.3 from git master), viz RET and C-j behave differently and honor electric-indent-mode in doing so. Also, I don't see any git log entries that are suggestive since that time. HTH, Chuck [snip] ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: did behaviour of RET change again? 2020-12-18 13:06 did behaviour of RET change again? Eric S Fraga 2020-12-18 14:42 ` Pankaj Jangid 2020-12-18 18:33 ` Berry, Charles via General discussions about Org-mode. @ 2020-12-20 17:25 ` Bastien 2020-12-20 18:56 ` Gustavo Barros ` (4 more replies) 2 siblings, 5 replies; 17+ messages in thread From: Bastien @ 2020-12-20 17:25 UTC (permalink / raw) To: Eric S Fraga; +Cc: Emacs Org mode mailing list Hi Eric, Eric S Fraga <e.fraga@ucl.ac.uk> writes: > Just a quick heads-up: > > I have just installed org from git (a few hours ago) and now it seems > that RET no longer indents. Is this intentional? I've not closely followed this, sorry. I see something wrong right now: RET after a headline should only try to indent below the beginning of the headline with org-adapt-indentation is t, but not nil or headline-data. For now, when org-adapt-indentation is headline-data, RET still indents. I will see how to fix this. Also, I'm thinking of using headline-data as the new default for the org-adapt-indentation option. WDYT? I know Kevin as a good overview of the whole topic, maybe he can also advise about what should be done here. Best, -- Bastien ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: did behaviour of RET change again? 2020-12-20 17:25 ` Bastien @ 2020-12-20 18:56 ` Gustavo Barros 2020-12-21 8:46 ` Eric S Fraga ` (3 subsequent siblings) 4 siblings, 0 replies; 17+ messages in thread From: Gustavo Barros @ 2020-12-20 18:56 UTC (permalink / raw) To: Bastien; +Cc: Emacs Org mode mailing list, Eric S Fraga Hi All, On Sun, 20 Dec 2020 at 18:25, Bastien <bzg@gnu.org> wrote: > > Also, I'm thinking of using headline-data as the new default for the > org-adapt-indentation option. WDYT? > > I know Kevin as a good overview of the whole topic, maybe he can also > advise about what should be done here. I cannot but raise a friendly flag here. I've reported the following behavior I've found for `headline-data' some time ago: https://orgmode.org/list/87r1qukjjs.fsf@gmail.com/ Nicholas Savage did try and could not reproduce. Last time I've tried it, not long ago, I still found the behavior. I would thus suggest that at least some more people try it and check their end before going that route. I'll be happy if it's just me. That said, I do think `headline-data' is a great default value for `org-adapt-indentation', despite the fuss that is bound to ensue for *any* change there. Best regards, Gustavo. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: did behaviour of RET change again? 2020-12-20 17:25 ` Bastien 2020-12-20 18:56 ` Gustavo Barros @ 2020-12-21 8:46 ` Eric S Fraga 2020-12-21 10:25 ` Eric S Fraga ` (2 subsequent siblings) 4 siblings, 0 replies; 17+ messages in thread From: Eric S Fraga @ 2020-12-21 8:46 UTC (permalink / raw) To: Bastien; +Cc: Emacs Org mode mailing list On Sunday, 20 Dec 2020 at 18:25, Bastien wrote: > I see something wrong right now: RET after a headline should only try > to indent below the beginning of the headline with org-adapt-indentation > is t, but not nil or headline-data. Interesting. I have org-adapt-indentation set to nil as I use org-indent-mode and don't physically indent any normal lines. The problem, for me, arises within lists where I do expect indentation. RET used to indent; now it doesn't. -- : Eric S Fraga via Emacs 28.0.50, Org release_9.4.3-150-g6b83c6 ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: did behaviour of RET change again? 2020-12-20 17:25 ` Bastien 2020-12-20 18:56 ` Gustavo Barros 2020-12-21 8:46 ` Eric S Fraga @ 2020-12-21 10:25 ` Eric S Fraga 2020-12-21 11:34 ` Kévin Le Gouguec 2020-12-22 15:36 ` Kyle Meyer 4 siblings, 0 replies; 17+ messages in thread From: Eric S Fraga @ 2020-12-21 10:25 UTC (permalink / raw) To: Bastien; +Cc: Emacs Org mode mailing list Just to say that RET seems to be working again. No idea what happened or changed, mind you... Sorry for the noise. -- : Eric S Fraga via Emacs 28.0.50, Org release_9.4.3-150-g6b83c6 ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: did behaviour of RET change again? 2020-12-20 17:25 ` Bastien ` (2 preceding siblings ...) 2020-12-21 10:25 ` Eric S Fraga @ 2020-12-21 11:34 ` Kévin Le Gouguec 2020-12-22 15:36 ` Kyle Meyer 4 siblings, 0 replies; 17+ messages in thread From: Kévin Le Gouguec @ 2020-12-21 11:34 UTC (permalink / raw) To: Bastien; +Cc: Greg Minshall, Emacs Org mode mailing list, Eric S Fraga [-- Attachment #1: Type: text/plain, Size: 1598 bytes --] Bastien <bzg@gnu.org> writes: > I see something wrong right now: RET after a headline should only try > to indent below the beginning of the headline with org-adapt-indentation > is t, but not nil or headline-data. > > For now, when org-adapt-indentation is headline-data, RET still indents. > > I will see how to fix this. > > Also, I'm thinking of using headline-data as the new default for the > org-adapt-indentation option. WDYT? I personally agree that headline-data makes more sense as a default given the feedback we received a few weeks ago; as you noticed though there might be a few loose ends to tie up before making the switch: - As you said, RET after a headline indents, but the common case for hitting RET after a headline is probably to write text, since IME headline drawers are always inserted with dedicated commands; thus RET should not indent after a header. - RET after a headline drawer's :END: also indents. - RET in a list item does not indent; it's not obvious that it should, but FWIW (1) RET indents when org-adapt-indentation is t (2) that would be my preference. Also, Greg Minshall (CC'ed) helpfully laid out how org-adapt-indentation and electric-indent-mode play together in one neat table: https://orgmode.org/list/2020-11-13T18-23-43@devnull.Karl-Voit.at/t/#mec37faab85f3de59e25a7c1640e5f50be5494192 I didn't take the time to properly review his findings, but there might be more inconsistencies lurking in there. Finally, not a big problem if headline-data becomes the default, but: the :safe predicate is still booleanp. Patch attached: [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: 0001-lisp-org.el-org-adapt-indentation-Mark-headline-data.patch --] [-- Type: text/x-patch, Size: 771 bytes --] From fd8dab0c42d7104566437b51526b25979f1056fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Le=20Gouguec?= <kevin.legouguec@gmail.com> Date: Mon, 21 Dec 2020 12:09:56 +0100 Subject: [PATCH] * lisp/org.el (org-adapt-indentation): Mark 'headline-data as safe --- lisp/org.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/org.el b/lisp/org.el index 1f7e434ce..f75745aba 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -1610,7 +1610,7 @@ time in Emacs." (const :tag "Adapt indentation for headline data lines" 'headline-data) (const :tag "Do not adapt indentation at all" nil)) - :safe #'booleanp) + :safe (lambda (x) (memq x '(t nil headline-data)))) (defvaralias 'org-special-ctrl-a 'org-special-ctrl-a/e) -- 2.29.2 [-- Attachment #3: Type: text/plain, Size: 466 bytes --] Eric S Fraga <e.fraga@ucl.ac.uk> writes: > Just to say that RET seems to be working again. No idea what happened > or changed, mind you... Sorry for the noise. Glad things fell back in place somehow. The only explanation I can conjure for weird/transient/irreproducible behaviour is directory-local settings, e.g. org-mode.git's .dir-locals.el sets org-adapt-indentation to nil… but there might have been something else at work in your case 🤷 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: did behaviour of RET change again? 2020-12-20 17:25 ` Bastien ` (3 preceding siblings ...) 2020-12-21 11:34 ` Kévin Le Gouguec @ 2020-12-22 15:36 ` Kyle Meyer 2020-12-22 23:15 ` Samuel Wales 4 siblings, 1 reply; 17+ messages in thread From: Kyle Meyer @ 2020-12-22 15:36 UTC (permalink / raw) To: Bastien; +Cc: Emacs Org mode mailing list Bastien writes: > Also, I'm thinking of using headline-data as the new default for the > org-adapt-indentation option. WDYT? FWIW if we're going to change the default, I'd vote for the simpler and longer-existing nil value. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: did behaviour of RET change again? 2020-12-22 15:36 ` Kyle Meyer @ 2020-12-22 23:15 ` Samuel Wales 2020-12-22 23:25 ` Samuel Wales 0 siblings, 1 reply; 17+ messages in thread From: Samuel Wales @ 2020-12-22 23:15 UTC (permalink / raw) To: Kyle Meyer; +Cc: Bastien, Emacs Org mode mailing list there are just a few defaults i think are better for new users, despite discoverability. no indentation is one such. 1 changes org files less [better for e.g. merging] 2 requires less filling maintenance [for the body text; bastien's change works here] 3 requires less adjustment when plain-text changes are made 4 is parseable by third party code that has whitespace line prefixes in derived formats another default i'd change is sub-superscript, which has littered variable_[name as a subscript] all over the web -- even when highly experienced org users on this mailing list export to html. :) ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: did behaviour of RET change again? 2020-12-22 23:15 ` Samuel Wales @ 2020-12-22 23:25 ` Samuel Wales 2020-12-23 23:09 ` Tom Gillespie 0 siblings, 1 reply; 17+ messages in thread From: Samuel Wales @ 2020-12-22 23:25 UTC (permalink / raw) To: Kyle Meyer; +Cc: Bastien, Emacs Org mode mailing list in case not obvious, i am suggesting a nil value for org adapt indentation. thus no physical indentation of all lines including planning lines. i'd even suggest no physical indentation as default for example and source blocks, but that is a can of worms. On 12/22/20, Samuel Wales <samologist@gmail.com> wrote: > there are just a few defaults i think are better for new users, > despite discoverability. > > no indentation is one such. > > 1 changes org files less [better for e.g. merging] > > 2 requires less filling maintenance [for the body text; bastien's > change works here] > > 3 requires less adjustment when plain-text changes are made > > 4 is parseable by third party code that has whitespace line prefixes > in derived formats > > > another default i'd change is sub-superscript, which has littered > variable_[name as a subscript] all over the web -- even when highly > experienced org users on this mailing list export to html. :) > -- The Kafka Pandemic Please learn what misopathy is. https://thekafkapandemic.blogspot.com/2013/10/why-some-diseases-are-wronged.html ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: did behaviour of RET change again? 2020-12-22 23:25 ` Samuel Wales @ 2020-12-23 23:09 ` Tom Gillespie 2020-12-24 3:34 ` Greg Minshall 0 siblings, 1 reply; 17+ messages in thread From: Tom Gillespie @ 2020-12-23 23:09 UTC (permalink / raw) To: Samuel Wales; +Cc: Bastien, Kyle Meyer, Emacs Org mode mailing list > in case not obvious, i am suggesting a nil value for org adapt indentation. > thus no physical indentation of all lines including planning lines. > i'd even suggest no physical indentation as default for example and > source blocks, but that is a can of worms. I know that this is a can of worms, but I agree. Given that the effects of org-adapt-indentation can be mimicked in other ways without having the literal spaces present in the file it may not be as big a deal as we think. The other reason I think this is a good idea is because I have been working on a formal grammar for the org syntax, and everything would be SO much simpler about the implementation after the first pass parse if the canonical representation of an Org file did not allow significant whitespace (with an exception for plain lists). Just avoiding having to deal with any number of nasty edge cases for correctly aligning org babel blocks would be worth it. Not to mention the fact that it means that you have to do a triple pass over each incoming line in order to be sure that what you are passing to an org babel block has had the leading whitespace removed (once for a normal parse, second time to adjust whitespace and a third time to actually parse the babel block). No significant leading whitespace would remove the need for an entire pass in the parser. I will have more on the subject when I finally get around to sharing the grammar, but suffice to say, that having org-adapt-indentation set to true and putting the leading spaces in the file (instead of doing whatever it is that doom does by default) induces significant complexity into the implementation. I would love to see it gone, as I'm sure anyone wanting to parse org files in future will too. Best! Tom ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: did behaviour of RET change again? 2020-12-23 23:09 ` Tom Gillespie @ 2020-12-24 3:34 ` Greg Minshall 2020-12-24 6:35 ` Tom Gillespie 0 siblings, 1 reply; 17+ messages in thread From: Greg Minshall @ 2020-12-24 3:34 UTC (permalink / raw) To: Tom Gillespie; +Cc: Emacs Org mode mailing list Tom, > The other reason I think this is a good idea is because I have been > working on a formal grammar for the org syntax, and everything would > be SO much simpler about the implementation after the first pass parse > if the canonical representation of an Org file did not allow > significant whitespace (with an exception for plain lists). possibly i'm misunderstanding, but my sense is that the value of org adapt indentation doesn't change what you might actually find ("in a .org file in the wild"). so, whatever its value, your grammar would have to deal with all cases? or, and maybe this would make sense, you'd define an "interoperability" form of .org, that all "wild" .org files could be (programmatically) converted into, without losing any of their semantics? (anyway, good luck with that, even with any significant subset of that!) cheers, Greg ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: did behaviour of RET change again? 2020-12-24 3:34 ` Greg Minshall @ 2020-12-24 6:35 ` Tom Gillespie 2020-12-25 6:29 ` Devin Prater 0 siblings, 1 reply; 17+ messages in thread From: Tom Gillespie @ 2020-12-24 6:35 UTC (permalink / raw) To: Greg Minshall; +Cc: Emacs Org mode mailing list > possibly i'm misunderstanding, but my sense is that the value of org > adapt indentation doesn't change what you might actually find ("in a > .org file in the wild"). so, whatever its value, your grammar would > have to deal with all cases? Yep, we can't magically change all the files out in the wild. Until I wrote this email out I agreed about the grammar too, but as it turns out I think there might be a compromise, which is that a grammar could be allowed to interpret certain types of lines with leading whitespace as if they were paragraph lines instead of as say, the start of an org-babel block. That way an interoperable org spec could be made simpler without preventing e.g. the elisp implementation from going above and beyond the spect to provide support for leading whitespace. My interest in the org-adapt-indentation setting is to try to align what most users are doing out in the wild with a representation for their org files that is less ambiguous and more performant (among other things). If I had to guess I would say that most new org files have leading whitespace precisely because org-adapt-indentation is set to t by default. Getting users to transition their files requires an incentive, and some users may find that they use org in such a way that they don't need to. While writing this email I thought of a reasonable incentive, which is that only files without leading significant whitespace (i.e. that look like those that are authored with org-adapt-indentation nil) have specified behavior for things like org-babel blocks. This would allow best effort by the elisp org-mode implementation to allow users who don't care about interoperability to continue as they have been doing, while also providing clear guidance for what users must do if they want consistent behavior on other tools that consume org formatted files. This is critical for keeping the org spec from becoming overly complex. The first step would thus be to reduce the rate at which new org files are created with leading whitespace by changing org-adapt-indentation to be nil by default. The second step would be to give users a clear way forward to safely normalizing their files. Org has a habit of reindenting subsets of files from time to time, but in general doing a complete switch to have no significant whitespace can be risky. The third step would be to let the incentives and needs of users play out over time, but users would generally probably be happier because by default they would be in the "my files are portable and generally interpretable without me having to do any additional work" state instead of the "why did no one tell me the defaults weren't portable" state. > or, and maybe this would make sense, you'd define an "interoperability" > form of .org, that all "wild" .org files could be (programmatically) > converted into, without losing any of their semantics? Yep exactly. For many use cases the cost of stripping the whitespace that corresponds to heading level is not unreasonable, e.g. since it would only have to be done once. However, if you are writing another org implementation, then every single time you parse a heading and its accompanying section you have to strip the whitespace, and that will happen every single time a user modifies the file, which starts to get expensive. Alternately you could implement it so that everything is stripped once and then you keep a version in memory that the user edits which doesn't have leading whitespace, but then every time you save you have to splice it all back in to preserve the roundtrip. This also doesn't even begin to deal with the fact that users can create malformed org files that can have lines that are less than the expected significant indentation. This becomes a complete nightmare when trying to come up with some rational way of dealing with org babel blocks for languages like python where there is significant whitespace. Consider the horror if trying to specify the correct behavior in a situation like this. Better just to declare it a malformed babel block and move on. Unfortunately you can't always detect that such things are malformed during the first pass of parsing because you have to count the number of spaces. #+begin_src org # -*- org-adapt-indentation: t -*- ,*** Oh No ,#+begin_src python class What: have = 'you' done = 'now' ,#+end_src #+end_src In order to ensure that org files can be reliably interpreted this either means that the specification for handling cases like this becomes extremely complex, or the spec can say "you can have leading whitespace, but nasal demons may come for you, there is only specified behavior if you do not have leading whitespace." Having unspecified behavior in cases like that would mean that an implementation could be fully compliant if it were to treat any #+begin_src lang line that started with whitespace as if it were a paragraph instead of a babel block. I suspect that this will be the best way forward. > (anyway, good luck with that, even with any significant subset of that!) Thanks, and thanks for the inspiration! Tom ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: did behaviour of RET change again? 2020-12-24 6:35 ` Tom Gillespie @ 2020-12-25 6:29 ` Devin Prater 0 siblings, 0 replies; 17+ messages in thread From: Devin Prater @ 2020-12-25 6:29 UTC (permalink / raw) To: Tom Gillespie, Greg Minshall; +Cc: Emacs Org mode mailing list For me, I don't like my paragraphs indented. That just adds more speech from Emacspeak. I'm glad y'all talked about which setting does this so I can turn it off.. I mean, I don't know of any reason why paragraphs should be indented, but that's just my opinion. Maybe visual appeal, looking more like a word processor? On 12/24/20 12:35 AM, Tom Gillespie wrote: >> possibly i'm misunderstanding, but my sense is that the value of org >> adapt indentation doesn't change what you might actually find ("in a >> .org file in the wild"). so, whatever its value, your grammar would >> have to deal with all cases? > Yep, we can't magically change all the files out in the wild. > Until I wrote this email out I agreed about the grammar too, but > as it turns out I think there might be a compromise, which is that > a grammar could be allowed to interpret certain types of lines > with leading whitespace as if they were paragraph lines instead of > as say, the start of an org-babel block. That way an interoperable > org spec could be made simpler without preventing e.g. the elisp > implementation from going above and beyond the spect to provide > support for leading whitespace. > > My interest in the org-adapt-indentation setting is to try to align what > most users are doing out in the wild with a representation for their > org files that is less ambiguous and more performant (among other > things). > > If I had to guess I would say that most new org files have leading > whitespace precisely because org-adapt-indentation is set to t by > default. Getting users to transition their files requires an incentive, > and some users may find that they use org in such a way that they > don't need to. > > While writing this email I thought of a reasonable incentive, which is > that only files without leading significant whitespace (i.e. that look like > those that are authored with org-adapt-indentation nil) have specified > behavior for things like org-babel blocks. This would allow best effort > by the elisp org-mode implementation to allow users who don't care > about interoperability to continue as they have been doing, while also > providing clear guidance for what users must do if they want > consistent behavior on other tools that consume org formatted files. > This is critical for keeping the org spec from becoming overly complex. > > The first step would thus be to reduce the rate at which new org files > are created with leading whitespace by changing org-adapt-indentation > to be nil by default. > > The second step would be to give users a clear way forward to safely > normalizing their files. Org has a habit of reindenting subsets of files > from time to time, but in general doing a complete switch to have no > significant whitespace can be risky. > > The third step would be to let the incentives and needs of users > play out over time, but users would generally probably be happier > because by default they would be in the "my files are portable and > generally interpretable without me having to do any additional work" > state instead of the "why did no one tell me the defaults weren't > portable" state. > >> or, and maybe this would make sense, you'd define an "interoperability" >> form of .org, that all "wild" .org files could be (programmatically) >> converted into, without losing any of their semantics? > Yep exactly. For many use cases the cost of stripping the whitespace > that corresponds to heading level is not unreasonable, e.g. since it > would only have to be done once. However, if you are writing another > org implementation, then every single time you parse a heading and > its accompanying section you have to strip the whitespace, and that > will happen every single time a user modifies the file, which starts to > get expensive. Alternately you could implement it so that everything > is stripped once and then you keep a version in memory that the user > edits which doesn't have leading whitespace, but then every time you > save you have to splice it all back in to preserve the roundtrip. > > This also doesn't even begin to deal with the fact that users can create > malformed org files that can have lines that are less than the expected > significant indentation. This becomes a complete nightmare when trying > to come up with some rational way of dealing with org babel blocks for > languages like python where there is significant whitespace. > > Consider the horror if trying to specify the correct behavior in a situation > like this. Better just to declare it a malformed babel block and move on. > Unfortunately you can't always detect that such things are malformed > during the first pass of parsing because you have to count the number of > spaces. > > #+begin_src org > # -*- org-adapt-indentation: t -*- > ,*** Oh No > ,#+begin_src python > class What: > have = 'you' > done = 'now' > ,#+end_src > #+end_src > > In order to ensure that org files can be reliably interpreted this either > means that the specification for handling cases like this becomes > extremely complex, or the spec can say "you can have leading > whitespace, but nasal demons may come for you, there is only > specified behavior if you do not have leading whitespace." > > Having unspecified behavior in cases like that would mean that an > implementation could be fully compliant if it were to treat any > #+begin_src lang line that started with whitespace as if it were > a paragraph instead of a babel block. I suspect that this will be > the best way forward. > >> (anyway, good luck with that, even with any significant subset of that!) > Thanks, and thanks for the inspiration! > Tom > ^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2020-12-25 6:30 UTC | newest] Thread overview: 17+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-12-18 13:06 did behaviour of RET change again? Eric S Fraga 2020-12-18 14:42 ` Pankaj Jangid 2020-12-18 14:59 ` Eric S Fraga 2020-12-19 4:21 ` Pankaj Jangid 2020-12-18 18:33 ` Berry, Charles via General discussions about Org-mode. 2020-12-20 17:25 ` Bastien 2020-12-20 18:56 ` Gustavo Barros 2020-12-21 8:46 ` Eric S Fraga 2020-12-21 10:25 ` Eric S Fraga 2020-12-21 11:34 ` Kévin Le Gouguec 2020-12-22 15:36 ` Kyle Meyer 2020-12-22 23:15 ` Samuel Wales 2020-12-22 23:25 ` Samuel Wales 2020-12-23 23:09 ` Tom Gillespie 2020-12-24 3:34 ` Greg Minshall 2020-12-24 6:35 ` Tom Gillespie 2020-12-25 6:29 ` Devin Prater
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).