]> git.99rst.org Git - irssi-scripts.irssi.org.git/commitdiff
[spellcheck] v0.7
authorJakub Wilk <redacted>
Fri, 18 Dec 2015 13:58:11 +0000 (14:58 +0100)
committerbw1 <redacted>
Thu, 23 Dec 2021 00:17:52 +0000 (01:17 +0100)
scripts/spellcheck.pl

index a0106141a86b03ec8668cc60d9062b172b582316..64a2fc706875173ef47db79b67359c5027f339aa 100644 (file)
@@ -1,5 +1,5 @@
 # Copyright © 2008 Jakub Jankowski <shasta@toxcorp.com>
-# Copyright © 2012, 2013 Jakub Wilk <jwilk@jwilk.net>
+# Copyright © 2012-2015 Jakub Wilk <jwilk@jwilk.net>
 # Copyright © 2012 Gabriel Pettier <gabriel.pettier@gmail.com>
 #
 # 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
git clone https://git.99rst.org/PROJECT