Hasta donde sé en emacs, no hay forma de personalizar el nivel de sangría del carácter '>' de cierre de una lista de plantillas en C++. Actualmente mi esquema emacs muesca hace esto:Plantillas C++ y Emacs: Personalización de sangría
template <
typename T1,
typename T2,
typename T3
>
class X;
Lo que yo quiero es algo como esto:
template <
typename T1,
typename T2,
typename T3
>
class X;
definición de la sangría plantilla-args-CONT a cero será sangrar el carácter '>' adecuadamente variables, pero a costa de eliminar el verdadero cuerpo de la lista de argumentos de la plantilla.
¿Alguna sugerencia de los gurús de emacs que hay?
EDIT:
lo tengo un poco de trabajo con el siguiente truco:
(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
'+)))
, y luego poner plantilla-args-CONT para sangrar las plantillas en mi tema personalizado, Ala:
(c-add-style "my-style"
'("stroustrup"
;; ... Other stuff ...
(template-args-cont . indent-templates))))
Pero todavía es bastante buggy. Funciona la mayor parte del tiempo, pero a veces emacs se confunde al pensar que una lista de plantillas es un arglist, y luego se produce la hilaridad.
No estoy seguro de si es posible, pero si es usted puede encontrar información en esta página: http://www.gnu.org/software/emacs/manual/html_mono/ccmode.html#Internet de Customizing – rve
En realidad , Creo que podría ser posible si escribes tu propia función de alineación. El documento de mi comentario anterior brinda más información sobre esto. – rve
Tenga en cuenta que el modo C++ de Emacs tiende a confundirse periódicamente sobre los argumentos de la plantilla en general, por lo que puede no ser realmente un problema con su código ... [para ser justos, en realidad es bastante difícil hacerlo bien, debido a los múltiples significados de '<' and '>' en C++ (a veces como delimitador equilibrado, a veces como operador), a menos que realice mucho más análisis que el modo C++ - ...] – snogglethorpe