chezmoi init

This commit is contained in:
Cy Pokhrel 2024-10-22 11:11:45 -04:00
commit 530d6d7195
No known key found for this signature in database
GPG key ID: 1200FBE36C2ADE2E
1176 changed files with 111325 additions and 0 deletions

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"

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,50 @@
#!/usr/bin/env zsh
# Copyright (c) 2016, Zsolt Lengyel
# Modifications copyright (c) 2016, Sebastian Gniazdowski
#
# This script opens a new, temporary tmux pane and runs n-history. When
# a selection is made, the result (history entry) is pasted back into
# original tmux pane, and the temporary pane is closed. This allows to
# use local history on remote machines.
#
# 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/doc/znt-tmux.zsh"
#
# get and save the current active tmux pane id
active_pane=$(tmux display -p -F ':#{session_id}:#I:#P:#{pane_active}:#{window_active}:#{session_attached}' )
a_active_pane=("${(@s/:/)active_pane}")
active_session=${a_active_pane[2]//$}
active_window=$a_active_pane[3]
active_pane=$a_active_pane[4]
# set variables for upcoming window
tmux setenv -t $active_session:$active_window.$active_pane "ZNT_TMUX_MODE" 1
tmux setenv -t $active_session:$active_window.$active_pane "ZNT_TMUX_ORIGIN_SESSION" "$active_session"
tmux setenv -t $active_session:$active_window.$active_pane "ZNT_TMUX_ORIGIN_WINDOW" "$active_window"
tmux setenv -t $active_session:$active_window.$active_pane "ZNT_TMUX_ORIGIN_PANE" "$active_pane"
# create a new window in the active session and call it znt-hist
tmux new-window -t $active_session: -n znt-hist
# unset the variables, so only above single window has them
tmux setenv -u -t $active_session:$active_window.$active_pane "ZNT_TMUX_MODE"
tmux setenv -u -t $active_session:$active_window.$active_pane "ZNT_TMUX_ORIGIN_SESSION"
tmux setenv -u -t $active_session:$active_window.$active_pane "ZNT_TMUX_ORIGIN_WINDOW"
tmux setenv -u -t $active_session:$active_window.$active_pane "ZNT_TMUX_ORIGIN_PANE"
# znt's session id
znt_active_pane=$(tmux display -p -F ':#{session_id}:#I:#P:#{pane_active}:#{window_active}:#{session_attached}' )
znt_a_active_pane=("${(@s/:/)znt_active_pane}")
znt_active_session=${znt_a_active_pane[2]//$}
znt_active_window=$znt_a_active_pane[3]
znt_active_pane=$znt_a_active_pane[4]
# call znt
tmux send -t "$znt_active_session:$znt_active_window.$znt_active_pane" n-history ENTER

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

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 "Improper 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: