2010-05-13 14 views
6

Me gustaría alinear todos los miembros de la clase C++ nombres (no confundir con tipos de miembros) en una columna.¿Cómo alinear los nombres de los miembros de la clase C++ en una columna en emacs?

Veamos el ejemplo de lo que tenemos en la entrada:

class Foo 
{ 
public: 
    void method1(); 
    int     method2(); 
    const Bar *  method3() const; 
protected: 
    float m_member; 
}; 

y esto es lo que nos gustaría tener al final:

class Foo 
{ 
public: 
    void   method1(); 
    int   method2(); 
    const Bar * method3() const; 
protected: 
    float   m_member; 
}; 

Así que el más largo define declaración de tipo de miembro la columna a la que se alinearán los nombres de los miembros de la clase. ¿Cómo puedo realizar dicha transformación en emacs?

+0

Podrías usar 'align-regexp' con algunas cosas originales para lograr el efecto, pero estoy de acuerdo con Neil. –

+0

¿Qué sucede cuando Jimmy en su equipo agrega un nuevo método que devuelve 'const Thingummyjiggle *'? ¿Debería editar cada dos líneas en su archivo de encabezado? – Johnsyweb

+1

Neil: Es difícil hablar sobre las preferencias de uno :) Personalmente, creo que esta forma de formato de memeber de clase es agradable y elegante. También te ayuda a leer los métodos de miembro más rápido sin forzar demasiado tus músculos oculares. – KotBerbelot

Respuesta

6

Seleccione la región con las declaraciones de métodos

M-x align-regexp 

introducir la cadena de [^ ]+\((\|;\) y pulse Intro

Editado para añadir el ; en el juego, que se alinea la variable de miembro.

+0

Agregué el punto y coma que también alinea la variable miembro. –

+0

y @Tray, su solución combinada resuelve el problema publicado. Gracias a los dos :) – KotBerbelot

Cuestiones relacionadas