[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [FR] :noweb-wrap header arg
From: |
Ihor Radchenko |
Subject: |
Re: [FR] :noweb-wrap header arg |
Date: |
Sat, 13 Apr 2024 13:17:28 +0000 |
Amy Grinn <grinn.amy@gmail.com> writes:
>>> + (while (< (point) (point-max))
>>> + (unless (looking-at " *\"\\([^\"]+\\)\" *")
>>> + (looking-at " *\\([^ ]+\\)"))
>>
>> May you please explain the rationale behind this regexp? AFAIU, it
>> implies that you want to allow whitespace characters inside :noweb-wrap
>> boundaries. But I do not think that we need to complicate things so much.
>
> That is exactly what I was going for. I thought about the ways this
> could be used and the most general-purpose, non-syntax-breaking,
> easily-recognizable way I could think of was to use the language's
> line-comment construct followed by the standard << >> characters.
>
> # <<foo>>
> ;; <<bar>>
> // <<baz>>
>
> I can see how it might be harder to maintain to allow whitespace in the
> noweb-wrap header arg. I could create a separate org-parse-arg-list
> function to ease that burden somewhat. My opinion is that having the
> option to use the examples above is preferable to using non-standard
> wrappers, from a third-person point-of-view.
Makes sense. Also, see a similar idea being discussed in
https://list.orgmode.org/orgmode/87o7jlzxgn.fsf@localhost/
I recommend the following:
If the value starts from ", use Elisp's `read':
|"# <<" ">>"
(read (current-buffer)) ; => "# <<"
otherwise, consider read until the first whitespace.
|#<<; >>;
(re-search-forward (rx (1+ (not whitespace))))
#<<;|
However, there may be edge cases like
"<< >>"
"<< >>
<< << >>
<< "asd" >>
--
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>