Emacs / CC-Mode не делает отступ аргументов шаблонным функциям, начинающимся с фигурной скобки

Рассмотрим следующий фрагмент кода C ++ с отступом с использованием cc-mode в Emacs:

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 получить синтаксические метки).

Кто-нибудь знает, как можно это исправить? Я попробовал новейшую версию CC-Mode (5.32.5), специально загруженную из Sourceforge, а также версии по умолчанию, поставляемые с Debian и Ubuntu, но все они ошибаются.

3

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …