¿Qué controla la sangría de las líneas que siguen un corchete abierto cuando se usa cindent?


8

Estoy tratando de construir mi propio archivo de sangría para JavaScript. El archivo de sangría predeterminado para JavaScript activa cindent, con modificaciones mínimas, y lo estoy usando como base.

En Vim 7.3 para OSX El Capitan, escribir una matriz produce lo siguiente por defecto:

var test = [
1,
    2,
    3
    ];

Y tenga en cuenta que, aunque no es JavaScript legal, noté que no usar una coma produce un comportamiento ligeramente diferente:

var test = [
1
2
3
];

En 7.4, escribir los dos ejemplos anteriores produce lo que espero:

var test = [
    1,
    2,
    3
];

var test = [
    1
    2
    3
];

Sin embargo, si incluye algunos caracteres inmediatamente después del corchete abierto, vuelve a estar fuera de control:

var test = [1
2,
    3,
    4
];

¿Qué controla la sangría de las líneas entre corchetes y la colocación del corchete de cierre? Cuando veo la documentación de Vim , no veo un valor cinops que capture esto.


1
¿Has probado este github.com/pangloss/vim-javascript ?
Ôrel

1
Tengo pero ese complemento parece sangrar todo desde cero utilizando funciones personalizadas de VimScript en lugar de reglas integradas.
Ryan Jarvis

Respuestas:


1

A juzgar por su comentario anterior, solo desea usar cinoptionspara controlar la sangría de corchetes. Simplemente no era posible antes de 7.4.355 de lo que veo en el código fuente . Haga clic en culpar arriba para ver la versión etiquetada, pero la carga tardará un tiempo.

Como parece que cinoptionsfue originalmente para C, C ++ y Java, solo trató con llaves y paréntesis porque los corchetes se usan para definir tamaños de matriz o acceder a índices en esos lenguajes - sin inicializarlos.

¿Qué controla la sangría de las líneas entre corchetes y la colocación del corchete de cierre?

Después de 7.4.355, es la Jopción que controla la sangría, pero nada específicamente para corchetes. Por lo que pasé por alto en la fuente, la Jopción solo significa que se debe considerar la sintaxis de JavaScript ( curbuf->b_ind_js). Busca una línea anterior que termina con una coma o un corchete de apertura para alinearse. En su cuarto ejemplo, la línea termina con a 1, por lo que no aumenta la sangría.

Si la primera línea en su cuarto ejemplo termina con una [o ,(o ambas [,) las líneas siguientes aumentarán la sangría.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.