2010-05-13 15 views
6

Je voudrais aligner tous les membres de la classe C++ noms (ne pas confondre avec les types de membres) dans une colonne.Comment aligner les noms de membres de classe C++ dans une colonne dans emacs?

permet de regarder l'exemple de ce que nous avons à l'entrée:

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

et c'est ce que nous aimerions avoir à la fin:

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

Ainsi, les plus longues définit de déclaration de type membre la colonne à laquelle les noms des membres de classe seront alignés. Comment puis-je effectuer une telle transformation dans emacs?

+0

Vous pouvez utiliser 'align-regexp' avec des trucs géniaux pour obtenir l'effet, mais je suis d'accord avec Neil. –

+0

Que se passe-t-il lorsque Jimmy, dans votre équipe, ajoute une nouvelle méthode qui retourne un 'const Thingummyjiggle *'? Devrait-il modifier toutes les autres lignes dans votre fichier d'en-tête? – Johnsyweb

+1

Neil: Il est difficile de discuter de ses préférences :) Personnellement, je pense que cette forme de formatage est gentille et élégante. Il vous aide également à lire les méthodes de membre plus rapidement sans trop fatiguer vos muscles oculaires. – KotBerbelot

Répondre

6

Sélectionnez la région avec les déclarations de méthode

M-x align-regexp 

Entrez la chaîne [^ ]+\((\|;\) et appuyez sur Entrée

Edité pour ajouter le ; dans la mise en correspondance, qui aligne la variable de membre ainsi.

+0

J'ai ajouté le point-virgule qui aligne également la variable membre. –

+0

et @Tray, votre solution fusionnée résout le problème affiché. Merci à vous deux :) – KotBerbelot