summaryrefslogtreecommitdiffstats
path: root/scripts/go.pl
diff options
context:
space:
mode:
authormartin f. krafft2017-02-02 02:40:44 +0100
committermartin f. krafft2017-02-08 21:35:15 +0100
commit883d7a8f9d00a8f080891725ce0fb1c1dcc8ea27 (patch)
treea6b609b4d7458a7008016ec1ec84756b5d4edd78 /scripts/go.pl
parent4d80ff9fa33f2afd845e8c5a4b70ceec61d2f6d7 (diff)
downloadscripts.irssi.org-883d7a8f9d00a8f080891725ce0fb1c1dcc8ea27.tar.bz2
Make anchored string matching configurable
Introduces two new settings `go_match_anchored` and `go_complete_anchored` that control whether the search string (the argument to `/go`) matches only at the start of window/item names (the default), or anywhere in the names. Signed-off-by: martin f. krafft <madduck@madduck.net>
Diffstat (limited to 'scripts/go.pl')
-rw-r--r--scripts/go.pl26
1 files changed, 22 insertions, 4 deletions
diff --git a/scripts/go.pl b/scripts/go.pl
index f9320b8..0b0a2a2 100644
--- a/scripts/go.pl
+++ b/scripts/go.pl
@@ -14,10 +14,20 @@ use Irssi::Irc;
# 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_match_anchored [ON|OFF]
+# Match window/names only at the start of the word (the default). Turning
+# this off will mean that strings can match anywhere in the window/names.
+# The leading '#' of channel names is optional either way.
+#
# /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".
#
+# /SET go_complete_anchored [ON|OFF]
+# Match window/names only at the start of the word. The default is 'off',
+# which causes completion to match anywhere in the window/names during
+# completion. The leading '#' of channel names is optional either way.
+#
$VERSION = '1.1';
@@ -31,9 +41,10 @@ $VERSION = '1.1';
);
sub _make_regexp {
- my ($name, $ci) = @_;
- my $re = "^#?\Q${name}\E";
+ my ($name, $ci, $aw) = @_;
+ my $re = "\Q${name}\E";
$re = "(?i:$re)" unless $ci;
+ $re = "^#?$re" if $aw;
return $re;
}
@@ -44,7 +55,9 @@ 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'));
+ my $re = _make_regexp($word,
+ Irssi::settings_get_bool('go_complete_case_sensitive'),
+ Irssi::settings_get_bool('go_complete_anchored'));
@$complist = ();
foreach my $w (Irssi::windows) {
my $name = $w->get_active_name();
@@ -64,7 +77,9 @@ sub cmd_go
my($chan,$server,$witem) = @_;
$chan =~ s/ *//g;
- my $re = _make_regexp($chan, Irssi::settings_get_bool('go_match_case_sensitive'));
+ my $re = _make_regexp($chan,
+ Irssi::settings_get_bool('go_match_case_sensitive'),
+ Irssi::settings_get_bool('go_match_anchored'));
foreach my $w (Irssi::windows) {
my $name = $w->get_active_name();
@@ -79,9 +94,12 @@ 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);
+Irssi::settings_add_bool('go', 'go_match_anchored', 1);
+Irssi::settings_add_bool('go', 'go_complete_anchored', 0);
# Changelog
#
# 2017-02-02 1.1 martin f. krafft <madduck@madduck.net>
# - made case-sensitivity of match configurable
+# - made anchoring of search strings configurable
#