104 lines
3.6 KiB
Diff
104 lines
3.6 KiB
Diff
diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el
|
|
index 1daec44..7167dc9 100644
|
|
--- a/lisp/textmodes/ispell.el
|
|
+++ b/lisp/textmodes/ispell.el
|
|
@@ -574,6 +574,40 @@ re-start Emacs."
|
|
(coding-system :tag "Coding System")))
|
|
:group 'ispell)
|
|
|
|
+(defvar ispell-hunspell-dictionary-equivs-alist
|
|
+ '(("american" "en_US")
|
|
+ ("brasileiro" "pt_BR")
|
|
+ ("british" "en_GB")
|
|
+ ("castellano" "es_ES")
|
|
+ ("castellano8" "es_ES")
|
|
+ ("czech" "cs_CZ")
|
|
+ ("dansk" "da_DK")
|
|
+ ("deutsch" "de_DE")
|
|
+ ("deutsch8" "de_DE")
|
|
+ ("english" "en_US")
|
|
+ ("esperanto" "eo")
|
|
+ ("esperanto-tex" "eo")
|
|
+ ("finnish" "fi_FI")
|
|
+ ("francais7" "fr_FR")
|
|
+ ("francais" "fr_FR")
|
|
+ ("francais-tex" "fr_FR")
|
|
+ ("german" "de_DE")
|
|
+ ("german8" "de_DE")
|
|
+ ("italiano" "it_IT")
|
|
+ ("nederlands" "nl_NL")
|
|
+ ("nederlands8" "nl_NL")
|
|
+ ("norsk" "nn_NO")
|
|
+ ("norsk7-tex" "nn_NO")
|
|
+ ("polish" "pl_PL")
|
|
+ ("portugues" "pt_PT")
|
|
+ ("russian" "ru_RU")
|
|
+ ("russianw" "ru_RU")
|
|
+ ("slovak" "sk_SK")
|
|
+ ("slovenian" "sl_SI")
|
|
+ ("svenska" "sv_SE")
|
|
+ ("hebrew" "he_IL"))
|
|
+ "Alist with matching hunspell dict names for standard dict names in
|
|
+ `ispell-dictionary-base-alist'.")
|
|
|
|
(defvar ispell-dictionary-base-alist
|
|
'((nil ; default
|
|
@@ -1112,9 +1146,57 @@ aspell is used along with Emacs).")
|
|
ispell-encoding8-command)
|
|
ispell-aspell-dictionary-alist
|
|
nil))
|
|
+ (ispell-dictionary-base-alist ispell-dictionary-base-alist)
|
|
ispell-base-dicts-override-alist ; Override only base-dicts-alist
|
|
all-dicts-alist)
|
|
|
|
+ ;; While ispell and aspell (through aliases) use the traditional
|
|
+ ;; dict naming originally expected by ispell.el, hunspell
|
|
+ ;; uses locale based names with no alias. We need to map
|
|
+ ;; standard names to locale based names to make default dict
|
|
+ ;; definitions available for hunspell.
|
|
+ (if ispell-really-hunspell
|
|
+ (let (tmp-dicts-alist)
|
|
+ (dolist (adict ispell-dictionary-base-alist)
|
|
+ (let* ((dict-name (nth 0 adict))
|
|
+ (dict-equiv
|
|
+ (cadr (assoc dict-name
|
|
+ ispell-hunspell-dictionary-equivs-alist)))
|
|
+ (ispell-args (nth 5 adict))
|
|
+ (ispell-args-has-d (member "-d" ispell-args))
|
|
+ skip-dict)
|
|
+ ;; Remove "-d" option from `ispell-args' if present
|
|
+ (if ispell-args-has-d
|
|
+ (let ((ispell-args-after-d
|
|
+ (cdr (cdr ispell-args-has-d)))
|
|
+ (ispell-args-before-d
|
|
+ (butlast ispell-args (length ispell-args-has-d))))
|
|
+ (setq ispell-args
|
|
+ (nconc ispell-args-before-d
|
|
+ ispell-args-after-d))))
|
|
+ ;; Unless default dict, re-add "-d" option with the mapped value
|
|
+ (if dict-name
|
|
+ (if dict-equiv
|
|
+ (nconc ispell-args (list "-d" dict-equiv))
|
|
+ (message
|
|
+ "ispell-set-spellchecker-params: Missing hunspell equiv for \"%s\". Skipping."
|
|
+ dict-name)
|
|
+ (setq skip-dict t)))
|
|
+
|
|
+ (unless skip-dict
|
|
+ (add-to-list 'tmp-dicts-alist
|
|
+ (list
|
|
+ dict-name ; dict name
|
|
+ (nth 1 adict) ; casechars
|
|
+ (nth 2 adict) ; not-casechars
|
|
+ (nth 3 adict) ; otherchars
|
|
+ (nth 4 adict) ; many-otherchars-p
|
|
+ ispell-args ; ispell-args
|
|
+ (nth 6 adict) ; extended-character-mode
|
|
+ (nth 7 adict) ; dict encoding
|
|
+ ))))
|
|
+ (setq ispell-dictionary-base-alist tmp-dicts-alist))))
|
|
+
|
|
(run-hooks 'ispell-initialize-spellchecker-hook)
|
|
|
|
;; Add dicts to ``ispell-dictionary-alist'' unless already present.
|