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.
sumber
Jawaban:
Menilai dari komentar Anda di atas, Anda ingin menggunakan hanya
cinoptions
untuk 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
cinoptions
awalnya 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.Setelah 7.4.355, itu adalah
J
opsi yang mengontrol lekukan, tetapi tidak ada yang khusus untuk tanda kurung. Dari apa yang saya sembunyikan di sumber,J
opsi 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 a1
, sehingga tidak meningkatkan lekukan.Jika baris pertama dalam contoh keempat Anda berakhir dengan
[
atau,
(atau keduanya[,
) baris berikutnya akan meningkatkan indentasi.sumber