2010-11-24 9 views
5

¿Alguien sabe cómo impedir que emacs insulte el nombre de las funciones o clases después de una cláusula de plantilla?Categoría/funciones de plantilla de sangría de Emacs

CurrentY el resultado es:

template <typename T> 
    class A { 
    /* ... */ 
    }; 

donde me gustaría tener:

template <typename T> 
class A { 
/* ... */ 
}; 

muchas gracias por su ayuda.

EDITAR 1 Estoy usando C++ - mode con java como estilo de guion para C++. Personalicé el c-offset-alist de esta manera:

(custom-set-variables 
;; 
'(c-offsets-alist (quote ((case-label . +) (innamespace . 0)))) 
+1

has escrito algo en los .emacs? Obtengo el que pides por defecto. Empecé emacs -Q. – vpit3833

+0

@ vpit3833 He editado la pregunta para que la situación sea más clara –

Respuesta

8

Vaya a la línea class y pulse TAB para realizar la sangría (no solicitada).
A continuación, pulse Control-CControl-Oto display the indent mode for superior-intro-cont`

Press ENTER, entonces se puede cambiar el número de guión (3 a 0, por ejemplo).

Al final de su .emacs se puede establecer de forma permanente que la instrucción:

(c-set-offset 'topmost-intro-cont 0 nil) 
+0

¿Cómo presiono^C^o? ¡Gracias! – Beginner

0

No lo sé, pero me imagino que su modo hace la diferencia. ¿En qué modo estás editando? Supongo que el modo C++ causa que tenga c++ como una etiqueta.

Para mí, en C++ - modo, resultó así:

template <typename T> 
class A { 
    /* ... */ 
}; 

Con los comentarios sangría, pero no class A sangría.

+0

Sí, estoy en el modo 'C++' –

3

Hay diferentes estilos para la indentación para el modo C++ de Emacs. Quoting EmacsWiki:

Una lista parcial de los estilos C más conocidos:

  • “GNU”: El estilo por defecto para GNU proyecta
  • “k & r”: ¿Qué Kernighan y Ritchie, los autores de C usado en su libro
  • "bsd": Lo que los desarrolladores de BSD usan, también conocido como "estilo Allman" después de Eric Allman.
  • “BS”: ¿Qué BS, el autor de C++ utilizado en su libro
  • “linux”: ¿Qué usan los desarrolladores de Linux para el desarrollo del núcleo
  • “pitón”: ¿Qué usan los desarrolladores de Python para módulos de expansión
  • “java”: El estilo por defecto para java-mode (véase más adelante)
  • “usuario”: Cuando se quiere definir su propio estilo

La variable c-default-style es lo que hay que cambiar. Quizás uno de ellos sea lo que necesites. No tengo Emacs ahora, así que no puedo verlos.

+0

Muchas gracias. Ya he elegido el estilo * java * como estilo de sangría para C++, y lo he personalizado para espacios de nombres usando 'c-offssets-alist'. Me gustaría saber si existe la posibilidad de hacer lo mismo con las plantillas –

0

Un par de cosas diferentes para comprobar:

que he visto problemas similares al editar archivos de C++ .h en modo C en lugar de C++ - mode. Por defecto, los archivos .h son del modo C, no del modo C++. [Puede verificar esto buscando "C++" o "C" entre paréntesis en la parte inferior de la ventana.] Puede configurar emacs para abrir siempre archivos .h como C++ utilizando lo siguiente en su .emacs

(setq auto-mode-alist (append '(("\\.h\\'" . c++-mode) 
       ) 
        auto-mode-alist 
       )) 

La otra cosa para comprobar es cómo ha configurado su c-default-style. La página de información para "Modo CC" entra en muchos más detalles sobre todas las posibilidades.

Cuestiones relacionadas