私がemacsで知っている限り、C++のテンプレートリストの閉じる '>'文字のインデントレベルをカスタマイズする方法はありません。現在、私のEmacsのインデントスキームは、この処理を行います。私が欲しいものC++のテンプレートとEmacs:インデントのカスタマイズ
template <
typename T1,
typename T2,
typename T3
>
class X;
はこのようなものである:ゼロにインデント変数テンプレート引数-続きを設定
template <
typename T1,
typename T2,
typename T3
>
class X;
は、適切に「>」文字をインデントしますテンプレート引数リストの実際の本文をインデントしないでください。
emacs gurusの提案はありますか?
EDIT:
私はそれが多少以下のハックで作業しました:
(defun indent-templates (elem)
(c-langelem-col elem t)
(let ((current-line
(buffer-substring-no-properties
(point-at-bol) (point-at-eol))))
(if (string-match-p "^\\s-*>" current-line)
0
'+)))
そして、私のカスタムテーマ、ALAで、テンプレートをインデントするために、テンプレート引数-CONTを設定:
(c-add-style "my-style"
'("stroustrup"
;; ... Other stuff ...
(template-args-cont . indent-templates))))
しかし、まだかなりバグです。これはほとんどの場合動作しますが、時にはemacsが混乱してテンプレートリストがarglistであると思って、それからやっかいが起こると思います。
もし可能であれば、私はこのページの情報を見つけることができません:http://www.gnu.org/software/emacs/manual/html_mono/ccmode.html#Customizing-Indentation – rve
実際にあなた自身のラインアップ機能を書くことが可能かもしれないと思います。私の以前のコメントからの文書はこれに関するより多くの情報を提供します。 – rve
EmacsのC++モードは、一般的にテンプレートの引数については定期的に混乱する傾向がありますので、実際にはあなたのコードには問題がないかもしれません... [公平には、実際にはかなり難しいです。 C++の '<' and '>'(時には平衡デリミタとして、時には演算子として)のように、実際の構文解析をC++よりも多くしなければ...] – snogglethorpe