Estou tentando criar meu próprio arquivo de indentação para JavaScript. O arquivo de recuo padrão para JavaScript ativa o cindent, com modificações mínimas, e estou usando isso como base.
No Vim 7.3 para OSX El Capitan, a digitação de uma matriz produz o seguinte por padrão:
var test = [
1,
2,
3
];
E note que, embora não seja JavaScript legal, notei que não usar vírgula produz um comportamento ligeiramente diferente:
var test = [
1
2
3
];
Na 7.4, digitar os dois exemplos acima produz o que eu espero:
var test = [
1,
2,
3
];
var test = [
1
2
3
];
No entanto, se você incluir alguns caracteres imediatamente após o colchete aberto, ele voltará ao normal:
var test = [1
2,
3,
4
];
O que controla a indentação das linhas entre colchetes, bem como a colocação do colchete de fechamento? Ao visualizar a documentação do Vim , não vejo um valor de cinoptions que captura isso.
fonte
Respostas:
A julgar pelo seu comentário acima, você deseja usar apenas
cinoptions
para controlar o recuo entre colchetes. Simplesmente não era possível antes da 7.4.355 pelo que vejo no código fonte . Clique em culpar a parte superior para ver a versão marcada, mas vai demorar um pouco para carregar.Como parece que
cinoptions
era originalmente para C, C ++ e Java, ele lidava apenas com chaves e parênteses porque colchetes são usados para definir tamanhos de matriz ou acessar índices nessas linguagens, sem inicializá-los.Após 7.4.355, é a
J
opção que controla o recuo, mas nada especificamente para colchetes. Pelo que descrevi na fonte, aJ
opção significa apenas que a sintaxe do JavaScript deve ser considerada (curbuf->b_ind_js
). Ele procura uma linha anterior terminada por vírgula ou colchete de abertura para alinhar. No seu quarto exemplo, a linha termina com a1
, para que não aumente o recuo.Se a primeira linha do seu quarto exemplo terminasse com um
[
ou,
(ou ambos[,
), as linhas subsequentes aumentariam o recuo.fonte