Update 30.01.2022
This commit is contained in:
@@ -1 +0,0 @@
|
||||
These are skeletons, configuration is read from ~/.config/znt/*
|
||||
@@ -1,15 +1,28 @@
|
||||
[](./LICENSE)
|
||||
[](./LICENSE)
|
||||

|
||||
[![Gitter][gitter-image]][gitter-link]
|
||||
|
||||

|
||||
|
||||
[](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=D6XDCHDSBDSDG)
|
||||

|
||||
|
||||
# Zsh Navigation Tools
|
||||
|
||||
Also check out [ Zsh Command Architect](https://github.com/psprint/zsh-cmd-architect)
|
||||
and [Zconvey](https://github.com/psprint/zconvey)
|
||||
Set of tools like `n-history` – multi-word history searcher, `n-cd` – directory
|
||||
bookmark manager, `n-kill` – `htop` like kill utility, and more. Based on
|
||||
`n-list`, a tool generating selectable curses-based list of elements that has
|
||||
access to current `Zsh` session, i.e. has broad capabilities to work together
|
||||
with it. Feature highlights include incremental multi-word searching, approximate
|
||||
matching, ANSI coloring, themes, unique mode, horizontal scroll, grepping, advanced
|
||||
history management and various integrations with `Zsh`.
|
||||
|
||||
To use it, add `zsh-navigation-tools` to the plugins array in your zshrc file:
|
||||
|
||||
```zsh
|
||||
plugins=(... zsh-navigation-tools)
|
||||
```
|
||||
|
||||
Also check out [ Zsh Command Architect](https://github.com/zdharma-continuum/zsh-cmd-architect)
|
||||
and [Zconvey](https://github.com/zdharma-continuum/zconvey)
|
||||
|
||||
|
||||
|
||||
@@ -19,189 +32,10 @@ Videos:
|
||||
|
||||
Screenshots:
|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||
Set of tools like `n-history` – multi-word history searcher, `n-cd` – directory
|
||||
bookmark manager, `n-kill` – `htop` like kill utility, and more. Based on
|
||||
`n-list`, a tool generating selectable curses-based list of elements that has
|
||||
access to current `Zsh` session, i.e. has broad capabilities to work together
|
||||
with it. Feature highlights include incremental multi-word searching, approximate
|
||||
matching, ANSI coloring, themes, unique mode, horizontal scroll, grepping, advanced
|
||||
history management and various integrations with `Zsh`.
|
||||
|
||||
## News
|
||||
* 06-10-2016
|
||||
- **Tmux-integration** – `Ctrl-B H` in Tmux to open `n-history` in new window.
|
||||
Then select history entry, it will be copied to the original Tmux window.
|
||||
Use this to execute local commands on remote hosts:
|
||||
|
||||

|
||||
|
||||
All that is needed is this line added to `~/.tmux.conf`:
|
||||
|
||||
```
|
||||
bind h run-shell -b "$ZNT_REPO_DIR/doc/znt-tmux.zsh"
|
||||
```
|
||||
|
||||
or – if Homebrew or other package manager is used:
|
||||
|
||||
```
|
||||
bind h run-shell -b "$ZNT_REPO_DIR/znt-tmux.zsh"
|
||||
```
|
||||
|
||||
* 16-05-2016
|
||||
- `n-kill` has completion. It proposes **words** from what's in `ps -A`. Giving `n-kill`
|
||||
arguments means grepping – it will start only with matching `ps` entries.
|
||||
|
||||
* 15-05-2016
|
||||
- Fixed problem where zsh-syntax-highlighting could render `n-history` slow (for
|
||||
long history entries).
|
||||
|
||||
* 14-05-2016
|
||||
- Configuration can be set from `zshrc` (starting from `v2.1.12`). Documentation is [below](#configuration). Example:
|
||||
|
||||
```zsh
|
||||
znt_list_instant_select=1
|
||||
znt_list_border=0
|
||||
znt_list_bold=1
|
||||
znt_list_colorpair="green/black"
|
||||
znt_functions_keywords=( "zplg" "zgen" "match" )
|
||||
znt_cd_active_text="underline"
|
||||
znt_env_nlist_coloring_color=$'\x1b[00;33m'
|
||||
znt_cd_hotlist=( "~/.config/znt" "/usr/share/zsh/site-functions" "/usr/share/zsh"
|
||||
"/usr/local/share/zsh/site-functions" "/usr/local/share/zsh"
|
||||
"/usr/local/bin" )
|
||||
```
|
||||
|
||||
* 10-05-2016
|
||||
- Search query rotation – use `Ctrl-A` to rotate entered words right.
|
||||
Words `1 2 3` become `3 1 2`.
|
||||
|
||||
* 09-05-2016
|
||||
- New feature: n-help tool, available also from n-history via `H` key. It
|
||||
displays help screen with various information on `ZNT`.
|
||||
|
||||

|
||||
|
||||
* 08-05-2016
|
||||
- Approximate matching – pressing `f` or `Ctrl-F` will enter "`FIX`" mode,
|
||||
in which `1` or `2` errors are allowed in what's searched. This utilizes
|
||||
original Zsh approximate matching features and is intended to be used
|
||||
after entering search query, when a typo is discovered.
|
||||
|
||||

|
||||
|
||||
* 06-05-2016
|
||||
- Private history can be edited. Use `e` key or `Ctrl-E` for that when in
|
||||
n-history. Your `$EDITOR` will start. This is a way to have handy set of
|
||||
bookmarks prepared in private history's file.
|
||||
- Border can be disabled. Use following snippet in `~/.config/znt/n-list.conf`
|
||||
or any other tool-targetted config file:
|
||||
|
||||
```zsh
|
||||
# Should draw the border?
|
||||
local border=0
|
||||
```
|
||||
|
||||
* 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).
|
||||
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)
|
||||
already has set of 256-color themes prepared :)
|
||||
|
||||

|
||||
|
||||
* 29-04-2016
|
||||
- New feature: private history – n-history tracks selected history entries,
|
||||
exposes them via new view (activated with `F1`). It is shared across all
|
||||
sessions
|
||||
|
||||
* 28-04-2016
|
||||
- New features:
|
||||
1. New n-history view (activated with `F1`): Most Frequent History Words
|
||||
2. Predefined search keywords – use F2 to quickly search for chosen
|
||||
keywords (video: [https://youtu.be/DN9QqssAYB8](https://youtu.be/DN9QqssAYB8))
|
||||
3. Configuration option for doing instant selection in search mode
|
||||
|
||||
## Installation
|
||||
|
||||
```
|
||||
sh -c "$(curl -fsSL https://raw.githubusercontent.com/psprint/zsh-navigation-tools/master/doc/install.sh)"
|
||||
```
|
||||
|
||||
To update run the command again.
|
||||
|
||||
`ZNT` will be installed at `~/.config/znt/zsh-navigation-tools`, config files will be copied to `~/.config/znt`. `.zshrc`
|
||||
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 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`).
|
||||
The config files will be available in `~/.config/znt`.
|
||||
|
||||
## Installation With Antigen
|
||||
Add `antigen bundle psprint/zsh-navigation-tools` to `.zshrc`. There also
|
||||
should be `antigen apply`. The config files will be in `~/.config/znt`.
|
||||
|
||||
## Single File Manual Installation
|
||||
|
||||
Running script `doc/generate_single_file` will create single-file version of `ZNT`.
|
||||
It can be sourced from `.zshrc`. Don't forget about configuration files as described
|
||||
above.
|
||||
|
||||
## Manual Installation
|
||||
|
||||
After extracting `ZNT` to `{some-directory}` add following two lines
|
||||
to `~/.zshrc`:
|
||||
|
||||
```zsh
|
||||
fpath+=( {some-directory} )
|
||||
source "{some-directory}/zsh-navigation-tools.plugin.zsh"
|
||||
```
|
||||
|
||||
As you can see, no plugin manager is needed to use the `*.plugin.zsh`
|
||||
file. The above two lines of code are all that almost **all** plugin
|
||||
managers do. In fact, what's actually needed is only:
|
||||
|
||||
```zsh
|
||||
source "{some-directory}/zsh-navigation-tools.plugin.zsh"
|
||||
```
|
||||
|
||||
because `ZNT` detects if it is used by **any** plugin manager and can
|
||||
handle `$fpath` update by itself.
|
||||
|
||||
## Truly Manual Installation
|
||||
Copy (or link) all `n-*` and `znt-*` files to **/usr/share/zsh/site-functions/**
|
||||
(or **/usr/local/share/zsh/site-functions/**, check with `echo $fpath[1]`) and then add:
|
||||
|
||||
autoload n-list n-cd n-env n-kill n-panelize n-options n-aliases n-functions n-history n-help
|
||||
|
||||
to `~/.zshrc`.
|
||||
|
||||
Create aliases to avoid typing of the minus sign "-":
|
||||
|
||||
```zsh
|
||||
alias naliases=n-aliases ncd=n-cd nenv=n-env nfunctions=n-functions nhistory=n-history
|
||||
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:
|
||||
|
||||
```zsh
|
||||
setopt AUTO_PUSHD
|
||||
```
|
||||
|
||||
in `.zshrc` (also recommend `PUSHD_IGNORE_DUPS`). Without the option `n-cd`
|
||||
will just work as incremental searcher of directory bookmarks.
|
||||
|
||||
## History Widget
|
||||
|
||||
@@ -397,15 +231,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 [](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 +255,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
|
||||
|
||||
35
zsh/plugins/zsh-navigation-tools/doc/generate_single_file
Executable file
35
zsh/plugins/zsh-navigation-tools/doc/generate_single_file
Executable 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"
|
||||
|
||||
BIN
zsh/plugins/zsh-navigation-tools/doc/img/n-history2.png
Normal file
BIN
zsh/plugins/zsh-navigation-tools/doc/img/n-history2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 106 KiB |
70
zsh/plugins/zsh-navigation-tools/doc/install.sh
Executable file
70
zsh/plugins/zsh-navigation-tools/doc/install.sh
Executable 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
|
||||
224
zsh/plugins/zsh-navigation-tools/doc/n-preview
Normal file
224
zsh/plugins/zsh-navigation-tools/doc/n-preview
Normal 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:
|
||||
@@ -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
|
||||
@@ -8,9 +8,10 @@
|
||||
#
|
||||
|
||||
# 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}"
|
||||
export ZNT_CONFIG_DIR="$HOME/.config/znt"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user