summaryrefslogtreecommitdiff
path: root/.local/bin/fm
diff options
context:
space:
mode:
Diffstat (limited to '.local/bin/fm')
-rwxr-xr-x.local/bin/fm22
1 files changed, 22 insertions, 0 deletions
diff --git a/.local/bin/fm b/.local/bin/fm
new file mode 100755
index 0000000..2f4fbb8
--- /dev/null
+++ b/.local/bin/fm
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# fzf-man: fuzzy search manual pages
+
+if [ "$OPENFLAG" = 0 ]; then
+ input="$*"; page="${input%%)*}";
+ name="${page%%[ (]*}"; section="${page#*(}"
+ if [ "$name" = "$section" ]; then
+ man "$name"
+ else
+ man "$section" "$name"
+ fi; exit
+fi
+
+mkdir -pv "${XDG_DATA_HOME:=$HOME/.local/share}/fzf"
+export FZF_HIST="${XDG_DATA_HOME:=$HOME/.local/share}/fzf/manual_history"
+
+apropos -l "${@:-.}" | fzf --history="$FZF_HIST" --prompt="man: " \
+ --preview='MANWIDTH=$FZF_PREVIEW_COLUMNS OPENFLAG=0 fm {}' \
+ --preview-window="hidden" --tiebreak="begin" \
+ --bind 'ctrl-v:toggle-preview,ctrl-space:toggle-preview' \
+ --bind 'enter:execute(echo {1} >> "$FZF_HIST"; OPENFLAG=0 fm {})'