2009-05-27 9 views
25

L'ho visto da qualche parte, ma non riesco a trovarlo ora. Esiste una funzione incorporata in emacs o qualcuno ha l'elis, per allineare tutti i segni di uguale in una serie di inizializzazioni in cc-mode?In Emacs, come allineare i segni uguali in una serie di istruzioni di inizializzazione?

Prima:

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

Dopo:

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

risposta

38

Utilizzare M-x align-regexp (qui, M-x align-regexp RET = RET). È inoltre possibile aggiungere una "regola di allineamento" alla variabile , in modo che in futuro lo facciano M-x align. Vedere la documentazione (C-h f align) per i dettagli.

+0

Ok, ho legato questo per C-x |. Come ho usato emacs per così tanto tempo e non ne sono a conoscenza? Grazie per l'aiuto. – Cheeso

+0

L'unico problema è che "tabifica" l'output, che probabilmente non è quello che vuoi. Conosci qualche modo per impedirlo? – harpo

+1

harpo: ho aggiunto una nuova risposta alla tua domanda. – phils

8

M-x align dovrebbe fare il trucco.

12

Questo è in risposta al commento di Harpo alla risposta di ShreevatsaR:

L'unico problema di questo è che "tabifies" l'uscita, che probabilmente non è quello che vogliono. Conosci qualche modo per impedirlo?

Ecco cosa ho fatto per risolvere questo problema:

;; 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

Questa non è una grande risposta alla domanda originale, ma preziosa, preziosa , prezioso. (Penso di avere solo Ballmered.) – JasonFruit

+0

Mi ci è voluto un po 'di tempo per capire cosa questo [fa] (http://stackoverflow.com/questions/10921225/what-does-ad-activate-do) ... –