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.
fuente
Respuestas:
A juzgar por su comentario anterior, solo desea usar
cinoptions
para 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
cinoptions
fue 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.Después de 7.4.355, es la
J
opción que controla la sangría, pero nada específicamente para corchetes. Por lo que pasé por alto en la fuente, laJ
opció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 a1
, 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.fuente