From 9248052e917a1d9296d4b79fa229b081cefbc698 Mon Sep 17 00:00:00 2001
From: mahi97
Date: Wed, 31 Aug 2016 03:31:49 +0430
Subject: [PATCH 01/94] initial spotify control
---
plugins/osx/osx.plugin.zsh | 98 ++++++++++++++++++++++++++++++++++++++
1 file changed, 98 insertions(+)
diff --git a/plugins/osx/osx.plugin.zsh b/plugins/osx/osx.plugin.zsh
index a3e550972..948d69a29 100644
--- a/plugins/osx/osx.plugin.zsh
+++ b/plugins/osx/osx.plugin.zsh
@@ -261,6 +261,104 @@ EOF
osascript -e "tell application \"iTunes\" to $opt"
}
+# Spotify control function
+function spotify() {
+ showHelp () {
+ echo "Usage:";
+ echo;
+ echo " $(basename "$0") ";
+ echo;
+ echo "Commands:";
+ echo;
+ echo " play # Resumes playback where Spotify last left off.";
+ echo " pause # Pauses Spotify playback.";
+ echo " next # Skips to the next song in a playlist.";
+ echo " prev # Returns to the previous song in a playlist.";
+ echo " pos [time] # Jumps to a time (in secs) in the current song.";
+ echo " quit # Stops playback and quits Spotify.";
+ echo;
+ echo " vol [amount] # Sets the volume to an amount between 0 and 100.";
+ echo " vol show # Shows the current Spotify volume.";
+ echo;
+ echo " toggle shuffle # Toggles shuffle playback mode.";
+ echo " toggle repeat # Toggles repeat playback mode.";
+ }
+
+ if [ $# = 0 ]; then
+ showHelp;
+ else
+ if [ "$(osascript -e 'application "Spotify" is running')" = "false" ]; then
+ osascript -e 'tell application "Spotify" to activate'
+ sleep 2
+ fi
+ fi
+
+ while [ $# -gt 0 ]; do
+ arg=$1;
+
+ case $arg in
+ "play" )
+ echo "Playing Spotify.";
+ osascript -e 'tell application "Spotify" to play';
+ break ;;
+
+ "pause" )
+ echo "Pausing Spotify.";
+ osascript -e 'tell application "Spotify" to pause';
+ break ;;
+
+ "quit" )
+ echo "Quitting Spotify.";
+ osascript -e 'tell application "Spotify" to quit';
+ exit 1 ;;
+
+ "next" )
+ echo "Going to next track." ;
+ osascript -e 'tell application "Spotify" to next track';
+ break ;;
+
+ "prev" )
+ echo "Going to previous track.";
+ osascript -e 'tell application "Spotify" to previous track';
+ break ;;
+
+ "vol" )
+ vol=$(osascript -e 'tell application "Spotify" to sound volume as integer');
+ if [[ "$2" = "show" || "$2" = "" ]]; then
+ echo "Current Spotify volume level is $vol.";
+ break ;
+ elif [ "$2" -ge 0 ]; then
+ newvol=$2;
+ fi
+
+ osascript -e "tell application \"Spotify\" to set sound volume to $newvol";
+ break ;;
+
+ "toggle" )
+ if [ "$2" = "shuffle" ]; then
+ osascript -e 'tell application "Spotify" to set shuffling to not shuffling';
+ curr=$(osascript -e 'tell application "Spotify" to shuffling');
+ echo "Spotify shuffling set to $curr";
+ elif [ "$2" = "repeat" ]; then
+ osascript -e 'tell application "Spotify" to set repeating to not repeating';
+ curr=$(osascript -e 'tell application "Spotify" to repeating');
+ echo "Spotify repeating set to $curr";
+ fi
+ break ;;
+
+ "pos" )
+ echo "Adjusting Spotify play position."
+ osascript -e "tell application \"Spotify\" to set player position to $2";
+ break;;
+
+ -h|--help| *)
+ showHelp;
+ break ;;
+ esac
+ done
+}
+
+
# Show/hide hidden files in the Finder
alias showfiles="defaults write com.apple.finder AppleShowAllFiles -bool true && killall Finder"
alias hidefiles="defaults write com.apple.finder AppleShowAllFiles -bool false && killall Finder"
From 8f47c96453a229ad5488bbd1e4ee8b7c522b6a15 Mon Sep 17 00:00:00 2001
From: mahi97
Date: Wed, 31 Aug 2016 03:37:53 +0430
Subject: [PATCH 02/94] volume up/down added
---
plugins/osx/osx.plugin.zsh | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/plugins/osx/osx.plugin.zsh b/plugins/osx/osx.plugin.zsh
index 948d69a29..386507dbc 100644
--- a/plugins/osx/osx.plugin.zsh
+++ b/plugins/osx/osx.plugin.zsh
@@ -327,6 +327,22 @@ function spotify() {
if [[ "$2" = "show" || "$2" = "" ]]; then
echo "Current Spotify volume level is $vol.";
break ;
+ elif [ "$2" = "up" ]; then
+ if [ "$vol" -le 90 ]; then
+ newvol=$(( vol+10 ));
+ echo "Increasing Spotify volume to $newvol.";
+ else
+ newvol=100;
+ echo "Spotify volume level is at max.";
+ fi
+ elif [ "$2" = "down" ]; then
+ if [ "$vol" -ge 10 ]; then
+ newvol=$(( vol-10 ));
+ echo "Reducing Spotify volume to $newvol.";
+ else
+ newvol=0;
+ echo "Spotify volume level is at min.";
+ fi
elif [ "$2" -ge 0 ]; then
newvol=$2;
fi
From 92586e38c72a4a3a112a5c2b13cca6fc250e7447 Mon Sep 17 00:00:00 2001
From: mahi97
Date: Wed, 31 Aug 2016 03:50:53 +0430
Subject: [PATCH 03/94] add info, share and status option
---
plugins/osx/osx.plugin.zsh | 68 ++++++++++++++++++++++++++++++++++++++
1 file changed, 68 insertions(+)
diff --git a/plugins/osx/osx.plugin.zsh b/plugins/osx/osx.plugin.zsh
index 386507dbc..dc68916bf 100644
--- a/plugins/osx/osx.plugin.zsh
+++ b/plugins/osx/osx.plugin.zsh
@@ -263,6 +263,7 @@ EOF
# Spotify control function
function spotify() {
+
showHelp () {
echo "Usage:";
echo;
@@ -277,13 +278,35 @@ function spotify() {
echo " pos [time] # Jumps to a time (in secs) in the current song.";
echo " quit # Stops playback and quits Spotify.";
echo;
+ echo " vol up # Increases the volume by 10%.";
+ echo " vol down # Decreases the volume by 10%.";
echo " vol [amount] # Sets the volume to an amount between 0 and 100.";
echo " vol show # Shows the current Spotify volume.";
echo;
+ echo " status # Shows the current player status.";
+ echo " share # Copies the current song URL to the clipboard."
+ echo " info # Shows Full Information about song that is playing.";
+ echo;
echo " toggle shuffle # Toggles shuffle playback mode.";
echo " toggle repeat # Toggles repeat playback mode.";
}
+ showStatus () {
+ state=$(osascript -e 'tell application "Spotify" to player state as string');
+ echo "Spotify is currently $state.";
+ if [ "$state" = "playing" ]; then
+ artist=$(osascript -e 'tell application "Spotify" to artist of current track as string');
+ album=$(osascript -e 'tell application "Spotify" to album of current track as string');
+ track=$(osascript -e 'tell application "Spotify" to name of current track as string');
+ duration=$(osascript -e 'tell application "Spotify" to duration of current track as string');
+ duration=$(echo "scale=2; $duration / 60 / 1000" | bc);
+ position=$(osascript -e 'tell application "Spotify" to player position as string' | tr ',' '.');
+ position=$(echo "scale=2; $position / 60" | bc | awk '{printf "%0.2f", $0}');
+
+ echo "$reset""Artist: $artist\nAlbum: $album\nTrack: $track \nPosition: $position / $duration";
+ fi
+ }
+
if [ $# = 0 ]; then
showHelp;
else
@@ -367,6 +390,51 @@ function spotify() {
osascript -e "tell application \"Spotify\" to set player position to $2";
break;;
+ "status" )
+ showStatus;
+ break ;;
+
+ "info" )
+ info=$(osascript -e 'tell application "Spotify"
+ set tM to round (duration of current track / 60) rounding down
+ set tS to duration of current track mod 60
+ set pos to player position as text
+ set myTime to tM as text & "min " & tS as text & "s"
+ set nM to round (player position / 60) rounding down
+ set nS to round (player position mod 60) rounding down
+ set nowAt to nM as text & "min " & nS as text & "s"
+ set info to "" & "\nArtist: " & artist of current track
+ set info to info & "\nTrack: " & name of current track
+ set info to info & "\nAlbum Artist: " & album artist of current track
+ set info to info & "\nAlbum: " & album of current track
+ set info to info & "\nSeconds: " & duration of current track
+ set info to info & "\nSeconds played: " & pos
+ set info to info & "\nDuration: " & mytime
+ set info to info & "\nNow at: " & nowAt
+ set info to info & "\nPlayed Count: " & played count of current track
+ set info to info & "\nTrack Number: " & track number of current track
+ set info to info & "\nPopularity: " & popularity of current track
+ set info to info & "\nId: " & id of current track
+ set info to info & "\nSpotify URL: " & spotify url of current track
+ set info to info & "\nArtwork: " & artwork of current track
+ set info to info & "\nPlayer: " & player state
+ set info to info & "\nVolume: " & sound volume
+ set info to info & "\nShuffle: " & shuffling
+ set info to info & "\nRepeating: " & repeating
+ end tell
+ return info')
+ echo "$info";
+ break ;;
+
+ "share" )
+ url=$(osascript -e 'tell application "Spotify" to spotify url of current track');
+ remove='spotify:track:'
+ url=${url#$remove}
+ url="http://open.spotify.com/track/$url"
+ echo "Share URL: $url";
+ echo -n "$url" | pbcopy
+ break;;
+
-h|--help| *)
showHelp;
break ;;
From 2a5321f4e69b55f626c94993a40b1dee6a73c26f Mon Sep 17 00:00:00 2001
From: mahi97
Date: Wed, 31 Aug 2016 03:56:21 +0430
Subject: [PATCH 04/94] add color echo
---
plugins/osx/osx.plugin.zsh | 43 +++++++++++++++++++++++---------------
1 file changed, 26 insertions(+), 17 deletions(-)
diff --git a/plugins/osx/osx.plugin.zsh b/plugins/osx/osx.plugin.zsh
index dc68916bf..19acd3dd5 100644
--- a/plugins/osx/osx.plugin.zsh
+++ b/plugins/osx/osx.plugin.zsh
@@ -263,7 +263,7 @@ EOF
# Spotify control function
function spotify() {
-
+
showHelp () {
echo "Usage:";
echo;
@@ -291,9 +291,16 @@ function spotify() {
echo " toggle repeat # Toggles repeat playback mode.";
}
+ cecho(){
+ bold=$(tput bold);
+ green=$(tput setaf 2);
+ reset=$(tput sgr0);
+ echo "$bold$green$1$reset";
+ }
+
showStatus () {
state=$(osascript -e 'tell application "Spotify" to player state as string');
- echo "Spotify is currently $state.";
+ cecho "Spotify is currently $state.";
if [ "$state" = "playing" ]; then
artist=$(osascript -e 'tell application "Spotify" to artist of current track as string');
album=$(osascript -e 'tell application "Spotify" to album of current track as string');
@@ -307,6 +314,8 @@ function spotify() {
fi
}
+
+
if [ $# = 0 ]; then
showHelp;
else
@@ -321,50 +330,50 @@ function spotify() {
case $arg in
"play" )
- echo "Playing Spotify.";
+ cecho "Playing Spotify.";
osascript -e 'tell application "Spotify" to play';
break ;;
"pause" )
- echo "Pausing Spotify.";
+ cecho "Pausing Spotify.";
osascript -e 'tell application "Spotify" to pause';
break ;;
"quit" )
- echo "Quitting Spotify.";
+ cecho "Quitting Spotify.";
osascript -e 'tell application "Spotify" to quit';
exit 1 ;;
"next" )
- echo "Going to next track." ;
+ cecho "Going to next track." ;
osascript -e 'tell application "Spotify" to next track';
break ;;
"prev" )
- echo "Going to previous track.";
+ cecho "Going to previous track.";
osascript -e 'tell application "Spotify" to previous track';
break ;;
"vol" )
vol=$(osascript -e 'tell application "Spotify" to sound volume as integer');
if [[ "$2" = "show" || "$2" = "" ]]; then
- echo "Current Spotify volume level is $vol.";
+ cecho "Current Spotify volume level is $vol.";
break ;
elif [ "$2" = "up" ]; then
if [ "$vol" -le 90 ]; then
newvol=$(( vol+10 ));
- echo "Increasing Spotify volume to $newvol.";
+ cecho "Increasing Spotify volume to $newvol.";
else
newvol=100;
- echo "Spotify volume level is at max.";
+ cecho "Spotify volume level is at max.";
fi
elif [ "$2" = "down" ]; then
if [ "$vol" -ge 10 ]; then
newvol=$(( vol-10 ));
- echo "Reducing Spotify volume to $newvol.";
+ cecho "Reducing Spotify volume to $newvol.";
else
newvol=0;
- echo "Spotify volume level is at min.";
+ cecho "Spotify volume level is at min.";
fi
elif [ "$2" -ge 0 ]; then
newvol=$2;
@@ -377,16 +386,16 @@ function spotify() {
if [ "$2" = "shuffle" ]; then
osascript -e 'tell application "Spotify" to set shuffling to not shuffling';
curr=$(osascript -e 'tell application "Spotify" to shuffling');
- echo "Spotify shuffling set to $curr";
+ cecho "Spotify shuffling set to $curr";
elif [ "$2" = "repeat" ]; then
osascript -e 'tell application "Spotify" to set repeating to not repeating';
curr=$(osascript -e 'tell application "Spotify" to repeating');
- echo "Spotify repeating set to $curr";
+ cecho "Spotify repeating set to $curr";
fi
break ;;
"pos" )
- echo "Adjusting Spotify play position."
+ cecho "Adjusting Spotify play position."
osascript -e "tell application \"Spotify\" to set player position to $2";
break;;
@@ -431,8 +440,8 @@ function spotify() {
remove='spotify:track:'
url=${url#$remove}
url="http://open.spotify.com/track/$url"
- echo "Share URL: $url";
- echo -n "$url" | pbcopy
+ cecho "Share URL: $url";
+ cecho -n "$url" | pbcopy
break;;
-h|--help| *)
From 96d57dc33ec7ce473a7ce06d7c0166eabd14e1c8 Mon Sep 17 00:00:00 2001
From: mahi97
Date: Wed, 31 Aug 2016 03:58:15 +0430
Subject: [PATCH 05/94] change pause to play/pause
---
plugins/osx/osx.plugin.zsh | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/plugins/osx/osx.plugin.zsh b/plugins/osx/osx.plugin.zsh
index 19acd3dd5..058576f0b 100644
--- a/plugins/osx/osx.plugin.zsh
+++ b/plugins/osx/osx.plugin.zsh
@@ -335,8 +335,14 @@ function spotify() {
break ;;
"pause" )
- cecho "Pausing Spotify.";
- osascript -e 'tell application "Spotify" to pause';
+ state=$(osascript -e 'tell application "Spotify" to player state as string');
+ if [ "$state" = "playing" ]; then
+ cecho "Pausing Spotify.";
+ else
+ cecho "Playing Spotify.";
+ fi
+
+ osascript -e 'tell application "Spotify" to playpause';
break ;;
"quit" )
From 3b2f827d5b37d51bdd0c165dc2b66501704990c4 Mon Sep 17 00:00:00 2001
From: mahi97
Date: Wed, 31 Aug 2016 04:12:13 +0430
Subject: [PATCH 06/94] add Search Option for album,artist and tracks
---
plugins/osx/osx.plugin.zsh | 42 +++++++++++++++++++++++++++++++++++++-
1 file changed, 41 insertions(+), 1 deletion(-)
diff --git a/plugins/osx/osx.plugin.zsh b/plugins/osx/osx.plugin.zsh
index 058576f0b..031740633 100644
--- a/plugins/osx/osx.plugin.zsh
+++ b/plugins/osx/osx.plugin.zsh
@@ -330,9 +330,49 @@ function spotify() {
case $arg in
"play" )
+ if [ $# != 1 ]; then
+ # There are additional arguments, so find out how many
+ array=( $@ );
+ len=${#array[@]};
+ SPOTIFY_SEARCH_API="https://api.spotify.com/v1/search"
+ SPOTIFY_PLAY_URI="";
+
+ searchAndPlay() {
+ type="$1"
+ Q="$2"
+
+ cecho "Searching ${type}s for: $Q";
+
+ SPOTIFY_PLAY_URI=$( \
+ curl -s -G $SPOTIFY_SEARCH_API --data-urlencode "q=$Q" -d "type=$type&limit=1&offset=0" -H "Accept: application/json" \
+ | grep -E -o "spotify:$type:[a-zA-Z0-9]+" -m 1
+ )
+ }
+
+ case $2 in
+ "album" | "artist" | "track" )
+ _args=${array[*]:2:$len};
+ searchAndPlay "$2" "$_args";;
+
+ * )
+ _args=${array[*]:1:$len};
+ searchAndPlay track "$_args";;
+ esac
+
+ if [ "$SPOTIFY_PLAY_URI" != "" ]; then
+ cecho "Playing ($Q Search) -> Spotify URL: $";
+
+ osascript -e "tell application \"Spotify\" to play track \"$SPOTIFY_PLAY_URI\"";
+
+ else
+ cecho "No results when searching for $Q";
+ fi
+ else
+ # play is the only param
cecho "Playing Spotify.";
osascript -e 'tell application "Spotify" to play';
- break ;;
+ fi
+ break ;;
"pause" )
state=$(osascript -e 'tell application "Spotify" to player state as string');
From b808555678ea6a960d3ab31f1bdce4bd18ab0a10 Mon Sep 17 00:00:00 2001
From: mahi97
Date: Wed, 31 Aug 2016 04:18:22 +0430
Subject: [PATCH 07/94] add search option for playlist
---
plugins/osx/osx.plugin.zsh | 35 +++++++++++++++++++++++++++++------
1 file changed, 29 insertions(+), 6 deletions(-)
diff --git a/plugins/osx/osx.plugin.zsh b/plugins/osx/osx.plugin.zsh
index 031740633..4ba2026c0 100644
--- a/plugins/osx/osx.plugin.zsh
+++ b/plugins/osx/osx.plugin.zsh
@@ -350,6 +350,29 @@ function spotify() {
}
case $2 in
+ "list" )
+ _args=${array[*]:2:$len};
+ Q=$_args;
+
+ cecho "Searching playlists for: $Q";
+
+ results=$( \
+ curl -s -G $SPOTIFY_SEARCH_API --data-urlencode "q=$Q" -d "type=playlist&limit=10&offset=0" -H "Accept: application/json" \
+ | grep -E -o "spotify:user:[a-zA-Z0-9_]+:playlist:[a-zA-Z0-9]+" -m 10 \
+ )
+
+ count=$( \
+ echo "$results" | grep -c "spotify:user" \
+ )
+
+ if [ "$count" -gt 0 ]; then
+ random=$(( RANDOM % count));
+
+ SPOTIFY_PLAY_URI=$( \
+ echo "$results" | awk -v random="$random" '/spotify:user:[a-zA-Z0-9]+:playlist:[a-zA-Z0-9]+/{i++}i==random{print; exit}' \
+ )
+ fi;;
+
"album" | "artist" | "track" )
_args=${array[*]:2:$len};
searchAndPlay "$2" "$_args";;
@@ -367,12 +390,12 @@ function spotify() {
else
cecho "No results when searching for $Q";
fi
- else
- # play is the only param
- cecho "Playing Spotify.";
- osascript -e 'tell application "Spotify" to play';
- fi
- break ;;
+ else
+ # play is the only param
+ cecho "Playing Spotify.";
+ osascript -e 'tell application "Spotify" to play';
+ fi
+ break ;;
"pause" )
state=$(osascript -e 'tell application "Spotify" to player state as string');
From 6cbba3353f20174c1cd55246507182dfab65ed97 Mon Sep 17 00:00:00 2001
From: mahi97
Date: Wed, 31 Aug 2016 04:35:29 +0430
Subject: [PATCH 08/94] fix showStatus output
---
plugins/osx/osx.plugin.zsh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plugins/osx/osx.plugin.zsh b/plugins/osx/osx.plugin.zsh
index 4ba2026c0..84eec9eed 100644
--- a/plugins/osx/osx.plugin.zsh
+++ b/plugins/osx/osx.plugin.zsh
@@ -310,7 +310,7 @@ function spotify() {
position=$(osascript -e 'tell application "Spotify" to player position as string' | tr ',' '.');
position=$(echo "scale=2; $position / 60" | bc | awk '{printf "%0.2f", $0}');
- echo "$reset""Artist: $artist\nAlbum: $album\nTrack: $track \nPosition: $position / $duration";
+ printf "$reset""Artist: %s\nAlbum: %s\nTrack: %s \nPosition: %s / %s" "$artist" "$album" "$track" "$position" "$duration";
fi
}
From d099022e440a72b1352ac09773a1863d9833dbb1 Mon Sep 17 00:00:00 2001
From: mahi97
Date: Wed, 31 Aug 2016 04:41:54 +0430
Subject: [PATCH 09/94] complete help
---
plugins/osx/osx.plugin.zsh | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/plugins/osx/osx.plugin.zsh b/plugins/osx/osx.plugin.zsh
index 84eec9eed..d75e3d2d6 100644
--- a/plugins/osx/osx.plugin.zsh
+++ b/plugins/osx/osx.plugin.zsh
@@ -272,6 +272,10 @@ function spotify() {
echo "Commands:";
echo;
echo " play # Resumes playback where Spotify last left off.";
+ echo " play [song name] # Finds a song by name and plays it.";
+ echo " play album [album name] # Finds an album by name and plays it.";
+ echo " play artist [artist name] # Finds an artist by name and plays it.";
+ echo " play list [playlist name] # Finds a playlist by name and plays it.";
echo " pause # Pauses Spotify playback.";
echo " next # Skips to the next song in a playlist.";
echo " prev # Returns to the previous song in a playlist.";
From f820345afa9d500f0ff6b1ad1c45d4d37ef7d88a Mon Sep 17 00:00:00 2001
From: mahi97
Date: Thu, 1 Sep 2016 01:52:04 +0430
Subject: [PATCH 10/94] readme updated
---
plugins/osx/README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/plugins/osx/README.md b/plugins/osx/README.md
index 0fcd23dd5..b77daecc5 100644
--- a/plugins/osx/README.md
+++ b/plugins/osx/README.md
@@ -30,3 +30,4 @@ Original author: [Sorin Ionescu](https://github.com/sorin-ionescu)
| `showfiles` | Show hidden files |
| `hidefiles` | Hide the hidden files |
| `itunes` | Control iTunes. User `itunes -h` for usage details |
+| `spotify` | Control Spotify and search by artist, album, track and etc.|
From d6e032035cde237f09306ea6670a22e5994c38f4 Mon Sep 17 00:00:00 2001
From: mahi97
Date: Thu, 1 Sep 2016 01:52:43 +0430
Subject: [PATCH 11/94] seach show Url of song
---
plugins/osx/osx.plugin.zsh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plugins/osx/osx.plugin.zsh b/plugins/osx/osx.plugin.zsh
index d75e3d2d6..aa6a256c1 100644
--- a/plugins/osx/osx.plugin.zsh
+++ b/plugins/osx/osx.plugin.zsh
@@ -387,7 +387,7 @@ function spotify() {
esac
if [ "$SPOTIFY_PLAY_URI" != "" ]; then
- cecho "Playing ($Q Search) -> Spotify URL: $";
+ cecho "Playing ($Q Search) -> Spotify URL: $SPOTIFY_PLAY_URI";
osascript -e "tell application \"Spotify\" to play track \"$SPOTIFY_PLAY_URI\"";
From 59c66dbfc2b4749c3311550fa605e1e4fcf9496c Mon Sep 17 00:00:00 2001
From: Reed Riley
Date: Wed, 14 Sep 2016 20:01:10 -0400
Subject: [PATCH 12/94] Fix battery plugin when acpi writes to stderr (#5413)
* Fix battery plugin when acpi writes to stderr
* Make stderr redirection in battery plugin more idiomatic
---
plugins/battery/battery.plugin.zsh | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/plugins/battery/battery.plugin.zsh b/plugins/battery/battery.plugin.zsh
index 014bb15dd..0bb9e77f0 100644
--- a/plugins/battery/battery.plugin.zsh
+++ b/plugins/battery/battery.plugin.zsh
@@ -67,12 +67,12 @@ if [[ "$OSTYPE" = darwin* ]] ; then
elif [[ $(uname) == "Linux" ]] ; then
function battery_is_charging() {
- ! [[ $(acpi 2&>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]]
+ ! [[ $(acpi 2>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]]
}
function battery_pct() {
if (( $+commands[acpi] )) ; then
- echo "$(acpi | cut -f2 -d ',' | tr -cd '[:digit:]')"
+ echo "$(acpi 2>/dev/null | cut -f2 -d ',' | tr -cd '[:digit:]')"
fi
}
@@ -85,14 +85,14 @@ elif [[ $(uname) == "Linux" ]] ; then
}
function battery_time_remaining() {
- if [[ $(acpi 2&>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] ; then
- echo $(acpi | cut -f3 -d ',')
+ if [[ $(acpi 2>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] ; then
+ echo $(acpi 2>/dev/null | cut -f3 -d ',')
fi
}
function battery_pct_prompt() {
b=$(battery_pct_remaining)
- if [[ $(acpi 2&>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] ; then
+ if [[ $(acpi 2>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] ; then
if [ $b -gt 50 ] ; then
color='green'
elif [ $b -gt 20 ] ; then
From e46843685c1f337e1266a51c9cae1889c4ae9eba Mon Sep 17 00:00:00 2001
From: Erik Zivkovic
Date: Thu, 15 Sep 2016 12:16:46 +0200
Subject: [PATCH 13/94] Improve gradle plugin task parsing (#5230)
* Improve gradle plugin task parsing
Added _gradle and _gradlew as symbolic links to gradle.plugin.zsh,
otherwise the plugin was not properly loaded.
Output from `gradlew tasks --all` is now parsed in two levels,
first we find segments between `------...` and a newline.
Second, all those lines are parsed and cleaned using awk
and added to .gradletasknamecache.
Tested on gradle 2.13, and gradlew 2.14.
* Remove .gradletasknamecache before regenerating it
Remove the .gradletasknamecache file to avoid having an unnecessary
newline at the top of the file when regenerating it.
* Improve gradle task parsing by writing .gradletasknamecache atomically
Previously the .gradletasknamecache file was written line by line inside a parsing loop,
which could cause errors such as half-written cache files if the process was aborted.
This also removes the need of deleting the .gradletasknamecache file before parsing.
---
plugins/gradle/_gradle | 1 +
plugins/gradle/_gradlew | 1 +
plugins/gradle/gradle.plugin.zsh | 33 ++++++++++++++++++++++++++++++--
3 files changed, 33 insertions(+), 2 deletions(-)
create mode 120000 plugins/gradle/_gradle
create mode 120000 plugins/gradle/_gradlew
diff --git a/plugins/gradle/_gradle b/plugins/gradle/_gradle
new file mode 120000
index 000000000..80723f2fc
--- /dev/null
+++ b/plugins/gradle/_gradle
@@ -0,0 +1 @@
+gradle.plugin.zsh
\ No newline at end of file
diff --git a/plugins/gradle/_gradlew b/plugins/gradle/_gradlew
new file mode 120000
index 000000000..80723f2fc
--- /dev/null
+++ b/plugins/gradle/_gradlew
@@ -0,0 +1 @@
+gradle.plugin.zsh
\ No newline at end of file
diff --git a/plugins/gradle/gradle.plugin.zsh b/plugins/gradle/gradle.plugin.zsh
index a908eaeaa..b2015a351 100644
--- a/plugins/gradle/gradle.plugin.zsh
+++ b/plugins/gradle/gradle.plugin.zsh
@@ -60,6 +60,35 @@ _gradle_does_task_list_need_generating () {
[[ ! -f .gradletasknamecache ]] || [[ build.gradle -nt .gradletasknamecache ]]
}
+##############
+# Parse the tasks from `gradle(w) tasks --all` into .gradletasknamecache
+# All lines in the output from gradle(w) that are between /^-+$/ and /^\s*$/
+# are considered to be tasks. If and when gradle adds support for listing tasks
+# for programmatic parsing, this method can be deprecated.
+##############
+_gradle_parse_tasks () {
+ lines_might_be_tasks=false
+ task_name_buffer=""
+ while read -r line; do
+ if [[ $line =~ ^-+$ ]]; then
+ lines_might_be_tasks=true
+ # Empty buffer, because it contains items that are not tasks
+ task_name_buffer=""
+ elif [[ $line =~ ^\s*$ ]]; then
+ if [[ "$lines_might_be_tasks" = true ]]; then
+ # If a newline is found, send the buffer to .gradletasknamecache
+ while read -r task; do
+ echo $task | awk '/[a-zA-Z0-9:-]+/ {print $1}'
+ done <<< "$task_name_buffer"
+ # Empty buffer, because we are done with the tasks
+ task_name_buffer=""
+ fi
+ lines_might_be_tasks=false
+ elif [[ "$lines_might_be_tasks" = true ]]; then
+ task_name_buffer="${task_name_buffer}\n${line}"
+ fi
+ done <<< "$1"
+}
##############################################################################
# Discover the gradle tasks by running "gradle tasks --all"
@@ -68,7 +97,7 @@ _gradle_tasks () {
if [[ -f build.gradle ]]; then
_gradle_arguments
if _gradle_does_task_list_need_generating; then
- gradle tasks --all | awk '/[a-zA-Z0-9:-]* - / {print $1}' > .gradletasknamecache
+ _gradle_parse_tasks "$(gradle tasks --all)" > .gradletasknamecache
fi
compadd -X "==== Gradle Tasks ====" $(cat .gradletasknamecache)
fi
@@ -78,7 +107,7 @@ _gradlew_tasks () {
if [[ -f build.gradle ]]; then
_gradle_arguments
if _gradle_does_task_list_need_generating; then
- ./gradlew tasks --all | awk '/[a-zA-Z0-9:-]* - / {print $1}' > .gradletasknamecache
+ _gradle_parse_tasks "$(./gradlew tasks --all)" > .gradletasknamecache
fi
compadd -X "==== Gradlew Tasks ====" $(cat .gradletasknamecache)
fi
From 84449fc8e0923b611d1314813b8bfe4d96072b2c Mon Sep 17 00:00:00 2001
From: Joshua McKinney
Date: Sat, 17 Sep 2016 04:43:40 -0500
Subject: [PATCH 14/94] Deprecating brew cask plugin (#5191)
The good completion is now part of Homebrew so this one will always be outdated.
See https://github.com/Homebrew/brew/pull/407
and https://github.com/Homebrew/brew/pull/936.
---
plugins/brew-cask/brew-cask.plugin.zsh | 84 --------------------------
1 file changed, 84 deletions(-)
delete mode 100644 plugins/brew-cask/brew-cask.plugin.zsh
diff --git a/plugins/brew-cask/brew-cask.plugin.zsh b/plugins/brew-cask/brew-cask.plugin.zsh
deleted file mode 100644
index 91ce0f498..000000000
--- a/plugins/brew-cask/brew-cask.plugin.zsh
+++ /dev/null
@@ -1,84 +0,0 @@
-# Autocompletion for homebrew-cask.
-#
-# This script intercepts calls to the brew plugin and adds autocompletion
-# for the cask subcommand.
-#
-# Author: https://github.com/pstadler
-
-compdef _brew-cask brew
-
-_brew-cask()
-{
- local curcontext="$curcontext" state line
- typeset -A opt_args
-
- _arguments -C \
- ':command:->command' \
- ':subcmd:->subcmd' \
- '*::options:->options'
-
- case $state in
- (command)
- __call_original_brew
- cask_commands=(
- 'cask:manage casks'
- )
- _describe -t commands 'brew cask command' cask_commands ;;
-
- (subcmd)
- case "$line[1]" in
- cask)
- if (( CURRENT == 3 )); then
- local -a subcommands
- subcommands=(
- "alfred:used to modify Alfred's scope to include the Caskroom"
- 'audit:verifies installability of casks'
- 'checklinks:checks for bad cask links'
- 'cleanup:cleans up cached downloads'
- 'create:creates a cask of the given name and opens it in an editor'
- 'doctor:checks for configuration issues'
- 'edit:edits the cask of the given name'
- 'fetch:downloads Cask resources to local cache'
- 'home:opens the homepage of the cask of the given name'
- 'info:displays information about the cask of the given name'
- 'install:installs the cask of the given name'
- 'list:with no args, lists installed casks; given installed casks, lists installed files'
- 'search:searches all known casks'
- 'uninstall:uninstalls the cask of the given name'
- "update:a synonym for 'brew update'"
- )
- _describe -t commands "brew cask subcommand" subcommands
- fi ;;
-
- *)
- __call_original_brew ;;
- esac ;;
-
- (options)
- local -a casks installed_casks
- local expl
- case "$line[2]" in
- list|uninstall)
- __brew_installed_casks
- _wanted installed_casks expl 'installed casks' compadd -a installed_casks ;;
- audit|edit|home|info|install)
- __brew_all_casks
- _wanted casks expl 'all casks' compadd -a casks ;;
- esac ;;
- esac
-}
-
-__brew_all_casks() {
- casks=(`brew cask search`)
-}
-
-__brew_installed_casks() {
- installed_casks=(`brew cask list`)
-}
-
-__call_original_brew()
-{
- local ret=1
- _call_function ret _brew
- compdef _brew-cask brew
-}
From 5cf9263907b74d33ac0c85a8cb99f736bb63982e Mon Sep 17 00:00:00 2001
From: Joshua McKinney
Date: Mon, 27 Jun 2016 15:19:19 -0500
Subject: [PATCH 15/94] Remove _brew zsh completion (#5190)
Removing as this is now installed as part of homebrew automatically and this
version is out of date. See
https://github.com/Homebrew/brew/blob/master/share/zsh/site-functions/_brew
---
plugins/brew/_brew | 174 ---------------------------------------------
1 file changed, 174 deletions(-)
delete mode 100644 plugins/brew/_brew
diff --git a/plugins/brew/_brew b/plugins/brew/_brew
deleted file mode 100644
index 19cfb22cb..000000000
--- a/plugins/brew/_brew
+++ /dev/null
@@ -1,174 +0,0 @@
-#compdef brew
-#autoload
-
-# imported from https://github.com/Homebrew/homebrew/blob/29f73d2212c2b202fe25f69dcbf440d8391fa4c9/Library/Contributions/brew_zsh_completion.zsh
-
-# Brew ZSH completion function
-# Drop this somewhere in your $fpath (like /usr/share/zsh/site-functions)
-# and rename it _brew
-#
-# altered from _fink
-
-_brew_all_formulae() {
- formulae=(`brew search`)
-}
-
-_brew_installed_formulae() {
- installed_formulae=(`brew list`)
-}
-
-_brew_installed_taps() {
- installed_taps=(`brew tap`)
-}
-
-_brew_official_taps() {
- official_taps=(`brew tap --list-official`)
-}
-
-_brew_pinned_taps() {
- pinned_taps=(`brew tap --list-pinned`)
-}
-
-_brew_outdated_formulae() {
- outdated_formulae=(`brew outdated`)
-}
-
-_brew_installed_services() {
- installed_services=(`brew services list | awk '{print $1}' | tail -n+2`)
-}
-
-local -a _1st_arguments
-_1st_arguments=(
- 'audit:check formulae for Homebrew coding style'
- 'cat:display formula file for a formula'
- 'cleanup:uninstall unused and old versions of packages'
- 'commands:show a list of commands'
- 'config:show homebrew and system configuration'
- 'create:create a new formula'
- 'deps:list dependencies and dependants of a formula'
- 'desc:display a description of a formula'
- 'doctor:audits your installation for common issues'
- 'edit:edit a formula'
- 'fetch:download formula resources to the cache'
- 'gist-logs:generate a gist of the full build logs'
- 'home:visit the homepage of a formula or the brew project'
- 'info:information about a formula'
- 'install:install a formula'
- 'reinstall:install a formula anew; re-using its current options'
- 'leaves:show installed formulae that are not dependencies of another installed formula'
- 'link:link a formula'
- 'linkapps:symlink .app bundles provided by formulae into /Applications'
- 'list:list files in a formula or not-installed formulae'
- 'log:git commit log for a formula'
- 'missing:check all installed formuale for missing dependencies.'
- 'migrate:migrate renamed formula to new name'
- 'outdated:list formulae for which a newer version is available'
- 'pin:pin specified formulae'
- 'postinstall:perform post_install for a given formula'
- 'prune:remove dead links'
- 'remove:remove a formula'
- 'search:search for a formula (/regex/ or string)'
- 'services:manage services'
- 'switch:switch between different versions of a formula'
- 'tap:tap a new formula repository from GitHub, or list existing taps'
- 'tap-info:information about a tap'
- 'tap-pin:pin a tap'
- 'tap-unpin:unpin a tap'
- 'test-bot:test a formula and build a bottle'
- 'uninstall:uninstall a formula'
- 'unlink:unlink a formula'
- 'unlinkapps:remove symlinked .app bundles provided by formulae from /Applications'
- 'unpin:unpin specified formulae'
- 'untap:remove a tapped repository'
- 'update:fetch latest version of Homebrew and all formulae'
- 'upgrade:upgrade outdated formulae'
- 'uses:show formulae which depend on a formula'
- `brew commands --quiet --include-aliases`
-)
-
-local expl
-local -a formulae installed_formulae installed_taps official_taps outdated_formulae installed_services
-
-_arguments \
- '(-v)-v[verbose]' \
- '(--cellar)--cellar[brew cellar]' \
- '(--env)--env[brew environment]' \
- '(--repository)--repository[brew repository]' \
- '(--version)--version[version information]' \
- '(--prefix)--prefix[where brew lives on this system]' \
- '(--cache)--cache[brew cache]' \
- '*:: :->subcmds' && return 0
-
-if (( CURRENT == 1 )); then
- _describe -t commands "brew subcommand" _1st_arguments
- return
-fi
-
-case "$words[1]" in
- install|reinstall|audit|home|homepage|log|info|abv|uses|cat|deps|desc|edit|options|switch)
- _brew_all_formulae
- _wanted formulae expl 'all formulae' compadd -a formulae ;;
- linkapps|unlinkapps)
- _arguments \
- '(--local)--local[operate on ~/Applications instead of /Applications]' \
- '1: :->forms' && return 0
-
- if [[ "$state" == forms ]]; then
- _brew_installed_formulae
- _wanted installed_formulae expl 'installed formulae' compadd -a installed_formulae
- fi ;;
- list|ls)
- _arguments \
- '(--unbrewed)--unbrewed[files in brew --prefix not controlled by brew]' \
- '(--pinned)--pinned[list all versions of pinned formulae]' \
- '(--versions)--versions[list all installed versions of a formula]' \
- '1: :->forms' && return 0
-
- if [[ "$state" == forms ]]; then
- _brew_installed_formulae
- _wanted installed_formulae expl 'installed formulae' compadd -a installed_formulae
- fi ;;
- remove|rm|uninstall|unlink|cleanup|link|ln|pin|unpin)
- _brew_installed_formulae
- _wanted installed_formulae expl 'installed formulae' compadd -a installed_formulae ;;
- search|-S)
- _arguments \
- '(--macports)--macports[search the macports repository]' \
- '(--fink)--fink[search the fink repository]' ;;
- untap|tap-info|tap-pin)
- _brew_installed_taps
- _wanted installed_taps expl 'installed taps' compadd -a installed_taps ;;
- tap)
- _brew_official_taps
- _wanted official_taps expl 'official taps' compadd -a official_taps ;;
- tap-unpin)
- _brew_pinned_taps
- _wanted pinned_taps expl 'pinned taps' compadd -a pinned_taps ;;
- upgrade)
- _brew_outdated_formulae
- _wanted outdated_formulae expl 'outdated formulae' compadd -a outdated_formulae ;;
- services)
- _arguments -C \
- '1: :->command' \
- '2: :->service' && return 0
-
- local -a commands
-
- commands=(
- 'cleanup:Get rid of stale services and unused plists'
- 'list:List all services managed by brew services'
- 'restart:Gracefully restart selected service'
- 'start:Start selected service'
- 'stop:Stop selected service'
- )
-
- case $state in
- command)
- _describe -t commands 'Action' commands
- ;;
- service)
- _brew_installed_services
- _describe -t subcommands 'Services' installed_services
- ;;
- esac
-esac
From 5bd9500bf4e68bf185db77ad4ecbb728a5b81c01 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc=20Cornell=C3=A0?=
Date: Sat, 17 Sep 2016 13:01:10 +0200
Subject: [PATCH 16/94] ssh-agent: check ssh-agent process w/ ps again
The alternative is using tools that aren't available everywhere.
The latest report is that cygwin/msys2 doesn't have pgrep.
Fixes #5418.
---
plugins/ssh-agent/ssh-agent.plugin.zsh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plugins/ssh-agent/ssh-agent.plugin.zsh b/plugins/ssh-agent/ssh-agent.plugin.zsh
index b668fa3b2..20f97c6f1 100644
--- a/plugins/ssh-agent/ssh-agent.plugin.zsh
+++ b/plugins/ssh-agent/ssh-agent.plugin.zsh
@@ -30,7 +30,7 @@ if [[ $_agent_forwarding == "yes" && -n "$SSH_AUTH_SOCK" ]]; then
elif [[ -f "$_ssh_env_cache" ]]; then
# Source SSH settings, if applicable
. $_ssh_env_cache > /dev/null
- pgrep ssh-agent | grep -q $SSH_AGENT_PID || {
+ ps x | grep ssh-agent | grep -q $SSH_AGENT_PID || {
_start_agent
}
else
From abe834d28ddb6c5d0d98addf7a77551b3e007cd5 Mon Sep 17 00:00:00 2001
From: Robby Russell
Date: Mon, 19 Sep 2016 19:40:38 -0700
Subject: [PATCH 17/94] Adding a link to Planet Argon who manages the
site/project/shop
---
README.md | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/README.md b/README.md
index 5f152e4df..581625fe4 100644
--- a/README.md
+++ b/README.md
@@ -211,3 +211,9 @@ We have [stickers](http://shop.planetargon.com/products/ohmyzsh-stickers-set-of-
## License
Oh My Zsh is released under the [MIT license](LICENSE.txt).
+
+## About Planet Argon
+
+
+
+Oh My Zsh started by the team at [Planet Argon](https://www.planetargon.com/?utm_source=github), a [Ruby on Rails development agency](https://www.planetargon.com/skills/ruby-on-rails-development?utm_source=github).
From 89048668bdf4231b27e8249352087d1ccb46d447 Mon Sep 17 00:00:00 2001
From: Robby Russell
Date: Mon, 19 Sep 2016 19:41:59 -0700
Subject: [PATCH 18/94] Forgot a word in the footer
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 581625fe4..aab1af9fd 100644
--- a/README.md
+++ b/README.md
@@ -216,4 +216,4 @@ Oh My Zsh is released under the [MIT license](LICENSE.txt).

-Oh My Zsh started by the team at [Planet Argon](https://www.planetargon.com/?utm_source=github), a [Ruby on Rails development agency](https://www.planetargon.com/skills/ruby-on-rails-development?utm_source=github).
+Oh My Zsh was started by the team at [Planet Argon](https://www.planetargon.com/?utm_source=github), a [Ruby on Rails development agency](https://www.planetargon.com/skills/ruby-on-rails-development?utm_source=github).
From e9793fc1995254172338bc53082d704b22d31a0d Mon Sep 17 00:00:00 2001
From: Luis Ferrer-Labarca
Date: Mon, 19 Sep 2016 22:50:16 -0400
Subject: [PATCH 19/94] Added 'gbd' alias for 'git branch -d' (#5417)
---
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 6197c234b..25da03509 100644
--- a/plugins/git/git.plugin.zsh
+++ b/plugins/git/git.plugin.zsh
@@ -46,6 +46,7 @@ alias gapa='git add --patch'
alias gb='git branch'
alias gba='git branch -a'
+alias gbd='git branch -d'
alias gbda='git branch --no-color --merged | command grep -vE "^(\*|\s*(master|develop|dev)\s*$)" | command xargs -n 1 git branch -d'
alias gbl='git blame -b -w'
alias gbnm='git branch --no-merged'
From 836fe3138552defff447ebd50271225d29bae91c Mon Sep 17 00:00:00 2001
From: Mohnish G J
Date: Tue, 20 Sep 2016 08:21:50 +0530
Subject: [PATCH 20/94] Add an alias for Rails console sandbox (#5316)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The command ‘rails console —sandbox’ loads our Rails application,
connects to the database and automatically starts a database
transaction. All database operations performed within this console
session are rolled back upon leaving the console. Reference -
https://www.codeschool.com/blog/2014/06/17/rails-console-sandbox/
---
plugins/rails/rails.plugin.zsh | 1 +
1 file changed, 1 insertion(+)
diff --git a/plugins/rails/rails.plugin.zsh b/plugins/rails/rails.plugin.zsh
index e532639b5..c8974b5f4 100644
--- a/plugins/rails/rails.plugin.zsh
+++ b/plugins/rails/rails.plugin.zsh
@@ -36,6 +36,7 @@ alias -g RET='RAILS_ENV=test'
# Rails aliases
alias rc='rails console'
+alias rcs='rails console --sandbox'
alias rd='rails destroy'
alias rdb='rails dbconsole'
alias rg='rails generate'
From 63d300edb04e1c2c2eea888f3085836bc9b580f7 Mon Sep 17 00:00:00 2001
From: Mohammad Mahdi Rahimi
Date: Tue, 20 Sep 2016 07:26:12 +0430
Subject: [PATCH 21/94] Spotify Controller (#5356)
* initial spotify control
* volume up/down added
* add info, share and status option
* add color echo
* change pause to play/pause
* add Search Option for album,artist and tracks
* add search option for playlist
* fix showStatus output
* complete help
* readme updated
* seach show Url of song
---
plugins/osx/README.md | 1 +
plugins/osx/osx.plugin.zsh | 264 +++++++++++++++++++++++++++++++++++++
2 files changed, 265 insertions(+)
diff --git a/plugins/osx/README.md b/plugins/osx/README.md
index 0fcd23dd5..b77daecc5 100644
--- a/plugins/osx/README.md
+++ b/plugins/osx/README.md
@@ -30,3 +30,4 @@ Original author: [Sorin Ionescu](https://github.com/sorin-ionescu)
| `showfiles` | Show hidden files |
| `hidefiles` | Hide the hidden files |
| `itunes` | Control iTunes. User `itunes -h` for usage details |
+| `spotify` | Control Spotify and search by artist, album, track and etc.|
diff --git a/plugins/osx/osx.plugin.zsh b/plugins/osx/osx.plugin.zsh
index a3e550972..aa6a256c1 100644
--- a/plugins/osx/osx.plugin.zsh
+++ b/plugins/osx/osx.plugin.zsh
@@ -261,6 +261,270 @@ EOF
osascript -e "tell application \"iTunes\" to $opt"
}
+# Spotify control function
+function spotify() {
+
+ showHelp () {
+ echo "Usage:";
+ echo;
+ echo " $(basename "$0") ";
+ echo;
+ echo "Commands:";
+ echo;
+ echo " play # Resumes playback where Spotify last left off.";
+ echo " play [song name] # Finds a song by name and plays it.";
+ echo " play album [album name] # Finds an album by name and plays it.";
+ echo " play artist [artist name] # Finds an artist by name and plays it.";
+ echo " play list [playlist name] # Finds a playlist by name and plays it.";
+ echo " pause # Pauses Spotify playback.";
+ echo " next # Skips to the next song in a playlist.";
+ echo " prev # Returns to the previous song in a playlist.";
+ echo " pos [time] # Jumps to a time (in secs) in the current song.";
+ echo " quit # Stops playback and quits Spotify.";
+ echo;
+ echo " vol up # Increases the volume by 10%.";
+ echo " vol down # Decreases the volume by 10%.";
+ echo " vol [amount] # Sets the volume to an amount between 0 and 100.";
+ echo " vol show # Shows the current Spotify volume.";
+ echo;
+ echo " status # Shows the current player status.";
+ echo " share # Copies the current song URL to the clipboard."
+ echo " info # Shows Full Information about song that is playing.";
+ echo;
+ echo " toggle shuffle # Toggles shuffle playback mode.";
+ echo " toggle repeat # Toggles repeat playback mode.";
+ }
+
+ cecho(){
+ bold=$(tput bold);
+ green=$(tput setaf 2);
+ reset=$(tput sgr0);
+ echo "$bold$green$1$reset";
+ }
+
+ showStatus () {
+ state=$(osascript -e 'tell application "Spotify" to player state as string');
+ cecho "Spotify is currently $state.";
+ if [ "$state" = "playing" ]; then
+ artist=$(osascript -e 'tell application "Spotify" to artist of current track as string');
+ album=$(osascript -e 'tell application "Spotify" to album of current track as string');
+ track=$(osascript -e 'tell application "Spotify" to name of current track as string');
+ duration=$(osascript -e 'tell application "Spotify" to duration of current track as string');
+ duration=$(echo "scale=2; $duration / 60 / 1000" | bc);
+ position=$(osascript -e 'tell application "Spotify" to player position as string' | tr ',' '.');
+ position=$(echo "scale=2; $position / 60" | bc | awk '{printf "%0.2f", $0}');
+
+ printf "$reset""Artist: %s\nAlbum: %s\nTrack: %s \nPosition: %s / %s" "$artist" "$album" "$track" "$position" "$duration";
+ fi
+ }
+
+
+
+ if [ $# = 0 ]; then
+ showHelp;
+ else
+ if [ "$(osascript -e 'application "Spotify" is running')" = "false" ]; then
+ osascript -e 'tell application "Spotify" to activate'
+ sleep 2
+ fi
+ fi
+
+ while [ $# -gt 0 ]; do
+ arg=$1;
+
+ case $arg in
+ "play" )
+ if [ $# != 1 ]; then
+ # There are additional arguments, so find out how many
+ array=( $@ );
+ len=${#array[@]};
+ SPOTIFY_SEARCH_API="https://api.spotify.com/v1/search"
+ SPOTIFY_PLAY_URI="";
+
+ searchAndPlay() {
+ type="$1"
+ Q="$2"
+
+ cecho "Searching ${type}s for: $Q";
+
+ SPOTIFY_PLAY_URI=$( \
+ curl -s -G $SPOTIFY_SEARCH_API --data-urlencode "q=$Q" -d "type=$type&limit=1&offset=0" -H "Accept: application/json" \
+ | grep -E -o "spotify:$type:[a-zA-Z0-9]+" -m 1
+ )
+ }
+
+ case $2 in
+ "list" )
+ _args=${array[*]:2:$len};
+ Q=$_args;
+
+ cecho "Searching playlists for: $Q";
+
+ results=$( \
+ curl -s -G $SPOTIFY_SEARCH_API --data-urlencode "q=$Q" -d "type=playlist&limit=10&offset=0" -H "Accept: application/json" \
+ | grep -E -o "spotify:user:[a-zA-Z0-9_]+:playlist:[a-zA-Z0-9]+" -m 10 \
+ )
+
+ count=$( \
+ echo "$results" | grep -c "spotify:user" \
+ )
+
+ if [ "$count" -gt 0 ]; then
+ random=$(( RANDOM % count));
+
+ SPOTIFY_PLAY_URI=$( \
+ echo "$results" | awk -v random="$random" '/spotify:user:[a-zA-Z0-9]+:playlist:[a-zA-Z0-9]+/{i++}i==random{print; exit}' \
+ )
+ fi;;
+
+ "album" | "artist" | "track" )
+ _args=${array[*]:2:$len};
+ searchAndPlay "$2" "$_args";;
+
+ * )
+ _args=${array[*]:1:$len};
+ searchAndPlay track "$_args";;
+ esac
+
+ if [ "$SPOTIFY_PLAY_URI" != "" ]; then
+ cecho "Playing ($Q Search) -> Spotify URL: $SPOTIFY_PLAY_URI";
+
+ osascript -e "tell application \"Spotify\" to play track \"$SPOTIFY_PLAY_URI\"";
+
+ else
+ cecho "No results when searching for $Q";
+ fi
+ else
+ # play is the only param
+ cecho "Playing Spotify.";
+ osascript -e 'tell application "Spotify" to play';
+ fi
+ break ;;
+
+ "pause" )
+ state=$(osascript -e 'tell application "Spotify" to player state as string');
+ if [ "$state" = "playing" ]; then
+ cecho "Pausing Spotify.";
+ else
+ cecho "Playing Spotify.";
+ fi
+
+ osascript -e 'tell application "Spotify" to playpause';
+ break ;;
+
+ "quit" )
+ cecho "Quitting Spotify.";
+ osascript -e 'tell application "Spotify" to quit';
+ exit 1 ;;
+
+ "next" )
+ cecho "Going to next track." ;
+ osascript -e 'tell application "Spotify" to next track';
+ break ;;
+
+ "prev" )
+ cecho "Going to previous track.";
+ osascript -e 'tell application "Spotify" to previous track';
+ break ;;
+
+ "vol" )
+ vol=$(osascript -e 'tell application "Spotify" to sound volume as integer');
+ if [[ "$2" = "show" || "$2" = "" ]]; then
+ cecho "Current Spotify volume level is $vol.";
+ break ;
+ elif [ "$2" = "up" ]; then
+ if [ "$vol" -le 90 ]; then
+ newvol=$(( vol+10 ));
+ cecho "Increasing Spotify volume to $newvol.";
+ else
+ newvol=100;
+ cecho "Spotify volume level is at max.";
+ fi
+ elif [ "$2" = "down" ]; then
+ if [ "$vol" -ge 10 ]; then
+ newvol=$(( vol-10 ));
+ cecho "Reducing Spotify volume to $newvol.";
+ else
+ newvol=0;
+ cecho "Spotify volume level is at min.";
+ fi
+ elif [ "$2" -ge 0 ]; then
+ newvol=$2;
+ fi
+
+ osascript -e "tell application \"Spotify\" to set sound volume to $newvol";
+ break ;;
+
+ "toggle" )
+ if [ "$2" = "shuffle" ]; then
+ osascript -e 'tell application "Spotify" to set shuffling to not shuffling';
+ curr=$(osascript -e 'tell application "Spotify" to shuffling');
+ cecho "Spotify shuffling set to $curr";
+ elif [ "$2" = "repeat" ]; then
+ osascript -e 'tell application "Spotify" to set repeating to not repeating';
+ curr=$(osascript -e 'tell application "Spotify" to repeating');
+ cecho "Spotify repeating set to $curr";
+ fi
+ break ;;
+
+ "pos" )
+ cecho "Adjusting Spotify play position."
+ osascript -e "tell application \"Spotify\" to set player position to $2";
+ break;;
+
+ "status" )
+ showStatus;
+ break ;;
+
+ "info" )
+ info=$(osascript -e 'tell application "Spotify"
+ set tM to round (duration of current track / 60) rounding down
+ set tS to duration of current track mod 60
+ set pos to player position as text
+ set myTime to tM as text & "min " & tS as text & "s"
+ set nM to round (player position / 60) rounding down
+ set nS to round (player position mod 60) rounding down
+ set nowAt to nM as text & "min " & nS as text & "s"
+ set info to "" & "\nArtist: " & artist of current track
+ set info to info & "\nTrack: " & name of current track
+ set info to info & "\nAlbum Artist: " & album artist of current track
+ set info to info & "\nAlbum: " & album of current track
+ set info to info & "\nSeconds: " & duration of current track
+ set info to info & "\nSeconds played: " & pos
+ set info to info & "\nDuration: " & mytime
+ set info to info & "\nNow at: " & nowAt
+ set info to info & "\nPlayed Count: " & played count of current track
+ set info to info & "\nTrack Number: " & track number of current track
+ set info to info & "\nPopularity: " & popularity of current track
+ set info to info & "\nId: " & id of current track
+ set info to info & "\nSpotify URL: " & spotify url of current track
+ set info to info & "\nArtwork: " & artwork of current track
+ set info to info & "\nPlayer: " & player state
+ set info to info & "\nVolume: " & sound volume
+ set info to info & "\nShuffle: " & shuffling
+ set info to info & "\nRepeating: " & repeating
+ end tell
+ return info')
+ echo "$info";
+ break ;;
+
+ "share" )
+ url=$(osascript -e 'tell application "Spotify" to spotify url of current track');
+ remove='spotify:track:'
+ url=${url#$remove}
+ url="http://open.spotify.com/track/$url"
+ cecho "Share URL: $url";
+ cecho -n "$url" | pbcopy
+ break;;
+
+ -h|--help| *)
+ showHelp;
+ break ;;
+ esac
+ done
+}
+
+
# Show/hide hidden files in the Finder
alias showfiles="defaults write com.apple.finder AppleShowAllFiles -bool true && killall Finder"
alias hidefiles="defaults write com.apple.finder AppleShowAllFiles -bool false && killall Finder"
From cb60cfc7bdc7745dd48afe265df3a13f9cd3e54d Mon Sep 17 00:00:00 2001
From: Ariel Rivas
Date: Mon, 19 Sep 2016 23:57:51 -0300
Subject: [PATCH 22/94] Avoid unnecesary processing... (#5352)
by discarding directories or files with permissions already correctly set
---
plugins/perms/perms.plugin.zsh | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/plugins/perms/perms.plugin.zsh b/plugins/perms/perms.plugin.zsh
index 81f56d577..7cdebab7f 100644
--- a/plugins/perms/perms.plugin.zsh
+++ b/plugins/perms/perms.plugin.zsh
@@ -6,10 +6,10 @@
### Aliases
# Set all files' permissions to 644 recursively in a directory
-alias set644='find . -type f -print0 | xargs -0 chmod 644'
+alias set644='find . -type f ! -perm 644 -print0 | xargs -0 chmod 644'
# Set all directories' permissions to 755 recursively in a directory
-alias set755='find . -type d -print0 | xargs -0 chmod 755'
+alias set755='find . -type d ! -perm 755 -print0 | xargs -0 chmod 755'
### Functions
@@ -63,14 +63,14 @@ EOF
exit_status=0;
if [[ $use_slow == true ]]; then
# Process directories first so non-traversable ones are fixed as we go
- find "$target" -type d -exec chmod $chmod_opts 755 {} \;
+ find "$target" -type d ! -perm 755 -exec chmod $chmod_opts 755 {} \;
if [[ $? != 0 ]]; then exit_status=$?; fi
- find "$target" -type f -exec chmod $chmod_opts 644 {} \;
+ find "$target" -type f ! -perm 644 -exec chmod $chmod_opts 644 {} \;
if [[ $? != 0 ]]; then exit_status=$?; fi
else
- find "$target" -type d -print0 | xargs -0 chmod $chmod_opts 755
+ find "$target" -type d ! -perm 755 -print0 | xargs -0 chmod $chmod_opts 755
if [[ $? != 0 ]]; then exit_status=$?; fi
- find "$target" -type f -print0 | xargs -0 chmod $chmod_opts 644
+ find "$target" -type f ! -perm 644 -print0 | xargs -0 chmod $chmod_opts 644
if [[ $? != 0 ]]; then exit_status=$?; fi
fi
echo "Complete"
From 83765bf3f7c5e92c9141a03d9791638f7eb68277 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fabi=C3=A1n=20R=C3=ADos?=
Date: Tue, 20 Sep 2016 04:58:45 +0200
Subject: [PATCH 23/94] missing listing and versions (#5341)
versions is missing list is missing
---
plugins/npm/npm.plugin.zsh | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/plugins/npm/npm.plugin.zsh b/plugins/npm/npm.plugin.zsh
index 02e4f3e93..43aedc36d 100644
--- a/plugins/npm/npm.plugin.zsh
+++ b/plugins/npm/npm.plugin.zsh
@@ -32,6 +32,12 @@ alias npmE='PATH="$(npm bin)":"$PATH"'
# Check which npm modules are outdated
alias npmO="npm outdated"
+# Check package versions
+alias npmV="npm -v"
+
+# List packages
+alias npmL="npm list"
+
# Run npm start
alias npmst="npm start"
From fb8953d525ddd3ed01db02a266b284bd9fa5fbd2 Mon Sep 17 00:00:00 2001
From: Matt Nichols
Date: Mon, 19 Sep 2016 21:00:16 -0600
Subject: [PATCH 24/94] Fix peepcode theme ruby prompt info (#5339)
The ruby prompt info was not interpolating properly. Switching to use
ruby_prompt_info helper. This addresses the issue.
---
themes/peepcode.zsh-theme | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/themes/peepcode.zsh-theme b/themes/peepcode.zsh-theme
index 9dc58294a..b6dfa6870 100644
--- a/themes/peepcode.zsh-theme
+++ b/themes/peepcode.zsh-theme
@@ -41,10 +41,4 @@ PROMPT='
%~
${smiley} %{$reset_color%}'
-if [[ -d ~/.rvm ]] && [[ -e ~/.rvm/bin/rvm-prompt ]]; then
- rvm_prompt='$(~/.rvm/bin/rvm-prompt)'
-else
- rvm_prompt=''
-fi
-
-RPROMPT='%{$fg[white]%} $rvm_prompt$(git_prompt)%{$reset_color%}'
+RPROMPT='%{$fg[white]%} $(ruby_prompt_info)$(git_prompt)%{$reset_color%}'
From d1ce70f68540bdf6a7f27ab9879e8222d0e7a604 Mon Sep 17 00:00:00 2001
From: grindhold
Date: Tue, 20 Sep 2016 05:00:42 +0200
Subject: [PATCH 25/94] added support for bazaar in agnoster theme (#5016)
the agnoster theme is now able to render basic information
if the user is currently residing inside a bazaar folder.
if so, it will render a green promt segment with "bzr" and
the current revision number in it. if there are untracked
files, the bar will be rendered in yellow. if there are
changes to already tracked files, a + character will be
printed.
---
themes/agnoster.zsh-theme | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/themes/agnoster.zsh-theme b/themes/agnoster.zsh-theme
index da1f9b6e6..e1a294ee8 100644
--- a/themes/agnoster.zsh-theme
+++ b/themes/agnoster.zsh-theme
@@ -127,6 +127,27 @@ prompt_git() {
fi
}
+prompt_bzr() {
+ if (bzr status >/dev/null 2>&1); then
+ status_mod=`bzr status | head -n1 | grep "modified" | wc -m`
+ status_all=`bzr status | head -n1 | wc -m`
+ revision=`bzr log | head -n2 | tail -n1 | sed 's/^revno: //'`
+ if [[ $status_mod -gt 0 ]] ; then
+ prompt_segment yellow black
+ echo -n "bzr@"$revision "✚ "
+ else
+ if [[ $status_all -gt 0 ]] ; then
+ prompt_segment yellow black
+ echo -n "bzr@"$revision
+
+ else
+ prompt_segment green black
+ echo -n "bzr@"$revision
+ fi
+ fi
+ fi
+}
+
prompt_hg() {
(( $+commands[hg] )) || return
local rev status
@@ -198,6 +219,7 @@ build_prompt() {
prompt_context
prompt_dir
prompt_git
+ prompt_bzr
prompt_hg
prompt_end
}
From 9d91e92f26e3cb2d89eb43065ad960e4a344d52c Mon Sep 17 00:00:00 2001
From: Brian Goff
Date: Tue, 20 Sep 2016 14:40:07 -0400
Subject: [PATCH 26/94] Update docker completion to match docker upstream
(#5060)
See https://github.com/docker/docker/blob/master/contrib/completion/zsh/_docker
Signed-off-by: Brian Goff
---
plugins/docker/_docker | 58 ++++++++++--------------------------------
1 file changed, 14 insertions(+), 44 deletions(-)
diff --git a/plugins/docker/_docker b/plugins/docker/_docker
index 66dfeea9e..554379246 100644
--- a/plugins/docker/_docker
+++ b/plugins/docker/_docker
@@ -138,7 +138,7 @@ __docker_containers_names() {
__docker_get_containers all names "$@"
}
-__docker_complete_info_plugins() {
+__docker_plugins() {
[[ $PREFIX = -* ]] && return 1
integer ret=1
emulate -L zsh
@@ -228,7 +228,7 @@ __docker_get_log_options() {
journald_options=("env" "labels" "tag")
json_file_options=("env" "labels" "max-file" "max-size")
syslog_options=("env" "labels" "syslog-address" "syslog-facility" "syslog-format" "syslog-tls-ca-cert" "syslog-tls-cert" "syslog-tls-key" "syslog-tls-skip-verify" "tag")
- splunk_options=("env" "labels" "splunk-caname" "splunk-capath" "splunk-format" "splunk-index" "splunk-insecureskipverify" "splunk-source" "splunk-sourcetype" "splunk-token" "splunk-url" "splunk-verify-connection" "tag")
+ splunk_options=("env" "labels" "splunk-caname" "splunk-capath" "splunk-index" "splunk-insecureskipverify" "splunk-source" "splunk-sourcetype" "splunk-token" "splunk-url" "tag")
[[ $log_driver = (awslogs|all) ]] && _describe -t awslogs-options "awslogs options" awslogs_options "$@" && ret=0
[[ $log_driver = (fluentd|all) ]] && _describe -t fluentd-options "fluentd options" fluentd_options "$@" && ret=0
@@ -340,7 +340,7 @@ __docker_complete_ps_filters() {
__docker_networks && ret=0
;;
(status)
- status_opts=('created' 'dead' 'exited' 'paused' 'restarting' 'running' 'removing')
+ status_opts=('created' 'dead' 'exited' 'paused' 'restarting' 'running')
_describe -t status-filter-opts "Status Filter Options" status_opts && ret=0
;;
(volume)
@@ -463,8 +463,6 @@ __docker_complete_events_filter() {
return ret
}
-# BO network
-
__docker_network_complete_ls_filters() {
[[ $PREFIX = -* ]] && return 1
integer ret=1
@@ -472,7 +470,7 @@ __docker_network_complete_ls_filters() {
if compset -P '*='; then
case "${${words[-1]%=*}#*=}" in
(driver)
- __docker_complete_info_plugins Network && ret=0
+ __docker_plugins Network && ret=0
;;
(id)
__docker_networks_ids && ret=0
@@ -631,7 +629,6 @@ __docker_network_subcommand() {
$opts_help \
"($help)--no-trunc[Do not truncate the output]" \
"($help)*"{-f=,--filter=}"[Provide filter values]:filter:->filter-options" \
- "($help)--format=[Pretty-print networks using a Go template]:template: " \
"($help -q --quiet)"{-q,--quiet}"[Only display numeric IDs]" && ret=0
case $state in
(filter-options)
@@ -652,8 +649,6 @@ __docker_network_subcommand() {
return ret
}
-# EO network
-
# BO node
__docker_node_complete_ls_filters() {
@@ -721,6 +716,7 @@ __docker_nodes() {
[[ $filter != "none" ]] && args=("-f $filter")
lines=(${(f)"$(_call_program commands docker $docker_options node ls $args)"})
+
# Parse header line to find columns
local i=1 j=1 k header=${lines[1]}
declare -A begin end
@@ -846,7 +842,6 @@ __docker_node_subcommand() {
"($help -a --all)"{-a,--all}"[Display all instances]" \
"($help)*"{-f=,--filter=}"[Provide filter values]:filter:->filter-options" \
"($help)--no-resolve[Do not map IDs to Names]" \
- "($help)--no-trunc[Do not truncate output]" \
"($help -)1:node:__docker_complete_nodes" && ret=0
case $state in
(filter-options)
@@ -1162,7 +1157,6 @@ __docker_service_subcommand() {
"($help -a --all)"{-a,--all}"[Display all tasks]" \
"($help)*"{-f=,--filter=}"[Provide filter values]:filter:->filter-options" \
"($help)--no-resolve[Do not map IDs to Names]" \
- "($help)--no-trunc[Do not truncate output]" \
"($help -)1:service:__docker_complete_services" && ret=0
case $state in
(filter-options)
@@ -1256,8 +1250,6 @@ __docker_swarm_subcommand() {
# EO swarm
-# BO volume
-
__docker_volume_complete_ls_filters() {
[[ $PREFIX = -* ]] && return 1
integer ret=1
@@ -1269,7 +1261,7 @@ __docker_volume_complete_ls_filters() {
_describe -t dangling-filter-opts "Dangling Filter Options" dangling_opts && ret=0
;;
(driver)
- __docker_complete_info_plugins Volume && ret=0
+ __docker_plugins Volume && ret=0
;;
(name)
__docker_volumes && ret=0
@@ -1279,7 +1271,7 @@ __docker_volume_complete_ls_filters() {
;;
esac
else
- opts=('dangling' 'driver' 'label' 'name')
+ opts=('dangling' 'driver' 'name')
_describe -t filter-opts "Filter Options" opts -qS "=" && ret=0
fi
@@ -1338,12 +1330,12 @@ __docker_volume_subcommand() {
case "$words[1]" in
(create)
- _arguments $(__docker_arguments) -A '-*' \
+ _arguments $(__docker_arguments) \
$opts_help \
"($help -d --driver)"{-d=,--driver=}"[Volume driver name]:Driver name:(local)" \
"($help)*--label=[Set metadata for a volume]:label=value: " \
- "($help)*"{-o=,--opt=}"[Driver specific options]:Driver option: " \
- "($help -)1:Volume name: " && ret=0
+ "($help)--name=[Volume name]" \
+ "($help)*"{-o=,--opt=}"[Driver specific options]:Driver option: " && ret=0
;;
(inspect)
_arguments $(__docker_arguments) \
@@ -1355,7 +1347,6 @@ __docker_volume_subcommand() {
_arguments $(__docker_arguments) \
$opts_help \
"($help)*"{-f=,--filter=}"[Provide filter values]:filter:->filter-options" \
- "($help)--format=[Pretty-print volumes using a Go template]:template: " \
"($help -q --quiet)"{-q,--quiet}"[Only display volume names]" && ret=0
case $state in
(filter-options)
@@ -1366,7 +1357,6 @@ __docker_volume_subcommand() {
(rm)
_arguments $(__docker_arguments) \
$opts_help \
- "($help -f --force)"{-f,--force}"[Force the removal of one or more volumes]" \
"($help -):volume:__docker_volumes" && ret=0
;;
(help)
@@ -1377,8 +1367,6 @@ __docker_volume_subcommand() {
return ret
}
-# EO volume
-
__docker_caching_policy() {
oldp=( "$1"(Nmh+1) ) # 1 hour
(( $#oldp ))
@@ -1701,7 +1689,7 @@ __docker_subcommand() {
"($help -a --all)"{-a,--all}"[Show all images]" \
"($help)--digests[Show digests]" \
"($help)*"{-f=,--filter=}"[Filter values]:filter:->filter-options" \
- "($help)--format[Pretty-print containers using a Go template]:template: " \
+ "($help)--format[Pretty-print containers using a Go template]:format: " \
"($help)--no-trunc[Do not truncate output]" \
"($help -q --quiet)"{-q,--quiet}"[Only show numeric IDs]" \
"($help -): :__docker_repositories" && ret=0
@@ -1722,8 +1710,7 @@ __docker_subcommand() {
;;
(info|version)
_arguments $(__docker_arguments) \
- $opts_help \
- "($help -f --format)"{-f=,--format=}"[Format the output using the given go template]:template: " && ret=0
+ $opts_help && ret=0
;;
(inspect)
local state
@@ -1819,23 +1806,6 @@ __docker_subcommand() {
$opts_help \
"($help -)*:containers:__docker_runningcontainers" && ret=0
;;
- (plugin)
- local curcontext="$curcontext" state
- _arguments $(__docker_arguments) \
- $opts_help \
- "($help -): :->command" \
- "($help -)*:: :->option-or-argument" && ret=0
-
- case $state in
- (command)
- __docker_plugin_commands && ret=0
- ;;
- (option-or-argument)
- curcontext=${curcontext%:*:*}:docker-${words[-1]}:
- __docker_plugin_subcommand && ret=0
- ;;
- esac
- ;;
(port)
_arguments $(__docker_arguments) \
$opts_help \
@@ -1848,9 +1818,9 @@ __docker_subcommand() {
"($help -a --all)"{-a,--all}"[Show all containers]" \
"($help)--before=[Show only container created before...]:containers:__docker_containers" \
"($help)*"{-f=,--filter=}"[Filter values]:filter:__docker_complete_ps_filters" \
- "($help)--format[Pretty-print containers using a Go template]:template: " \
+ "($help)--format[Pretty-print containers using a Go template]:format: " \
"($help -l --latest)"{-l,--latest}"[Show only the latest created container]" \
- "($help -n --last)"{-n=,--last=}"[Show n last created containers (includes all states)]:n:(1 5 10 25 50)" \
+ "($help)-n[Show n last created containers, include non-running one]:n:(1 5 10 25 50)" \
"($help)--no-trunc[Do not truncate output]" \
"($help -q --quiet)"{-q,--quiet}"[Only show numeric IDs]" \
"($help -s --size)"{-s,--size}"[Display total file sizes]" \
From f39dcfda8d287bdfeda2bc1e0a7ab3785c6e4a73 Mon Sep 17 00:00:00 2001
From: Zach Himsel
Date: Tue, 20 Sep 2016 10:40:54 -0600
Subject: [PATCH 27/94] Update docker completion from upstream (#5426)
https://github.com/docker/docker/blob/be9e3f59e625a7be05f21a23f6debfb3f6728573/contrib/completion/zsh/_docker
---
plugins/docker/_docker | 67 +++++++++++++++++++++++++++++++-----------
1 file changed, 50 insertions(+), 17 deletions(-)
diff --git a/plugins/docker/_docker b/plugins/docker/_docker
index 554379246..1366fd61b 100644
--- a/plugins/docker/_docker
+++ b/plugins/docker/_docker
@@ -138,7 +138,7 @@ __docker_containers_names() {
__docker_get_containers all names "$@"
}
-__docker_plugins() {
+__docker_complete_info_plugins() {
[[ $PREFIX = -* ]] && return 1
integer ret=1
emulate -L zsh
@@ -228,7 +228,7 @@ __docker_get_log_options() {
journald_options=("env" "labels" "tag")
json_file_options=("env" "labels" "max-file" "max-size")
syslog_options=("env" "labels" "syslog-address" "syslog-facility" "syslog-format" "syslog-tls-ca-cert" "syslog-tls-cert" "syslog-tls-key" "syslog-tls-skip-verify" "tag")
- splunk_options=("env" "labels" "splunk-caname" "splunk-capath" "splunk-index" "splunk-insecureskipverify" "splunk-source" "splunk-sourcetype" "splunk-token" "splunk-url" "tag")
+ splunk_options=("env" "labels" "splunk-caname" "splunk-capath" "splunk-format" "splunk-gzip" "splunk-gzip-level" "splunk-index" "splunk-insecureskipverify" "splunk-source" "splunk-sourcetype" "splunk-token" "splunk-url" "splunk-verify-connection" "tag")
[[ $log_driver = (awslogs|all) ]] && _describe -t awslogs-options "awslogs options" awslogs_options "$@" && ret=0
[[ $log_driver = (fluentd|all) ]] && _describe -t fluentd-options "fluentd options" fluentd_options "$@" && ret=0
@@ -340,7 +340,7 @@ __docker_complete_ps_filters() {
__docker_networks && ret=0
;;
(status)
- status_opts=('created' 'dead' 'exited' 'paused' 'restarting' 'running')
+ status_opts=('created' 'dead' 'exited' 'paused' 'restarting' 'running' 'removing')
_describe -t status-filter-opts "Status Filter Options" status_opts && ret=0
;;
(volume)
@@ -434,7 +434,7 @@ __docker_complete_events_filter() {
(event)
local -a event_opts
event_opts=('attach' 'commit' 'connect' 'copy' 'create' 'delete' 'destroy' 'detach' 'die' 'disconnect' 'exec_create' 'exec_detach'
- 'exec_start' 'export' 'import' 'kill' 'load' 'mount' 'oom' 'pause' 'pull' 'push' 'reload' 'rename' 'resize' 'restart' 'save' 'start'
+ 'exec_start' 'export' 'health_status' 'import' 'kill' 'load' 'mount' 'oom' 'pause' 'pull' 'push' 'reload' 'rename' 'resize' 'restart' 'save' 'start'
'stop' 'tag' 'top' 'unmount' 'unpause' 'untag' 'update')
_describe -t event-filter-opts "event filter options" event_opts && ret=0
;;
@@ -463,6 +463,8 @@ __docker_complete_events_filter() {
return ret
}
+# BO network
+
__docker_network_complete_ls_filters() {
[[ $PREFIX = -* ]] && return 1
integer ret=1
@@ -470,7 +472,7 @@ __docker_network_complete_ls_filters() {
if compset -P '*='; then
case "${${words[-1]%=*}#*=}" in
(driver)
- __docker_plugins Network && ret=0
+ __docker_complete_info_plugins Network && ret=0
;;
(id)
__docker_networks_ids && ret=0
@@ -629,6 +631,7 @@ __docker_network_subcommand() {
$opts_help \
"($help)--no-trunc[Do not truncate the output]" \
"($help)*"{-f=,--filter=}"[Provide filter values]:filter:->filter-options" \
+ "($help)--format=[Pretty-print networks using a Go template]:template: " \
"($help -q --quiet)"{-q,--quiet}"[Only display numeric IDs]" && ret=0
case $state in
(filter-options)
@@ -649,6 +652,8 @@ __docker_network_subcommand() {
return ret
}
+# EO network
+
# BO node
__docker_node_complete_ls_filters() {
@@ -716,7 +721,6 @@ __docker_nodes() {
[[ $filter != "none" ]] && args=("-f $filter")
lines=(${(f)"$(_call_program commands docker $docker_options node ls $args)"})
-
# Parse header line to find columns
local i=1 j=1 k header=${lines[1]}
declare -A begin end
@@ -788,7 +792,7 @@ __docker_node_commands() {
"ls:List nodes in the swarm"
"promote:Promote a node as manager in the swarm"
"rm:Remove one or more nodes from the swarm"
- "ps:List tasks running on a node"
+ "ps:List tasks running on a node, defaults to current node"
"update:Update a node"
)
_describe -t docker-node-commands "docker node command" _docker_node_subcommands
@@ -842,6 +846,7 @@ __docker_node_subcommand() {
"($help -a --all)"{-a,--all}"[Display all instances]" \
"($help)*"{-f=,--filter=}"[Provide filter values]:filter:->filter-options" \
"($help)--no-resolve[Do not map IDs to Names]" \
+ "($help)--no-trunc[Do not truncate output]" \
"($help -)1:node:__docker_complete_nodes" && ret=0
case $state in
(filter-options)
@@ -1078,6 +1083,7 @@ __docker_service_subcommand() {
"($help)*--constraint=[Placement constraints]:constraint: "
"($help)--endpoint-mode=[Placement constraints]:mode:(dnsrr vip)"
"($help)*"{-e=,--env=}"[Set environment variables]:env: "
+ "($help)*--group-add=[Add additional user groups to the container]:group:_groups"
"($help)*--label=[Service labels]:label: "
"($help)--limit-cpu=[Limit CPUs]:value: "
"($help)--limit-memory=[Limit Memory]:value: "
@@ -1157,6 +1163,7 @@ __docker_service_subcommand() {
"($help -a --all)"{-a,--all}"[Display all tasks]" \
"($help)*"{-f=,--filter=}"[Provide filter values]:filter:->filter-options" \
"($help)--no-resolve[Do not map IDs to Names]" \
+ "($help)--no-trunc[Do not truncate output]" \
"($help -)1:service:__docker_complete_services" && ret=0
case $state in
(filter-options)
@@ -1171,6 +1178,7 @@ __docker_service_subcommand() {
"($help)--arg=[Service command args]:arguments: _normal" \
"($help)*--container-label-add=[Add or update container labels]:label: " \
"($help)*--container-label-rm=[Remove a container label by its key]:label: " \
+ "($help)*--group-rm=[Remove previously added user groups from the container]:group:_groups" \
"($help)--image=[Service image tag]:image:__docker_repositories" \
"($help -)1:service:__docker_complete_services" && ret=0
;;
@@ -1250,6 +1258,8 @@ __docker_swarm_subcommand() {
# EO swarm
+# BO volume
+
__docker_volume_complete_ls_filters() {
[[ $PREFIX = -* ]] && return 1
integer ret=1
@@ -1261,7 +1271,7 @@ __docker_volume_complete_ls_filters() {
_describe -t dangling-filter-opts "Dangling Filter Options" dangling_opts && ret=0
;;
(driver)
- __docker_plugins Volume && ret=0
+ __docker_complete_info_plugins Volume && ret=0
;;
(name)
__docker_volumes && ret=0
@@ -1271,7 +1281,7 @@ __docker_volume_complete_ls_filters() {
;;
esac
else
- opts=('dangling' 'driver' 'name')
+ opts=('dangling' 'driver' 'label' 'name')
_describe -t filter-opts "Filter Options" opts -qS "=" && ret=0
fi
@@ -1330,12 +1340,12 @@ __docker_volume_subcommand() {
case "$words[1]" in
(create)
- _arguments $(__docker_arguments) \
+ _arguments $(__docker_arguments) -A '-*' \
$opts_help \
"($help -d --driver)"{-d=,--driver=}"[Volume driver name]:Driver name:(local)" \
"($help)*--label=[Set metadata for a volume]:label=value: " \
- "($help)--name=[Volume name]" \
- "($help)*"{-o=,--opt=}"[Driver specific options]:Driver option: " && ret=0
+ "($help)*"{-o=,--opt=}"[Driver specific options]:Driver option: " \
+ "($help -)1:Volume name: " && ret=0
;;
(inspect)
_arguments $(__docker_arguments) \
@@ -1347,6 +1357,7 @@ __docker_volume_subcommand() {
_arguments $(__docker_arguments) \
$opts_help \
"($help)*"{-f=,--filter=}"[Provide filter values]:filter:->filter-options" \
+ "($help)--format=[Pretty-print volumes using a Go template]:template: " \
"($help -q --quiet)"{-q,--quiet}"[Only display volume names]" && ret=0
case $state in
(filter-options)
@@ -1357,6 +1368,7 @@ __docker_volume_subcommand() {
(rm)
_arguments $(__docker_arguments) \
$opts_help \
+ "($help -f --force)"{-f,--force}"[Force the removal of one or more volumes]" \
"($help -):volume:__docker_volumes" && ret=0
;;
(help)
@@ -1367,6 +1379,8 @@ __docker_volume_subcommand() {
return ret
}
+# EO volume
+
__docker_caching_policy() {
oldp=( "$1"(Nmh+1) ) # 1 hour
(( $#oldp ))
@@ -1646,7 +1660,8 @@ __docker_subcommand() {
$opts_help \
"($help)*"{-f=,--filter=}"[Filter values]:filter:__docker_complete_events_filter" \
"($help)--since=[Events created since this timestamp]:timestamp: " \
- "($help)--until=[Events created until this timestamp]:timestamp: " && ret=0
+ "($help)--until=[Events created until this timestamp]:timestamp: " \
+ "($help)--format=[Format the output using the given go template]:template: " && ret=0
;;
(exec)
local state
@@ -1689,7 +1704,7 @@ __docker_subcommand() {
"($help -a --all)"{-a,--all}"[Show all images]" \
"($help)--digests[Show digests]" \
"($help)*"{-f=,--filter=}"[Filter values]:filter:->filter-options" \
- "($help)--format[Pretty-print containers using a Go template]:format: " \
+ "($help)--format[Pretty-print images using a Go template]:template: " \
"($help)--no-trunc[Do not truncate output]" \
"($help -q --quiet)"{-q,--quiet}"[Only show numeric IDs]" \
"($help -): :__docker_repositories" && ret=0
@@ -1710,7 +1725,8 @@ __docker_subcommand() {
;;
(info|version)
_arguments $(__docker_arguments) \
- $opts_help && ret=0
+ $opts_help \
+ "($help -f --format)"{-f=,--format=}"[Format the output using the given go template]:template: " && ret=0
;;
(inspect)
local state
@@ -1806,6 +1822,23 @@ __docker_subcommand() {
$opts_help \
"($help -)*:containers:__docker_runningcontainers" && ret=0
;;
+ (plugin)
+ local curcontext="$curcontext" state
+ _arguments $(__docker_arguments) \
+ $opts_help \
+ "($help -): :->command" \
+ "($help -)*:: :->option-or-argument" && ret=0
+
+ case $state in
+ (command)
+ __docker_plugin_commands && ret=0
+ ;;
+ (option-or-argument)
+ curcontext=${curcontext%:*:*}:docker-${words[-1]}:
+ __docker_plugin_subcommand && ret=0
+ ;;
+ esac
+ ;;
(port)
_arguments $(__docker_arguments) \
$opts_help \
@@ -1818,9 +1851,9 @@ __docker_subcommand() {
"($help -a --all)"{-a,--all}"[Show all containers]" \
"($help)--before=[Show only container created before...]:containers:__docker_containers" \
"($help)*"{-f=,--filter=}"[Filter values]:filter:__docker_complete_ps_filters" \
- "($help)--format[Pretty-print containers using a Go template]:format: " \
+ "($help)--format[Pretty-print containers using a Go template]:template: " \
"($help -l --latest)"{-l,--latest}"[Show only the latest created container]" \
- "($help)-n[Show n last created containers, include non-running one]:n:(1 5 10 25 50)" \
+ "($help -n --last)"{-n=,--last=}"[Show n last created containers (includes all states)]:n:(1 5 10 25 50)" \
"($help)--no-trunc[Do not truncate output]" \
"($help -q --quiet)"{-q,--quiet}"[Only show numeric IDs]" \
"($help -s --size)"{-s,--size}"[Display total file sizes]" \
From 7e5483d672aab9764231d9a569b6c7451474eecb Mon Sep 17 00:00:00 2001
From: Dawnflash Lightstring
Date: Wed, 21 Sep 2016 12:20:08 +0200
Subject: [PATCH 28/94] Add check for git and bzr to agnoster theme
Plugin command-not-found on Arch Linux returns 0 if git or bzr is found in repos, hence outputting unwanted pkgfile output.
Checking if the commands exist first fixes all such issues.
---
themes/agnoster.zsh-theme | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/themes/agnoster.zsh-theme b/themes/agnoster.zsh-theme
index e1a294ee8..07546fd34 100644
--- a/themes/agnoster.zsh-theme
+++ b/themes/agnoster.zsh-theme
@@ -86,7 +86,7 @@ prompt_context() {
# Git: branch/detached head, dirty status
prompt_git() {
-
+ (( $+commands[git] )) || return
local PL_BRANCH_CHAR
() {
local LC_ALL="" LC_CTYPE="en_US.UTF-8"
@@ -128,6 +128,7 @@ prompt_git() {
}
prompt_bzr() {
+ (( $+commands[bzr] )) || return
if (bzr status >/dev/null 2>&1); then
status_mod=`bzr status | head -n1 | grep "modified" | wc -m`
status_all=`bzr status | head -n1 | wc -m`
From 973c92cd91d595fde37a4dbd5a6389072654252f Mon Sep 17 00:00:00 2001
From: Ash Furrow
Date: Wed, 21 Sep 2016 11:55:58 -0400
Subject: [PATCH 29/94] Adds option for directory to Xcode xc function. (#5253)
---
plugins/xcode/README.md | 2 +-
plugins/xcode/xcode.plugin.zsh | 13 +++++++++++--
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/plugins/xcode/README.md b/plugins/xcode/README.md
index 15e657859..c12ce047f 100644
--- a/plugins/xcode/README.md
+++ b/plugins/xcode/README.md
@@ -26,7 +26,7 @@ plugins=(... xcode)
### `xc`
-Opens the current directory in Xcode as an Xcode project. This will open one of the `.xcworkspace` and `.xcodeproj` files that it can find in the current working directory.
+Opens the current directory in Xcode as an Xcode project. This will open one of the `.xcworkspace` and `.xcodeproj` files that it can find in the current working directory. You can also specify a directory to look in for the Xcode files.
Returns 1 if it didn't find any relevant files.
### `simulator`
diff --git a/plugins/xcode/xcode.plugin.zsh b/plugins/xcode/xcode.plugin.zsh
index 0a2fa0839..f711c39fb 100644
--- a/plugins/xcode/xcode.plugin.zsh
+++ b/plugins/xcode/xcode.plugin.zsh
@@ -7,10 +7,19 @@ alias xcsel='sudo xcode-select --switch'
# source: http://gist.github.com/subdigital/5420709
function xc {
local xcode_proj
- xcode_proj=(*.{xcworkspace,xcodeproj}(N))
+ if [[ $# == 0 ]]; then
+ xcode_proj=(*.{xcworkspace,xcodeproj}(N))
+ else
+ xcode_proj=($1/*.{xcworkspace,xcodeproj}(N))
+ fi
+
if [[ ${#xcode_proj} -eq 0 ]]; then
- echo "No xcworkspace/xcodeproj file found in the current directory."
+ if [[ $# == 0 ]]; then
+ echo "No xcworkspace/xcodeproj file found in the current directory."
+ else
+ echo "No xcworkspace/xcodeproj file found in $1."
+ fi
return 1
else
echo "Found ${xcode_proj[1]}"
From bd599066d763a0792b6c6b1654f098f3ca6e1df7 Mon Sep 17 00:00:00 2001
From: Carlo Dapor
Date: Fri, 12 Aug 2016 20:50:57 +0200
Subject: [PATCH 30/94] Added angular-cli (ng) completion.
---
plugins/ng/ng.plugin.zsh | 73 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 73 insertions(+)
create mode 100644 plugins/ng/ng.plugin.zsh
diff --git a/plugins/ng/ng.plugin.zsh b/plugins/ng/ng.plugin.zsh
new file mode 100644
index 000000000..8e9b4ab16
--- /dev/null
+++ b/plugins/ng/ng.plugin.zsh
@@ -0,0 +1,73 @@
+
+ng_opts='addon asset-sizes b build completion d destroy doc e2e g generate get h help i init install lint make-this-awesome new s serve server set t test v version -h --help'
+
+_ng_completion () {
+ local words cword opts
+ read -Ac words
+ read -cn cword
+ let cword-=1
+
+ case $words[cword] in
+ addon )
+ opts='-b --blueprint -d -dir --directory --dry-run -sb --skip-bower -sg --skip-git -sn --skip-npm -v --verbose'
+ ;;
+
+ asset-sizes )
+ opts='-o --output-path'
+ ;;
+
+ i | install)
+ opts=''
+ ;;
+
+ b | build )
+ opts='--environment --output-path --suppress-sizes --watch --watcher -dev -e -prod'
+ ;;
+
+ d | destroy )
+ opts='--dry-run --verbose --pod --classic --dummy --in-repo --in-repo-addon -d -v -p -c -dum -id -ir'
+ ;;
+
+ g | generate )
+ opts='component directive pipe route service --generate -d --dry-run --verbose -v --pod -p --classic -c --dummy -dum -id --in-repo --in-repo-addon -ir'
+ ;;
+
+ h | help | -h | --help)
+ opts='--json --verbose -v'
+ ;;
+
+ init )
+ opts='--blueprint --dry-run --link-cli --mobile --name --prefix --skip-bower --skip-npm --source-dir --style --verbose -b -d -lc -n -p -sb -sd -sn -v'
+ ;;
+
+ new )
+ opts='--blueprint --directory --dry-run --link-cli --mobile --prefix --skip-bower --skip-git --skip-npm --source-dir --style --verbose -b -d -dir -lc -p -sb -sd -sg -sn -v'
+ ;;
+
+ s | serve | server )
+ opts='--environment --host --insecure-proxy --inspr --live-reload --live-reload-host --live-reload-port --output-path --port --proxy --ssl --ssl-cert --ssl-key --watcher -H -dev -e -lr -lrbu -lrh -lrp -op -out -p -pr -prod -pxy -w'
+ ;;
+
+ set )
+ opts='--global -g'
+ ;;
+
+ t | test )
+ opts='--browsers --colors --config-file --environment --filter --host --launch --log-level --module --path --port --query --reporter --server --silent --test-page --test-port --watch -H -c -cf -e -f -m -r -s -tp -w'
+ ;;
+
+ v | version )
+ opts='--verbose'
+ ;;
+
+ ng | *)
+ opts=$ng_opts
+ ;;
+ esac
+
+ setopt shwordsplit
+ reply=($opts)
+ unset shwordsplit
+}
+
+compctl -K _ng_completion ng
From a748f513a6270fafca8328d614c7200a6f1e7484 Mon Sep 17 00:00:00 2001
From: Carlo Dapor
Date: Fri, 12 Aug 2016 21:01:51 +0200
Subject: [PATCH 31/94] The argument completion also has no extra options.
---
plugins/ng/ng.plugin.zsh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plugins/ng/ng.plugin.zsh b/plugins/ng/ng.plugin.zsh
index 8e9b4ab16..ce34c8b54 100644
--- a/plugins/ng/ng.plugin.zsh
+++ b/plugins/ng/ng.plugin.zsh
@@ -16,7 +16,7 @@ _ng_completion () {
opts='-o --output-path'
;;
- i | install)
+ completion | i | install)
opts=''
;;
From 3da2f7ea6a5aa6ea312846e070b534df5aa78baf Mon Sep 17 00:00:00 2001
From: Carlo Dapor
Date: Fri, 12 Aug 2016 23:43:19 +0200
Subject: [PATCH 32/94] Updated options for generate. Added gh-pages:deploy /
github-pages:deploy.
---
plugins/ng/ng.plugin.zsh | 22 +++++++++++++---------
1 file changed, 13 insertions(+), 9 deletions(-)
diff --git a/plugins/ng/ng.plugin.zsh b/plugins/ng/ng.plugin.zsh
index ce34c8b54..2488bc230 100644
--- a/plugins/ng/ng.plugin.zsh
+++ b/plugins/ng/ng.plugin.zsh
@@ -1,5 +1,5 @@
-ng_opts='addon asset-sizes b build completion d destroy doc e2e g generate get h help i init install lint make-this-awesome new s serve server set t test v version -h --help'
+ng_opts='addon asset-sizes b build completion d destroy doc e2e g generate get github-pages:deploy gh-pages:deploy h help i init install lint make-this-awesome new s serve server set t test v version -h --help'
_ng_completion () {
local words cword opts
@@ -16,12 +16,8 @@ _ng_completion () {
opts='-o --output-path'
;;
- completion | i | install)
- opts=''
- ;;
-
b | build )
- opts='--environment --output-path --suppress-sizes --watch --watcher -dev -e -prod'
+ opts='--environment --output-path --suppress-sizes --target --watch --watcher -dev -e -prod'
;;
d | destroy )
@@ -29,7 +25,11 @@ _ng_completion () {
;;
g | generate )
- opts='component directive pipe route service --generate -d --dry-run --verbose -v --pod -p --classic -c --dummy -dum -id --in-repo --in-repo-addon -ir'
+ opts='class component directive enum module pipe route service --generate -d --dry-run --verbose -v --pod -p --classic -c --dummy -dum -id --in-repo --in-repo-addon -ir'
+ ;;
+
+ gh-pages:deploy | github-pages:deploy )
+ opts='--environment --gh-token --gh-username --skip-build --user-page --message'
;;
h | help | -h | --help)
@@ -45,7 +45,7 @@ _ng_completion () {
;;
s | serve | server )
- opts='--environment --host --insecure-proxy --inspr --live-reload --live-reload-host --live-reload-port --output-path --port --proxy --ssl --ssl-cert --ssl-key --watcher -H -dev -e -lr -lrbu -lrh -lrp -op -out -p -pr -prod -pxy -w'
+ opts='--environment --host --insecure-proxy --inspr --live-reload --live-reload-base-url --live-reload-host --live-reload-live-css --live-reload-port --output-path --port --proxy --ssl --ssl-cert --ssl-key --target --watcher -H -dev -e -lr -lrbu -lrh -lrp -op -out -p -pr -prod -pxy -t -w'
;;
set )
@@ -60,9 +60,13 @@ _ng_completion () {
opts='--verbose'
;;
- ng | *)
+ ng )
opts=$ng_opts
;;
+
+ * )
+ opts=''
+ ;;
esac
setopt shwordsplit
From 34bc556bd3500da316e020fb2cec3ba8dc6115ab Mon Sep 17 00:00:00 2001
From: Carlo Dapor
Date: Mon, 15 Aug 2016 15:27:38 +0200
Subject: [PATCH 33/94] Added README.md
---
plugins/ng/README.md | 37 +++++++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)
create mode 100644 plugins/ng/README.md
diff --git a/plugins/ng/README.md b/plugins/ng/README.md
new file mode 100644
index 000000000..86ad64041
--- /dev/null
+++ b/plugins/ng/README.md
@@ -0,0 +1,37 @@
+## NG Plugin
+
+This [ng plugin](https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/ng)
+ adds completion support for Angular's CLI (named ng).
+
+Ng is hosted on [ng home](https://github.com/catull/angular-cli)
+
+It is used to generate Angular 2 app "stubs", build those apps, configure them,
+test them, lint them etc.
+
+Ahem, "stubs" is not what Angular engineers refer to the items ng can generate
+for you.
+
+"Stubs" can be any one of:
+- class
+- component
+- directive
+- enum
+- module
+- pipe
+- route
+- service
+
+At the moment, `ng completion` creates a very rough completion for Zsh and
+Bash.
+
+It is missing most of the options and a few arguments.
+In future, this plugin may be shortened to simply being
+
+```zsh
+eval `ng completion`
+```
+
+There is hope this materialises in the 21st century.
+
+### CONTRIBUTOR
+ - Carlo Dapor ([catull](https://github.com/catull))
From 904d0ccef9a3508df61f9b0bb784d8b59d5e8bb2 Mon Sep 17 00:00:00 2001
From: Shang Yehua
Date: Tue, 6 Sep 2016 11:10:42 +0800
Subject: [PATCH 34/94] Add some prompts for "install:install-file" (#5376)
Add "-DgroupId= -DartifactId= -Dversion= -Dpackaging=jar -Dfile=" to options for
"install:install-file" for when you need install a local jar file.
Closes #5376.
---
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 d290c98ec..625aad949 100644
--- a/plugins/mvn/mvn.plugin.zsh
+++ b/plugins/mvn/mvn.plugin.zsh
@@ -172,7 +172,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 -DskipITs -Dmaven.surefire.debug -DenableCiProfile -Dpmd.skip=true -Dcheckstyle.skip=true -Dtycho.mode=maven -Dmaven.test.failure.ignore=true
+ -Dmaven.test.skip=true -DskipTests -DskipITs -Dmaven.surefire.debug -DenableCiProfile -Dpmd.skip=true -Dcheckstyle.skip=true -Dtycho.mode=maven -Dmaven.test.failure.ignore=true -DgroupId= -DartifactId= -Dversion= -Dpackaging=jar -Dfile=
# 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 0d897cca7499a4dd46536acbd999723fd0ca2b5d Mon Sep 17 00:00:00 2001
From: Gravemind
Date: Thu, 22 Sep 2016 00:30:35 +0200
Subject: [PATCH 35/94] Fix hyphen and underscore filename completion
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This deletes the previous hack that allowed completing files with
the extension: e.g. `abcd.z` to `abcdefg.z`.
It is still possible to use `abcd[TAB].z`, and hyphens or underscores
are very much more important than this other trick.
Source:
https://github.com/robbyrussell/oh-my-zsh/issues/1398#issuecomment-169163149
Signed-off-by: Marc Cornellà
---
lib/completion.zsh | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/lib/completion.zsh b/lib/completion.zsh
index f5b292471..85c892165 100644
--- a/lib/completion.zsh
+++ b/lib/completion.zsh
@@ -12,14 +12,14 @@ zmodload -i zsh/complist
## case-insensitive (all),partial-word and then substring completion
if [ "x$CASE_SENSITIVE" = "xtrue" ]; then
- zstyle ':completion:*' matcher-list 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
+ zstyle ':completion:*' matcher-list 'r:|=*' 'l:|=* r:|=*'
unset CASE_SENSITIVE
else
if [ "x$HYPHEN_INSENSITIVE" = "xtrue" ]; then
- zstyle ':completion:*' matcher-list 'm:{a-zA-Z-_}={A-Za-z_-}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
+ zstyle ':completion:*' matcher-list 'm:{a-zA-Z-_}={A-Za-z_-}' 'r:|=*' 'l:|=* r:|=*'
unset HYPHEN_INSENSITIVE
else
- zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
+ zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|=*' 'l:|=* r:|=*'
fi
fi
From 4e12024b0b883f31ab80a749d7ad6fadcee96904 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc=20Cornell=C3=A0?=
Date: Thu, 22 Sep 2016 00:40:00 +0200
Subject: [PATCH 36/94] Fix styling of lib/completion.zsh
---
lib/completion.zsh | 27 ++++++++++++---------------
1 file changed, 12 insertions(+), 15 deletions(-)
diff --git a/lib/completion.zsh b/lib/completion.zsh
index 85c892165..bbd021656 100644
--- a/lib/completion.zsh
+++ b/lib/completion.zsh
@@ -1,4 +1,7 @@
# fixme - the load process here seems a bit bizarre
+zmodload -i zsh/complist
+
+WORDCHARS=''
unsetopt menu_complete # do not autoselect the first completion entry
unsetopt flowcontrol
@@ -6,32 +9,26 @@ setopt auto_menu # show completion menu on succesive tab press
setopt complete_in_word
setopt always_to_end
-WORDCHARS=''
+# should this be in keybindings?
+bindkey -M menuselect '^o' accept-and-infer-next-history
+zstyle ':completion:*:*:*:*:*' menu select
-zmodload -i zsh/complist
-
-## case-insensitive (all),partial-word and then substring completion
-if [ "x$CASE_SENSITIVE" = "xtrue" ]; then
+# case insensitive (all), partial-word and substring completion
+if [[ "$CASE_SENSITIVE" = true ]]; then
zstyle ':completion:*' matcher-list 'r:|=*' 'l:|=* r:|=*'
- unset CASE_SENSITIVE
else
- if [ "x$HYPHEN_INSENSITIVE" = "xtrue" ]; then
+ if [[ "$HYPHEN_INSENSITIVE" = true ]]; then
zstyle ':completion:*' matcher-list 'm:{a-zA-Z-_}={A-Za-z_-}' 'r:|=*' 'l:|=* r:|=*'
- unset HYPHEN_INSENSITIVE
else
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|=*' 'l:|=* r:|=*'
fi
fi
+unset CASE_SENSITIVE HYPHEN_INSENSITIVE
zstyle ':completion:*' list-colors ''
-
-# should this be in keybindings?
-bindkey -M menuselect '^o' accept-and-infer-next-history
-
-zstyle ':completion:*:*:*:*:*' menu select
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;34=0=01'
-if [ "$OSTYPE[0,7]" = "solaris" ]
-then
+
+if [[ "$OSTYPE" = solaris* ]]; then
zstyle ':completion:*:*:*:*:processes' command "ps -u $USER -o pid,user,comm"
else
zstyle ':completion:*:*:*:*:processes' command "ps -u $USER -o pid,user,comm -w -w"
From 1b7fc2f3aca32ba8713be0e27305c5cf578033f6 Mon Sep 17 00:00:00 2001
From: Brad Urani
Date: Thu, 22 Sep 2016 10:41:30 -0700
Subject: [PATCH 37/94] Add copybuffer function and keybinding (#5431)
* Add copybuffer function and keybinding:
binds ctrl-o to copy the command line buffer to the system clipboard.
* Add README
---
plugins/copybuffer/README.md | 11 +++++++++++
plugins/copybuffer/copybuffer.plugin.zsh | 14 ++++++++++++++
2 files changed, 25 insertions(+)
create mode 100644 plugins/copybuffer/README.md
create mode 100644 plugins/copybuffer/copybuffer.plugin.zsh
diff --git a/plugins/copybuffer/README.md b/plugins/copybuffer/README.md
new file mode 100644
index 000000000..da138bdbd
--- /dev/null
+++ b/plugins/copybuffer/README.md
@@ -0,0 +1,11 @@
+# `copybuffer` plugin
+
+This plugin binds the ctrl-o keyboard shortcut to a command that copies the text
+that is currently typed in the command line ($BUFFER) to the system clipboard.
+
+This is useful if you type a command - and before you hit enter to execute it - want
+to copy it maybe so you can paste it into a script, gist or whatnot.
+
+```zsh
+plugins=(... copybuffer)
+```
diff --git a/plugins/copybuffer/copybuffer.plugin.zsh b/plugins/copybuffer/copybuffer.plugin.zsh
new file mode 100644
index 000000000..cc205d40f
--- /dev/null
+++ b/plugins/copybuffer/copybuffer.plugin.zsh
@@ -0,0 +1,14 @@
+# copy the active line from the command line buffer
+# onto the system clipboard (requires clipcopy plugin)
+
+copybuffer () {
+ if which clipcopy &>/dev/null; then
+ echo $BUFFER | clipcopy
+ else
+ echo "clipcopy function not found. Please make sure you have Oh My Zsh installed correctly."
+ fi
+}
+
+zle -N copybuffer
+
+bindkey "^O" copybuffer
From 57fcee0f1c520a7c5e3aa5e2bde974154cdaf0c3 Mon Sep 17 00:00:00 2001
From: Robby Russell
Date: Sat, 24 Sep 2016 16:06:44 -0700
Subject: [PATCH 38/94] README copy updates
---
README.md | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index aab1af9fd..6da731890 100644
--- a/README.md
+++ b/README.md
@@ -2,9 +2,15 @@
-Oh My Zsh is an open source, community-driven framework for managing your [zsh](http://www.zsh.org/) configuration. That sounds boring. Let's try this again.
+Oh My Zsh is an open source, community-driven framework for managing your [zsh](http://www.zsh.org/) configuration.
-__Oh My Zsh is a way of life!__ Once installed, your terminal prompt will become the talk of the town _or your money back!_ Each time you interact with your command prompt, you'll be able to take advantage of the hundreds of bundled plugins and pretty themes. Strangers will come up to you in cafés and ask you, _"that is amazing. are you some sort of genius?"_ Finally, you'll begin to get the sort of attention that you always felt that you deserved. ...or maybe you'll just use the time that you saved to start flossing more often.
+That sounds boring. Let's try this again.
+
+__Oh My Zsh is a way of life!__
+
+Once installed, your terminal shell will become the talk of the town _or your money back!_ With each keystroke in your command prompt, you'll take advantage of the hundreds of powerful plugins and beautiful themes. Strangers will come up to you in cafés and ask you, _"that is amazing! are you some sort of genius?"_
+
+Finally, you'll begin to get the sort of attention that you have always felt you deserved. ...or maybe you'll use the time that you're saving to start flossing more often.
To learn more, visit [ohmyz.sh](http://ohmyz.sh) and follow [@ohmyzsh](https://twitter.com/ohmyzsh) on Twitter.
@@ -202,7 +208,10 @@ Thank you so much!
## Follow Us
-We have an [@ohmyzsh](https://twitter.com/ohmyzsh) Twitter account. You should follow it.
+We're on the social medias.
+
+* [@ohmyzsh](https://twitter.com/ohmyzsh) on Twitter. You should follow it.
+* [Oh My Zsh](https://www.facebook.com/Oh-My-Zsh-296616263819290/) on Facebook.
## Merchandise
From 798c38dd1a70637cd17c26879be83e7f25a3ee53 Mon Sep 17 00:00:00 2001
From: slavaGanzin
Date: Tue, 27 Sep 2016 15:18:23 +0300
Subject: [PATCH 39/94] globalias fix #4834
---
plugins/globalias/globalias.plugin.zsh | 11 +++++++++++
1 file changed, 11 insertions(+)
create mode 100644 plugins/globalias/globalias.plugin.zsh
diff --git a/plugins/globalias/globalias.plugin.zsh b/plugins/globalias/globalias.plugin.zsh
new file mode 100644
index 000000000..95a0e3072
--- /dev/null
+++ b/plugins/globalias/globalias.plugin.zsh
@@ -0,0 +1,11 @@
+globalias() {
+ zle _expand_alias
+ zle expand-word
+ zle self-insert
+}
+zle -N globalias
+bindkey -e " " globalias
+bindkey -v " " globalias
+bindkey -e "^ " magic-space # control-space to bypass completion
+bindkey -v "^ " magic-space
+bindkey -M isearch " " magic-space # normal space during searches
From 65874f2b2201c2e55d410ab322dc20394a587b83 Mon Sep 17 00:00:00 2001
From: Leif Ringstad
Date: Wed, 28 Sep 2016 14:47:00 +0200
Subject: [PATCH 40/94] Add more docker compose aliases (#5422)
Adds the following aliases:
```zsh
alias dco='docker-compose'
alias dcr='docker-compose run'
alias dce='docker-compose exec'
```
And sorts the aliases similar to `docker-compose help` order
---
plugins/docker-compose/docker-compose.plugin.zsh | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/plugins/docker-compose/docker-compose.plugin.zsh b/plugins/docker-compose/docker-compose.plugin.zsh
index 351e77824..9f2457fc4 100644
--- a/plugins/docker-compose/docker-compose.plugin.zsh
+++ b/plugins/docker-compose/docker-compose.plugin.zsh
@@ -5,9 +5,16 @@
# Aliases ###################################################################
-alias dcup='docker-compose up'
+# Use dco as alias for docker-compose, since dc on *nix is 'dc - an arbitrary precision calculator'
+# https://www.gnu.org/software/bc/manual/dc-1.05/html_mono/dc.html
+
+alias dco='docker-compose'
+
alias dcb='docker-compose build'
-alias dcrm='docker-compose rm'
+alias dce='docker-compose exec'
alias dcps='docker-compose ps'
-alias dcstop='docker-compose stop'
alias dcrestart='docker-compose restart'
+alias dcrm='docker-compose rm'
+alias dcr='docker-compose run'
+alias dcstop='docker-compose stop'
+alias dcup='docker-compose up'
From ac8915d43f0e8de9294c8552dc338ecc9993acd2 Mon Sep 17 00:00:00 2001
From: Diego Said Anaya Mancilla
Date: Wed, 28 Sep 2016 14:28:53 -0500
Subject: [PATCH 41/94] Update pip plugin to last stable release (#5472)
Update pip plugin to last stable release
---
plugins/pip/_pip | 38 ++++++++++++++++++++++++++------------
1 file changed, 26 insertions(+), 12 deletions(-)
diff --git a/plugins/pip/_pip b/plugins/pip/_pip
index cb155e5f4..732ffabea 100644
--- a/plugins/pip/_pip
+++ b/plugins/pip/_pip
@@ -1,7 +1,8 @@
#compdef pip pip2 pip-2.7 pip3 pip-3.2 pip-3.3 pip-3.4
#autoload
-# pip zsh completion, based on homebrew completion
+# pip zsh completion, based on last stable release (pip8)
+# homebrew completion and backwards compatibility
_pip_all() {
# we cache the list of packages (originally from the macports plugin)
@@ -17,30 +18,43 @@ _pip_installed() {
local -a _1st_arguments
_1st_arguments=(
- 'bundle:create pybundles (archives containing multiple packages)'
- 'freeze:output all currently installed packages (exact versions) to stdout'
- 'help:show available commands'
- 'show:show information about installed packages'
'install:install packages'
- 'search:search PyPI'
+ 'download:download packages'
'uninstall:uninstall packages'
- 'unzip:unzip individual packages'
- 'zip:zip individual packages'
+ 'freeze:output all currently installed packages (exact versions) to stdout'
+ 'list:list installed packages'
+ 'show:show information about installed packages'
+ 'search:search PyPI'
+ 'wheel:build individual wheel archives for your requirements and dependencies'
+ 'hash:compute a hash of a local package archive'
+ 'help:show available commands'
+ 'bundle:create pybundles (archives containing multiple packages)(deprecated)'
+ 'unzip:unzip individual packages(deprecated)'
+ 'zip:zip individual packages(deprecated)'
)
local expl
local -a all_pkgs installed_pkgs
_arguments \
- '(--version)--version[show version number of program and exit]' \
'(-h --help)'{-h,--help}'[show help]' \
- '(-E --environment)'{-E,--environment}'[virtualenv environment to run pip in]' \
- '(-s --enable-site-packages)'{-s,--enable-site-packages}'[include site-packages in virtualenv]' \
+ '(--isolated)--isolated[run pip in isolated mode, ignores environment variables and user configuration]' \
'(-v --verbose)'{-v,--verbose}'[give more output]' \
+ '(-V --version)'{-V,--version}'[show version number of program and exit]' \
'(-q --quiet)'{-q,--quiet}'[give less output]' \
'(--log)--log[log file location]' \
'(--proxy)--proxy[proxy in form user:passwd@proxy.server:port]' \
+ '(--retries)--retries[max number of retries per connection (default 5 times)]' \
'(--timeout)--timeout[socket timeout (default 15s)]' \
+ '(--exists-action)--exists-action[default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup]' \
+ '(--trusted-host)--trusted-host[mark this host as trusted]' \
+ '(--cert)--cert[path to alternate CA bundle]' \
+ '(--client-cert)--client-cert[path to SSL client certificate]' \
+ '(--cache-dir)--cache-dir[store the cache data in specified directory]' \
+ '(--no-cache-dir)--no-cache-dir[disable de cache]' \
+ '(--disable-pip-version-check)--disable-pip-version-check[do not check periodically for new pip version downloads]' \
+ '(-E --environment)'{-E,--environment}'[virtualenv environment to run pip in (deprecated)]' \
+ '(-s --enable-site-packages)'{-s,--enable-site-packages}'[include site-packages in virtualenv (deprecated)]' \
'*:: :->subcmds' && return 0
if (( CURRENT == 1 )); then
@@ -56,7 +70,7 @@ case "$words[1]" in
_arguments \
'(-l --local)'{-l,--local}'[report only virtualenv packages]' ;;
install)
- _arguments \
+ _arguments \
'(-U --upgrade)'{-U,--upgrade}'[upgrade all packages to the newest available version]' \
'(-f --find-links)'{-f,--find-links}'[URL for finding packages]' \
'(-r --requirement)'{-r,--requirement}'[Requirements file for packages to install]:File:_files' \
From 10ffa4fe992e56a93396ed8914eba74821bb2cca Mon Sep 17 00:00:00 2001
From: Christian Ferbar
Date: Tue, 27 Sep 2016 12:27:37 +0200
Subject: [PATCH 42/94] Add README to svn plugin
---
plugins/svn/README.md | 64 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 64 insertions(+)
create mode 100644 plugins/svn/README.md
diff --git a/plugins/svn/README.md b/plugins/svn/README.md
new file mode 100644
index 000000000..b8eff70f5
--- /dev/null
+++ b/plugins/svn/README.md
@@ -0,0 +1,64 @@
+# `svn` plugin
+
+This plugin adds some utility functions to display additional information regarding your current
+svn repsitiory. See http://subversion.apache.org/ for the full svn documentation.
+
+## Functions
+
+| Command | Description |
+|:-----------------------|:----------------------------------------|
+|svn_prompt_info | prompt for some themes |
+|in_svn | within svn directory |
+|svn_get_repo_name | |
+|svn_get_branch_name | branch name (see caveats) |
+|svn_get_rev_nr | revision number |
+|svn_dirty | changes in this subversion repo |
+
+## Caveats
+
+The plugin expects the first directory to be the current branch / tag / trunk. So, it returns
+the first path element if you don't use branches.
+
+## Usage
+
+To use it, add `svn` to your plugins array:
+```sh
+plugins=(... svn)
+```
+
+### Agnoster theme git-like prompt
+
+Enable the svn plugin and add the followind lines to your ```~/.zshrc```
+
+```shell
+prompt_svn() {
+ local rev branch
+ if in_svn; then
+ rev=$(svn_get_rev_nr)
+ branch=$(svn_get_branch_name)
+ if [ `svn_dirty_choose_pwd 1 0` -eq 1 ]; then
+ prompt_segment yellow black
+ echo -n "$rev@$branch"
+ echo -n "±"
+ else
+ prompt_segment green black
+ echo -n "$rev@$branch"
+ fi
+ fi
+}
+```
+
+override the agnoster build_prompt() function:
+
+```shell
+build_prompt() {
+ RETVAL=$?
+ prompt_status
+ prompt_context
+ prompt_dir
+ prompt_git
+ prompt_svn
+ prompt_end
+}
+```
+
From 364019a3c9c4ef08d2d7f0752c0ac008293d62df Mon Sep 17 00:00:00 2001
From: Christian Ferbar
Date: Tue, 27 Sep 2016 12:29:25 +0200
Subject: [PATCH 43/94] Add localization workaround to svn plugin
---
plugins/svn/svn.plugin.zsh | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/plugins/svn/svn.plugin.zsh b/plugins/svn/svn.plugin.zsh
index 816055afe..e95ee9d99 100644
--- a/plugins/svn/svn.plugin.zsh
+++ b/plugins/svn/svn.plugin.zsh
@@ -25,14 +25,14 @@ function in_svn() {
function svn_get_repo_name() {
if in_svn; then
- svn info | sed -n 's/Repository\ Root:\ .*\///p' | read SVN_ROOT
- svn info | sed -n "s/URL:\ .*$SVN_ROOT\///p"
+ LANG=C svn info | sed -n 's/^Repository\ Root:\ .*\///p' | read SVN_ROOT
+ LANG=C svn info | sed -n "s/^URL:\ .*$SVN_ROOT\///p"
fi
}
function svn_get_branch_name() {
local _DISPLAY=$(
- svn info 2> /dev/null | \
+ LANG=C svn info 2> /dev/null | \
awk -F/ \
'/^URL:/ { \
for (i=0; i<=NF; i++) { \
@@ -54,13 +54,13 @@ function svn_get_branch_name() {
function svn_get_rev_nr() {
if in_svn; then
- svn info 2> /dev/null | sed -n 's/Revision:\ //p'
+ LANG=C svn info 2> /dev/null | sed -n 's/Revision:\ //p'
fi
}
function svn_dirty_choose() {
if in_svn; then
- local root=`svn info 2> /dev/null | sed -n 's/^Working Copy Root Path: //p'`
+ local root=`LANG=C svn info 2> /dev/null | sed -n 's/^Working Copy Root Path: //p'`
if $(svn status $root 2> /dev/null | command grep -Eq '^\s*[ACDIM!?L]'); then
# Grep exits with 0 when "One or more lines were selected", return "dirty".
echo $1
From f573247a59773f47b1741967335ec6c495bcf4b4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc=20Cornell=C3=A0?=
Date: Thu, 29 Sep 2016 13:56:16 +0200
Subject: [PATCH 44/94] Clean up svn README
---
plugins/svn/README.md | 103 ++++++++++++++++++++++--------------------
1 file changed, 53 insertions(+), 50 deletions(-)
diff --git a/plugins/svn/README.md b/plugins/svn/README.md
index b8eff70f5..1f7b70c86 100644
--- a/plugins/svn/README.md
+++ b/plugins/svn/README.md
@@ -1,64 +1,67 @@
# `svn` plugin
This plugin adds some utility functions to display additional information regarding your current
-svn repsitiory. See http://subversion.apache.org/ for the full svn documentation.
-
-## Functions
-
-| Command | Description |
-|:-----------------------|:----------------------------------------|
-|svn_prompt_info | prompt for some themes |
-|in_svn | within svn directory |
-|svn_get_repo_name | |
-|svn_get_branch_name | branch name (see caveats) |
-|svn_get_rev_nr | revision number |
-|svn_dirty | changes in this subversion repo |
-
-## Caveats
-
-The plugin expects the first directory to be the current branch / tag / trunk. So, it returns
-the first path element if you don't use branches.
-
-## Usage
+svn repository. See http://subversion.apache.org/ for the full svn documentation.
To use it, add `svn` to your plugins array:
-```sh
+
+```zsh
plugins=(... svn)
```
-### Agnoster theme git-like prompt
+## Functions
-Enable the svn plugin and add the followind lines to your ```~/.zshrc```
+| Command | Description |
+|:----------------------|:--------------------------------------------|
+| `svn_prompt_info` | Shows svn prompt in themes |
+| `in_svn` | Checks if we're in an svn repository |
+| `svn_get_repo_name` | Get repository name |
+| `svn_get_branch_name` | Get branch name (see [caveats](#caveats)) |
+| `svn_get_rev_nr` | Get revision number |
+| `svn_dirty` | Checks if there are changes in the svn repo |
-```shell
-prompt_svn() {
- local rev branch
- if in_svn; then
- rev=$(svn_get_rev_nr)
- branch=$(svn_get_branch_name)
- if [ `svn_dirty_choose_pwd 1 0` -eq 1 ]; then
- prompt_segment yellow black
- echo -n "$rev@$branch"
- echo -n "±"
- else
- prompt_segment green black
- echo -n "$rev@$branch"
+## Caveats
+
+The plugin expects the first directory to be the current branch / tag / trunk. So it returns
+the first path element if you don't use branches.
+
+## Usage on themes
+
+To use this in the `agnoster` theme follow these instructions:
+
+1. Enable the svn plugin
+
+2. Add the following lines to your `zshrc` file:
+
+ ```shell
+ prompt_svn() {
+ local rev branch
+ if in_svn; then
+ rev=$(svn_get_rev_nr)
+ branch=$(svn_get_branch_name)
+ if [[ $(svn_dirty_choose_pwd 1 0) -eq 1 ]]; then
+ prompt_segment yellow black
+ echo -n "$rev@$branch"
+ echo -n "±"
+ else
+ prompt_segment green black
+ echo -n "$rev@$branch"
+ fi
fi
- fi
-}
-```
+ }
+ ```
-override the agnoster build_prompt() function:
+3. Override the agnoster `build_prompt()` function:
-```shell
-build_prompt() {
- RETVAL=$?
- prompt_status
- prompt_context
- prompt_dir
- prompt_git
- prompt_svn
- prompt_end
-}
-```
+ ```zsh
+ build_prompt() {
+ RETVAL=$?
+ prompt_status
+ prompt_context
+ prompt_dir
+ prompt_git
+ prompt_svn
+ prompt_end
+ }
+ ```
From e6df0e036e39bcc2c20d7feaef1749d3c4f2768f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc=20Cornell=C3=A0?=
Date: Thu, 29 Sep 2016 14:03:09 +0200
Subject: [PATCH 45/94] Clean up and refactor code in svn plugin
---
plugins/svn/svn.plugin.zsh | 58 ++++++++++++++++----------------------
1 file changed, 25 insertions(+), 33 deletions(-)
diff --git a/plugins/svn/svn.plugin.zsh b/plugins/svn/svn.plugin.zsh
index e95ee9d99..fbc9ee538 100644
--- a/plugins/svn/svn.plugin.zsh
+++ b/plugins/svn/svn.plugin.zsh
@@ -1,9 +1,7 @@
-# vim:ft=zsh ts=2 sw=2 sts=2
-#
-function svn_prompt_info() {
+svn_prompt_info() {
local _DISPLAY
if in_svn; then
- if [ "x$SVN_SHOW_BRANCH" = "xtrue" ]; then
+ if [[ "$SVN_SHOW_BRANCH" = true ]]; then
unset SVN_SHOW_BRANCH
_DISPLAY=$(svn_get_branch_name)
else
@@ -16,21 +14,18 @@ $ZSH_THEME_REPO_NAME_COLOR$_DISPLAY$ZSH_PROMPT_BASE_COLOR$ZSH_THEME_SVN_PROMPT_S
}
-function in_svn() {
- if $(svn info >/dev/null 2>&1); then
- return 0
- fi
- return 1
+in_svn() {
+ svn info >/dev/null 2>&1
}
-function svn_get_repo_name() {
+svn_get_repo_name() {
if in_svn; then
LANG=C svn info | sed -n 's/^Repository\ Root:\ .*\///p' | read SVN_ROOT
LANG=C svn info | sed -n "s/^URL:\ .*$SVN_ROOT\///p"
fi
}
-function svn_get_branch_name() {
+svn_get_branch_name() {
local _DISPLAY=$(
LANG=C svn info 2> /dev/null | \
awk -F/ \
@@ -44,41 +39,28 @@ function svn_get_branch_name() {
} \
}'
)
-
- if [ "x$_DISPLAY" = "x" ]; then
+
+ if [[ -z "$_DISPLAY" ]]; then
svn_get_repo_name
else
echo $_DISPLAY
fi
}
-function svn_get_rev_nr() {
+svn_get_rev_nr() {
if in_svn; then
LANG=C svn info 2> /dev/null | sed -n 's/Revision:\ //p'
fi
}
-function svn_dirty_choose() {
- if in_svn; then
- local root=`LANG=C svn info 2> /dev/null | sed -n 's/^Working Copy Root Path: //p'`
- if $(svn status $root 2> /dev/null | command grep -Eq '^\s*[ACDIM!?L]'); then
- # Grep exits with 0 when "One or more lines were selected", return "dirty".
- echo $1
- else
- # Otherwise, no lines were found, or an error occurred. Return clean.
- echo $2
- fi
- fi
-}
-
-function svn_dirty() {
+svn_dirty() {
svn_dirty_choose $ZSH_THEME_SVN_PROMPT_DIRTY $ZSH_THEME_SVN_PROMPT_CLEAN
}
-function svn_dirty_choose_pwd () {
+svn_dirty_choose() {
if in_svn; then
- local root=$PWD
- if $(svn status $root 2> /dev/null | command grep -Eq '^\s*[ACDIM!?L]'); then
+ local root=$(LANG=C svn info 2> /dev/null | sed -n 's/^Working Copy Root Path: //p')
+ if svn status $root 2> /dev/null | command grep -Eq '^\s*[ACDIM!?L]'; then
# Grep exits with 0 when "One or more lines were selected", return "dirty".
echo $1
else
@@ -88,8 +70,18 @@ function svn_dirty_choose_pwd () {
fi
}
-function svn_dirty_pwd () {
+svn_dirty_pwd () {
svn_dirty_choose_pwd $ZSH_THEME_SVN_PROMPT_DIRTY_PWD $ZSH_THEME_SVN_PROMPT_CLEAN_PWD
}
-
+svn_dirty_choose_pwd () {
+ if in_svn; then
+ if svn status "$PWD" 2> /dev/null | command grep -Eq '^\s*[ACDIM!?L]'; then
+ # Grep exits with 0 when "One or more lines were selected", return "dirty".
+ echo $1
+ else
+ # Otherwise, no lines were found, or an error occurred. Return clean.
+ echo $2
+ fi
+ fi
+}
From 09d95251a7176e0c4b2a71837b7356980fe738e5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc=20Cornell=C3=A0?=
Date: Thu, 29 Sep 2016 13:19:47 +0200
Subject: [PATCH 46/94] extract: fix styling
---
plugins/extract/_extract | 2 -
plugins/extract/extract.plugin.zsh | 149 ++++++++++++++---------------
2 files changed, 71 insertions(+), 80 deletions(-)
diff --git a/plugins/extract/_extract b/plugins/extract/_extract
index 387b344bc..a73c892d9 100644
--- a/plugins/extract/_extract
+++ b/plugins/extract/_extract
@@ -4,5 +4,3 @@
_arguments \
'(-r --remove)'{-r,--remove}'[Remove archive.]' \
"*::archive file:_files -g '(#i)*.(tar|tgz|tbz|tbz2|txz|tlz|gz|bz2|xz|lzma|Z|zip|ipsw|rar|7z|deb)(-.)'" && return 0
-
-
diff --git a/plugins/extract/extract.plugin.zsh b/plugins/extract/extract.plugin.zsh
index 5d0809e9a..081d5168f 100644
--- a/plugins/extract/extract.plugin.zsh
+++ b/plugins/extract/extract.plugin.zsh
@@ -1,80 +1,73 @@
-# ------------------------------------------------------------------------------
-# FILE: extract.plugin.zsh
-# DESCRIPTION: oh-my-zsh plugin file.
-# AUTHOR: Sorin Ionescu (sorin.ionescu@gmail.com)
-# VERSION: 1.0.1
-# ------------------------------------------------------------------------------
-
-
-function extract() {
- local remove_archive
- local success
- local file_name
- local extract_dir
-
- if (( $# == 0 )); then
- echo "Usage: extract [-option] [file ...]"
- echo
- echo Options:
- echo " -r, --remove Remove archive."
- echo
- echo "Report bugs to ."
- fi
-
- remove_archive=1
- if [[ "$1" == "-r" ]] || [[ "$1" == "--remove" ]]; then
- remove_archive=0
- shift
- fi
-
- while (( $# > 0 )); do
- if [[ ! -f "$1" ]]; then
- echo "extract: '$1' is not a valid file" 1>&2
- shift
- continue
- fi
-
- success=0
- file_name="$( basename "$1" )"
- extract_dir="$( echo "$file_name" | sed "s/\.${1##*.}//g" )"
- case "$1" in
- (*.tar.gz|*.tgz) [ -z $commands[pigz] ] && tar zxvf "$1" || pigz -dc "$1" | tar xv ;;
- (*.tar.bz2|*.tbz|*.tbz2) tar xvjf "$1" ;;
- (*.tar.xz|*.txz) tar --xz --help &> /dev/null \
- && tar --xz -xvf "$1" \
- || xzcat "$1" | tar xvf - ;;
- (*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \
- && tar --lzma -xvf "$1" \
- || lzcat "$1" | tar xvf - ;;
- (*.tar) tar xvf "$1" ;;
- (*.gz) [ -z $commands[pigz] ] && gunzip "$1" || pigz -d "$1" ;;
- (*.bz2) bunzip2 "$1" ;;
- (*.xz) unxz "$1" ;;
- (*.lzma) unlzma "$1" ;;
- (*.Z) uncompress "$1" ;;
- (*.zip|*.war|*.jar|*.sublime-package|*.ipsw|*.xpi|*.apk) unzip "$1" -d $extract_dir ;;
- (*.rar) unrar x -ad "$1" ;;
- (*.7z) 7za x "$1" ;;
- (*.deb)
- mkdir -p "$extract_dir/control"
- mkdir -p "$extract_dir/data"
- cd "$extract_dir"; ar vx "../${1}" > /dev/null
- cd control; tar xzvf ../control.tar.gz
- cd ../data; tar xzvf ../data.tar.gz
- cd ..; rm *.tar.gz debian-binary
- cd ..
- ;;
- (*)
- echo "extract: '$1' cannot be extracted" 1>&2
- success=1
- ;;
- esac
-
- (( success = $success > 0 ? $success : $? ))
- (( $success == 0 )) && (( $remove_archive == 0 )) && rm "$1"
- shift
- done
-}
-
alias x=extract
+extract() {
+ local remove_archive
+ local success
+ local file_name
+ local extract_dir
+
+ if (( $# == 0 )); then
+ cat <<-'EOF' >&2
+ Usage: extract [-option] [file ...]
+
+ Options:
+ -r, --remove Remove archive.
+ EOF
+ fi
+
+ remove_archive=1
+ if [[ "$1" == "-r" ]] || [[ "$1" == "--remove" ]]; then
+ remove_archive=0
+ shift
+ fi
+
+ while (( $# > 0 )); do
+ if [[ ! -f "$1" ]]; then
+ echo "extract: '$1' is not a valid file" >&2
+ shift
+ continue
+ fi
+
+ success=0
+ file_name="$( basename "$1" )"
+ extract_dir="$( echo "$file_name" | sed "s/\.${1##*.}//g" )"
+ case "$1" in
+ (*.tar.gz|*.tgz) (( $+commands[pigz] )) && { pigz -dc "$1" | tar xv } || tar zxvf "$1" ;;
+ (*.tar.bz2|*.tbz|*.tbz2) tar xvjf "$1" ;;
+ (*.tar.xz|*.txz)
+ tar --xz --help &> /dev/null \
+ && tar --xz -xvf "$1" \
+ || xzcat "$1" | tar xvf - ;;
+ (*.tar.zma|*.tlz)
+ tar --lzma --help &> /dev/null \
+ && tar --lzma -xvf "$1" \
+ || lzcat "$1" | tar xvf - ;;
+ (*.tar) tar xvf "$1" ;;
+ (*.gz) (( $+commands[pigz] )) && pigz -d "$1" || gunzip "$1" ;;
+ (*.bz2) bunzip2 "$1" ;;
+ (*.xz) unxz "$1" ;;
+ (*.lzma) unlzma "$1" ;;
+ (*.Z) uncompress "$1" ;;
+ (*.zip|*.war|*.jar|*.sublime-package|*.ipsw|*.xpi|*.apk) unzip "$1" -d $extract_dir ;;
+ (*.rar) unrar x -ad "$1" ;;
+ (*.7z) 7za x "$1" ;;
+ (*.deb)
+ mkdir -p "$extract_dir/control"
+ mkdir -p "$extract_dir/data"
+ cd "$extract_dir"; ar vx "../${1}" > /dev/null
+ cd control; tar xzvf ../control.tar.gz
+ cd ../data; tar xzvf ../data.tar.gz
+ cd ..; rm *.tar.gz debian-binary
+ cd ..
+ ;;
+ (*)
+ echo "extract: '$1' cannot be extracted" >&2
+ success=1
+ ;;
+ esac
+
+ (( success = $success > 0 ? $success : $? ))
+ (( $success == 0 )) && (( $remove_archive == 0 )) && rm "$1"
+ shift
+ done
+}
From f12cb5a697ca45b3ef8acda24cef72fe041addb3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc=20Cornell=C3=A0?=
Date: Thu, 29 Sep 2016 13:20:26 +0200
Subject: [PATCH 47/94] extract: fix extraction of deb packages with
data.tar.xz
---
plugins/extract/extract.plugin.zsh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/plugins/extract/extract.plugin.zsh b/plugins/extract/extract.plugin.zsh
index 081d5168f..24b16517b 100644
--- a/plugins/extract/extract.plugin.zsh
+++ b/plugins/extract/extract.plugin.zsh
@@ -56,8 +56,8 @@ extract() {
mkdir -p "$extract_dir/data"
cd "$extract_dir"; ar vx "../${1}" > /dev/null
cd control; tar xzvf ../control.tar.gz
- cd ../data; tar xzvf ../data.tar.gz
- cd ..; rm *.tar.gz debian-binary
+ cd ../data; extract ../data.tar.*
+ cd ..; rm *.tar.* debian-binary
cd ..
;;
(*)
From 68425c266a5107e50a2897b7d7cfc0ccb9fb753c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc=20Cornell=C3=A0?=
Date: Thu, 29 Sep 2016 13:26:50 +0200
Subject: [PATCH 48/94] extract: replace basename&sed w/ zsh variable expansion
syntax
`${var:t:h}` uses:
- `${var:t}` which acts as `basename`.
- `${var:r}` which removes the extension.
See http://zsh.sourceforge.net/Doc/Release/Expansion.html#Modifiers
---
plugins/extract/extract.plugin.zsh | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/plugins/extract/extract.plugin.zsh b/plugins/extract/extract.plugin.zsh
index 24b16517b..c524bf8f5 100644
--- a/plugins/extract/extract.plugin.zsh
+++ b/plugins/extract/extract.plugin.zsh
@@ -3,7 +3,6 @@ alias x=extract
extract() {
local remove_archive
local success
- local file_name
local extract_dir
if (( $# == 0 )); then
@@ -29,8 +28,7 @@ extract() {
fi
success=0
- file_name="$( basename "$1" )"
- extract_dir="$( echo "$file_name" | sed "s/\.${1##*.}//g" )"
+ extract_dir="${1:t:r}"
case "$1" in
(*.tar.gz|*.tgz) (( $+commands[pigz] )) && { pigz -dc "$1" | tar xv } || tar zxvf "$1" ;;
(*.tar.bz2|*.tbz|*.tbz2) tar xvjf "$1" ;;
From b5dc976d236e8f8d276aa0aeff49980bfccb0532 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc=20Cornell=C3=A0?=
Date: Thu, 29 Sep 2016 13:38:01 +0200
Subject: [PATCH 49/94] extract: add file extensions to extract completion
---
plugins/extract/_extract | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/plugins/extract/_extract b/plugins/extract/_extract
index a73c892d9..172425d2c 100644
--- a/plugins/extract/_extract
+++ b/plugins/extract/_extract
@@ -3,4 +3,5 @@
_arguments \
'(-r --remove)'{-r,--remove}'[Remove archive.]' \
- "*::archive file:_files -g '(#i)*.(tar|tgz|tbz|tbz2|txz|tlz|gz|bz2|xz|lzma|Z|zip|ipsw|rar|7z|deb)(-.)'" && return 0
+ "*::archive file:_files -g '(#i)*.(7z|Z|apk|bz2|deb|gz|ipsw|jar|lzma|rar|sublime-package|tar|tar.bz2|tar.gz|tar.xz|tar.zma|tbz|tbz2|tgz|tlz|txz|war|xpi|xz|zip)(-.)'" \
+ && return 0
From bac896fca7b1af1e4237e96c58a0c13b8ff2d0de Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc=20Cornell=C3=A0?=
Date: Fri, 30 Sep 2016 00:37:14 +0200
Subject: [PATCH 50/94] extract: add README
---
plugins/extract/README.md | 46 +++++++++++++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)
create mode 100644 plugins/extract/README.md
diff --git a/plugins/extract/README.md b/plugins/extract/README.md
new file mode 100644
index 000000000..c6bdd36dd
--- /dev/null
+++ b/plugins/extract/README.md
@@ -0,0 +1,46 @@
+# extract plugin
+
+This plugin defines a function called `extract` that extracts the archive file
+you pass it, and it supports a wide variety of archive filetypes.
+
+This way you don't have to know what specific command extracts a file, you just
+do `extract ` and the function takes care of the rest.
+
+To use it, add `extract` to the plugins array in your zshrc file:
+
+```zsh
+plugins=(... extract)
+```
+
+## Supported file extensions
+
+| Extension | Description |
+|:------------------|:-------------------------------------|
+| `7z` | 7zip file |
+| `Z` | Z archive (LZW) |
+| `apk` | Android app file |
+| `bz2` | Bzip2 file |
+| `deb` | Debian package |
+| `gz` | Gzip file |
+| `ipsw` | iOS firmware file |
+| `jar` | Java Archive |
+| `lzma` | LZMA archive |
+| `rar` | WinRAR archive |
+| `sublime-package` | Sublime Text package |
+| `tar` | Tarball |
+| `tar.bz2` | Tarball with bzip2 compression |
+| `tar.gz` | Tarball with gzip compression |
+| `tar.xz` | Tarball with lzma2 compression |
+| `tar.zma` | Tarball with lzma compression |
+| `tbz` | Tarball with bzip compression |
+| `tbz2` | Tarball with bzip2 compression |
+| `tgz` | Tarball with gzip compression |
+| `tlz` | Tarball with lzma compression |
+| `txz` | Tarball with lzma2 compression |
+| `war` | Web Application archive (Java-based) |
+| `xpi` | Mozilla XPI module file |
+| `xz` | LZMA2 archive |
+| `zip` | Zip archive |
+
+See [list of archive formats](https://en.wikipedia.org/wiki/List_of_archive_formats) for
+more information regarding archive formats.
From c713407f90e7024507c7fc621440cb171108e7f4 Mon Sep 17 00:00:00 2001
From: Allan Lewis
Date: Fri, 30 Sep 2016 12:45:28 +0100
Subject: [PATCH 51/94] git.plugin.zsh: Don't run Git hooks when making a WIP
commit (#4751)
When making a WIP commit, we generally just want to save the state of the
current branch temporarily, maybe because we want to push our work for backup
purposes, or change branch to work on something else. Therefore, it's generally
undesirable to run Git hooks, which might do things like run linters, because
we probably don't care if our WIP has lint errors.
---
plugins/git/git.plugin.zsh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh
index 25da03509..ea9ff8269 100644
--- a/plugins/git/git.plugin.zsh
+++ b/plugins/git/git.plugin.zsh
@@ -236,4 +236,4 @@ alias gupv='git pull --rebase -v'
alias glum='git pull upstream master'
alias gwch='git whatchanged -p --abbrev-commit --pretty=medium'
-alias gwip='git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit -m "--wip--"'
+alias gwip='git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify -m "--wip--"'
From 3de0235ad26d4584727f4cce17c09f1b4ae6cee5 Mon Sep 17 00:00:00 2001
From: Manuel Hutter
Date: Fri, 30 Sep 2016 19:54:27 +0200
Subject: [PATCH 52/94] Add missing newline to end of `spotify status` output
(#5480)
---
plugins/osx/osx.plugin.zsh | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/plugins/osx/osx.plugin.zsh b/plugins/osx/osx.plugin.zsh
index aa6a256c1..d7baa1191 100644
--- a/plugins/osx/osx.plugin.zsh
+++ b/plugins/osx/osx.plugin.zsh
@@ -314,7 +314,7 @@ function spotify() {
position=$(osascript -e 'tell application "Spotify" to player position as string' | tr ',' '.');
position=$(echo "scale=2; $position / 60" | bc | awk '{printf "%0.2f", $0}');
- printf "$reset""Artist: %s\nAlbum: %s\nTrack: %s \nPosition: %s / %s" "$artist" "$album" "$track" "$position" "$duration";
+ printf "$reset""Artist: %s\nAlbum: %s\nTrack: %s \nPosition: %s / %s\n" "$artist" "$album" "$track" "$position" "$duration";
fi
}
@@ -412,17 +412,17 @@ function spotify() {
osascript -e 'tell application "Spotify" to playpause';
break ;;
- "quit" )
+ "quit" )
cecho "Quitting Spotify.";
osascript -e 'tell application "Spotify" to quit';
exit 1 ;;
- "next" )
+ "next" )
cecho "Going to next track." ;
osascript -e 'tell application "Spotify" to next track';
break ;;
- "prev" )
+ "prev" )
cecho "Going to previous track.";
osascript -e 'tell application "Spotify" to previous track';
break ;;
From 8ea56633a40411d1b43127b9cd88e8851edaf922 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc=20Cornell=C3=A0?=
Date: Wed, 28 Sep 2016 18:23:15 +0200
Subject: [PATCH 53/94] last-working-dir: clean up source
---
.../last-working-dir.plugin.zsh | 25 ++++++++-----------
1 file changed, 10 insertions(+), 15 deletions(-)
diff --git a/plugins/last-working-dir/last-working-dir.plugin.zsh b/plugins/last-working-dir/last-working-dir.plugin.zsh
index c458464ce..c5278d640 100644
--- a/plugins/last-working-dir/last-working-dir.plugin.zsh
+++ b/plugins/last-working-dir/last-working-dir.plugin.zsh
@@ -1,26 +1,21 @@
-#!/usr/bin/env zsh
-# Keeps track of the last used working directory and automatically jumps
-# into it for new shells.
-
-# Flag indicating if we've previously jumped to last directory.
+# Flag indicating if we've previously jumped to last directory
typeset -g ZSH_LAST_WORKING_DIRECTORY
-mkdir -p $ZSH_CACHE_DIR
-cache_file="$ZSH_CACHE_DIR/last-working-dir"
-# Updates the last directory once directory is changed.
+# Updates the last directory once directory is changed
chpwd_functions+=(chpwd_last_working_dir)
-function chpwd_last_working_dir() {
- # Use >| in case noclobber is set to avoid "file exists" error
+chpwd_last_working_dir() {
+ local cache_file="$ZSH_CACHE_DIR/last-working-dir"
pwd >| "$cache_file"
}
-# Changes directory to the last working directory.
-function lwd() {
- [[ ! -r "$cache_file" ]] || cd "`cat "$cache_file"`"
+# Changes directory to the last working directory
+lwd() {
+ local cache_file="$ZSH_CACHE_DIR/last-working-dir"
+ [[ -r "$cache_file" ]] && cd "$(cat "$cache_file")"
}
-# Automatically jump to last working directory unless this isn't the first time
-# this plugin has been loaded.
+# Automatically jump to last working directory unless this
+# isn't the first time this plugin has been loaded.
if [[ -z "$ZSH_LAST_WORKING_DIRECTORY" ]]; then
lwd 2>/dev/null && ZSH_LAST_WORKING_DIRECTORY=1 || true
fi
From fb6738a7e1d476ec9a74b0e8a04f5252f9de91fe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc=20Cornell=C3=A0?=
Date: Wed, 28 Sep 2016 18:30:46 +0200
Subject: [PATCH 54/94] last-working-dir: don't jump if not in $HOME
---
plugins/last-working-dir/last-working-dir.plugin.zsh | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/plugins/last-working-dir/last-working-dir.plugin.zsh b/plugins/last-working-dir/last-working-dir.plugin.zsh
index c5278d640..e882b288f 100644
--- a/plugins/last-working-dir/last-working-dir.plugin.zsh
+++ b/plugins/last-working-dir/last-working-dir.plugin.zsh
@@ -14,8 +14,10 @@ lwd() {
[[ -r "$cache_file" ]] && cd "$(cat "$cache_file")"
}
-# Automatically jump to last working directory unless this
-# isn't the first time this plugin has been loaded.
-if [[ -z "$ZSH_LAST_WORKING_DIRECTORY" ]]; then
- lwd 2>/dev/null && ZSH_LAST_WORKING_DIRECTORY=1 || true
-fi
+# Jump to last directory automatically unless:
+# - this isn't the first time the plugin is loaded
+# - it's not in $HOME directory
+[[ -n "$ZSH_LAST_WORKING_DIRECTORY" ]] && return
+[[ "$PWD" != "$HOME" ]] && return
+
+lwd 2>/dev/null && ZSH_LAST_WORKING_DIRECTORY=1 || true
From c488ab15f3293c3870f66fe84fc7ee71a182f214 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc=20Cornell=C3=A0?=
Date: Wed, 28 Sep 2016 18:23:28 +0200
Subject: [PATCH 55/94] last-working-dir: add README
---
plugins/last-working-dir/README.md | 9 +++++++++
1 file changed, 9 insertions(+)
create mode 100644 plugins/last-working-dir/README.md
diff --git a/plugins/last-working-dir/README.md b/plugins/last-working-dir/README.md
new file mode 100644
index 000000000..4cc4acab6
--- /dev/null
+++ b/plugins/last-working-dir/README.md
@@ -0,0 +1,9 @@
+# last-working-dir plugin
+
+Keeps track of the last used working directory and automatically jumps into it
+for new shells, unless:
+
+- The plugin is already loaded.
+- The current `$PWD` is not `$HOME`.
+
+Adds `lwd` function to jump to the last working directory.
From 06d52a60389a85107ed8cc2e302a1e66f719f738 Mon Sep 17 00:00:00 2001
From: FireWave
Date: Fri, 30 Sep 2016 14:12:03 -0400
Subject: [PATCH 56/94] Change confusing 12h-time without AM/PM to
system-localized time
---
themes/xiong-chiamiov-plus.zsh-theme | 2 +-
themes/xiong-chiamiov.zsh-theme | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/themes/xiong-chiamiov-plus.zsh-theme b/themes/xiong-chiamiov-plus.zsh-theme
index 095dae290..26cc38487 100644
--- a/themes/xiong-chiamiov-plus.zsh-theme
+++ b/themes/xiong-chiamiov-plus.zsh-theme
@@ -1,6 +1,6 @@
# user, host, full path, and time/date
# on two lines for easier vgrepping
# entry in a nice long thread on the Arch Linux forums: http://bbs.archlinux.org/viewtopic.php?pid=521888#p521888
-PROMPT=$'%{\e[0;34m%}%B┌─[%b%{\e[0m%}%{\e[1;32m%}%n%{\e[1;30m%}@%{\e[0m%}%{\e[0;36m%}%m%{\e[0;34m%}%B]%b%{\e[0m%} - %b%{\e[0;34m%}%B[%b%{\e[1;37m%}%~%{\e[0;34m%}%B]%b%{\e[0m%} - %{\e[0;34m%}%B[%b%{\e[0;33m%}'%D{"%a %b %d, %I:%M"}%b$'%{\e[0;34m%}%B]%b%{\e[0m%}
+PROMPT=$'%{\e[0;34m%}%B┌─[%b%{\e[0m%}%{\e[1;32m%}%n%{\e[1;30m%}@%{\e[0m%}%{\e[0;36m%}%m%{\e[0;34m%}%B]%b%{\e[0m%} - %b%{\e[0;34m%}%B[%b%{\e[1;37m%}%~%{\e[0;34m%}%B]%b%{\e[0m%} - %{\e[0;34m%}%B[%b%{\e[0;33m%}'%D{"%c"}%b$'%{\e[0;34m%}%B]%b%{\e[0m%}
%{\e[0;34m%}%B└─%B[%{\e[1;35m%}$%{\e[0;34m%}%B] <$(git_prompt_info)>%{\e[0m%}%b '
PS2=$' \e[0;34m%}%B>%{\e[0m%}%b '
diff --git a/themes/xiong-chiamiov.zsh-theme b/themes/xiong-chiamiov.zsh-theme
index 7c4c2e4f8..9cf17f47c 100644
--- a/themes/xiong-chiamiov.zsh-theme
+++ b/themes/xiong-chiamiov.zsh-theme
@@ -1,6 +1,6 @@
# user, host, full path, and time/date
# on two lines for easier vgrepping
# entry in a nice long thread on the Arch Linux forums: http://bbs.archlinux.org/viewtopic.php?pid=521888#p521888
-PROMPT=$'%{\e[0;34m%}%B┌─[%b%{\e[0m%}%{\e[1;32m%}%n%{\e[1;30m%}@%{\e[0m%}%{\e[0;36m%}%m%{\e[0;34m%}%B]%b%{\e[0m%} - %b%{\e[0;34m%}%B[%b%{\e[1;37m%}%~%{\e[0;34m%}%B]%b%{\e[0m%} - %{\e[0;34m%}%B[%b%{\e[0;33m%}'%D{"%a %b %d, %I:%M"}%b$'%{\e[0;34m%}%B]%b%{\e[0m%}
+PROMPT=$'%{\e[0;34m%}%B┌─[%b%{\e[0m%}%{\e[1;32m%}%n%{\e[1;30m%}@%{\e[0m%}%{\e[0;36m%}%m%{\e[0;34m%}%B]%b%{\e[0m%} - %b%{\e[0;34m%}%B[%b%{\e[1;37m%}%~%{\e[0;34m%}%B]%b%{\e[0m%} - %{\e[0;34m%}%B[%b%{\e[0;33m%}'%D{"%c"}%b$'%{\e[0;34m%}%B]%b%{\e[0m%}
%{\e[0;34m%}%B└─%B[%{\e[1;35m%}$%{\e[0;34m%}%B]>%{\e[0m%}%b '
PS2=$' \e[0;34m%}%B>%{\e[0m%}%b '
From 9263e9ca59a65cad53d1cf0581c2af344984c2af Mon Sep 17 00:00:00 2001
From: Adrian Petrescu
Date: Fri, 30 Sep 2016 17:39:32 -0400
Subject: [PATCH 57/94] Add /usr/local/bin to autoenv search path (#5481)
The current list of directories to search for autoenv on misses the default location on Ubuntu systems if you just do a normal `pip install autoenv` - [it will place](https://github.com/kennethreitz/autoenv/blob/master/setup.py#L16) `activate.sh` in `/usr/local/bin` unless you manually override the `--prefix` or something.
The `/usr/local/opt/autoenv` is fine for macOS/homebrew installations but it would be nice not to have to manually patch on Linux :)
---
plugins/autoenv/autoenv.plugin.zsh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plugins/autoenv/autoenv.plugin.zsh b/plugins/autoenv/autoenv.plugin.zsh
index ea2e56dd6..af58ee77b 100644
--- a/plugins/autoenv/autoenv.plugin.zsh
+++ b/plugins/autoenv/autoenv.plugin.zsh
@@ -1,7 +1,7 @@
# Activates autoenv or reports its failure
() {
if ! type autoenv_init >/dev/null; then
- for d (~/.autoenv /usr/local/opt/autoenv); do
+ for d (~/.autoenv /usr/local/opt/autoenv /usr/local/bin); do
if [[ -e $d/activate.sh ]]; then
autoenv_dir=$d
break
From d186bc30d071559a36bb190a3c3b329b882ec183 Mon Sep 17 00:00:00 2001
From: Florian Wilhelm
Date: Sun, 2 Oct 2016 16:34:54 +0200
Subject: [PATCH 58/94] Add aliases for docker-compose logs (#5475)
---
plugins/docker-compose/docker-compose.plugin.zsh | 2 ++
1 file changed, 2 insertions(+)
diff --git a/plugins/docker-compose/docker-compose.plugin.zsh b/plugins/docker-compose/docker-compose.plugin.zsh
index 9f2457fc4..7e3307017 100644
--- a/plugins/docker-compose/docker-compose.plugin.zsh
+++ b/plugins/docker-compose/docker-compose.plugin.zsh
@@ -18,3 +18,5 @@ alias dcrm='docker-compose rm'
alias dcr='docker-compose run'
alias dcstop='docker-compose stop'
alias dcup='docker-compose up'
+alias dcl='docker-compose logs'
+alias dclf='docker-compose logs -f'
From eaf18167bbf3ee30157728ec50850db73ada3455 Mon Sep 17 00:00:00 2001
From: Juraj Fiala
Date: Tue, 18 Aug 2015 21:37:09 +0200
Subject: [PATCH 59/94] Added pacaur aliases
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This commit removes most of its contents: it just leaves the
contribution signature. The rest is obsolete and superseeded
by #5460, but the contribution is still valuable.
Related: #4263.
Signed-off-by: Marc Cornellà
---
plugins/archlinux/README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/plugins/archlinux/README.md b/plugins/archlinux/README.md
index 785538a56..f32d91f79 100644
--- a/plugins/archlinux/README.md
+++ b/plugins/archlinux/README.md
@@ -67,3 +67,4 @@
- Martin Putniorz - mputniorz@gmail.com
- MatthR3D - matthr3d@gmail.com
- ornicar - thibault.duplessis@gmail.com
+- Juraj Fiala - doctorjellyface@riseup.net
From 485dd2b73671c257571601dda44e5fd94067271f Mon Sep 17 00:00:00 2001
From: Moses Miller
Date: Mon, 26 Sep 2016 23:17:18 -0700
Subject: [PATCH 60/94] Add pacaur compatibility to archlinux plugin + refactor
---
plugins/archlinux/archlinux.plugin.zsh | 51 +++++++++++++++++++++-----
1 file changed, 42 insertions(+), 9 deletions(-)
diff --git a/plugins/archlinux/archlinux.plugin.zsh b/plugins/archlinux/archlinux.plugin.zsh
index 1637e8561..2e55d1b8d 100644
--- a/plugins/archlinux/archlinux.plugin.zsh
+++ b/plugins/archlinux/archlinux.plugin.zsh
@@ -1,12 +1,4 @@
-if ! (( $+commands[yaourt] )); then
- upgrade() {
- sudo pacman -Syu
- }
-else
- upgrade () {
- yaourt -Syu
- }
-
+if (( $+commands[yaourt] )); then
alias yaconf='yaourt -C'
alias yaupg='yaourt -Syua'
alias yasu='yaourt -Syua --noconfirm'
@@ -35,6 +27,47 @@ else
fi
fi
+if (( $+commands[pacaur] )); then
+ alias paupg='pacaur -Syua'
+ alias pasu='pacaur -Syua --noconfirm'
+ alias pain='pacaur -S'
+ alias pains='pacaur -U'
+ alias pare='pacaur -R'
+ alias parem='pacaur -Rns'
+ alias parep='pacaur -Si'
+ alias pareps='pacaur -Ss'
+ alias paloc='pacaur -Qi'
+ alias palocs='pacaur -Qs'
+ alias palst='pacaur -Qe'
+ alias paorph='pacaur -Qtd'
+ alias painsd='pacaur -S --asdeps'
+ alias pamir='pacaur -Syy'
+
+ if (( $+commands[abs] && $+commands[aur] )); then
+ alias paupd='pacaur -Sy && sudo abs && sudo aur'
+ elif (( $+commands[abs] )); then
+ alias paupd='pacaur -Sy && sudo abs'
+ elif (( $+commands[aur] )); then
+ alias paupd='pacaur -Sy && sudo aur'
+ else
+ alias paupd='pacaur -Sy'
+ fi
+fi
+
+if (( $+commands[pacaur] )); then
+ upgrade() {
+ pacaur -Syu
+ }
+elif (( $+commands[yaourt] )); then
+ upgrade() {
+ yaourt -Syu
+ }
+else
+ upgrade() {
+ pacman -Syu
+ }
+fi
+
# Pacman - https://wiki.archlinux.org/index.php/Pacman_Tips
alias pacupg='sudo pacman -Syu'
alias pacin='sudo pacman -S'
From e418a2bb92f6b26773d9e55115803a7137c90eec Mon Sep 17 00:00:00 2001
From: Moses Miller
Date: Sun, 2 Oct 2016 14:28:39 -0700
Subject: [PATCH 61/94] Updated README of the archlinux plugin
---
plugins/archlinux/README.md | 25 +++++++++++++++++++++++++
plugins/archlinux/archlinux.plugin.zsh | 2 +-
2 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/plugins/archlinux/README.md b/plugins/archlinux/README.md
index f32d91f79..73a5037b0 100644
--- a/plugins/archlinux/README.md
+++ b/plugins/archlinux/README.md
@@ -27,6 +27,30 @@
| yasu | yaourt -Syua --no-confirm | Same as `yaupg`, but without confirmation |
| upgrade | yaourt -Syu | Sync with repositories before upgrading packages |
+### PACAUR
+
+| Alias | Command | Description |
+|---------|------------------------------------|---------------------------------------------------------------------|
+| pain | pacaur -S | Install packages from the repositories |
+| pains | pacaur -U | Install a package from a local file |
+| painsd | pacaur -S --asdeps | Install packages as dependencies of another package |
+| paloc | pacaur -Qi | Display information about a package in the local database |
+| palocs | pacaur -Qs | Search for packages in the local database |
+| palst | pacaur -Qe | List installed packages including from AUR (tagged as "local") |
+| pamir | pacaur -Syy | Force refresh of all package lists after updating mirrorlist |
+| paorph | pacaur -Qtd | Remove orphans using pacaur |
+| pare | pacaur -R | Remove packages, keeping its settings and dependencies |
+| parem | pacaur -Rns | Remove packages, including its settings and unneeded dependencies |
+| parep | pacaur -Si | Display information about a package in the repositories |
+| pareps | pacaur -Ss | Search for packages in the repositories |
+| paupd | pacaur -Sy && sudo abs && sudo aur | Update and refresh local package, ABS and AUR databases |
+| paupd | pacaur -Sy && sudo abs | Update and refresh the local package and ABS databases |
+| paupd | pacaur -Sy && sudo aur | Update and refresh the local package and AUR databases |
+| paupd | pacaur -Sy | Update and refresh the local package database |
+| paupg | pacaur -Syua | Sync with repositories before upgrading all packages (from AUR too) |
+| pasu | pacaur -Syua --no-confirm | Same as `paupg`, but without confirmation |
+| upgrade | pacaur -Syu
+
#### PACMAN
| Alias | Command | Description |
@@ -68,3 +92,4 @@
- MatthR3D - matthr3d@gmail.com
- ornicar - thibault.duplessis@gmail.com
- Juraj Fiala - doctorjellyface@riseup.net
+- Majora320 (Moses Miller) - Majora320@gmail.com
diff --git a/plugins/archlinux/archlinux.plugin.zsh b/plugins/archlinux/archlinux.plugin.zsh
index 2e55d1b8d..3156e949a 100644
--- a/plugins/archlinux/archlinux.plugin.zsh
+++ b/plugins/archlinux/archlinux.plugin.zsh
@@ -64,7 +64,7 @@ elif (( $+commands[yaourt] )); then
}
else
upgrade() {
- pacman -Syu
+ sudo pacman -Syu
}
fi
From cd44246415d557bc9ba8d7c74acdcc0a44d10e34 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc=20Cornell=C3=A0?=
Date: Mon, 3 Oct 2016 01:04:16 +0200
Subject: [PATCH 62/94] Fix small copy-editing mistake in archlinux README
---
plugins/archlinux/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plugins/archlinux/README.md b/plugins/archlinux/README.md
index 73a5037b0..16f099415 100644
--- a/plugins/archlinux/README.md
+++ b/plugins/archlinux/README.md
@@ -49,7 +49,7 @@
| paupd | pacaur -Sy | Update and refresh the local package database |
| paupg | pacaur -Syua | Sync with repositories before upgrading all packages (from AUR too) |
| pasu | pacaur -Syua --no-confirm | Same as `paupg`, but without confirmation |
-| upgrade | pacaur -Syu
+| upgrade | pacaur -Syu | Sync with repositories before upgrading packages |
#### PACMAN
From 6d975f72589dbb6e44084841cddf9ea153990eb8 Mon Sep 17 00:00:00 2001
From: savimat
Date: Mon, 3 Oct 2016 09:11:26 +1000
Subject: [PATCH 63/94] Add alias for signed git commit with message (#5390)
Signed-off-by: Mat Munn
---
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 ea9ff8269..28fb253dd 100644
--- a/plugins/git/git.plugin.zsh
+++ b/plugins/git/git.plugin.zsh
@@ -65,6 +65,7 @@ alias gca!='git commit -v -a --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 gcsm='git commit -s -m'
alias gcb='git checkout -b'
alias gcf='git config --list'
alias gcl='git clone --recursive'
From 40bfe5a4124be7b5983756cc81b54a4a4d5846e6 Mon Sep 17 00:00:00 2001
From: Fabian Wolff
Date: Mon, 26 Sep 2016 21:41:42 +0200
Subject: [PATCH 64/94] Implement a locking mechanism to avoid multiple update
prompts (fixes #3766)
---
tools/check_for_upgrade.sh | 43 +++++++++++++++++++++-----------------
1 file changed, 24 insertions(+), 19 deletions(-)
diff --git a/tools/check_for_upgrade.sh b/tools/check_for_upgrade.sh
index bd9aba8be..d1b174c6d 100644
--- a/tools/check_for_upgrade.sh
+++ b/tools/check_for_upgrade.sh
@@ -29,31 +29,36 @@ fi
# Cancel upgrade if git is unavailable on the system
whence git >/dev/null || return 0
-if [ -f ~/.zsh-update ]
+if mkdir "$ZSH/log/update.lock" 2>/dev/null
then
- . ~/.zsh-update
-
- if [[ -z "$LAST_EPOCH" ]]; then
- _update_zsh_update && return 0;
- fi
-
- epoch_diff=$(($(_current_epoch) - $LAST_EPOCH))
- if [ $epoch_diff -gt $epoch_target ]
+ if [ -f ~/.zsh-update ]
then
- if [ "$DISABLE_UPDATE_PROMPT" = "true" ]
+ . ~/.zsh-update
+
+ if [[ -z "$LAST_EPOCH" ]]; then
+ _update_zsh_update && return 0;
+ fi
+
+ epoch_diff=$(($(_current_epoch) - $LAST_EPOCH))
+ if [ $epoch_diff -gt $epoch_target ]
then
- _upgrade_zsh
- else
- echo "[Oh My Zsh] Would you like to check for updates? [Y/n]: \c"
- read line
- if [[ "$line" == Y* ]] || [[ "$line" == y* ]] || [ -z "$line" ]; then
+ if [ "$DISABLE_UPDATE_PROMPT" = "true" ]
+ then
_upgrade_zsh
else
- _update_zsh_update
+ echo "[Oh My Zsh] Would you like to check for updates? [Y/n]: \c"
+ read line
+ if [[ "$line" == Y* ]] || [[ "$line" == y* ]] || [ -z "$line" ]; then
+ _upgrade_zsh
+ else
+ _update_zsh_update
+ fi
fi
fi
+ else
+ # create the zsh file
+ _update_zsh_update
fi
-else
- # create the zsh file
- _update_zsh_update
+
+ rm -r $ZSH/log/update.lock
fi
From 4fa6be02300ff1bbf3772be0c8f7993a46c3769e Mon Sep 17 00:00:00 2001
From: Fabian Wolff
Date: Mon, 3 Oct 2016 11:52:25 +0200
Subject: [PATCH 65/94] Use rmdir instead of rm -r
---
tools/check_for_upgrade.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/check_for_upgrade.sh b/tools/check_for_upgrade.sh
index d1b174c6d..3c9a4e4ca 100644
--- a/tools/check_for_upgrade.sh
+++ b/tools/check_for_upgrade.sh
@@ -60,5 +60,5 @@ then
_update_zsh_update
fi
- rm -r $ZSH/log/update.lock
+ rmdir $ZSH/log/update.lock
fi
From 1f64fa92f524d47a87320a4baf9d9883fd23ab5e Mon Sep 17 00:00:00 2001
From: Fabian Wolff
Date: Mon, 3 Oct 2016 11:58:15 +0200
Subject: [PATCH 66/94] Convert "if then" statements to "if; then" one-liners
---
tools/check_for_upgrade.sh | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/tools/check_for_upgrade.sh b/tools/check_for_upgrade.sh
index 3c9a4e4ca..a57f6da0f 100644
--- a/tools/check_for_upgrade.sh
+++ b/tools/check_for_upgrade.sh
@@ -29,10 +29,8 @@ fi
# Cancel upgrade if git is unavailable on the system
whence git >/dev/null || return 0
-if mkdir "$ZSH/log/update.lock" 2>/dev/null
-then
- if [ -f ~/.zsh-update ]
- then
+if mkdir "$ZSH/log/update.lock" 2>/dev/null; then
+ if [ -f ~/.zsh-update ]; then
. ~/.zsh-update
if [[ -z "$LAST_EPOCH" ]]; then
@@ -40,10 +38,8 @@ then
fi
epoch_diff=$(($(_current_epoch) - $LAST_EPOCH))
- if [ $epoch_diff -gt $epoch_target ]
- then
- if [ "$DISABLE_UPDATE_PROMPT" = "true" ]
- then
+ if [ $epoch_diff -gt $epoch_target ]; then
+ if [ "$DISABLE_UPDATE_PROMPT" = "true" ]; then
_upgrade_zsh
else
echo "[Oh My Zsh] Would you like to check for updates? [Y/n]: \c"
From 0887a7eb504debd8714bb914b99a2d6343f6b131 Mon Sep 17 00:00:00 2001
From: Henrik Johansson
Date: Fri, 8 Aug 2014 14:09:07 +0200
Subject: [PATCH 67/94] Added simple support for Cargo - the Rust build system
---
plugins/cargo/cargo.plugin.zsh | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
create mode 100644 plugins/cargo/cargo.plugin.zsh
diff --git a/plugins/cargo/cargo.plugin.zsh b/plugins/cargo/cargo.plugin.zsh
new file mode 100644
index 000000000..e1dc953dd
--- /dev/null
+++ b/plugins/cargo/cargo.plugin.zsh
@@ -0,0 +1,22 @@
+function _cargo_commands() {
+ local ret=1 state
+ _arguments ':subcommand:->subcommand' && ret=0
+
+ case $state in
+ subcommand)
+ subcommands=(
+ "build:Build the current project"
+ "clean:Clean up after a build"
+ "help:Help about available commands"
+ "new:Create a new project"
+ "test:Run the tests"
+ "update:Updates list of known packages"
+ "run:Builds and runs the currecnt project"
+ )
+ _describe -t subcommands 'cargo subcommands' subcommands && ret=0
+ esac
+
+ return ret
+}
+
+compdef _cargo_commands cargo
From 9d35d3a5d5db6e3b5aa3935bdb3660b607bf599d Mon Sep 17 00:00:00 2001
From: FireWave
Date: Mon, 3 Oct 2016 14:58:51 -0400
Subject: [PATCH 68/94] Revert "Change confusing 12h-time without AM/PM to
system-localized time"
This reverts commit 06d52a60389a85107ed8cc2e302a1e66f719f738.
---
themes/xiong-chiamiov-plus.zsh-theme | 2 +-
themes/xiong-chiamiov.zsh-theme | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/themes/xiong-chiamiov-plus.zsh-theme b/themes/xiong-chiamiov-plus.zsh-theme
index 26cc38487..095dae290 100644
--- a/themes/xiong-chiamiov-plus.zsh-theme
+++ b/themes/xiong-chiamiov-plus.zsh-theme
@@ -1,6 +1,6 @@
# user, host, full path, and time/date
# on two lines for easier vgrepping
# entry in a nice long thread on the Arch Linux forums: http://bbs.archlinux.org/viewtopic.php?pid=521888#p521888
-PROMPT=$'%{\e[0;34m%}%B┌─[%b%{\e[0m%}%{\e[1;32m%}%n%{\e[1;30m%}@%{\e[0m%}%{\e[0;36m%}%m%{\e[0;34m%}%B]%b%{\e[0m%} - %b%{\e[0;34m%}%B[%b%{\e[1;37m%}%~%{\e[0;34m%}%B]%b%{\e[0m%} - %{\e[0;34m%}%B[%b%{\e[0;33m%}'%D{"%c"}%b$'%{\e[0;34m%}%B]%b%{\e[0m%}
+PROMPT=$'%{\e[0;34m%}%B┌─[%b%{\e[0m%}%{\e[1;32m%}%n%{\e[1;30m%}@%{\e[0m%}%{\e[0;36m%}%m%{\e[0;34m%}%B]%b%{\e[0m%} - %b%{\e[0;34m%}%B[%b%{\e[1;37m%}%~%{\e[0;34m%}%B]%b%{\e[0m%} - %{\e[0;34m%}%B[%b%{\e[0;33m%}'%D{"%a %b %d, %I:%M"}%b$'%{\e[0;34m%}%B]%b%{\e[0m%}
%{\e[0;34m%}%B└─%B[%{\e[1;35m%}$%{\e[0;34m%}%B] <$(git_prompt_info)>%{\e[0m%}%b '
PS2=$' \e[0;34m%}%B>%{\e[0m%}%b '
diff --git a/themes/xiong-chiamiov.zsh-theme b/themes/xiong-chiamiov.zsh-theme
index 9cf17f47c..7c4c2e4f8 100644
--- a/themes/xiong-chiamiov.zsh-theme
+++ b/themes/xiong-chiamiov.zsh-theme
@@ -1,6 +1,6 @@
# user, host, full path, and time/date
# on two lines for easier vgrepping
# entry in a nice long thread on the Arch Linux forums: http://bbs.archlinux.org/viewtopic.php?pid=521888#p521888
-PROMPT=$'%{\e[0;34m%}%B┌─[%b%{\e[0m%}%{\e[1;32m%}%n%{\e[1;30m%}@%{\e[0m%}%{\e[0;36m%}%m%{\e[0;34m%}%B]%b%{\e[0m%} - %b%{\e[0;34m%}%B[%b%{\e[1;37m%}%~%{\e[0;34m%}%B]%b%{\e[0m%} - %{\e[0;34m%}%B[%b%{\e[0;33m%}'%D{"%c"}%b$'%{\e[0;34m%}%B]%b%{\e[0m%}
+PROMPT=$'%{\e[0;34m%}%B┌─[%b%{\e[0m%}%{\e[1;32m%}%n%{\e[1;30m%}@%{\e[0m%}%{\e[0;36m%}%m%{\e[0;34m%}%B]%b%{\e[0m%} - %b%{\e[0;34m%}%B[%b%{\e[1;37m%}%~%{\e[0;34m%}%B]%b%{\e[0m%} - %{\e[0;34m%}%B[%b%{\e[0;33m%}'%D{"%a %b %d, %I:%M"}%b$'%{\e[0;34m%}%B]%b%{\e[0m%}
%{\e[0;34m%}%B└─%B[%{\e[1;35m%}$%{\e[0;34m%}%B]>%{\e[0m%}%b '
PS2=$' \e[0;34m%}%B>%{\e[0m%}%b '
From fe605e142fdaaec6282764c8fe88af27241338f3 Mon Sep 17 00:00:00 2001
From: FireWave
Date: Mon, 3 Oct 2016 15:00:39 -0400
Subject: [PATCH 69/94] Change confusing 12h without AM/PM to a clean 24h
display. It was not possible to simply add AM/PM since strftime return blank
for %p %P
---
themes/xiong-chiamiov-plus.zsh-theme | 2 +-
themes/xiong-chiamiov.zsh-theme | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/themes/xiong-chiamiov-plus.zsh-theme b/themes/xiong-chiamiov-plus.zsh-theme
index 095dae290..5fb4fe6f4 100644
--- a/themes/xiong-chiamiov-plus.zsh-theme
+++ b/themes/xiong-chiamiov-plus.zsh-theme
@@ -1,6 +1,6 @@
# user, host, full path, and time/date
# on two lines for easier vgrepping
# entry in a nice long thread on the Arch Linux forums: http://bbs.archlinux.org/viewtopic.php?pid=521888#p521888
-PROMPT=$'%{\e[0;34m%}%B┌─[%b%{\e[0m%}%{\e[1;32m%}%n%{\e[1;30m%}@%{\e[0m%}%{\e[0;36m%}%m%{\e[0;34m%}%B]%b%{\e[0m%} - %b%{\e[0;34m%}%B[%b%{\e[1;37m%}%~%{\e[0;34m%}%B]%b%{\e[0m%} - %{\e[0;34m%}%B[%b%{\e[0;33m%}'%D{"%a %b %d, %I:%M"}%b$'%{\e[0;34m%}%B]%b%{\e[0m%}
+PROMPT=$'%{\e[0;34m%}%B┌─[%b%{\e[0m%}%{\e[1;32m%}%n%{\e[1;30m%}@%{\e[0m%}%{\e[0;36m%}%m%{\e[0;34m%}%B]%b%{\e[0m%} - %b%{\e[0;34m%}%B[%b%{\e[1;37m%}%~%{\e[0;34m%}%B]%b%{\e[0m%} - %{\e[0;34m%}%B[%b%{\e[0;33m%}'%D{"%a %b %d, %H:%M"}%b$'%{\e[0;34m%}%B]%b%{\e[0m%}
%{\e[0;34m%}%B└─%B[%{\e[1;35m%}$%{\e[0;34m%}%B] <$(git_prompt_info)>%{\e[0m%}%b '
PS2=$' \e[0;34m%}%B>%{\e[0m%}%b '
diff --git a/themes/xiong-chiamiov.zsh-theme b/themes/xiong-chiamiov.zsh-theme
index 7c4c2e4f8..0ed335fb5 100644
--- a/themes/xiong-chiamiov.zsh-theme
+++ b/themes/xiong-chiamiov.zsh-theme
@@ -1,6 +1,6 @@
# user, host, full path, and time/date
# on two lines for easier vgrepping
# entry in a nice long thread on the Arch Linux forums: http://bbs.archlinux.org/viewtopic.php?pid=521888#p521888
-PROMPT=$'%{\e[0;34m%}%B┌─[%b%{\e[0m%}%{\e[1;32m%}%n%{\e[1;30m%}@%{\e[0m%}%{\e[0;36m%}%m%{\e[0;34m%}%B]%b%{\e[0m%} - %b%{\e[0;34m%}%B[%b%{\e[1;37m%}%~%{\e[0;34m%}%B]%b%{\e[0m%} - %{\e[0;34m%}%B[%b%{\e[0;33m%}'%D{"%a %b %d, %I:%M"}%b$'%{\e[0;34m%}%B]%b%{\e[0m%}
+PROMPT=$'%{\e[0;34m%}%B┌─[%b%{\e[0m%}%{\e[1;32m%}%n%{\e[1;30m%}@%{\e[0m%}%{\e[0;36m%}%m%{\e[0;34m%}%B]%b%{\e[0m%} - %b%{\e[0;34m%}%B[%b%{\e[1;37m%}%~%{\e[0;34m%}%B]%b%{\e[0m%} - %{\e[0;34m%}%B[%b%{\e[0;33m%}'%D{"%a %b %d, %H:%M"}%b$'%{\e[0;34m%}%B]%b%{\e[0m%}
%{\e[0;34m%}%B└─%B[%{\e[1;35m%}$%{\e[0;34m%}%B]>%{\e[0m%}%b '
PS2=$' \e[0;34m%}%B>%{\e[0m%}%b '
From 6b7003c3efcabe5ce185d5c2a1a8b708d92dfb82 Mon Sep 17 00:00:00 2001
From: Laurent Commarieu
Date: Mon, 26 Sep 2016 15:26:38 +0200
Subject: [PATCH 70/94] feat(plugin): add nomad
---
plugins/nomad/README.md | 11 +++++++++
plugins/nomad/_nomad | 51 +++++++++++++++++++++++++++++++++++++++++
2 files changed, 62 insertions(+)
create mode 100644 plugins/nomad/README.md
create mode 100644 plugins/nomad/_nomad
diff --git a/plugins/nomad/README.md b/plugins/nomad/README.md
new file mode 100644
index 000000000..ff07e917b
--- /dev/null
+++ b/plugins/nomad/README.md
@@ -0,0 +1,11 @@
+## About
+
+Plugin for Nomad, a tool from Hashicorp for easily deploy applications at any scale.
+
+### Requirements
+
+ * [Nomad](https://nomadproject.io/)
+
+### Usage
+
+ * Type `nomad` into your prompt and hit `TAB` to see available completion options
diff --git a/plugins/nomad/_nomad b/plugins/nomad/_nomad
new file mode 100644
index 000000000..25169f394
--- /dev/null
+++ b/plugins/nomad/_nomad
@@ -0,0 +1,51 @@
+#compdef nomad
+
+local -a _nomad_cmds
+_nomad_cmds=(
+ 'agent:Runs a Nomad agent'
+ 'agent-info:Display status information about the local agent'
+ 'alloc-status:Display allocation status information and metadata'
+ 'client-config:View or modify client configuration details'
+ 'eval-status:Display evaluation status and placement failure reasons'
+ 'fs:Inspect the contents of an allocation directory'
+ 'init:Create an example job file'
+ 'inspect:Inspect a submitted job'
+ 'logs:Streams the logs of a task.'
+ 'node-drain:Toggle drain mode on a given node'
+ 'node-status:Display status information about nodes'
+ 'plan:Dry-run a job update to determine its effects'
+ 'run:Run a new job or update an existing'
+ 'server-force-leave:Force a server into the left state'
+ 'server-join:Join server nodes together'
+ 'server-members:Display a list of known servers and their'
+ 'status:Display status information about jobs'
+ 'stop:Stop a running job'
+ 'validate:Checks if a given job specification is valid'
+ 'version:Prints the Nomad version'
+)
+
+
+__allocstatus() {
+ _arguments \
+ '-address=[(addr) The address of the Nomad server. Overrides the NOMAD_ADDR environment variable if set. Default = http://127.0.0.1:4646]' \
+ '-region=[(region) The region of the Nomad servers to forward commands to. Overrides the NOMAD_REGION environment variable if set. Defaults to the Agent s local region.]' \
+ '-no-color[Disables colored command output.]' \
+ '-short[Display short output. Shows only the most recent task event.]' \
+ '-stats[Display detailed resource usage statistics.]' \
+ '-verbose[Show full information.]' \
+ '-json[Output the allocation in its JSON format.]' \
+ '-t[Format and display allocation using a Go template.]'
+}
+
+_arguments '*:: :->command'
+
+if (( CURRENT == 1 )); then
+ _describe -t commands "nomad command" _nomad_cmds
+ return
+fi
+
+local -a _command_args
+case "$words[1]" in
+ alloc-status)
+ __allocstatus ;;
+esac
From dfd7bf9f4141fe6d2ec9cd067b01ad9920e80a24 Mon Sep 17 00:00:00 2001
From: Laurent Commarieu
Date: Mon, 3 Oct 2016 21:11:54 +0200
Subject: [PATCH 71/94] feat(nomad): add common commands and new readme
---
plugins/nomad/README.md | 16 ++++---
plugins/nomad/_nomad | 104 +++++++++++++++++++++++++++++++++++++++-
2 files changed, 113 insertions(+), 7 deletions(-)
diff --git a/plugins/nomad/README.md b/plugins/nomad/README.md
index ff07e917b..04b361683 100644
--- a/plugins/nomad/README.md
+++ b/plugins/nomad/README.md
@@ -1,11 +1,15 @@
-## About
+# Nomad
-Plugin for Nomad, a tool from Hashicorp for easily deploy applications at any scale.
+The `nomad` plugin provides a simple autocompletion for [Nomad](https://nomadproject.io/), a tool from Hashicorp for easily deploy applications at any scale.
-### Requirements
+## Usage
- * [Nomad](https://nomadproject.io/)
+1. Enable the `nomad` plugin:
-### Usage
+ ```zsh
+ plugins=(... nomad)
+ ```
- * Type `nomad` into your prompt and hit `TAB` to see available completion options
+2. Install [Nomad](https://nomadproject.io/)
+
+3. Type `nomad` into your prompt and hit `TAB` to see available completion options.
diff --git a/plugins/nomad/_nomad b/plugins/nomad/_nomad
index 25169f394..1c935a02e 100644
--- a/plugins/nomad/_nomad
+++ b/plugins/nomad/_nomad
@@ -24,7 +24,6 @@ _nomad_cmds=(
'version:Prints the Nomad version'
)
-
__allocstatus() {
_arguments \
'-address=[(addr) The address of the Nomad server. Overrides the NOMAD_ADDR environment variable if set. Default = http://127.0.0.1:4646]' \
@@ -37,6 +36,93 @@ __allocstatus() {
'-t[Format and display allocation using a Go template.]'
}
+__evalstatus() {
+ _arguments \
+ '-address=[(addr) The address of the Nomad server. Overrides the NOMAD_ADDR environment variable if set. Default = http://127.0.0.1:4646]' \
+ '-region=[(region) The region of the Nomad servers to forward commands to. Overrides the NOMAD_REGION environment variable if set. Defaults to the Agent s local region.]' \
+ '-no-color[Disables colored command output.]' \
+ '-monitor[Monitor an outstanding evaluation.]' \
+ '-verbose[Show full information.]' \
+ '-json[Output the allocation in its JSON format.]' \
+ '-t[Format and display allocation using a Go template.]'
+}
+
+__inspect() {
+ _arguments \
+ '-address=[(addr) The address of the Nomad server. Overrides the NOMAD_ADDR environment variable if set. Default = http://127.0.0.1:4646]' \
+ '-region=[(region) The region of the Nomad servers to forward commands to. Overrides the NOMAD_REGION environment variable if set. Defaults to the Agent s local region.]' \
+ '-no-color[Disables colored command output.]' \
+ '-json[Output the allocation in its JSON format.]' \
+ '-t[Format and display allocation using a Go template.]'
+}
+
+__logs() {
+ _arguments \
+ '-address=[(addr) The address of the Nomad server. Overrides the NOMAD_ADDR environment variable if set. Default = http://127.0.0.1:4646]' \
+ '-region=[(region) The region of the Nomad servers to forward commands to. Overrides the NOMAD_REGION environment variable if set. Defaults to the Agent s local region.]' \
+ '-no-color[Disables colored command output.]' \
+ '-stderr[ Display stderr logs.]' \
+ '-job[ Use a random allocation from the specified job ID.]' \
+ '-verbose[Show full information.]' \
+ '-f[Causes the output to not stop when the end of the logs are reached, but rather to wait for additional output.]' \
+ '-tail[Show the logs contents with offsets relative to the end of the logs. If no offset is given, -n is defaulted to 10.]' \
+ '-n[Sets the tail location in best-efforted number of lines relative to the end of the logs.]' \
+ '-c[Sets the tail location in number of bytes relative to the end of the logs.]'
+}
+
+__nodestatus() {
+ _arguments \
+ '-address=[(addr) The address of the Nomad server. Overrides the NOMAD_ADDR environment variable if set. Default = http://127.0.0.1:4646]' \
+ '-region=[(region) The region of the Nomad servers to forward commands to. Overrides the NOMAD_REGION environment variable if set. Defaults to the Agent s local region.]' \
+ '-no-color[Disables colored command output.]' \
+ '-self[Query the status of the local node.]' \
+ '-allocs[ Display a count of running allocations for each node.]' \
+ '-short[Display short output. Shows only the most recent task event.]' \
+ '-stats[Display detailed resource usage statistics.]' \
+ '-verbose[Show full information.]' \
+ '-json[Output the allocation in its JSON format.]' \
+ '-t[Format and display allocation using a Go template.]'
+}
+
+__plan() {
+ _arguments \
+ '-address=[(addr) The address of the Nomad server. Overrides the NOMAD_ADDR environment variable if set. Default = http://127.0.0.1:4646]' \
+ '-region=[(region) The region of the Nomad servers to forward commands to. Overrides the NOMAD_REGION environment variable if set. Defaults to the Agent s local region.]' \
+ '-no-color[Disables colored command output.]' \
+ '-diff[Determines whether the diff between the remote job and planned job is shown. Defaults to true.]'
+}
+
+__run() {
+ _arguments \
+ '-address=[(addr) The address of the Nomad server. Overrides the NOMAD_ADDR environment variable if set. Default = http://127.0.0.1:4646]' \
+ '-region=[(region) The region of the Nomad servers to forward commands to. Overrides the NOMAD_REGION environment variable if set. Defaults to the Agent s local region.]' \
+ '-no-color[Disables colored command output.]' \
+ '-check-index[If set, the job is only registered or updated if the the passed job modify index matches the server side version. If a check-index value of zero is passed, the job is only registered if it does not yet exist. If a non-zero value is passed, it ensures that the job is being updated from a known state. The use of this flag is most common in conjunction with plan command.]' \
+ '-detach[Return immediately instead of entering monitor mode. After job submission, the evaluation ID will be printed to the screen, which can be used to examine the evaluation using the eval-status command.]' \
+ '-output[Output the JSON that would be submitted to the HTTP API without submitting the job.]' \
+ '-verbose[Show full information.]'
+}
+
+__status() {
+ _arguments \
+ '-address=[(addr) The address of the Nomad server. Overrides the NOMAD_ADDR environment variable if set. Default = http://127.0.0.1:4646]' \
+ '-region=[(region) The region of the Nomad servers to forward commands to. Overrides the NOMAD_REGION environment variable if set. Defaults to the Agent s local region.]' \
+ '-no-color[Disables colored command output.]' \
+ '-short[Display short output. Shows only the most recent task event.]' \
+ '-evals[Display the evaluations associated with the job.]' \
+ '-verbose[Show full information.]'
+}
+
+__stop() {
+ _arguments \
+ '-address=[(addr) The address of the Nomad server. Overrides the NOMAD_ADDR environment variable if set. Default = http://127.0.0.1:4646]' \
+ '-region=[(region) The region of the Nomad servers to forward commands to. Overrides the NOMAD_REGION environment variable if set. Defaults to the Agent s local region.]' \
+ '-no-color[Disables colored command output.]' \
+ '-detach[Return immediately instead of entering monitor mode. After the deregister command is submitted, a new evaluation ID is printed to the screen, which can be used to examine the evaluation using the eval-status command.]' \
+ '-yes[Automatic yes to prompts.]' \
+ '-verbose[Show full information.]'
+}
+
_arguments '*:: :->command'
if (( CURRENT == 1 )); then
@@ -48,4 +134,20 @@ local -a _command_args
case "$words[1]" in
alloc-status)
__allocstatus ;;
+ eval-status)
+ __evalstatus ;;
+ inspect)
+ __inspect ;;
+ logs)
+ __logs ;;
+ node-status)
+ __nodestatus ;;
+ plan)
+ __plan ;;
+ run)
+ __run ;;
+ status)
+ __status ;;
+ stop)
+ __stop ;;
esac
From 915b0e46f275d19e66f8ad7762edc4fcb28967e6 Mon Sep 17 00:00:00 2001
From: Zaki Manian
Date: Tue, 14 Jun 2016 10:53:58 +0200
Subject: [PATCH 72/94] Add completion for cargo, the rust build tool
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Copy of the official repository:
https://github.com/rust-lang/cargo/tree/master/src/etc
Signed-off-by: Marc Cornellà
---
plugins/cargo/_cargo | 497 +++++++++++++++++++++++++++++++++
plugins/cargo/cargo.plugin.zsh | 22 --
2 files changed, 497 insertions(+), 22 deletions(-)
create mode 100644 plugins/cargo/_cargo
delete mode 100644 plugins/cargo/cargo.plugin.zsh
diff --git a/plugins/cargo/_cargo b/plugins/cargo/_cargo
new file mode 100644
index 000000000..175859202
--- /dev/null
+++ b/plugins/cargo/_cargo
@@ -0,0 +1,497 @@
+#compdef cargo
+
+typeset -A opt_args
+autoload -U regexp-replace
+
+_cargo() {
+
+_arguments \
+ '(- 1 *)'{-h,--help}'[show help message]' \
+ '(- 1 *)'--list'[list installed commands]' \
+ '(- 1 *)'{-v,--verbose}'[use verbose output]' \
+ '(- 1 *)'--color'[colorization option]' \
+ '(- 1 *)'{-V,--version}'[show version information]' \
+ '1: :_cargo_cmds' \
+ '*:: :->args'
+
+case $state in
+ args)
+ case $words[1] in
+ bench)
+ _arguments \
+ '--features=[space separated feature list]' \
+ '--all-features[enable all available features]' \
+ '(-h, --help)'{-h,--help}'[show help message]' \
+ '(-j, --jobs)'{-j,--jobs}'[number of parallel jobs, defaults to # of CPUs]' \
+ "${command_scope_spec[@]}" \
+ '--manifest-path=[path to manifest]: :_files -/' \
+ '--no-default-features[do not build the default features]' \
+ '--no-run[compile but do not run]' \
+ '(-p,--package)'{-p=,--package=}'[package to run benchmarks for]:packages:_get_package_names' \
+ '--target=[target triple]' \
+ '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
+ '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
+ '--color=:colorization option:(auto always never)' \
+ ;;
+
+ build)
+ _arguments \
+ '--features=[space separated feature list]' \
+ '--all-features[enable all available features]' \
+ '(-h, --help)'{-h,--help}'[show help message]' \
+ '(-j, --jobs)'{-j,--jobs}'[number of parallel jobs, defaults to # of CPUs]' \
+ "${command_scope_spec[@]}" \
+ '--manifest-path=[path to manifest]: :_files -/' \
+ '--no-default-features[do not build the default features]' \
+ '(-p,--package)'{-p=,--package=}'[package to build]:packages:_get_package_names' \
+ '--release=[build in release mode]' \
+ '--target=[target triple]' \
+ '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
+ '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
+ '--color=:colorization option:(auto always never)' \
+ ;;
+
+ clean)
+ _arguments \
+ '(-h, --help)'{-h,--help}'[show help message]' \
+ '--manifest-path=[path to manifest]: :_files -/' \
+ '(-p,--package)'{-p=,--package=}'[package to clean]:packages:_get_package_names' \
+ '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
+ '--release[whether or not to clean release artifacts]' \
+ '--target=[target triple(default:all)]' \
+ '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
+ '--color=:colorization option:(auto always never)' \
+ ;;
+
+ doc)
+ _arguments \
+ '--features=[space separated feature list]' \
+ '--all-features[enable all available features]' \
+ '(-h, --help)'{-h,--help}'[show help message]' \
+ '(-j, --jobs)'{-j,--jobs}'[number of parallel jobs, defaults to # of CPUs]' \
+ '--manifest-path=[path to manifest]: :_files -/' \
+ '--no-deps[do not build docs for dependencies]' \
+ '--no-default-features[do not build the default features]' \
+ '--open[open docs in browser after the build]' \
+ '(-p, --package)'{-p,--package}'=[package to document]' \
+ '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
+ '--release[build artifacts in release mode, with optimizations]' \
+ '--target=[build for the target triple]' \
+ '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
+ '--color=:colorization option:(auto always never)' \
+ ;;
+
+ fetch)
+ _arguments \
+ '(-h, --help)'{-h,--help}'[show help message]' \
+ '--manifest-path=[path to manifest]: :_files -/' \
+ '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
+ '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
+ '--color=:colorization option:(auto always never)' \
+ ;;
+
+ generate-lockfile)
+ _arguments \
+ '(-h, --help)'{-h,--help}'[show help message]' \
+ '--manifest-path=[path to manifest]: :_files -/' \
+ '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
+ '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
+ '--color=:colorization option:(auto always never)' \
+ ;;
+
+ git-checkout)
+ _arguments \
+ '(-h, --help)'{-h,--help}'[show help message]' \
+ 'q(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
+ '--reference=[REF]' \
+ '--url=[URL]' \
+ '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
+ '--color=:colorization option:(auto always never)' \
+ ;;
+
+ help)
+ _arguments \
+ '(-h, --help)'{-h,--help}'[show help message]' \
+ '*: :_cargo_cmds' \
+ ;;
+
+ init)
+ _arguments \
+ '--bin[use binary template]' \
+ '--vcs:initialize a new repo with a given VCS:(git hg none)' \
+ '(-h, --help)'{-h,--help}'[show help message]' \
+ '--name=[set the resulting package name]' \
+ '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
+ '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
+ '--color=:colorization option:(auto always never)' \
+ ;;
+
+ install)
+ _arguments \
+ '--bin=[only install the specified binary]' \
+ '--branch=[branch to use when installing from git]' \
+ '--color=:colorization option:(auto always never)' \
+ '--debug[build in debug mode instead of release mode]' \
+ '--example[install the specified example instead of binaries]' \
+ '--features=[space separated feature list]' \
+ '--all-features[enable all available features]' \
+ '--git=[URL from which to install the crate]' \
+ '(-h, --help)'{-h,--help}'[show help message]' \
+ '(-j, --jobs)'{-j,--jobs}'[number of parallel jobs, defaults to # of CPUs]' \
+ '--no-default-features[do not build the default features]' \
+ '--path=[local filesystem path to crate to install]' \
+ '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
+ '--rev=[specific commit to use when installing from git]' \
+ '--root=[directory to install packages into]' \
+ '--tag=[tag to use when installing from git]' \
+ '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
+ '--vers=[version to install from crates.io]' \
+ ;;
+
+ locate-project)
+ _arguments \
+ '(-h, --help)'{-h,--help}'[show help message]' \
+ '--manifest-path=[path to manifest]: :_files -/' \
+ ;;
+
+ login)
+ _arguments \
+ '(-h, --help)'{-h,--help}'[show help message]' \
+ '--host=[Host to set the token for]' \
+ '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
+ '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
+ '--color=:colorization option:(auto always never)' \
+ ;;
+
+ metadata)
+ _arguments \
+ '(-h, --help)'{-h,--help}'[show help message]' \
+ '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
+ '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
+ "--no-deps[output information only about the root package and don't fetch dependencies]" \
+ '--no-default-features[do not include the default feature]' \
+ '--manifest-path=[path to manifest]: :_files -/' \
+ '--features=[space separated feature list]' \
+ '--all-features[enable all available features]' \
+ '--format-version=[format version(default: 1)]' \
+ '--color=:colorization option:(auto always never)' \
+ ;;
+
+ new)
+ _arguments \
+ '--bin[use binary template]' \
+ '--vcs:initialize a new repo with a given VCS:(git hg none)' \
+ '(-h, --help)'{-h,--help}'[show help message]' \
+ '--name=[set the resulting package name]' \
+ '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
+ '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
+ '--color=:colorization option:(auto always never)' \
+ ;;
+
+ owner)
+ _arguments \
+ '(-a, --add)'{-a,--add}'[add owner LOGIN]' \
+ '(-h, --help)'{-h,--help}'[show help message]' \
+ '--index[registry index]' \
+ '(-l, --list)'{-l,--list}'[list owners of a crate]' \
+ '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
+ '(-r, --remove)'{-r,--remove}'[remove owner LOGIN]' \
+ '--token[API token to use when authenticating]' \
+ '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
+ '--color=:colorization option:(auto always never)' \
+ ;;
+
+ package)
+ _arguments \
+ '(-h, --help)'{-h,--help}'[show help message]' \
+ '(-l, --list)'{-l,--list}'[print files included in a package without making one]' \
+ '--manifest-path=[path to manifest]: :_files -/' \
+ '--no-metadata[ignore warnings about a lack of human-usable metadata]' \
+ '--no-verify[do not build to verify contents]' \
+ '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
+ '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
+ '--color=:colorization option:(auto always never)' \
+ ;;
+
+ pkgid)
+ _arguments \
+ '(-h, --help)'{-h,--help}'[show help message]' \
+ '--manifest-path=[path to manifest]: :_files -/' \
+ '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
+ '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
+ '--color=:colorization option:(auto always never)' \
+ ;;
+
+ publish)
+ _arguments \
+ '(-h, --help)'{-h,--help}'[show help message]' \
+ '--host=[Host to set the token for]' \
+ '--manifest-path=[path to manifest]: :_files -/' \
+ '--no-verify[Do not verify tarball until before publish]' \
+ '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
+ '--token[token to use when uploading]' \
+ '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
+ '--color=:colorization option:(auto always never)' \
+ ;;
+
+ read-manifest)
+ _arguments \
+ '(-h, --help)'{-h,--help}'[show help message]' \
+ '--manifest-path=[path to manifest]: :_files -/' \
+ '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
+ '--color=:colorization option:(auto always never)' \
+ ;;
+
+ run)
+ _arguments \
+ '--example=[name of the bin target]' \
+ '--features=[space separated feature list]' \
+ '--all-features[enable all available features]' \
+ '(-h, --help)'{-h,--help}'[show help message]' \
+ '(-j, --jobs)'{-j,--jobs}'[number of parallel jobs, defaults to # of CPUs]' \
+ '--manifest-path=[path to manifest]: :_files -/' \
+ '--bin=[name of the bin target]' \
+ '--no-default-features[do not build the default features]' \
+ '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
+ '--release=[build in release mode]' \
+ '--target=[target triple]' \
+ '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
+ '--color=:colorization option:(auto always never)' \
+ '*: :_normal' \
+ ;;
+
+ rustc)
+ _arguments \
+ '--color=:colorization option:(auto always never)' \
+ '--features=[features to compile for the package]' \
+ '--all-features[enable all available features]' \
+ '(-h, --help)'{-h,--help}'[show help message]' \
+ '(-j, --jobs)'{-j,--jobs}'=[number of parallel jobs, defaults to # of CPUs]' \
+ '--manifest-path=[path to the manifest to fetch dependencies for]' \
+ '--no-default-features[do not compile default features for the package]' \
+ '(-p, --package)'{-p,--package}'=[profile to compile for]' \
+ '--profile=[profile to build the selected target for]' \
+ '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
+ '--release[build artifacts in release mode, with optimizations]' \
+ '--target=[target triple which compiles will be for]' \
+ '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
+ "${command_scope_spec[@]}" \
+ ;;
+
+ rustdoc)
+ _arguments \
+ '--color=:colorization option:(auto always never)' \
+ '--features=[space-separated list of features to also build]' \
+ '--all-features[enable all available features]' \
+ '(-h, --help)'{-h,--help}'[show help message]' \
+ '(-j, --jobs)'{-j,--jobs}'=[number of parallel jobs, defaults to # of CPUs]' \
+ '--manifest-path=[path to the manifest to document]' \
+ '--no-default-features[do not build the `default` feature]' \
+ '--open[open the docs in a browser after the operation]' \
+ '(-p, --package)'{-p,--package}'=[package to document]' \
+ '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
+ '--release[build artifacts in release mode, with optimizations]' \
+ '--target=[build for the target triple]' \
+ '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
+ "${command_scope_spec[@]}" \
+ ;;
+
+ search)
+ _arguments \
+ '--color=:colorization option:(auto always never)' \
+ '(-h, --help)'{-h,--help}'[show help message]' \
+ '--host=[host of a registry to search in]' \
+ '--limit=[limit the number of results]' \
+ '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
+ '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
+ ;;
+
+ test)
+ _arguments \
+ '--features=[space separated feature list]' \
+ '--all-features[enable all available features]' \
+ '(-h, --help)'{-h,--help}'[show help message]' \
+ '(-j, --jobs)'{-j,--jobs}'[number of parallel jobs, defaults to # of CPUs]' \
+ '--manifest-path=[path to manifest]: :_files -/' \
+ '--test=[test name]: :_test_names' \
+ '--no-default-features[do not build the default features]' \
+ '--no-fail-fast[run all tests regardless of failure]' \
+ '--no-run[compile but do not run]' \
+ '(-p,--package)'{-p=,--package=}'[package to run tests for]:packages:_get_package_names' \
+ '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
+ '--release[build artifacts in release mode, with optimizations]' \
+ '--target=[target triple]' \
+ '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
+ '--color=:colorization option:(auto always never)' \
+ '1: :_test_names' \
+ ;;
+
+ uninstall)
+ _arguments \
+ '--bin=[only uninstall the binary NAME]' \
+ '--color=:colorization option:(auto always never)' \
+ '(-h, --help)'{-h,--help}'[show help message]' \
+ '(-q, --quiet)'{-q,--quiet}'[less output printed to stdout]' \
+ '--root=[directory to uninstall packages from]' \
+ '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
+ ;;
+
+ update)
+ _arguments \
+ '--aggressive=[force dependency update]' \
+ '(-h, --help)'{-h,--help}'[show help message]' \
+ '--manifest-path=[path to manifest]: :_files -/' \
+ '(-p,--package)'{-p=,--package=}'[package to update]:packages:__get_package_names' \
+ '--precise=[update single dependency to PRECISE]: :' \
+ '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
+ '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
+ '--color=:colorization option:(auto always never)' \
+ ;;
+
+ verify-project)
+ _arguments \
+ '(-h, --help)'{-h,--help}'[show help message]' \
+ '--manifest-path=[path to manifest]: :_files -/' \
+ '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
+ '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
+ '--color=:colorization option:(auto always never)' \
+ ;;
+
+ version)
+ _arguments \
+ '(-h, --help)'{-h,--help}'[show help message]' \
+ '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
+ '--color=:colorization option:(auto always never)' \
+ ;;
+
+ yank)
+ _arguments \
+ '(-h, --help)'{-h,--help}'[show help message]' \
+ '--index[registry index]' \
+ '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \
+ '--token[API token to use when authenticating]' \
+ '--undo[undo a yank, putting a version back into the index]' \
+ '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \
+ '--color=:colorization option:(auto always never)' \
+ '--vers[yank version]' \
+ ;;
+ esac
+ ;;
+esac
+}
+
+_cargo_cmds(){
+local -a commands;commands=(
+'bench:execute all benchmarks of a local package'
+'build:compile the current project'
+'clean:remove generated artifacts'
+'doc:build package documentation'
+'fetch:fetch package dependencies'
+'generate-lockfile:create lockfile'
+'git-checkout:git checkout'
+'help:get help for commands'
+'init:create new project in current directory'
+'install:install a Rust binary'
+'locate-project:print "Cargo.toml" location'
+'login:login to remote server'
+'metadata:the metadata for a project in json'
+'new:create a new project'
+'owner:manage the owners of a crate on the registry'
+'package:assemble local package into a distributable tarball'
+'pkgid:print a fully qualified package specification'
+'publish:upload package to the registry'
+'read-manifest:print manifest in JSON format'
+'run:run the main binary of the local package'
+'rustc:compile a package and all of its dependencies'
+'rustdoc:build documentation for a package'
+'search:search packages on crates.io'
+'test:execute all unit and tests of a local package'
+'uninstall:remove a Rust binary'
+'update:update dependencies'
+'verify-project:check Cargo.toml'
+'version:show version information'
+'yank:remove pushed file from index'
+)
+_describe 'command' commands
+
+}
+
+
+#FIXME: Disabled until fixed
+#gets package names from the manifest file
+_get_package_names()
+{
+}
+
+#TODO:see if it makes sense to have 'locate-project' to have non-json output.
+#strips package name from json stuff
+_locate_manifest(){
+local manifest=`cargo locate-project 2>/dev/null`
+regexp-replace manifest '\{"root":"|"\}' ''
+echo $manifest
+}
+
+# Extracts the values of "name" from the array given in $1 and shows them as
+# command line options for completion
+_get_names_from_array()
+{
+ local -a filelist;
+ local manifest=$(_locate_manifest)
+ if [[ -z $manifest ]]; then
+ return 0
+ fi
+
+ local last_line
+ local -a names;
+ local in_block=false
+ local block_name=$1
+ names=()
+ while read line
+ do
+ if [[ $last_line == "[[$block_name]]" ]]; then
+ in_block=true
+ else
+ if [[ $last_line =~ '.*\[\[.*' ]]; then
+ in_block=false
+ fi
+ fi
+
+ if [[ $in_block == true ]]; then
+ if [[ $line =~ '.*name.*=' ]]; then
+ regexp-replace line '^.*name *= *|"' ""
+ names+=$line
+ fi
+ fi
+
+ last_line=$line
+ done < $manifest
+ _describe $block_name names
+
+}
+
+#Gets the test names from the manifest file
+_test_names()
+{
+ _get_names_from_array "test"
+}
+
+#Gets the bench names from the manifest file
+_benchmark_names()
+{
+ _get_names_from_array "bench"
+}
+
+# These flags are mutally exclusive specifiers for the scope of a command; as
+# they are used in multiple places without change, they are expanded into the
+# appropriate command's `_arguments` where appropriate.
+set command_scope_spec
+command_scope_spec=(
+ '(--bin --example --test --lib)--bench=[benchmark name]: :_benchmark_names'
+ '(--bench --bin --test --lib)--example=[example name]'
+ '(--bench --example --test --lib)--bin=[binary name]'
+ '(--bench --bin --example --test)--lib=[library name]'
+ '(--bench --bin --example --lib)--test=[test name]'
+)
+
+
+_cargo
diff --git a/plugins/cargo/cargo.plugin.zsh b/plugins/cargo/cargo.plugin.zsh
deleted file mode 100644
index e1dc953dd..000000000
--- a/plugins/cargo/cargo.plugin.zsh
+++ /dev/null
@@ -1,22 +0,0 @@
-function _cargo_commands() {
- local ret=1 state
- _arguments ':subcommand:->subcommand' && ret=0
-
- case $state in
- subcommand)
- subcommands=(
- "build:Build the current project"
- "clean:Clean up after a build"
- "help:Help about available commands"
- "new:Create a new project"
- "test:Run the tests"
- "update:Updates list of known packages"
- "run:Builds and runs the currecnt project"
- )
- _describe -t subcommands 'cargo subcommands' subcommands && ret=0
- esac
-
- return ret
-}
-
-compdef _cargo_commands cargo
From 16bd691b3bd5ca9319e677b66096337e9bac1795 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc=20Cornell=C3=A0?=
Date: Tue, 4 Oct 2016 00:17:38 +0200
Subject: [PATCH 73/94] Add README for the cargo plugin
---
plugins/cargo/README.md | 11 +++++++++++
1 file changed, 11 insertions(+)
create mode 100644 plugins/cargo/README.md
diff --git a/plugins/cargo/README.md b/plugins/cargo/README.md
new file mode 100644
index 000000000..5fa688d21
--- /dev/null
+++ b/plugins/cargo/README.md
@@ -0,0 +1,11 @@
+# cargo
+
+This plugin adds completion for the Rust build tool [`cargo`](https://github.com/rust-lang/cargo).
+
+To use it, add `cargo` to the plugins array in your zshrc file:
+
+```zsh
+plugins=(... cargo)
+```
+
+Updated on October 4th, 2016.
From 2a0223370a2e5bae604344a735ad7b53f30b0cab Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Ordon?=
Date: Mon, 3 Oct 2016 23:37:35 +0100
Subject: [PATCH 74/94] Add an alias for React Native Link command (#5491)
---
plugins/react-native/react-native.plugin.zsh | 1 +
1 file changed, 1 insertion(+)
diff --git a/plugins/react-native/react-native.plugin.zsh b/plugins/react-native/react-native.plugin.zsh
index 7323f1d2e..9463a98b3 100644
--- a/plugins/react-native/react-native.plugin.zsh
+++ b/plugins/react-native/react-native.plugin.zsh
@@ -3,4 +3,5 @@ alias rnios4s='react-native run-ios --simulator "iPhone 4s"'
alias rnios5='react-native run-ios --simulator "iPhone 5"'
alias rnios5s='react-native run-ios --simulator "iPhone 5s"'
alias rnios='react-native run-ios'
+alias rnlink='react-native link'
From d57f36dab82b332be6fd7362c0916b226709834b Mon Sep 17 00:00:00 2001
From: Mats Faugli
Date: Tue, 4 Oct 2016 00:47:59 +0200
Subject: [PATCH 75/94] Add jgitflow maven goals (#5489)
---
plugins/mvn/mvn.plugin.zsh | 2 ++
1 file changed, 2 insertions(+)
diff --git a/plugins/mvn/mvn.plugin.zsh b/plugins/mvn/mvn.plugin.zsh
index 625aad949..04bd186af 100644
--- a/plugins/mvn/mvn.plugin.zsh
+++ b/plugins/mvn/mvn.plugin.zsh
@@ -110,6 +110,8 @@ function listMavenCompletions {
help:active-profiles help:all-profiles help:describe help:effective-pom help:effective-settings help:evaluate help:expressions help:system
# release
release:clean release:prepare release:rollback release:perform release:stage release:branch release:update-versions
+ # jgitflow
+ jgitflow:feature-start jgitflow:feature-finish jgitflow:release-start jgitflow:release-finish jgitflow:hotfix-start jgitflow:hotfix-finish jgitflow:build-number
# repository
repository:bundle-create repository:bundle-pack
# source
From 81981ef248e6e05d11affd4fca40bcfb98306b0e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc=20Cornell=C3=A0?=
Date: Tue, 4 Oct 2016 01:03:16 +0200
Subject: [PATCH 76/94] Fix cp plugin completion and refactor (#5427)
* cp plugin: change cpv to function so that completion works
* cp plugin: show numbers in units of 1024 (K,M,G,T)
Use `-h` level (3): output numbers in units of 1024.
See the manpage of rsync for more information.
* cp plugin: add a README file
* cp plugin: recurse directories
* cp plugin: remove `--` to separate files from options
This has some undesired effects, like having `cpv --help` be a file
not found error.
Use `--` yourself if you need it (which you generally don't):
```zsh
cpv -- -some-file-with-hyphens.txt /tmp
```
Added this same info to the README.
---
plugins/cp/README.md | 32 ++++++++++++++++++++++++++++++++
plugins/cp/cp.plugin.zsh | 18 ++++--------------
2 files changed, 36 insertions(+), 14 deletions(-)
create mode 100644 plugins/cp/README.md
diff --git a/plugins/cp/README.md b/plugins/cp/README.md
new file mode 100644
index 000000000..e8a9b6ccc
--- /dev/null
+++ b/plugins/cp/README.md
@@ -0,0 +1,32 @@
+# cp plugin
+
+This plugin defines a `cpv` function that uses `rsync` so that you
+get the features and security of this command.
+
+To enable, add `cp` to your `plugins` array in your zshrc file:
+
+```zsh
+plugins=(... cp)
+```
+
+## Description
+
+The enabled options for rsync are:
+
+- `-p`: preserves permissions.
+
+- `-o`: preserves owner.
+
+* `-g`: preserves group.
+
+* `-b`: make a backup of the original file instead of overwriting it, if it exists.
+
+* `-r`: recurse directories.
+
+* `-hhh`: outputs numbers in human-readable format, in units of 1024 (K, M, G, T).
+
+* `--backup-dir=/tmp/rsync`: move backup copies to "/tmp/rsync".
+
+* `-e /dev/null`: only work on local files (disable remote shells).
+
+* `--progress`: display progress.
diff --git a/plugins/cp/cp.plugin.zsh b/plugins/cp/cp.plugin.zsh
index 7355a9990..fe6ea87a8 100644
--- a/plugins/cp/cp.plugin.zsh
+++ b/plugins/cp/cp.plugin.zsh
@@ -1,14 +1,4 @@
-#Show progress while file is copying
-
-# Rsync options are:
-# -p - preserve permissions
-# -o - preserve owner
-# -g - preserve group
-# -h - output in human-readable format
-# --progress - display progress
-# -b - instead of just overwriting an existing file, save the original
-# --backup-dir=/tmp/rsync - move backup copies to "/tmp/rsync"
-# -e /dev/null - only work on local files
-# -- - everything after this is an argument, even if it looks like an option
-
-alias cpv="rsync -poghb --backup-dir=/tmp/rsync -e /dev/null --progress --"
+cpv() {
+ rsync -pogbr -hhh --backup-dir=/tmp/rsync -e /dev/null --progress "$@"
+}
+compdef _files cpv
From efa7c7b7ff72953368dfaba979e3014826bf1837 Mon Sep 17 00:00:00 2001
From: Hong Xu
Date: Sun, 2 Oct 2016 19:15:57 -0700
Subject: [PATCH 77/94] set better default colors for GNU ls instead of none.
GNU coreutils ship a color setup command by default which can be used to
set a good default color theme for ls:
https://www.gnu.org/software/coreutils/manual/html_node/dircolors-invocation.html
---
lib/theme-and-appearance.zsh | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/lib/theme-and-appearance.zsh b/lib/theme-and-appearance.zsh
index 5c5bb0e6d..585f872e1 100644
--- a/lib/theme-and-appearance.zsh
+++ b/lib/theme-and-appearance.zsh
@@ -5,7 +5,7 @@ export LSCOLORS="Gxfxcxdxbxegedabagacad"
# Enable ls colors
if [ "$DISABLE_LS_COLORS" != "true" ]
then
- # Find the option for using colors in ls, depending on the version: Linux or BSD
+ # Find the option for using colors in ls, depending on the version: GNU or BSD
if [[ "$(uname -s)" == "NetBSD" ]]; then
# On NetBSD, test if "gls" (GNU ls) is installed (this one supports colors);
# otherwise, leave ls as is, because NetBSD's ls doesn't support -G
@@ -18,6 +18,8 @@ then
gls --color -d . &>/dev/null 2>&1 && alias ls='gls --color=tty'
colorls -G -d . &>/dev/null 2>&1 && alias ls='colorls -G'
else
+ # For GNU ls, we use the default ls color theme. They can later be overwritten by themes.
+ type dircolors >/dev/null 2>&1 && eval "$(dircolors)"
ls --color -d . &>/dev/null 2>&1 && alias ls='ls --color=tty' || alias ls='ls -G'
fi
fi
From 6c08286c8e0ca4d2b48679d2692f0ce4ac443f4c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc=20Cornell=C3=A0?=
Date: Tue, 4 Oct 2016 01:25:07 +0200
Subject: [PATCH 78/94] Use `$commands[]` to check for command existence
---
lib/theme-and-appearance.zsh | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/lib/theme-and-appearance.zsh b/lib/theme-and-appearance.zsh
index 585f872e1..43e245e16 100644
--- a/lib/theme-and-appearance.zsh
+++ b/lib/theme-and-appearance.zsh
@@ -19,7 +19,8 @@ then
colorls -G -d . &>/dev/null 2>&1 && alias ls='colorls -G'
else
# For GNU ls, we use the default ls color theme. They can later be overwritten by themes.
- type dircolors >/dev/null 2>&1 && eval "$(dircolors)"
+ (( $+commands[dircolors] )) && eval "$(dircolors)"
+
ls --color -d . &>/dev/null 2>&1 && alias ls='ls --color=tty' || alias ls='ls -G'
fi
fi
From 6304a789ab280e4a6e984faedd4b046f703327e8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc=20Cornell=C3=A0?=
Date: Tue, 4 Oct 2016 01:25:36 +0200
Subject: [PATCH 79/94] Only set default LS_COLORS if not set before
Also, force the use of Bourne-style shell syntax with `dircolors -b`.
---
lib/theme-and-appearance.zsh | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/lib/theme-and-appearance.zsh b/lib/theme-and-appearance.zsh
index 43e245e16..621cd067b 100644
--- a/lib/theme-and-appearance.zsh
+++ b/lib/theme-and-appearance.zsh
@@ -19,7 +19,9 @@ then
colorls -G -d . &>/dev/null 2>&1 && alias ls='colorls -G'
else
# For GNU ls, we use the default ls color theme. They can later be overwritten by themes.
- (( $+commands[dircolors] )) && eval "$(dircolors)"
+ if [[ -z "$LS_COLORS" ]]; then
+ (( $+commands[dircolors] )) && eval "$(dircolors -b)"
+ fi
ls --color -d . &>/dev/null 2>&1 && alias ls='ls --color=tty' || alias ls='ls -G'
fi
From c2e3a410ea7975f72bf7f0d5b4550ac4375b1e10 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc=20Cornell=C3=A0?=
Date: Tue, 4 Oct 2016 01:24:48 +0200
Subject: [PATCH 80/94] Fix style of theme-and-appearance.zsh
---
lib/theme-and-appearance.zsh | 27 ++++++++++-----------------
1 file changed, 10 insertions(+), 17 deletions(-)
diff --git a/lib/theme-and-appearance.zsh b/lib/theme-and-appearance.zsh
index 621cd067b..a3bb24677 100644
--- a/lib/theme-and-appearance.zsh
+++ b/lib/theme-and-appearance.zsh
@@ -1,41 +1,37 @@
# ls colors
autoload -U colors && colors
-export LSCOLORS="Gxfxcxdxbxegedabagacad"
# Enable ls colors
-if [ "$DISABLE_LS_COLORS" != "true" ]
-then
- # Find the option for using colors in ls, depending on the version: GNU or BSD
+export LSCOLORS="Gxfxcxdxbxegedabagacad"
+
+if [[ "$DISABLE_LS_COLORS" != "true" ]]; then
+ # Find the option for using colors in ls, depending on the version
if [[ "$(uname -s)" == "NetBSD" ]]; then
# On NetBSD, test if "gls" (GNU ls) is installed (this one supports colors);
# 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'
+ gls --color -d . &>/dev/null && 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
# 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'
+ gls --color -d . &>/dev/null && alias ls='gls --color=tty'
+ colorls -G -d . &>/dev/null && alias ls='colorls -G'
else
# For GNU ls, we use the default ls color theme. They can later be overwritten by themes.
if [[ -z "$LS_COLORS" ]]; then
(( $+commands[dircolors] )) && eval "$(dircolors -b)"
fi
- ls --color -d . &>/dev/null 2>&1 && alias ls='ls --color=tty' || alias ls='ls -G'
+ ls --color -d . &>/dev/null && alias ls='ls --color=tty' || alias ls='ls -G'
fi
fi
setopt auto_cd
setopt multios
+setopt prompt_subst
-if [[ x$WINDOW != x ]]
-then
- SCREEN_NO="%B$WINDOW%b "
-else
- SCREEN_NO=""
-fi
+[[ -n "$WINDOW" ]] && SCREEN_NO="%B$WINDOW%b " || SCREEN_NO=""
# Apply theming defaults
PS1="%n@%m:%~%# "
@@ -45,6 +41,3 @@ ZSH_THEME_GIT_PROMPT_PREFIX="git:(" # Prefix at the very beginning of th
ZSH_THEME_GIT_PROMPT_SUFFIX=")" # At the very end of the prompt
ZSH_THEME_GIT_PROMPT_DIRTY="*" # Text to display if the branch is dirty
ZSH_THEME_GIT_PROMPT_CLEAN="" # Text to display if the branch is clean
-
-# Setup the prompt with pretty colors
-setopt prompt_subst
From 86126233bb5bb99ced64b95c16a4e4ed776fd8de Mon Sep 17 00:00:00 2001
From: slavaGanzin
Date: Tue, 4 Oct 2016 12:21:18 +0300
Subject: [PATCH 81/94] specify globalias modes
---
plugins/globalias/globalias.plugin.zsh | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/plugins/globalias/globalias.plugin.zsh b/plugins/globalias/globalias.plugin.zsh
index 95a0e3072..bac657c47 100644
--- a/plugins/globalias/globalias.plugin.zsh
+++ b/plugins/globalias/globalias.plugin.zsh
@@ -4,8 +4,11 @@ globalias() {
zle self-insert
}
zle -N globalias
-bindkey -e " " globalias
-bindkey -v " " globalias
-bindkey -e "^ " magic-space # control-space to bypass completion
-bindkey -v "^ " magic-space
-bindkey -M isearch " " magic-space # normal space during searches
+
+# space expands all global aliases
+bindkey -M emacs " " globalias
+bindkey -M viins " " globalias
+
+# control-space to make a normal space
+bindkey -M emacs "^ " magic-space
+bindkey -M viins "^ " magic-space
From 75f87dd24ec60bd243ffbe7c9dbd1daec5b51ae2 Mon Sep 17 00:00:00 2001
From: slavaGanzin
Date: Tue, 4 Oct 2016 14:03:37 +0300
Subject: [PATCH 82/94] README for globalias
---
plugins/globalias/README.md | 37 ++++++++++++++++++++++++++
plugins/globalias/globalias.plugin.zsh | 3 +++
2 files changed, 40 insertions(+)
create mode 100644 plugins/globalias/README.md
diff --git a/plugins/globalias/README.md b/plugins/globalias/README.md
new file mode 100644
index 000000000..db2e5bee0
--- /dev/null
+++ b/plugins/globalias/README.md
@@ -0,0 +1,37 @@
+#Globalias
+
+
+Expands all globes, backtick expressions and aliases(including global).
+
+```
+$ touch {1..10}
+#expands to
+$ touch 1 2 3 4 5 6 7 8 9 10
+
+$ mkdir "`date -R`"
+#expands to
+$ mkdir Tue,\ 04\ Oct\ 2016\ 13:54:03\ +0300
+
+#.zshrc:
+alias -g G="| grep --color=auto -P"
+alias l='ls --color=auto -lah'
+
+$ lG
+#expands to
+$ ls --color=auto -lah | grep --color=auto -P
+
+ls **/*.json
+#expands to
+ls folder/file.json anotherfolder/another.json
+```
+
+####Returns autocompletion to your custom aliases:
+```
+#.zsrc
+alias S="sudo systemctl"
+
+$ S
+#expands to:
+sudo systemctl s
+#trigger autocompletion
+```
diff --git a/plugins/globalias/globalias.plugin.zsh b/plugins/globalias/globalias.plugin.zsh
index bac657c47..bf4cfc030 100644
--- a/plugins/globalias/globalias.plugin.zsh
+++ b/plugins/globalias/globalias.plugin.zsh
@@ -12,3 +12,6 @@ bindkey -M viins " " globalias
# control-space to make a normal space
bindkey -M emacs "^ " magic-space
bindkey -M viins "^ " magic-space
+
+# normal space during searches
+bindkey -M isearch " " magic-space
From 6eaa868cd9ad8447973a53f09453121d58366a6a Mon Sep 17 00:00:00 2001
From: slavaGanzin
Date: Tue, 4 Oct 2016 14:05:41 +0300
Subject: [PATCH 83/94] fix comment
---
plugins/globalias/globalias.plugin.zsh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plugins/globalias/globalias.plugin.zsh b/plugins/globalias/globalias.plugin.zsh
index bf4cfc030..9602a9606 100644
--- a/plugins/globalias/globalias.plugin.zsh
+++ b/plugins/globalias/globalias.plugin.zsh
@@ -5,7 +5,7 @@ globalias() {
}
zle -N globalias
-# space expands all global aliases
+# space expands all aliases, including global
bindkey -M emacs " " globalias
bindkey -M viins " " globalias
From f701b4de0fb55b71e2cfb17522a08fba741ff170 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc=20Cornell=C3=A0?=
Date: Tue, 4 Oct 2016 13:55:11 +0200
Subject: [PATCH 84/94] Fix formatting and usage section
Also:
- Changes `globes` (which doesn't exist) to `glob expressions`.
- Delete the `trigger autocompletion to your current aliases` use case, since that's not
really implemented.
---
plugins/globalias/README.md | 55 +++++++++++++++++++++++++++----------
1 file changed, 40 insertions(+), 15 deletions(-)
diff --git a/plugins/globalias/README.md b/plugins/globalias/README.md
index db2e5bee0..ba9888ccb 100644
--- a/plugins/globalias/README.md
+++ b/plugins/globalias/README.md
@@ -1,37 +1,62 @@
-#Globalias
+# Globalias plugin
+Expands all glob expressions, subcommands and aliases (including global).
-Expands all globes, backtick expressions and aliases(including global).
+Idea from: http://blog.patshead.com/2012/11/automatically-expaning-zsh-global-aliases---simplified.html.
+
+## Usage
+
+Add `globalias` to the plugins array in your zshrc file:
+
+```zsh
+plugins=(... globalias)
+```
+
+Then just press `SPACE` to trigger the expansion of a command you've written.
+
+If you only want to insert a space without expanding the command line, press
+`CTRL`+`SPACE`.
+
+## Examples
+
+#### Glob expressions
```
$ touch {1..10}
-#expands to
+# expands to
$ touch 1 2 3 4 5 6 7 8 9 10
+$ ls **/*.json
+# expands to
+$ ls folder/file.json anotherfolder/another.json
+```
+
+#### Subcommands
+
+```
$ mkdir "`date -R`"
-#expands to
+# expands to
$ mkdir Tue,\ 04\ Oct\ 2016\ 13:54:03\ +0300
-#.zshrc:
+```
+
+#### Aliases
+
+```
+# .zshrc:
alias -g G="| grep --color=auto -P"
alias l='ls --color=auto -lah'
$ lG
-#expands to
+# expands to
$ ls --color=auto -lah | grep --color=auto -P
-
-ls **/*.json
-#expands to
-ls folder/file.json anotherfolder/another.json
```
-####Returns autocompletion to your custom aliases:
```
-#.zsrc
+# .zsrc:
alias S="sudo systemctl"
$ S
-#expands to:
-sudo systemctl s
-#trigger autocompletion
+# expands to:
+$ sudo systemctl
```
From 3cc61701bd7fd0a3fa6cb3c70f2b927a1e51970a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc=20Cornell=C3=A0?=
Date: Tue, 4 Oct 2016 13:56:25 +0200
Subject: [PATCH 85/94] Update per-directory-history plugin to latest version
(#5493)
Latest version: February 17, 2016 - dd81201
---
plugins/per-directory-history/README.md | 5 ++---
.../per-directory-history/per-directory-history.zsh | 12 +++++++-----
2 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/plugins/per-directory-history/README.md b/plugins/per-directory-history/README.md
index d8ff93dc0..196f74e6c 100644
--- a/plugins/per-directory-history/README.md
+++ b/plugins/per-directory-history/README.md
@@ -27,9 +27,8 @@ Usage
2. The default mode if per directory history, interact with your history as normal.
3. Press ^G (the Control and G keys simultaneously) to toggle between local
- and global histories.
-
-
+ and global histories. If you would prefer a different shortcut to toggle
+ set the PER_DIRECTORY_HISTORY_TOGGLE environment variable.
-------------------------------------------------------------------------------
Configuration
diff --git a/plugins/per-directory-history/per-directory-history.zsh b/plugins/per-directory-history/per-directory-history.zsh
index bdee341bd..1242dc420 100644
--- a/plugins/per-directory-history/per-directory-history.zsh
+++ b/plugins/per-directory-history/per-directory-history.zsh
@@ -30,7 +30,7 @@
#
################################################################################
#
-# Copyright (c) 2012 Jim Hester
+# Copyright (c) 2014 Jim Hester
#
# This software is provided 'as-is', without any express or implied warranty.
# In no event will the authors be held liable for any damages arising from the
@@ -57,6 +57,7 @@
#-------------------------------------------------------------------------------
[[ -z $HISTORY_BASE ]] && HISTORY_BASE="$HOME/.directory_history"
+[[ -z $PER_DIRECTORY_HISTORY_TOGGLE ]] && PER_DIRECTORY_HISTORY_TOGGLE='^G'
#-------------------------------------------------------------------------------
# toggle global/directory history used for searching - ctrl-G by default
@@ -76,7 +77,7 @@ function per-directory-history-toggle-history() {
autoload per-directory-history-toggle-history
zle -N per-directory-history-toggle-history
-bindkey '^G' per-directory-history-toggle-history
+bindkey $PER_DIRECTORY_HISTORY_TOGGLE per-directory-history-toggle-history
#-------------------------------------------------------------------------------
# implementation details
@@ -108,7 +109,7 @@ function _per-directory-history-change-directory() {
}
function _per-directory-history-addhistory() {
- print -Sr -- ${1%%$'\n'}
+ print -Sr -- "${1%%$'\n'}"
fc -p $_per_directory_history_directory
}
@@ -140,8 +141,9 @@ function _per-directory-history-set-global-history() {
#add functions to the exec list for chpwd and zshaddhistory
-chpwd_functions=(${chpwd_functions[@]} "_per-directory-history-change-directory")
-zshaddhistory_functions=(${zshaddhistory_functions[@]} "_per-directory-history-addhistory")
+autoload -U add-zsh-hook
+add-zsh-hook chpwd _per-directory-history-change-directory
+add-zsh-hook zshaddhistory _per-directory-history-addhistory
#start in directory mode
mkdir -p ${_per_directory_history_directory:h}
From 7f9b7733507d57a6cd4f38d0c0db830647c1940d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc=20Cornell=C3=A0?=
Date: Tue, 4 Oct 2016 17:23:20 +0200
Subject: [PATCH 86/94] Fix compdef commands in git plugin
The command `compdef command=git` returns an error in some cases, the
appropriate command is `compdef _git command`.
Fixes #5442
---
plugins/git/git.plugin.zsh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh
index 28fb253dd..178f1deb2 100644
--- a/plugins/git/git.plugin.zsh
+++ b/plugins/git/git.plugin.zsh
@@ -76,7 +76,7 @@ alias gcd='git checkout develop'
alias gcmsg='git commit -m'
alias gco='git checkout'
alias gcount='git shortlog -sn'
-compdef gcount=git
+compdef _git gcount
alias gcp='git cherry-pick'
alias gcpa='git cherry-pick --abort'
alias gcpc='git cherry-pick --continue'
@@ -159,7 +159,7 @@ alias ghh='git help'
alias gignore='git update-index --assume-unchanged'
alias gignored='git ls-files -v | grep "^[[:lower:]]"'
alias git-svn-dcommit-push='git svn dcommit && git push github master:svntrunk'
-compdef git-svn-dcommit-push=git
+compdef _git git-svn-dcommit-push=git
alias gk='\gitk --all --branches'
compdef _git gk='gitk'
From d69f2850afc189310b40141c839480b42f71775c Mon Sep 17 00:00:00 2001
From: diego
Date: Fri, 7 Oct 2016 23:54:54 +0200
Subject: [PATCH 87/94] Add non 0 exit code for missing jump targets (#5500)
This allows for the user to combine the jump command with something else. In my example cd and jump are now combined like this:
```bash
jumpcd() {
jump $1 > /dev/null || cd $1
}
alias cd="jumpcd"
```
---
plugins/jump/jump.plugin.zsh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plugins/jump/jump.plugin.zsh b/plugins/jump/jump.plugin.zsh
index e58e7373d..86d9553a2 100644
--- a/plugins/jump/jump.plugin.zsh
+++ b/plugins/jump/jump.plugin.zsh
@@ -9,7 +9,7 @@
export MARKPATH=$HOME/.marks
jump() {
- cd -P "$MARKPATH/$1" 2>/dev/null || echo "No such mark: $1"
+ cd -P "$MARKPATH/$1" 2>/dev/null || {echo "No such mark: $1"; return 1}
}
mark() {
From cd37d19ddaf9cc5acbf443f93f88ca355f74090d Mon Sep 17 00:00:00 2001
From: Florian Boulay
Date: Sat, 8 Oct 2016 08:26:10 +0200
Subject: [PATCH 88/94] Add m4a format in the common aliases plugin (#5502)
The m4a file format can be opened in the command line with mplayer
---
plugins/common-aliases/common-aliases.plugin.zsh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plugins/common-aliases/common-aliases.plugin.zsh b/plugins/common-aliases/common-aliases.plugin.zsh
index c7aafd8b8..128db6e5f 100644
--- a/plugins/common-aliases/common-aliases.plugin.zsh
+++ b/plugins/common-aliases/common-aliases.plugin.zsh
@@ -63,7 +63,7 @@ if is-at-least 4.2.0; then
_image_fts=(jpg jpeg png gif mng tiff tif xpm)
for ft in $_image_fts ; do alias -s $ft=$XIVIEWER; done
- _media_fts=(ape avi flv mkv mov mp3 mpeg mpg ogg ogm rm wav webm)
+ _media_fts=(ape avi flv m4a mkv mov mp3 mpeg mpg ogg ogm rm wav webm)
for ft in $_media_fts ; do alias -s $ft=mplayer ; done
#read documents
From 3be4108d722269720c71138a211dd744ade66f5d Mon Sep 17 00:00:00 2001
From: Michel Filipe
Date: Sun, 9 Oct 2016 14:36:47 -0300
Subject: [PATCH 89/94] remove duplicate alias (#5508)
Removing one "apt-get autoremove" alias because it is duplicated.
---
plugins/ubuntu/ubuntu.plugin.zsh | 2 --
1 file changed, 2 deletions(-)
diff --git a/plugins/ubuntu/ubuntu.plugin.zsh b/plugins/ubuntu/ubuntu.plugin.zsh
index d924f8861..ffde284fe 100644
--- a/plugins/ubuntu/ubuntu.plugin.zsh
+++ b/plugins/ubuntu/ubuntu.plugin.zsh
@@ -29,7 +29,6 @@ compdef _ppap ppap='sudo ppa-purge'
alias ag='sudo apt-get' # age - but without sudo
alias aga='sudo apt-get autoclean' # aac
-alias agar='sudo apt-get autoremove'
alias agb='sudo apt-get build-dep' # abd
alias agc='sudo apt-get clean' # adc
alias agd='sudo apt-get dselect-upgrade' # ads
@@ -44,7 +43,6 @@ alias agar='sudo apt-get autoremove'
compdef _ag ag='sudo apt-get'
compdef _aga aga='sudo apt-get autoclean'
-compdef _agar agar='sudo apt-get autoremove'
compdef _agb agb='sudo apt-get build-dep'
compdef _agc agc='sudo apt-get clean'
compdef _agd agd='sudo apt-get dselect-upgrade'
From 98cd3973d23dfb83aa60f5d11bbb31e2dc714fad Mon Sep 17 00:00:00 2001
From: Hong
Date: Mon, 10 Oct 2016 11:40:17 -0700
Subject: [PATCH 90/94] Take advantage of LS_COLORS for the color of completion
if GNU ls is used. (#5510)
---
lib/theme-and-appearance.zsh | 3 +++
1 file changed, 3 insertions(+)
diff --git a/lib/theme-and-appearance.zsh b/lib/theme-and-appearance.zsh
index a3bb24677..12bcd2849 100644
--- a/lib/theme-and-appearance.zsh
+++ b/lib/theme-and-appearance.zsh
@@ -24,6 +24,9 @@ if [[ "$DISABLE_LS_COLORS" != "true" ]]; then
fi
ls --color -d . &>/dev/null && alias ls='ls --color=tty' || alias ls='ls -G'
+
+ # Take advantage of $LS_COLORS for completion as well.
+ zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
fi
fi
From a56eac7a71a774a4d97bb9456f36b8eb495329d5 Mon Sep 17 00:00:00 2001
From: Hong
Date: Mon, 10 Oct 2016 13:24:30 -0700
Subject: [PATCH 91/94] Use OSTYPE instead of uname whenever possible for
better speed. (#5496)
---
lib/theme-and-appearance.zsh | 4 ++--
plugins/battery/battery.plugin.zsh | 2 +-
plugins/gitfast/git-completion.bash | 2 +-
plugins/sublime/sublime.plugin.zsh | 2 +-
plugins/zsh-navigation-tools/_n-kill | 4 ++--
plugins/zsh-navigation-tools/n-kill | 4 ++--
6 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/lib/theme-and-appearance.zsh b/lib/theme-and-appearance.zsh
index 12bcd2849..039a59d2a 100644
--- a/lib/theme-and-appearance.zsh
+++ b/lib/theme-and-appearance.zsh
@@ -6,11 +6,11 @@ export LSCOLORS="Gxfxcxdxbxegedabagacad"
if [[ "$DISABLE_LS_COLORS" != "true" ]]; then
# Find the option for using colors in ls, depending on the version
- if [[ "$(uname -s)" == "NetBSD" ]]; then
+ if [[ "$OSTYPE" == netbsd* ]]; then
# On NetBSD, test if "gls" (GNU ls) is installed (this one supports colors);
# otherwise, leave ls as is, because NetBSD's ls doesn't support -G
gls --color -d . &>/dev/null && alias ls='gls --color=tty'
- elif [[ "$(uname -s)" == "OpenBSD" ]]; then
+ elif [[ "$OSTYPE" == 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
diff --git a/plugins/battery/battery.plugin.zsh b/plugins/battery/battery.plugin.zsh
index 0bb9e77f0..da229cf35 100644
--- a/plugins/battery/battery.plugin.zsh
+++ b/plugins/battery/battery.plugin.zsh
@@ -64,7 +64,7 @@ if [[ "$OSTYPE" = darwin* ]] ; then
[[ $(ioreg -rc "AppleSmartBattery"| grep '^.*"IsCharging"\ =\ ' | sed -e 's/^.*"IsCharging"\ =\ //') == "Yes" ]]
}
-elif [[ $(uname) == "Linux" ]] ; then
+elif [[ "$OSTYPE" = linux* ]] ; then
function battery_is_charging() {
! [[ $(acpi 2>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]]
diff --git a/plugins/gitfast/git-completion.bash b/plugins/gitfast/git-completion.bash
index e3918c87e..8ce6b5c5f 100644
--- a/plugins/gitfast/git-completion.bash
+++ b/plugins/gitfast/git-completion.bash
@@ -2771,6 +2771,6 @@ __git_complete gitk __gitk_main
# when the user has tab-completed the executable name and consequently
# included the '.exe' suffix.
#
-if [ Cygwin = "$(uname -o 2>/dev/null)" ]; then
+if [[ "$OSTYPE" = cygwin* ]]; then
__git_complete git.exe __git_main
fi
diff --git a/plugins/sublime/sublime.plugin.zsh b/plugins/sublime/sublime.plugin.zsh
index 75a39eab1..f84b7032a 100644
--- a/plugins/sublime/sublime.plugin.zsh
+++ b/plugins/sublime/sublime.plugin.zsh
@@ -1,4 +1,4 @@
-if [[ $('uname') == 'Linux' ]]; then
+if [[ "$OSTYPE" == linux* ]]; then
local _sublime_linux_paths > /dev/null 2>&1
_sublime_linux_paths=(
"$HOME/bin/sublime_text"
diff --git a/plugins/zsh-navigation-tools/_n-kill b/plugins/zsh-navigation-tools/_n-kill
index 8a4ec9da7..6f5d47971 100644
--- a/plugins/zsh-navigation-tools/_n-kill
+++ b/plugins/zsh-navigation-tools/_n-kill
@@ -10,8 +10,8 @@ integer cygwin=0
local IFS="
"
-case "$(uname)" in
- CYGWIN*) list=( `command ps -Wa` ); cygwin=1 ;;
+case "$OSTYPE" in
+ cygwin*) list=( `command ps -Wa` ); cygwin=1 ;;
*) list=( `command ps -o pid,uid,command -A` ) ;;
esac
diff --git a/plugins/zsh-navigation-tools/n-kill b/plugins/zsh-navigation-tools/n-kill
index 0d10565e4..76050f969 100644
--- a/plugins/zsh-navigation-tools/n-kill
+++ b/plugins/zsh-navigation-tools/n-kill
@@ -42,8 +42,8 @@ NLIST_NONSELECTABLE_ELEMENTS=( 1 )
type ps 2>/dev/null 1>&2 || { echo >&2 "Error: \`ps' not found"; return 1 }
-case "$(uname)" in
- CYGWIN*) list=( `command ps -Wa` ) ;;
+case "$OSTYPE" in
+ cygwin*) list=( `command ps -Wa` ) ;;
*) list=( `command ps -o pid,uid,command -A` ) ;;
esac
From f7d4f985ac391e4532a5e6331e0c296fad4a913c Mon Sep 17 00:00:00 2001
From: Hong
Date: Mon, 10 Oct 2016 14:01:37 -0700
Subject: [PATCH 92/94] Use $+commands to check the existence of a command in
clipboard.zsh. (#5519)
---
lib/clipboard.zsh | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/lib/clipboard.zsh b/lib/clipboard.zsh
index b663800a4..2c93d1bb5 100644
--- a/lib/clipboard.zsh
+++ b/lib/clipboard.zsh
@@ -31,13 +31,13 @@ function clipcopy() {
cat $file > /dev/clipboard
fi
else
- if which xclip &>/dev/null; then
+ if (( $+commands[xclip] )); then
if [[ -z $file ]]; then
xclip -in -selection clipboard
else
xclip -in -selection clipboard $file
fi
- elif which xsel &>/dev/null; then
+ elif (( $+commands[xsel] )); then
if [[ -z $file ]]; then
xsel --clipboard --input
else
@@ -74,9 +74,9 @@ function clippaste() {
elif [[ $OSTYPE == cygwin* ]]; then
cat /dev/clipboard
else
- if which xclip &>/dev/null; then
+ if (( $+commands[xclip] )); then
xclip -out -selection clipboard
- elif which xsel &>/dev/null; then
+ elif (( $+commands[xsel] )); then
xsel --clipboard --output
else
print "clipcopy: Platform $OSTYPE not supported or xclip/xsel not installed" >&2
From 628d0bb10664453fe55c1e725ab89fa42dc4ab0a Mon Sep 17 00:00:00 2001
From: rossmcf
Date: Mon, 10 Oct 2016 15:42:55 +0100
Subject: [PATCH 93/94] Fix ls colouring for Darwin. (#5516)
---
lib/theme-and-appearance.zsh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/theme-and-appearance.zsh b/lib/theme-and-appearance.zsh
index 039a59d2a..0fd3c44db 100644
--- a/lib/theme-and-appearance.zsh
+++ b/lib/theme-and-appearance.zsh
@@ -6,7 +6,7 @@ export LSCOLORS="Gxfxcxdxbxegedabagacad"
if [[ "$DISABLE_LS_COLORS" != "true" ]]; then
# Find the option for using colors in ls, depending on the version
- if [[ "$OSTYPE" == netbsd* ]]; then
+ if [[ "$OSTYPE" == netbsd* ]] || [[ "$OSTYPE" == darwin* ]]; then
# On NetBSD, test if "gls" (GNU ls) is installed (this one supports colors);
# otherwise, leave ls as is, because NetBSD's ls doesn't support -G
gls --color -d . &>/dev/null && alias ls='gls --color=tty'
From c24dfa1ab4abb1f28fad7666f3bc24f3abced801 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc=20Cornell=C3=A0?=
Date: Tue, 11 Oct 2016 09:24:43 +0200
Subject: [PATCH 94/94] Fix ls coloring in MacOS if gls is not installed
Fixes #5520.
---
lib/theme-and-appearance.zsh | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/lib/theme-and-appearance.zsh b/lib/theme-and-appearance.zsh
index 0fd3c44db..467b770d6 100644
--- a/lib/theme-and-appearance.zsh
+++ b/lib/theme-and-appearance.zsh
@@ -6,7 +6,7 @@ export LSCOLORS="Gxfxcxdxbxegedabagacad"
if [[ "$DISABLE_LS_COLORS" != "true" ]]; then
# Find the option for using colors in ls, depending on the version
- if [[ "$OSTYPE" == netbsd* ]] || [[ "$OSTYPE" == darwin* ]]; then
+ if [[ "$OSTYPE" == netbsd* ]]; then
# On NetBSD, test if "gls" (GNU ls) is installed (this one supports colors);
# otherwise, leave ls as is, because NetBSD's ls doesn't support -G
gls --color -d . &>/dev/null && alias ls='gls --color=tty'
@@ -17,6 +17,8 @@ if [[ "$DISABLE_LS_COLORS" != "true" ]]; then
# coreutils, so prefer it to "gls".
gls --color -d . &>/dev/null && alias ls='gls --color=tty'
colorls -G -d . &>/dev/null && alias ls='colorls -G'
+ elif [[ "$OSTYPE" == darwin* ]]; then
+ gls --color -d . &>/dev/null && alias ls='gls --color=tty' || alias ls='ls -G'
else
# For GNU ls, we use the default ls color theme. They can later be overwritten by themes.
if [[ -z "$LS_COLORS" ]]; then