Subject: bug#19073: Ispell fails to initialise when hunspell does not report any loaded dictionaries

From: Peter Oliver <[email-masked]>
Date: Sun, 16 Nov 2014 13:34:57 +0000 (GMT)

The build of Hunspell 1.3.2 at http://sourceforge.net/projects/ezwinports/files/ from doesn't output the "LOADED DICTIONARY:" section when "hunspell -D" is run.  I don't know if this is a bug in hunspell, or in the build, or if this feature is missing on Windows, or if there is some other reason.

In any case, this missing section confuses function ispell-find-hunspell-dictionaries in Emacs 24.4 (I'm using the build at http://sourceforge.net/projects/emacs-bin/files/releases/emacs-24.4-bin-i686-pc-mingw32.7z/download).  Variable hunspell-default-dict never gets set, meaning function ispell-parse-hunspell-affix-file ends up being called with a nil argument and erroring.

The attached patch gets things working again for me, although I must admit I don't understand the implications of not detecting a default dictionary.

If this patch is used, I believe that I will need to sign legal papers before patches from me can be accepted.  I am happy to do so.

-- 
Peter Oliver

From 6e508b07b01f62511e356b34b9a0fa8454dcedf3 Mon Sep 17 00:00:00 2001
From: Peter Oliver <[email-masked]>
Date: Sun, 16 Nov 2014 13:32:45 +0000
Subject: [PATCH] Don't error when no default Hunspell dictionary is detected.

This happens when "hunspell -D" does not report a "LOADED DICTIONARY".
---
 lisp/textmodes/ispell.el | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el
index 5cdae22..cd77eda 100644
--- a/lisp/textmodes/ispell.el
+++ b/lisp/textmodes/ispell.el
@@ -1291,10 +1291,12 @@ entries if a specific dict was found."
     ;; Parse and set values for default dictionary.
     (setq hunspell-default-dict (car hunspell-default-dict))
     (setq hunspell-default-dict-entry
-	  (ispell-parse-hunspell-affix-file hunspell-default-dict))
+          (and hunspell-default-dict
+               (ispell-parse-hunspell-affix-file hunspell-default-dict)))
     ;; Create an alist of found dicts with only names, except for default dict.
     (setq ispell-hunspell-dictionary-alist
-	  (list (append (list nil) (cdr hunspell-default-dict-entry))))
+          (and hunspell-default-dict-entry
+               (list (append (list nil) (cdr hunspell-default-dict-entry)))))
     (dolist (dict (mapcar 'car ispell-hunspell-dict-paths-alist))
       (if (string= dict hunspell-default-dict)
 	  (add-to-list 'ispell-hunspell-dictionary-alist
-- 
1.8.3.1