aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/sh/.local
diff options
context:
space:
mode:
Diffstat (limited to 'sh/.local')
-rwxr-xr-xsh/.local/bin/ff29
1 files changed, 29 insertions, 0 deletions
diff --git a/sh/.local/bin/ff b/sh/.local/bin/ff
new file mode 100755
index 0000000..419f031
--- /dev/null
+++ b/sh/.local/bin/ff
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+##
+# Interactive search.
+# Usage: `ff` or `ff <PATH>`.
+#
+
+SEARCH_PATH=$(printf %s "$1" | sed 's|/$||')
+lines=$(tmux display -p "#{pane_height}")
+columns=$(tmux display -p "#{pane_width}")
+WIDTH=$([ "$columns" -gt "150" ] && printf %s "150" || printf %s "90%")
+HEIGHT=$([ "$lines" -gt "50" ] && printf %s "50" || printf %s "90%")
+RG_DEFAULT_COMMAND="rga -i -l --hidden --no-ignore-vcs -e {q} $SEARCH_PATH | sed 's|^$SEARCH_PATH/||'"
+
+selected=$(
+ FZF_DEFAULT_COMMAND="rga --files $SEARCH_PATH | sed 's|^$SEARCH_PATH/||'" \
+ fzf-tmux -p "$WIDTH,$HEIGHT" \
+ -m \
+ -e \
+ --ansi \
+ --disabled \
+ --header "$(printf %s "$SEARCH_PATH" | sed "s|^$HOME|~|")/" \
+ --header-first \
+ --bind "change:reload:$RG_DEFAULT_COMMAND || true" \
+ --preview-window='right,66%,<80(up,50%,border-bottom)' \
+ --preview "rga -i --pretty --context 3 -e {q} $SEARCH_PATH/{}" | cut -d":" -f1,2
+)
+
+[ -n "$selected" ] && $EDITOR "$selected"