git-gui: Remove space from the end of aspell's reply before processing
[gitweb.git] / lib / spellcheck.tcl
index 05a1ceb85b355fe77efd644ff2da79d91c46d3b2..e6120303e940ee6c849bf706415c1b450e68b57f 100644 (file)
@@ -70,23 +70,33 @@ method _connect {pipe_fd} {
                                        [mc "Reverting dictionary to %s." $s_lang]]
                        }
                } else {
-                       error_popup [mc "Spell checker sliently failed on startup"]
+                       error_popup [mc "Spell checker silently failed on startup"]
                }
                return
        }
+
        if {{@(#) } ne [string range $s_version 0 4]} {
                catch {close $pipe_fd}
                error_popup [strcat [mc "Unrecognized spell checker"] ":\n\n$s_version"]
                return
        }
-       set s_version [string range $s_version 5 end]
+       set s_version [string range [string trim $s_version] 5 end]
+       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 {}} {
@@ -304,6 +314,7 @@ method _run {} {
 method _read {} {
        while {[gets $s_fd line] >= 0} {
                set lineno [lindex $s_pending 0 0]
+               set line [string trim $line]
 
                if {$s_clear} {
                        $w_text tag remove misspelled "$lineno.0" "$lineno.end"