2010-05-13 15 views
6

Desidero allineare tutti i membri della classe C++ nomi (non confondere con i tipi di membro) in una colonna.Come allineare i nomi dei membri della classe C++ in una colonna in emacs?

Vediamo l'esempio di quello che abbiamo a ingresso:

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

e questo è quello che ci piacerebbe avere alla fine:

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

Quindi più lunghe di tipo membro definisce dichiarazione la colonna in cui verranno allineati i nomi dei membri della classe. Come posso eseguire tale trasformazione in emacs?

+0

Si potrebbe usare 'align-regexp' con alcune cose funky per ottenere l'effetto, ma sono d'accordo con Neil. –

+0

Cosa succede quando Jimmy della tua squadra aggiunge un nuovo metodo che restituisce un 'const Thingummyjiggle *'? Dovrebbe modificare ogni altra riga nel file di intestazione? – Johnsyweb

+1

Neil: È difficile discutere delle proprie preferenze :) Personalmente ritengo che questa forma di formattazione del memeber di classe sia piacevole ed elegante. Ti aiuta anche a leggere i metodi dei membri più velocemente senza affaticare troppo i muscoli degli occhi. – KotBerbelot

risposta

6

selezionare la regione con le dichiarazioni di metodo

M-x align-regexp 

inserire la stringa [^ ]+\((\|;\) e premere Invio

Redatta per aggiungere il ; nella corrispondenza, che allinea la variabile del membro pure.

+0

Ho aggiunto il punto e virgola che allinea anche la variabile membro. –

+0

e @Tray, la soluzione unita risolve il problema postato. Grazie ad entrambi :) – KotBerbelot

Problemi correlati