[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#65824: Indent after open delimiters in verb constructs
From: |
Arash Esbati |
Subject: |
bug#65824: Indent after open delimiters in verb constructs |
Date: |
Fri, 08 Sep 2023 17:44:26 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
Hi all,
please consider this small file:
--8<---------------cut here---------------start------------->8---
\documentclass{article}
\begin{document}
\verb|foo{bar|
foo
bar
baz
\end{document}
--8<---------------cut here---------------end--------------->8---
Now do 'M-x mark-whole-buffer RET M-x indent-region RET' and you get:
--8<---------------cut here---------------start------------->8---
\documentclass{article}
\begin{document}
\verb|foo{bar|
foo
bar
baz
\end{document}
--8<---------------cut here---------------end--------------->8---
I think the issue is within `TeX-brace-count-line' which doesn't look
for opening/closing delimiters in verbatim text. My simple minded
solution looks like this:
--8<---------------cut here---------------start------------->8---
diff --git a/tex.el b/tex.el
index a85b8ef9..30118384 100644
--- a/tex.el
+++ b/tex.el
@@ -5485,21 +5485,22 @@ additional characters."
'(?\{ ?\} ?\\))
(TeX-in-comment))))
(forward-char)
- (cond ((memq char (append
- TeX-indent-open-delimiters
- '(?\{)))
- (setq count (+ count TeX-brace-indent-level)))
- ((memq char (append
- TeX-indent-close-delimiters
- '(?\})))
- (setq count (- count TeX-brace-indent-level)))
- ((eq char ?\\)
- (when (< (point) limit)
- ;; ?\\ in verbatim constructs doesn't escape
- ;; the next char
- (unless (TeX-verbatim-p)
- (forward-char))
- t))))))
+ ;; If inside a verbatim construct, just return t and
+ ;; proceed, otherwise start counting:
+ (if (TeX-verbatim-p)
+ t
+ (cond ((memq char (append
+ TeX-indent-open-delimiters
+ '(?\{)))
+ (setq count (+ count TeX-brace-indent-level)))
+ ((memq char (append
+ TeX-indent-close-delimiters
+ '(?\})))
+ (setq count (- count TeX-brace-indent-level)))
+ ((eq char ?\\)
+ (when (< (point) limit)
+ (forward-char)
+ t)))))))
count)))
;;; Navigation
--8<---------------cut here---------------end--------------->8---
Any better ideas how to do this? My only concern is that
`LaTeX-verbatim-p' (which is used by `TeX-verbatim-p') uses
`save-match-data' which is known to be expensive. I don't have any
benchmarks, but there might be performance hit when indenting/filling
large portions of text.
Best, Arash
- bug#65824: Indent after open delimiters in verb constructs,
Arash Esbati <=