Apa yang mengontrol lekukan garis mengikuti braket kotak terbuka saat menggunakan cindent?

8

Saya mencoba membuat file indent sendiri untuk JavaScript. File indentasi default untuk JavaScript mengaktifkan cindent, dengan modifikasi minimal, dan saya menggunakannya sebagai basis.

Pada Vim 7.3 untuk OSX El Capitan, mengetik sebuah array menghasilkan yang berikut ini secara default:

var test = [
1,
    2,
    3
    ];

Dan perhatikan, meski bukan JavaScript yang legal, saya perhatikan tidak menggunakan koma menghasilkan perilaku yang sedikit berbeda:

var test = [
1
2
3
];

Pada 7.4, mengetik dua contoh di atas menghasilkan apa yang saya harapkan:

var test = [
    1,
    2,
    3
];

var test = [
    1
    2
    3
];

Namun, jika Anda memasukkan beberapa karakter segera setelah braket kotak terbuka itu akan kembali rusak:

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

Apa yang mengontrol lekukan garis antara tanda kurung kotak serta penempatan braket kotak penutup? Saat melihat dokumentasi Vim , saya tidak melihat nilai opsi yang menangkap ini.

Ryan Jarvis
sumber
1
Sudahkah Anda mencoba yang ini github.com/pangloss/vim-javascript ?
Ôrel
1
Saya memiliki tetapi plugin itu tampaknya indentasi semuanya dari awal menggunakan fungsi VimScript kustom bukannya aturan bawaan.
Ryan Jarvis

Jawaban:

1

Menilai dari komentar Anda di atas, Anda ingin menggunakan hanya cinoptionsuntuk mengontrol indent untuk kurung siku. Itu tidak mungkin sebelum 7.4.355 dari apa yang saya lihat di kode sumber . Klik salahkan bagian atas untuk melihat versi yang ditandai, tetapi perlu beberapa saat untuk memuat.

Karena sepertinya cinoptionsawalnya untuk C, C ++, dan Java, itu hanya berurusan dengan kurung kurawal dan kurung karena kurung kotak digunakan untuk menentukan ukuran array atau mengakses indeks dalam bahasa-bahasa - tidak menginisialisasi mereka.

Apa yang mengontrol lekukan garis antara tanda kurung kotak serta penempatan braket kotak penutup?

Setelah 7.4.355, itu adalah Jopsi yang mengontrol lekukan, tetapi tidak ada yang khusus untuk tanda kurung. Dari apa yang saya sembunyikan di sumber, Jopsi hanya menandakan bahwa sintaksis JavaScript harus dipertimbangkan ( curbuf->b_ind_js). Tampaknya ada baris sebelumnya yang diakhiri dengan koma atau braket pembuka untuk disejajarkan. Pada contoh keempat Anda, baris diakhiri dengan a 1, sehingga tidak meningkatkan lekukan.

Jika baris pertama dalam contoh keempat Anda berakhir dengan [atau ,(atau keduanya [,) baris berikutnya akan meningkatkan indentasi.

Tommy A
sumber