2009-06-03 3 views
4

Мне не повезло получить Emacs (cc-mode), чтобы указать многострочные аргументы шаблона. Вот пример строки:Отступы аргументов шаблона в Emacs

typedef ::boost::zip_iterator< ::boost::tuple< 
vector<int>::const_iterator, vector<float>::const_iterator > >; 

Я бы хотел, чтобы вторая строка была отступом, как в функции. Он отстутнут, пока я не войду во второй-последний >, после чего вторая строка вверх перемещается влево, чтобы выровнять его с помощью typedef.

Когда я начинаю вводить вторую строку, синтаксический анализ равен ((statement-cont 52)), до второго по последнему >, после чего он становится ((defun-block-intro 46)). Удаление символа не возвращается к старому синтаксическому анализу.

Ожидается, что в качестве синтаксического анализа будет иметь шаблон-args-cont.

Я использую emacs 22.2 (ubuntu intrepid) и cc-mode версии 5.31.5, которые пришли с ним.

ответ

3

Вы, , должны просто необходимо установить template-args-cont на полезное значение. Чтобы поэкспериментировать с ним, наведите курсор на вторую строку и введите C-cC-o для c-set-offset. Вставьте удобное значение. С 4, я получаю:

typedef ::boost::zip_iterator< ::boost::tuple< 
    vector<int>::const_iterator, vector<float>::const_iterator > >; 

Если это не работает, проверьте вашу версию: У меня есть куб.см режим версии 5.31.6. Чтобы проверить, сделайте M-x c-version. Я получаю

Using CC Mode version 5.31.6 
+0

'C-сС-O' позволяет мне изменить смещение для синтаксического символа для шаблона-арг-прода Я уже садился, что в моих .emacs как +, и это по умолчанию' C -cC-o' предлагает установить его. Установка его на номер не имеет значения. Насколько я могу судить, cc-mode не распознает эту строку как синтаксис template-args-cont. (Я использую версию cc-mode 5.31.5.) – AFoglia

+0

Ну, очевидно, что нужно обновить до 5.31.6 или, по крайней мере, взглянуть на журнал изменений. В любом случае приведенный выше пример вырезается и вставляется из сеанса emacs, где я делал C-C C-o 4 и повторно привязывался к TAB; получили идентичные результаты с отступом. Если это не сработает, тогда вы, возможно, сделали что-то художественное в другом месте в вашем .emacs; попробуйте посмотреть emacs с -no-init-file и посмотреть, что произойдет. –

+0

Кроме того, я думаю, что 5.31.6 поставляется только с Emacs 23. Он недоступен для загрузки на сайте cc-mode http://cc-mode.sourceforge.net/index.php. Символ template-args-cont был введен 5.15, так что это не новая функция. Я попытался сделать emacs --no-init-file, и это не изменило отступ. – AFoglia

Смежные вопросы