diff options
author | terminaldweller <devi@terminaldweller.com> | 2023-08-03 10:08:24 +0000 |
---|---|---|
committer | terminaldweller <devi@terminaldweller.com> | 2023-08-03 10:08:24 +0000 |
commit | 24cf5fa192d0aed2d981aaefd0533e4c7e6ae6df (patch) | |
tree | 4b5f2580caeb51f74cd81167cb3dd61e35eaf671 /vim-mode | |
parent | added two prompts(status bar items) that kinda work more like vim prompts now... (diff) | |
download | irssi-scripts-24cf5fa192d0aed2d981aaefd0533e4c7e6ae6df.tar.gz irssi-scripts-24cf5fa192d0aed2d981aaefd0533e4c7e6ae6df.zip |
added a dead channel mode. accepts a list. will not send anything by disabling the enter key.
Diffstat (limited to 'vim-mode')
-rw-r--r-- | vim-mode/vim_mode.pl | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/vim-mode/vim_mode.pl b/vim-mode/vim_mode.pl index 1f4b4d3..bdfe33d 100644 --- a/vim-mode/vim_mode.pl +++ b/vim-mode/vim_mode.pl @@ -935,6 +935,9 @@ my @ex_buf; my @ex_history; my $ex_history_index = 0; +# list of channels where we want a read-onlly mode +my %dead_channels = (); + # we are waiting for another mapped key (e.g. g pressed, but there are # multiple mappings like gg gE etc.) my $pending_map = undef; @@ -2696,6 +2699,14 @@ sub vim_mode_cmd_partial { $mode_str .= " ($partial)"; } } + my $window = Irssi::active_win(); + my $server = Irssi::active_server(); + if (defined $window->{active}->{name} && defined $server->{tag}) { + my $current_window_item_string = $server->{tag}."/".$window->{active}->{name}; + if (exists $dead_channels{$current_window_item_string}) { + $partial = "DEADEND ".$partial; + } + } return $partial; } @@ -2977,8 +2988,15 @@ sub handle_command_cmd { # @DEVI if ($key == 13) { - _commit_line(); - return 0; # don't call _stop() + my $window = Irssi::active_win(); + my $server = Irssi::active_server(); + my $current_window_item_string = $server->{tag}."/".$window->{active}->{name}; + if (exists $dead_channels{$current_window_item_string}) { + # we dont do anything + }else{ + _commit_line(); + return 0; # don't call _stop() + } } my $map; @@ -3301,6 +3319,7 @@ sub vim_mode_init { Irssi::expando_create('vim_cmd_mode' => \&vim_exp_mode, {}); Irssi::expando_create('vim_wins' => \&vim_exp_wins, {}); + Irssi::settings_add_str('misc', 'vim_dead_channels', ''); # Register all available settings. foreach my $name (keys %$settings) { @@ -3321,6 +3340,7 @@ sub vim_mode_init { add_map($char, $commands->{$char}); } + %dead_channels = map{$_ => undef} split /\s+/, Irssi::settings_get_str('vim_dead_channels'); # Load the vim_moderc file if it exists. ex_source('source'); @@ -3357,6 +3377,8 @@ sub setup_changed { } } + %dead_channels = map{$_ => undef} split /\s+/, Irssi::settings_get_str('vim_dead_channels'); + my $new_utf8 = _setting_get('utf8'); if ($new_utf8 != $settings->{utf8}->{value}) { # recompile the patterns when switching to/from utf-8 |