]> git.99rst.org Git - irssi-scripts.irssi.org.git/commitdiff
Make case-sensitivity of match configurable
authormartin f. krafft <redacted>
Wed, 1 Feb 2017 21:56:07 +0000 (22:56 +0100)
committermartin f. krafft <redacted>
Fri, 3 Feb 2017 10:08:11 +0000 (11:08 +0100)
Introduces two new settings:

- 'go_match_case_sensitive' which, if OFF, causes channel/window names to be
  matched case-insensitively.

    /go foo  → #Foobar

- 'go_complete_case_sensitive' which, if ON, causes channel/window names to be
  matched case-sensitively during tab-completion:

    /go foo<tab>  → will not yield #Foobar

Signed-off-by: martin f. krafft <redacted>
scripts/go.pl

index b656a0fc773a005098fad27ff687d11ee4e5e9e4..f9320b8daf2f2e418313f5478d1ddc6259663347 100644 (file)
@@ -7,8 +7,19 @@ use Irssi::Irc;
 # /script load go.pl
 # If you are in #irssi you can type /go #irssi or /go irssi or even /go ir ...
 # also try /go ir<tab> and /go  <tab> (that's two spaces)
+#
+# The following settings exist:
+#
+#   /SET go_match_case_sensitive [ON|OFF]
+#     Match window/item names sensitively (the default). Turning this off
+#     means e.g. "/go foo" would jump to a window named "Foobar", too.
+#
+#   /SET go_complete_case_sensitive [ON|OFF]
+#     When using tab-completion, match case-insensitively (the default).
+#     Turning this on means that "/go foo<tab>" will *not* suggest "Foobar".
+#
 
-$VERSION = '1.01';
+$VERSION = '1.1';
 
 %IRSSI = (
     authors     => 'nohar',
@@ -16,9 +27,16 @@ $VERSION = '1.01';
     name        => 'go to window',
     description => 'Implements /go command that activates a window given a name/partial name. It features a nice completion.',
     license     => 'GPLv2 or later',
-    changed     => '2014-10-19'
+    changed     => '2017-02-02'
 );
 
+sub _make_regexp {
+       my ($name, $ci) = @_;
+       my $re = "^#?\Q${name}\E";
+       $re = "(?i:$re)" unless $ci;
+       return $re;
+}
+
 sub signal_complete_go {
        my ($complist, $window, $word, $linestart, $want_space) = @_;
        my $channel = $window->get_active_name();
@@ -26,11 +44,12 @@ sub signal_complete_go {
 
         return unless ($linestart =~ /^\Q${k}\Ego\b/i);
 
+       my $re = _make_regexp($word, Irssi::settings_get_bool('go_complete_case_sensitive'));
        @$complist = ();
        foreach my $w (Irssi::windows) {
                my $name = $w->get_active_name();
                if ($word ne "") {
-                       if ($name =~ /\Q${word}\E/i) {
+                       if ($name =~ $re) {
                                push(@$complist, $name)
                        }
                } else {
@@ -45,9 +64,11 @@ sub cmd_go
        my($chan,$server,$witem) = @_;
 
        $chan =~ s/ *//g;
+       my $re = _make_regexp($chan, Irssi::settings_get_bool('go_match_case_sensitive'));
+
        foreach my $w (Irssi::windows) {
                my $name = $w->get_active_name();
-               if ($name =~ /^#?\Q${chan}\E/) {
+               if ($name =~ $re) {
                        $w->set_active();
                        return;
                }
@@ -56,4 +77,11 @@ sub cmd_go
 
 Irssi::command_bind("go", "cmd_go");
 Irssi::signal_add_first('complete word', 'signal_complete_go');
+Irssi::settings_add_bool('go', 'go_match_case_sensitive', 1);
+Irssi::settings_add_bool('go', 'go_complete_case_sensitive', 0);
 
+# Changelog
+#
+# 2017-02-02  1.1  martin f. krafft <madduck@madduck.net>
+#   - made case-sensitivity of match configurable
+#
git clone https://git.99rst.org/PROJECT