Emacs で cc-mode を使用してインデントされた、次の C++ コードのスニペットを検討してください。
auto good1 = f(a,
{1, 2}); // ((arglist-cont-nonempty 1 15))
auto bad1 = f<1>(a,
{1, 2}); // ((inexpr-statement) (block-open 36))
auto good2 = f(a,
b, // ((arglist-cont-nonempty 68 82))
{1, 2}); // ((arglist-cont-nonempty 68 82))
auto bad2 = f<1>(a,
b // ((arglist-cont-nonempty 114 130))
{1, 2}); // ((inexpr-statement) (block-open 114))
auto good3 = f(a,
b, // ((arglist-cont-nonempty 151 165))
{1, 2}, // ((arglist-cont-nonempty 151 165))
c);
auto bad3 = f<3>(a,
b, // ((arglist-cont-nonempty 209 225))
{1, 2}, // ((inexpr-statement) (block-open 209))
c);
ご覧のとおり、中かっこの引数{1, 2}
は、テンプレート化された関数呼び出しで発生すると、適切にインデントされません。これは((inexpr-statement) (block-open X))
、((arglist-cont-nonempty Y Z))
(正確なオフセットは異なる可能性がありますC-c C-s
。構文ラベルを取得するために使用した後にコメントを編集しました)。
これを修正する方法を知っている人はいますか?Sourceforge から特別にダウンロードした最新バージョンの CC-Mode (5.32.5) と、Debian および Ubuntu に付属するデフォルト バージョンを試しましたが、どれもこれが間違っています。