summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: de83f8c)
raw | patch | inline | side by side (parent: de83f8c)
author | Shawn O. Pearce <spearce@spearce.org> | |
Thu, 21 Feb 2008 05:17:18 +0000 (00:17 -0500) | ||
committer | Shawn O. Pearce <spearce@spearce.org> | |
Thu, 21 Feb 2008 05:22:07 +0000 (00:22 -0500) |
If the user has somehow managed to make us execute ispell instead
of aspell, even though our code is invoking aspell, and ispell is
not recognizing the aspell command line options we use to invoke
it then we don't want a giant usage message back from ispell.
Instead we show the ispell version number, letting the user know
we don't actually support that spell checker.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
of aspell, even though our code is invoking aspell, and ispell is
not recognizing the aspell command line options we use to invoke
it then we don't want a giant usage message back from ispell.
Instead we show the ispell version number, letting the user know
we don't actually support that spell checker.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
lib/spellcheck.tcl | patch | blob | history |
diff --git a/lib/spellcheck.tcl b/lib/spellcheck.tcl
index 15b929b1a06978910a9b4b962a5cb76e2f4ab845..05a1ceb85b355fe77efd644ff2da79d91c46d3b2 100644 (file)
--- a/lib/spellcheck.tcl
+++ b/lib/spellcheck.tcl
field s_fd {} ; # pipe to ispell/aspell
field s_version {} ; # ispell/aspell version string
field s_lang {} ; # current language code
+field s_prog aspell; # are we actually old ispell?
+field s_failed 0 ; # is $s_prog bogus and not working?
field w_text ; # text widget we are spelling
field w_menu ; # context menu for the widget
if {[gets $pipe_fd s_version] <= 0} {
if {[catch {close $pipe_fd} err]} {
+
+ # Eh? Is this actually ispell choking on aspell options?
+ #
+ if {$s_prog eq {aspell}
+ && [regexp -nocase {^Usage: } $err]
+ && ![catch {
+ set pipe_fd [open [list | $s_prog -v] r]
+ gets $pipe_fd s_version
+ close $pipe_fd
+ }]
+ && $s_version ne {}} {
+ if {{@(#) } eq [string range $s_version 0 4]} {
+ set s_version [string range $s_version 5 end]
+ }
+ set s_failed 1
+ error_popup [strcat \
+ [mc "Unsupported spell checker"] \
+ ":\n\n$s_version"]
+ set s_version {}
+ return
+ }
+
regsub -nocase {^Error: } $err {} err
if {$s_fd eq {}} {
error_popup [strcat [mc "Spell checking is unavailable"] ":\n\n$err"]
}
method lang {{n {}}} {
- if {$n ne {} && $s_lang ne $n} {
+ if {$n ne {} && $s_lang ne $n && !$s_failed} {
set spell_cmd [list |]
lappend spell_cmd aspell
lappend spell_cmd --master=$n