2011-07-28 27 views

Trả lời

17

Rất có thể, bạn không thực sự muốn kích hoạt flyspell-mode cho tất cả các chế độ, nhưng thay vào đó kích hoạt chế độ lập trình (C/C++, Java) Ruby, Lisp, v.v.) Sự khác biệt giữa hai chế độ là lần đầu tiên kiểm tra tất cả các từ, trong khi flyspell-prog-mode chỉ kiểm tra các từ trong nhận xét và chuỗi (do đó tránh kiểm tra mã, thường không phải là từ).

Dù bằng cách nào, không có nơi duy nhất để kích hoạt flyspell trong tất cả các tệp/bộ đệm vì nó đã được viết để luôn luôn là bộ đệm cục bộ. Một xấp xỉ gần sẽ

(defun turn-on-flyspell() (flyspell-mode 1)) 
(add-hook 'find-file-hooks 'turn-on-flyspell) 

Đó không bao gồm bộ đệm mà không có file có liên quan, và tôi không khuyên sử dụng nó bởi vì nó không phân biệt giữa các phương thức lập trình và phương thức phi lập trình - mà tôi nghĩ là hữu ích.

Bởi vì không có cách nào để biết liệu phương thức nhất định được lập trình chế độ hay không, bạn cần phải tự thêm các tùy chỉnh cho tất cả các phương thức lập trình mà bạn quan tâm, với một cái gì đó như:

(mapcar (lambda (mode-hook) (add-hook mode-hook 'flyspell-prog-mode)) 
     '(c-mode-common-hook tcl-mode-hook emacs-lisp-mode-hook 
      ruby-mode-hook java-mode-hook)) 

Lưu ý: hai các đoạn mã có thể không chơi tốt với nhau.

Và, về XML, flyspell đã có các tùy chỉnh cho sgml-mode, html-modenxml-mode để không đánh vần kiểm tra các thẻ (như của Emacs 23.2). Nếu bạn đang sử dụng phiên bản cũ hơn của Emacs (quay lại 21.1), bạn sẽ có thể thêm nó vào.emacs để có được sự hỗ trợ cho nxml-mode:

(put 'nxml-mode 'flyspell-mode-predicate 'sgml-mode-flyspell-verify) 
+0

Tôi đang sử dụng chế độ nXml. Vì vậy, nếu tôi muốn, ví dụ, flyspell được tự động bật cho tất cả các tập tin markdown, tôi có thể sử dụng một cái gì đó như thế này? (add-hook 'markdown-mode-hook' chế độ flyspell) – mart1n

+0

@ mart1n Tôi đã thêm nhiều thông tin hơn về xử lý XML, bạn có thể cần dòng cập nhật cuối cùng nếu bạn đang sử dụng phiên bản cũ hơn của Emacs (21 hoặc 22). –

+0

Trong phiên bản flyspell đi kèm với Emacs 24, dòng sau được bao gồm để vô hiệu hóa việc kiểm tra thẻ xml ở chế độ nxml: (đặt 'nxml-mode' flyspell-mode-predicate 'sgml-mode-flyspell-verify) – zev

3

Bạn có thể thêm dòng sau vào tập tin init Emacs của bạn:

(flyspell-all-chế độ)

Các trạng thái chức năng mô tả:

Sử dụng Flyspell trong tất cả các chế độ chính. Áp dụng cho cả bộ đệm hiện có và các bộ đệm mà bạn sau đó tạo. Tắt 'flyspell-text-mode' nếu bật.

EDIT: Dường như chức năng trên chỉ được bao gồm trong phiên bản flyspell trong Emacs 24. Nếu bạn không thể sử dụng phiên bản đó, bạn nên sử dụng giải pháp do Trey đề xuất cho "bán toàn cầu" kích hoạt flyspell. Để vô hiệu hóa thẻ XML kiểm tra với NXML, bạn có thể thêm dòng sau vào tập tin init Emacs của bạn:

(put 'nxml-mode 'flyspell-mode-predicate 'sgml-mode-flyspell-verify) 

Lưu ý: Dòng này đã nằm trong flyspell.el trong Emacs 24.

+0

Được xác định ở đâu? Tôi không nhìn thấy nó trong flyspell.el mới nhất (1.70) http://www-sop.inria.fr/members/Manuel.Serrano/flyspell/flyspell.html cũng không phải là sản phẩm được vận chuyển với Emacs 23.2. –

+0

^Ngoài ra câu hỏi của tôi, tôi không thấy các tùy chọn như vậy được ghi ở bất cứ đâu. – mart1n

+0

Đó là trong flyspell.el được bao gồm trong Emacs 24. – zev

18

Câu trả lời từ câu hỏi này làm việc cho tôi:

How to enable automatic spell check by default?

Bên cạnh đó, nó dường như là tổng quát hơn, không giống như hiện tại bình chọn câu trả lời. Thêm các dòng sau vào .emacs hoặc init.el của bạn.

(add-hook 'text-mode-hook 'flyspell-mode) 
(add-hook 'prog-mode-hook 'flyspell-prog-mode) 
+0

Điều này làm việc hoàn hảo cho tôi, được thử nghiệm trên các Text WS, Markdown WS, Tex WS và Python WS. Làm việc như mong đợi. –

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