2014-01-22 6 views
3

настроить Emacs, чтобы включить Flyspell по умолчанию для текстового режима с использованиемНе удается правильно отключить Flyspell в орг режиме

(add-hook 'flyspell-mode-hook 'flyspell-buffer) 
(add-hook 'text-mode-hook 'flyspell-mode) 

Я хотел бы, чтобы отключить его автоматически в орг режиме файлов, и мне удалось отключить его с помощью лямбда-функции в режиме орг крючке:

(add-hook 'org-mode-hook (lambda() (flyspell-mode -1))) 

Это работает, но изменения подсветки синтаксиса, что Flyspell действительно все еще остаются, и мешать подсветки синтаксиса ORG MODE в. Я также вижу в минибуфере, что flyspell запускается, когда я посещаю этот файл, поэтому, по-видимому, он отключается только после этого. Как отключить его таким образом, чтобы он не оставлял следов в файле режима org, или еще лучше не запускался?

ответ

1

Что касается первого вопроса (убрать highlightings), следующий вызов должен сделать это:

(flyspell-delete-all-overlays) 

Однако, вы действительно, действительно, действительно уверены, что хотите отключить Flyspell в режиме Org ??? Есть ли действительно, действительно, действительно хорошая причина для этого?

Если да, разве вы не должны решить эту проблему, вместо того, чтобы пытаться это сделать?

+2

Вы, кажется, предположить, что Flyspell это «действительно, действительно, действительно» важная особенность практически в любом использовании орг-режиме. Уверяю вас, это не так. Мой файл в режиме org-mode имеет имена, смешанные языки, аббревиатуры и множество других вещей, которые я не хочу проверять орфографией. Когда эти вещи выделены, подсветка синтаксиса org-mode не выделяется так же, как и остальная часть текста, что снижает читаемость. – EpsilonVector

+0

В таком случае я бы либо добавил ваши сокращения, либо такие, как Local Words или в ваш глобальный словарь. Конечно, это не решает смешанные языки. Но Flyspell настолько интересен, что я не могу себе представить, что он не включен во ВСЕХ моих файлах Org. Лучше было бы отключить это локально через локальные переменные. – fniessen

3

Вы можете выборочно включить flyspell в режиме текстового режима, проверив основной режим. Ниже позволит Flyspell в text-mode и его производных режимах, кроме org-mode

(add-hook 'flyspell-mode-hook 'flyspell-buffer) 

(add-hook 'text-mode-hook (lambda() 
           (when (not (equal major-mode 'org-mode)) 
            (flyspell-mode t)))) 
+0

Привет @Stefan, спасибо за исправление. –

+0

Возможно, вы упростите лямбду на '(лямбда() (режим flyspell (не (общий режим org-mode основного режима)))). – Thomas

+0

Привет @Thomas, спасибо за предложение, однако, согласно документации 'flyspell-mode', при вызове из Lisp режим flyspell включен, даже когда' arg' опущен или 'nil'. –