回答:
それが可能だ:
(setq LaTeX-begin-regexp "\\(?:begin\\|if@\\)\\b")
(setq LaTeX-end-regexp "\\(?:end\\|else\\|fi\\)\\b")
(defun LaTeX-indent-level-count ()
"Count indentation change caused by all \\left, \\right, \\begin, and
\\end commands in the current line."
(save-excursion
(save-restriction
(let ((count 0))
(narrow-to-region (point)
(save-excursion
(re-search-forward
(concat "[^" TeX-esc "]"
"\\(" LaTeX-indent-comment-start-regexp
"\\)\\|\n\\|\\'"))
(backward-char)
(point)))
(while (search-forward TeX-esc nil t)
(cond
((looking-at "left\\b")
(setq count (+ count LaTeX-left-right-indent-level)))
((looking-at "right\\b")
(setq count (- count LaTeX-left-right-indent-level)))
((looking-at LaTeX-begin-regexp)
(setq count (+ count LaTeX-indent-level)))
((looking-at "else\\b"))
((looking-at LaTeX-end-regexp)
(setq count (- count LaTeX-indent-level)))
((looking-at (regexp-quote TeX-esc))
(forward-char 1))))
count))))
再定義する必要があったことに注意してくださいLaTeX-indent-level-count
。diffは単に1つのcond
ブランチです。
((looking-at "else\\b"))
\else
ます。の位置\else
は正しいですが、次のコード(\doanotherthin
、質問を参照)は3列目ではなく、最初の列にあります。最初のコード行を変更し、\ ifxコマンドと思想を組み込み、elseコマンドを追加しました助けになるでしょうが、私は失敗しました(少なくとも後に再びインデントして\else
)。ここに私の部分的に動作するコードがあります:(setq LaTeX-begin-regexp "\\(?:begin\\|if\\|ifx\\|else\\)\\b")
アイデアはありますか?