Шаблоны C ++ и Emacs: настройка отступа

Насколько я знаю, в emacs нет способа настроить уровень отступа закрывающего символа '>' списка шаблонов в C ++.В настоящее время моя схема отступов emacs делает следующее:

template <
    typename T1,
    typename T2,
    typename T3
    >
class X;

Я хочу примерно следующее:

template <
    typename T1,
    typename T2,
    typename T3
>
class X;

Установка переменной отступа template-args-cont на ноль приведет к правильному отступу символа '>', но за счет удаления фактического отступа тело списка аргументов шаблона.

Есть какие-нибудь предложения от гуру emacs?

РЕДАКТИРОВАТЬ:

Я получил это отчасти, работая с помощью следующего хака:

(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
        '+)))

А затем установив template-args-cont на indent-templates в моей настраиваемой теме, ala:

(c-add-style "my-style"
             '("stroustrup"
                ;; ... Other stuff ...
                (template-args-cont . indent-templates))))

Но все равно глючит изрядно. В большинстве случаев это работает, но иногда emacs сбивается с толку, думая, что список шаблонов является списком аргументов, и тогда возникает веселье.

44
задан bstamour 21 October 2011 в 03:10
поделиться