From: Jakub Wilk Date: Fri, 18 Dec 2015 13:58:11 +0000 (+0100) Subject: [spellcheck] v0.7 X-Git-Url: http://git.99rst.org/?a=commitdiff_plain;h=11d6c85405c4cfdbad7216a3bce8854739e0da12;p=irssi-scripts.irssi.org.git [spellcheck] v0.7 --- diff --git a/scripts/spellcheck.pl b/scripts/spellcheck.pl index a010614..64a2fc7 100644 --- a/scripts/spellcheck.pl +++ b/scripts/spellcheck.pl @@ -1,5 +1,5 @@ # Copyright © 2008 Jakub Jankowski -# Copyright © 2012, 2013 Jakub Wilk +# Copyright © 2012-2015 Jakub Wilk # Copyright © 2012 Gabriel Pettier # # This program is free software; you can redistribute it and/or modify @@ -18,7 +18,7 @@ use vars qw($VERSION %IRSSI); use Irssi 20070804; use Text::Aspell; -$VERSION = '0.6'; +$VERSION = '0.7'; %IRSSI = ( authors => 'Jakub Wilk, Jakub Jankowski, Gabriel Pettier', name => 'spellcheck', @@ -35,7 +35,7 @@ sub spellcheck_setup my $speller = $speller{$lang}; return $speller if defined $speller; $speller = Text::Aspell->new or return; - $speller->set_option('lang', $_[0]) or return; + $speller->set_option('lang', $lang) or return; $speller->set_option('sug-mode', 'fast') or return; $speller{$lang} = $speller; return $speller; @@ -90,21 +90,11 @@ sub _spellcheck_find_language $target = lc($target); # possible settings: network/channel/lang or channel/lang - my @languages = split(/[ ,]/, Irssi::settings_get_str('spellcheck_languages')); + my @languages = split(/[ ,]+/, Irssi::settings_get_str('spellcheck_languages')); for my $langstr (@languages) { - # strip trailing slashes - $langstr =~ s=/+$==; - my ($s1, $s2, $s3) = split(/\//, $langstr, 3); - my ($t, $c, $l); - if (defined $s3 && $s3 ne '') { - # network/channel/lang - $t = lc($s1); $c = lc($s2); $l = $s3; - } else { - # channel/lang - $c = lc($s1); $l = $s2; - } - - if ($c eq $target && (!defined $t || $t eq $network)) { + my ($t, $c, $l) = $langstr =~ m,^(?:([^/]+)/)?([^/]+)/([^/]+)/*$,; + $t //= $network; + if (lc($c) eq $target and lc($t) eq $network) { return $l; } } @@ -136,10 +126,11 @@ sub spellcheck_key_pressed $window_height = Irssi::settings_get_str('spellcheck_window_height'); } + return unless Irssi::settings_get_bool('spellcheck_enabled'); + # I know no way to *mark* misspelled words in the input line, # that's why there's no spellcheck_print_suggestions - # because printing suggestions is our only choice. - return unless Irssi::settings_get_bool('spellcheck_enabled'); # hide correction window when message is sent if ($key eq 10 && $correction_window) { @@ -164,6 +155,8 @@ sub spellcheck_key_pressed my $lang = spellcheck_find_language($win); + return if $lang eq 'und'; + my $suggestions = spellcheck_check_word($lang, $word, 0); return unless defined $suggestions; @@ -242,4 +235,4 @@ Irssi::settings_add_str( 'spellcheck', 'spellcheck_window_height', 10); Irssi::signal_add_first('gui key pressed', 'spellcheck_key_pressed'); Irssi::signal_add_last('complete word', 'spellcheck_complete_word'); -# vim:ts=4 sw=4 et +# vim:ts=4 sts=4 sw=4 et