2013-08-14 30 views
10

vì một số lý do phức tạp, tôi muốn mở tệp trong thư mục nhất định (có thể có bất kỳ tên nào, không có phần mở rộng) trong chế độ C và tôi không muốn sửa đổi chúng cho Emacs (biến cục bộ tệp đã hết). Tôi đang đấu tranh với Emacs để làm điều đó, tuy nhiên. Tôi cố gắng để đưa điều này vào tôi dir-locals.el:Làm cách nào để đặt chế độ chính mặc định trong tệp thư mục cục bộ?

((nil . ((major-mode . c-mode)))) 

Mặc dù biến major-mode thực sự là ghi đè để c-mode khi tôi mở tập tin từ thư mục đó, chế độ C không được kích hoạt trên đệm. Điều gì đang xảy ra và làm thế nào để tôi áp dụng nó?

Ngoài ra, tôi có thể thêm vào auto-mode-alist chỉ dành cho thư mục này, nhưng tôi không biết cách thực hiện điều đó thông qua thư mục người dân địa phương.

Ngoài ra, có cách nào dễ dàng để thực thi mã từ dir-locals.el không? Tôi biết nó không an toàn, nhưng nó thậm chí có thể là mã trong cấu hình - vấn đề là gọi nó chỉ khi các biến từ dir-locals được xử lý (mở một tệp).

Cảm ơn bạn đã trợ giúp.

Trả lời

7

Trong .dir-locals.el bạn chỉ có thể đặt biến cho một giá trị nhất định. Mã của bạn được đặt là biến số major-mode với giá trị c-mode. Tuy nhiên, đây không phải là cách chế độ được kích hoạt. Để kích hoạt nó, bạn cần gọi hàm c-mode. Có một biến đặc biệt mà bạn có thể đặt trong .dir-locals.el để chạy một hàm: eval.

Do đó, đoạn mã sau hoạt động:

((nil . ((eval . (c-mode))))) 
+1

Cảm ơn. Tôi đã bỏ lỡ các biến tập tin cục bộ đặc biệt trong sổ tay, và không có đề cập đến rằng chúng cũng hoạt động như một thư mục cục bộ hoặc bất kỳ ví dụ nào. – JS0

+1

Nó được viết theo cách khác nhưng không rõ ràng. Nó nói rằng các biến thư mục cục bộ được xử lý như các biến tập tin. –

2

tôi không thể trả lời câu hỏi đầu tiên của bạn (và trên thực tế, sẽ muốn nghe câu trả lời cho điều đó bản thân mình) nhưng FIR các auto-mode-alist bạn có thể có

(setq auto-mode-alist (cons '("<your dir path here>\." . c-mode) auto-mode-alist))` 

này sẽ cho bạn kết quả bạn muốn

+1

Cảm ơn, tôi có thể làm điều đó để giải quyết vấn đề đó, mặc dù tôi muốn làm điều gì đó như vậy từ thư mục cục bộ chứ không phải từ cấu hình chung của tôi. – JS0

+0

hmmm, cách thêm móc để kiểm tra vị trí? bên cạnh đó, như tôi đã từng nói - tôi cũng muốn biết giải pháp chế độ chính ... – user2141046

10

Ngoài eval, đó cũng là một biến đặc biệt có tên mode có thể giúp bạn. Nó là biến tương tự được sử dụng bởi các biến tập tin cục bộ. Bạn cũng có thể viết:

((nil . ((mode . c)))) 
Các vấn đề liên quan