Điều gì kiểm soát thụt dòng của một dòng sau một dấu ngoặc vuông mở khi sử dụng cindent?


8

Tôi đang cố gắng xây dựng tệp thụt lề của riêng mình cho JavaScript. Tệp thụt lề mặc định cho JavaScript bật cindent, với các sửa đổi tối thiểu và tôi đang sử dụng nó làm cơ sở.

Trên Vim 7.3 cho OSX El Capitan, nhập một mảng sẽ tạo ra các mặc định sau:

var test = [
1,
    2,
    3
    ];

Và lưu ý, mặc dù không hợp pháp JavaScript, tôi nhận thấy việc không sử dụng dấu phẩy sẽ tạo ra một hành vi hơi khác:

var test = [
1
2
3
];

Vào ngày 7.4, việc gõ hai ví dụ trên tạo ra những gì tôi mong đợi:

var test = [
    1,
    2,
    3
];

var test = [
    1
    2
    3
];

Tuy nhiên, nếu bạn bao gồm một số ký tự ngay sau dấu ngoặc vuông mở, nó sẽ quay trở lại:

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

Điều gì kiểm soát sự thụt dòng của các đường giữa các dấu ngoặc vuông cũng như vị trí của dấu ngoặc vuông đóng? Khi xem tài liệu Vim , tôi không thấy giá trị điện ảnh nắm bắt được điều này.


1
Bạn đã thử cái này github.com/pangloss/vim-javascript chưa?
Ô

1
Tôi có nhưng plugin đó dường như thụt mọi thứ từ đầu bằng cách sử dụng các hàm VimScript tùy chỉnh thay vì các quy tắc được xây dựng.
Ryan Jarvis

Câu trả lời:


1

Đánh giá từ nhận xét của bạn ở trên, bạn chỉ muốn sử dụng cinoptionsđể kiểm soát thụt lề cho dấu ngoặc vuông. Nó đơn giản là không thể trước 7.4.355 từ những gì tôi thấy trong mã nguồn . Nhấp vào đổ lỗi lên trên để xem phiên bản được gắn thẻ, nhưng sẽ mất một lúc để tải.

Vì có vẻ như cinoptionsban đầu là C, C ++ và Java, nên nó chỉ xử lý các dấu ngoặc nhọn và dấu ngoặc đơn vì dấu ngoặc vuông được sử dụng để xác định kích thước mảng hoặc truy cập các chỉ mục trong các ngôn ngữ đó không khởi tạo chúng.

Điều gì kiểm soát sự thụt dòng của các đường giữa các dấu ngoặc vuông cũng như vị trí của dấu ngoặc vuông đóng?

Sau 7.4.355, đó là Jtùy chọn kiểm soát vết lõm, nhưng không có gì đặc biệt cho dấu ngoặc vuông. Từ những gì tôi trình bày trong nguồn, Jtùy chọn chỉ biểu thị rằng cú pháp JavaScript nên được xem xét ( curbuf->b_ind_js). Nó tìm kiếm một dòng trước đó được chấm dứt bằng dấu phẩy hoặc dấu ngoặc mở để xếp hàng. Trong ví dụ thứ tư của bạn, dòng kết thúc bằng a 1, vì vậy nó không làm tăng vết lõm.

Nếu dòng đầu tiên trong ví dụ thứ tư của bạn kết thúc bằng một [hoặc ,(hoặc cả hai [,), các dòng tiếp theo sẽ tăng thụt lề.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.