Насколько я знаю, в 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 сбивается с толку, думая, что список шаблонов является списком аргументов, и тогда возникает веселье.