Làm cách nào để đặt chế độ chính cho một tệp trong .dir-locals.el?


7

Tôi muốn đặt chế độ chính cho một tệp như bạn sử dụng các biến cục bộ tệp

Local Variables:
mode: text
End:

nhưng .dir-locals.elđể không gây ô nhiễm trên mạng. Điều này có thể không?


Đây có phải là hoàn toàn cho sử dụng cá nhân, hoặc một cái gì đó bạn muốn có thể chia sẻ? Có một số cách bạn có thể giải quyết vấn đề này trong elisp, thay vì dùng đến các biến thư mục-cục bộ.
phils

@phils Thật tuyệt khi có một giải pháp có thể chia sẻ, đó là lý do tại sao tôi nghĩ về người dân địa phương. Nhưng thực tế, nó ít nhiều mang tính cá nhân. (Không có khả năng được chia sẻ với nhiều người và những người biết nếu họ sử dụng emacs và / hoặc chăm sóc).
xebtl

Đồng ý. Tôi nghĩ rằng sử dụng biến evalgiả cách duy nhất để xử lý nó trong một .dir-locals.eltệp. Đối với elisp tùy chỉnh, bạn có thể chỉ cần nhìn vào sử dụng auto-mode-alistđể khớp với tên tệp regrec (bạn có thể sử dụng regexp-quoteđể tạo các mẫu cho các giá trị chuỗi nguyên văn, nếu cần).
phils

Câu trả lời:


4

Có thể chỉ định một chuỗi thay vì một chế độ, nhưng điều này chỉ hoạt động cho các thư mục con. Vì vậy, tôi sẽ sử dụng nilthay thế để khớp với tất cả các chế độ, sau đó là evalphím để thay đổi chế độ chính một cách có điều kiện:

((nil
  (eval
   (lambda ()
     (when (string= (file-name-nondirectory buffer-file-name)
                    "file-name.extension")
       (my-mode))))))

Một nhược điểm của phương pháp này là evalkhóa không an toàn, do đó bạn sẽ cần xác nhận biến vĩnh viễn để điều này có hiệu lực.


Cảm ơn, điều này làm việc. Ai đó có thể giải thích sự khác biệt với các hình thức sau đây? `` `((nil. (eval.
Swarnendu Biswas

2

Các thao .dir-locals.eltác sau chỉ phù hợp với tôi để đặt chế độ chính của tất cả các tệp trong một thư mục thành shell-script-mode:

((nil . ((mode . shell-script))))

Nhược điểm rõ ràng là bạn không thể chỉ định chế độ chính cho chỉ một tập hợp con tệp đã cho trong thư mục.

Phụ lục: Thật thú vị, nó cũng có tác dụng phụ là thiết lập chế độ .dir-locals.elchính của chính nó shell-script-mode.

Phụ lục 2: Khá thú vị hơn, nó cũng có tác dụng phụ là thiết lập chế độ chính của bộ đệm Dired shell-script-mode, khiến nó không thể mở bất kỳ (vì một lỗi được đưa ra trong quá trình khởi tạo).

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.