O que controla o recuo das linhas após um colchete aberto ao usar o cindent?

8

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.

Ryan Jarvis
fonte
1
Você já experimentou este github.com/pangloss/vim-javascript ?
Ôrel 26/03
1
Eu tenho, mas esse plugin parece recuar tudo do zero, usando funções personalizadas do VimScript, em vez de regras internas.
Ryan Jarvis

Respostas:

1

A julgar pelo seu comentário acima, você deseja usar apenas cinoptionspara 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 cinoptionsera 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.

O que controla a indentação das linhas entre colchetes, bem como a colocação do colchete de fechamento?

Após 7.4.355, é a Jopção que controla o recuo, mas nada especificamente para colchetes. Pelo que descrevi na fonte, a Jopçã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 a 1, 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.

Tommy A
fonte