diff options
author | Christoph Anton Mitterer <mail@christoph.anton.mitterer.name> | 2023-10-08 18:19:28 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-09 01:19:28 +0900 |
commit | f103aa4753b435f8f45c5130323effeb75583c15 (patch) | |
tree | 05804d2efd4548cd5da28bbcfa8474a30fe11798 /shell | |
parent | 884856023ab53fa1eb7f8dbf158aa522daef0ae5 (diff) |
Improve interactiveness checks (#3449)
* [bash] return instead of not executing an if-block, when non-interactive
This should keep the code more readable, be less error prone (accidentally doing
something outside the if-block and aligns the code with what’s already done for
zsh.
`0` is returned, because it shall not be considered an error when the script is
(accidentally) sourced from a non-interactive shell.
If executed as a script (rather than sourced), the results are not specified by
POSIX but depend on the shell, with bash giving an error in that case.
Signed-off-by: Christoph Anton Mitterer <mail@christoph.anton.mitterer.name>
* [shell] exit immediately when called from non-interactive shell
The shell execution environment shouldn’t be modified at all, when called from a
non-interactive shell.
It shall be noted that the current check may become error prone for bash, namely
in case there should ever be a differentiation between `i` and `I` in the
special variable `-` and bash’s `nocasematch`-shell-option be used.
Signed-off-by: Christoph Anton Mitterer <mail@christoph.anton.mitterer.name>
Diffstat (limited to 'shell')
-rw-r--r-- | shell/completion.bash | 5 | ||||
-rw-r--r-- | shell/completion.zsh | 6 | ||||
-rw-r--r-- | shell/key-bindings.bash | 7 | ||||
-rw-r--r-- | shell/key-bindings.zsh | 5 |
4 files changed, 11 insertions, 12 deletions
diff --git a/shell/completion.bash b/shell/completion.bash index fb0b6c83..463d7764 100644 --- a/shell/completion.bash +++ b/shell/completion.bash @@ -9,7 +9,8 @@ # - $FZF_COMPLETION_TRIGGER (default: '**') # - $FZF_COMPLETION_OPTS (default: empty) -if [[ $- =~ i ]]; then +[[ $- =~ i ]] || return 0 + # To use custom commands instead of find, override _fzf_compgen_{path,dir} if ! declare -F _fzf_compgen_path > /dev/null; then @@ -401,5 +402,3 @@ _fzf_setup_completion 'var' export unset printenv _fzf_setup_completion 'alias' unalias _fzf_setup_completion 'host' telnet _fzf_setup_completion 'proc' kill - -fi diff --git a/shell/completion.zsh b/shell/completion.zsh index 1e7d6f10..a0406cb4 100644 --- a/shell/completion.zsh +++ b/shell/completion.zsh @@ -9,6 +9,9 @@ # - $FZF_COMPLETION_TRIGGER (default: '**') # - $FZF_COMPLETION_OPTS (default: empty) +[[ -o interactive ]] || return 0 + + # Both branches of the following `if` do the same thing -- define # __fzf_completion_options such that `eval $__fzf_completion_options` sets # all options to the same values they currently have. We'll do just that at @@ -73,9 +76,6 @@ fi # `finally` in lesser languages. We use it to *always* restore user options. { -# Bail out if not interactive shell. -[[ -o interactive ]] || return 0 - # To use custom commands instead of find, override _fzf_compgen_{path,dir} if ! declare -f _fzf_compgen_path > /dev/null; then _fzf_compgen_path() { diff --git a/shell/key-bindings.bash b/shell/key-bindings.bash index 398f66e4..e57f2af8 100644 --- a/shell/key-bindings.bash +++ b/shell/key-bindings.bash @@ -11,6 +11,9 @@ # - $FZF_ALT_C_COMMAND # - $FZF_ALT_C_OPTS +[[ $- =~ i ]] || return 0 + + # Key bindings # ------------ __fzf_select__() { @@ -27,8 +30,6 @@ __fzf_select__() { done } -if [[ $- =~ i ]]; then - __fzfcmd() { [[ -n "${TMUX_PANE-}" ]] && { [[ "${FZF_TMUX:-0}" != 0 ]] || [[ -n "${FZF_TMUX_OPTS-}" ]]; } && echo "fzf-tmux ${FZF_TMUX_OPTS:--d${FZF_TMUX_HEIGHT:-40%}} -- " || echo "fzf" @@ -130,5 +131,3 @@ fi bind -m emacs-standard '"\ec": " \C-b\C-k \C-u`__fzf_cd__`\e\C-e\er\C-m\C-y\C-h\e \C-y\ey\C-x\C-x\C-d"' bind -m vi-command '"\ec": "\C-z\ec\C-z"' bind -m vi-insert '"\ec": "\C-z\ec\C-z"' - -fi diff --git a/shell/key-bindings.zsh b/shell/key-bindings.zsh index c04a0020..4c4f0a08 100644 --- a/shell/key-bindings.zsh +++ b/shell/key-bindings.zsh @@ -11,6 +11,9 @@ # - $FZF_ALT_C_COMMAND # - $FZF_ALT_C_OPTS +[[ -o interactive ]] || return 0 + + # Key bindings # ------------ @@ -36,8 +39,6 @@ fi { -[[ -o interactive ]] || return 0 - # CTRL-T - Paste the selected file path(s) into the command line __fsel() { local cmd="${FZF_CTRL_T_COMMAND:-"command find -L . -mindepth 1 \\( -path '*/.*' -o -fstype 'sysfs' -o -fstype 'devfs' -o -fstype 'devtmpfs' -o -fstype 'proc' \\) -prune \ |