mirror of
https://github.com/eth-p/bat-extras.git
synced 2024-12-04 21:40:44 +01:00
batman: If fzf is installed, use batman
to search through man pages
This commit is contained in:
parent
f280553fb1
commit
82ac5c4391
@ -4,6 +4,7 @@ Read system manual pages (`man`) using `bat` as the manual page formatter.
|
|||||||
|
|
||||||
Gone are the days of losing your place while reading through monotone manual pages. With `bat` and `batman`, you can read `man ifconfig` with beautiful 24-bit color and syntax higlighting.
|
Gone are the days of losing your place while reading through monotone manual pages. With `bat` and `batman`, you can read `man ifconfig` with beautiful 24-bit color and syntax higlighting.
|
||||||
|
|
||||||
|
If you have `fzf` installed, you can even use `batman` to search through manual pages!
|
||||||
|
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
@ -13,6 +13,7 @@ EXECUTABLE_BAT="$(command -v bat 2>/dev/null || command -v batcat 2>/dev/null ||
|
|||||||
EXECUTABLE_GIT="git"
|
EXECUTABLE_GIT="git"
|
||||||
EXECUTABLE_DELTA="delta"
|
EXECUTABLE_DELTA="delta"
|
||||||
EXECUTABLE_RIPGREP="rg"
|
EXECUTABLE_RIPGREP="rg"
|
||||||
|
EXECUTABLE_FZF="fzf"
|
||||||
|
|
||||||
# Constants: Program
|
# Constants: Program
|
||||||
PROGRAM="$(basename "$0" .sh)"
|
PROGRAM="$(basename "$0" .sh)"
|
||||||
|
@ -42,5 +42,30 @@ fi
|
|||||||
export MANPAGER='sh -c "col -bx | '"$(printf "%q" "$EXECUTABLE_BAT")"' --language=man '$(printf "%q " "${BAT_ARGS[@]}")'"'
|
export MANPAGER='sh -c "col -bx | '"$(printf "%q" "$EXECUTABLE_BAT")"' --language=man '$(printf "%q " "${BAT_ARGS[@]}")'"'
|
||||||
export MANROFFOPT='-c'
|
export MANROFFOPT='-c'
|
||||||
|
|
||||||
|
# If no argument is provided and fzf is installed, use fzf to search for man pages.
|
||||||
|
if [[ "${#MAN_ARGS[@]}" -eq 0 ]] && [[ -z "$BATMAN_LEVEL" ]] && command -v "$EXECUTABLE_FZF" &>/dev/null; then
|
||||||
|
export BATMAN_LEVEL=1
|
||||||
|
|
||||||
|
selected_page="$(man -k . | "$EXECUTABLE_FZF" --delimiter=" - " --reverse -e --preview="
|
||||||
|
echo {1} \
|
||||||
|
| sed 's/, /\n/g;' \
|
||||||
|
| sed 's/\([^(]*\)(\([0-9]\))/\2\t\1/' \
|
||||||
|
| BAT_STYLE=plain xargs batman --color=always --paging=never
|
||||||
|
" | sed 's/^\(.*\) - .*$/\1/; s/, /\n/g'
|
||||||
|
)"
|
||||||
|
|
||||||
|
if [[ -z "$selected_page" ]]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Convert the page(section) format to something that can be fed to the man command.
|
||||||
|
while read -r line; do
|
||||||
|
if [[ "$line" =~ ^(.*)\(([0-9]+)\)$ ]]; then
|
||||||
|
MAN_ARGS+=("${BASH_REMATCH[2]}" "${BASH_REMATCH[1]}")
|
||||||
|
fi
|
||||||
|
done <<< "$selected_page"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Run man.
|
||||||
command man "${MAN_ARGS[@]}"
|
command man "${MAN_ARGS[@]}"
|
||||||
exit $?
|
exit $?
|
||||||
|
Loading…
Reference in New Issue
Block a user