2009-09-14 25 views
5

Theo trang thông tin emacs, dưới đây là cách bạn kích hoạt iswitchb-mode:Tại sao tôi bắt đầu chế độ iswitchb theo cách này?

Để kích hoạt chế độ Iswitchb, gõ M-x iswitchb-mode, hoặc tùy chỉnh biến iswitchb-mode để t

Vì vậy, tôi đặt sau trong .emacs của tôi:

(setq iswitchb-mode t) 

Tuy nhiên, điều này dường như không hiệu quả. Sau khi tìm kiếm wiki emacs, tôi thấy rằng tôi cần sử dụng điều này:

(iswitchb-mode 1) 

Ai đó có thể giải thích lý do tại sao tôi cần bật theo cách này? Tôi muốn hiểu rõ hơn về elisp hơn là chỉ sao chép và dán mọi thứ từ những nơi.

Trả lời

8

Thông thường một chế độ sẽ xác định cả biến và hàm có cùng tên. Hàm sẽ đặt biến đúng khi được gọi, nhưng đó là hàm bật chế độ chứ không chỉ biến (chỉ theo dõi trạng thái của chế độ).

Trong trường hợp cụ thể của bạn, bạn được cho biết đã tùy chỉnh biến, nhưng bạn chỉ cần đặt biến đó. Sự khác biệt là khi giá trị của biến thay đổi, tùy chỉnh biết làm điều gì đó và `setq 'không biết gì về điều này. Nếu bạn xem xét trợ giúp cho biến này (C-h v iswitchb-mode), bạn sẽ nhận được:

iswitchb-mode is a variable defined in `iswitchb.el'. 
Its value is t 

Documentation: 
Non-nil if Iswitchb mode is enabled. 
See the command `iswitchb-mode' for a description of this minor mode. 
Setting this variable directly does not take effect; 
either customize it (see the info node `Easy Customization') 
or call the function `iswitchb-mode'. 

You can customize this variable. 
+0

Cảm ơn bạn. Tôi đã không nhận thức được tất cả điều này về elisp. –

+0

Thật không may, nó không phải là dễ dàng để suy luận (ngoài mô tả của biến). iswitchb (và hầu hết các chế độ nhỏ) sử dụng macro 'define-minor-mode 'để quản lý cơ chế thực sự của việc xây dựng chế độ, bật và tắt nó, tùy biến biến, keymaps và tương tự, vì vậy bạn phải đào sâu vào định nghĩa chức năng của 'define-minor-mode 'chính nó để thu thập cách thức công cụ này được đặt lại với nhau. –

Các vấn đề liên quan