diff --git a/conf.d/fzf.fish b/conf.d/fzf.fish index 446dd3c..7143bea 100644 --- a/conf.d/fzf.fish +++ b/conf.d/fzf.fish @@ -9,7 +9,8 @@ end # This variable is global so that it can be referenced by fzf_configure_bindings and in tests set --global _fzf_search_vars_command '_fzf_search_variables (set --show | psub) (set --names | psub)' -# Install the default bindings, which are mnemonic and minimally conflict with fish's preset bindings +# Install the default bindings only if fzf is available +type -q fzf || exit fzf_configure_bindings # Doesn't erase autoloaded _fzf_* functions because they are not easily accessible once key bindings are erased diff --git a/conf.d/key_bindings.fish b/conf.d/key_bindings.fish index b725bc3..8b8dd06 100644 --- a/conf.d/key_bindings.fish +++ b/conf.d/key_bindings.fish @@ -52,7 +52,7 @@ function fish_user_key_bindings bind ctrl-g __insert_previous_path_head bind ctrl-f __interactive_history_sub bind ctrl-alt-u _replace_command_token - bind ctrl-alt-= _qalc_eval + type -q qalc && bind ctrl-alt-= _qalc_eval bind ctrl-enter _smart_execute # Set bindings for all Vi modes: @@ -61,7 +61,7 @@ function fish_user_key_bindings bind --mode $mode ctrl-g __insert_previous_path_head bind --mode $mode ctrl-f __interactive_history_sub bind --mode $mode ctrl-alt-u _replace_command_token - bind --mode $mode ctrl-alt-= _qalc_eval + type -q qalc && bind --mode $mode ctrl-alt-= _qalc_eval bind --mode $mode ctrl-enter _smart_execute end end diff --git a/functions/_qalc_eval.fish b/functions/_qalc_eval.fish index 212810f..69aa255 100644 --- a/functions/_qalc_eval.fish +++ b/functions/_qalc_eval.fish @@ -3,6 +3,8 @@ # Returns the result of a qalc calculation function _qalc_eval + type -q qalc || return 1 + # Get the current command line buffer set -l cmd (commandline) diff --git a/functions/_smart_execute.fish b/functions/_smart_execute.fish index f2fe8d9..cb1bd33 100644 --- a/functions/_smart_execute.fish +++ b/functions/_smart_execute.fish @@ -15,8 +15,8 @@ function _smart_execute --description 'Execute different functions based on the # 2. Dispatch based on buffer content switch "$cmd" case '*=' - # If it ends in =, run qalc - _qalc_eval + # If it ends in =, run qalc; fall back to normal execute if qalc is absent + _qalc_eval; or commandline -f execute # case 'g *' # # EXAMPLE FUTURE EXTENSION diff --git a/integrations/fzf.fish b/integrations/fzf.fish index b76ce16..527f452 100644 --- a/integrations/fzf.fish +++ b/integrations/fzf.fish @@ -206,7 +206,7 @@ function fzf_key_bindings # Prepend the options to allow user customizations set -p -- FZF_DEFAULT_OPTS \ - '--bind="focus,resize:bg-transform:if test \\"$FZF_COLUMNS\\" -gt 100 -a \\\\( \\"$FZF_SELECT_COUNT\\" -gt 0 -o \\\\( -z \\"$FZF_WRAP\\" -a (string length -- {}) -gt (math $FZF_COLUMNS - 4) \\\\) -o (string collect -- {2..} | fish_indent | count) -gt 1 \\\\); echo show-preview; else echo hide-preview; end"' \ + '--bind="focus,resize:transform:if test \\"$FZF_COLUMNS\\" -gt 100 -a \\\\( \\"$FZF_SELECT_COUNT\\" -gt 0 -o \\\\( -z \\"$FZF_WRAP\\" -a (string length -- {}) -gt (math $FZF_COLUMNS - 4) \\\\) -o (string collect -- {2..} | fish_indent | count) -gt 1 \\\\); echo show-preview; else echo hide-preview; end"' \ '--preview="string collect -- (test \\"$FZF_SELECT_COUNT\\" -gt 0; and string collect -- {+2..}) \\"\\n# \\"'$date_cmd' {2..} | fish_indent --ansi"' \ '--preview-window="right,50%,wrap-word,follow,info,hidden"' end