2009-06-09 30 views
8

Diga si tengo el siguiente:cómo alinear argumentos a funciones en emacs?

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

¿Cómo alinear los argumentos por lo que es como lo siguiente?

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

[I puede utilizar M-x align-regex para alinear el primer argumento, pero no puede cocinar con una expresión regular adecuado para alinear el resto de los argumentos. punto de bonificación si la respuesta también tener cuidados del caso cuando algunos argumentos son cadenas con comas en ellos]

+1

puntos de bonificación! ¡Dulce! – Cheeso

Respuesta

16

Seleccione la región, entonces:.

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

La expresión regular dice para alinear las comas con espacios siguientes ellos. El valor predeterminado de 1 para el grupo paren para modificar significa insertar espacios donde está el \(\s-*\), el valor predeterminado de 1 para espacios para ajustar significa que tiene un espacio después de la expansión más larga, y desea que se repita en toda la línea.

+0

¡Genial! Ni siquiera sé que hay una versión más compleja de align-regexp. Nota para uno mismo: leer documentaciones ... ¿Pero hay una mejor versión de la expresión regular que ignore las comas si están dentro de un par de comillas dobles? (emacs no parece tener look-ahead /-behind type of regexps) – polyglot

+0

Puede escribir su propia rutina de alineación que usa la tabla de sintaxis para determinar qué comas "cuentan" en la expresión regular. Sin embargo, no estoy seguro de cómo hacer eso "fácilmente". – jrockway

Cuestiones relacionadas