summaryrefslogtreecommitdiff
path: root/.local/src/blesh/contrib/fzf-key-bindings.bash
diff options
context:
space:
mode:
Diffstat (limited to '.local/src/blesh/contrib/fzf-key-bindings.bash')
-rw-r--r--.local/src/blesh/contrib/fzf-key-bindings.bash54
1 files changed, 54 insertions, 0 deletions
diff --git a/.local/src/blesh/contrib/fzf-key-bindings.bash b/.local/src/blesh/contrib/fzf-key-bindings.bash
new file mode 100644
index 0000000..9ef2774
--- /dev/null
+++ b/.local/src/blesh/contrib/fzf-key-bindings.bash
@@ -0,0 +1,54 @@
+# ble/contrib/fzf-key-bindings.bash (C) 2020, akinomyoga
+
+ble-import contrib/fzf-initialize
+
+[[ $- == *i* ]] || return 0
+
+ble/function#push bind :
+if [[ -f $_ble_contrib_fzf_base/key-bindings.bash ]]; then
+ source "$_ble_contrib_fzf_base/key-bindings.bash"
+elif [[ -f $_ble_contrib_fzf_base/shell/key-bindings.bash ]]; then
+ source "$_ble_contrib_fzf_base/shell/key-bindings.bash"
+fi
+ble/function#pop bind
+
+function ble/contrib/fzf-key-bindings/is-fzf-above-7c447bbd {
+ local def; ble/function#getdef __fzf_history__
+ [[ $def == *READLINE_LINE=* ]]
+}
+
+# CTRL-T - Paste the selected file path into the command line
+ble-bind -m emacs -x C-t fzf-file-widget
+ble-bind -m vi_imap -x C-t fzf-file-widget
+ble-bind -m vi_nmap -s C-t 'i\C-t'
+
+# CTRL-R - Paste the selected command from history into the command line
+ble-bind -m emacs -x C-r fzf-history-widget
+ble-bind -m vi_imap -x C-r fzf-history-widget
+ble-bind -m vi_nmap -s C-r 'i\C-r'
+function fzf-history-widget {
+ READLINE_LINE=$(history -p "$(__fzf_history__)")
+ READLINE_POINT=${#READLINE_LINE}
+}
+((_ble_bash>=40000)) &&
+ ble/contrib/fzf-key-bindings/is-fzf-above-7c447bbd &&
+ function fzf-history-widget { __fzf_history__; }
+
+# ALT-C - cd into the selected directory
+ble-bind -m emacs -c M-c 'eval "$(__fzf_cd__)"'
+ble-bind -m vi_imap -c M-c 'eval "$(__fzf_cd__)"'
+ble-bind -m vi_nmap -c M-c 'eval "$(__fzf_cd__)"'
+
+# patch fzf functions
+ble/function#advice around fzf-file-widget ble/contrib/fzf-key-bindings.advice
+ble/function#advice around __fzf_history__ ble/contrib/fzf-key-bindings.advice
+ble/function#advice around __fzf_cd__ ble/contrib/fzf-key-bindings.advice
+function ble/contrib/fzf-key-bindings.advice {
+ if [[ ! $_ble_attached ]]; then
+ ble/function#advice/do
+ return
+ fi
+ ble/term/leave-for-widget
+ ble/function#advice/do
+ ble/term/enter-for-widget
+}