feat(zsh-navigation-tools)!: update to zdharma-continuum fork (#10402)

BREAKING CHANGE: the `zsh-navigation-tools` plugin now bundles the version from the
zdharma-continuum project, which republished the projects that psprint deleted (we
don't yet know yet why). In theory this change doesn't break anything, but be aware
of the change and that the upstream repository now lives somewhere else.

Source: https://github.com/zdharma-continuum/zsh-navigation-tools/commit/67b24e1
This commit is contained in:
Philipp Schmitt 2021-12-24 18:09:01 +01:00 committed by GitHub
parent 4f90849425
commit 068feca15d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 346 additions and 25 deletions

View file

@ -1 +0,0 @@
These are skeletons, configuration is read from ~/.config/znt/*

View file

@ -1,15 +1,14 @@
[![License (GPL version 3)](https://img.shields.io/badge/license-GNU%20GPL%20version%203-blue.svg?style=flat-square)](./LICENSE)
[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](./LICENSE)
![ZSH 5.0.0](https://img.shields.io/badge/zsh-v5.0.0-orange.svg?style=flat-square)
[![Gitter][gitter-image]][gitter-link]
![znt logo](http://imageshack.com/a/img905/2629/WK9qjN.png)
[![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=D6XDCHDSBDSDG)
# Zsh Navigation Tools
Also check out [![ZCA](http://imageshack.com/a/img911/8084/qSpO8a.png) Zsh Command Architect](https://github.com/psprint/zsh-cmd-architect)
and [Zconvey](https://github.com/psprint/zconvey)
Also check out [![ZCA](http://imageshack.com/a/img911/8084/qSpO8a.png) Zsh Command Architect](https://github.com/zdharma-continuum/zsh-cmd-architect)
and [Zconvey](https://github.com/zdharma-continuum/zconvey)
@ -107,10 +106,10 @@ history management and various integrations with `Zsh`.
* 30-04-2016
- New feature: color themes. Use `Ctrl-T` and `Ctrl-G` to browse predefined
themes. They are listed in [~/.config/znt/n-list.conf](https://github.com/psprint/zsh-navigation-tools/blob/master/.config/znt/n-list.conf).
themes. They are listed in [~/.config/znt/n-list.conf](https://github.com/zdharma-continuum/zsh-navigation-tools/blob/master/.config/znt/n-list.conf).
Use the file to permanently set a color scheme. Also, I sent a patch to Zsh developers
and starting from Zsh > 5.2 (not yet released) supported will be 256 colors.
The file [~/.config/znt/n-list.conf](https://github.com/psprint/zsh-navigation-tools/blob/master/.config/znt/n-list.conf)
The file [~/.config/znt/n-list.conf](https://github.com/zdharma-continuum/zsh-navigation-tools/blob/master/.config/znt/n-list.conf)
already has set of 256-color themes prepared :)
![themes](http://imageshack.com/a/img924/4310/EbRh30.gif)
@ -130,7 +129,7 @@ history management and various integrations with `Zsh`.
## Installation
```
sh -c "$(curl -fsSL https://raw.githubusercontent.com/psprint/zsh-navigation-tools/master/doc/install.sh)"
sh -c "$(curl -fsSL https://raw.githubusercontent.com/zdharma-continuum/zsh-navigation-tools/master/doc/install.sh)"
```
To update run the command again.
@ -140,16 +139,16 @@ will be updated with only `8` lines of code, which will be added at the bottom.
After installing and reloading shell give `ZNT` a quick try with `Ctrl-R` this keyboard shortcut will open `n-history`.
## Installation With [Zplugin](https://github.com/psprint/zplugin)
Add `zplugin load psprint/zsh-navigation-tools` to `.zshrc`. The config files will be in `~/.config/znt`.
## Installation With [Zinit](https://github.com/zdharma-continuum/zinit)
Add `zinit load zdharma-continuum/zsh-navigation-tools` to `.zshrc`. The config files will be in `~/.config/znt`.
## Installation With Zgen
## Installation With Zgenom/Zgen
Add `zgen load psprint/zsh-navigation-tools` to `.zshrc` and issue a `zgen reset` (this assumes that there is a proper `zgen save` construct in `.zshrc`).
Add `zgen load zdharma-continuum/zsh-navigation-tools` to `.zshrc` and issue a `zgen reset` (this assumes that there is a proper `zgen save` construct in `.zshrc`).
The config files will be available in `~/.config/znt`.
## Installation With Antigen
Add `antigen bundle psprint/zsh-navigation-tools` to `.zshrc`. There also
Add `antigen bundle zdharma-continuum/zsh-navigation-tools` to `.zshrc`. There also
should be `antigen apply`. The config files will be in `~/.config/znt`.
## Single File Manual Installation
@ -194,7 +193,7 @@ alias naliases=n-aliases ncd=n-cd nenv=n-env nfunctions=n-functions nhistory=n-h
alias nkill=n-kill noptions=n-options npanelize=n-panelize nhelp=n-help
```
Don't forget to copy [configuration files](https://github.com/psprint/zsh-navigation-tools/tree/master/.config/znt). They should go to `~/.config/znt`. Moreover, `n-cd` works together with option `AUTO_PUSHD` and you should have:
Don't forget to copy [configuration files](https://github.com/zdharma-continuum/zsh-navigation-tools/tree/master/.config/znt). They should go to `~/.config/znt`. Moreover, `n-cd` works together with option `AUTO_PUSHD` and you should have:
```zsh
setopt AUTO_PUSHD
@ -397,15 +396,7 @@ The same with doing any non-typical Zsh Navigation Tools installation.
## More
- be aware of [this](https://github.com/psprint/zsh-navigation-tools/blob/f49f910d239ae5bc6e1a5bb34930307b4f4e3ffe/zsh-navigation-tools.plugin.zsh#L35-L49)
## IRC Channel
Channel `#zplugin@freenode` is a support place for all author's projects. Connect to:
[chat.freenode.net:6697](ircs://chat.freenode.net:6697/%23zplugin) (SSL) or [chat.freenode.net:6667](irc://chat.freenode.net:6667/%23zplugin)
and join #zplugin.
Following is a quick access via Webchat [![IRC](https://kiwiirc.com/buttons/chat.freenode.net/zplugin.png)](https://kiwiirc.com/client/chat.freenode.net:+6697/#zplugin)
- be aware of [this](https://github.com/zdharma-continuum/zsh-navigation-tools/blob/f49f910d239ae5bc6e1a5bb34930307b4f4e3ffe/zsh-navigation-tools.plugin.zsh#L35-L49)
# Fixing tmux, screen and linux vt
@ -429,3 +420,5 @@ It will not display underline properly, but will instead highlight by a color,
which is quite nice. The same will not work for FreeBSD's vt, `ZNT` will detect
if that vt is used and will revert to highlighting elements via `reverse` mode.
[gitter-image]: https://badges.gitter.im/zdharma-continuum/community.svg
[gitter-link]: https://gitter.im/zdharma-continuum/community

View file

@ -0,0 +1,35 @@
#!/bin/zsh
local PLUGIN_FILE="doc/zshnavigationtools.plugin.zsh"
[ -d doc ] || cd ..
rm -vf "$PLUGIN_FILE"
echo "# The preamble comments apply when using ZNT as autoload functions" >>"$PLUGIN_FILE"
echo "# https://github.com/psprint/zsh-navigation-tools" >>"$PLUGIN_FILE"
echo "# License is GPLv3 and MIT" >>"$PLUGIN_FILE"
echo -n "# " >>"$PLUGIN_FILE"
git show-ref master | head -1 >>"$PLUGIN_FILE"
echo >>"$PLUGIN_FILE"
for i in n-*(on); do
echo "$i() {" >>"$PLUGIN_FILE"
cat "$i" >>"$PLUGIN_FILE"
echo "}" >>"$PLUGIN_FILE"
echo "alias n${i#n-}=$i" >>"$PLUGIN_FILE"
echo >>"$PLUGIN_FILE"
done
# Append znt-* files
for i in znt-*(on); do
echo "$i() {" >>"$PLUGIN_FILE"
cat "$i" >>"$PLUGIN_FILE"
echo "}" >>"$PLUGIN_FILE"
echo >>"$PLUGIN_FILE"
done
# Append ^R bind
echo "zle -N znt-history-widget" >>"$PLUGIN_FILE"
echo "bindkey '^R' znt-history-widget" >>"$PLUGIN_FILE"
echo "setopt AUTO_PUSHD HIST_IGNORE_DUPS PUSHD_IGNORE_DUPS" >>"$PLUGIN_FILE"

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

View file

@ -0,0 +1,70 @@
#!/bin/sh
if ! type git 2>/dev/null 1>&2; then
echo "Please install GIT first"
echo "Exiting"
exit 1
fi
#
# Clone or pull
#
if ! test -d "$HOME/.config"; then
mkdir "$HOME/.config"
fi
if ! test -d "$HOME/.config/znt"; then
mkdir "$HOME/.config/znt"
fi
echo ">>> Downloading zsh-navigation-tools to ~/.config/znt"
if test -d ~/.config/znt/zsh-navigation-tools; then
cd ~/.config/znt/zsh-navigation-tools
git pull origin master
else
cd ~/.config/znt
git clone https://github.com/psprint/zsh-navigation-tools.git zsh-navigation-tools
fi
echo ">>> Done"
#
# Copy configs
#
echo ">>> Copying config files"
cd ~/.config/znt
set n-aliases.conf n-env.conf n-history.conf n-list.conf n-panelize.conf n-cd.conf n-functions.conf n-kill.conf n-options.conf
for i; do
if ! test -f "$i"; then
cp -v zsh-navigation-tools/.config/znt/$i .
fi
done
echo ">>> Done"
#
# Modify .zshrc
#
echo ">>> Updating .zshrc"
if ! grep zsh-navigation-tools ~/.zshrc >/dev/null 2>&1; then
echo >> ~/.zshrc
echo "### ZNT's installer added snippet ###" >> ~/.zshrc
echo "fpath=( \"\$fpath[@]\" \"\$HOME/.config/znt/zsh-navigation-tools\" )" >> ~/.zshrc
echo "autoload n-aliases n-cd n-env n-functions n-history n-kill n-list n-list-draw n-list-input n-options n-panelize n-help" >> ~/.zshrc
echo "autoload znt-usetty-wrapper znt-history-widget znt-cd-widget znt-kill-widget" >> ~/.zshrc
echo "alias naliases=n-aliases ncd=n-cd nenv=n-env nfunctions=n-functions nhistory=n-history" >> ~/.zshrc
echo "alias nkill=n-kill noptions=n-options npanelize=n-panelize nhelp=n-help" >> ~/.zshrc
echo "zle -N znt-history-widget" >> ~/.zshrc
echo "bindkey '^R' znt-history-widget" >> ~/.zshrc
echo "setopt AUTO_PUSHD HIST_IGNORE_DUPS PUSHD_IGNORE_DUPS" >> ~/.zshrc
echo "zstyle ':completion::complete:n-kill::bits' matcher 'r:|=** l:|=*'" >> ~/.zshrc
echo "### END ###" >> ~/.zshrc
echo ">>> Done"
else
echo ">>> .zshrc already updated, not making changes"
fi

View file

@ -0,0 +1,224 @@
# Copy this file into /usr/share/zsh/site-functions/
# and add 'autoload n-preview` to .zshrc
#
# This is partially a test if n-list-draw and n-list-input can be
# used multiple times to create multiple lists. It might become
# more usable if someone adds more features like previewing of
# archive contents.
emulate -L zsh
zmodload zsh/curses
setopt typesetsilent extendedglob
trap "return" TERM INT QUIT
trap "_vpreview_exit" EXIT
local IFS="
"
[ -f ~/.config/znt/n-list.conf ] && . ~/.config/znt/n-list.conf
[[ "$colorpair" = "" ]] && colorpair="white/black"
local background="${colorpair#*/}"
# Drawing and input
autoload n-list-draw n-list-input
# Cleanup before any exit
_vpreview_exit() {
zcurses 2>/dev/null delwin files
zcurses 2>/dev/null delwin body
zcurses 2>/dev/null delwin status
zcurses 2>/dev/null refresh
zcurses end
}
# Outputs a message in the bottom of the screen
_vpreview_status_msg() {
zcurses move status 1 2
zcurses clear status eol
zcurses string status "$1"
}
# Prefer tput, then module terminfo
_nlist_cursor_visibility() {
if type tput 2>/dev/null 1>&2; then
[ "$1" = "1" ] && tput cvvis
[ "$1" = "0" ] && tput civis
elif [ "$has_termcap" = "1" ]; then
[ "$1" = "1" ] && [ -n $terminfo[cvvis] ] && echo -n $terminfo[cvvis]
[ "$1" = "0" ] && [ -n $terminfo[civis] ] && echo -n $terminfo[civis]
fi
}
#
# Main code
#
integer term_height="$LINES"
integer term_width="$COLUMNS"
if [[ "$term_height" -lt 1 || "$term_width" -lt 1 ]]; then
local stty_out=$( stty size )
term_height="${stty_out% *}"
term_width="${stty_out#* }"
fi
integer status_height=3
integer status_width=term_width
integer status_page_height=1
integer status_page_width=term_width-2
integer files_height=term_height-status_height
integer files_width=term_width/5
integer files_page_height=files_height-2
integer files_page_width=files_width-2
integer body_height=term_height-status_height
integer body_width=term_width-files_width
integer body_page_height=body_height-2
integer body_page_width=body_width
integer _from_what_idx_list_is_shown_1=1
integer current_1=1
integer _from_what_idx_list_is_shown_2=1
integer current_2=1
integer hscroll_2=0
integer active_window=0
local ansi_mode="ansi"
[ -f ~/.config/znt/n-preview.conf ] && . ~/.config/znt/n-preview.conf
typeset -a hcmd
#if type pygmentize 2>/dev/null 1>&2; then
# hcmd=( pygmentize -g )
if type highlight 2>/dev/null 1>&2; then
hcmd=( highlight -q --force -O ansi )
elif type source-highlight 2>/dev/null 1>&2; then
# Warning: source-highlight can have problems
hcmd=( source-highlight --failsafe -fesc -o STDOUT -i )
else
ansi_mode="noansi"
fi
zcurses init
zcurses addwin status "$status_height" "$status_width" $(( term_height - status_height )) 0
zcurses addwin files "$files_height" "$files_width" 0 0
zcurses addwin body "$body_height" "$body_width" 0 "$files_width"
zcurses bg status white/black
zcurses bg files white/black
zcurses bg body white/black
#
# Listening for input
#
local key keypad
# Clear input buffer
zcurses timeout status 0
zcurses input status key keypad
zcurses timeout status -1
key=""
keypad=""
typeset -a filenames
integer last_element_1
typeset -a body
integer last_element_2
filenames=( *(N) )
filenames=( "${(@M)filenames:#(#i)*$1*}" )
local NLIST_GREP_STRING="$1"
integer last_element_1="$#filenames"
integer last_element_2=0
local selection action final_key
while (( 1 )); do
# Output the lists
integer end_idx=$(( _from_what_idx_list_is_shown_1 + files_page_height - 1 ))
[ "$end_idx" -gt "$last_element_1" ] && end_idx=last_element_1
n-list-draw "$(( (current_1 -1) % files_page_height + 1 ))" \
"$files_page_height" "$files_page_width" 1 2 0 files \
"${(@)filenames[_from_what_idx_list_is_shown_1, end_idx]}"
if [ "$#body" -ge 1 ]; then
end_idx=$(( _from_what_idx_list_is_shown_2 + body_page_height - 1 ))
[ "$end_idx" -gt "$last_element_2" ] && end_idx=last_element_2
n-list-draw "$(( (current_2 -1) % body_page_height + 1 ))" \
"$body_page_height" "$body_page_width" 1 0 "$hscroll_2" body \
"${(@)body[_from_what_idx_list_is_shown_2, end_idx]}"
fi
[[ "$active_window" -eq 0 ]] && zcurses border files
zcurses border status
zcurses refresh files body status
# Wait for input
zcurses input status key keypad
# Get the special (i.e. "keypad") key or regular key
if [ -n "$key" ]; then
final_key="$key"
elif [ -n "$keypad" ]; then
final_key="$keypad"
else
_vpreview_status_msg "Inproper input detected"
zcurses refresh status
fi
if [ "$active_window" -eq 0 ]; then
zcurses clear files
n-list-input "$current_1" "$_from_what_idx_list_is_shown_1" "$files_page_height" \
"$files_page_width" "$last_element_1" 0 "$final_key"
selection="$reply[1]"
action="$reply[2]"
current_1="$reply[3]"
_from_what_idx_list_is_shown_1="$reply[4]"
if [ "$action" = "SELECT" ]; then
# Load new file and refresh the displaying window
local filename="$filenames[$selection]"
if [ "$ansi_mode" = "ansi" ]; then
body=( "${(@f)"$( "$hcmd[@]" "$filename" )"}" )
else
body=( "${(@f)"$(<$filename)"}" )
fi
last_element_2="$#body"
current_2=1
_from_what_idx_list_is_shown_2=1
zcurses clear body
fi
elif [ "$active_window" -eq 1 ]; then
zcurses clear body
n-list-input "$current_2" "$_from_what_idx_list_is_shown_2" "$body_page_height" \
"$body_page_width" "$last_element_2" "$hscroll_2" "$final_key"
selection="$reply[1]"
action="$reply[2]"
current_2="$reply[3]"
_from_what_idx_list_is_shown_2="$reply[4]"
hscroll_2="$reply[5]"
fi
if [ "$action" = "LEAVE" ]; then
active_window=1-active_window
elif [ "$action" = "QUIT" ]; then
break
elif [ "$action" = "REDRAW" ]; then
zcurses clear files redraw
zcurses clear body redraw
zcurses clear status redraw
fi
done
# vim: set filetype=zsh:

View file

@ -12,7 +12,7 @@
# To use, put this line to your ~/.tmux.conf. The tool is invoked with:
# Ctrl+b h
#
# bind h run-shell -b "$ZNT_REPO_DIR/znt-tmux.zsh"
# bind h run-shell -b "$ZNT_REPO_DIR/doc/znt-tmux.zsh"
#
# get and save the current active tmux pane id

View file

@ -8,7 +8,7 @@
#
# According to the standard:
# http://zdharma.org/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html
# https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html
0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}"
0="${${(M)0:#/*}:-$PWD/$0}"
export ZNT_REPO_DIR="${0:h}"