]> git.eshelyaron.com Git - emacs.git/commitdiff
ispell.el (ispell-aspell-find-dictionary): Fix aspell data file search (bug#7230).
authorAgustín Martín <agustin.martin@hispalinux.es>
Mon, 18 Oct 2010 16:01:43 +0000 (18:01 +0200)
committerAgustín Martín <agustin.martin@hispalinux.es>
Mon, 18 Oct 2010 16:01:43 +0000 (18:01 +0200)
lisp/ChangeLog
lisp/textmodes/ispell.el

index b3c24f22a6b405ac30ba918ff845ef4b1cb2f853..9529d85c89beed35376734e4c6610907d6c9da71 100644 (file)
@@ -1,3 +1,8 @@
+2010-10-17  Agustín Martín  <agustin.martin@hispalinux.es>
+
+       * textmodes/ispell.el (ispell-aspell-find-dictionary): Fix
+       aspell data file searching (bug#7230).
+
 2010-10-16  Chong Yidong  <cyd@stupidchicken.com>
 
        * cus-theme.el (custom-theme--migrate-settings): New var.
index c773aadd3d83f78b34cf537d9454b90881b5f60c..d1dd5b0572355839270783b3a05595c4a66afb41 100644 (file)
@@ -983,19 +983,32 @@ Assumes that value contains no whitespace."
     (car (split-string (buffer-string)))))
 
 (defun ispell-aspell-find-dictionary (dict-name)
-  ;; This returns nil if the data file does not exist.
-  ;; Can someone please explain the return value format when the
-  ;; file does exist -- rms?
-  (let* ((lang ;; Strip out variant, etc.
-         (and (string-match "^[[:alpha:]_]+" dict-name)
-              (match-string 0 dict-name)))
+  "For aspell dictionary DICT-NAME, return a list of parameters if an
+  associated data file is found or nil otherwise.  List format is
+  that of `ispell-dictionary-base-alist' elements."
+  ;; Make sure `ispell-aspell-data-dir' is defined
+  (or ispell-aspell-data-dir
+      (setq ispell-aspell-data-dir
+           (ispell-get-aspell-config-value "data-dir")))
+  ;; Try finding associated datafile
+  (let* ((datafile1
+         (concat ispell-aspell-data-dir "/"
+                 ;; Strip out variant, country code, etc.
+                 (and (string-match "^[[:alpha:]]+" dict-name)
+                      (match-string 0 dict-name)) ".dat"))
+        (datafile2
+         (concat ispell-aspell-data-dir "/"
+                 ;; Strip out anything but xx_YY.
+                 (and (string-match "^[[:alpha:]_]+" dict-name)
+                      (match-string 0 dict-name)) ".dat"))
         (data-file
-         (concat (or ispell-aspell-data-dir
-                     (setq ispell-aspell-data-dir
-                           (ispell-get-aspell-config-value "data-dir")))
-                 "/" lang ".dat"))
+         (if (file-readable-p datafile1)
+             datafile1
+           (if (file-readable-p datafile2)
+               datafile2)))
         otherchars)
-    (condition-case ()
+
+    (if data-file
        (with-temp-buffer
          (insert-file-contents data-file)
          ;; There is zero or one line with special characters declarations.
@@ -1023,9 +1036,7 @@ Assumes that value contains no whitespace."
                ;; Here we specify the encoding to use while communicating with
                ;; aspell.  This doesn't apply to command line arguments, so
                ;; just don't pass words to spellcheck as arguments...
-               'utf-8))
-      (file-error
-       nil))))
+               'utf-8)))))
 
 (defun ispell-aspell-add-aliases (alist)
   "Find aspell's dictionary aliases and add them to dictionary ALIST.