From d189236f757b59262bd8c98abd0c48cd04bc9ec2 Mon Sep 17 00:00:00 2001 From: "Johan K. Jensen" Date: Tue, 8 Mar 2016 13:17:23 +0100 Subject: [PATCH 01/37] Add iTerm2 v3 support --- plugins/osx/osx.plugin.zsh | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/plugins/osx/osx.plugin.zsh b/plugins/osx/osx.plugin.zsh index a1516dcc..c92b6556 100644 --- a/plugins/osx/osx.plugin.zsh +++ b/plugins/osx/osx.plugin.zsh @@ -46,6 +46,16 @@ EOF end tell EOF + elif [[ "$the_app" == 'iTerm2' ]]; then + osascript <&2 false @@ -100,6 +123,19 @@ function split_tab() { end tell EOF + elif [[ "$the_app" == 'iTerm2' ]]; then + osascript <&2 false From f28c0a81b7041e1c834dd551691ce03d10994192 Mon Sep 17 00:00:00 2001 From: Sharat M R Date: Sat, 16 Apr 2016 06:52:58 +0530 Subject: [PATCH 02/37] Moved git.io url to https git.io now redirects to https. So the current function break. Changing it to https fixes the issue. --- plugins/github/github.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/github/github.plugin.zsh b/plugins/github/github.plugin.zsh index ca19901f..0ab399c9 100644 --- a/plugins/github/github.plugin.zsh +++ b/plugins/github/github.plugin.zsh @@ -71,7 +71,7 @@ exist_gh() { # [DIRECTORY] # git.io() { 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 ############################################################# From 19769fded2d95b1e81a72ee7ebd3d9bd53f0d422 Mon Sep 17 00:00:00 2001 From: Sebastian Gniazdowski Date: Wed, 20 Apr 2016 07:33:10 +0200 Subject: [PATCH 03/37] Don't leave positional parameters being set --- plugins/zsh-navigation-tools/zsh-navigation-tools.plugin.zsh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugins/zsh-navigation-tools/zsh-navigation-tools.plugin.zsh b/plugins/zsh-navigation-tools/zsh-navigation-tools.plugin.zsh index 16247b8d..4aa3aa4b 100755 --- a/plugins/zsh-navigation-tools/zsh-navigation-tools.plugin.zsh +++ b/plugins/zsh-navigation-tools/zsh-navigation-tools.plugin.zsh @@ -23,6 +23,9 @@ for i; do fi done +# Don't leave positional parameters being set +set -- + # # Load functions # From c1ed14189bc8f3d27a6b10e4b5feab7a2984e4a6 Mon Sep 17 00:00:00 2001 From: Tony Han Date: Wed, 20 Apr 2016 23:09:52 +0800 Subject: [PATCH 04/37] add files completion to mix test --- plugins/mix/_mix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/plugins/mix/_mix b/plugins/mix/_mix index 319932b3..3b3887b1 100644 --- a/plugins/mix/_mix +++ b/plugins/mix/_mix @@ -73,6 +73,10 @@ case $state in case $line[1] in (help) _arguments ':feature:__task_list' + ;; + (test) + _files + ;; esac ;; esac From 3524fc8de58780fd42f84b0ab543f3afc6f30a87 Mon Sep 17 00:00:00 2001 From: Nicolas Charpentier Date: Tue, 26 Apr 2016 13:08:13 -0400 Subject: [PATCH 05/37] JIRA Plugin will open rapidboard instead of dashboard if JIRA_RAPID_BOARD is true --- plugins/jira/jira.plugin.zsh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/plugins/jira/jira.plugin.zsh b/plugins/jira/jira.plugin.zsh index 341e23ec..67c98945 100644 --- a/plugins/jira/jira.plugin.zsh +++ b/plugins/jira/jira.plugin.zsh @@ -38,7 +38,11 @@ function jira() { _jira_query $@ elif [[ "$action" == "dashboard" ]]; then echo "Opening dashboard" - open_command "${jira_url}/secure/Dashboard.jspa" + if [[ "$JIRA_RAPID_BOARD" == "true" ]]; then + open_command "${jira_url}/secure/RapidBoard.jspa" + else + open_command "${jira_url}/secure/Dashboard.jspa" + fi elif [[ "$action" == "dumpconfig" ]]; then echo "JIRA_URL=$jira_url" 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" open_command "${jira_url}/secure/IssueNavigator.jspa?reset=true&jqlQuery=${query}" } - From 244d6b1df91e2b366eac2cf8bc86a7b9e80b55a4 Mon Sep 17 00:00:00 2001 From: Tomas Norre Mikkelsen Date: Tue, 10 May 2016 08:09:12 +0200 Subject: [PATCH 06/37] [TASK] Vagrant plugin: Add missing vagrant snapshot command Fixes issue #5022 --- plugins/vagrant/_vagrant | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/vagrant/_vagrant b/plugins/vagrant/_vagrant index 764f8954..35377bd9 100644 --- a/plugins/vagrant/_vagrant +++ b/plugins/vagrant/_vagrant @@ -26,6 +26,7 @@ _1st_arguments=( 'rsync:Syncs rsync synced folders to remote machine' 'rsync-auto:Syncs rsync synced folders automatically when files change' '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-config:Outputs .ssh/config valid syntax for connecting to this environment via ssh' 'status:Shows the status of the current Vagrant environment' From 2bce3b1f588ef2a5245e7a3f4b1693c2c07d1dbc Mon Sep 17 00:00:00 2001 From: jgmdev Date: Tue, 10 May 2016 13:23:23 -0300 Subject: [PATCH 07/37] Added fossil plugin. --- plugins/fossil/README.md | 7 +++ plugins/fossil/fossil.plugin.zsh | 89 ++++++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+) create mode 100644 plugins/fossil/README.md create mode 100644 plugins/fossil/fossil.plugin.zsh diff --git a/plugins/fossil/README.md b/plugins/fossil/README.md new file mode 100644 index 00000000..5bb47b7d --- /dev/null +++ b/plugins/fossil/README.md @@ -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)) diff --git a/plugins/fossil/fossil.plugin.zsh b/plugins/fossil/fossil.plugin.zsh new file mode 100644 index 00000000..1ae166e6 --- /dev/null +++ b/plugins/fossil/fossil.plugin.zsh @@ -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 From ed484dfaf63c6d8789b2bd2e952a07bbbb9ad330 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Thu, 12 May 2016 13:22:27 +0200 Subject: [PATCH 08/37] Delete cdablevars option by default Fixes weird autocompletion of directories and named users. Fix #4864 --- lib/theme-and-appearance.zsh | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/theme-and-appearance.zsh b/lib/theme-and-appearance.zsh index ebb11fb3..8a564e4f 100644 --- a/lib/theme-and-appearance.zsh +++ b/lib/theme-and-appearance.zsh @@ -25,7 +25,6 @@ fi #setopt no_beep setopt auto_cd setopt multios -setopt cdablevars if [[ x$WINDOW != x ]] then From cc36063cfdb5e21bc18d127a09d5e0385ace68cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Thu, 12 May 2016 13:23:46 +0200 Subject: [PATCH 09/37] Cleanup theme-and-appearance.zsh --- lib/theme-and-appearance.zsh | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/theme-and-appearance.zsh b/lib/theme-and-appearance.zsh index 8a564e4f..5c5bb0e6 100644 --- a/lib/theme-and-appearance.zsh +++ b/lib/theme-and-appearance.zsh @@ -11,9 +11,9 @@ then # otherwise, leave ls as is, because NetBSD's ls doesn't support -G gls --color -d . &>/dev/null 2>&1 && alias ls='gls --color=tty' elif [[ "$(uname -s)" == "OpenBSD" ]]; then - # On OpenBSD, "gls" (ls from GNU coreutils) and "colorls" (ls from base, - # with color and multibyte support) are available from ports. "colorls" - # will be installed on purpose and can't be pulled in by installing + # On OpenBSD, "gls" (ls from GNU coreutils) and "colorls" (ls from base, + # with color and multibyte support) are available from ports. "colorls" + # will be installed on purpose and can't be pulled in by installing # coreutils, so prefer it to "gls". gls --color -d . &>/dev/null 2>&1 && alias ls='gls --color=tty' colorls -G -d . &>/dev/null 2>&1 && alias ls='colorls -G' @@ -22,7 +22,6 @@ then fi fi -#setopt no_beep setopt auto_cd setopt multios From 2ad13bd94592b048602798ce270cc72ec906c13e Mon Sep 17 00:00:00 2001 From: manu Date: Wed, 23 Mar 2016 11:59:07 +0100 Subject: [PATCH 10/37] This plugin also includes tab completions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc Cornellà --- plugins/wp-cli/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/wp-cli/README.md b/plugins/wp-cli/README.md index 1a79d60f..da398ed1 100644 --- a/plugins/wp-cli/README.md +++ b/plugins/wp-cli/README.md @@ -4,7 +4,9 @@ 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 From 863675f3d404e345693e8abd77f6136e171d7ed5 Mon Sep 17 00:00:00 2001 From: Vimal Raj Date: Sun, 10 Jan 2016 23:56:50 +0530 Subject: [PATCH 11/37] Add README file for mvn plugin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc Cornellà --- plugins/mvn/README.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 plugins/mvn/README.md diff --git a/plugins/mvn/README.md b/plugins/mvn/README.md new file mode 100644 index 00000000..d521064c --- /dev/null +++ b/plugins/mvn/README.md @@ -0,0 +1,28 @@ +## The mvn Plugin + +The [mvn](https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/mvn) plugin provides many [aliases](#Aliases). + +Enable it by adding _mvn_ to the [_plugins array_](https://github.com/robbyrussell/oh-my-zsh/blob/master/templates/zshrc.zsh-template#L48) before sourcing OMZ (see [Plugins](https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins)). + +## 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| From 30870d87ddc23b633fb99a6542768835c2a66551 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Thu, 12 May 2016 13:41:29 +0200 Subject: [PATCH 12/37] Reword and fix formatting of mvn plugin README --- plugins/mvn/README.md | 50 +++++++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/plugins/mvn/README.md b/plugins/mvn/README.md index d521064c..79192bb5 100644 --- a/plugins/mvn/README.md +++ b/plugins/mvn/README.md @@ -1,28 +1,32 @@ -## The mvn Plugin +## Introduction -The [mvn](https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/mvn) plugin provides many [aliases](#Aliases). +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_](https://github.com/robbyrussell/oh-my-zsh/blob/master/templates/zshrc.zsh-template#L48) before sourcing OMZ (see [Plugins](https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins)). +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| +| 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` | From 26a07b0ad87162805e69ce18c56627772a663aef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Sun, 12 Apr 2015 00:37:35 +0200 Subject: [PATCH 13/37] Rename README.markdown to README.md for consistency --- README.markdown => README.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename README.markdown => README.md (100%) diff --git a/README.markdown b/README.md similarity index 100% rename from README.markdown rename to README.md From 2198ff05e3b26532865f91a9ac1bac5fc673c05b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Thu, 12 May 2016 13:52:13 +0200 Subject: [PATCH 14/37] Rename license to LICENSE.txt for consistency --- MIT-LICENSE.txt => LICENSE.txt | 0 README.md | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename MIT-LICENSE.txt => LICENSE.txt (100%) diff --git a/MIT-LICENSE.txt b/LICENSE.txt similarity index 100% rename from MIT-LICENSE.txt rename to LICENSE.txt diff --git a/README.md b/README.md index 0cbea72c..5f152e4d 100644 --- a/README.md +++ b/README.md @@ -210,4 +210,4 @@ We have [stickers](http://shop.planetargon.com/products/ohmyzsh-stickers-set-of- ## License -Oh My Zsh is released under the [MIT license](MIT-LICENSE.txt). +Oh My Zsh is released under the [MIT license](LICENSE.txt). From 66e7e7d9ca78a5e62664abbb3c5c72e163119afb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Tue, 15 Dec 2015 11:16:02 +0100 Subject: [PATCH 15/37] Use .gitkeep files to keep cache/ and log/ directories Instead of .easter-egg files we now have empty .gitkeep files, like is done as an informal standard. --- .gitignore | 3 +++ cache/.easter-egg | 4 ---- cache/.gitkeep | 0 log/.easter-egg | 4 ---- log/.gitkeep | 0 5 files changed, 3 insertions(+), 8 deletions(-) delete mode 100644 cache/.easter-egg create mode 100644 cache/.gitkeep delete mode 100644 log/.easter-egg create mode 100644 log/.gitkeep diff --git a/.gitignore b/.gitignore index 8fa66f02..567cd4e4 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,6 @@ custom *.swp !custom/example.zshcache cache/ +!cache/.gitkeep +log/ +!log/.gitkeep diff --git a/cache/.easter-egg b/cache/.easter-egg deleted file mode 100644 index 4b6164ed..00000000 --- a/cache/.easter-egg +++ /dev/null @@ -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. - diff --git a/cache/.gitkeep b/cache/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/log/.easter-egg b/log/.easter-egg deleted file mode 100644 index 2533149e..00000000 --- a/log/.easter-egg +++ /dev/null @@ -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. - diff --git a/log/.gitkeep b/log/.gitkeep new file mode 100644 index 00000000..e69de29b From 54ace41f3ce890f76cc455aac3aea0b10a467411 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Sat, 1 Aug 2015 14:47:36 +0200 Subject: [PATCH 16/37] Tidy up gitignore file - `custom/example.zshcache` doesn't exist anymore: it's safe to ignore. - `*.swp` files are ignored for no apparent reason. There's nothing in the codebase that generates them. This was introduced by @lepht in commit f78218f6 on 24 May 2011. - Files `locals.zsh` and `projects.zsh` are no longer supported for putting custom configuration there. This is since commit 8debd09 where files were put in a lib/ folder, but failed to modify the .gitignore file as well. The init script was modified as well, so those files aren't even being sourced: they are safe to be deleted or ported into a custom script. --- .gitignore | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 567cd4e4..b2022081 100644 --- a/.gitignore +++ b/.gitignore @@ -1,12 +1,8 @@ -locals.zsh -log/.zsh_history -projects.zsh -custom +# custom files +custom/ !custom/plugins/example !custom/example.zsh -*.swp -!custom/example.zshcache + +# temp files directories cache/ -!cache/.gitkeep log/ -!log/.gitkeep From 7a0d299e96a8a1707630d59859f048e9ebde9456 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Thu, 12 May 2016 13:59:10 +0200 Subject: [PATCH 17/37] Reword and clarify example.zsh custom file --- custom/example.zsh | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/custom/example.zsh b/custom/example.zsh index 28ffcae2..c505a967 100644 --- a/custom/example.zsh +++ b/custom/example.zsh @@ -1,5 +1,10 @@ -# Add yourself some shortcuts to projects you often work on -# Example: +# You can put files here to add functionality separated per file, which +# 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=~/Projects/development/planetargon/brainstormr +# cd $brainstormr # -# brainstormr=/Users/robbyrussell/Projects/development/planetargon/brainstormr -# \ No newline at end of file From edf89bffdcf58ed2b4d530db1d3912b66bad0c4a Mon Sep 17 00:00:00 2001 From: Juan David Pastas Date: Fri, 3 Jul 2015 12:06:30 -0500 Subject: [PATCH 18/37] Add meteor plugin aliases MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc Cornellà --- plugins/meteor/meteor.plugin.zsh | 33 ++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 plugins/meteor/meteor.plugin.zsh diff --git a/plugins/meteor/meteor.plugin.zsh b/plugins/meteor/meteor.plugin.zsh new file mode 100644 index 00000000..db55e367 --- /dev/null +++ b/plugins/meteor/meteor.plugin.zsh @@ -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. From 52723876f95a5b9cd7e4a07c6596a6d42b6be56f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Thu, 12 May 2016 17:06:44 +0200 Subject: [PATCH 19/37] Add README to meteor plugin --- plugins/meteor/README.md | 45 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 plugins/meteor/README.md diff --git a/plugins/meteor/README.md b/plugins/meteor/README.md new file mode 100644 index 00000000..4bee87f8 --- /dev/null +++ b/plugins/meteor/README.md @@ -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 | From 5aa7e0f60049b6501d3587dcd4355706ce1cbe34 Mon Sep 17 00:00:00 2001 From: Shang Yehua Date: Sat, 14 May 2016 18:14:34 +0800 Subject: [PATCH 20/37] Add mvn options to ignore test failures (#5092) add "-Dmaven.test.failure.ignore=true" . This option will not ignore all tests but ignore the failures when run tests. See http://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#testFailureIgnore --- plugins/mvn/mvn.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/mvn/mvn.plugin.zsh b/plugins/mvn/mvn.plugin.zsh index 8324c495..7aaab0e1 100644 --- a/plugins/mvn/mvn.plugin.zsh +++ b/plugins/mvn/mvn.plugin.zsh @@ -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 # 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 -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 From 615af65087d94fd6474f666c1ab0e11efc65a7f5 Mon Sep 17 00:00:00 2001 From: Wanbok Choi Date: Sat, 14 May 2016 20:45:55 +0900 Subject: [PATCH 21/37] Add 'gcn!' for the '--no-edit' option. (#4830) Remove the '-s' option from 'gcan!' Add 'gcans!'. It is the same as the current 'gcan! -s'. --- plugins/git/git.plugin.zsh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh index 95ce1ae2..220bf259 100644 --- a/plugins/git/git.plugin.zsh +++ b/plugins/git/git.plugin.zsh @@ -58,9 +58,11 @@ alias gbss='git bisect start' alias gc='git commit -v' 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 --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 gcb='git checkout -b' alias gcf='git config --list' From 621eb21139512cb0e00fbc5a9b9d215308eba720 Mon Sep 17 00:00:00 2001 From: Robin Chalas Date: Sat, 14 May 2016 17:19:26 +0200 Subject: [PATCH 22/37] Fix deprecated usage (#5050) When using the command alias `sfcontainer` or `sfrouter`, the following warning occurs: > ! [CAUTION] The use of "container:debug" command is deprecated since version 2.7 and will be removed in 3.0. Use the > ! "debug:container" instead. --- plugins/symfony2/symfony2.plugin.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/symfony2/symfony2.plugin.zsh b/plugins/symfony2/symfony2.plugin.zsh index fe236a29..c2a1affa 100644 --- a/plugins/symfony2/symfony2.plugin.zsh +++ b/plugins/symfony2/symfony2.plugin.zsh @@ -22,8 +22,8 @@ alias sf='`_symfony_console`' alias sfcl='sf cache:clear' alias sfsr='sf server:run -vvv' alias sfcw='sf cache:warmup' -alias sfroute='sf router:debug' -alias sfcontainer='sf container:debug' +alias sfroute='sf debug:router' +alias sfcontainer='sf debug:container' alias sfgb='sf generate:bundle' alias sfdev='sf --env=dev' alias sfprod='sf --env=prod' From b1ab13d9e63b3c7cc1f30d2712a44c50e5acccf8 Mon Sep 17 00:00:00 2001 From: Pierre Dimitrou Date: Sat, 14 May 2016 22:05:35 +0200 Subject: [PATCH 23/37] Add rbenv support for ruby version display --- themes/avit.zsh-theme | 2 ++ 1 file changed, 2 insertions(+) diff --git a/themes/avit.zsh-theme b/themes/avit.zsh-theme index 87d5be30..4f0dcbcc 100644 --- a/themes/avit.zsh-theme +++ b/themes/avit.zsh-theme @@ -41,6 +41,8 @@ function _vi_status() { function _ruby_version() { if {echo $fpath | grep -q "plugins/rvm"}; then 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 } From e2d157d5895717e983e5cc4e5df792a6a5dbe0ac Mon Sep 17 00:00:00 2001 From: Sebastian Gniazdowski Date: Sat, 30 Apr 2016 15:16:00 +0200 Subject: [PATCH 24/37] znt: update to v2.1.15 --- .../.config/znt/n-aliases.conf | 34 +- .../.config/znt/n-cd.conf | 52 ++- .../.config/znt/n-env.conf | 35 +- .../.config/znt/n-functions.conf | 37 +- .../.config/znt/n-history.conf | 37 +- .../.config/znt/n-kill.conf | 39 ++- .../.config/znt/n-list.conf | 54 ++- .../.config/znt/n-options.conf | 35 +- .../.config/znt/n-panelize.conf | 35 +- plugins/zsh-navigation-tools/README.md | 81 ++++- plugins/zsh-navigation-tools/_n-kill | 41 +++ plugins/zsh-navigation-tools/n-aliases | 4 +- plugins/zsh-navigation-tools/n-cd | 17 +- plugins/zsh-navigation-tools/n-env | 4 +- plugins/zsh-navigation-tools/n-functions | 4 +- plugins/zsh-navigation-tools/n-help | 96 +++++ plugins/zsh-navigation-tools/n-history | 331 +++++++++++++++++- plugins/zsh-navigation-tools/n-kill | 4 +- plugins/zsh-navigation-tools/n-list | 139 ++++++-- plugins/zsh-navigation-tools/n-list-draw | 14 +- plugins/zsh-navigation-tools/n-list-input | 157 ++++++++- plugins/zsh-navigation-tools/n-options | 4 +- plugins/zsh-navigation-tools/n-panelize | 4 +- .../zsh-navigation-tools/znt-history-widget | 8 + .../zsh-navigation-tools.plugin.zsh | 23 +- 25 files changed, 1178 insertions(+), 111 deletions(-) create mode 100644 plugins/zsh-navigation-tools/_n-kill create mode 100644 plugins/zsh-navigation-tools/n-help diff --git a/plugins/zsh-navigation-tools/.config/znt/n-aliases.conf b/plugins/zsh-navigation-tools/.config/znt/n-aliases.conf index 98f4625f..047b017e 100644 --- a/plugins/zsh-navigation-tools/.config/znt/n-aliases.conf +++ b/plugins/zsh-navigation-tools/.config/znt/n-aliases.conf @@ -1,5 +1,33 @@ # 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 -# underline support on that terminal) -# local active_text=underline +# underline support on that terminal). The same for screen/tmux. +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 diff --git a/plugins/zsh-navigation-tools/.config/znt/n-cd.conf b/plugins/zsh-navigation-tools/.config/znt/n-cd.conf index 7ed7828e..8271e5d9 100644 --- a/plugins/zsh-navigation-tools/.config/znt/n-cd.conf +++ b/plugins/zsh-navigation-tools/.config/znt/n-cd.conf @@ -1,6 +1,6 @@ # Hotlist -# Try to use $ZSH_VERSION, e.g. /usr/share/zsh/$ZSH_VERSION/functions -local hotlist +# Can use e.g. $ZSH_VERSION, e.g. /usr/share/zsh/$ZSH_VERSION/functions +local -a hotlist hotlist=( ~/.config/znt /usr/share/zsh/site-functions @@ -8,6 +8,7 @@ hotlist=( /usr/local/share/zsh/site-functions /usr/local/share/zsh /usr/local/bin + /usr/lib ) # Suppress adding (to directory stack) directories visited by n-cd @@ -15,12 +16,53 @@ hotlist=( local NCD_DONT_PUSHD=0 # 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 -# underline support on that terminal) -# local active_text=underline +# underline support on that terminal). The same for screen/tmux. +local active_text=reverse # Colorize last segments of the paths # (#s) is ^, (#e) is $, # is *, ## is + (comparing to regex) local NLIST_COLORING_PATTERN="[a-zA-Z0-9 ._-]##/#(#e)" 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 diff --git a/plugins/zsh-navigation-tools/.config/znt/n-env.conf b/plugins/zsh-navigation-tools/.config/znt/n-env.conf index 0c4bdce6..85dda05e 100644 --- a/plugins/zsh-navigation-tools/.config/znt/n-env.conf +++ b/plugins/zsh-navigation-tools/.config/znt/n-env.conf @@ -1,9 +1,38 @@ # 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 -# underline support on that terminal) -# local active_text=underline +# underline support on that terminal). The same for screen/tmux. +local active_text=reverse # (#s) is ^, (#e) is $, # is *, ## is + (comparing to regex) local NLIST_COLORING_PATTERN="[a-zA-Z0-9_]##" 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 diff --git a/plugins/zsh-navigation-tools/.config/znt/n-functions.conf b/plugins/zsh-navigation-tools/.config/znt/n-functions.conf index 93d31e8f..d032e278 100644 --- a/plugins/zsh-navigation-tools/.config/znt/n-functions.conf +++ b/plugins/zsh-navigation-tools/.config/znt/n-functions.conf @@ -4,7 +4,38 @@ local feditor="zed" # local feditor="vared" # 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 -# underline support on that terminal) -# local active_text=underline +# underline support on that terminal). The same for screen/tmux. +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 diff --git a/plugins/zsh-navigation-tools/.config/znt/n-history.conf b/plugins/zsh-navigation-tools/.config/znt/n-history.conf index 5d4bad82..d7c69e15 100644 --- a/plugins/zsh-navigation-tools/.config/znt/n-history.conf +++ b/plugins/zsh-navigation-tools/.config/znt/n-history.conf @@ -1,10 +1,43 @@ # 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 -# underline support on that terminal) +# underline support on that terminal). The same for screen/tmux. local active_text=underline # Highlight a few keywords 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_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 diff --git a/plugins/zsh-navigation-tools/.config/znt/n-kill.conf b/plugins/zsh-navigation-tools/.config/znt/n-kill.conf index f1c4f02d..deb2a3fd 100644 --- a/plugins/zsh-navigation-tools/.config/znt/n-kill.conf +++ b/plugins/zsh-navigation-tools/.config/znt/n-kill.conf @@ -1,8 +1,8 @@ # 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 -# underline support on that terminal) -# local active_text=underline +# underline support on that terminal). The same for screen/tmux. +local active_text=reverse # Colorize first number column and last path segment # 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_COLOR=$'\x1b[00;33m' 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 diff --git a/plugins/zsh-navigation-tools/.config/znt/n-list.conf b/plugins/zsh-navigation-tools/.config/znt/n-list.conf index cf9d2a3b..68f5668f 100644 --- a/plugins/zsh-navigation-tools/.config/znt/n-list.conf +++ b/plugins/zsh-navigation-tools/.config/znt/n-list.conf @@ -1,3 +1,55 @@ # Should the list (text, borders) be drawn in bold # 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} + diff --git a/plugins/zsh-navigation-tools/.config/znt/n-options.conf b/plugins/zsh-navigation-tools/.config/znt/n-options.conf index 98f4625f..29c5e089 100644 --- a/plugins/zsh-navigation-tools/.config/znt/n-options.conf +++ b/plugins/zsh-navigation-tools/.config/znt/n-options.conf @@ -1,5 +1,34 @@ # 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 -# underline support on that terminal) -# local active_text=underline +# underline support on that terminal). The same for screen/tmux. +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 diff --git a/plugins/zsh-navigation-tools/.config/znt/n-panelize.conf b/plugins/zsh-navigation-tools/.config/znt/n-panelize.conf index 98f4625f..58ce1b62 100644 --- a/plugins/zsh-navigation-tools/.config/znt/n-panelize.conf +++ b/plugins/zsh-navigation-tools/.config/znt/n-panelize.conf @@ -1,5 +1,34 @@ # 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 -# underline support on that terminal) -# local active_text=underline +# underline support on that terminal). The same for screen/tmux. +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 diff --git a/plugins/zsh-navigation-tools/README.md b/plugins/zsh-navigation-tools/README.md index 32a86bba..7a679fe6 100644 --- a/plugins/zsh-navigation-tools/README.md +++ b/plugins/zsh-navigation-tools/README.md @@ -1,6 +1,6 @@ # 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 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 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 The tools are: @@ -60,6 +80,65 @@ cursors. Other keys are: - Ctrl-w (in incremental search) - delete whole word - 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 The function n-list is used as follows: diff --git a/plugins/zsh-navigation-tools/_n-kill b/plugins/zsh-navigation-tools/_n-kill new file mode 100644 index 00000000..8a4ec9da --- /dev/null +++ b/plugins/zsh-navigation-tools/_n-kill @@ -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" diff --git a/plugins/zsh-navigation-tools/n-aliases b/plugins/zsh-navigation-tools/n-aliases index d81db925..f8c1c372 100644 --- a/plugins/zsh-navigation-tools/n-aliases +++ b/plugins/zsh-navigation-tools/n-aliases @@ -16,8 +16,8 @@ local IFS=" unset NLIST_COLORING_PATTERN -[ -f ~/.config/znt/n-list.conf ] && . ~/.config/znt/n-list.conf -[ -f ~/.config/znt/n-aliases.conf ] && . ~/.config/znt/n-aliases.conf +[ -f ~/.config/znt/n-list.conf ] && builtin source ~/.config/znt/n-list.conf +[ -f ~/.config/znt/n-aliases.conf ] && builtin source ~/.config/znt/n-aliases.conf local list local selected diff --git a/plugins/zsh-navigation-tools/n-cd b/plugins/zsh-navigation-tools/n-cd index b1ac5b15..48c6dbf4 100644 --- a/plugins/zsh-navigation-tools/n-cd +++ b/plugins/zsh-navigation-tools/n-cd @@ -16,8 +16,8 @@ local IFS=" # Unset before configuration is read unset NLIST_COLORING_PATTERN -[ -f ~/.config/znt/n-list.conf ] && . ~/.config/znt/n-list.conf -[ -f ~/.config/znt/n-cd.conf ] && . ~/.config/znt/n-cd.conf +[ -f ~/.config/znt/n-list.conf ] && builtin source ~/.config/znt/n-list.conf +[ -f ~/.config/znt/n-cd.conf ] && builtin source ~/.config/znt/n-cd.conf local list local selected @@ -53,13 +53,16 @@ if [ "$REPLY" -gt 0 ]; then (( NCD_DONT_PUSHD )) && setopt NO_AUTO_PUSHD cd "$selected" + local code=$? (( NCD_DONT_PUSHD )) && setopt AUTO_PUSHD - # ZLE? - if [ "${(t)CURSOR}" = "integer-local-special" ]; then - zle -M "You have selected $selected" - else - echo "You have selected $selected" + if [ "$code" -eq "0" ]; then + # ZLE? + if [ "${(t)CURSOR}" = "integer-local-special" ]; then + zle -M "You have selected $selected" + else + echo "You have selected $selected" + fi fi else [ "${(t)CURSOR}" = "integer-local-special" ] && zle redisplay diff --git a/plugins/zsh-navigation-tools/n-env b/plugins/zsh-navigation-tools/n-env index 612796c0..c003b63a 100644 --- a/plugins/zsh-navigation-tools/n-env +++ b/plugins/zsh-navigation-tools/n-env @@ -15,8 +15,8 @@ zmodload zsh/curses local IFS=" " -[ -f ~/.config/znt/n-list.conf ] && . ~/.config/znt/n-list.conf -[ -f ~/.config/znt/n-env.conf ] && . ~/.config/znt/n-env.conf +[ -f ~/.config/znt/n-list.conf ] && builtin source ~/.config/znt/n-list.conf +[ -f ~/.config/znt/n-env.conf ] && builtin source ~/.config/znt/n-env.conf local list local selected diff --git a/plugins/zsh-navigation-tools/n-functions b/plugins/zsh-navigation-tools/n-functions index 6f10a3de..1748cbc9 100644 --- a/plugins/zsh-navigation-tools/n-functions +++ b/plugins/zsh-navigation-tools/n-functions @@ -16,8 +16,8 @@ local IFS=" unset NLIST_COLORING_PATTERN -[ -f ~/.config/znt/n-list.conf ] && . ~/.config/znt/n-list.conf -[ -f ~/.config/znt/n-functions.conf ] && . ~/.config/znt/n-functions.conf +[ -f ~/.config/znt/n-list.conf ] && builtin source ~/.config/znt/n-list.conf +[ -f ~/.config/znt/n-functions.conf ] && builtin source ~/.config/znt/n-functions.conf local list local selected diff --git a/plugins/zsh-navigation-tools/n-help b/plugins/zsh-navigation-tools/n-help new file mode 100644 index 00000000..415050a8 --- /dev/null +++ b/plugins/zsh-navigation-tools/n-help @@ -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. +" diff --git a/plugins/zsh-navigation-tools/n-history b/plugins/zsh-navigation-tools/n-history index 9f1d6279..68370f6e 100644 --- a/plugins/zsh-navigation-tools/n-history +++ b/plugins/zsh-navigation-tools/n-history @@ -15,27 +15,323 @@ zmodload zsh/parameter 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 -[ -f ~/.config/znt/n-history.conf ] && . ~/.config/znt/n-history.conf +local two_NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN +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 selected - -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 private_history_db="$HOME/.config/znt/privhist.db" 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" -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 selected="$reply[REPLY]" @@ -43,7 +339,12 @@ if [ "$REPLY" -gt 0 ]; then if [ "${(t)CURSOR}" = "integer-local-special" ]; then zle redisplay 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 print -zr "$selected" fi diff --git a/plugins/zsh-navigation-tools/n-kill b/plugins/zsh-navigation-tools/n-kill index e5208228..0d10565e 100644 --- a/plugins/zsh-navigation-tools/n-kill +++ b/plugins/zsh-navigation-tools/n-kill @@ -13,8 +13,8 @@ zmodload zsh/curses local IFS=" " -[ -f ~/.config/znt/n-list.conf ] && . ~/.config/znt/n-list.conf -[ -f ~/.config/znt/n-kill.conf ] && . ~/.config/znt/n-kill.conf +[ -f ~/.config/znt/n-list.conf ] && builtin source ~/.config/znt/n-list.conf +[ -f ~/.config/znt/n-kill.conf ] && builtin source ~/.config/znt/n-kill.conf typeset -A signals signals=( diff --git a/plugins/zsh-navigation-tools/n-list b/plugins/zsh-navigation-tools/n-list index 50159b4a..d3a8da30 100644 --- a/plugins/zsh-navigation-tools/n-list +++ b/plugins/zsh-navigation-tools/n-list @@ -29,7 +29,7 @@ _nlist_exit() { setopt localoptions 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 main zcurses 2>/dev/null refresh @@ -167,6 +167,26 @@ integer prev_uniq_mode=0 integer prev_start_idx=-1 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 if [[ -z "$NLIST_REMEMBER_STATE" || "$NLIST_REMEMBER_STATE" -eq 0 || "$NLIST_REMEMBER_STATE" -eq 2 ]]; then 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_TEXT_OFFSET=0 NLIST_IS_UNIQ_MODE=0 + NLIST_IS_F_MODE=0 # Zero - because it isn't known, unless we # confirm that first element is selectable @@ -207,12 +228,19 @@ zcurses delwin main 2>/dev/null zcurses delwin inner 2>/dev/null zcurses addwin main "$term_height" "$term_width" 0 0 zcurses addwin inner "$inner_height" "$inner_width" 1 2 -zcurses bg main white/black -zcurses bg inner white/black +# From n-list.conf +[ "$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 _nlist_cursor_visibility 0 fi +zcurses refresh + # # Listening for input # @@ -237,9 +265,12 @@ while (( 1 )); do # Do searching (filtering with string) if [ -n "$NLIST_SEARCH_BUFFER" ]; then # 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_uniq_mode="$NLIST_IS_UNIQ_MODE" + prev_f_mode="$NLIST_IS_F_MODE" # regenerating list -> regenerating disp_list prev_start_idx=-1 @@ -251,7 +282,9 @@ while (( 1 )); do # Remove non-selectable elements [ "$#NLIST_NONSELECTABLE_ELEMENTS" -gt 0 ] && for i in "${(nO)NLIST_NONSELECTABLE_ELEMENTS[@]}"; do - list[$i]=() + if [[ "$i" = <-> ]]; then + list[$i]=() + fi done # Remove duplicates @@ -266,13 +299,22 @@ while (( 1 )); do local search_pattern="" local colsearch_pattern="" if [ -n "$search_buffer" ]; then - # Patterns will be *foo*~^*bar* and (foo|bar) - search_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*}" ) + 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) + search_pattern="${search_buffer// ##/*~^*}" + colsearch_pattern="${search_buffer// ##/|}" + list=( "${(@M)list:#(#i)*$~search_pattern*}" ) + fi done last_element="$#list" @@ -295,7 +337,13 @@ while (( 1 )); do local red=$'\x1b[00;31m' reset=$'\x1b[00;00m' # The repeat will make the matching work on a fresh heap repeat 1; do - disp_list=( "${(@)disp_list//(#mi)($~colsearch_pattern)/$red${MATCH}$reset}" ) + 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}" ) + fi done fi @@ -304,6 +352,7 @@ while (( 1 )); do fi # Output colored list + zcurses clear inner n-list-draw "$(( (NLIST_CURRENT_IDX-1) % page_height + 1 ))" \ "$page_height" "$page_width" 0 0 "$NLIST_TEXT_OFFSET" inner \ "$disp_list[@]" @@ -327,7 +376,9 @@ while (( 1 )); do # Remove non-selectable elements only when in uniq mode [ "$NLIST_IS_UNIQ_MODE" -eq 1 ] && [ "$#NLIST_NONSELECTABLE_ELEMENTS" -gt 0 ] && for i in "${(nO)NLIST_NONSELECTABLE_ELEMENTS[@]}"; do - list[$i]=() + if [[ "$i" = <-> ]]; then + list[$i]=() + fi done # Remove duplicates when in uniq mode @@ -355,29 +406,46 @@ while (( 1 )); do fi # Output the list + zcurses clear inner n-list-draw "$(( (NLIST_CURRENT_IDX-1) % page_height + 1 ))" \ "$page_height" "$page_width" 0 0 "$NLIST_TEXT_OFFSET" inner \ "$disp_list[@]" fi local status_msg_strlen - if [ "$NLIST_IS_SEARCH_MODE" = "1" ]; then - local _txt2="" - [ "$NLIST_IS_UNIQ_MODE" -eq 1 ] && _txt2="[-UNIQ-] " - _nlist_status_msg "${_txt2}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="" _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 "" + local keywordmsg="" + if [ "$keywordisfresh" = "1" ]; then + keywordmsg="($curkeyword/$nkeywords) " + keywordisfresh="0" 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 string main $top_msg @@ -400,7 +468,7 @@ while (( 1 )); do n-list-input "$NLIST_CURRENT_IDX" "$NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN" \ "$page_height" "$page_width" "$last_element" "$NLIST_TEXT_OFFSET" \ "$final_key" "$NLIST_IS_SEARCH_MODE" "$NLIST_SEARCH_BUFFER" \ - "$NLIST_IS_UNIQ_MODE" + "$NLIST_IS_UNIQ_MODE" "$NLIST_IS_F_MODE" selection="$reply[1]" action="$reply[2]" @@ -410,8 +478,11 @@ while (( 1 )); do NLIST_IS_SEARCH_MODE="$reply[6]" NLIST_SEARCH_BUFFER="$reply[7]" 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=( "$list[@]" ) break @@ -422,6 +493,18 @@ while (( 1 )); do elif [ "$action" = "REDRAW" ]; then zcurses clear main 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 done diff --git a/plugins/zsh-navigation-tools/n-list-draw b/plugins/zsh-navigation-tools/n-list-draw index 2f8b1d0d..ae1e0115 100644 --- a/plugins/zsh-navigation-tools/n-list-draw +++ b/plugins/zsh-navigation-tools/n-list-draw @@ -79,9 +79,9 @@ _nlist_print_with_ansi() { if (( no_match == 0 )); 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 - zcurses attr "$win" white/black + zcurses attr "$win" "$colorpair" fi fi done @@ -97,17 +97,19 @@ local win="$7" shift 7 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" -# With Linux terminal underline won't work properly -[ "$TERM" = "linux" ] && active_text="reverse" +# Linux has ncv 18, screen* has ncv 3 - underline won't work properly +(( ${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 end_idx=max_idx [ "$end_idx" -gt "$#" ] && end_idx="$#" integer y=y_offset -zcurses attr "$win" $bold white/black +zcurses attr "$win" "$bold" "$colorpair" integer i text_len local text diff --git a/plugins/zsh-navigation-tools/n-list-input b/plugins/zsh-navigation-tools/n-list-input index 957cd5a0..9bafc51b 100644 --- a/plugins/zsh-navigation-tools/n-list-input +++ b/plugins/zsh-navigation-tools/n-list-input @@ -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 } +_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 reply=( -1 '' ) integer current_idx="$1" @@ -26,6 +72,7 @@ local key="$7" integer search="$8" local buffer="$9" integer uniq_mode="$10" +integer f_mode="$11" # # Listening for input @@ -79,21 +126,36 @@ case "$key" in ${NLIST_NONSELECTABLE_ELEMENTS[(r)$current_idx]} != $current_idx ]] then # Save current element in the result variable - reply=( $current_idx SELECT ) + reply=( $current_idx "SELECT" ) 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) - reply=( -1 QUIT ) + reply=( -1 "QUIT" ) ;; (/) search=1 _nlist_cursor_visibility 1 ;; ($'\t') - reply=( $current_idx LEAVE ) + reply=( $current_idx "LEAVE" ) ;; ($'\C-L') - reply=( -1 REDRAW ) + reply=( -1 "REDRAW" ) ;; (\]) [[ "${(t)NLIST_HOP_INDEXES}" = "array" || "${(t)NLIST_HOP_INDEXES}" = "array-local" ]] && @@ -127,9 +189,41 @@ case "$key" in ($'\E') buffer="" ;; + (F3) + if [ "$search" = "1" ]; then + search=0 + _nlist_cursor_visibility 0 + else + search=1 + _nlist_cursor_visibility 1 + fi + ;; (o|$'\C-O') 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 @@ -138,11 +232,19 @@ else case "$key" in ($'\n'|ENTER) - search=0 - _nlist_cursor_visibility 0 + 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 + _nlist_cursor_visibility 0 + fi ;; ($'\C-L') - reply=( -1 REDRAW ) + reply=( -1 "REDRAW" ) ;; # @@ -192,8 +294,14 @@ case "$key" in (RIGHT) hscroll+=7 ;; - (F1|F2|F3|F4|F5|F6|F7|F8|F9|F10) - # ignore + (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 ;; # @@ -214,9 +322,39 @@ case "$key" in search=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') 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 # ignore all other control keys @@ -234,5 +372,6 @@ reply[5]="$hscroll" reply[6]="$search" reply[7]="$buffer" reply[8]="$uniq_mode" +reply[9]="$f_mode" # vim: set filetype=zsh: diff --git a/plugins/zsh-navigation-tools/n-options b/plugins/zsh-navigation-tools/n-options index 91589bd4..b1a93401 100644 --- a/plugins/zsh-navigation-tools/n-options +++ b/plugins/zsh-navigation-tools/n-options @@ -14,8 +14,8 @@ local IFS=" unset NLIST_COLORING_PATTERN -[ -f ~/.config/znt/n-list.conf ] && . ~/.config/znt/n-list.conf -[ -f ~/.config/znt/n-options.conf ] && . ~/.config/znt/n-options.conf +[ -f ~/.config/znt/n-list.conf ] && builtin source ~/.config/znt/n-list.conf +[ -f ~/.config/znt/n-options.conf ] && builtin source ~/.config/znt/n-options.conf # TODO restore options unsetopt localoptions diff --git a/plugins/zsh-navigation-tools/n-panelize b/plugins/zsh-navigation-tools/n-panelize index 01d01cb9..e2b567f2 100644 --- a/plugins/zsh-navigation-tools/n-panelize +++ b/plugins/zsh-navigation-tools/n-panelize @@ -17,8 +17,8 @@ local IFS=" unset NLIST_COLORING_PATTERN -[ -f ~/.config/znt/n-list.conf ] && . ~/.config/znt/n-list.conf -[ -f ~/.config/znt/n-panelize.conf ] && . ~/.config/znt/n-panelize.conf +[ -f ~/.config/znt/n-list.conf ] && builtin source ~/.config/znt/n-list.conf +[ -f ~/.config/znt/n-panelize.conf ] && builtin source ~/.config/znt/n-panelize.conf local list local selected diff --git a/plugins/zsh-navigation-tools/znt-history-widget b/plugins/zsh-navigation-tools/znt-history-widget index a4a26cbf..479c2211 100644 --- a/plugins/zsh-navigation-tools/znt-history-widget +++ b/plugins/zsh-navigation-tools/znt-history-widget @@ -4,6 +4,14 @@ local NLIST_START_IN_UNIQ_MODE=1 # Only if current $BUFFER doesn't come from history 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" fi diff --git a/plugins/zsh-navigation-tools/zsh-navigation-tools.plugin.zsh b/plugins/zsh-navigation-tools/zsh-navigation-tools.plugin.zsh index 4aa3aa4b..b2654915 100755 --- a/plugins/zsh-navigation-tools/zsh-navigation-tools.plugin.zsh +++ b/plugins/zsh-navigation-tools/zsh-navigation-tools.plugin.zsh @@ -15,13 +15,21 @@ if ! test -d "$CONFIG_DIR"; then mkdir "$CONFIG_DIR" 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 -for i; do - if ! test -f "$CONFIG_DIR/$i"; then - cp "$REPO_DIR/.config/znt/$i" "$CONFIG_DIR" - fi -done +# 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 + cp "$REPO_DIR/.config/znt/$i" "$CONFIG_DIR" + fi + done +fi # Don't leave positional parameters being set set -- @@ -30,12 +38,13 @@ set -- # 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 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 bindkey '^R' znt-history-widget setopt AUTO_PUSHD HIST_IGNORE_DUPS PUSHD_IGNORE_DUPS +zstyle ':completion::complete:n-kill::bits' matcher 'r:|=** l:|=*' From 0b5d18a247c440891251f9a80e7301b42c0dc981 Mon Sep 17 00:00:00 2001 From: Felipe Contreras Date: Tue, 17 May 2016 20:23:20 -0500 Subject: [PATCH 25/37] gitfast: update to upstream v2.0 Signed-off-by: Felipe Contreras --- plugins/gitfast/git-prompt.sh | 72 ++++++++++++++++++++++++++++++----- 1 file changed, 62 insertions(+), 10 deletions(-) diff --git a/plugins/gitfast/git-prompt.sh b/plugins/gitfast/git-prompt.sh index 54489080..9d684b10 100644 --- a/plugins/gitfast/git-prompt.sh +++ b/plugins/gitfast/git-prompt.sh @@ -207,7 +207,16 @@ __git_ps1_show_upstream () p=" u+${count#* }-${count% *}" ;; esac 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 @@ -259,7 +268,7 @@ __git_ps1_colorize_gitstring () r="$c_clear$r" } -eread () +__git_eread () { f="$1" shift @@ -297,6 +306,43 @@ __git_ps1 () ;; 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 repo_info="$(git rev-parse --git-dir --is-inside-git-dir \ --is-bare-repository --is-inside-work-tree \ @@ -328,9 +374,9 @@ __git_ps1 () local step="" local total="" if [ -d "$g/rebase-merge" ]; then - eread "$g/rebase-merge/head-name" b - eread "$g/rebase-merge/msgnum" step - eread "$g/rebase-merge/end" total + __git_eread "$g/rebase-merge/head-name" b + __git_eread "$g/rebase-merge/msgnum" step + __git_eread "$g/rebase-merge/end" total if [ -f "$g/rebase-merge/interactive" ]; then r="|REBASE-i" else @@ -338,10 +384,10 @@ __git_ps1 () fi else if [ -d "$g/rebase-apply" ]; then - eread "$g/rebase-apply/next" step - eread "$g/rebase-apply/last" total + __git_eread "$g/rebase-apply/next" step + __git_eread "$g/rebase-apply/last" total if [ -f "$g/rebase-apply/rebasing" ]; then - eread "$g/rebase-apply/head-name" b + __git_eread "$g/rebase-apply/head-name" b r="|REBASE" elif [ -f "$g/rebase-apply/applying" ]; then r="|AM" @@ -365,7 +411,7 @@ __git_ps1 () b="$(git symbolic-ref HEAD 2>/dev/null)" else local head="" - if ! eread "$g/HEAD" head; then + if ! __git_eread "$g/HEAD" head; then if [ $pcmode = yes ]; then PS1="$ps1pc_start$ps1pc_end" fi @@ -445,8 +491,14 @@ __git_ps1 () __git_ps1_colorize_gitstring 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 gitstring="$c${b##refs/heads/}${f:+$z$f}$r$p" + local gitstring="$c$b${f:+$z$f}$r$p" if [ $pcmode = yes ]; then if [ "${__git_printf_supports_v-}" != yes ]; then From 169cd8b6ca803721071795c6a207aa97265c8528 Mon Sep 17 00:00:00 2001 From: Felipe Contreras Date: Wed, 18 May 2016 03:07:09 -0500 Subject: [PATCH 26/37] gitfast: update to upstream v2.4 Signed-off-by: Felipe Contreras --- plugins/gitfast/_git | 1 + plugins/gitfast/git-completion.bash | 129 +++++++++++++++++++++------- plugins/gitfast/git-prompt.sh | 41 ++++++--- 3 files changed, 129 insertions(+), 42 deletions(-) diff --git a/plugins/gitfast/_git b/plugins/gitfast/_git index c75b0be7..7ed3e3c2 100644 --- a/plugins/gitfast/_git +++ b/plugins/gitfast/_git @@ -104,6 +104,7 @@ __git_zsh_bash_func () local expansion=$(__git_aliased_command "$command") if [ -n "$expansion" ]; then + words[1]=$expansion completion_func="_git_${expansion//-/_}" declare -f $completion_func >/dev/null && $completion_func fi diff --git a/plugins/gitfast/git-completion.bash b/plugins/gitfast/git-completion.bash index 9525343f..5944c824 100644 --- a/plugins/gitfast/git-completion.bash +++ b/plugins/gitfast/git-completion.bash @@ -16,11 +16,17 @@ # # 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: -# source ~/.git-completion.sh +# source ~/.git-completion.bash # 3) Consider changing your PS1 to also show the current branch, # 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 *:*) : great ;; @@ -180,7 +186,7 @@ fi __gitcompappend () { - local i=${#COMPREPLY[@]} + local x i=${#COMPREPLY[@]} for x in $1; do if [[ "$x" == "$3"* ]]; then COMPREPLY[i++]="$2$x$4" @@ -275,16 +281,12 @@ __gitcomp_file () # argument, and using the options specified in the second argument. __git_ls_files_helper () { - ( - test -n "${CDPATH+set}" && unset CDPATH - cd "$1" - if [ "$2" == "--committable" ]; then - git diff-index --name-only --relative HEAD - else - # NOTE: $2 is not quoted in order to support multiple options - git ls-files --exclude-standard $2 - fi - ) 2>/dev/null + if [ "$2" == "--committable" ]; then + git -C "$1" diff-index --name-only --relative HEAD + else + # NOTE: $2 is not quoted in order to support multiple options + git -C "$1" ls-files --exclude-standard $2 + fi 2>/dev/null } @@ -382,7 +384,8 @@ __git_refs () ;; *) 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 } @@ -408,12 +411,9 @@ __git_refs_remotes () __git_remotes () { - local i IFS=$'\n' d="$(__gitdir)" + local d="$(__gitdir)" test -d "$d/remotes" && ls -1 "$d/remotes" - for i in $(git --git-dir="$d" config --get-regexp 'remote\..*\.url' 2>/dev/null); do - i="${i#remote.}" - echo "${i/.url*/}" - done + git --git-dir="$d" remote } __git_list_merge_strategies () @@ -516,7 +516,7 @@ __git_complete_index_file () ;; esac - __gitcomp_file "$(__git_index_files "$1" "$pfx")" "$pfx" "$cur_" + __gitcomp_file "$(__git_index_files "$1" ${pfx:+"$pfx"})" "$pfx" "$cur_" } __git_complete_file () @@ -781,6 +781,10 @@ __git_aliased_command () -*) : option ;; *=*) : setting env ;; 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" return @@ -973,7 +977,7 @@ _git_branch () case "$cur" in --set-upstream-to=*) - __gitcomp "$(__git_refs)" "" "${cur##--set-upstream-to=}" + __gitcomp_nl "$(__git_refs)" "" "${cur##--set-upstream-to=}" ;; --*) __gitcomp " @@ -1041,7 +1045,7 @@ _git_checkout () _git_cherry () { - __gitcomp "$(__git_refs)" + __gitcomp_nl "$(__git_refs)" } _git_cherry_pick () @@ -1165,8 +1169,8 @@ __git_diff_common_options="--stat --numstat --shortstat --summary --full-index --binary --abbrev --diff-filter= --find-copies-harder --text --ignore-space-at-eol --ignore-space-change - --ignore-all-space --exit-code --quiet --ext-diff - --no-ext-diff + --ignore-all-space --ignore-blank-lines --exit-code + --quiet --ext-diff --no-ext-diff --no-prefix --src-prefix= --dst-prefix= --inter-hunk-context= --patience --histogram --minimal @@ -1197,7 +1201,7 @@ _git_diff () } __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 () @@ -1221,14 +1225,20 @@ _git_difftool () __git_complete_revlist_file } +__git_fetch_recurse_submodules="yes on-demand no" + __git_fetch_options=" --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 () { case "$cur" in + --recurse-submodules=*) + __gitcomp "$__git_fetch_recurse_submodules" "" "${cur##--recurse-submodules=}" + return + ;; --*) __gitcomp "$__git_fetch_options" return @@ -1292,7 +1302,7 @@ _git_gitk () } __git_match_ctag() { - awk "/^${1////\\/}/ { print \$1 }" "$2" + awk "/^${1//\//\\/}/ { print \$1 }" "$2" } _git_grep () @@ -1412,7 +1422,7 @@ __git_log_gitk_options=" # Options that go well for log and shortlog (not gitk) __git_log_shortlog_options=" --author= --committer= --grep= - --all-match + --all-match --invert-grep " __git_log_pretty_formats="oneline short medium full fuller email raw format:" @@ -1451,6 +1461,7 @@ _git_log () --abbrev-commit --abbrev= --relative-date --date= --pretty= --format= --oneline + --show-signature --cherry-pick --graph --decorate --decorate= @@ -1466,9 +1477,12 @@ _git_log () __git_complete_revlist } +# Common merge options shared by git-merge(1) and git-pull(1). __git_merge_options=" --no-commit --no-stat --log --no-log --squash --strategy --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 () @@ -1477,7 +1491,8 @@ _git_merge () case "$cur" in --*) - __gitcomp "$__git_merge_options" + __gitcomp "$__git_merge_options + --rerere-autoupdate --no-rerere-autoupdate --abort" return esac __gitcomp_nl "$(__git_refs)" @@ -1583,6 +1598,10 @@ _git_pull () __git_complete_strategy && return case "$cur" in + --recurse-submodules=*) + __gitcomp "$__git_fetch_recurse_submodules" "" "${cur##--recurse-submodules=}" + return + ;; --*) __gitcomp " --rebase --no-rebase @@ -1595,22 +1614,55 @@ _git_pull () __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 () { case "$prev" in --repo) __gitcomp_nl "$(__git_remotes)" return + ;; + --recurse-submodules) + __gitcomp "$__git_push_recurse_submodules" + return + ;; esac case "$cur" in --repo=*) __gitcomp_nl "$(__git_remotes)" "" "${cur##--repo=}" 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 " --all --mirror --tags --dry-run --force --verbose + --quiet --prune --delete --follow-tags --receive-pack= --repo= --set-upstream + --force-with-lease --force-with-lease= --recurse-submodules= " return ;; @@ -1638,6 +1690,7 @@ _git_rebase () --committer-date-is-author-date --ignore-date --ignore-whitespace --whitespace= --autosquash --fork-point --no-fork-point + --autostash " return @@ -1820,6 +1873,10 @@ _git_config () __gitcomp "$__git_send_email_suppresscc_options" return ;; + sendemail.transferencoding) + __gitcomp "7bit 8bit quoted-printable base64" + return + ;; --get|--get-all|--unset|--unset-all) __gitcomp_nl "$(__git_config_get_set_variables)" return @@ -1954,6 +2011,7 @@ _git_config () color.status.changed color.status.header color.status.nobranch + color.status.unmerged color.status.untracked color.status.updated color.ui @@ -2128,6 +2186,7 @@ _git_config () pull.octopus pull.twohead push.default + push.followTags rebase.autosquash rebase.stat receive.autogc @@ -2287,6 +2346,7 @@ _git_show () ;; --*) __gitcomp "--pretty= --format= --abbrev-commit --oneline + --show-signature $__git_diff_common_options " return @@ -2492,6 +2552,16 @@ _git_tag () __gitcomp_nl "$(__git_refs)" ;; esac + + case "$cur" in + --*) + __gitcomp " + --list --delete --verify --annotate --message --file + --sign --cleanup --local-user --force --column --sort + --contains --points-at + " + ;; + esac } _git_whatchanged () @@ -2547,6 +2617,7 @@ __git_main () local expansion=$(__git_aliased_command "$command") if [ -n "$expansion" ]; then + words[1]=$expansion completion_func="_git_${expansion//-/_}" declare -f $completion_func >/dev/null && $completion_func fi diff --git a/plugins/gitfast/git-prompt.sh b/plugins/gitfast/git-prompt.sh index 9d684b10..f18aedc7 100644 --- a/plugins/gitfast/git-prompt.sh +++ b/plugins/gitfast/git-prompt.sh @@ -84,6 +84,11 @@ # GIT_PS1_SHOWCOLORHINTS to a nonempty value. The colors are based on # the colored output of "git status -sb" and are available only when # 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 __git_printf_supports_v= @@ -270,7 +275,7 @@ __git_ps1_colorize_gitstring () __git_eread () { - f="$1" + local f="$1" shift test -r "$f" && read "$@" <"$f" } @@ -288,6 +293,8 @@ __git_eread () # In this mode you can request colored hints using GIT_PS1_SHOWCOLORHINTS=true __git_ps1 () { + # preserve exit status + local exit=$? local pcmode=no local detached=no local ps1pc_start='\u@\h:\w ' @@ -299,10 +306,14 @@ __git_ps1 () ps1pc_start="$1" ps1pc_end="$2" 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}" ;; - *) return + *) return $exit ;; esac @@ -350,11 +361,7 @@ __git_ps1 () rev_parse_exit_code="$?" if [ -z "$repo_info" ]; then - if [ $pcmode = yes ]; then - #In PC mode PS1 always needs to be set - PS1="$ps1pc_start$ps1pc_end" - fi - return + return $exit fi local short_sha @@ -369,6 +376,14 @@ __git_ps1 () local inside_gitdir="${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 b="" local step="" @@ -412,10 +427,7 @@ __git_ps1 () else local head="" if ! __git_eread "$g/HEAD" head; then - if [ $pcmode = yes ]; then - PS1="$ps1pc_start$ps1pc_end" - fi - return + return $exit fi # is it a symbolic ref? b="${head#ref: }" @@ -468,13 +480,14 @@ __git_ps1 () fi fi if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ] && - [ -r "$g/refs/stash" ]; then + git rev-parse --verify --quiet refs/stash >/dev/null + then s="$" fi if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ] && [ "$(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 --error-unmatch -- ':/*' >/dev/null 2>/dev/null then u="%${ZSH_VERSION+%}" fi @@ -510,4 +523,6 @@ __git_ps1 () else printf -- "$printf_format" "$gitstring" fi + + return $exit } From d2712d3180e7667ac028f8a40433b9967004cb90 Mon Sep 17 00:00:00 2001 From: Ivan Mironov Date: Wed, 18 May 2016 12:27:23 +0300 Subject: [PATCH 27/37] Add alias for oneline git tree with --all option --- plugins/git/git.plugin.zsh | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh index 220bf259..34f69029 100644 --- a/plugins/git/git.plugin.zsh +++ b/plugins/git/git.plugin.zsh @@ -157,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 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 gloga='git log --oneline --decorate --graph --all' alias glp="_git_log_prettily" compdef _git glp=git-log From eec3dc607c40b33a828938e396a459e70d8b01ed Mon Sep 17 00:00:00 2001 From: Felipe Contreras Date: Thu, 19 May 2016 23:27:30 -0500 Subject: [PATCH 28/37] gitfast: update to upstream v2.8 Signed-off-by: Felipe Contreras --- plugins/gitfast/git-completion.bash | 119 +++++++++++++++++----------- plugins/gitfast/git-prompt.sh | 13 +-- 2 files changed, 80 insertions(+), 52 deletions(-) diff --git a/plugins/gitfast/git-completion.bash b/plugins/gitfast/git-completion.bash index 5944c824..e3918c87 100644 --- a/plugins/gitfast/git-completion.bash +++ b/plugins/gitfast/git-completion.bash @@ -10,6 +10,7 @@ # *) local and remote tag names # *) .git/remotes file names # *) git 'subcommands' +# *) git email aliases for git-send-email # *) tree paths within 'ref:path/to/file' expressions # *) file paths within current working directory and index # *) common --long-options @@ -663,10 +664,11 @@ __git_list_porcelain_commands () check-mailmap) : plumbing;; check-ref-format) : plumbing;; checkout-index) : plumbing;; + column) : internal helper;; commit-tree) : plumbing;; count-objects) : infrequent;; - credential-cache) : credentials helper;; - credential-store) : credentials helper;; + credential) : credentials;; + credential-*) : credentials helper;; cvsexportcommit) : export;; cvsimport) : import;; cvsserver) : daemon;; @@ -735,35 +737,28 @@ __git_list_porcelain_commands () __git_porcelain_commands= __git_compute_porcelain_commands () { - __git_compute_all_commands test -n "$__git_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 () { - local i IFS=$'\n' - 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_get_config_variables "pretty" } __git_aliases () { - local i IFS=$'\n' - 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_get_config_variables "alias" } # __git_aliased_command requires 1 argument @@ -1114,7 +1109,7 @@ _git_commit () case "$cur" in --cleanup=*) - __gitcomp "default strip verbatim whitespace + __gitcomp "default scissors strip verbatim whitespace " "" "${cur##--cleanup=}" return ;; @@ -1174,7 +1169,7 @@ __git_diff_common_options="--stat --numstat --shortstat --summary --no-prefix --src-prefix= --dst-prefix= --inter-hunk-context= --patience --histogram --minimal - --raw --word-diff + --raw --word-diff --word-diff-regex= --dirstat --dirstat= --dirstat-by-file --dirstat-by-file= --cumulative --diff-algorithm= @@ -1317,6 +1312,7 @@ _git_grep () --full-name --line-number --extended-regexp --basic-regexp --fixed-strings --perl-regexp + --threads --files-with-matches --name-only --files-without-match --max-depth @@ -1448,7 +1444,7 @@ _git_log () return ;; --decorate=*) - __gitcomp "long short" "" "${cur##--decorate=}" + __gitcomp "full short no" "" "${cur##--decorate=}" return ;; --*) @@ -1673,7 +1669,10 @@ _git_push () _git_rebase () { 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" return fi @@ -1689,8 +1688,12 @@ _git_rebase () --preserve-merges --stat --no-stat --committer-date-is-author-date --ignore-date --ignore-whitespace --whitespace= - --autosquash --fork-point --no-fork-point - --autostash + --autosquash --no-autosquash + --fork-point --no-fork-point + --autostash --no-autostash + --verify --no-verify + --keep-empty --root --force-rebase --no-ff + --exec " return @@ -1715,6 +1718,15 @@ __git_send_email_suppresscc_options="author self cc bodycc sob cccmd body all" _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 --confirm=*) __gitcomp " @@ -1739,6 +1751,12 @@ _git_send_email () " "" "${cur##--thread=}" 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 --compose --confirm= --dry-run --envelope-sender @@ -1780,15 +1798,7 @@ __git_config_get_set_variables () c=$((--c)) done - git --git-dir="$(__gitdir)" config $config_file --list 2>/dev/null | - while read -r line - do - case "$line" in - *.*=*) - echo "${line/=*/}" - ;; - esac - done + git --git-dir="$(__gitdir)" config $config_file --name-only --list 2>/dev/null } _git_config () @@ -1803,7 +1813,7 @@ _git_config () return ;; branch.*.rebase) - __gitcomp "false true" + __gitcomp "false true preserve interactive" return ;; remote.pushdefault) @@ -1893,6 +1903,7 @@ _git_config () --get --get-all --get-regexp --add --unset --unset-all --remove-section --rename-section + --name-only " return ;; @@ -2049,6 +2060,7 @@ _git_config () core.sparseCheckout core.symlinks core.trustctime + core.untrackedCache core.warnAmbiguousRefs core.whitespace core.worktree @@ -2123,6 +2135,8 @@ _git_config () http.noEPSV http.postBuffer http.proxy + http.sslCipherList + http.sslVersion http.sslCAInfo http.sslCAPath http.sslCert @@ -2260,12 +2274,7 @@ _git_remote () __git_complete_remote_or_refspec ;; update) - local i c='' IFS=$'\n' - for i in $(git --git-dir="$(__gitdir)" config --get-regexp "remotes\..*" 2>/dev/null); do - i="${i#remotes.}" - c="$c ${i/ */}" - done - __gitcomp "$c" + __gitcomp "$(__git_get_config_variables "remotes")" ;; *) ;; @@ -2292,6 +2301,11 @@ _git_reset () _git_revert () { + local dir="$(__gitdir)" + if [ -f "$dir"/REVERT_HEAD ]; then + __gitcomp "--continue --quit --abort" + return + fi case "$cur" in --*) __gitcomp "--edit --mainline --no-edit --no-commit --signoff" @@ -2360,7 +2374,7 @@ _git_show_branch () case "$cur" in --*) __gitcomp " - --all --remotes --topo-order --current --more= + --all --remotes --topo-order --date-order --current --more= --list --independent --merge-base --no-name --color --no-color --sha1-name --sparse --topics --reflog @@ -2373,7 +2387,7 @@ _git_show_branch () _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 subcommand="$(__git_find_on_cmdline "$subcommands")" if [ -z "$subcommand" ]; then @@ -2395,9 +2409,20 @@ _git_stash () apply,--*|pop,--*) __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 \ | sed -n -e 's/:.*//p')" ;; diff --git a/plugins/gitfast/git-prompt.sh b/plugins/gitfast/git-prompt.sh index f18aedc7..64219e63 100644 --- a/plugins/gitfast/git-prompt.sh +++ b/plugins/gitfast/git-prompt.sh @@ -66,6 +66,10 @@ # git always compare HEAD to @{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 # find one, or @{upstream} otherwise. Once you have set # GIT_PS1_SHOWUPSTREAM, you can override it on a per-repository basis by @@ -472,10 +476,9 @@ __git_ps1 () if [ -n "${GIT_PS1_SHOWDIRTYSTATE-}" ] && [ "$(git config --bool bash.showDirtyState)" != "false" ] then - git diff --no-ext-diff --quiet --exit-code || w="*" - if [ -n "$short_sha" ]; then - git diff-index --cached --quiet HEAD -- || i="+" - else + git diff --no-ext-diff --quiet || w="*" + git diff --no-ext-diff --cached --quiet || i="+" + if [ -z "$short_sha" ] && [ -z "$i" ]; then i="#" fi fi @@ -487,7 +490,7 @@ __git_ps1 () if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ] && [ "$(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 u="%${ZSH_VERSION+%}" fi From 079fef48dfc06b415423abb0a1e467f85e03b2c4 Mon Sep 17 00:00:00 2001 From: Felipe Contreras Date: Thu, 19 May 2016 23:32:44 -0500 Subject: [PATCH 29/37] gitfast: fix the prompt colour We can add colour in Zsh without the need of pcmode. Signed-off-by: Felipe Contreras --- plugins/gitfast/git-prompt.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/plugins/gitfast/git-prompt.sh b/plugins/gitfast/git-prompt.sh index 64219e63..0da14eee 100644 --- a/plugins/gitfast/git-prompt.sh +++ b/plugins/gitfast/git-prompt.sh @@ -502,9 +502,11 @@ __git_ps1 () local z="${GIT_PS1_STATESEPARATOR-" "}" - # NO color option unless in PROMPT_COMMAND mode - if [ $pcmode = yes ] && [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then - __git_ps1_colorize_gitstring + # NO color option unless in PROMPT_COMMAND mode or it's Zsh + if [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then + if [ $pcmode = yes ] || [ -n "${ZSH_VERSION-}" ]; then + __git_ps1_colorize_gitstring + fi fi b=${b##refs/heads/} From 36e29fbc193c32d14f0d63fbf6ae233a924b1d67 Mon Sep 17 00:00:00 2001 From: Felipe Contreras Date: Thu, 5 Jun 2014 18:15:47 -0500 Subject: [PATCH 30/37] completion: zsh: improve main function selection Sometimes we want to use the function directly (e.g. _git_checkout), for example when zsh has the option 'complete_aliases', this way, we can do something like: compdef _git gco=git_checkout Signed-off-by: Felipe Contreras --- plugins/gitfast/_git | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/gitfast/_git b/plugins/gitfast/_git index 7ed3e3c2..6d1b4ecc 100644 --- a/plugins/gitfast/_git +++ b/plugins/gitfast/_git @@ -214,8 +214,10 @@ _git () if (( $+functions[__${service}_zsh_main] )); then __${service}_zsh_main - else + elif (( $+functions[__${service}_main] )); then emulate ksh -c __${service}_main + elif (( $+functions[_${service}] )); then + emulate ksh -c _${service} fi let _ret && _default && _ret=0 From c2168d741f129efb52ff86e0c6bcd1efe191a58b Mon Sep 17 00:00:00 2001 From: Ivan Mironov Date: Sun, 22 May 2016 03:47:55 +0300 Subject: [PATCH 31/37] Arcanist plugin (#5106) * Add initial list of aliases * Add lint and diff aliases * Remove usage section --- plugins/arcanist/README.md | 5 +++++ plugins/arcanist/arcanist.plugin.zsh | 21 +++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 plugins/arcanist/README.md create mode 100644 plugins/arcanist/arcanist.plugin.zsh diff --git a/plugins/arcanist/README.md b/plugins/arcanist/README.md new file mode 100644 index 00000000..4bb8c809 --- /dev/null +++ b/plugins/arcanist/README.md @@ -0,0 +1,5 @@ +## arcanist + +**Maintainer:** [@emzar](https://github.com/emzar) + +This plugin adds many useful aliases. diff --git a/plugins/arcanist/arcanist.plugin.zsh b/plugins/arcanist/arcanist.plugin.zsh new file mode 100644 index 00000000..90851ac6 --- /dev/null +++ b/plugins/arcanist/arcanist.plugin.zsh @@ -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' From f2b1be0ddaa6603689d18630a62b468cdfc3246b Mon Sep 17 00:00:00 2001 From: Grant Regimbal Date: Sat, 21 May 2016 17:51:30 -0700 Subject: [PATCH 32/37] vagrant snapshot (#5032) --- plugins/vagrant/_vagrant | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/vagrant/_vagrant b/plugins/vagrant/_vagrant index 35377bd9..c5335e72 100644 --- a/plugins/vagrant/_vagrant +++ b/plugins/vagrant/_vagrant @@ -31,6 +31,7 @@ _1st_arguments=( 'ssh-config:Outputs .ssh/config valid syntax for connecting to this environment via ssh' 'status:Shows the status of the current Vagrant environment' 'suspend:Suspends the currently running vagrant environment' + 'snapshot:Used to manage snapshots with the guest machine' 'up:Creates the vagrant environment' 'version:Prints current and latest Vagrant version' '--help:[TASK] Describe available tasks or one specific task' From 670a470a85464e94420a562ab6a22871c20391e8 Mon Sep 17 00:00:00 2001 From: jordantwombly Date: Sat, 21 May 2016 20:51:48 -0400 Subject: [PATCH 33/37] fixed bower completion error from issue #2694 (#5056) --- plugins/bower/bower.plugin.zsh | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/bower/bower.plugin.zsh b/plugins/bower/bower.plugin.zsh index 68a67a3c..6019b9d3 100644 --- a/plugins/bower/bower.plugin.zsh +++ b/plugins/bower/bower.plugin.zsh @@ -72,6 +72,7 @@ _bower () compadd "$@" $(echo $bower_package_list) ;; *) + _arguments \ $_no_color \ ;; esac From 9ad9ac69a66cb3f61a642241b4723ae7e0789033 Mon Sep 17 00:00:00 2001 From: Alexander Berezovsky Date: Sat, 21 May 2016 17:52:11 -0700 Subject: [PATCH 34/37] Change vim command to $EDITOR for consistency (#5063) --- plugins/fasd/fasd.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/fasd/fasd.plugin.zsh b/plugins/fasd/fasd.plugin.zsh index b11f0b51..2c302f74 100644 --- a/plugins/fasd/fasd.plugin.zsh +++ b/plugins/fasd/fasd.plugin.zsh @@ -6,6 +6,6 @@ if [ $commands[fasd] ]; then # check if fasd is installed source "$fasd_cache" unset fasd_cache - alias v='f -e vim' + alias v="f -e $EDITOR" alias o='a -e open_command' fi From 9a0f9d7e8bcefb4d9895ca185a35c42366e19b00 Mon Sep 17 00:00:00 2001 From: Draniu Date: Wed, 18 May 2016 23:58:12 +0200 Subject: [PATCH 35/37] Better cake3 completion --- plugins/cakephp3/cakephp3.plugin.zsh | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/plugins/cakephp3/cakephp3.plugin.zsh b/plugins/cakephp3/cakephp3.plugin.zsh index 28d5af2e..2b0f5899 100644 --- a/plugins/cakephp3/cakephp3.plugin.zsh +++ b/plugins/cakephp3/cakephp3.plugin.zsh @@ -1,11 +1,30 @@ # CakePHP 3 basic command completion _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 () { + has3rdargument=("all" "controller" "fixture" "model" "template") 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 } @@ -14,6 +33,5 @@ compdef _cakephp3 cake #Alias alias c3='bin/cake' - alias c3cache='bin/cake orm_cache clear' alias c3migrate='bin/cake migrations migrate' From 87cbf3fcf1e295f11ef3e0b6f928861575854fe6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Mon, 23 May 2016 12:33:17 +0200 Subject: [PATCH 36/37] Fix styling in cakephp3 completion --- plugins/cakephp3/cakephp3.plugin.zsh | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/plugins/cakephp3/cakephp3.plugin.zsh b/plugins/cakephp3/cakephp3.plugin.zsh index 2b0f5899..dbfbeba3 100644 --- a/plugins/cakephp3/cakephp3.plugin.zsh +++ b/plugins/cakephp3/cakephp3.plugin.zsh @@ -8,21 +8,22 @@ _cakephp3_get_sub_command_list () { } _cakephp3_get_3rd_argument () { - bin/cake ${words[2]} ${words[3]} | grep '\-\ '| awk '{print $2}' + bin/cake ${words[2]} ${words[3]} | \grep '\-\ '| \awk '{print $2}' } _cakephp3 () { - has3rdargument=("all" "controller" "fixture" "model" "template") - if [ -f bin/cake ]; then + local -a has3rdargument + has3rdargument=("all" "controller" "fixture" "model" "template") + if [ -f bin/cake ]; then if (( CURRENT == 2 )); then - compadd `_cakephp3_get_command_list` + compadd $(_cakephp3_get_command_list) fi if (( CURRENT == 3 )); then - compadd `_cakephp3_get_sub_command_list` + compadd $(_cakephp3_get_sub_command_list) fi if (( CURRENT == 4 )); then - if [[ ${has3rdargument[(i)${words[3]}]} -le ${#has3rdargument} ]] ; then ; - compadd `_cakephp3_get_3rd_argument` + if [[ ${has3rdargument[(i)${words[3]}]} -le ${#has3rdargument} ]]; then + compadd $(_cakephp3_get_3rd_argument) fi fi fi From 1e90f3618f1881d7ed5fb06fee1f2432be036350 Mon Sep 17 00:00:00 2001 From: Mateusz Jaje Date: Mon, 23 May 2016 18:43:15 +0200 Subject: [PATCH 37/37] added assembly alias (#5107) --- plugins/sbt/sbt.plugin.zsh | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/sbt/sbt.plugin.zsh b/plugins/sbt/sbt.plugin.zsh index 203c691f..15acfec4 100644 --- a/plugins/sbt/sbt.plugin.zsh +++ b/plugins/sbt/sbt.plugin.zsh @@ -21,3 +21,4 @@ alias sbr='sbt run' alias sbrm='sbt run-main' alias sbu='sbt update' alias sbx='sbt test' +alias sba='sbt assembly'