On Fri, 1 Mar 2019 at 08:14, Nicolas Goaziou <m...@nicolasgoaziou.fr> wrote: > > Hello, > > Neil Jerram <neiljer...@gmail.com> writes: > > > Do you mean Windows file names in existing Org files? I.e. the > > back-compatibility concern? > > > > If so, yes, I confess I didn't think at all about back-compatibility, > > with my suggestion above. So perhaps that rules my idea out. > > > > If we were starting from scratch, however, > > - I believe it would technically be fine; i.e. it's a complete and > > unambiguous encoding > > - it might be considered awkward for Windows users to have to write > > c:\\system32\\mydoc.txt instead of c:\system32\mydoc.txt, but I don't > > know how big a concern that would be. > > Thinking a bit more about it, we don't need to escape /all/ square > brackets, only "]]" and "][" constructs. Therefore, we don't need to > escape every backslash either.
Agreed. > The regexp for bracket links could be, in its simple (!) form: > > \[\[\(.*?[^\\]\(?:\\\)*\)\]\(?:\[\([^\000]+?\)\]\)?\] [then a bit later] > Small update, in its string form now: > > > "\\[\\[\\([^\000]*?[^\\]\\(\\\\\\\\\\)*\\)\\]\\(?:\\[\\([^\000]+?\\)\\]\\)?\\]" Is [^\000] the only (or best) way of saying "any character, including newlines"? Could there be actual NUL characters in the document? More generally I'm not sure I'm fully understanding the regex. I _think_ it breaks down like this: \[\[ # literal [[ \( # begin group 1 [^\000]*? # non-greedy any characters (0 or more) [^\] # something not a backslash \( # begin group 2 \\\\ # literal \\ \)* # end group 2, and allow 0 or more of it \) # end group 1 \] # literal ] \( # begin group 3 ? # don't understand :\[ # literal :[ \( # begin group 4 [^\000]+? # non-greedy any characters (1 or more) \) # end group 4 \] # literal ] \)? # end group 3, and allow 0 or 1 or it \] # literal ] but there's at least a ? that I don't understand, and I'm afraid I'm not seeing how it's useful. > Most links would need no change. I see one notable exception: > directories in Windows: > > [[c:\system32\\]] for "c:\system32\" But I guess it would be unusual to write a trailing backslash like that. > Some further notes: > > 1. Macros already use backslashes to escape commas in arguments, so it > is at least consistent with this part of Org. > > 2. The description part of the link, like most parts of Org, does not > use backslash escaping. If needed, we can implement an entity for > a square bracket. > > 3. There will be some backward compatibility issues. We can add > a checker in Org Lint to catch most of those. For example, we could > look at URI where every percent is followed only by 25, 5B, and 5D. > > WDYT? If you think it works, I'm happy to defer to your judgement on that! Although I suggested the idea, I don't know Org nearly well enough to be sure that I haven't missed problems; but I guess that you would know that. Best wishes, Neil