mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-11-25 09:39:52 +08:00
Extract function for changing key bindings
This commit is contained in:
parent
832cda26f6
commit
8eaa16542a
17
share/functions/__fish_change_key_bindings.fish
Normal file
17
share/functions/__fish_change_key_bindings.fish
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
function __fish_change_key_bindings --argument-names bindings
|
||||||
|
# Allow the user to set the variable universally
|
||||||
|
set -l scope
|
||||||
|
set -q fish_key_bindings
|
||||||
|
or set scope -g
|
||||||
|
# We try to use `set --no-event`, but to avoid leaving the user without bindings
|
||||||
|
# if they run this with an older version we fall back on setting the variable
|
||||||
|
# with an event.
|
||||||
|
if ! set --no-event $scope fish_key_bindings $bindings 2>/dev/null
|
||||||
|
# This triggers the handler, which calls us again
|
||||||
|
set $scope fish_key_bindings $bindings
|
||||||
|
# unless the handler somehow doesn't exist, which would leave us without bindings.
|
||||||
|
# this happens in no-config mode.
|
||||||
|
functions -q __fish_reload_key_bindings
|
||||||
|
and return 1
|
||||||
|
end
|
||||||
|
end
|
|
@ -9,25 +9,8 @@ function fish_default_key_bindings -d "emacs-like key binds"
|
||||||
if not set -q argv[1]
|
if not set -q argv[1]
|
||||||
bind --erase --all --preset # clear earlier bindings, if any
|
bind --erase --all --preset # clear earlier bindings, if any
|
||||||
if test "$fish_key_bindings" != fish_default_key_bindings
|
if test "$fish_key_bindings" != fish_default_key_bindings
|
||||||
# Allow the user to set the variable universally
|
__fish_change_key_bindings fish_default_key_bindings || return
|
||||||
set -l scope
|
set fish_bind_mode default
|
||||||
set -q fish_key_bindings
|
|
||||||
or set scope -g
|
|
||||||
true
|
|
||||||
# We try to use `set --no-event`, but to avoid leaving the user without bindings
|
|
||||||
# if they run this with an older version we fall back on setting the variable
|
|
||||||
# with an event.
|
|
||||||
if ! set --no-event $scope fish_key_bindings fish_default_key_bindings 2>/dev/null
|
|
||||||
# This triggers the handler, which calls us again
|
|
||||||
set $scope fish_key_bindings fish_default_key_bindings
|
|
||||||
# unless the handler somehow doesn't exist, which would leave us without bindings.
|
|
||||||
# this happens in no-config mode.
|
|
||||||
functions -q __fish_reload_key_bindings
|
|
||||||
and return
|
|
||||||
else
|
|
||||||
# (we need to set the bind mode to default)
|
|
||||||
set --no-event fish_bind_mode default
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -23,22 +23,7 @@ function fish_vi_key_bindings --description 'vi-like key bindings for fish'
|
||||||
# and without this would then have subtly broken bindings.
|
# and without this would then have subtly broken bindings.
|
||||||
if test "$fish_key_bindings" != fish_vi_key_bindings
|
if test "$fish_key_bindings" != fish_vi_key_bindings
|
||||||
and test "$rebind" = true
|
and test "$rebind" = true
|
||||||
# Allow the user to set the variable universally
|
__fish_change_key_bindings fish_vi_key_bindings || return
|
||||||
set -l scope
|
|
||||||
set -q fish_key_bindings
|
|
||||||
or set scope -g
|
|
||||||
true
|
|
||||||
# We try to use `set --no-event`, but to avoid leaving the user without bindings
|
|
||||||
# if they run this with an older version we fall back on setting the variable
|
|
||||||
# with an event.
|
|
||||||
if ! set --no-event $scope fish_key_bindings fish_vi_key_bindings 2>/dev/null
|
|
||||||
# This triggers the handler, which calls us again
|
|
||||||
set $scope fish_key_bindings fish_vi_key_bindings
|
|
||||||
# unless the handler somehow doesn't exist, which would leave us without bindings.
|
|
||||||
# this happens in no-config mode.
|
|
||||||
functions -q __fish_reload_key_bindings
|
|
||||||
and return
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
set -l init_mode insert
|
set -l init_mode insert
|
||||||
|
|
Loading…
Reference in New Issue
Block a user