2012-01-25 4 views
3

Как я могу (автоматически) установить словарь (например, посредством автоматического вызова ispell-change-dictionary) на конкретный язык для каждого файла под конкретным каталогом?Как установить словарь ispell для всех файлов под определенным каталогом

Пример: Я предпочитаю, чтобы мой стандартный язык каталога быть американским английским (например, установив (setq ispell-dictionary "en_US-wo_accents") в моем .emacs файле), но я хотел бы использовать британский английский для всех файлов ниже (или: под) директориями /home/werner/dissertation/. И, возможно, голландский для всех файлов под /home/werner/letters/.

Я знаю решение, которое предписывает использовать -*- ispell-dictionary: "english" -*- в первой строке файла для установки словаря для этого конкретного файла (описано в EmacsWiki.org). Я бы хотел помешать этой строке поверх каждого нового файла, который я делаю.

ответ

4

Вы можете использовать что-то вроде (но такой подход является более полезным, если вы хотите сделать что-то комплекс для заданных файлов):

(defun set-dictionary-hook() 
    (when (and (stringp buffer-file-name) 
    (string-match "/dissertation/" buffer-file-name)) 
    (setq ispell-local-dictionary "ru"))) 
(add-hook 'find-file-hook 'set-dictionary-hook) 

или вы можете указать его в .dir-locals.el, как описано в Emacs Manual - Я думаю, что это будет проще, чем первый подход, что-то вроде:

((tex-mode . ((ispell-local-dictionary . "english")))) 

для файлов с определенными режимами или

((nil . ((ispell-local-dictionary . "english")))) 

для всех файлов

+1

+1 для локальных переменных каталога. См. Также http://www.emacswiki.org/emacs/DirectoryVariables – phils