2009-05-27 5 views
25

Je l'ai vu quelque part, mais je ne le trouve pas maintenant. Existe-t-il une fonction intégrée dans emacs ou quelqu'un d'autre a-t-il besoin d'aligner tous les signes d'égalité dans une série de déclarations d'initialisation en mode cc?Dans Emacs, comment aligner des signes égal dans une série d'instructions d'initialisation?

Avant:

int t=9; 
Graphics g = new Graphics(); 
List<String> list = new List<String>(); 

Après:

int   t = 9; 
Graphics  g = new Graphics(); 
List<String> list = new List<String>(); 

Répondre

38

Utilisez M-x align-regexp (ici, M-x align-regexp RET = RET). Vous pouvez également ajouter une "règle d'alignement" à la variable align-rules-list, de sorte qu'à l'avenir M-x align le fera. Voir la documentation (C-h f align) pour plus de détails.

+0

Ok, je suis lié à ce C-x |. Comment ai-je utilisé Emacs depuis si longtemps et je ne sais pas à ce sujet? Merci pour l'aide. – Cheeso

+0

Le seul problème avec ceci est qu'il "tabifie" la sortie, ce qui n'est probablement pas ce que vous voulez. Connaissez-vous un moyen d'empêcher cela? – harpo

+1

harpo: J'ai ajouté une nouvelle réponse à votre question. – phils

8

align M-x devrait faire l'affaire.

12

C'est en réponse au commentaire de Harpo à la réponse de ShreevatsaR:

Le seul problème est qu'il « tabifies » la sortie, ce qui est sans doute pas ce que vous voulez. Connaissez-vous un moyen d'empêcher cela?

Voici ce que je l'ai fait pour résoudre ce problème:

;; Align with spaces only 
(defadvice align-regexp (around align-regexp-with-spaces) 
    "Never use tabs for alignment." 
    (let ((indent-tabs-mode nil)) 
    ad-do-it)) 
(ad-activate 'align-regexp) 
+1

Ce n'est pas une grande réponse à la question originale, mais précieuse, précieuse , de valeur. (Je pense que j'ai juste Ballmered.) – JasonFruit

+0

Il m'a fallu du temps pour comprendre ce que cela fait (http://stackoverflow.com/questions/10921225/what-does-ad-activate-do) ... –