From 4c292ea2b023a331dcf1af5644487f2272d24a4d Mon Sep 17 00:00:00 2001 From: Sebastian Gniazdowski Date: Sun, 20 Sep 2015 14:39:46 +0200 Subject: Initial commit of Zsh Navigation Tools --- plugins/zsh-navigation-tools/n-panelize | 61 +++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 plugins/zsh-navigation-tools/n-panelize (limited to 'plugins/zsh-navigation-tools/n-panelize') diff --git a/plugins/zsh-navigation-tools/n-panelize b/plugins/zsh-navigation-tools/n-panelize new file mode 100644 index 000000000..a70565c79 --- /dev/null +++ b/plugins/zsh-navigation-tools/n-panelize @@ -0,0 +1,61 @@ +# 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 ] && . ~/.config/znt/n-list.conf +[ -f ~/.config/znt/n-panelize.conf ] && . ~/.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 + + list=( `"$@"` ) + # 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 + + list=( "${(@f)"$(<&0)"}" ) + + if [[ ! -c /dev/tty ]]; then + exec <&2 + else + exec