How to define two ispell dictionaries in Emacs for

2019-05-05 07:02发布

问题:

I have a document with many quotations in a second language. How can I define this second language to Ispell? I have this in file top:

%% Local IspellDict: brasileiro

I tried this, but it didn't work:

%% Local IspellDict: brasileiro, english

回答1:

I have a way to toggle between two languages:

;; You should have aspell-ru and aspell-en packages installed
(let ((langs '("english" "russian")))
  (setq lang-ring (make-ring (length langs)))
  (dolist (elem langs) (ring-insert lang-ring elem)))
(defun cycle-ispell-languages ()
  (interactive)
  (let ((lang (ring-ref lang-ring -1)))
    (ring-insert lang-ring lang)
    (ispell-change-dictionary lang)))

(global-set-key (kbd "C-1") 'cycle-ispell-languages)


回答2:

Marcos, I found this:

http://www.emacswiki.org/emacs/AutoLangMode

http://www.emacswiki.org/emacs/GuessLang

I guess that first one do what you need.



回答3:

Please, try swL-mode from http://www.emacswiki.org/emacs/TN/#toc13 . It works with flyspell. The dictionary for the text at the current point position is chosen. You should adapt swL-alist to your needs. The language identifier strings (such as \selectlanguage{...}) must start at the beginning of line.

Meanwhile I also discovered flyspell-babel.el on the following page:

https://tex.stackexchange.com/questions/40988/how-can-i-make-auctex-spell-check-in-the-language-specified-by-babel-and-csquote

I think it is more user-friendly (packaged). It does not use just-in-time formatting (jit-lock-mode) and text properties therefore there might be some performance problems. But maybe, it is no problem and I was just too precautious.