[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#73302: TeX-find-closing-brace and verbatim macros
From: |
Arash Esbati |
Subject: |
bug#73302: TeX-find-closing-brace and verbatim macros |
Date: |
Mon, 30 Sep 2024 20:52:44 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
Hi Paul,
Paul Nelson <ultrono@gmail.com> writes:
> That example motivated me to take a proper look at the verbatim
> functions in AUCTeX, which is indeed relevant. The following modified
> code passes all tests mentioned thus far in this thread, although the
> way the verbatim argument is found might be a bit brittle
Does the code work on this example:
\Verb{foo{b}ar}
> I guess you could have a commented "{" in the middle of a multi-line
> \Verb{...}, but multi-line \Verb{...} seems like illegal latex anyway,
> so maybe it's all OK?
I don't think you can have a commented "{" in the argument of
\Verb{...}, only balanced pair of braces like above. Multi-line \verb
are illegal in vanilla LaTeX, yes, but with fvextra v1.8.0, you can have
them[1]:
* By default, `\Verb` and `\SaveVerb` now take multi-line (but not
multi-paragraph) verbatim arguments. The old behavior of requiring
verbatim arguments to be on a single line can be restored by setting
the new option `vargsingleline` to `true`.
But within AUCTeX, we disallow multi-line verb args.
Overall, I think the following (100% untested) changes should make your
code more robust:
--8<---------------cut here---------------start------------->8---
(defun czm-tex-fold--verb-data (&rest _args)
"Return data for a verbatim macro.
Returns a list of the form (START END CONTENT)."
(when-let* ((boundaries (LaTeX-verbatim-macro-boundaries))
(bound-start (car boundaries))
(bound-end (cdr boundaries))
(end-delim-char (char-before bound-end))
(start-delim-char (if (= end-delim-char ?\})
?\{
end-delim-char))
(start-delim (char-to-string start-delim-char)))
(goto-char (1- bound-end))
(when (if (string= start-delim TeX-grop)
(and (backward-sexp) (point))
(search-backward start-delim bound-start t))
(let* ((verb-arg-start (1+ (point)))
(verb-arg-end (1- bound-end)))
(list bound-start
bound-end
(buffer-substring-no-properties verb-arg-start
verb-arg-end))))))
(defun czm-tex-fold-verbs (start end)
"Fold verbatim macros between START and END."
(save-excursion
(goto-char start)
(let ((re (concat "\\\\" (regexp-opt
(append
(LaTeX-verbatim-macros-with-braces)
(LaTeX-verbatim-macros-with-delims))))))
(while (let ((case-fold-search nil))
(re-search-forward re end t))
(when-let* ((data (czm-tex-fold--verb-data))
(verb-start (nth 0 data))
(verb-end (nth 1 data))
(content (nth 2 data))
(spec (lambda (&rest _args)
(nth 2 (czm-tex-fold--verb-content)))))
(czm-tex-fold--create-misc-overlay verb-start verb-end
content spec))))))
--8<---------------cut here---------------end--------------->8---
Best, Arash
Footnotes:
[1] https://ctan.net/macros/latex/contrib/fvextra/CHANGELOG.md
- bug#73302: TeX-find-closing-brace and verbatim macros, (continued)
- bug#73302: TeX-find-closing-brace and verbatim macros, Paul Nelson, 2024/09/20
- bug#73302: TeX-find-closing-brace and verbatim macros, Ikumi Keita, 2024/09/20
- bug#73302: TeX-find-closing-brace and verbatim macros, Arash Esbati, 2024/09/21
- bug#73302: TeX-find-closing-brace and verbatim macros, Paul Nelson, 2024/09/21
- bug#73302: TeX-find-closing-brace and verbatim macros, Arash Esbati, 2024/09/24
- bug#73302: TeX-find-closing-brace and verbatim macros, Ikumi Keita, 2024/09/26
- bug#73302: TeX-find-closing-brace and verbatim macros, Paul Nelson, 2024/09/26
- bug#73302: TeX-find-closing-brace and verbatim macros, Ikumi Keita, 2024/09/27
- bug#73302: TeX-find-closing-brace and verbatim macros, Arash Esbati, 2024/09/27
- bug#73302: TeX-find-closing-brace and verbatim macros, Paul Nelson, 2024/09/27
- bug#73302: TeX-find-closing-brace and verbatim macros,
Arash Esbati <=
- bug#73302: TeX-find-closing-brace and verbatim macros, Paul Nelson, 2024/09/30
- bug#73302: TeX-find-closing-brace and verbatim macros, Arash Esbati, 2024/09/30
- bug#73302: TeX-find-closing-brace and verbatim macros, Paul Nelson, 2024/09/30
- bug#73302: TeX-find-closing-brace and verbatim macros, Paul Nelson, 2024/09/30
- bug#73302: TeX-find-closing-brace and verbatim macros, Paul Nelson, 2024/09/21
- bug#73302: TeX-find-closing-brace and verbatim macros, Ikumi Keita, 2024/09/21