Merge remote-tracking branch 'robbyrussell/master'
* robbyrussell/master: (37 commits) added assembly alias (#5107) Fix styling in cakephp3 completion Better cake3 completion Change vim command to $EDITOR for consistency (#5063) fixed bower completion error from issue #2694 (#5056) vagrant snapshot (#5032) Arcanist plugin (#5106) completion: zsh: improve main function selection gitfast: fix the prompt colour gitfast: update to upstream v2.8 Add alias for oneline git tree with --all option gitfast: update to upstream v2.4 gitfast: update to upstream v2.0 znt: update to v2.1.15 Add rbenv support for ruby version display Fix deprecated usage (#5050) Add 'gcn!' for the '--no-edit' option. (#4830) Add mvn options to ignore test failures (#5092) Add README to meteor plugin Add meteor plugin aliases ...
This commit is contained in:
commit
db910ecd4b
11
.gitignore
vendored
11
.gitignore
vendored
@ -1,9 +1,8 @@
|
|||||||
locals.zsh
|
# custom files
|
||||||
log/.zsh_history
|
custom/
|
||||||
projects.zsh
|
|
||||||
custom
|
|
||||||
!custom/plugins/example
|
!custom/plugins/example
|
||||||
!custom/example.zsh
|
!custom/example.zsh
|
||||||
*.swp
|
|
||||||
!custom/example.zshcache
|
# temp files directories
|
||||||
cache/
|
cache/
|
||||||
|
log/
|
||||||
|
@ -210,4 +210,4 @@ We have [stickers](http://shop.planetargon.com/products/ohmyzsh-stickers-set-of-
|
|||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
Oh My Zsh is released under the [MIT license](MIT-LICENSE.txt).
|
Oh My Zsh is released under the [MIT license](LICENSE.txt).
|
4
cache/.easter-egg
vendored
4
cache/.easter-egg
vendored
@ -1,4 +0,0 @@
|
|||||||
This file is only here so that Git will keep a cache directory as .gitignore is ignoring all the files within it.
|
|
||||||
|
|
||||||
Feel free to add love notes for people here.
|
|
||||||
|
|
0
cache/.gitkeep
vendored
Normal file
0
cache/.gitkeep
vendored
Normal file
@ -1,5 +1,10 @@
|
|||||||
# Add yourself some shortcuts to projects you often work on
|
# You can put files here to add functionality separated per file, which
|
||||||
# Example:
|
# will be ignored by git.
|
||||||
|
# Files on the custom/ directory will be automatically loaded by the init
|
||||||
|
# script, in alphabetical order.
|
||||||
|
|
||||||
|
# For example: add yourself some shortcuts to projects you often work on.
|
||||||
#
|
#
|
||||||
# brainstormr=/Users/robbyrussell/Projects/development/planetargon/brainstormr
|
# brainstormr=~/Projects/development/planetargon/brainstormr
|
||||||
|
# cd $brainstormr
|
||||||
#
|
#
|
@ -22,10 +22,8 @@ then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#setopt no_beep
|
|
||||||
setopt auto_cd
|
setopt auto_cd
|
||||||
setopt multios
|
setopt multios
|
||||||
setopt cdablevars
|
|
||||||
|
|
||||||
if [[ x$WINDOW != x ]]
|
if [[ x$WINDOW != x ]]
|
||||||
then
|
then
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
This file is only here so that Git will keep a log directory as .gitignore is ignoring all the log files within it.
|
|
||||||
|
|
||||||
feel free to add love notes for people here.
|
|
||||||
|
|
0
log/.gitkeep
Normal file
0
log/.gitkeep
Normal file
5
plugins/arcanist/README.md
Normal file
5
plugins/arcanist/README.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
## arcanist
|
||||||
|
|
||||||
|
**Maintainer:** [@emzar](https://github.com/emzar)
|
||||||
|
|
||||||
|
This plugin adds many useful aliases.
|
21
plugins/arcanist/arcanist.plugin.zsh
Normal file
21
plugins/arcanist/arcanist.plugin.zsh
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#
|
||||||
|
# Aliases
|
||||||
|
# (sorted alphabetically)
|
||||||
|
#
|
||||||
|
|
||||||
|
alias ara='arc amend'
|
||||||
|
alias arb='arc branch'
|
||||||
|
alias arc='arc cover'
|
||||||
|
alias arci='arc commit'
|
||||||
|
|
||||||
|
alias ard='arc diff'
|
||||||
|
alias ardnu='arc diff --nounit'
|
||||||
|
alias ardnupc='arc diff --nounit --plan-changes'
|
||||||
|
alias ardpc='arc diff --plan-changes'
|
||||||
|
|
||||||
|
alias are='arc export'
|
||||||
|
alias arh='arc help'
|
||||||
|
alias arl='arc land'
|
||||||
|
alias arli='arc lint'
|
||||||
|
alias arls='arc list'
|
||||||
|
alias arp='arc patch'
|
@ -72,6 +72,7 @@ _bower ()
|
|||||||
compadd "$@" $(echo $bower_package_list)
|
compadd "$@" $(echo $bower_package_list)
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
_arguments \
|
||||||
$_no_color \
|
$_no_color \
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
@ -1,11 +1,31 @@
|
|||||||
# CakePHP 3 basic command completion
|
# CakePHP 3 basic command completion
|
||||||
_cakephp3_get_command_list () {
|
_cakephp3_get_command_list () {
|
||||||
cakephp3commands=($(bin/cake completion commands));printf "%s\n" "${cakephp3commands[@]}"
|
bin/cake Completion commands
|
||||||
|
}
|
||||||
|
|
||||||
|
_cakephp3_get_sub_command_list () {
|
||||||
|
bin/cake Completion subcommands ${words[2]}
|
||||||
|
}
|
||||||
|
|
||||||
|
_cakephp3_get_3rd_argument () {
|
||||||
|
bin/cake ${words[2]} ${words[3]} | \grep '\-\ '| \awk '{print $2}'
|
||||||
}
|
}
|
||||||
|
|
||||||
_cakephp3 () {
|
_cakephp3 () {
|
||||||
|
local -a has3rdargument
|
||||||
|
has3rdargument=("all" "controller" "fixture" "model" "template")
|
||||||
if [ -f bin/cake ]; then
|
if [ -f bin/cake ]; then
|
||||||
compadd `_cakephp3_get_command_list`
|
if (( CURRENT == 2 )); then
|
||||||
|
compadd $(_cakephp3_get_command_list)
|
||||||
|
fi
|
||||||
|
if (( CURRENT == 3 )); then
|
||||||
|
compadd $(_cakephp3_get_sub_command_list)
|
||||||
|
fi
|
||||||
|
if (( CURRENT == 4 )); then
|
||||||
|
if [[ ${has3rdargument[(i)${words[3]}]} -le ${#has3rdargument} ]]; then
|
||||||
|
compadd $(_cakephp3_get_3rd_argument)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -14,6 +34,5 @@ compdef _cakephp3 cake
|
|||||||
|
|
||||||
#Alias
|
#Alias
|
||||||
alias c3='bin/cake'
|
alias c3='bin/cake'
|
||||||
|
|
||||||
alias c3cache='bin/cake orm_cache clear'
|
alias c3cache='bin/cake orm_cache clear'
|
||||||
alias c3migrate='bin/cake migrations migrate'
|
alias c3migrate='bin/cake migrations migrate'
|
||||||
|
@ -6,6 +6,6 @@ if [ $commands[fasd] ]; then # check if fasd is installed
|
|||||||
source "$fasd_cache"
|
source "$fasd_cache"
|
||||||
unset fasd_cache
|
unset fasd_cache
|
||||||
|
|
||||||
alias v='f -e vim'
|
alias v="f -e $EDITOR"
|
||||||
alias o='a -e open_command'
|
alias o='a -e open_command'
|
||||||
fi
|
fi
|
||||||
|
7
plugins/fossil/README.md
Normal file
7
plugins/fossil/README.md
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
## Fossil Plugin
|
||||||
|
|
||||||
|
This plugin adds completion support and prompt for fossil repositories.
|
||||||
|
The prompt will display the current branch and status been dirty or clean.
|
||||||
|
|
||||||
|
### CONTRIBUTOR
|
||||||
|
- Jefferson González ([jgmdev](https://github.com/jgmdev))
|
89
plugins/fossil/fossil.plugin.zsh
Normal file
89
plugins/fossil/fossil.plugin.zsh
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
_FOSSIL_PROMPT=""
|
||||||
|
|
||||||
|
# Prefix at the very beginning of the prompt, before the branch name
|
||||||
|
ZSH_THEME_FOSSIL_PROMPT_PREFIX="%{$fg_bold[blue]%}fossil:(%{$fg_bold[red]%}"
|
||||||
|
|
||||||
|
# At the very end of the prompt
|
||||||
|
ZSH_THEME_FOSSIL_PROMPT_SUFFIX="%{$fg_bold[blue]%})"
|
||||||
|
|
||||||
|
# Text to display if the branch is dirty
|
||||||
|
ZSH_THEME_FOSSIL_PROMPT_DIRTY=" %{$fg_bold[red]%}✖"
|
||||||
|
|
||||||
|
# Text to display if the branch is clean
|
||||||
|
ZSH_THEME_FOSSIL_PROMPT_CLEAN=" %{$fg_bold[green]%}✔"
|
||||||
|
|
||||||
|
function fossil_prompt_info () {
|
||||||
|
local _OUTPUT=`fossil branch 2>&1`
|
||||||
|
local _STATUS=`echo $_OUTPUT | grep "use --repo"`
|
||||||
|
if [ "$_STATUS" = "" ]; then
|
||||||
|
local _EDITED=`fossil changes`
|
||||||
|
local _EDITED_SYM="$ZSH_THEME_FOSSIL_PROMPT_CLEAN"
|
||||||
|
local _BRANCH=`echo $_OUTPUT | grep "* " | sed 's/* //g'`
|
||||||
|
|
||||||
|
if [ "$_EDITED" != "" ]; then
|
||||||
|
_EDITED_SYM="$ZSH_THEME_FOSSIL_PROMPT_DIRTY"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$ZSH_THEME_FOSSIL_PROMPT_PREFIX" \
|
||||||
|
"$_BRANCH" \
|
||||||
|
"$ZSH_THEME_FOSSIL_PROMPT_SUFFIX" \
|
||||||
|
"$_EDITED_SYM"\
|
||||||
|
"%{$reset_color%}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function _fossil_get_command_list () {
|
||||||
|
fossil help -a | grep -v "Usage|Common|This is"
|
||||||
|
}
|
||||||
|
|
||||||
|
function _fossil () {
|
||||||
|
local context state state_descr line
|
||||||
|
typeset -A opt_args
|
||||||
|
|
||||||
|
_arguments \
|
||||||
|
'1: :->command'\
|
||||||
|
'2: :->subcommand'
|
||||||
|
|
||||||
|
case $state in
|
||||||
|
command)
|
||||||
|
local _OUTPUT=`fossil branch 2>&1 | grep "use --repo"`
|
||||||
|
if [ "$_OUTPUT" = "" ]; then
|
||||||
|
compadd `_fossil_get_command_list`
|
||||||
|
else
|
||||||
|
compadd clone init import help version
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
subcommand)
|
||||||
|
if [ "$words[2]" = "help" ]; then
|
||||||
|
compadd `_fossil_get_command_list`
|
||||||
|
else
|
||||||
|
compcall -D
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
function _fossil_prompt () {
|
||||||
|
local current=`echo $PROMPT $RPROMPT | grep fossil`
|
||||||
|
|
||||||
|
if [ "$_FOSSIL_PROMPT" = "" -o "$current" = "" ]; then
|
||||||
|
local _prompt=${PROMPT}
|
||||||
|
local _rprompt=${RPROMPT}
|
||||||
|
|
||||||
|
local is_prompt=`echo $PROMPT | grep git`
|
||||||
|
|
||||||
|
if [ "$is_prompt" = "" ]; then
|
||||||
|
export RPROMPT="$_rprompt"'$(fossil_prompt_info)'
|
||||||
|
else
|
||||||
|
export PROMPT="$_prompt"'$(fossil_prompt_info) '
|
||||||
|
fi
|
||||||
|
|
||||||
|
_FOSSIL_PROMPT="1"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
compdef _fossil fossil
|
||||||
|
|
||||||
|
autoload -U add-zsh-hook
|
||||||
|
|
||||||
|
add-zsh-hook precmd _fossil_prompt
|
@ -58,9 +58,11 @@ alias gbss='git bisect start'
|
|||||||
|
|
||||||
alias gc='git commit -v'
|
alias gc='git commit -v'
|
||||||
alias gc!='git commit -v --amend'
|
alias gc!='git commit -v --amend'
|
||||||
|
alias gcn!='git commit -v --no-edit --amend'
|
||||||
alias gca='git commit -v -a'
|
alias gca='git commit -v -a'
|
||||||
alias gca!='git commit -v -a --amend'
|
alias gca!='git commit -v -a --amend'
|
||||||
alias gcan!='git commit -v -a -s --no-edit --amend'
|
alias gcan!='git commit -v -a --no-edit --amend'
|
||||||
|
alias gcans!='git commit -v -a -s --no-edit --amend'
|
||||||
alias gcam='git commit -a -m'
|
alias gcam='git commit -a -m'
|
||||||
alias gcb='git checkout -b'
|
alias gcb='git checkout -b'
|
||||||
alias gcf='git config --list'
|
alias gcf='git config --list'
|
||||||
@ -155,6 +157,7 @@ alias glo='git log --oneline --decorate'
|
|||||||
alias glol="git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
|
alias glol="git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
|
||||||
alias glola="git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --all"
|
alias glola="git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --all"
|
||||||
alias glog='git log --oneline --decorate --graph'
|
alias glog='git log --oneline --decorate --graph'
|
||||||
|
alias gloga='git log --oneline --decorate --graph --all'
|
||||||
alias glp="_git_log_prettily"
|
alias glp="_git_log_prettily"
|
||||||
compdef _git glp=git-log
|
compdef _git glp=git-log
|
||||||
|
|
||||||
|
@ -104,6 +104,7 @@ __git_zsh_bash_func ()
|
|||||||
|
|
||||||
local expansion=$(__git_aliased_command "$command")
|
local expansion=$(__git_aliased_command "$command")
|
||||||
if [ -n "$expansion" ]; then
|
if [ -n "$expansion" ]; then
|
||||||
|
words[1]=$expansion
|
||||||
completion_func="_git_${expansion//-/_}"
|
completion_func="_git_${expansion//-/_}"
|
||||||
declare -f $completion_func >/dev/null && $completion_func
|
declare -f $completion_func >/dev/null && $completion_func
|
||||||
fi
|
fi
|
||||||
@ -213,8 +214,10 @@ _git ()
|
|||||||
|
|
||||||
if (( $+functions[__${service}_zsh_main] )); then
|
if (( $+functions[__${service}_zsh_main] )); then
|
||||||
__${service}_zsh_main
|
__${service}_zsh_main
|
||||||
else
|
elif (( $+functions[__${service}_main] )); then
|
||||||
emulate ksh -c __${service}_main
|
emulate ksh -c __${service}_main
|
||||||
|
elif (( $+functions[_${service}] )); then
|
||||||
|
emulate ksh -c _${service}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
let _ret && _default && _ret=0
|
let _ret && _default && _ret=0
|
||||||
|
@ -10,17 +10,24 @@
|
|||||||
# *) local and remote tag names
|
# *) local and remote tag names
|
||||||
# *) .git/remotes file names
|
# *) .git/remotes file names
|
||||||
# *) git 'subcommands'
|
# *) git 'subcommands'
|
||||||
|
# *) git email aliases for git-send-email
|
||||||
# *) tree paths within 'ref:path/to/file' expressions
|
# *) tree paths within 'ref:path/to/file' expressions
|
||||||
# *) file paths within current working directory and index
|
# *) file paths within current working directory and index
|
||||||
# *) common --long-options
|
# *) common --long-options
|
||||||
#
|
#
|
||||||
# To use these routines:
|
# To use these routines:
|
||||||
#
|
#
|
||||||
# 1) Copy this file to somewhere (e.g. ~/.git-completion.sh).
|
# 1) Copy this file to somewhere (e.g. ~/.git-completion.bash).
|
||||||
# 2) Add the following line to your .bashrc/.zshrc:
|
# 2) Add the following line to your .bashrc/.zshrc:
|
||||||
# source ~/.git-completion.sh
|
# source ~/.git-completion.bash
|
||||||
# 3) Consider changing your PS1 to also show the current branch,
|
# 3) Consider changing your PS1 to also show the current branch,
|
||||||
# see git-prompt.sh for details.
|
# see git-prompt.sh for details.
|
||||||
|
#
|
||||||
|
# If you use complex aliases of form '!f() { ... }; f', you can use the null
|
||||||
|
# command ':' as the first command in the function body to declare the desired
|
||||||
|
# completion style. For example '!f() { : git commit ; ... }; f' will
|
||||||
|
# tell the completion to use commit completion. This also works with aliases
|
||||||
|
# of form "!sh -c '...'". For example, "!sh -c ': git commit ; ... '".
|
||||||
|
|
||||||
case "$COMP_WORDBREAKS" in
|
case "$COMP_WORDBREAKS" in
|
||||||
*:*) : great ;;
|
*:*) : great ;;
|
||||||
@ -180,7 +187,7 @@ fi
|
|||||||
|
|
||||||
__gitcompappend ()
|
__gitcompappend ()
|
||||||
{
|
{
|
||||||
local i=${#COMPREPLY[@]}
|
local x i=${#COMPREPLY[@]}
|
||||||
for x in $1; do
|
for x in $1; do
|
||||||
if [[ "$x" == "$3"* ]]; then
|
if [[ "$x" == "$3"* ]]; then
|
||||||
COMPREPLY[i++]="$2$x$4"
|
COMPREPLY[i++]="$2$x$4"
|
||||||
@ -275,16 +282,12 @@ __gitcomp_file ()
|
|||||||
# argument, and using the options specified in the second argument.
|
# argument, and using the options specified in the second argument.
|
||||||
__git_ls_files_helper ()
|
__git_ls_files_helper ()
|
||||||
{
|
{
|
||||||
(
|
|
||||||
test -n "${CDPATH+set}" && unset CDPATH
|
|
||||||
cd "$1"
|
|
||||||
if [ "$2" == "--committable" ]; then
|
if [ "$2" == "--committable" ]; then
|
||||||
git diff-index --name-only --relative HEAD
|
git -C "$1" diff-index --name-only --relative HEAD
|
||||||
else
|
else
|
||||||
# NOTE: $2 is not quoted in order to support multiple options
|
# NOTE: $2 is not quoted in order to support multiple options
|
||||||
git ls-files --exclude-standard $2
|
git -C "$1" ls-files --exclude-standard $2
|
||||||
fi
|
fi 2>/dev/null
|
||||||
) 2>/dev/null
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -382,7 +385,8 @@ __git_refs ()
|
|||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "HEAD"
|
echo "HEAD"
|
||||||
git for-each-ref --format="%(refname:short)" -- "refs/remotes/$dir/" | sed -e "s#^$dir/##"
|
git for-each-ref --format="%(refname:short)" -- \
|
||||||
|
"refs/remotes/$dir/" 2>/dev/null | sed -e "s#^$dir/##"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
@ -408,12 +412,9 @@ __git_refs_remotes ()
|
|||||||
|
|
||||||
__git_remotes ()
|
__git_remotes ()
|
||||||
{
|
{
|
||||||
local i IFS=$'\n' d="$(__gitdir)"
|
local d="$(__gitdir)"
|
||||||
test -d "$d/remotes" && ls -1 "$d/remotes"
|
test -d "$d/remotes" && ls -1 "$d/remotes"
|
||||||
for i in $(git --git-dir="$d" config --get-regexp 'remote\..*\.url' 2>/dev/null); do
|
git --git-dir="$d" remote
|
||||||
i="${i#remote.}"
|
|
||||||
echo "${i/.url*/}"
|
|
||||||
done
|
|
||||||
}
|
}
|
||||||
|
|
||||||
__git_list_merge_strategies ()
|
__git_list_merge_strategies ()
|
||||||
@ -516,7 +517,7 @@ __git_complete_index_file ()
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
__gitcomp_file "$(__git_index_files "$1" "$pfx")" "$pfx" "$cur_"
|
__gitcomp_file "$(__git_index_files "$1" ${pfx:+"$pfx"})" "$pfx" "$cur_"
|
||||||
}
|
}
|
||||||
|
|
||||||
__git_complete_file ()
|
__git_complete_file ()
|
||||||
@ -663,10 +664,11 @@ __git_list_porcelain_commands ()
|
|||||||
check-mailmap) : plumbing;;
|
check-mailmap) : plumbing;;
|
||||||
check-ref-format) : plumbing;;
|
check-ref-format) : plumbing;;
|
||||||
checkout-index) : plumbing;;
|
checkout-index) : plumbing;;
|
||||||
|
column) : internal helper;;
|
||||||
commit-tree) : plumbing;;
|
commit-tree) : plumbing;;
|
||||||
count-objects) : infrequent;;
|
count-objects) : infrequent;;
|
||||||
credential-cache) : credentials helper;;
|
credential) : credentials;;
|
||||||
credential-store) : credentials helper;;
|
credential-*) : credentials helper;;
|
||||||
cvsexportcommit) : export;;
|
cvsexportcommit) : export;;
|
||||||
cvsimport) : import;;
|
cvsimport) : import;;
|
||||||
cvsserver) : daemon;;
|
cvsserver) : daemon;;
|
||||||
@ -735,35 +737,28 @@ __git_list_porcelain_commands ()
|
|||||||
__git_porcelain_commands=
|
__git_porcelain_commands=
|
||||||
__git_compute_porcelain_commands ()
|
__git_compute_porcelain_commands ()
|
||||||
{
|
{
|
||||||
__git_compute_all_commands
|
|
||||||
test -n "$__git_porcelain_commands" ||
|
test -n "$__git_porcelain_commands" ||
|
||||||
__git_porcelain_commands=$(__git_list_porcelain_commands)
|
__git_porcelain_commands=$(__git_list_porcelain_commands)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Lists all set config variables starting with the given section prefix,
|
||||||
|
# with the prefix removed.
|
||||||
|
__git_get_config_variables ()
|
||||||
|
{
|
||||||
|
local section="$1" i IFS=$'\n'
|
||||||
|
for i in $(git --git-dir="$(__gitdir)" config --name-only --get-regexp "^$section\..*" 2>/dev/null); do
|
||||||
|
echo "${i#$section.}"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
__git_pretty_aliases ()
|
__git_pretty_aliases ()
|
||||||
{
|
{
|
||||||
local i IFS=$'\n'
|
__git_get_config_variables "pretty"
|
||||||
for i in $(git --git-dir="$(__gitdir)" config --get-regexp "pretty\..*" 2>/dev/null); do
|
|
||||||
case "$i" in
|
|
||||||
pretty.*)
|
|
||||||
i="${i#pretty.}"
|
|
||||||
echo "${i/ */}"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
}
|
}
|
||||||
|
|
||||||
__git_aliases ()
|
__git_aliases ()
|
||||||
{
|
{
|
||||||
local i IFS=$'\n'
|
__git_get_config_variables "alias"
|
||||||
for i in $(git --git-dir="$(__gitdir)" config --get-regexp "alias\..*" 2>/dev/null); do
|
|
||||||
case "$i" in
|
|
||||||
alias.*)
|
|
||||||
i="${i#alias.}"
|
|
||||||
echo "${i/ */}"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# __git_aliased_command requires 1 argument
|
# __git_aliased_command requires 1 argument
|
||||||
@ -781,6 +776,10 @@ __git_aliased_command ()
|
|||||||
-*) : option ;;
|
-*) : option ;;
|
||||||
*=*) : setting env ;;
|
*=*) : setting env ;;
|
||||||
git) : git itself ;;
|
git) : git itself ;;
|
||||||
|
\(\)) : skip parens of shell function definition ;;
|
||||||
|
{) : skip start of shell helper function ;;
|
||||||
|
:) : skip null command ;;
|
||||||
|
\'*) : skip opening quote after sh -c ;;
|
||||||
*)
|
*)
|
||||||
echo "$word"
|
echo "$word"
|
||||||
return
|
return
|
||||||
@ -973,7 +972,7 @@ _git_branch ()
|
|||||||
|
|
||||||
case "$cur" in
|
case "$cur" in
|
||||||
--set-upstream-to=*)
|
--set-upstream-to=*)
|
||||||
__gitcomp "$(__git_refs)" "" "${cur##--set-upstream-to=}"
|
__gitcomp_nl "$(__git_refs)" "" "${cur##--set-upstream-to=}"
|
||||||
;;
|
;;
|
||||||
--*)
|
--*)
|
||||||
__gitcomp "
|
__gitcomp "
|
||||||
@ -1041,7 +1040,7 @@ _git_checkout ()
|
|||||||
|
|
||||||
_git_cherry ()
|
_git_cherry ()
|
||||||
{
|
{
|
||||||
__gitcomp "$(__git_refs)"
|
__gitcomp_nl "$(__git_refs)"
|
||||||
}
|
}
|
||||||
|
|
||||||
_git_cherry_pick ()
|
_git_cherry_pick ()
|
||||||
@ -1110,7 +1109,7 @@ _git_commit ()
|
|||||||
|
|
||||||
case "$cur" in
|
case "$cur" in
|
||||||
--cleanup=*)
|
--cleanup=*)
|
||||||
__gitcomp "default strip verbatim whitespace
|
__gitcomp "default scissors strip verbatim whitespace
|
||||||
" "" "${cur##--cleanup=}"
|
" "" "${cur##--cleanup=}"
|
||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
@ -1165,12 +1164,12 @@ __git_diff_common_options="--stat --numstat --shortstat --summary
|
|||||||
--full-index --binary --abbrev --diff-filter=
|
--full-index --binary --abbrev --diff-filter=
|
||||||
--find-copies-harder
|
--find-copies-harder
|
||||||
--text --ignore-space-at-eol --ignore-space-change
|
--text --ignore-space-at-eol --ignore-space-change
|
||||||
--ignore-all-space --exit-code --quiet --ext-diff
|
--ignore-all-space --ignore-blank-lines --exit-code
|
||||||
--no-ext-diff
|
--quiet --ext-diff --no-ext-diff
|
||||||
--no-prefix --src-prefix= --dst-prefix=
|
--no-prefix --src-prefix= --dst-prefix=
|
||||||
--inter-hunk-context=
|
--inter-hunk-context=
|
||||||
--patience --histogram --minimal
|
--patience --histogram --minimal
|
||||||
--raw --word-diff
|
--raw --word-diff --word-diff-regex=
|
||||||
--dirstat --dirstat= --dirstat-by-file
|
--dirstat --dirstat= --dirstat-by-file
|
||||||
--dirstat-by-file= --cumulative
|
--dirstat-by-file= --cumulative
|
||||||
--diff-algorithm=
|
--diff-algorithm=
|
||||||
@ -1197,7 +1196,7 @@ _git_diff ()
|
|||||||
}
|
}
|
||||||
|
|
||||||
__git_mergetools_common="diffuse diffmerge ecmerge emerge kdiff3 meld opendiff
|
__git_mergetools_common="diffuse diffmerge ecmerge emerge kdiff3 meld opendiff
|
||||||
tkdiff vimdiff gvimdiff xxdiff araxis p4merge bc3 codecompare
|
tkdiff vimdiff gvimdiff xxdiff araxis p4merge bc codecompare
|
||||||
"
|
"
|
||||||
|
|
||||||
_git_difftool ()
|
_git_difftool ()
|
||||||
@ -1221,14 +1220,20 @@ _git_difftool ()
|
|||||||
__git_complete_revlist_file
|
__git_complete_revlist_file
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__git_fetch_recurse_submodules="yes on-demand no"
|
||||||
|
|
||||||
__git_fetch_options="
|
__git_fetch_options="
|
||||||
--quiet --verbose --append --upload-pack --force --keep --depth=
|
--quiet --verbose --append --upload-pack --force --keep --depth=
|
||||||
--tags --no-tags --all --prune --dry-run
|
--tags --no-tags --all --prune --dry-run --recurse-submodules=
|
||||||
"
|
"
|
||||||
|
|
||||||
_git_fetch ()
|
_git_fetch ()
|
||||||
{
|
{
|
||||||
case "$cur" in
|
case "$cur" in
|
||||||
|
--recurse-submodules=*)
|
||||||
|
__gitcomp "$__git_fetch_recurse_submodules" "" "${cur##--recurse-submodules=}"
|
||||||
|
return
|
||||||
|
;;
|
||||||
--*)
|
--*)
|
||||||
__gitcomp "$__git_fetch_options"
|
__gitcomp "$__git_fetch_options"
|
||||||
return
|
return
|
||||||
@ -1292,7 +1297,7 @@ _git_gitk ()
|
|||||||
}
|
}
|
||||||
|
|
||||||
__git_match_ctag() {
|
__git_match_ctag() {
|
||||||
awk "/^${1////\\/}/ { print \$1 }" "$2"
|
awk "/^${1//\//\\/}/ { print \$1 }" "$2"
|
||||||
}
|
}
|
||||||
|
|
||||||
_git_grep ()
|
_git_grep ()
|
||||||
@ -1307,6 +1312,7 @@ _git_grep ()
|
|||||||
--full-name --line-number
|
--full-name --line-number
|
||||||
--extended-regexp --basic-regexp --fixed-strings
|
--extended-regexp --basic-regexp --fixed-strings
|
||||||
--perl-regexp
|
--perl-regexp
|
||||||
|
--threads
|
||||||
--files-with-matches --name-only
|
--files-with-matches --name-only
|
||||||
--files-without-match
|
--files-without-match
|
||||||
--max-depth
|
--max-depth
|
||||||
@ -1412,7 +1418,7 @@ __git_log_gitk_options="
|
|||||||
# Options that go well for log and shortlog (not gitk)
|
# Options that go well for log and shortlog (not gitk)
|
||||||
__git_log_shortlog_options="
|
__git_log_shortlog_options="
|
||||||
--author= --committer= --grep=
|
--author= --committer= --grep=
|
||||||
--all-match
|
--all-match --invert-grep
|
||||||
"
|
"
|
||||||
|
|
||||||
__git_log_pretty_formats="oneline short medium full fuller email raw format:"
|
__git_log_pretty_formats="oneline short medium full fuller email raw format:"
|
||||||
@ -1438,7 +1444,7 @@ _git_log ()
|
|||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
--decorate=*)
|
--decorate=*)
|
||||||
__gitcomp "long short" "" "${cur##--decorate=}"
|
__gitcomp "full short no" "" "${cur##--decorate=}"
|
||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
--*)
|
--*)
|
||||||
@ -1451,6 +1457,7 @@ _git_log ()
|
|||||||
--abbrev-commit --abbrev=
|
--abbrev-commit --abbrev=
|
||||||
--relative-date --date=
|
--relative-date --date=
|
||||||
--pretty= --format= --oneline
|
--pretty= --format= --oneline
|
||||||
|
--show-signature
|
||||||
--cherry-pick
|
--cherry-pick
|
||||||
--graph
|
--graph
|
||||||
--decorate --decorate=
|
--decorate --decorate=
|
||||||
@ -1466,9 +1473,12 @@ _git_log ()
|
|||||||
__git_complete_revlist
|
__git_complete_revlist
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Common merge options shared by git-merge(1) and git-pull(1).
|
||||||
__git_merge_options="
|
__git_merge_options="
|
||||||
--no-commit --no-stat --log --no-log --squash --strategy
|
--no-commit --no-stat --log --no-log --squash --strategy
|
||||||
--commit --stat --no-squash --ff --no-ff --ff-only --edit --no-edit
|
--commit --stat --no-squash --ff --no-ff --ff-only --edit --no-edit
|
||||||
|
--verify-signatures --no-verify-signatures --gpg-sign
|
||||||
|
--quiet --verbose --progress --no-progress
|
||||||
"
|
"
|
||||||
|
|
||||||
_git_merge ()
|
_git_merge ()
|
||||||
@ -1477,7 +1487,8 @@ _git_merge ()
|
|||||||
|
|
||||||
case "$cur" in
|
case "$cur" in
|
||||||
--*)
|
--*)
|
||||||
__gitcomp "$__git_merge_options"
|
__gitcomp "$__git_merge_options
|
||||||
|
--rerere-autoupdate --no-rerere-autoupdate --abort"
|
||||||
return
|
return
|
||||||
esac
|
esac
|
||||||
__gitcomp_nl "$(__git_refs)"
|
__gitcomp_nl "$(__git_refs)"
|
||||||
@ -1583,6 +1594,10 @@ _git_pull ()
|
|||||||
__git_complete_strategy && return
|
__git_complete_strategy && return
|
||||||
|
|
||||||
case "$cur" in
|
case "$cur" in
|
||||||
|
--recurse-submodules=*)
|
||||||
|
__gitcomp "$__git_fetch_recurse_submodules" "" "${cur##--recurse-submodules=}"
|
||||||
|
return
|
||||||
|
;;
|
||||||
--*)
|
--*)
|
||||||
__gitcomp "
|
__gitcomp "
|
||||||
--rebase --no-rebase
|
--rebase --no-rebase
|
||||||
@ -1595,22 +1610,55 @@ _git_pull ()
|
|||||||
__git_complete_remote_or_refspec
|
__git_complete_remote_or_refspec
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__git_push_recurse_submodules="check on-demand"
|
||||||
|
|
||||||
|
__git_complete_force_with_lease ()
|
||||||
|
{
|
||||||
|
local cur_=$1
|
||||||
|
|
||||||
|
case "$cur_" in
|
||||||
|
--*=)
|
||||||
|
;;
|
||||||
|
*:*)
|
||||||
|
__gitcomp_nl "$(__git_refs)" "" "${cur_#*:}"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
__gitcomp_nl "$(__git_refs)" "" "$cur_"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
_git_push ()
|
_git_push ()
|
||||||
{
|
{
|
||||||
case "$prev" in
|
case "$prev" in
|
||||||
--repo)
|
--repo)
|
||||||
__gitcomp_nl "$(__git_remotes)"
|
__gitcomp_nl "$(__git_remotes)"
|
||||||
return
|
return
|
||||||
|
;;
|
||||||
|
--recurse-submodules)
|
||||||
|
__gitcomp "$__git_push_recurse_submodules"
|
||||||
|
return
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
case "$cur" in
|
case "$cur" in
|
||||||
--repo=*)
|
--repo=*)
|
||||||
__gitcomp_nl "$(__git_remotes)" "" "${cur##--repo=}"
|
__gitcomp_nl "$(__git_remotes)" "" "${cur##--repo=}"
|
||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
|
--recurse-submodules=*)
|
||||||
|
__gitcomp "$__git_push_recurse_submodules" "" "${cur##--recurse-submodules=}"
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
--force-with-lease=*)
|
||||||
|
__git_complete_force_with_lease "${cur##--force-with-lease=}"
|
||||||
|
return
|
||||||
|
;;
|
||||||
--*)
|
--*)
|
||||||
__gitcomp "
|
__gitcomp "
|
||||||
--all --mirror --tags --dry-run --force --verbose
|
--all --mirror --tags --dry-run --force --verbose
|
||||||
|
--quiet --prune --delete --follow-tags
|
||||||
--receive-pack= --repo= --set-upstream
|
--receive-pack= --repo= --set-upstream
|
||||||
|
--force-with-lease --force-with-lease= --recurse-submodules=
|
||||||
"
|
"
|
||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
@ -1621,7 +1669,10 @@ _git_push ()
|
|||||||
_git_rebase ()
|
_git_rebase ()
|
||||||
{
|
{
|
||||||
local dir="$(__gitdir)"
|
local dir="$(__gitdir)"
|
||||||
if [ -d "$dir"/rebase-apply ] || [ -d "$dir"/rebase-merge ]; then
|
if [ -f "$dir"/rebase-merge/interactive ]; then
|
||||||
|
__gitcomp "--continue --skip --abort --edit-todo"
|
||||||
|
return
|
||||||
|
elif [ -d "$dir"/rebase-apply ] || [ -d "$dir"/rebase-merge ]; then
|
||||||
__gitcomp "--continue --skip --abort"
|
__gitcomp "--continue --skip --abort"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
@ -1637,7 +1688,12 @@ _git_rebase ()
|
|||||||
--preserve-merges --stat --no-stat
|
--preserve-merges --stat --no-stat
|
||||||
--committer-date-is-author-date --ignore-date
|
--committer-date-is-author-date --ignore-date
|
||||||
--ignore-whitespace --whitespace=
|
--ignore-whitespace --whitespace=
|
||||||
--autosquash --fork-point --no-fork-point
|
--autosquash --no-autosquash
|
||||||
|
--fork-point --no-fork-point
|
||||||
|
--autostash --no-autostash
|
||||||
|
--verify --no-verify
|
||||||
|
--keep-empty --root --force-rebase --no-ff
|
||||||
|
--exec
|
||||||
"
|
"
|
||||||
|
|
||||||
return
|
return
|
||||||
@ -1662,6 +1718,15 @@ __git_send_email_suppresscc_options="author self cc bodycc sob cccmd body all"
|
|||||||
|
|
||||||
_git_send_email ()
|
_git_send_email ()
|
||||||
{
|
{
|
||||||
|
case "$prev" in
|
||||||
|
--to|--cc|--bcc|--from)
|
||||||
|
__gitcomp "
|
||||||
|
$(git --git-dir="$(__gitdir)" send-email --dump-aliases 2>/dev/null)
|
||||||
|
"
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
case "$cur" in
|
case "$cur" in
|
||||||
--confirm=*)
|
--confirm=*)
|
||||||
__gitcomp "
|
__gitcomp "
|
||||||
@ -1686,6 +1751,12 @@ _git_send_email ()
|
|||||||
" "" "${cur##--thread=}"
|
" "" "${cur##--thread=}"
|
||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
|
--to=*|--cc=*|--bcc=*|--from=*)
|
||||||
|
__gitcomp "
|
||||||
|
$(git --git-dir="$(__gitdir)" send-email --dump-aliases 2>/dev/null)
|
||||||
|
" "" "${cur#--*=}"
|
||||||
|
return
|
||||||
|
;;
|
||||||
--*)
|
--*)
|
||||||
__gitcomp "--annotate --bcc --cc --cc-cmd --chain-reply-to
|
__gitcomp "--annotate --bcc --cc --cc-cmd --chain-reply-to
|
||||||
--compose --confirm= --dry-run --envelope-sender
|
--compose --confirm= --dry-run --envelope-sender
|
||||||
@ -1727,15 +1798,7 @@ __git_config_get_set_variables ()
|
|||||||
c=$((--c))
|
c=$((--c))
|
||||||
done
|
done
|
||||||
|
|
||||||
git --git-dir="$(__gitdir)" config $config_file --list 2>/dev/null |
|
git --git-dir="$(__gitdir)" config $config_file --name-only --list 2>/dev/null
|
||||||
while read -r line
|
|
||||||
do
|
|
||||||
case "$line" in
|
|
||||||
*.*=*)
|
|
||||||
echo "${line/=*/}"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_git_config ()
|
_git_config ()
|
||||||
@ -1750,7 +1813,7 @@ _git_config ()
|
|||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
branch.*.rebase)
|
branch.*.rebase)
|
||||||
__gitcomp "false true"
|
__gitcomp "false true preserve interactive"
|
||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
remote.pushdefault)
|
remote.pushdefault)
|
||||||
@ -1820,6 +1883,10 @@ _git_config ()
|
|||||||
__gitcomp "$__git_send_email_suppresscc_options"
|
__gitcomp "$__git_send_email_suppresscc_options"
|
||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
|
sendemail.transferencoding)
|
||||||
|
__gitcomp "7bit 8bit quoted-printable base64"
|
||||||
|
return
|
||||||
|
;;
|
||||||
--get|--get-all|--unset|--unset-all)
|
--get|--get-all|--unset|--unset-all)
|
||||||
__gitcomp_nl "$(__git_config_get_set_variables)"
|
__gitcomp_nl "$(__git_config_get_set_variables)"
|
||||||
return
|
return
|
||||||
@ -1836,6 +1903,7 @@ _git_config ()
|
|||||||
--get --get-all --get-regexp
|
--get --get-all --get-regexp
|
||||||
--add --unset --unset-all
|
--add --unset --unset-all
|
||||||
--remove-section --rename-section
|
--remove-section --rename-section
|
||||||
|
--name-only
|
||||||
"
|
"
|
||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
@ -1954,6 +2022,7 @@ _git_config ()
|
|||||||
color.status.changed
|
color.status.changed
|
||||||
color.status.header
|
color.status.header
|
||||||
color.status.nobranch
|
color.status.nobranch
|
||||||
|
color.status.unmerged
|
||||||
color.status.untracked
|
color.status.untracked
|
||||||
color.status.updated
|
color.status.updated
|
||||||
color.ui
|
color.ui
|
||||||
@ -1991,6 +2060,7 @@ _git_config ()
|
|||||||
core.sparseCheckout
|
core.sparseCheckout
|
||||||
core.symlinks
|
core.symlinks
|
||||||
core.trustctime
|
core.trustctime
|
||||||
|
core.untrackedCache
|
||||||
core.warnAmbiguousRefs
|
core.warnAmbiguousRefs
|
||||||
core.whitespace
|
core.whitespace
|
||||||
core.worktree
|
core.worktree
|
||||||
@ -2065,6 +2135,8 @@ _git_config ()
|
|||||||
http.noEPSV
|
http.noEPSV
|
||||||
http.postBuffer
|
http.postBuffer
|
||||||
http.proxy
|
http.proxy
|
||||||
|
http.sslCipherList
|
||||||
|
http.sslVersion
|
||||||
http.sslCAInfo
|
http.sslCAInfo
|
||||||
http.sslCAPath
|
http.sslCAPath
|
||||||
http.sslCert
|
http.sslCert
|
||||||
@ -2128,6 +2200,7 @@ _git_config ()
|
|||||||
pull.octopus
|
pull.octopus
|
||||||
pull.twohead
|
pull.twohead
|
||||||
push.default
|
push.default
|
||||||
|
push.followTags
|
||||||
rebase.autosquash
|
rebase.autosquash
|
||||||
rebase.stat
|
rebase.stat
|
||||||
receive.autogc
|
receive.autogc
|
||||||
@ -2201,12 +2274,7 @@ _git_remote ()
|
|||||||
__git_complete_remote_or_refspec
|
__git_complete_remote_or_refspec
|
||||||
;;
|
;;
|
||||||
update)
|
update)
|
||||||
local i c='' IFS=$'\n'
|
__gitcomp "$(__git_get_config_variables "remotes")"
|
||||||
for i in $(git --git-dir="$(__gitdir)" config --get-regexp "remotes\..*" 2>/dev/null); do
|
|
||||||
i="${i#remotes.}"
|
|
||||||
c="$c ${i/ */}"
|
|
||||||
done
|
|
||||||
__gitcomp "$c"
|
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
;;
|
;;
|
||||||
@ -2233,6 +2301,11 @@ _git_reset ()
|
|||||||
|
|
||||||
_git_revert ()
|
_git_revert ()
|
||||||
{
|
{
|
||||||
|
local dir="$(__gitdir)"
|
||||||
|
if [ -f "$dir"/REVERT_HEAD ]; then
|
||||||
|
__gitcomp "--continue --quit --abort"
|
||||||
|
return
|
||||||
|
fi
|
||||||
case "$cur" in
|
case "$cur" in
|
||||||
--*)
|
--*)
|
||||||
__gitcomp "--edit --mainline --no-edit --no-commit --signoff"
|
__gitcomp "--edit --mainline --no-edit --no-commit --signoff"
|
||||||
@ -2287,6 +2360,7 @@ _git_show ()
|
|||||||
;;
|
;;
|
||||||
--*)
|
--*)
|
||||||
__gitcomp "--pretty= --format= --abbrev-commit --oneline
|
__gitcomp "--pretty= --format= --abbrev-commit --oneline
|
||||||
|
--show-signature
|
||||||
$__git_diff_common_options
|
$__git_diff_common_options
|
||||||
"
|
"
|
||||||
return
|
return
|
||||||
@ -2300,7 +2374,7 @@ _git_show_branch ()
|
|||||||
case "$cur" in
|
case "$cur" in
|
||||||
--*)
|
--*)
|
||||||
__gitcomp "
|
__gitcomp "
|
||||||
--all --remotes --topo-order --current --more=
|
--all --remotes --topo-order --date-order --current --more=
|
||||||
--list --independent --merge-base --no-name
|
--list --independent --merge-base --no-name
|
||||||
--color --no-color
|
--color --no-color
|
||||||
--sha1-name --sparse --topics --reflog
|
--sha1-name --sparse --topics --reflog
|
||||||
@ -2313,7 +2387,7 @@ _git_show_branch ()
|
|||||||
|
|
||||||
_git_stash ()
|
_git_stash ()
|
||||||
{
|
{
|
||||||
local save_opts='--keep-index --no-keep-index --quiet --patch'
|
local save_opts='--all --keep-index --no-keep-index --quiet --patch --include-untracked'
|
||||||
local subcommands='save list show apply clear drop pop create branch'
|
local subcommands='save list show apply clear drop pop create branch'
|
||||||
local subcommand="$(__git_find_on_cmdline "$subcommands")"
|
local subcommand="$(__git_find_on_cmdline "$subcommands")"
|
||||||
if [ -z "$subcommand" ]; then
|
if [ -z "$subcommand" ]; then
|
||||||
@ -2335,9 +2409,20 @@ _git_stash ()
|
|||||||
apply,--*|pop,--*)
|
apply,--*|pop,--*)
|
||||||
__gitcomp "--index --quiet"
|
__gitcomp "--index --quiet"
|
||||||
;;
|
;;
|
||||||
show,--*|drop,--*|branch,--*)
|
drop,--*)
|
||||||
|
__gitcomp "--quiet"
|
||||||
;;
|
;;
|
||||||
show,*|apply,*|drop,*|pop,*|branch,*)
|
show,--*|branch,--*)
|
||||||
|
;;
|
||||||
|
branch,*)
|
||||||
|
if [ $cword -eq 3 ]; then
|
||||||
|
__gitcomp_nl "$(__git_refs)";
|
||||||
|
else
|
||||||
|
__gitcomp_nl "$(git --git-dir="$(__gitdir)" stash list \
|
||||||
|
| sed -n -e 's/:.*//p')"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
show,*|apply,*|drop,*|pop,*)
|
||||||
__gitcomp_nl "$(git --git-dir="$(__gitdir)" stash list \
|
__gitcomp_nl "$(git --git-dir="$(__gitdir)" stash list \
|
||||||
| sed -n -e 's/:.*//p')"
|
| sed -n -e 's/:.*//p')"
|
||||||
;;
|
;;
|
||||||
@ -2492,6 +2577,16 @@ _git_tag ()
|
|||||||
__gitcomp_nl "$(__git_refs)"
|
__gitcomp_nl "$(__git_refs)"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
case "$cur" in
|
||||||
|
--*)
|
||||||
|
__gitcomp "
|
||||||
|
--list --delete --verify --annotate --message --file
|
||||||
|
--sign --cleanup --local-user --force --column --sort
|
||||||
|
--contains --points-at
|
||||||
|
"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
_git_whatchanged ()
|
_git_whatchanged ()
|
||||||
@ -2547,6 +2642,7 @@ __git_main ()
|
|||||||
|
|
||||||
local expansion=$(__git_aliased_command "$command")
|
local expansion=$(__git_aliased_command "$command")
|
||||||
if [ -n "$expansion" ]; then
|
if [ -n "$expansion" ]; then
|
||||||
|
words[1]=$expansion
|
||||||
completion_func="_git_${expansion//-/_}"
|
completion_func="_git_${expansion//-/_}"
|
||||||
declare -f $completion_func >/dev/null && $completion_func
|
declare -f $completion_func >/dev/null && $completion_func
|
||||||
fi
|
fi
|
||||||
|
@ -66,6 +66,10 @@
|
|||||||
# git always compare HEAD to @{upstream}
|
# git always compare HEAD to @{upstream}
|
||||||
# svn always compare HEAD to your SVN upstream
|
# svn always compare HEAD to your SVN upstream
|
||||||
#
|
#
|
||||||
|
# You can change the separator between the branch name and the above
|
||||||
|
# state symbols by setting GIT_PS1_STATESEPARATOR. The default separator
|
||||||
|
# is SP.
|
||||||
|
#
|
||||||
# By default, __git_ps1 will compare HEAD to your SVN upstream if it can
|
# By default, __git_ps1 will compare HEAD to your SVN upstream if it can
|
||||||
# find one, or @{upstream} otherwise. Once you have set
|
# find one, or @{upstream} otherwise. Once you have set
|
||||||
# GIT_PS1_SHOWUPSTREAM, you can override it on a per-repository basis by
|
# GIT_PS1_SHOWUPSTREAM, you can override it on a per-repository basis by
|
||||||
@ -84,6 +88,11 @@
|
|||||||
# GIT_PS1_SHOWCOLORHINTS to a nonempty value. The colors are based on
|
# GIT_PS1_SHOWCOLORHINTS to a nonempty value. The colors are based on
|
||||||
# the colored output of "git status -sb" and are available only when
|
# the colored output of "git status -sb" and are available only when
|
||||||
# using __git_ps1 for PROMPT_COMMAND or precmd.
|
# using __git_ps1 for PROMPT_COMMAND or precmd.
|
||||||
|
#
|
||||||
|
# If you would like __git_ps1 to do nothing in the case when the current
|
||||||
|
# directory is set up to be ignored by git, then set
|
||||||
|
# GIT_PS1_HIDE_IF_PWD_IGNORED to a nonempty value. Override this on the
|
||||||
|
# repository level by setting bash.hideIfPwdIgnored to "false".
|
||||||
|
|
||||||
# check whether printf supports -v
|
# check whether printf supports -v
|
||||||
__git_printf_supports_v=
|
__git_printf_supports_v=
|
||||||
@ -207,7 +216,16 @@ __git_ps1_show_upstream ()
|
|||||||
p=" u+${count#* }-${count% *}" ;;
|
p=" u+${count#* }-${count% *}" ;;
|
||||||
esac
|
esac
|
||||||
if [[ -n "$count" && -n "$name" ]]; then
|
if [[ -n "$count" && -n "$name" ]]; then
|
||||||
p="$p $(git rev-parse --abbrev-ref "$upstream" 2>/dev/null)"
|
__git_ps1_upstream_name=$(git rev-parse \
|
||||||
|
--abbrev-ref "$upstream" 2>/dev/null)
|
||||||
|
if [ $pcmode = yes ] && [ $ps1_expanded = yes ]; then
|
||||||
|
p="$p \${__git_ps1_upstream_name}"
|
||||||
|
else
|
||||||
|
p="$p ${__git_ps1_upstream_name}"
|
||||||
|
# not needed anymore; keep user's
|
||||||
|
# environment clean
|
||||||
|
unset __git_ps1_upstream_name
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -259,9 +277,9 @@ __git_ps1_colorize_gitstring ()
|
|||||||
r="$c_clear$r"
|
r="$c_clear$r"
|
||||||
}
|
}
|
||||||
|
|
||||||
eread ()
|
__git_eread ()
|
||||||
{
|
{
|
||||||
f="$1"
|
local f="$1"
|
||||||
shift
|
shift
|
||||||
test -r "$f" && read "$@" <"$f"
|
test -r "$f" && read "$@" <"$f"
|
||||||
}
|
}
|
||||||
@ -279,6 +297,8 @@ eread ()
|
|||||||
# In this mode you can request colored hints using GIT_PS1_SHOWCOLORHINTS=true
|
# In this mode you can request colored hints using GIT_PS1_SHOWCOLORHINTS=true
|
||||||
__git_ps1 ()
|
__git_ps1 ()
|
||||||
{
|
{
|
||||||
|
# preserve exit status
|
||||||
|
local exit=$?
|
||||||
local pcmode=no
|
local pcmode=no
|
||||||
local detached=no
|
local detached=no
|
||||||
local ps1pc_start='\u@\h:\w '
|
local ps1pc_start='\u@\h:\w '
|
||||||
@ -290,13 +310,54 @@ __git_ps1 ()
|
|||||||
ps1pc_start="$1"
|
ps1pc_start="$1"
|
||||||
ps1pc_end="$2"
|
ps1pc_end="$2"
|
||||||
printf_format="${3:-$printf_format}"
|
printf_format="${3:-$printf_format}"
|
||||||
|
# set PS1 to a plain prompt so that we can
|
||||||
|
# simply return early if the prompt should not
|
||||||
|
# be decorated
|
||||||
|
PS1="$ps1pc_start$ps1pc_end"
|
||||||
;;
|
;;
|
||||||
0|1) printf_format="${1:-$printf_format}"
|
0|1) printf_format="${1:-$printf_format}"
|
||||||
;;
|
;;
|
||||||
*) return
|
*) return $exit
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
# ps1_expanded: This variable is set to 'yes' if the shell
|
||||||
|
# subjects the value of PS1 to parameter expansion:
|
||||||
|
#
|
||||||
|
# * bash does unless the promptvars option is disabled
|
||||||
|
# * zsh does not unless the PROMPT_SUBST option is set
|
||||||
|
# * POSIX shells always do
|
||||||
|
#
|
||||||
|
# If the shell would expand the contents of PS1 when drawing
|
||||||
|
# the prompt, a raw ref name must not be included in PS1.
|
||||||
|
# This protects the user from arbitrary code execution via
|
||||||
|
# specially crafted ref names. For example, a ref named
|
||||||
|
# 'refs/heads/$(IFS=_;cmd=sudo_rm_-rf_/;$cmd)' might cause the
|
||||||
|
# shell to execute 'sudo rm -rf /' when the prompt is drawn.
|
||||||
|
#
|
||||||
|
# Instead, the ref name should be placed in a separate global
|
||||||
|
# variable (in the __git_ps1_* namespace to avoid colliding
|
||||||
|
# with the user's environment) and that variable should be
|
||||||
|
# referenced from PS1. For example:
|
||||||
|
#
|
||||||
|
# __git_ps1_foo=$(do_something_to_get_ref_name)
|
||||||
|
# PS1="...stuff...\${__git_ps1_foo}...stuff..."
|
||||||
|
#
|
||||||
|
# If the shell does not expand the contents of PS1, the raw
|
||||||
|
# ref name must be included in PS1.
|
||||||
|
#
|
||||||
|
# The value of this variable is only relevant when in pcmode.
|
||||||
|
#
|
||||||
|
# Assume that the shell follows the POSIX specification and
|
||||||
|
# expands PS1 unless determined otherwise. (This is more
|
||||||
|
# likely to be correct if the user has a non-bash, non-zsh
|
||||||
|
# shell and safer than the alternative if the assumption is
|
||||||
|
# incorrect.)
|
||||||
|
#
|
||||||
|
local ps1_expanded=yes
|
||||||
|
[ -z "$ZSH_VERSION" ] || [[ -o PROMPT_SUBST ]] || ps1_expanded=no
|
||||||
|
[ -z "$BASH_VERSION" ] || shopt -q promptvars || ps1_expanded=no
|
||||||
|
|
||||||
local repo_info rev_parse_exit_code
|
local repo_info rev_parse_exit_code
|
||||||
repo_info="$(git rev-parse --git-dir --is-inside-git-dir \
|
repo_info="$(git rev-parse --git-dir --is-inside-git-dir \
|
||||||
--is-bare-repository --is-inside-work-tree \
|
--is-bare-repository --is-inside-work-tree \
|
||||||
@ -304,11 +365,7 @@ __git_ps1 ()
|
|||||||
rev_parse_exit_code="$?"
|
rev_parse_exit_code="$?"
|
||||||
|
|
||||||
if [ -z "$repo_info" ]; then
|
if [ -z "$repo_info" ]; then
|
||||||
if [ $pcmode = yes ]; then
|
return $exit
|
||||||
#In PC mode PS1 always needs to be set
|
|
||||||
PS1="$ps1pc_start$ps1pc_end"
|
|
||||||
fi
|
|
||||||
return
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local short_sha
|
local short_sha
|
||||||
@ -323,14 +380,22 @@ __git_ps1 ()
|
|||||||
local inside_gitdir="${repo_info##*$'\n'}"
|
local inside_gitdir="${repo_info##*$'\n'}"
|
||||||
local g="${repo_info%$'\n'*}"
|
local g="${repo_info%$'\n'*}"
|
||||||
|
|
||||||
|
if [ "true" = "$inside_worktree" ] &&
|
||||||
|
[ -n "${GIT_PS1_HIDE_IF_PWD_IGNORED-}" ] &&
|
||||||
|
[ "$(git config --bool bash.hideIfPwdIgnored)" != "false" ] &&
|
||||||
|
git check-ignore -q .
|
||||||
|
then
|
||||||
|
return $exit
|
||||||
|
fi
|
||||||
|
|
||||||
local r=""
|
local r=""
|
||||||
local b=""
|
local b=""
|
||||||
local step=""
|
local step=""
|
||||||
local total=""
|
local total=""
|
||||||
if [ -d "$g/rebase-merge" ]; then
|
if [ -d "$g/rebase-merge" ]; then
|
||||||
eread "$g/rebase-merge/head-name" b
|
__git_eread "$g/rebase-merge/head-name" b
|
||||||
eread "$g/rebase-merge/msgnum" step
|
__git_eread "$g/rebase-merge/msgnum" step
|
||||||
eread "$g/rebase-merge/end" total
|
__git_eread "$g/rebase-merge/end" total
|
||||||
if [ -f "$g/rebase-merge/interactive" ]; then
|
if [ -f "$g/rebase-merge/interactive" ]; then
|
||||||
r="|REBASE-i"
|
r="|REBASE-i"
|
||||||
else
|
else
|
||||||
@ -338,10 +403,10 @@ __git_ps1 ()
|
|||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
if [ -d "$g/rebase-apply" ]; then
|
if [ -d "$g/rebase-apply" ]; then
|
||||||
eread "$g/rebase-apply/next" step
|
__git_eread "$g/rebase-apply/next" step
|
||||||
eread "$g/rebase-apply/last" total
|
__git_eread "$g/rebase-apply/last" total
|
||||||
if [ -f "$g/rebase-apply/rebasing" ]; then
|
if [ -f "$g/rebase-apply/rebasing" ]; then
|
||||||
eread "$g/rebase-apply/head-name" b
|
__git_eread "$g/rebase-apply/head-name" b
|
||||||
r="|REBASE"
|
r="|REBASE"
|
||||||
elif [ -f "$g/rebase-apply/applying" ]; then
|
elif [ -f "$g/rebase-apply/applying" ]; then
|
||||||
r="|AM"
|
r="|AM"
|
||||||
@ -365,11 +430,8 @@ __git_ps1 ()
|
|||||||
b="$(git symbolic-ref HEAD 2>/dev/null)"
|
b="$(git symbolic-ref HEAD 2>/dev/null)"
|
||||||
else
|
else
|
||||||
local head=""
|
local head=""
|
||||||
if ! eread "$g/HEAD" head; then
|
if ! __git_eread "$g/HEAD" head; then
|
||||||
if [ $pcmode = yes ]; then
|
return $exit
|
||||||
PS1="$ps1pc_start$ps1pc_end"
|
|
||||||
fi
|
|
||||||
return
|
|
||||||
fi
|
fi
|
||||||
# is it a symbolic ref?
|
# is it a symbolic ref?
|
||||||
b="${head#ref: }"
|
b="${head#ref: }"
|
||||||
@ -414,21 +476,21 @@ __git_ps1 ()
|
|||||||
if [ -n "${GIT_PS1_SHOWDIRTYSTATE-}" ] &&
|
if [ -n "${GIT_PS1_SHOWDIRTYSTATE-}" ] &&
|
||||||
[ "$(git config --bool bash.showDirtyState)" != "false" ]
|
[ "$(git config --bool bash.showDirtyState)" != "false" ]
|
||||||
then
|
then
|
||||||
git diff --no-ext-diff --quiet --exit-code || w="*"
|
git diff --no-ext-diff --quiet || w="*"
|
||||||
if [ -n "$short_sha" ]; then
|
git diff --no-ext-diff --cached --quiet || i="+"
|
||||||
git diff-index --cached --quiet HEAD -- || i="+"
|
if [ -z "$short_sha" ] && [ -z "$i" ]; then
|
||||||
else
|
|
||||||
i="#"
|
i="#"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ] &&
|
if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ] &&
|
||||||
[ -r "$g/refs/stash" ]; then
|
git rev-parse --verify --quiet refs/stash >/dev/null
|
||||||
|
then
|
||||||
s="$"
|
s="$"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ] &&
|
if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ] &&
|
||||||
[ "$(git config --bool bash.showUntrackedFiles)" != "false" ] &&
|
[ "$(git config --bool bash.showUntrackedFiles)" != "false" ] &&
|
||||||
git ls-files --others --exclude-standard --error-unmatch -- '*' >/dev/null 2>/dev/null
|
git ls-files --others --exclude-standard --directory --no-empty-directory --error-unmatch -- ':/*' >/dev/null 2>/dev/null
|
||||||
then
|
then
|
||||||
u="%${ZSH_VERSION+%}"
|
u="%${ZSH_VERSION+%}"
|
||||||
fi
|
fi
|
||||||
@ -440,13 +502,21 @@ __git_ps1 ()
|
|||||||
|
|
||||||
local z="${GIT_PS1_STATESEPARATOR-" "}"
|
local z="${GIT_PS1_STATESEPARATOR-" "}"
|
||||||
|
|
||||||
# NO color option unless in PROMPT_COMMAND mode
|
# NO color option unless in PROMPT_COMMAND mode or it's Zsh
|
||||||
if [ $pcmode = yes ] && [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
|
if [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
|
||||||
|
if [ $pcmode = yes ] || [ -n "${ZSH_VERSION-}" ]; then
|
||||||
__git_ps1_colorize_gitstring
|
__git_ps1_colorize_gitstring
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
b=${b##refs/heads/}
|
||||||
|
if [ $pcmode = yes ] && [ $ps1_expanded = yes ]; then
|
||||||
|
__git_ps1_branch_name=$b
|
||||||
|
b="\${__git_ps1_branch_name}"
|
||||||
|
fi
|
||||||
|
|
||||||
local f="$w$i$s$u"
|
local f="$w$i$s$u"
|
||||||
local gitstring="$c${b##refs/heads/}${f:+$z$f}$r$p"
|
local gitstring="$c$b${f:+$z$f}$r$p"
|
||||||
|
|
||||||
if [ $pcmode = yes ]; then
|
if [ $pcmode = yes ]; then
|
||||||
if [ "${__git_printf_supports_v-}" != yes ]; then
|
if [ "${__git_printf_supports_v-}" != yes ]; then
|
||||||
@ -458,4 +528,6 @@ __git_ps1 ()
|
|||||||
else
|
else
|
||||||
printf -- "$printf_format" "$gitstring"
|
printf -- "$printf_format" "$gitstring"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
return $exit
|
||||||
}
|
}
|
||||||
|
@ -71,7 +71,7 @@ exist_gh() { # [DIRECTORY]
|
|||||||
#
|
#
|
||||||
git.io() {
|
git.io() {
|
||||||
emulate -L zsh
|
emulate -L zsh
|
||||||
curl -i -s http://git.io -F "url=$1" | grep "Location" | cut -f 2 -d " "
|
curl -i -s https://git.io -F "url=$1" | grep "Location" | cut -f 2 -d " "
|
||||||
}
|
}
|
||||||
|
|
||||||
# End Functions #############################################################
|
# End Functions #############################################################
|
||||||
|
@ -38,7 +38,11 @@ function jira() {
|
|||||||
_jira_query $@
|
_jira_query $@
|
||||||
elif [[ "$action" == "dashboard" ]]; then
|
elif [[ "$action" == "dashboard" ]]; then
|
||||||
echo "Opening dashboard"
|
echo "Opening dashboard"
|
||||||
|
if [[ "$JIRA_RAPID_BOARD" == "true" ]]; then
|
||||||
|
open_command "${jira_url}/secure/RapidBoard.jspa"
|
||||||
|
else
|
||||||
open_command "${jira_url}/secure/Dashboard.jspa"
|
open_command "${jira_url}/secure/Dashboard.jspa"
|
||||||
|
fi
|
||||||
elif [[ "$action" == "dumpconfig" ]]; then
|
elif [[ "$action" == "dumpconfig" ]]; then
|
||||||
echo "JIRA_URL=$jira_url"
|
echo "JIRA_URL=$jira_url"
|
||||||
echo "JIRA_PREFIX=$jira_prefix"
|
echo "JIRA_PREFIX=$jira_prefix"
|
||||||
@ -99,4 +103,3 @@ function _jira_query() {
|
|||||||
query="${lookup}+%3D+%22${jira_name}%22+AND+resolution+%3D+unresolved+ORDER+BY+priority+DESC%2C+created+ASC"
|
query="${lookup}+%3D+%22${jira_name}%22+AND+resolution+%3D+unresolved+ORDER+BY+priority+DESC%2C+created+ASC"
|
||||||
open_command "${jira_url}/secure/IssueNavigator.jspa?reset=true&jqlQuery=${query}"
|
open_command "${jira_url}/secure/IssueNavigator.jspa?reset=true&jqlQuery=${query}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
45
plugins/meteor/README.md
Normal file
45
plugins/meteor/README.md
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
## Introduction
|
||||||
|
|
||||||
|
The [meteor plugin](https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/meteor) provides many
|
||||||
|
[useful aliases](#aliases) as well as completion for the `meteor` command.
|
||||||
|
|
||||||
|
Enable it by adding `meteor` to the plugins array in your zshrc file:
|
||||||
|
```zsh
|
||||||
|
plugins=(... meteor)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Aliases
|
||||||
|
|
||||||
|
| Alias | Command | Description |
|
||||||
|
|---------|----------------------------|------------------------------------------------------------------|
|
||||||
|
| `ma` | `meteor add` | Add a package to this project |
|
||||||
|
| `map` | `meteor add-platform` | Add a platform to this project |
|
||||||
|
| `mad` | `meteor admin` | Administrative commands |
|
||||||
|
| `mau` | `meteor authorized` | View or change authorized users and organizations for a site |
|
||||||
|
| `mb` | `meteor build` | Build this project for all platforms |
|
||||||
|
| `mcl` | `meteor claim` | Claim a site deployed with an old Meteor version |
|
||||||
|
| `mca` | `meteor configure-android` | Run the Android configuration tool from Meteor's ADK environment |
|
||||||
|
| `mc` | `meteor create` | Create a new project |
|
||||||
|
| `mdb` | `meteor debug` | Run the project, but suspend the server process for debugging |
|
||||||
|
| `mde` | `meteor deploy` | Deploy this project to Meteor |
|
||||||
|
| `mis` | `meteor install-sdk` | Installs SDKs for a platform |
|
||||||
|
| `ml` | `meteor list` | List the packages explicitly used by your project |
|
||||||
|
| `mlp` | `meteor list-platforms` | List the platforms added to your project |
|
||||||
|
| `mls` | `meteor list-sites` | List sites for which you are authorized |
|
||||||
|
| `mli` | `meteor login` | Log in to your Meteor developer account |
|
||||||
|
| `mlo` | `meteor logout` | Log out of your Meteor developer account |
|
||||||
|
| `mlog` | `meteor logs` | Show logs for specified site |
|
||||||
|
| `mm` | `meteor mongo` | Connect to the Mongo database for the specified site |
|
||||||
|
| `mp` | `meteor publish` | Publish a new version of a package to the package server |
|
||||||
|
| `mpa` | `meteor publish-for-arch` | Builds an already-published package for a new platform |
|
||||||
|
| `mpr` | `meteor publish-release` | Publish a new meteor release to the package server |
|
||||||
|
| `mr` | `meteor remove` | Remove a package from this project |
|
||||||
|
| `mrp` | `meteor remove-platform` | Remove a platform from this project |
|
||||||
|
| `mre` | `meteor reset` | Reset the project state. Erases the local database |
|
||||||
|
| `m` | `meteor run` | **[default]** Run this project in local development mode |
|
||||||
|
| `ms` | `meteor search` | Search through the package server database |
|
||||||
|
| `msh` | `meteor shell` | Launch a Node REPL for interactively evaluating server-side code |
|
||||||
|
| `msw` | `meteor show` | Show detailed information about a release or package |
|
||||||
|
| `mt` | `meteor test-packages` | Test one or more packages |
|
||||||
|
| `mu` | `meteor update` | Upgrade this project's dependencies to their latest versions |
|
||||||
|
| `mw` | `meteor whoami` | Prints the username of your Meteor developer account |
|
33
plugins/meteor/meteor.plugin.zsh
Normal file
33
plugins/meteor/meteor.plugin.zsh
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# Aliases in alphabetical order
|
||||||
|
|
||||||
|
alias ma='meteor add' # Add a package to this project.
|
||||||
|
alias map='meteor add-platform' # Add a platform to this project.
|
||||||
|
alias mad='meteor admin' # Administrative commands.
|
||||||
|
alias mau='meteor authorized' # View or change authorized users and organizations for a site.
|
||||||
|
alias mb='meteor build' # Build this project for all platforms.
|
||||||
|
alias mcl='meteor claim' # Claim a site deployed with an old Meteor version.
|
||||||
|
alias mca='meteor configure-android' # Run the Android configuration tool from Meteor's ADK environment.
|
||||||
|
alias mc='meteor create' # Create a new project.
|
||||||
|
alias mdb='meteor debug' # Run the project, but suspend the server process for debugging.
|
||||||
|
alias mde='meteor deploy' # Deploy this project to Meteor.
|
||||||
|
alias mis='meteor install-sdk' # Installs SDKs for a platform.
|
||||||
|
alias ml='meteor list' # List the packages explicitly used by your project.
|
||||||
|
alias mlp='meteor list-platforms' # List the platforms added to your project.
|
||||||
|
alias mls='meteor list-sites' # List sites for which you are authorized.
|
||||||
|
alias mli='meteor login' # Log in to your Meteor developer account.
|
||||||
|
alias mlo='meteor logout' # Log out of your Meteor developer account.
|
||||||
|
alias mlog='meteor logs' # Show logs for specified site.
|
||||||
|
alias mm='meteor mongo' # Connect to the Mongo database for the specified site.
|
||||||
|
alias mp='meteor publish' # Publish a new version of a package to the package server.
|
||||||
|
alias mpa='meteor publish-for-arch' # Builds an already-published package for a new platform.
|
||||||
|
alias mpr='meteor publish-release' # Publish a new meteor release to the package server.
|
||||||
|
alias mr='meteor remove' # Remove a package from this project.
|
||||||
|
alias mrp='meteor remove-platform' # Remove a platform from this project.
|
||||||
|
alias mre='meteor reset' # Reset the project state. Erases the local database.
|
||||||
|
alias m='meteor run' # [default] Run this project in local development mode.
|
||||||
|
alias ms='meteor search' # Search through the package server database.
|
||||||
|
alias msh='meteor shell' # Launch a Node REPL for interactively evaluating server-side code.
|
||||||
|
alias msw='meteor show' # Show detailed information about a release or package.
|
||||||
|
alias mt='meteor test-packages' # Test one or more packages.
|
||||||
|
alias mu='meteor update' # Upgrade this project's dependencies to their latest versions.
|
||||||
|
alias mw='meteor whoami' # Prints the username of your Meteor developer account.
|
@ -73,6 +73,10 @@ case $state in
|
|||||||
case $line[1] in
|
case $line[1] in
|
||||||
(help)
|
(help)
|
||||||
_arguments ':feature:__task_list'
|
_arguments ':feature:__task_list'
|
||||||
|
;;
|
||||||
|
(test)
|
||||||
|
_files
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
32
plugins/mvn/README.md
Normal file
32
plugins/mvn/README.md
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
## Introduction
|
||||||
|
|
||||||
|
The [mvn plugin](https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/mvn) provides many
|
||||||
|
[useful aliases](#aliases) as well as completion for the `mvn` command.
|
||||||
|
|
||||||
|
Enable it by adding `mvn` to the plugins array in your zshrc file:
|
||||||
|
```zsh
|
||||||
|
plugins=(... mvn)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Aliases
|
||||||
|
|
||||||
|
| Alias | Command |
|
||||||
|
|:---------------------|:------------------------------------------------|
|
||||||
|
| `mvncie` | `mvn clean install eclipse:eclipse` |
|
||||||
|
| `mvnci` | `mvn clean install` |
|
||||||
|
| `mvncist` | `mvn clean install -DskipTests` |
|
||||||
|
| `mvne` | `mvn eclipse:eclipse` |
|
||||||
|
| `mvnd` | `mvn deploy` |
|
||||||
|
| `mvnp` | `mvn package` |
|
||||||
|
| `mvnc` | `mvn clean` |
|
||||||
|
| `mvncom` | `mvn compile` |
|
||||||
|
| `mvnct` | `mvn clean test` |
|
||||||
|
| `mvnt` | `mvn test` |
|
||||||
|
| `mvnag` | `mvn archetype:generate` |
|
||||||
|
| `mvn-updates` | `mvn versions:display-dependency-updates` |
|
||||||
|
| `mvntc7` | `mvn tomcat7:run` |
|
||||||
|
| `mvnjetty` | `mvn jetty:run` |
|
||||||
|
| `mvndt` | `mvn dependency:tree` |
|
||||||
|
| `mvns` | `mvn site` |
|
||||||
|
| `mvnsrc` | `mvn dependency:sources` |
|
||||||
|
| `mvndocs` | `mvn dependency:resolve -Dclassifier=javadoc` |
|
@ -171,7 +171,7 @@ function listMavenCompletions {
|
|||||||
gwt:browser gwt:clean gwt:compile gwt:compile-report gwt:css gwt:debug gwt:eclipse gwt:eclipseTest gwt:generateAsync gwt:help gwt:i18n gwt:mergewebxml gwt:resources gwt:run gwt:sdkInstall gwt:source-jar gwt:soyc gwt:test
|
gwt:browser gwt:clean gwt:compile gwt:compile-report gwt:css gwt:debug gwt:eclipse gwt:eclipseTest gwt:generateAsync gwt:help gwt:i18n gwt:mergewebxml gwt:resources gwt:run gwt:sdkInstall gwt:source-jar gwt:soyc gwt:test
|
||||||
|
|
||||||
# options
|
# options
|
||||||
-Dmaven.test.skip=true -DskipTests -Dmaven.surefire.debug -DenableCiProfile -Dpmd.skip=true -Dcheckstyle.skip=true -Dtycho.mode=maven
|
-Dmaven.test.skip=true -DskipTests -Dmaven.surefire.debug -DenableCiProfile -Dpmd.skip=true -Dcheckstyle.skip=true -Dtycho.mode=maven -Dmaven.test.failure.ignore=true
|
||||||
|
|
||||||
# arguments
|
# arguments
|
||||||
-am -amd -B -C -c -cpu -D -e -emp -ep -f -fae -ff -fn -gs -h -l -N -npr -npu -nsu -o -P -pl -q -rf -s -T -t -U -up -V -v -X
|
-am -amd -B -C -c -cpu -D -e -emp -ep -f -fae -ff -fn -gs -h -l -N -npr -npu -nsu -o -P -pl -q -rf -s -T -t -U -up -V -v -X
|
||||||
|
@ -46,6 +46,16 @@ EOF
|
|||||||
end tell
|
end tell
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
elif [[ "$the_app" == 'iTerm2' ]]; then
|
||||||
|
osascript <<EOF
|
||||||
|
tell application "iTerm"
|
||||||
|
tell current window
|
||||||
|
create tab with default profile
|
||||||
|
tell current session to write text "${command}"
|
||||||
|
end tell
|
||||||
|
end tell
|
||||||
|
EOF
|
||||||
|
|
||||||
else
|
else
|
||||||
echo "tab: unsupported terminal app: $the_app"
|
echo "tab: unsupported terminal app: $the_app"
|
||||||
false
|
false
|
||||||
@ -73,6 +83,19 @@ function vsplit_tab() {
|
|||||||
end tell
|
end tell
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
elif [[ "$the_app" == 'iTerm2' ]]; then
|
||||||
|
osascript <<EOF
|
||||||
|
tell application "iTerm"
|
||||||
|
tell current session of first window
|
||||||
|
set newSession to (split vertically with same profile)
|
||||||
|
tell newSession
|
||||||
|
write text "${command}"
|
||||||
|
select
|
||||||
|
end tell
|
||||||
|
end tell
|
||||||
|
end tell
|
||||||
|
EOF
|
||||||
|
|
||||||
else
|
else
|
||||||
echo "$0: unsupported terminal app: $the_app" >&2
|
echo "$0: unsupported terminal app: $the_app" >&2
|
||||||
false
|
false
|
||||||
@ -100,6 +123,19 @@ function split_tab() {
|
|||||||
end tell
|
end tell
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
elif [[ "$the_app" == 'iTerm2' ]]; then
|
||||||
|
osascript <<EOF
|
||||||
|
tell application "iTerm"
|
||||||
|
tell current session of first window
|
||||||
|
set newSession to (split horizontally with same profile)
|
||||||
|
tell newSession
|
||||||
|
write text "${command}"
|
||||||
|
select
|
||||||
|
end tell
|
||||||
|
end tell
|
||||||
|
end tell
|
||||||
|
EOF
|
||||||
|
|
||||||
else
|
else
|
||||||
echo "$0: unsupported terminal app: $the_app" >&2
|
echo "$0: unsupported terminal app: $the_app" >&2
|
||||||
false
|
false
|
||||||
|
@ -21,3 +21,4 @@ alias sbr='sbt run'
|
|||||||
alias sbrm='sbt run-main'
|
alias sbrm='sbt run-main'
|
||||||
alias sbu='sbt update'
|
alias sbu='sbt update'
|
||||||
alias sbx='sbt test'
|
alias sbx='sbt test'
|
||||||
|
alias sba='sbt assembly'
|
||||||
|
@ -22,8 +22,8 @@ alias sf='`_symfony_console`'
|
|||||||
alias sfcl='sf cache:clear'
|
alias sfcl='sf cache:clear'
|
||||||
alias sfsr='sf server:run -vvv'
|
alias sfsr='sf server:run -vvv'
|
||||||
alias sfcw='sf cache:warmup'
|
alias sfcw='sf cache:warmup'
|
||||||
alias sfroute='sf router:debug'
|
alias sfroute='sf debug:router'
|
||||||
alias sfcontainer='sf container:debug'
|
alias sfcontainer='sf debug:container'
|
||||||
alias sfgb='sf generate:bundle'
|
alias sfgb='sf generate:bundle'
|
||||||
alias sfdev='sf --env=dev'
|
alias sfdev='sf --env=dev'
|
||||||
alias sfprod='sf --env=prod'
|
alias sfprod='sf --env=prod'
|
||||||
|
@ -26,10 +26,12 @@ _1st_arguments=(
|
|||||||
'rsync:Syncs rsync synced folders to remote machine'
|
'rsync:Syncs rsync synced folders to remote machine'
|
||||||
'rsync-auto:Syncs rsync synced folders automatically when files change'
|
'rsync-auto:Syncs rsync synced folders automatically when files change'
|
||||||
'share:Shares your Vagrant environment with anyone in the world'
|
'share:Shares your Vagrant environment with anyone in the world'
|
||||||
|
'snapshot:Manage snapshots with the guest machine'
|
||||||
'ssh:SSH into the currently running environment'
|
'ssh:SSH into the currently running environment'
|
||||||
'ssh-config:Outputs .ssh/config valid syntax for connecting to this environment via ssh'
|
'ssh-config:Outputs .ssh/config valid syntax for connecting to this environment via ssh'
|
||||||
'status:Shows the status of the current Vagrant environment'
|
'status:Shows the status of the current Vagrant environment'
|
||||||
'suspend:Suspends the currently running vagrant environment'
|
'suspend:Suspends the currently running vagrant environment'
|
||||||
|
'snapshot:Used to manage snapshots with the guest machine'
|
||||||
'up:Creates the vagrant environment'
|
'up:Creates the vagrant environment'
|
||||||
'version:Prints current and latest Vagrant version'
|
'version:Prints current and latest Vagrant version'
|
||||||
'--help:[TASK] Describe available tasks or one specific task'
|
'--help:[TASK] Describe available tasks or one specific task'
|
||||||
|
@ -6,6 +6,8 @@ WordPress Command Line Interface (http://wp-cli.org/)
|
|||||||
|
|
||||||
WP-CLI is a set of command-line tools for managing WordPress installations. You can update plugins, set up multisite installs and much more, without using a web browser.
|
WP-CLI is a set of command-line tools for managing WordPress installations. You can update plugins, set up multisite installs and much more, without using a web browser.
|
||||||
|
|
||||||
|
This plugin adds [tab completion](http://wp-cli.org/#complete) for `wp-cli` as well as several aliases.
|
||||||
|
|
||||||
## List of Aliases
|
## List of Aliases
|
||||||
|
|
||||||
### Core
|
### Core
|
||||||
|
@ -1,5 +1,33 @@
|
|||||||
# How should be current element of the list drawn. Possible values: reverse,
|
# How should be current element of the list drawn. Possible values: reverse,
|
||||||
# underline. Default (without option set) is reverse
|
# underline.
|
||||||
# On Linux virtual terminal this will be enforced to reverse (because of poor
|
# On Linux virtual terminal this will be enforced to reverse (because of poor
|
||||||
# underline support on that terminal)
|
# underline support on that terminal). The same for screen/tmux.
|
||||||
# local active_text=underline
|
local active_text=reverse
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Zshrc integration. All below variables can
|
||||||
|
# be set in zshrc and will have precedence
|
||||||
|
# over config files
|
||||||
|
#
|
||||||
|
|
||||||
|
# 1. znt_aliases_active_text
|
||||||
|
active_text=${znt_aliases_active_text:-$active_text}
|
||||||
|
|
||||||
|
# 2. znt_aliases_nlist_coloring_pattern
|
||||||
|
NLIST_COLORING_PATTERN=${znt_aliases_nlist_coloring_pattern:-$NLIST_COLORING_PATTERN}
|
||||||
|
|
||||||
|
# 3. znt_aliases_nlist_coloring_color
|
||||||
|
NLIST_COLORING_COLOR=${znt_aliases_nlist_coloring_color:-$NLIST_COLORING_COLOR}
|
||||||
|
|
||||||
|
# 4. znt_aliases_nlist_coloring_match_multiple
|
||||||
|
NLIST_COLORING_MATCH_MULTIPLE=${znt_aliases_nlist_coloring_match_multiple:-$NLIST_COLORING_MATCH_MULTIPLE}
|
||||||
|
|
||||||
|
# 5. znt_aliases_keywords (array)
|
||||||
|
if (( ${+znt_aliases_keywords} )); then
|
||||||
|
keywords=( "${znt_aliases_keywords[@]}" )
|
||||||
|
fi
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# Hotlist
|
# Hotlist
|
||||||
# Try to use $ZSH_VERSION, e.g. /usr/share/zsh/$ZSH_VERSION/functions
|
# Can use e.g. $ZSH_VERSION, e.g. /usr/share/zsh/$ZSH_VERSION/functions
|
||||||
local hotlist
|
local -a hotlist
|
||||||
hotlist=(
|
hotlist=(
|
||||||
~/.config/znt
|
~/.config/znt
|
||||||
/usr/share/zsh/site-functions
|
/usr/share/zsh/site-functions
|
||||||
@ -8,6 +8,7 @@ hotlist=(
|
|||||||
/usr/local/share/zsh/site-functions
|
/usr/local/share/zsh/site-functions
|
||||||
/usr/local/share/zsh
|
/usr/local/share/zsh
|
||||||
/usr/local/bin
|
/usr/local/bin
|
||||||
|
/usr/lib
|
||||||
)
|
)
|
||||||
|
|
||||||
# Suppress adding (to directory stack) directories visited by n-cd
|
# Suppress adding (to directory stack) directories visited by n-cd
|
||||||
@ -15,12 +16,53 @@ hotlist=(
|
|||||||
local NCD_DONT_PUSHD=0
|
local NCD_DONT_PUSHD=0
|
||||||
|
|
||||||
# How should be current element of the list drawn. Possible values: reverse,
|
# How should be current element of the list drawn. Possible values: reverse,
|
||||||
# underline. Default (without option set) is reverse
|
# underline.
|
||||||
# On Linux virtual terminal this will be enforced to reverse (because of poor
|
# On Linux virtual terminal this will be enforced to reverse (because of poor
|
||||||
# underline support on that terminal)
|
# underline support on that terminal). The same for screen/tmux.
|
||||||
# local active_text=underline
|
local active_text=reverse
|
||||||
|
|
||||||
# Colorize last segments of the paths
|
# Colorize last segments of the paths
|
||||||
# (#s) is ^, (#e) is $, # is *, ## is + (comparing to regex)
|
# (#s) is ^, (#e) is $, # is *, ## is + (comparing to regex)
|
||||||
local NLIST_COLORING_PATTERN="[a-zA-Z0-9 ._-]##/#(#e)"
|
local NLIST_COLORING_PATTERN="[a-zA-Z0-9 ._-]##/#(#e)"
|
||||||
local NLIST_COLORING_COLOR=$'\x1b[00;33m'
|
local NLIST_COLORING_COLOR=$'\x1b[00;33m'
|
||||||
|
|
||||||
|
# Search keywords, iterated with F2 or Ctrl-X or Ctrl-/
|
||||||
|
local -a keywords
|
||||||
|
keywords=( "zsh" "local" "git" )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Zshrc integration. All below variables can
|
||||||
|
# be set in zshrc and will have precedence
|
||||||
|
# over config files
|
||||||
|
#
|
||||||
|
|
||||||
|
# 1. znt_cd_hotlist (array)
|
||||||
|
if (( ${+znt_cd_hotlist} )); then
|
||||||
|
hotlist=( "${znt_cd_hotlist[@]}" )
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 2. znt_cd_dont_pushd
|
||||||
|
NCD_DONT_PUSHD=${znt_cd_dont_pushd:-$NCD_DONT_PUSHD}
|
||||||
|
|
||||||
|
# 3. znt_cd_active_text
|
||||||
|
active_text=${znt_cd_active_text:-$active_text}
|
||||||
|
|
||||||
|
# 4. znt_cd_nlist_coloring_pattern
|
||||||
|
NLIST_COLORING_PATTERN=${znt_cd_nlist_coloring_pattern:-$NLIST_COLORING_PATTERN}
|
||||||
|
|
||||||
|
# 5. znt_cd_nlist_coloring_color
|
||||||
|
NLIST_COLORING_COLOR=${znt_cd_nlist_coloring_color:-$NLIST_COLORING_COLOR}
|
||||||
|
|
||||||
|
# 6. znt_cd_nlist_coloring_match_multiple
|
||||||
|
NLIST_COLORING_MATCH_MULTIPLE=${znt_cd_nlist_coloring_match_multiple:-$NLIST_COLORING_MATCH_MULTIPLE}
|
||||||
|
|
||||||
|
# 7. znt_cd_keywords (array)
|
||||||
|
if (( ${+znt_cd_keywords} )); then
|
||||||
|
keywords=( "${znt_cd_keywords[@]}" )
|
||||||
|
fi
|
||||||
|
@ -1,9 +1,38 @@
|
|||||||
# How should be current element of the list drawn. Possible values: reverse,
|
# How should be current element of the list drawn. Possible values: reverse,
|
||||||
# underline. Default (without option set) is reverse
|
# underline.
|
||||||
# On Linux virtual terminal this will be enforced to reverse (because of poor
|
# On Linux virtual terminal this will be enforced to reverse (because of poor
|
||||||
# underline support on that terminal)
|
# underline support on that terminal). The same for screen/tmux.
|
||||||
# local active_text=underline
|
local active_text=reverse
|
||||||
|
|
||||||
# (#s) is ^, (#e) is $, # is *, ## is + (comparing to regex)
|
# (#s) is ^, (#e) is $, # is *, ## is + (comparing to regex)
|
||||||
local NLIST_COLORING_PATTERN="[a-zA-Z0-9_]##"
|
local NLIST_COLORING_PATTERN="[a-zA-Z0-9_]##"
|
||||||
local NLIST_COLORING_MATCH_MULTIPLE=0
|
local NLIST_COLORING_MATCH_MULTIPLE=0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Zshrc integration. All below variables can
|
||||||
|
# be set in zshrc and will have precedence
|
||||||
|
# over config files
|
||||||
|
#
|
||||||
|
|
||||||
|
# 1. znt_env_active_text
|
||||||
|
active_text=${znt_env_active_text:-$active_text}
|
||||||
|
|
||||||
|
# 2. znt_env_nlist_coloring_pattern
|
||||||
|
NLIST_COLORING_PATTERN=${znt_env_nlist_coloring_pattern:-$NLIST_COLORING_PATTERN}
|
||||||
|
|
||||||
|
# 3. znt_env_nlist_coloring_color
|
||||||
|
NLIST_COLORING_COLOR=${znt_env_nlist_coloring_color:-$NLIST_COLORING_COLOR}
|
||||||
|
|
||||||
|
# 4. znt_env_nlist_coloring_match_multiple
|
||||||
|
NLIST_COLORING_MATCH_MULTIPLE=${znt_env_nlist_coloring_match_multiple:-$NLIST_COLORING_MATCH_MULTIPLE}
|
||||||
|
|
||||||
|
# 5. znt_env_keywords (array)
|
||||||
|
if (( ${+znt_env_keywords} )); then
|
||||||
|
keywords=( "${znt_env_keywords[@]}" )
|
||||||
|
fi
|
||||||
|
@ -4,7 +4,38 @@ local feditor="zed"
|
|||||||
# local feditor="vared"
|
# local feditor="vared"
|
||||||
|
|
||||||
# How should be current element of the list drawn. Possible values: reverse,
|
# How should be current element of the list drawn. Possible values: reverse,
|
||||||
# underline. Default (without option set) is reverse
|
# underline.
|
||||||
# On Linux virtual terminal this will be enforced to reverse (because of poor
|
# On Linux virtual terminal this will be enforced to reverse (because of poor
|
||||||
# underline support on that terminal)
|
# underline support on that terminal). The same for screen/tmux.
|
||||||
# local active_text=underline
|
local active_text=reverse
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Zshrc integration. All below variables can
|
||||||
|
# be set in zshrc and will have precedence
|
||||||
|
# over config files
|
||||||
|
#
|
||||||
|
|
||||||
|
# 1. znt_functions_feditor
|
||||||
|
feditor=${znt_functions_feditor:-$feditor}
|
||||||
|
|
||||||
|
# 2. znt_functions_active_text
|
||||||
|
active_text=${znt_functions_active_text:-$active_text}
|
||||||
|
|
||||||
|
# 3. znt_functions_nlist_coloring_pattern
|
||||||
|
NLIST_COLORING_PATTERN=${znt_functions_nlist_coloring_pattern:-$NLIST_COLORING_PATTERN}
|
||||||
|
|
||||||
|
# 4. znt_functions_nlist_coloring_color
|
||||||
|
NLIST_COLORING_COLOR=${znt_functions_nlist_coloring_color:-$NLIST_COLORING_COLOR}
|
||||||
|
|
||||||
|
# 5. znt_functions_nlist_coloring_match_multiple
|
||||||
|
NLIST_COLORING_MATCH_MULTIPLE=${znt_functions_nlist_coloring_match_multiple:-$NLIST_COLORING_MATCH_MULTIPLE}
|
||||||
|
|
||||||
|
# 6. znt_functions_keywords (array)
|
||||||
|
if (( ${+znt_functions_keywords} )); then
|
||||||
|
keywords=( "${znt_functions_keywords[@]}" )
|
||||||
|
fi
|
||||||
|
@ -1,10 +1,43 @@
|
|||||||
# How should be current element of the list drawn. Possible values: reverse,
|
# How should be current element of the list drawn. Possible values: reverse,
|
||||||
# underline. Default (without option set) is reverse
|
# underline.
|
||||||
# On Linux virtual terminal this will be enforced to reverse (because of poor
|
# On Linux virtual terminal this will be enforced to reverse (because of poor
|
||||||
# underline support on that terminal)
|
# underline support on that terminal). The same for screen/tmux.
|
||||||
local active_text=underline
|
local active_text=underline
|
||||||
|
|
||||||
# Highlight a few keywords
|
# Highlight a few keywords
|
||||||
local NLIST_COLORING_PATTERN="(while|for |sudo|make|(#s)git|vim(#e)|vim |emacs(#e)|emacs )"
|
local NLIST_COLORING_PATTERN="(while|for |sudo|make|(#s)git|vim(#e)|vim |emacs(#e)|emacs )"
|
||||||
local NLIST_COLORING_COLOR=$'\x1b[00;33m'
|
local NLIST_COLORING_COLOR=$'\x1b[00;33m'
|
||||||
local NLIST_COLORING_MATCH_MULTIPLE=1
|
local NLIST_COLORING_MATCH_MULTIPLE=1
|
||||||
|
|
||||||
|
# Search keywords, iterated with F2 or Ctrl-X or Ctrl-/
|
||||||
|
local -a keywords
|
||||||
|
keywords=( "git" "vim" "mplayer" )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Zshrc integration. All below variables can
|
||||||
|
# be set in zshrc and will have precedence
|
||||||
|
# over config files
|
||||||
|
#
|
||||||
|
|
||||||
|
# 1. znt_history_active_text
|
||||||
|
active_text=${znt_history_active_text:-$active_text}
|
||||||
|
|
||||||
|
# 2. znt_history_nlist_coloring_pattern
|
||||||
|
NLIST_COLORING_PATTERN=${znt_history_nlist_coloring_pattern:-$NLIST_COLORING_PATTERN}
|
||||||
|
|
||||||
|
# 3. znt_history_nlist_coloring_color
|
||||||
|
NLIST_COLORING_COLOR=${znt_history_nlist_coloring_color:-$NLIST_COLORING_COLOR}
|
||||||
|
|
||||||
|
# 4. znt_history_nlist_coloring_match_multiple
|
||||||
|
NLIST_COLORING_MATCH_MULTIPLE=${znt_history_nlist_coloring_match_multiple:-$NLIST_COLORING_MATCH_MULTIPLE}
|
||||||
|
|
||||||
|
# 5. znt_history_keywords (array)
|
||||||
|
if (( ${+znt_history_keywords} )); then
|
||||||
|
keywords=( "${znt_history_keywords[@]}" )
|
||||||
|
fi
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
# How should be current element of the list drawn. Possible values: reverse,
|
# How should be current element of the list drawn. Possible values: reverse,
|
||||||
# underline. Default (without option set) is reverse
|
# underline.
|
||||||
# On Linux virtual terminal this will be enforced to reverse (because of poor
|
# On Linux virtual terminal this will be enforced to reverse (because of poor
|
||||||
# underline support on that terminal)
|
# underline support on that terminal). The same for screen/tmux.
|
||||||
# local active_text=underline
|
local active_text=reverse
|
||||||
|
|
||||||
# Colorize first number column and last path segment
|
# Colorize first number column and last path segment
|
||||||
# This doesn't cover scripts named "[0-9]## *", which should be very rare
|
# This doesn't cover scripts named "[0-9]## *", which should be very rare
|
||||||
@ -11,3 +11,36 @@
|
|||||||
local NLIST_COLORING_PATTERN="((#s) #[0-9]## |[[][^]]#](#e)|[^ 0-9/?\\\\][^/\\\\]#(#e)|[^ /\\\\]##[^0-9/\\\\ ]##[^/\\\\]#(#e))"
|
local NLIST_COLORING_PATTERN="((#s) #[0-9]## |[[][^]]#](#e)|[^ 0-9/?\\\\][^/\\\\]#(#e)|[^ /\\\\]##[^0-9/\\\\ ]##[^/\\\\]#(#e))"
|
||||||
local NLIST_COLORING_COLOR=$'\x1b[00;33m'
|
local NLIST_COLORING_COLOR=$'\x1b[00;33m'
|
||||||
local NLIST_COLORING_MATCH_MULTIPLE=1
|
local NLIST_COLORING_MATCH_MULTIPLE=1
|
||||||
|
|
||||||
|
# Search keywords, iterated with F2 or Ctrl-X or Ctrl-/
|
||||||
|
local -a keywords
|
||||||
|
keywords=( "vim" "git" "git commit" "firefox" "mplayer" )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Zshrc integration. All below variables can
|
||||||
|
# be set in zshrc and will have precedence
|
||||||
|
# over config files
|
||||||
|
#
|
||||||
|
|
||||||
|
# 1. znt_kill_active_text
|
||||||
|
active_text=${znt_kill_active_text:-$active_text}
|
||||||
|
|
||||||
|
# 2. znt_kill_nlist_coloring_pattern
|
||||||
|
NLIST_COLORING_PATTERN=${znt_kill_nlist_coloring_pattern:-$NLIST_COLORING_PATTERN}
|
||||||
|
|
||||||
|
# 3. znt_kill_nlist_coloring_color
|
||||||
|
NLIST_COLORING_COLOR=${znt_kill_nlist_coloring_color:-$NLIST_COLORING_COLOR}
|
||||||
|
|
||||||
|
# 4. znt_kill_nlist_coloring_match_multiple
|
||||||
|
NLIST_COLORING_MATCH_MULTIPLE=${znt_kill_nlist_coloring_match_multiple:-$NLIST_COLORING_MATCH_MULTIPLE}
|
||||||
|
|
||||||
|
# 5. znt_kill_keywords (array)
|
||||||
|
if (( ${+znt_kill_keywords} )); then
|
||||||
|
keywords=( "${znt_kill_keywords[@]}" )
|
||||||
|
fi
|
||||||
|
@ -1,3 +1,55 @@
|
|||||||
# Should the list (text, borders) be drawn in bold
|
# Should the list (text, borders) be drawn in bold
|
||||||
# Value 1 is the default
|
# Value 1 is the default
|
||||||
local bold=1
|
local bold=0
|
||||||
|
|
||||||
|
# Main color pair (foreground/background)
|
||||||
|
local colorpair="white/black"
|
||||||
|
|
||||||
|
# Should draw the border?
|
||||||
|
local border=1
|
||||||
|
|
||||||
|
# Combinations of colors to try out with Ctrl-T and Ctrl-G
|
||||||
|
# The last number is the bold option, 0 or 1
|
||||||
|
local -a themes
|
||||||
|
themes=( "white/black/1" "green/black/0" "green/black/1" "white/blue/0" "white/blue/1"
|
||||||
|
"magenta/black/0" "magenta/black/1" )
|
||||||
|
|
||||||
|
# Uncomment when using new (>5.2) Zsh version that supports 256 colors in zcurses
|
||||||
|
#themes=( "white/17/0" "10/17/1" "white/24/1" "white/22/0" "white/22/1" "white/25/0" "white/25/1"
|
||||||
|
# "white/59/0" "white/59/1" "white/60/0" "white/60/1" "white/61/0" "white/61/1" "black/65/0"
|
||||||
|
# "black/244/0" )
|
||||||
|
|
||||||
|
# When 1, pressing enter when in search mode will not
|
||||||
|
# only leave the mode, but also do selection and leave
|
||||||
|
# n-history
|
||||||
|
local NLIST_INSTANT_SELECT=0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Zshrc integration. All below variables can
|
||||||
|
# be set in zshrc and will have precedence
|
||||||
|
# over config files
|
||||||
|
#
|
||||||
|
|
||||||
|
# 1. znt_list_bold
|
||||||
|
bold=${znt_list_bold:-$bold}
|
||||||
|
|
||||||
|
# 2. znt_list_colorpair
|
||||||
|
colorpair=${znt_list_colorpair:-$colorpair}
|
||||||
|
|
||||||
|
# 3. znt_list_border
|
||||||
|
border=${znt_list_border:-$border}
|
||||||
|
|
||||||
|
# 4. znt_list_themes (array)
|
||||||
|
if (( ${+znt_list_themes} )); then
|
||||||
|
themes=( "${znt_list_themes[@]}" )
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 5. znt_list_instant_select
|
||||||
|
NLIST_INSTANT_SELECT=${znt_list_instant_select:-$NLIST_INSTANT_SELECT}
|
||||||
|
|
||||||
|
@ -1,5 +1,34 @@
|
|||||||
# How should be current element of the list drawn. Possible values: reverse,
|
# How should be current element of the list drawn. Possible values: reverse,
|
||||||
# underline. Default (without option set) is reverse
|
# underline.
|
||||||
# On Linux virtual terminal this will be enforced to reverse (because of poor
|
# On Linux virtual terminal this will be enforced to reverse (because of poor
|
||||||
# underline support on that terminal)
|
# underline support on that terminal). The same for screen/tmux.
|
||||||
# local active_text=underline
|
local active_text=reverse
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Zshrc integration. All below variables can
|
||||||
|
# be set in zshrc and will have precedence
|
||||||
|
# over config files
|
||||||
|
#
|
||||||
|
|
||||||
|
# 1. znt_options_active_text
|
||||||
|
active_text=${znt_options_active_text:-$active_text}
|
||||||
|
|
||||||
|
# 2. znt_options_nlist_coloring_pattern
|
||||||
|
NLIST_COLORING_PATTERN=${znt_options_nlist_coloring_pattern:-$NLIST_COLORING_PATTERN}
|
||||||
|
|
||||||
|
# 3. znt_options_nlist_coloring_color
|
||||||
|
NLIST_COLORING_COLOR=${znt_options_nlist_coloring_color:-$NLIST_COLORING_COLOR}
|
||||||
|
|
||||||
|
# 4. znt_options_nlist_coloring_match_multiple
|
||||||
|
NLIST_COLORING_MATCH_MULTIPLE=${znt_options_nlist_coloring_match_multiple:-$NLIST_COLORING_MATCH_MULTIPLE}
|
||||||
|
|
||||||
|
# 5. znt_options_keywords (array)
|
||||||
|
if (( ${+znt_options_keywords} )); then
|
||||||
|
keywords=( "${znt_options_keywords[@]}" )
|
||||||
|
fi
|
||||||
|
@ -1,5 +1,34 @@
|
|||||||
# How should be current element of the list drawn. Possible values: reverse,
|
# How should be current element of the list drawn. Possible values: reverse,
|
||||||
# underline. Default (without option set) is reverse
|
# underline.
|
||||||
# On Linux virtual terminal this will be enforced to reverse (because of poor
|
# On Linux virtual terminal this will be enforced to reverse (because of poor
|
||||||
# underline support on that terminal)
|
# underline support on that terminal). The same for screen/tmux.
|
||||||
# local active_text=underline
|
local active_text=reverse
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Zshrc integration. All below variables can
|
||||||
|
# be set in zshrc and will have precedence
|
||||||
|
# over config files
|
||||||
|
#
|
||||||
|
|
||||||
|
# 1. znt_panelize_active_text
|
||||||
|
active_text=${znt_panelize_active_text:-$active_text}
|
||||||
|
|
||||||
|
# 2. znt_panelize_nlist_coloring_pattern
|
||||||
|
NLIST_COLORING_PATTERN=${znt_panelize_nlist_coloring_pattern:-$NLIST_COLORING_PATTERN}
|
||||||
|
|
||||||
|
# 3. znt_panelize_nlist_coloring_color
|
||||||
|
NLIST_COLORING_COLOR=${znt_panelize_nlist_coloring_color:-$NLIST_COLORING_COLOR}
|
||||||
|
|
||||||
|
# 4. znt_panelize_nlist_coloring_match_multiple
|
||||||
|
NLIST_COLORING_MATCH_MULTIPLE=${znt_panelize_nlist_coloring_match_multiple:-$NLIST_COLORING_MATCH_MULTIPLE}
|
||||||
|
|
||||||
|
# 5. znt_panelize_keywords (array)
|
||||||
|
if (( ${+znt_panelize_keywords} )); then
|
||||||
|
keywords=( "${znt_panelize_keywords[@]}" )
|
||||||
|
fi
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# Zsh Navigation Tools
|
# Zsh Navigation Tools
|
||||||
|
|
||||||
http://imageshack.com/a/img633/7967/ps6rKR.png
|
https://raw.githubusercontent.com/psprint/zsh-navigation-tools/master/doc/img/n-history2.png
|
||||||
|
|
||||||
Set of tools like n-history – multi-word history searcher, n-cd – directory
|
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
|
bookmark manager, n-kill – htop like kill utility, and more. Based on
|
||||||
@ -32,6 +32,26 @@ to key combinations (no need for autoload when using Oh My Zsh):
|
|||||||
Oh My Zsh stores history into ~/.zsh_history. When you switch to OMZ you could
|
Oh My Zsh stores history into ~/.zsh_history. When you switch to OMZ you could
|
||||||
want to copy your previous data (from e.g. ~/.zhistory) into the new location.
|
want to copy your previous data (from e.g. ~/.zhistory) into the new location.
|
||||||
|
|
||||||
|
## News
|
||||||
|
|
||||||
|
* 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. 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 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)
|
||||||
|
|
||||||
|
* 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
|
||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
|
|
||||||
The tools are:
|
The tools are:
|
||||||
@ -60,6 +80,65 @@ cursors. Other keys are:
|
|||||||
- Ctrl-w (in incremental search) - delete whole word
|
- Ctrl-w (in incremental search) - delete whole word
|
||||||
- Ctrl-k (in incremental search) - delete whole line
|
- Ctrl-k (in incremental search) - delete whole line
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
`ZNT` has configuration files located in `~/.config/znt`. The files are:
|
||||||
|
|
||||||
|
```
|
||||||
|
n-aliases.conf
|
||||||
|
n-cd.conf
|
||||||
|
n-env.conf
|
||||||
|
n-functions.conf
|
||||||
|
n-history.conf
|
||||||
|
n-kill.conf
|
||||||
|
n-list.conf
|
||||||
|
n-options.conf
|
||||||
|
n-panelize.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
`n-list.conf` contains main configuration variables:
|
||||||
|
|
||||||
|
```zsh
|
||||||
|
# Should the list (text, borders) be drawn in bold
|
||||||
|
local bold=0
|
||||||
|
|
||||||
|
# Main color pair (foreground/background)
|
||||||
|
local colorpair="white/black"
|
||||||
|
|
||||||
|
# Should draw the border?
|
||||||
|
local border=1
|
||||||
|
|
||||||
|
# Combinations of colors to try out with Ctrl-T and Ctrl-G
|
||||||
|
# The last number is the bold option, 0 or 1
|
||||||
|
local -a themes
|
||||||
|
themes=( "white/black/1" "green/black/0" "green/black/1" "white/blue/0" "white/blue/1"
|
||||||
|
"magenta/black/0" "magenta/black/1" )
|
||||||
|
```
|
||||||
|
|
||||||
|
Read remaining configuration files to see what's in them. Nevertheless, configuration
|
||||||
|
can be also set from `zshrc`. There are `5` standard `zshrc` configuration variables:
|
||||||
|
|
||||||
|
```
|
||||||
|
znt_history_active_text - underline or reverse - how should be active element highlighted
|
||||||
|
znt_history_nlist_coloring_pattern - pattern that can be used to colorize elements
|
||||||
|
znt_history_nlist_coloring_color - color with which to colorize
|
||||||
|
znt_history_nlist_coloring_match_multiple - should multiple matches be colorized (0 or 1)
|
||||||
|
znt_history_keywords (array) - search keywords activated with `Ctrl-X`
|
||||||
|
```
|
||||||
|
|
||||||
|
Above variables will work for `n-history` tool. For other tools, change `_history_` to
|
||||||
|
e.g. `_cd_`, for the `n-cd` tool. The same works for all `8` tools.
|
||||||
|
|
||||||
|
Common configuration of the tools uses variables with `_list_` in them:
|
||||||
|
|
||||||
|
```
|
||||||
|
znt_list_bold - should draw text in bold (0 or 1)
|
||||||
|
znt_list_colorpair - main pair of colors to be used, e.g "green/black"
|
||||||
|
znt_list_border - should draw borders around windows (0 or 1)
|
||||||
|
znt_list_themes (array) - list of themes to try out with Ctrl-T, e.g. ( "white/black/1" "green/black/0" )
|
||||||
|
znt_list_instant_select - should pressing enter in search mode leave tool (0 or 1)
|
||||||
|
```
|
||||||
|
|
||||||
## Programming
|
## Programming
|
||||||
|
|
||||||
The function n-list is used as follows:
|
The function n-list is used as follows:
|
||||||
|
41
plugins/zsh-navigation-tools/_n-kill
Normal file
41
plugins/zsh-navigation-tools/_n-kill
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
#compdef n-kill
|
||||||
|
|
||||||
|
local context ret=1
|
||||||
|
|
||||||
|
typeset -a list linewords
|
||||||
|
typeset -aU words wordbits
|
||||||
|
local line word
|
||||||
|
integer cygwin=0
|
||||||
|
|
||||||
|
local IFS="
|
||||||
|
"
|
||||||
|
|
||||||
|
case "$(uname)" in
|
||||||
|
CYGWIN*) list=( `command ps -Wa` ); cygwin=1 ;;
|
||||||
|
*) list=( `command ps -o pid,uid,command -A` ) ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
shift list
|
||||||
|
|
||||||
|
IFS=" "
|
||||||
|
for line in "${list[@]}"; do
|
||||||
|
linewords=( $=line )
|
||||||
|
if [ "$cygwin" = "1" ]; then
|
||||||
|
linewords=( "${(@)linewords[8,-1]}" )
|
||||||
|
else
|
||||||
|
linewords=( "${(@)linewords[3,-1]}" )
|
||||||
|
fi
|
||||||
|
for word in "${linewords[@]}"; do
|
||||||
|
if [ "$cygwin" = "1" ]; then
|
||||||
|
wordbits=( "${(@s:\:)word}" )
|
||||||
|
else
|
||||||
|
wordbits=( "${(@s:/:)word}" )
|
||||||
|
fi
|
||||||
|
words+=( "${wordbits[@]}" )
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
_wanted bits expl "Processes' name bits" \
|
||||||
|
compadd "$@" -a - words && ret=0
|
||||||
|
|
||||||
|
return "$ret"
|
@ -16,8 +16,8 @@ local IFS="
|
|||||||
|
|
||||||
unset NLIST_COLORING_PATTERN
|
unset NLIST_COLORING_PATTERN
|
||||||
|
|
||||||
[ -f ~/.config/znt/n-list.conf ] && . ~/.config/znt/n-list.conf
|
[ -f ~/.config/znt/n-list.conf ] && builtin source ~/.config/znt/n-list.conf
|
||||||
[ -f ~/.config/znt/n-aliases.conf ] && . ~/.config/znt/n-aliases.conf
|
[ -f ~/.config/znt/n-aliases.conf ] && builtin source ~/.config/znt/n-aliases.conf
|
||||||
|
|
||||||
local list
|
local list
|
||||||
local selected
|
local selected
|
||||||
|
@ -16,8 +16,8 @@ local IFS="
|
|||||||
# Unset before configuration is read
|
# Unset before configuration is read
|
||||||
unset NLIST_COLORING_PATTERN
|
unset NLIST_COLORING_PATTERN
|
||||||
|
|
||||||
[ -f ~/.config/znt/n-list.conf ] && . ~/.config/znt/n-list.conf
|
[ -f ~/.config/znt/n-list.conf ] && builtin source ~/.config/znt/n-list.conf
|
||||||
[ -f ~/.config/znt/n-cd.conf ] && . ~/.config/znt/n-cd.conf
|
[ -f ~/.config/znt/n-cd.conf ] && builtin source ~/.config/znt/n-cd.conf
|
||||||
|
|
||||||
local list
|
local list
|
||||||
local selected
|
local selected
|
||||||
@ -53,14 +53,17 @@ if [ "$REPLY" -gt 0 ]; then
|
|||||||
|
|
||||||
(( NCD_DONT_PUSHD )) && setopt NO_AUTO_PUSHD
|
(( NCD_DONT_PUSHD )) && setopt NO_AUTO_PUSHD
|
||||||
cd "$selected"
|
cd "$selected"
|
||||||
|
local code=$?
|
||||||
(( NCD_DONT_PUSHD )) && setopt AUTO_PUSHD
|
(( NCD_DONT_PUSHD )) && setopt AUTO_PUSHD
|
||||||
|
|
||||||
|
if [ "$code" -eq "0" ]; then
|
||||||
# ZLE?
|
# ZLE?
|
||||||
if [ "${(t)CURSOR}" = "integer-local-special" ]; then
|
if [ "${(t)CURSOR}" = "integer-local-special" ]; then
|
||||||
zle -M "You have selected $selected"
|
zle -M "You have selected $selected"
|
||||||
else
|
else
|
||||||
echo "You have selected $selected"
|
echo "You have selected $selected"
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
[ "${(t)CURSOR}" = "integer-local-special" ] && zle redisplay
|
[ "${(t)CURSOR}" = "integer-local-special" ] && zle redisplay
|
||||||
fi
|
fi
|
||||||
|
@ -15,8 +15,8 @@ zmodload zsh/curses
|
|||||||
local IFS="
|
local IFS="
|
||||||
"
|
"
|
||||||
|
|
||||||
[ -f ~/.config/znt/n-list.conf ] && . ~/.config/znt/n-list.conf
|
[ -f ~/.config/znt/n-list.conf ] && builtin source ~/.config/znt/n-list.conf
|
||||||
[ -f ~/.config/znt/n-env.conf ] && . ~/.config/znt/n-env.conf
|
[ -f ~/.config/znt/n-env.conf ] && builtin source ~/.config/znt/n-env.conf
|
||||||
|
|
||||||
local list
|
local list
|
||||||
local selected
|
local selected
|
||||||
|
@ -16,8 +16,8 @@ local IFS="
|
|||||||
|
|
||||||
unset NLIST_COLORING_PATTERN
|
unset NLIST_COLORING_PATTERN
|
||||||
|
|
||||||
[ -f ~/.config/znt/n-list.conf ] && . ~/.config/znt/n-list.conf
|
[ -f ~/.config/znt/n-list.conf ] && builtin source ~/.config/znt/n-list.conf
|
||||||
[ -f ~/.config/znt/n-functions.conf ] && . ~/.config/znt/n-functions.conf
|
[ -f ~/.config/znt/n-functions.conf ] && builtin source ~/.config/znt/n-functions.conf
|
||||||
|
|
||||||
local list
|
local list
|
||||||
local selected
|
local selected
|
||||||
|
96
plugins/zsh-navigation-tools/n-help
Normal file
96
plugins/zsh-navigation-tools/n-help
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
autoload colors
|
||||||
|
colors
|
||||||
|
|
||||||
|
local h1="$fg_bold[cyan]"
|
||||||
|
local h2="$fg_bold[green]"
|
||||||
|
local h3="$fg_bold[blue]"
|
||||||
|
local h4="$fg_bold[yellow]"
|
||||||
|
local h5="$fg_bold[magenta]"
|
||||||
|
local rst="$reset_color"
|
||||||
|
|
||||||
|
LESS="-iRc" less <<<"
|
||||||
|
${h1}Key Bindings${rst}
|
||||||
|
|
||||||
|
${h2}H${rst}, ${h2}?${rst} (from n-history) - run n-help
|
||||||
|
${h2}Ctrl-A${rst} - rotate entered words (1+2+3 -> 3+1+2)
|
||||||
|
${h2}Ctrl-F${rst} - fix mode (approximate matching)
|
||||||
|
${h2}Ctrl-L${rst} - redraw of whole display
|
||||||
|
${h2}Ctrl-T${rst} - browse themes (next theme)
|
||||||
|
${h2}Ctrl-G${rst} - browse themes (previous theme)
|
||||||
|
${h2}Ctrl-U${rst} - half page up
|
||||||
|
${h2}Ctrl-D${rst} - half page down
|
||||||
|
${h2}Ctrl-P${rst} - previous element (also done with vim's k)
|
||||||
|
${h2}Ctrl-N${rst} - next element (also done with vim's j)
|
||||||
|
${h2}[${rst}, ${h2}]${rst} - jump directory bookmarks in n-cd and typical signals in n-kill
|
||||||
|
${h2}g, ${h2}G${rst} - beginning and end of the list
|
||||||
|
${h2}/${rst} - show incremental search
|
||||||
|
${h2}F3${rst} - show/hide incremental search
|
||||||
|
${h2}Esc${rst} - exit incremental search, clearing filter
|
||||||
|
${h2}Ctrl-W${rst} (in incremental search) - delete whole word
|
||||||
|
${h2}Ctrl-K${rst} (in incremental search) - delete whole line
|
||||||
|
${h2}Ctrl-O, ${h2}o${rst} - enter uniq mode (no duplicate lines)
|
||||||
|
${h2}Ctrl-E, ${h2}e${rst} - edit private history (when in private history view)
|
||||||
|
${h2}F1${rst} - (in n-history) - switch view
|
||||||
|
${h2}F2${rst}, ${h2}Ctrl-X${rst}, ${h2}Ctrl-/${rst} - search predefined keywords (defined in config files)
|
||||||
|
|
||||||
|
${h1}Configuration files${rst}
|
||||||
|
|
||||||
|
Location of the files is ${h3}~/.config/znt${rst}. Skeletons are copied there
|
||||||
|
when using ${h3}zsh-navigation-tools.plugin.zsh${rst} file (sourcing it or using
|
||||||
|
a plugin manager). There's a main config file ${h3}n-list.conf${rst} and files
|
||||||
|
for each tool.
|
||||||
|
|
||||||
|
To have a skeleton copied again into ${h3}~/.config/znt${rst}, delete it from
|
||||||
|
there and restart Zsh a few times (3-7 or so; there's a random check
|
||||||
|
that optimizes startup time).
|
||||||
|
|
||||||
|
${h1}Predefined search keywords${rst}
|
||||||
|
|
||||||
|
Following block of code in e.g. ${h3}~/.config/znt/n-history.conf${rst} defines
|
||||||
|
set of keywords that can be invoked (i.e. searched for) via ${h2}F2${rst}, ${h2}Ctrl-X${rst}
|
||||||
|
or ${h2}Ctrl-/${rst}:
|
||||||
|
|
||||||
|
${h4}# Search keywords, iterated with F2 or Ctrl-X or Ctrl-/${rst}
|
||||||
|
${h2}local${rst} -a keywords
|
||||||
|
keywords=( ${h2}\"git\" \"vim\" \"mplayer\"${rst} )
|
||||||
|
|
||||||
|
${h1}Search query rotation${rst}
|
||||||
|
|
||||||
|
When searching, after pressing ${h2}Ctrl-A${rst}, words 1 2 3 will become 3 1 2, etc.
|
||||||
|
This can be used to edit some not-last word.
|
||||||
|
|
||||||
|
${h1}Fix mode${rst}
|
||||||
|
|
||||||
|
Approximate matching - pressing ${h2}f${rst} or ${h2}Ctrl-F${rst} 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.
|
||||||
|
|
||||||
|
${h1}Color themes${rst}
|
||||||
|
|
||||||
|
Following block of code in ${h3}~/.config/znt/n-list.conf${rst} defines set of
|
||||||
|
themes that can be browsed with ${h2}Ctrl-T${rst} and ${h2}Ctrl-G${rst}:
|
||||||
|
|
||||||
|
${h4}# Combinations of colors to try out with Ctrl-T and Ctrl-G
|
||||||
|
# The last number is the bold option, 0 or 1${rst}
|
||||||
|
${h2}local${rst} -a themes
|
||||||
|
themes=( ${h2}\"white/black/1\" \"green/black/0\" \"green/black/1\"${rst}
|
||||||
|
${h2}\"white/blue/0\" \"white/blue/1\" \"magenta/black/0\"${rst}
|
||||||
|
${h2}\"magenta/black/1\"${rst} )
|
||||||
|
|
||||||
|
It's \"foreground/background/bold\". There's support for 256-color themes
|
||||||
|
for Zsh > 5.2, defined like e.g.:
|
||||||
|
|
||||||
|
themes=( ${h2}\"white/17/0\" \"10/17/1\" \"white/24/1\"${rst} )
|
||||||
|
|
||||||
|
i.e. with use of numbers, from 0 to 254.
|
||||||
|
|
||||||
|
${h1}Private history${rst}
|
||||||
|
|
||||||
|
N-history stores what's selected in its own history file. It can be
|
||||||
|
edited. Use ${h2}e${rst} or ${h2}Ctrl-E${rst} 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.
|
||||||
|
|
||||||
|
Private history is instantly shared among sessions.
|
||||||
|
"
|
@ -15,27 +15,323 @@ zmodload zsh/parameter
|
|||||||
local IFS="
|
local IFS="
|
||||||
"
|
"
|
||||||
|
|
||||||
unset NLIST_COLORING_PATTERN
|
# Variables to save list's state when switching views
|
||||||
|
# The views are: history and "most frequent history words"
|
||||||
|
local one_NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN
|
||||||
|
local one_NLIST_CURRENT_IDX
|
||||||
|
local one_NLIST_IS_SEARCH_MODE
|
||||||
|
local one_NLIST_SEARCH_BUFFER
|
||||||
|
local one_NLIST_TEXT_OFFSET
|
||||||
|
local one_NLIST_IS_UNIQ_MODE
|
||||||
|
local one_NLIST_IS_F_MODE
|
||||||
|
local one_NLIST_GREP_STRING
|
||||||
|
local one_NLIST_NONSELECTABLE_ELEMENTS
|
||||||
|
local one_NLIST_REMEMBER_STATE
|
||||||
|
local one_NLIST_ENABLED_EVENTS
|
||||||
|
|
||||||
[ -f ~/.config/znt/n-list.conf ] && . ~/.config/znt/n-list.conf
|
local two_NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN
|
||||||
[ -f ~/.config/znt/n-history.conf ] && . ~/.config/znt/n-history.conf
|
local two_NLIST_CURRENT_IDX
|
||||||
|
local two_NLIST_IS_SEARCH_MODE
|
||||||
|
local two_NLIST_SEARCH_BUFFER
|
||||||
|
local two_NLIST_TEXT_OFFSET
|
||||||
|
local two_NLIST_IS_UNIQ_MODE
|
||||||
|
local two_NLIST_IS_F_MODE
|
||||||
|
local two_NLIST_GREP_STRING
|
||||||
|
local two_NLIST_NONSELECTABLE_ELEMENTS
|
||||||
|
local two_NLIST_REMEMBER_STATE
|
||||||
|
local two_NLIST_ENABLED_EVENTS
|
||||||
|
|
||||||
|
local three_NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN
|
||||||
|
local three_NLIST_CURRENT_IDX
|
||||||
|
local three_NLIST_IS_SEARCH_MODE
|
||||||
|
local three_NLIST_SEARCH_BUFFER
|
||||||
|
local three_NLIST_TEXT_OFFSET
|
||||||
|
local three_NLIST_IS_UNIQ_MODE
|
||||||
|
local three_NLIST_IS_F_MODE
|
||||||
|
local three_NLIST_GREP_STRING
|
||||||
|
local three_NLIST_NONSELECTABLE_ELEMENTS
|
||||||
|
local three_NLIST_REMEMBER_STATE
|
||||||
|
local three_NLIST_ENABLED_EVENTS
|
||||||
|
|
||||||
|
# history view
|
||||||
|
integer active_view=0
|
||||||
|
|
||||||
|
# Lists are "0", "1", "2" - 1st, 2nd, 3rd
|
||||||
|
# Switching is done in cyclic manner
|
||||||
|
# i.e. 0 -> 1, 1 -> 2, 2 -> 0
|
||||||
|
_nhistory_switch_lists_states() {
|
||||||
|
# First argument is current, newly selected list, i.e. $active_view
|
||||||
|
# This implies that we are switching from previous view
|
||||||
|
|
||||||
|
if [ "$1" = "0" ]; then
|
||||||
|
# Switched to 1st list, save 3rd list's state
|
||||||
|
three_NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN=$NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN
|
||||||
|
three_NLIST_CURRENT_IDX=$NLIST_CURRENT_IDX
|
||||||
|
three_NLIST_IS_SEARCH_MODE=$NLIST_IS_SEARCH_MODE
|
||||||
|
three_NLIST_SEARCH_BUFFER=$NLIST_SEARCH_BUFFER
|
||||||
|
three_NLIST_TEXT_OFFSET=$NLIST_TEXT_OFFSET
|
||||||
|
three_NLIST_IS_UNIQ_MODE=$NLIST_IS_UNIQ_MODE
|
||||||
|
three_NLIST_IS_F_MODE=$NLIST_IS_F_MODE
|
||||||
|
three_NLIST_GREP_STRING=$NLIST_GREP_STRING
|
||||||
|
three_NLIST_NONSELECTABLE_ELEMENTS=( ${NLIST_NONSELECTABLE_ELEMENTS[@]} )
|
||||||
|
three_NLIST_REMEMBER_STATE=$NLIST_REMEMBER_STATE
|
||||||
|
three_NLIST_ENABLED_EVENTS=( ${NLIST_ENABLED_EVENTS[@]} )
|
||||||
|
|
||||||
|
# ..and restore 1st list's state
|
||||||
|
NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN=$one_NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN
|
||||||
|
NLIST_CURRENT_IDX=$one_NLIST_CURRENT_IDX
|
||||||
|
NLIST_IS_SEARCH_MODE=$one_NLIST_IS_SEARCH_MODE
|
||||||
|
NLIST_SEARCH_BUFFER=$one_NLIST_SEARCH_BUFFER
|
||||||
|
NLIST_TEXT_OFFSET=$one_NLIST_TEXT_OFFSET
|
||||||
|
NLIST_IS_UNIQ_MODE=$one_NLIST_IS_UNIQ_MODE
|
||||||
|
NLIST_IS_F_MODE=$one_NLIST_IS_F_MODE
|
||||||
|
NLIST_GREP_STRING=$one_NLIST_GREP_STRING
|
||||||
|
NLIST_NONSELECTABLE_ELEMENTS=( ${one_NLIST_NONSELECTABLE_ELEMENTS[@]} )
|
||||||
|
NLIST_REMEMBER_STATE=$one_NLIST_REMEMBER_STATE
|
||||||
|
NLIST_ENABLED_EVENTS=( ${one_NLIST_ENABLED_EVENTS[@]} )
|
||||||
|
elif [ "$1" = "1" ]; then
|
||||||
|
# Switched to 2nd list, save 1st list's state
|
||||||
|
one_NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN=$NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN
|
||||||
|
one_NLIST_CURRENT_IDX=$NLIST_CURRENT_IDX
|
||||||
|
one_NLIST_IS_SEARCH_MODE=$NLIST_IS_SEARCH_MODE
|
||||||
|
one_NLIST_SEARCH_BUFFER=$NLIST_SEARCH_BUFFER
|
||||||
|
one_NLIST_TEXT_OFFSET=$NLIST_TEXT_OFFSET
|
||||||
|
one_NLIST_IS_UNIQ_MODE=$NLIST_IS_UNIQ_MODE
|
||||||
|
one_NLIST_IS_F_MODE=$NLIST_IS_F_MODE
|
||||||
|
one_NLIST_GREP_STRING=$NLIST_GREP_STRING
|
||||||
|
one_NLIST_NONSELECTABLE_ELEMENTS=( ${NLIST_NONSELECTABLE_ELEMENTS[@]} )
|
||||||
|
one_NLIST_REMEMBER_STATE=$NLIST_REMEMBER_STATE
|
||||||
|
one_NLIST_ENABLED_EVENTS=( ${NLIST_ENABLED_EVENTS[@]} )
|
||||||
|
|
||||||
|
# ..and restore 2nd list's state
|
||||||
|
NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN=$two_NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN
|
||||||
|
NLIST_CURRENT_IDX=$two_NLIST_CURRENT_IDX
|
||||||
|
NLIST_IS_SEARCH_MODE=$two_NLIST_IS_SEARCH_MODE
|
||||||
|
NLIST_SEARCH_BUFFER=$two_NLIST_SEARCH_BUFFER
|
||||||
|
NLIST_TEXT_OFFSET=$two_NLIST_TEXT_OFFSET
|
||||||
|
NLIST_IS_UNIQ_MODE=$two_NLIST_IS_UNIQ_MODE
|
||||||
|
NLIST_IS_F_MODE=$two_NLIST_IS_F_MODE
|
||||||
|
NLIST_GREP_STRING=$two_NLIST_GREP_STRING
|
||||||
|
NLIST_NONSELECTABLE_ELEMENTS=( ${two_NLIST_NONSELECTABLE_ELEMENTS[@]} )
|
||||||
|
NLIST_REMEMBER_STATE=$two_NLIST_REMEMBER_STATE
|
||||||
|
NLIST_ENABLED_EVENTS=( ${two_NLIST_ENABLED_EVENTS[@]} )
|
||||||
|
elif [ "$1" = "2" ]; then
|
||||||
|
# Switched to 3rd list, save 2nd list's state
|
||||||
|
two_NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN=$NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN
|
||||||
|
two_NLIST_CURRENT_IDX=$NLIST_CURRENT_IDX
|
||||||
|
two_NLIST_IS_SEARCH_MODE=$NLIST_IS_SEARCH_MODE
|
||||||
|
two_NLIST_SEARCH_BUFFER=$NLIST_SEARCH_BUFFER
|
||||||
|
two_NLIST_TEXT_OFFSET=$NLIST_TEXT_OFFSET
|
||||||
|
two_NLIST_IS_UNIQ_MODE=$NLIST_IS_UNIQ_MODE
|
||||||
|
two_NLIST_IS_F_MODE=$NLIST_IS_F_MODE
|
||||||
|
two_NLIST_GREP_STRING=$NLIST_GREP_STRING
|
||||||
|
two_NLIST_NONSELECTABLE_ELEMENTS=( ${NLIST_NONSELECTABLE_ELEMENTS[@]} )
|
||||||
|
two_NLIST_REMEMBER_STATE=$NLIST_REMEMBER_STATE
|
||||||
|
two_NLIST_ENABLED_EVENTS=( ${NLIST_ENABLED_EVENTS[@]} )
|
||||||
|
|
||||||
|
# ..and restore 3rd list's state
|
||||||
|
NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN=$three_NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN
|
||||||
|
NLIST_CURRENT_IDX=$three_NLIST_CURRENT_IDX
|
||||||
|
NLIST_IS_SEARCH_MODE=$three_NLIST_IS_SEARCH_MODE
|
||||||
|
NLIST_SEARCH_BUFFER=$three_NLIST_SEARCH_BUFFER
|
||||||
|
NLIST_TEXT_OFFSET=$three_NLIST_TEXT_OFFSET
|
||||||
|
NLIST_IS_UNIQ_MODE=$three_NLIST_IS_UNIQ_MODE
|
||||||
|
NLIST_IS_F_MODE=$three_NLIST_IS_F_MODE
|
||||||
|
NLIST_GREP_STRING=$three_NLIST_GREP_STRING
|
||||||
|
NLIST_NONSELECTABLE_ELEMENTS=( ${three_NLIST_NONSELECTABLE_ELEMENTS[@]} )
|
||||||
|
NLIST_REMEMBER_STATE=$three_NLIST_REMEMBER_STATE
|
||||||
|
NLIST_ENABLED_EVENTS=( ${three_NLIST_ENABLED_EVENTS[@]} )
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
local most_frequent_db="$HOME/.config/znt/mostfrequent.db"
|
||||||
|
_nhistory_generate_most_frequent() {
|
||||||
|
local title=$'\x1b[00;31m'"Most frequent history words:"$'\x1b[00;00m\0'
|
||||||
|
|
||||||
|
typeset -A uniq
|
||||||
|
for k in "${historywords[@]}"; do
|
||||||
|
uniq[$k]=$(( ${uniq[$k]:-0} + 1 ))
|
||||||
|
done
|
||||||
|
vk=()
|
||||||
|
for k v in ${(kv)uniq}; do
|
||||||
|
vk+="$v"$'\t'"$k"
|
||||||
|
done
|
||||||
|
|
||||||
|
print -rl "$title" "${(On)vk[@]}" > "$most_frequent_db"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Load configuration
|
||||||
|
unset NLIST_COLORING_PATTERN
|
||||||
|
[ -f ~/.config/znt/n-list.conf ] && builtin source ~/.config/znt/n-list.conf
|
||||||
|
[ -f ~/.config/znt/n-history.conf ] && builtin source ~/.config/znt/n-history.conf
|
||||||
|
|
||||||
local list
|
local list
|
||||||
local selected
|
local selected
|
||||||
|
local private_history_db="$HOME/.config/znt/privhist.db"
|
||||||
NLIST_REMEMBER_STATE=0
|
|
||||||
|
|
||||||
list=( "$history[@]" )
|
|
||||||
list=( "${(@M)list:#(#i)*$1*}" )
|
|
||||||
|
|
||||||
if [ "$#list" -eq 0 ]; then
|
|
||||||
echo "No matching history entries"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
local NLIST_GREP_STRING="$1"
|
local NLIST_GREP_STRING="$1"
|
||||||
|
# 2 is: init once, then remember
|
||||||
|
local NLIST_REMEMBER_STATE=2
|
||||||
|
two_NLIST_REMEMBER_STATE=2
|
||||||
|
three_NLIST_REMEMBER_STATE=2
|
||||||
|
|
||||||
|
# Only Private history has EDIT
|
||||||
|
local -a NLIST_ENABLED_EVENTS
|
||||||
|
NLIST_ENABLED_EVENTS=( "F1" "HELP" )
|
||||||
|
two_NLIST_ENABLED_EVENTS=( "F1" "EDIT" "HELP" )
|
||||||
|
three_NLIST_ENABLED_EVENTS=( "F1" "HELP" )
|
||||||
|
|
||||||
|
# All view should attempt to replace new lines with \n
|
||||||
local NLIST_REPLACE_NEWLINES="1"
|
local NLIST_REPLACE_NEWLINES="1"
|
||||||
n-list "${list[@]}"
|
two_NLIST_REPLACE_NEWLINES="1"
|
||||||
|
three_NLIST_REPLACE_NEWLINES="1"
|
||||||
|
|
||||||
|
# Only second and third view has non-selectable first entry
|
||||||
|
local -a NLIST_NONSELECTABLE_ELEMENTS
|
||||||
|
NLIST_NONSELECTABLE_ELEMENTS=( )
|
||||||
|
two_NLIST_NONSELECTABLE_ELEMENTS=( 1 )
|
||||||
|
three_NLIST_NONSELECTABLE_ELEMENTS=( 1 )
|
||||||
|
|
||||||
|
while (( 1 )); do
|
||||||
|
|
||||||
|
#
|
||||||
|
# View 1 - history
|
||||||
|
#
|
||||||
|
if [ "$active_view" = "0" ]; then
|
||||||
|
list=( "$history[@]" )
|
||||||
|
list=( "${(@M)list:#(#i)*$NLIST_GREP_STRING*}" )
|
||||||
|
|
||||||
|
if [ "$#list" -eq 0 ]; then
|
||||||
|
echo "No matching history entries"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
n-list "${list[@]}"
|
||||||
|
|
||||||
|
# Selection or quit?
|
||||||
|
if [[ "$REPLY" = -(#c0,1)[0-9]## && ("$REPLY" -lt 0 || "$REPLY" -gt 0) ]]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
# View change?
|
||||||
|
if [ "$REPLY" = "F1" ]; then
|
||||||
|
# Target view: 2
|
||||||
|
active_view=1
|
||||||
|
_nhistory_switch_lists_states "1"
|
||||||
|
elif [ "$REPLY" = "HELP" ]; then
|
||||||
|
n-help
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# View 3 - most frequent words in history
|
||||||
|
#
|
||||||
|
elif [ "$active_view" = "2" ]; then
|
||||||
|
local -a dbfile
|
||||||
|
dbfile=( $most_frequent_db(Nm+1) )
|
||||||
|
|
||||||
|
# Compute most frequent history words
|
||||||
|
if [[ "${#NHISTORY_WORDS}" -eq "0" || "${#dbfile}" -ne "0" ]]; then
|
||||||
|
# Read the list if it's there
|
||||||
|
local -a list
|
||||||
|
list=()
|
||||||
|
[ -s "$most_frequent_db" ] && list=( ${(f)"$(<$most_frequent_db)"} )
|
||||||
|
|
||||||
|
# Will wait for the data?
|
||||||
|
local message=0
|
||||||
|
if [[ "${#list}" -eq 0 ]]; then
|
||||||
|
message=1
|
||||||
|
_nlist_alternate_screen 1
|
||||||
|
zcurses init
|
||||||
|
zcurses delwin info 2>/dev/null
|
||||||
|
zcurses addwin info "$term_height" "$term_width" 0 0
|
||||||
|
zcurses bg info white/black
|
||||||
|
zcurses string info "Computing most frequent history words..."$'\n'
|
||||||
|
zcurses string info "(This is done once per day, from now on transparently)"$'\n'
|
||||||
|
zcurses refresh info
|
||||||
|
sleep 3
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Start periodic list regeneration?
|
||||||
|
if [[ "${#list}" -eq 0 || "${#dbfile}" -ne "0" ]]; then
|
||||||
|
# Mark the file with current time, to prevent double
|
||||||
|
# regeneration (on quick double change of view)
|
||||||
|
print >> "$most_frequent_db"
|
||||||
|
(_nhistory_generate_most_frequent &) &> /dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Ensure we got the list, wait for it if needed
|
||||||
|
while [[ "${#list}" -eq 0 ]]; do
|
||||||
|
zcurses string info "."
|
||||||
|
zcurses refresh info
|
||||||
|
LANG=C sleep 0.5
|
||||||
|
[ -s "$most_frequent_db" ] && list=( ${(f)"$(<$most_frequent_db)"} )
|
||||||
|
done
|
||||||
|
|
||||||
|
NHISTORY_WORDS=( "${list[@]}" )
|
||||||
|
|
||||||
|
if [ "$message" -eq "1" ]; then
|
||||||
|
zcurses delwin info 2>/dev/null
|
||||||
|
zcurses refresh
|
||||||
|
zcurses end
|
||||||
|
_nlist_alternate_screen 0
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# Reuse most frequent history words
|
||||||
|
local -a list
|
||||||
|
list=( "${NHISTORY_WORDS[@]}" )
|
||||||
|
fi
|
||||||
|
|
||||||
|
n-list "${list[@]}"
|
||||||
|
|
||||||
|
if [ "$REPLY" = "F1" ]; then
|
||||||
|
# Target view: 1
|
||||||
|
active_view=0
|
||||||
|
_nhistory_switch_lists_states "0"
|
||||||
|
elif [[ "$REPLY" = -(#c0,1)[0-9]## && "$REPLY" -lt 0 ]]; then
|
||||||
|
break
|
||||||
|
elif [[ "$REPLY" = -(#c0,1)[0-9]## && "$REPLY" -gt 0 ]]; then
|
||||||
|
local word="${reply[REPLY]#(#s) #[0-9]##$'\t'}"
|
||||||
|
one_NLIST_SEARCH_BUFFER="$word"
|
||||||
|
one_NLIST_SEARCH_BUFFER="${one_NLIST_SEARCH_BUFFER## ##}"
|
||||||
|
|
||||||
|
# Target view: 1
|
||||||
|
active_view=0
|
||||||
|
_nhistory_switch_lists_states "0"
|
||||||
|
elif [ "$REPLY" = "HELP" ]; then
|
||||||
|
n-help
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# View 2 - private history
|
||||||
|
#
|
||||||
|
elif [ "$active_view" = "1" ]; then
|
||||||
|
if [ -s "$private_history_db" ]; then
|
||||||
|
local title=$'\x1b[00;32m'"Private history:"$'\x1b[00;00m\0'
|
||||||
|
() { fc -ap -R "$private_history_db"; list=( "$title" ${history[@]} ) }
|
||||||
|
else
|
||||||
|
list=( "Private history - history entries selected via this tool will be put here" )
|
||||||
|
fi
|
||||||
|
|
||||||
|
n-list "${list[@]}"
|
||||||
|
|
||||||
|
# Selection or quit?
|
||||||
|
if [[ "$REPLY" = -(#c0,1)[0-9]## && ("$REPLY" -lt 0 || "$REPLY" -gt 0) ]]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
# View change?
|
||||||
|
if [ "$REPLY" = "F1" ]; then
|
||||||
|
# Target view: 3
|
||||||
|
active_view=2
|
||||||
|
_nhistory_switch_lists_states "2"
|
||||||
|
# Edit of the history?
|
||||||
|
elif [ "$REPLY" = "EDIT" ]; then
|
||||||
|
"${EDITOR:-vim}" "$private_history_db"
|
||||||
|
elif [ "$REPLY" = "HELP" ]; then
|
||||||
|
n-help
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
if [ "$REPLY" -gt 0 ]; then
|
if [ "$REPLY" -gt 0 ]; then
|
||||||
selected="$reply[REPLY]"
|
selected="$reply[REPLY]"
|
||||||
@ -43,7 +339,12 @@ if [ "$REPLY" -gt 0 ]; then
|
|||||||
if [ "${(t)CURSOR}" = "integer-local-special" ]; then
|
if [ "${(t)CURSOR}" = "integer-local-special" ]; then
|
||||||
zle redisplay
|
zle redisplay
|
||||||
zle kill-buffer
|
zle kill-buffer
|
||||||
zle -U "$selected"
|
LBUFFER+="$selected"
|
||||||
|
|
||||||
|
# Append to private history
|
||||||
|
local newline=$'\n'
|
||||||
|
selected="${selected//$newline/\\$newline}"
|
||||||
|
[ "$active_view" = "0" ] && print -r "$selected" >> "$private_history_db"
|
||||||
else
|
else
|
||||||
print -zr "$selected"
|
print -zr "$selected"
|
||||||
fi
|
fi
|
||||||
|
@ -13,8 +13,8 @@ zmodload zsh/curses
|
|||||||
local IFS="
|
local IFS="
|
||||||
"
|
"
|
||||||
|
|
||||||
[ -f ~/.config/znt/n-list.conf ] && . ~/.config/znt/n-list.conf
|
[ -f ~/.config/znt/n-list.conf ] && builtin source ~/.config/znt/n-list.conf
|
||||||
[ -f ~/.config/znt/n-kill.conf ] && . ~/.config/znt/n-kill.conf
|
[ -f ~/.config/znt/n-kill.conf ] && builtin source ~/.config/znt/n-kill.conf
|
||||||
|
|
||||||
typeset -A signals
|
typeset -A signals
|
||||||
signals=(
|
signals=(
|
||||||
|
@ -29,7 +29,7 @@ _nlist_exit() {
|
|||||||
setopt localoptions
|
setopt localoptions
|
||||||
setopt extendedglob
|
setopt extendedglob
|
||||||
|
|
||||||
[[ "$REPLY" = -(#c0,1)[0-9]## ]] || REPLY="-1"
|
[[ "$REPLY" = -(#c0,1)[0-9]## || "$REPLY" = F<-> || "$REPLY" = "EDIT" || "$REPLY" = "HELP" ]] || REPLY="-1"
|
||||||
zcurses 2>/dev/null delwin inner
|
zcurses 2>/dev/null delwin inner
|
||||||
zcurses 2>/dev/null delwin main
|
zcurses 2>/dev/null delwin main
|
||||||
zcurses 2>/dev/null refresh
|
zcurses 2>/dev/null refresh
|
||||||
@ -167,6 +167,26 @@ integer prev_uniq_mode=0
|
|||||||
integer prev_start_idx=-1
|
integer prev_start_idx=-1
|
||||||
local MBEGIN MEND MATCH mbegin mend match
|
local MBEGIN MEND MATCH mbegin mend match
|
||||||
|
|
||||||
|
# Iteration over predefined keywords
|
||||||
|
integer curkeyword nkeywords
|
||||||
|
local keywordisfresh="0"
|
||||||
|
if [[ "${(t)keywords}" != *array* ]]; then
|
||||||
|
local -a keywords
|
||||||
|
keywords=()
|
||||||
|
fi
|
||||||
|
curkeyword=0
|
||||||
|
nkeywords=${#keywords}
|
||||||
|
|
||||||
|
# Iteration over themes
|
||||||
|
integer curtheme nthemes
|
||||||
|
local themeisfresh="0"
|
||||||
|
if [[ "${(t)themes}" != *array* ]]; then
|
||||||
|
local -a themes
|
||||||
|
themes=()
|
||||||
|
fi
|
||||||
|
curtheme=0
|
||||||
|
nthemes=${#themes}
|
||||||
|
|
||||||
# Ability to remember the list between calls
|
# Ability to remember the list between calls
|
||||||
if [[ -z "$NLIST_REMEMBER_STATE" || "$NLIST_REMEMBER_STATE" -eq 0 || "$NLIST_REMEMBER_STATE" -eq 2 ]]; then
|
if [[ -z "$NLIST_REMEMBER_STATE" || "$NLIST_REMEMBER_STATE" -eq 0 || "$NLIST_REMEMBER_STATE" -eq 2 ]]; then
|
||||||
NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN=1
|
NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN=1
|
||||||
@ -175,6 +195,7 @@ if [[ -z "$NLIST_REMEMBER_STATE" || "$NLIST_REMEMBER_STATE" -eq 0 || "$NLIST_REM
|
|||||||
NLIST_SEARCH_BUFFER=""
|
NLIST_SEARCH_BUFFER=""
|
||||||
NLIST_TEXT_OFFSET=0
|
NLIST_TEXT_OFFSET=0
|
||||||
NLIST_IS_UNIQ_MODE=0
|
NLIST_IS_UNIQ_MODE=0
|
||||||
|
NLIST_IS_F_MODE=0
|
||||||
|
|
||||||
# Zero - because it isn't known, unless we
|
# Zero - because it isn't known, unless we
|
||||||
# confirm that first element is selectable
|
# confirm that first element is selectable
|
||||||
@ -207,12 +228,19 @@ zcurses delwin main 2>/dev/null
|
|||||||
zcurses delwin inner 2>/dev/null
|
zcurses delwin inner 2>/dev/null
|
||||||
zcurses addwin main "$term_height" "$term_width" 0 0
|
zcurses addwin main "$term_height" "$term_width" 0 0
|
||||||
zcurses addwin inner "$inner_height" "$inner_width" 1 2
|
zcurses addwin inner "$inner_height" "$inner_width" 1 2
|
||||||
zcurses bg main white/black
|
# From n-list.conf
|
||||||
zcurses bg inner white/black
|
[ "$colorpair" = "" ] && colorpair="white/black"
|
||||||
|
[ "$border" = "0" ] || border="1"
|
||||||
|
local background="${colorpair#*/}"
|
||||||
|
local backuptheme="$colorpair/$bold"
|
||||||
|
zcurses bg main "$colorpair"
|
||||||
|
zcurses bg inner "$colorpair"
|
||||||
if [ "$NLIST_IS_SEARCH_MODE" -ne 1 ]; then
|
if [ "$NLIST_IS_SEARCH_MODE" -ne 1 ]; then
|
||||||
_nlist_cursor_visibility 0
|
_nlist_cursor_visibility 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
zcurses refresh
|
||||||
|
|
||||||
#
|
#
|
||||||
# Listening for input
|
# Listening for input
|
||||||
#
|
#
|
||||||
@ -237,9 +265,12 @@ while (( 1 )); do
|
|||||||
# Do searching (filtering with string)
|
# Do searching (filtering with string)
|
||||||
if [ -n "$NLIST_SEARCH_BUFFER" ]; then
|
if [ -n "$NLIST_SEARCH_BUFFER" ]; then
|
||||||
# Compute new list?
|
# Compute new list?
|
||||||
if [[ "$NLIST_SEARCH_BUFFER" != "$prev_search_buffer" || "$NLIST_IS_UNIQ_MODE" -ne "$prev_uniq_mode" ]]; then
|
if [[ "$NLIST_SEARCH_BUFFER" != "$prev_search_buffer" || "$NLIST_IS_UNIQ_MODE" -ne "$prev_uniq_mode"
|
||||||
|
|| "$NLIST_IS_F_MODE" -ne "$prev_f_mode" ]]
|
||||||
|
then
|
||||||
prev_search_buffer="$NLIST_SEARCH_BUFFER"
|
prev_search_buffer="$NLIST_SEARCH_BUFFER"
|
||||||
prev_uniq_mode="$NLIST_IS_UNIQ_MODE"
|
prev_uniq_mode="$NLIST_IS_UNIQ_MODE"
|
||||||
|
prev_f_mode="$NLIST_IS_F_MODE"
|
||||||
# regenerating list -> regenerating disp_list
|
# regenerating list -> regenerating disp_list
|
||||||
prev_start_idx=-1
|
prev_start_idx=-1
|
||||||
|
|
||||||
@ -251,7 +282,9 @@ while (( 1 )); do
|
|||||||
|
|
||||||
# Remove non-selectable elements
|
# Remove non-selectable elements
|
||||||
[ "$#NLIST_NONSELECTABLE_ELEMENTS" -gt 0 ] && for i in "${(nO)NLIST_NONSELECTABLE_ELEMENTS[@]}"; do
|
[ "$#NLIST_NONSELECTABLE_ELEMENTS" -gt 0 ] && for i in "${(nO)NLIST_NONSELECTABLE_ELEMENTS[@]}"; do
|
||||||
|
if [[ "$i" = <-> ]]; then
|
||||||
list[$i]=()
|
list[$i]=()
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# Remove duplicates
|
# Remove duplicates
|
||||||
@ -266,13 +299,22 @@ while (( 1 )); do
|
|||||||
local search_pattern=""
|
local search_pattern=""
|
||||||
local colsearch_pattern=""
|
local colsearch_pattern=""
|
||||||
if [ -n "$search_buffer" ]; then
|
if [ -n "$search_buffer" ]; then
|
||||||
|
# The repeat will make the matching work on a fresh heap
|
||||||
|
repeat 1; do
|
||||||
|
if [ "$NLIST_IS_F_MODE" -eq "1" ]; then
|
||||||
|
search_pattern="${search_buffer// ##/*~^(#a1)*}"
|
||||||
|
colsearch_pattern="${search_buffer// ##/|(#a1)}"
|
||||||
|
list=( "${(@M)list:#(#ia1)*$~search_pattern*}" )
|
||||||
|
elif [ "$NLIST_IS_F_MODE" -eq "2" ]; then
|
||||||
|
search_pattern="${search_buffer// ##/*~^(#a2)*}"
|
||||||
|
colsearch_pattern="${search_buffer// ##/|(#a2)}"
|
||||||
|
list=( "${(@M)list:#(#ia2)*$~search_pattern*}" )
|
||||||
|
else
|
||||||
# Patterns will be *foo*~^*bar* and (foo|bar)
|
# Patterns will be *foo*~^*bar* and (foo|bar)
|
||||||
search_pattern="${search_buffer// ##/*~^*}"
|
search_pattern="${search_buffer// ##/*~^*}"
|
||||||
colsearch_pattern="${search_buffer// ##/|}"
|
colsearch_pattern="${search_buffer// ##/|}"
|
||||||
|
|
||||||
# The repeat will make the matching work on a fresh heap
|
|
||||||
repeat 1; do
|
|
||||||
list=( "${(@M)list:#(#i)*$~search_pattern*}" )
|
list=( "${(@M)list:#(#i)*$~search_pattern*}" )
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
last_element="$#list"
|
last_element="$#list"
|
||||||
@ -295,7 +337,13 @@ while (( 1 )); do
|
|||||||
local red=$'\x1b[00;31m' reset=$'\x1b[00;00m'
|
local red=$'\x1b[00;31m' reset=$'\x1b[00;00m'
|
||||||
# The repeat will make the matching work on a fresh heap
|
# The repeat will make the matching work on a fresh heap
|
||||||
repeat 1; do
|
repeat 1; do
|
||||||
|
if [ "$NLIST_IS_F_MODE" -eq "1" ]; then
|
||||||
|
disp_list=( "${(@)disp_list//(#mia1)($~colsearch_pattern)/$red${MATCH}$reset}" )
|
||||||
|
elif [ "$NLIST_IS_F_MODE" -eq "2" ]; then
|
||||||
|
disp_list=( "${(@)disp_list//(#mia2)($~colsearch_pattern)/$red${MATCH}$reset}" )
|
||||||
|
else
|
||||||
disp_list=( "${(@)disp_list//(#mi)($~colsearch_pattern)/$red${MATCH}$reset}" )
|
disp_list=( "${(@)disp_list//(#mi)($~colsearch_pattern)/$red${MATCH}$reset}" )
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -304,6 +352,7 @@ while (( 1 )); do
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Output colored list
|
# Output colored list
|
||||||
|
zcurses clear inner
|
||||||
n-list-draw "$(( (NLIST_CURRENT_IDX-1) % page_height + 1 ))" \
|
n-list-draw "$(( (NLIST_CURRENT_IDX-1) % page_height + 1 ))" \
|
||||||
"$page_height" "$page_width" 0 0 "$NLIST_TEXT_OFFSET" inner \
|
"$page_height" "$page_width" 0 0 "$NLIST_TEXT_OFFSET" inner \
|
||||||
"$disp_list[@]"
|
"$disp_list[@]"
|
||||||
@ -327,7 +376,9 @@ while (( 1 )); do
|
|||||||
# Remove non-selectable elements only when in uniq mode
|
# Remove non-selectable elements only when in uniq mode
|
||||||
[ "$NLIST_IS_UNIQ_MODE" -eq 1 ] && [ "$#NLIST_NONSELECTABLE_ELEMENTS" -gt 0 ] &&
|
[ "$NLIST_IS_UNIQ_MODE" -eq 1 ] && [ "$#NLIST_NONSELECTABLE_ELEMENTS" -gt 0 ] &&
|
||||||
for i in "${(nO)NLIST_NONSELECTABLE_ELEMENTS[@]}"; do
|
for i in "${(nO)NLIST_NONSELECTABLE_ELEMENTS[@]}"; do
|
||||||
|
if [[ "$i" = <-> ]]; then
|
||||||
list[$i]=()
|
list[$i]=()
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# Remove duplicates when in uniq mode
|
# Remove duplicates when in uniq mode
|
||||||
@ -355,29 +406,46 @@ while (( 1 )); do
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Output the list
|
# Output the list
|
||||||
|
zcurses clear inner
|
||||||
n-list-draw "$(( (NLIST_CURRENT_IDX-1) % page_height + 1 ))" \
|
n-list-draw "$(( (NLIST_CURRENT_IDX-1) % page_height + 1 ))" \
|
||||||
"$page_height" "$page_width" 0 0 "$NLIST_TEXT_OFFSET" inner \
|
"$page_height" "$page_width" 0 0 "$NLIST_TEXT_OFFSET" inner \
|
||||||
"$disp_list[@]"
|
"$disp_list[@]"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local status_msg_strlen
|
local status_msg_strlen
|
||||||
if [ "$NLIST_IS_SEARCH_MODE" = "1" ]; then
|
local keywordmsg=""
|
||||||
local _txt2=""
|
if [ "$keywordisfresh" = "1" ]; then
|
||||||
[ "$NLIST_IS_UNIQ_MODE" -eq 1 ] && _txt2="[-UNIQ-] "
|
keywordmsg="($curkeyword/$nkeywords) "
|
||||||
_nlist_status_msg "${_txt2}Filtering with: ${NLIST_SEARCH_BUFFER// /+}"
|
keywordisfresh="0"
|
||||||
elif [[ ${NLIST_NONSELECTABLE_ELEMENTS[(r)$NLIST_CURRENT_IDX]} != $NLIST_CURRENT_IDX ||
|
|
||||||
-n "$NLIST_SEARCH_BUFFER" || "$NLIST_IS_UNIQ_MODE" -eq 1 ]]; then
|
|
||||||
local _txt="" _txt2=""
|
|
||||||
[ -n "$NLIST_GREP_STRING" ] && _txt=" [$NLIST_GREP_STRING]"
|
|
||||||
[ "$NLIST_IS_UNIQ_MODE" -eq 1 ] && _txt2="[-UNIQ-] "
|
|
||||||
_nlist_status_msg "${_txt2}Current #$NLIST_USER_CURRENT_IDX (of #$NLIST_USER_LAST_ELEMENT entries)$_txt"
|
|
||||||
else
|
|
||||||
_nlist_status_msg ""
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
zcurses border main
|
local thememsg=""
|
||||||
|
if [ "$themeisfresh" = "1" ]; then
|
||||||
|
local theme="$backuptheme"
|
||||||
|
[ "$curtheme" -gt 0 ] && theme="${themes[curtheme]}"
|
||||||
|
thememsg="($curtheme/$nthemes $theme) "
|
||||||
|
themeisfresh="0"
|
||||||
|
fi
|
||||||
|
|
||||||
local top_msg="${(C)ZSH_NAME} $ZSH_VERSION, shell level $SHLVL, $USER"
|
local _txt2="" _txt3=""
|
||||||
|
[ "$NLIST_IS_UNIQ_MODE" -eq 1 ] && _txt2="[-UNIQ-] "
|
||||||
|
[ "$NLIST_IS_F_MODE" -eq 1 ] && _txt3="[-FIX-] "
|
||||||
|
[ "$NLIST_IS_F_MODE" -eq 2 ] && _txt3="[-FIX2-] "
|
||||||
|
|
||||||
|
if [ "$NLIST_IS_SEARCH_MODE" = "1" ]; then
|
||||||
|
_nlist_status_msg "${_txt2}${_txt3}${keywordmsg}${thememsg}Filtering with: ${NLIST_SEARCH_BUFFER// /+}"
|
||||||
|
elif [[ ${NLIST_NONSELECTABLE_ELEMENTS[(r)$NLIST_CURRENT_IDX]} != $NLIST_CURRENT_IDX ||
|
||||||
|
-n "$NLIST_SEARCH_BUFFER" || "$NLIST_IS_UNIQ_MODE" -eq 1 ]]; then
|
||||||
|
local _txt=""
|
||||||
|
[ -n "$NLIST_GREP_STRING" ] && _txt=" [$NLIST_GREP_STRING]"
|
||||||
|
_nlist_status_msg "${_txt2}${_txt3}${keywordmsg}${thememsg}Current #$NLIST_USER_CURRENT_IDX (of #$NLIST_USER_LAST_ELEMENT entries)$_txt"
|
||||||
|
else
|
||||||
|
_nlist_status_msg "${keywordmsg}${thememsg}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ "$border" = "1" ] && zcurses border main
|
||||||
|
|
||||||
|
local top_msg=" F1-change view, ${(C)ZSH_NAME} $ZSH_VERSION, shell level $SHLVL "
|
||||||
zcurses move main 0 $(( term_width / 2 - $#top_msg / 2 ))
|
zcurses move main 0 $(( term_width / 2 - $#top_msg / 2 ))
|
||||||
zcurses string main $top_msg
|
zcurses string main $top_msg
|
||||||
|
|
||||||
@ -400,7 +468,7 @@ while (( 1 )); do
|
|||||||
n-list-input "$NLIST_CURRENT_IDX" "$NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN" \
|
n-list-input "$NLIST_CURRENT_IDX" "$NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN" \
|
||||||
"$page_height" "$page_width" "$last_element" "$NLIST_TEXT_OFFSET" \
|
"$page_height" "$page_width" "$last_element" "$NLIST_TEXT_OFFSET" \
|
||||||
"$final_key" "$NLIST_IS_SEARCH_MODE" "$NLIST_SEARCH_BUFFER" \
|
"$final_key" "$NLIST_IS_SEARCH_MODE" "$NLIST_SEARCH_BUFFER" \
|
||||||
"$NLIST_IS_UNIQ_MODE"
|
"$NLIST_IS_UNIQ_MODE" "$NLIST_IS_F_MODE"
|
||||||
|
|
||||||
selection="$reply[1]"
|
selection="$reply[1]"
|
||||||
action="$reply[2]"
|
action="$reply[2]"
|
||||||
@ -410,8 +478,11 @@ while (( 1 )); do
|
|||||||
NLIST_IS_SEARCH_MODE="$reply[6]"
|
NLIST_IS_SEARCH_MODE="$reply[6]"
|
||||||
NLIST_SEARCH_BUFFER="$reply[7]"
|
NLIST_SEARCH_BUFFER="$reply[7]"
|
||||||
NLIST_IS_UNIQ_MODE="$reply[8]"
|
NLIST_IS_UNIQ_MODE="$reply[8]"
|
||||||
|
NLIST_IS_F_MODE="$reply[9]"
|
||||||
|
|
||||||
if [ "$action" = "SELECT" ]; then
|
if [ -z "$action" ]; then
|
||||||
|
continue
|
||||||
|
elif [ "$action" = "SELECT" ]; then
|
||||||
REPLY="$selection"
|
REPLY="$selection"
|
||||||
reply=( "$list[@]" )
|
reply=( "$list[@]" )
|
||||||
break
|
break
|
||||||
@ -422,6 +493,18 @@ while (( 1 )); do
|
|||||||
elif [ "$action" = "REDRAW" ]; then
|
elif [ "$action" = "REDRAW" ]; then
|
||||||
zcurses clear main redraw
|
zcurses clear main redraw
|
||||||
zcurses clear inner redraw
|
zcurses clear inner redraw
|
||||||
|
elif [[ "$action" = F<-> ]]; then
|
||||||
|
REPLY="$action"
|
||||||
|
reply=( "$list[@]" )
|
||||||
|
break
|
||||||
|
elif [[ "$action" = "EDIT" ]]; then
|
||||||
|
REPLY="EDIT"
|
||||||
|
reply=( "$list[@]" )
|
||||||
|
break
|
||||||
|
elif [[ "$action" = "HELP" ]]; then
|
||||||
|
REPLY="HELP"
|
||||||
|
reply=( "$list[@]" )
|
||||||
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
@ -79,9 +79,9 @@ _nlist_print_with_ansi() {
|
|||||||
|
|
||||||
if (( no_match == 0 )); then
|
if (( no_match == 0 )); then
|
||||||
if (( col >= 30 && col <= 37 )); then
|
if (( col >= 30 && col <= 37 )); then
|
||||||
zcurses attr "$win" $c[col-29]/black
|
zcurses attr "$win" $c[col-29]/"$background"
|
||||||
elif [[ "$col" -eq 0 ]]; then
|
elif [[ "$col" -eq 0 ]]; then
|
||||||
zcurses attr "$win" white/black
|
zcurses attr "$win" "$colorpair"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@ -97,17 +97,19 @@ local win="$7"
|
|||||||
shift 7
|
shift 7
|
||||||
integer max_text_len=page_width-x_offset
|
integer max_text_len=page_width-x_offset
|
||||||
|
|
||||||
[ "$bold" = "0" ] && bold="" || bold="+bold"
|
[[ "$bold" = "0" || "$bold" = "-bold" ]] && bold="-bold" || bold="+bold"
|
||||||
[[ "$active_text" = "underline" || "$active_text" = "reverse" ]] || local active_text="reverse"
|
[[ "$active_text" = "underline" || "$active_text" = "reverse" ]] || local active_text="reverse"
|
||||||
# With Linux terminal underline won't work properly
|
# Linux has ncv 18, screen* has ncv 3 - underline won't work properly
|
||||||
[ "$TERM" = "linux" ] && active_text="reverse"
|
(( ${terminfo[ncv]:-0} & 2 )) && active_text="reverse"
|
||||||
|
# FreeBSD uses TERM=xterm for newcons but doesn't actually support underline
|
||||||
|
[[ "$TERM" = "xterm" && -z "$DISPLAY" ]] && active_text="reverse"
|
||||||
|
|
||||||
integer max_idx=page_height
|
integer max_idx=page_height
|
||||||
integer end_idx=max_idx
|
integer end_idx=max_idx
|
||||||
[ "$end_idx" -gt "$#" ] && end_idx="$#"
|
[ "$end_idx" -gt "$#" ] && end_idx="$#"
|
||||||
integer y=y_offset
|
integer y=y_offset
|
||||||
|
|
||||||
zcurses attr "$win" $bold white/black
|
zcurses attr "$win" "$bold" "$colorpair"
|
||||||
|
|
||||||
integer i text_len
|
integer i text_len
|
||||||
local text
|
local text
|
||||||
|
@ -14,6 +14,52 @@ _nlist_compute_first_to_show_idx() {
|
|||||||
from_what_idx_list_is_shown=0+((current_idx-1)/page_height)*page_height+1
|
from_what_idx_list_is_shown=0+((current_idx-1)/page_height)*page_height+1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_nlist_update_from_keywords() {
|
||||||
|
keywordisfresh="1"
|
||||||
|
if [ "$nkeywords" -gt 0 ]; then
|
||||||
|
curkeyword=$(( (curkeyword+1) % (nkeywords+1) ))
|
||||||
|
if [ "$curkeyword" -eq "0" ]; then
|
||||||
|
buffer=""
|
||||||
|
else
|
||||||
|
buffer="${keywords[curkeyword]}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
_nlist_iterate_theme() {
|
||||||
|
themeisfresh="1"
|
||||||
|
if [ "$1" = "1" ]; then
|
||||||
|
curtheme=$(( (curtheme+1) % (nthemes+1) ))
|
||||||
|
else
|
||||||
|
curtheme=curtheme-1
|
||||||
|
[ "$curtheme" -lt 0 ] && curtheme=nthemes
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$nthemes" -gt 0 ]; then
|
||||||
|
local theme=${themes[curtheme]}
|
||||||
|
[ "$curtheme" -eq "0" ] && theme="$backuptheme"
|
||||||
|
|
||||||
|
colorpair="${theme%/*}"
|
||||||
|
bold="${theme##*/}"
|
||||||
|
background="${colorpair#*/}"
|
||||||
|
zcurses bg main "$colorpair"
|
||||||
|
zcurses bg inner "$colorpair"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
_nlist_rotate_buffer() {
|
||||||
|
setopt localoptions noglob
|
||||||
|
|
||||||
|
local -a words
|
||||||
|
words=( ${(s: :)buffer} )
|
||||||
|
words=( ${words[-1]} ${words[1,-2]} )
|
||||||
|
|
||||||
|
local space=""
|
||||||
|
[ "${buffer[-1]}" = " " ] && space=" "
|
||||||
|
|
||||||
|
buffer="${(j: :)words}$space"
|
||||||
|
}
|
||||||
|
|
||||||
typeset -ga reply
|
typeset -ga reply
|
||||||
reply=( -1 '' )
|
reply=( -1 '' )
|
||||||
integer current_idx="$1"
|
integer current_idx="$1"
|
||||||
@ -26,6 +72,7 @@ local key="$7"
|
|||||||
integer search="$8"
|
integer search="$8"
|
||||||
local buffer="$9"
|
local buffer="$9"
|
||||||
integer uniq_mode="$10"
|
integer uniq_mode="$10"
|
||||||
|
integer f_mode="$11"
|
||||||
|
|
||||||
#
|
#
|
||||||
# Listening for input
|
# Listening for input
|
||||||
@ -79,21 +126,36 @@ case "$key" in
|
|||||||
${NLIST_NONSELECTABLE_ELEMENTS[(r)$current_idx]} != $current_idx ]]
|
${NLIST_NONSELECTABLE_ELEMENTS[(r)$current_idx]} != $current_idx ]]
|
||||||
then
|
then
|
||||||
# Save current element in the result variable
|
# Save current element in the result variable
|
||||||
reply=( $current_idx SELECT )
|
reply=( $current_idx "SELECT" )
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
(H|'?')
|
||||||
|
# This event needs to be enabled
|
||||||
|
if [[ "${NLIST_ENABLED_EVENTS[(r)HELP]}" = "HELP" ]]; then
|
||||||
|
reply=( -1 "HELP" )
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
(F1)
|
||||||
|
# This event needs to be enabled
|
||||||
|
if [[ "${NLIST_ENABLED_EVENTS[(r)F1]}" = "F1" ]]; then
|
||||||
|
reply=( -1 "$key" )
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
(F4|F5|F6|F7|F8|F9|F10|DC)
|
||||||
|
# ignore; F2, F3 are used below
|
||||||
|
;;
|
||||||
(q)
|
(q)
|
||||||
reply=( -1 QUIT )
|
reply=( -1 "QUIT" )
|
||||||
;;
|
;;
|
||||||
(/)
|
(/)
|
||||||
search=1
|
search=1
|
||||||
_nlist_cursor_visibility 1
|
_nlist_cursor_visibility 1
|
||||||
;;
|
;;
|
||||||
($'\t')
|
($'\t')
|
||||||
reply=( $current_idx LEAVE )
|
reply=( $current_idx "LEAVE" )
|
||||||
;;
|
;;
|
||||||
($'\C-L')
|
($'\C-L')
|
||||||
reply=( -1 REDRAW )
|
reply=( -1 "REDRAW" )
|
||||||
;;
|
;;
|
||||||
(\])
|
(\])
|
||||||
[[ "${(t)NLIST_HOP_INDEXES}" = "array" || "${(t)NLIST_HOP_INDEXES}" = "array-local" ]] &&
|
[[ "${(t)NLIST_HOP_INDEXES}" = "array" || "${(t)NLIST_HOP_INDEXES}" = "array-local" ]] &&
|
||||||
@ -127,9 +189,41 @@ case "$key" in
|
|||||||
($'\E')
|
($'\E')
|
||||||
buffer=""
|
buffer=""
|
||||||
;;
|
;;
|
||||||
|
(F3)
|
||||||
|
if [ "$search" = "1" ]; then
|
||||||
|
search=0
|
||||||
|
_nlist_cursor_visibility 0
|
||||||
|
else
|
||||||
|
search=1
|
||||||
|
_nlist_cursor_visibility 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
(o|$'\C-O')
|
(o|$'\C-O')
|
||||||
uniq_mode=1-uniq_mode
|
uniq_mode=1-uniq_mode
|
||||||
;;
|
;;
|
||||||
|
(f|$'\C-F')
|
||||||
|
(( f_mode=(f_mode+1) % 3 ))
|
||||||
|
;;
|
||||||
|
($'\x1F'|F2|$'\C-X')
|
||||||
|
search=1
|
||||||
|
_nlist_cursor_visibility 1
|
||||||
|
_nlist_update_from_keywords
|
||||||
|
;;
|
||||||
|
($'\C-T')
|
||||||
|
_nlist_iterate_theme 1
|
||||||
|
;;
|
||||||
|
($'\C-G')
|
||||||
|
_nlist_iterate_theme 0
|
||||||
|
;;
|
||||||
|
($'\C-E'|e)
|
||||||
|
# This event needs to be enabled
|
||||||
|
if [[ "${NLIST_ENABLED_EVENTS[(r)EDIT]}" = "EDIT" ]]; then
|
||||||
|
reply=( -1 "EDIT" )
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
($'\C-A')
|
||||||
|
_nlist_rotate_buffer
|
||||||
|
;;
|
||||||
(*)
|
(*)
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@ -138,11 +232,19 @@ else
|
|||||||
|
|
||||||
case "$key" in
|
case "$key" in
|
||||||
($'\n'|ENTER)
|
($'\n'|ENTER)
|
||||||
|
if [ "$NLIST_INSTANT_SELECT" = "1" ]; then
|
||||||
|
if [[ "$NLIST_SEARCH_BUFFER" != "" || "$NLIST_IS_UNIQ_MODE" -eq 1 ||
|
||||||
|
${NLIST_NONSELECTABLE_ELEMENTS[(r)$current_idx]} != $current_idx ]]
|
||||||
|
then
|
||||||
|
reply=( $current_idx "SELECT" )
|
||||||
|
fi
|
||||||
|
else
|
||||||
search=0
|
search=0
|
||||||
_nlist_cursor_visibility 0
|
_nlist_cursor_visibility 0
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
($'\C-L')
|
($'\C-L')
|
||||||
reply=( -1 REDRAW )
|
reply=( -1 "REDRAW" )
|
||||||
;;
|
;;
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -192,8 +294,14 @@ case "$key" in
|
|||||||
(RIGHT)
|
(RIGHT)
|
||||||
hscroll+=7
|
hscroll+=7
|
||||||
;;
|
;;
|
||||||
(F1|F2|F3|F4|F5|F6|F7|F8|F9|F10)
|
(F1)
|
||||||
# ignore
|
# This event needs to be enabled
|
||||||
|
if [[ "${NLIST_ENABLED_EVENTS[(r)F1]}" = "F1" ]]; then
|
||||||
|
reply=( -1 "$key" )
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
(F4|F5|F6|F7|F8|F9|F10|DC)
|
||||||
|
# ignore; F2, F3 are used below
|
||||||
;;
|
;;
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -214,9 +322,39 @@ case "$key" in
|
|||||||
search=0
|
search=0
|
||||||
_nlist_cursor_visibility 0
|
_nlist_cursor_visibility 0
|
||||||
;;
|
;;
|
||||||
|
(F3)
|
||||||
|
if [ "$search" = "1" ]; then
|
||||||
|
search=0
|
||||||
|
_nlist_cursor_visibility 0
|
||||||
|
else
|
||||||
|
search=1
|
||||||
|
_nlist_cursor_visibility 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
($'\C-O')
|
($'\C-O')
|
||||||
uniq_mode=1-uniq_mode
|
uniq_mode=1-uniq_mode
|
||||||
;;
|
;;
|
||||||
|
($'\C-F')
|
||||||
|
(( f_mode=(f_mode+1) % 3 ))
|
||||||
|
;;
|
||||||
|
($'\x1F'|F2|$'\C-X')
|
||||||
|
_nlist_update_from_keywords
|
||||||
|
;;
|
||||||
|
($'\C-T')
|
||||||
|
_nlist_iterate_theme 1
|
||||||
|
;;
|
||||||
|
($'\C-G')
|
||||||
|
_nlist_iterate_theme 0
|
||||||
|
;;
|
||||||
|
($'\C-E')
|
||||||
|
# This event needs to be enabled
|
||||||
|
if [[ "${NLIST_ENABLED_EVENTS[(r)EDIT]}" = "EDIT" ]]; then
|
||||||
|
reply=( -1 "EDIT" )
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
($'\C-A')
|
||||||
|
_nlist_rotate_buffer
|
||||||
|
;;
|
||||||
(*)
|
(*)
|
||||||
if [[ $#key == 1 && $((#key)) -lt 31 ]]; then
|
if [[ $#key == 1 && $((#key)) -lt 31 ]]; then
|
||||||
# ignore all other control keys
|
# ignore all other control keys
|
||||||
@ -234,5 +372,6 @@ reply[5]="$hscroll"
|
|||||||
reply[6]="$search"
|
reply[6]="$search"
|
||||||
reply[7]="$buffer"
|
reply[7]="$buffer"
|
||||||
reply[8]="$uniq_mode"
|
reply[8]="$uniq_mode"
|
||||||
|
reply[9]="$f_mode"
|
||||||
|
|
||||||
# vim: set filetype=zsh:
|
# vim: set filetype=zsh:
|
||||||
|
@ -14,8 +14,8 @@ local IFS="
|
|||||||
|
|
||||||
unset NLIST_COLORING_PATTERN
|
unset NLIST_COLORING_PATTERN
|
||||||
|
|
||||||
[ -f ~/.config/znt/n-list.conf ] && . ~/.config/znt/n-list.conf
|
[ -f ~/.config/znt/n-list.conf ] && builtin source ~/.config/znt/n-list.conf
|
||||||
[ -f ~/.config/znt/n-options.conf ] && . ~/.config/znt/n-options.conf
|
[ -f ~/.config/znt/n-options.conf ] && builtin source ~/.config/znt/n-options.conf
|
||||||
|
|
||||||
# TODO restore options
|
# TODO restore options
|
||||||
unsetopt localoptions
|
unsetopt localoptions
|
||||||
|
@ -17,8 +17,8 @@ local IFS="
|
|||||||
|
|
||||||
unset NLIST_COLORING_PATTERN
|
unset NLIST_COLORING_PATTERN
|
||||||
|
|
||||||
[ -f ~/.config/znt/n-list.conf ] && . ~/.config/znt/n-list.conf
|
[ -f ~/.config/znt/n-list.conf ] && builtin source ~/.config/znt/n-list.conf
|
||||||
[ -f ~/.config/znt/n-panelize.conf ] && . ~/.config/znt/n-panelize.conf
|
[ -f ~/.config/znt/n-panelize.conf ] && builtin source ~/.config/znt/n-panelize.conf
|
||||||
|
|
||||||
local list
|
local list
|
||||||
local selected
|
local selected
|
||||||
|
@ -4,6 +4,14 @@ local NLIST_START_IN_UNIQ_MODE=1
|
|||||||
|
|
||||||
# Only if current $BUFFER doesn't come from history
|
# Only if current $BUFFER doesn't come from history
|
||||||
if [ "$HISTCMD" = "$HISTNO" ]; then
|
if [ "$HISTCMD" = "$HISTNO" ]; then
|
||||||
|
() {
|
||||||
|
setopt localoptions extendedglob
|
||||||
|
local -a match mbegin mend
|
||||||
|
local MATCH; integer MBEGIN MEND
|
||||||
|
|
||||||
|
[ -n "$BUFFER" ] && BUFFER="${BUFFER%% ##} "
|
||||||
|
}
|
||||||
|
|
||||||
local NLIST_SET_SEARCH_TO="$BUFFER"
|
local NLIST_SET_SEARCH_TO="$BUFFER"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -15,24 +15,36 @@ if ! test -d "$CONFIG_DIR"; then
|
|||||||
mkdir "$CONFIG_DIR"
|
mkdir "$CONFIG_DIR"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# 9 files
|
||||||
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
|
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
|
# Check for random 2 files if they exist
|
||||||
|
# This will shift 0 - 7 elements
|
||||||
|
shift $(( RANDOM % 8 ))
|
||||||
|
if ! test -f "$CONFIG_DIR/$1" || ! test -f "$CONFIG_DIR/$2"; then
|
||||||
|
# Something changed - examine every file
|
||||||
|
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 "$CONFIG_DIR/$i"; then
|
if ! test -f "$CONFIG_DIR/$i"; then
|
||||||
cp "$REPO_DIR/.config/znt/$i" "$CONFIG_DIR"
|
cp "$REPO_DIR/.config/znt/$i" "$CONFIG_DIR"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Don't leave positional parameters being set
|
||||||
|
set --
|
||||||
|
|
||||||
#
|
#
|
||||||
# Load functions
|
# Load functions
|
||||||
#
|
#
|
||||||
|
|
||||||
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
|
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
|
||||||
autoload znt-usetty-wrapper znt-history-widget znt-cd-widget znt-kill-widget
|
autoload znt-usetty-wrapper znt-history-widget znt-cd-widget znt-kill-widget
|
||||||
alias naliases=n-aliases ncd=n-cd nenv=n-env nfunctions=n-functions nhistory=n-history
|
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
|
alias nkill=n-kill noptions=n-options npanelize=n-panelize nhelp=n-help
|
||||||
|
|
||||||
zle -N znt-history-widget
|
zle -N znt-history-widget
|
||||||
bindkey '^R' znt-history-widget
|
bindkey '^R' znt-history-widget
|
||||||
setopt AUTO_PUSHD HIST_IGNORE_DUPS PUSHD_IGNORE_DUPS
|
setopt AUTO_PUSHD HIST_IGNORE_DUPS PUSHD_IGNORE_DUPS
|
||||||
|
zstyle ':completion::complete:n-kill::bits' matcher 'r:|=** l:|=*'
|
||||||
|
|
||||||
|
@ -41,6 +41,8 @@ function _vi_status() {
|
|||||||
function _ruby_version() {
|
function _ruby_version() {
|
||||||
if {echo $fpath | grep -q "plugins/rvm"}; then
|
if {echo $fpath | grep -q "plugins/rvm"}; then
|
||||||
echo "%{$fg[grey]%}$(rvm_prompt_info)%{$reset_color%}"
|
echo "%{$fg[grey]%}$(rvm_prompt_info)%{$reset_color%}"
|
||||||
|
elif {echo $fpath | grep -q "plugins/rbenv"}; then
|
||||||
|
echo "%{$fg[grey]%}$(rbenv_prompt_info)%{$reset_color%}"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user