ispell.el (ispell-set-spellchecker-params): Make dicts use [:alpha:] if
authorAgustín Martín <agustin.martin@hispalinux.es>
Mon, 16 Apr 2012 09:49:51 +0000 (11:49 +0200)
committerAgustín Martín <agustin.martin@hispalinux.es>
Mon, 16 Apr 2012 09:49:51 +0000 (11:49 +0200)
possible.

If Emacs flavour supports [:alpha:] regexps, use it for Casechars
and Not-Casechars. This currently means use it unless flavour is
XEmacs.

Fixes: debbugs:11200

lisp/ChangeLog
lisp/textmodes/ispell.el

index f50af02..7ebeea0 100644 (file)
@@ -1,3 +1,8 @@
+2012-04-12  Agustín Martín Domingo  <agustin.martin@hispalinux.es>
+
+       * ispell.el (ispell-set-spellchecker-params): Post-process
+       `ispell-dictionary-alist' to use [:alpha:] if possible.
+
 2012-04-16  Chong Yidong  <cyd@gnu.org>
 
        * image.el (imagemagick--extension-regexp): New variable.
index 37311b7..cfb1a2b 100644 (file)
@@ -767,6 +767,12 @@ here just for backwards compatibility.")
 (make-obsolete-variable 'ispell-aspell-supports-utf8
                         'ispell-encoding8-command "23.1")
 
+(defvar ispell-emacs-alpha-regexp
+  (if (string-match "^[[:alpha:]]+$" "abcde")
+      "[[:alpha:]]"
+    nil)
+  "[[:alpha:]] if Emacs supports [:alpha:] regexp, nil
+otherwise (current XEmacs does not support it).")
 
 ;;; **********************************************************************
 ;;; The following are used by ispell, and should not be changed.
@@ -1092,8 +1098,7 @@ aspell is used along with Emacs).")
               (error nil))
             ispell-really-aspell
             ispell-encoding8-command
-            ;; XEmacs does not like [:alpha:] regexps.
-            (string-match "^[[:alpha:]]+$" "abcde"))
+            ispell-emacs-alpha-regexp)
        (unless ispell-aspell-dictionary-alist
          (ispell-find-aspell-dictionaries)))
 
@@ -1117,8 +1122,27 @@ aspell is used along with Emacs).")
                            ispell-dictionary-base-alist))
        (unless (assoc (car dict) all-dicts-alist)
          (add-to-list 'all-dicts-alist dict)))
-      (setq ispell-dictionary-alist all-dicts-alist))))
-
+      (setq ispell-dictionary-alist all-dicts-alist))
+
+    ;; If Emacs flavor supports [:alpha:] use it for global dicts.  If
+    ;; spellchecker also supports UTF-8 via command-line option use it
+    ;; in communication.  This does not affect definitions in ~/.emacs.
+    (if ispell-emacs-alpha-regexp
+       (let (tmp-dicts-alist)
+         (dolist (adict ispell-dictionary-alist)
+           (add-to-list 'tmp-dicts-alist
+                        (list
+                         (nth 0 adict)  ; dict name
+                         "[[:alpha:]]"  ; casechars
+                         "[^[:alpha:]]" ; not-casechars
+                         (nth 3 adict)  ; otherchars
+                         (nth 4 adict)  ; many-otherchars-p
+                         (nth 5 adict)  ; ispell-args
+                         (nth 6 adict)  ; extended-character-mode
+                         (if ispell-encoding8-command
+                             'utf-8
+                           (nth 7 adict)))))
+         (setq ispell-dictionary-alist tmp-dicts-alist)))))
 
 (defun ispell-valid-dictionary-list ()
   "Return a list of valid dictionaries.