Tôi muốn biết cách tốt nhất để tùy chỉnh tự động định dạng/tự động thụt lề trong vim cho Common Lisp.Cách tốt nhất để tùy chỉnh tự động định dạng/tự động thụt lề trong vim cho Common Lisp
Tự động định dạng (Tôi thường làm điều này bằng cách nhập '==' ở chế độ lệnh trên mỗi dòng) hoạt động rất tốt cho ngôn ngữ cơ sở trong vim (ví dụ: defmacro, defun, lambda, if, with-output-to -string), nhưng bất kỳ lúc nào các cấu trúc ngôn ngữ mới được định nghĩa (ví dụ: sử dụng macro), tôi thấy rằng định dạng cho cấu trúc mới thường không phải là thứ tôi muốn.
Ví dụ, dưới đây là cách vim định dạng 'khi (tiêu chuẩn lisp xây dựng) và' awhen (thường được sử dụng phiên bản anaphoric của 'khi; không nằm trong tiêu chuẩn lisp)
(when 'this
(process 'this))
(awhen 'this
(process it))
Tôi muốn' awhen để tự động định dạng như 'khi nào. Bất kỳ ý tưởng làm thế nào tôi có thể làm điều này?
Chỉnh sửa: Cảm ơn Gilligan và Tamas về đề xuất Slimv. Như một thử nghiệm, tôi đã tải về MacVim (sẽ cần thiết làm việc với vim terminal, nhưng đó là một vấn đề khác) và slimv, đã tải xuống bản tải xuống slimv thành ~/.vim, khởi chạy MacVim và tải một tệp .lisp.
Sau đó tôi khởi động máy chủ lisp (được thực hiện thông qua GUI với MacVim), đã tải lên tệp thực thi lisp mặc định của tôi và tệp lõi.
Và * vì tệp lõi của tôi đã được tải bằng các tiện ích mở rộng ngôn ngữ mà tôi thường sử dụng (awhen là một trong số chúng), nên định dạng lại chính xác ngay ngoài hộp.
Tôi thực sự thích giải pháp này. Thay vì [1] phải học cách nói vim để thụt lề các chức năng cụ thể đúng cách, và [2] viết mã thực hiện điều này một cách rõ ràng cho từng phần mở rộng ngôn ngữ mà tôi xác định, và [3] cập nhật mã đó mỗi khi tôi thêm mới xây dựng ngôn ngữ. Thay vào đó, tôi sử dụng slimv để thực hiện định dạng cho tôi. Và slimv có thể 'tìm hiểu' các phần mở rộng ngôn ngữ mới, miễn là các macro đó đã được tải vào lõi lisp mà phiên máy chủ đang sử dụng. Khá trơn!
Tôi nhận thấy rằng tính năng này hoạt động tốt cho một loại tiện ích mở rộng ngôn ngữ cụ thể. Thông thường những người được định nghĩa là macro, sử dụng từ khóa nội dung &. Điều này dường như 'làm điều đúng' hầu hết thời gian, nhưng có những macro tôi sử dụng mà vẫn không tự động định dạng đúng. Mặc dù tôi muốn nói rằng điều này có nhiều khả năng là một vấn đề với cách macro được viết (phần mở rộng ngôn ngữ không chuẩn) so với bất kỳ thứ gì khác.
Vì vậy, giải pháp này hoạt động tốt cho tôi trong hầu hết các trường hợp và tôi không phải mã (và duy trì) bất cứ điều gì. Công cụ tuyệt vời!
Tôi rất vui vì bạn thích slimv.Nếu bạn tìm thấy bất kỳ vấn đề thụt đầu dòng nào, vui lòng báo cáo cho tôi (Tôi là tác giả của slimv, bạn có thể tìm thấy địa chỉ email của tôi trong tài liệu). –
Câu trả lời Slimv không hữu ích cho những người muốn thụt lề tốt hơn các dạng chuẩn trong một phương ngữ Lisp không phải là Lisp thông dụng. – Kaz