git-gui: Don't use '$$cr master' with aspell earlier than 0.60
authorShawn O. Pearce <spearce@spearce.org>
Thu, 24 Apr 2008 01:34:58 +0000 (21:34 -0400)
committerShawn O. Pearce <spearce@spearce.org>
Thu, 24 Apr 2008 01:34:58 +0000 (21:34 -0400)
Apparently aspell 0.50 does not recognize "$$cr master" as a command,
but instead tries to offer suggestions for how to correctly spell
the word "cr".  This is not quite what we are after when we want
the name of the current dictionary.

Instead of locking up git-gui waiting for a response that may never
come back from aspell we avoid sending this command if the binary
we have started claims to be before version 0.60.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
lib/spellcheck.tcl

index 9be7486..78f344f 100644 (file)
@@ -84,13 +84,19 @@ method _connect {pipe_fd} {
        regexp \
                {International Ispell Version .* \(but really (Aspell .*?)\)$} \
                $s_version _junk s_version
+       regexp {^Aspell (\d)+\.(\d+)} $s_version _junk major minor
 
        puts $pipe_fd !             ; # enable terse mode
-       puts $pipe_fd {$$cr master} ; # fetch the language
-       flush $pipe_fd
 
-       gets $pipe_fd s_lang
-       regexp {[/\\]([^/\\]+)\.[^\.]+$} $s_lang _ s_lang
+       # fetch the language
+       if {$major > 0 || ($major == 0 && $minor >= 60)} {
+               puts $pipe_fd {$$cr master}
+               flush $pipe_fd
+               gets $pipe_fd s_lang
+               regexp {[/\\]([^/\\]+)\.[^\.]+$} $s_lang _ s_lang
+       } else {
+               set s_lang {}
+       }
 
        if {$::default_config(gui.spellingdictionary) eq {}
         && [get_config gui.spellingdictionary] eq {}} {