Emacs / CC-Mode不会以带括号的方式缩进模板化函数的参数

时间:2015-12-24 21:19:54

标签: c++ emacs cc-mode

考虑下面的C ++代码片段,在Emacs中使用cc-mode缩进:

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的默认版本,但是所有这些都错了。

0 个答案:

没有答案