2009-06-09 11 views
8

Dire se ho il seguente:come allineare gli argomenti alle funzioni in emacs?

func(arg1, arg2, arg3...) 
func(longargarg1, longerarg2, arg3,...) 
... 

Come posso allineare gli argomenti in modo che è come segue?

func(arg1  , arg2  , arg3...) 
func(longargarg1, longerarg2, arg3,...) 
... 

[posso utilizzare M-x-allineamento regex per allineare il primo argomento, ma non posso cucinare con una regex atto ad allineare il resto degli argomenti. punto di bonus se la risposta anche prendere cure del caso in cui alcuni argomenti sono stringhe con virgole in loro]

+1

punti bonus! Dolce! – Cheeso

risposta

16

Selezionare la regione, quindi:.

C-u M-x align-regexp RET ,\(\s-*\) RET RET RET y 

Anche l'espressione regolare dice di allineare le virgole con gli spazi che li segue. Il valore predefinito di 1 per il gruppo paren da modificare indica gli spazi in cui è \(\s-*\), il valore predefinito 1 per gli spazi da regolare significa avere uno spazio dopo l'espansione più lunga e lo si desidera ripetere su tutta la linea.

+0

Fantastico! Non so nemmeno che ci sia una versione più complessa di align-regexp. Nota per se stessi: leggi le documentazioni ... Ma c'è una versione migliore della regexp che ignora le virgole se sono all'interno di una doppia coppia di quote? (emacs non sembra avere look-ahead/-dehind tipo di espressioni regolari) – polyglot

+0

È possibile scrivere la propria routine di allineamento che utilizza la tabella di sintassi per determinare quali virgole "contare" nella regex. Non sono sicuro di come farlo "facilmente", però. – jrockway

Problemi correlati