You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.5 KiB
68 lines
1.5 KiB
# Copy this file into /usr/share/zsh/site-functions/ |
|
# and add 'autoload n-panelize` to .zshrc |
|
# |
|
# This function somewhat reminds the panelize feature from Midnight Commander |
|
# It allows browsing output of arbitrary command. Example usage: |
|
# v-panelize ls /usr/local/bin |
|
# |
|
# Uses n-list |
|
|
|
emulate -L zsh |
|
|
|
setopt extendedglob |
|
zmodload zsh/curses |
|
|
|
local IFS=" |
|
" |
|
|
|
unset NLIST_COLORING_PATTERN |
|
|
|
[ -f ~/.config/znt/n-list.conf ] && builtin source ~/.config/znt/n-list.conf |
|
[ -f ~/.config/znt/n-panelize.conf ] && builtin source ~/.config/znt/n-panelize.conf |
|
|
|
local list |
|
local selected |
|
|
|
NLIST_REMEMBER_STATE=0 |
|
|
|
if [ -t 0 ]; then |
|
# Check if there is proper input |
|
if [ "$#" -lt 1 ]; then |
|
echo "Usage: n-panelize {command} [option|argument] ... or command | n-panelize" |
|
return 1 |
|
fi |
|
|
|
# This loop makes script faster on some Zsh's (e.g. 5.0.8) |
|
repeat 1; do |
|
list=( `"$@"` ) |
|
done |
|
|
|
# TODO: $? doesn't reach user |
|
[ "$?" -eq 127 ] && return $? |
|
else |
|
# Check if can reattach to terminal |
|
if [[ ! -c /dev/tty && ! -t 2 ]]; then |
|
echo "No terminal available (no /dev/tty)" |
|
return 1 |
|
fi |
|
|
|
# This loop makes script faster on some Zsh's (e.g. 5.0.8) |
|
repeat 1; do |
|
list=( "${(@f)"$(<&0)"}" ) |
|
done |
|
|
|
if [[ ! -c /dev/tty ]]; then |
|
exec <&2 |
|
else |
|
exec </dev/tty |
|
fi |
|
fi |
|
|
|
n-list "${list[@]}" |
|
|
|
if [ "$REPLY" -gt 0 ]; then |
|
selected="$reply[REPLY]" |
|
print -zr "# $selected" |
|
fi |
|
|
|
# vim: set filetype=zsh:
|
|
|