From 502f08b5e19716d43a7ec8b006178a7b017f68cd Mon Sep 17 00:00:00 2001 From: Andrew Janke Date: Fri, 27 Feb 2015 23:11:00 -0500 Subject: [PATCH 01/15] Add Cygwin support to installer. * Balk at incompatible Windows/MSYS git * Test for chsh presence before trying to use it * Replace non-portable `[[ ... ]]` and `[ x = *pattern* ]` constructs --- tools/install.sh | 23 ++++++++++++++++++++--- tools/uninstall.sh | 12 ++++++++---- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/tools/install.sh b/tools/install.sh index c83a6f23d..1da261cf9 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -10,9 +10,21 @@ if [ -d "$ZSH" ]; then fi echo "\033[0;34mCloning Oh My Zsh...\033[0m" -hash git >/dev/null 2>&1 && env git clone --depth=1 https://github.com/robbyrussell/oh-my-zsh.git $ZSH || { - echo "git not installed" - exit +hash git >/dev/null 2>&1 || { + echo "Error: git is not installed" + exit 1 +} +# The Windows (MSYS) Git is not compatible with normal use on cygwin +if [ "$OSTYPE" = cygwin ]; then + if git --version | grep msysgit > /dev/null; then + echo "Error: Windows/MSYS Git is not supported on Cygwin" + echo "Error: Make sure the Cygwin git package is installed and is first on the path" + exit 1 + fi +fi +env git clone --depth=1 https://github.com/robbyrussell/oh-my-zsh.git $ZSH || { + echo "Error: git clone of oh-my-zsh repo failed" + exit 1 } echo "\033[0;34mLooking for an existing zsh config...\033[0m" @@ -34,8 +46,13 @@ export PATH=\"$PATH\" TEST_CURRENT_SHELL=$(expr "$SHELL" : '.*/\(.*\)') if [ "$TEST_CURRENT_SHELL" != "zsh" ]; then + if hash chsh >/dev/null 2>&1; then echo "\033[0;34mTime to change your default shell to zsh!\033[0m" chsh -s $(grep /zsh$ /etc/shells | tail -1) + else + echo "I can't change your shell automatically because this system does not have chsh." + echo "Please edit /etc/passwd to set your default shell to zsh." + fi fi unset TEST_CURRENT_SHELL diff --git a/tools/uninstall.sh b/tools/uninstall.sh index 41d601576..23bfac0eb 100644 --- a/tools/uninstall.sh +++ b/tools/uninstall.sh @@ -1,5 +1,5 @@ echo "Removing ~/.oh-my-zsh" -if [[ -d ~/.oh-my-zsh ]] +if [ -d ~/.oh-my-zsh ] then rm -rf ~/.oh-my-zsh fi @@ -20,9 +20,13 @@ then source ~/.zshrc; else - echo "Switching back to bash" - chsh -s /bin/bash - source /etc/profile + if hash chsh >/dev/null 2>&1 + then + echo "Switching back to bash" + chsh -s /bin/bash + else + echo "You can edit /etc/passwd to switch your default shell back to bash" + fi fi echo "Thanks for trying out Oh My Zsh. It's been uninstalled." From 6170fa41d975d40f462a14ca69612270ae9ddb9b Mon Sep 17 00:00:00 2001 From: Michele Bologna Date: Wed, 9 Sep 2015 11:42:56 +0200 Subject: [PATCH 02/15] Added fedora plugin, based on dnf/yum plugin --- plugins/fedora/README.md | 3 +++ plugins/fedora/fedora.plugin.zsh | 16 ++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 plugins/fedora/README.md create mode 100644 plugins/fedora/fedora.plugin.zsh diff --git a/plugins/fedora/README.md b/plugins/fedora/README.md new file mode 100644 index 000000000..f384b0ffd --- /dev/null +++ b/plugins/fedora/README.md @@ -0,0 +1,3 @@ +This is a plugin based on yum plugin, but using dnf as main frontend +(from Fedora 22 onwards, yum is deprecated in favor of dnf). + diff --git a/plugins/fedora/fedora.plugin.zsh b/plugins/fedora/fedora.plugin.zsh new file mode 100644 index 000000000..eddc3627b --- /dev/null +++ b/plugins/fedora/fedora.plugin.zsh @@ -0,0 +1,16 @@ +## Aliases + +alias dnfs="dnf search" # search package +alias dnfp="dnf info" # show package info +alias dnfl="dnf list" # list packages +alias dnfgl="dnf grouplist" # list package groups +alias dnfli="dnf list installed" # print all installed packages +alias dnfmc="dnf makecache" # rebuilds the dnf package list + +alias dnfu="sudo dnf upgrade" # upgrade packages +alias dnfi="sudo dnf install" # install package +alias dnfgi="sudo dnf groupinstall" # install package group +alias dnfr="sudo dnf remove" # remove package +alias dnfgr="sudo dnf groupremove" # remove pagage group +alias dnfrl="sudo dnf remove --remove-leaves" # remove package and leaves +alias dnfc="sudo dnf clean all" # clean cache From 19c0b185ad9b37b448a979fb6cc995cc648e76a4 Mon Sep 17 00:00:00 2001 From: iCross Date: Thu, 10 Sep 2015 14:08:02 +0800 Subject: [PATCH 03/15] fix url-quote-magic not working issue Incompatibilites between 5.0.8 and 5.1: bracketed-paste-magic may also be necessary in order to apply url-quote-magic. Reference: https://github.com/zsh-users/zsh/blob/a9df6aaa702abf761b155cd842a7f6917be44139/Functions/Zle/url-quote-magic#L11 --- lib/misc.zsh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/misc.zsh b/lib/misc.zsh index 6d1a64e8d..bdb884046 100644 --- a/lib/misc.zsh +++ b/lib/misc.zsh @@ -1,6 +1,10 @@ ## Load smart urls if available for d in $fpath; do if [[ -e "$d/url-quote-magic" ]]; then + if [[ -e "$d/bracketed-paste-magic" ]]; then + autoload -Uz bracketed-paste-magic + zle -N bracketed-paste bracketed-paste-magic + fi autoload -U url-quote-magic zle -N self-insert url-quote-magic fi From 023397983bb0d983216c580d884936a660b265f8 Mon Sep 17 00:00:00 2001 From: Kirill Pahnev Date: Thu, 10 Sep 2015 22:52:01 +0300 Subject: [PATCH 04/15] Fixed broken git branch icon --- themes/amuse.zsh-theme | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/themes/amuse.zsh-theme b/themes/amuse.zsh-theme index 548f6d39d..395b34380 100644 --- a/themes/amuse.zsh-theme +++ b/themes/amuse.zsh-theme @@ -12,7 +12,8 @@ PROMPT=' %{$fg_bold[green]%}${PWD/#$HOME/~}%{$reset_color%}$(git_prompt_info) ⌚ %{$fg_bold[red]%}%*%{$reset_color%} $ ' -ZSH_THEME_GIT_PROMPT_PREFIX=" on %{$fg[magenta]%}⭠ " +# Must use Powerline font, for \uE0A0 to render. +ZSH_THEME_GIT_PROMPT_PREFIX=" on %{$fg[magenta]%}\uE0A0 " ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}!" ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[green]%}?" From 6e0fcf803fe00445c97861360d1b0806d8cc56b8 Mon Sep 17 00:00:00 2001 From: Ramses Ladlani Date: Mon, 14 Sep 2015 11:02:00 +0200 Subject: [PATCH 05/15] Fixed atom plugin for cygwin users --- plugins/atom/atom.plugin.zsh | 38 +++++++++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/plugins/atom/atom.plugin.zsh b/plugins/atom/atom.plugin.zsh index 9adb9031a..290c75330 100644 --- a/plugins/atom/atom.plugin.zsh +++ b/plugins/atom/atom.plugin.zsh @@ -1,14 +1,34 @@ -local _atom_paths > /dev/null 2>&1 -_atom_paths=( - "$HOME/Applications/Atom.app" - "/Applications/Atom.app" -) +if [ Cygwin = "$(uname -o 2>/dev/null)" ]; then + local _atom_path > /dev/null 2>&1 + + _atom_path=${LOCALAPPDATA}/atom/bin/atom -for _atom_path in $_atom_paths; do if [[ -a $_atom_path ]]; then - alias at="open -a '$_atom_path'" - break + cyg_open_atom() + { + if [[ -n $1 ]]; then + ${_atom_path} `cygpath -w $1` + else + ${_atom_path} + fi + } + + alias at=cyg_open_atom fi -done +else + local _atom_paths > /dev/null 2>&1 + + _atom_paths=( + "$HOME/Applications/Atom.app" + "/Applications/Atom.app" + ) + + for _atom_path in $_atom_paths; do + if [[ -a $_atom_path ]]; then + alias at="open -a '$_atom_path'" + break + fi + done +fi alias att='at .' From f8502965e491d341829e565e221d7848588d6798 Mon Sep 17 00:00:00 2001 From: Ramses Ladlani Date: Mon, 21 Sep 2015 09:18:43 +0200 Subject: [PATCH 06/15] Added cygwin support to atom plugin --- plugins/atom/atom.plugin.zsh | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/plugins/atom/atom.plugin.zsh b/plugins/atom/atom.plugin.zsh index ec1a114ed..2711cf0e8 100644 --- a/plugins/atom/atom.plugin.zsh +++ b/plugins/atom/atom.plugin.zsh @@ -1,8 +1,5 @@ -# Gets OS Type -unamestr=$(uname -s) - -# If OSX -if [[ "$unamestr" == 'Darwin' ]]; then +case $OSTYPE in +darwin*) local _atom_paths > /dev/null 2>&1 _atom_paths=( "$HOME/Applications/Atom.app" @@ -15,8 +12,26 @@ if [[ "$unamestr" == 'Darwin' ]]; then break fi done -# If Linux -elif [[ "$unamestr" == 'Linux' ]]; then + ;; +cygwin) + local _atom_path > /dev/null 2>&1 + + _atom_path=${LOCALAPPDATA}/atom/bin/atom + + if [[ -a $_atom_path ]]; then + cyg_open_atom() + { + if [[ -n $1 ]]; then + ${_atom_path} `cygpath -w -a $1` + else + ${_atom_path} + fi + } + + alias at=cyg_open_atom + fi + ;; +linux*) # Alerts the user if 'atom' is not a found command. type atom >/dev/null 2>&1 && alias at="atom" || { echo >&2 "You have enabled the atom oh-my-zsh plugin on Linux, but atom is not a recognized command. Please make sure you have it installed before using this plugin."; } -fi +esac From 1bb2715b22a08d3ae24d99550acd531c872a26cd Mon Sep 17 00:00:00 2001 From: Michael SALIHI Date: Mon, 21 Sep 2015 13:17:45 +0200 Subject: [PATCH 07/15] Fix capistrano problem when generating autocompletion --- plugins/capistrano/_capistrano | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/capistrano/_capistrano b/plugins/capistrano/_capistrano index e6e71ffcc..c19c20b7a 100644 --- a/plugins/capistrano/_capistrano +++ b/plugins/capistrano/_capistrano @@ -14,7 +14,7 @@ _arguments -C \ _cap_tasks() { if [[ -f config/deploy.rb || -f Capfile ]]; then if [[ ! -f .cap_tasks~ ]]; then - shipit -v --tasks | sed 's/\(\[\)\(.*\)\(\]\)/\2:/' | awk '{command=$2; $1=$2=$3=""; gsub(/^[ \t\r\n]+/, "", $0); gsub(":", "\\:", command); print command"["$0"]"}' > .cap_tasks~ + shipit --tasks | sed 's/\(\[\)\(.*\)\(\]\)/\2:/' | awk '{command=$2; $1=$2=$3=""; gsub(/^[ \t\r\n]+/, "", $0); gsub(":", "\\:", command); print command"["$0"]"}' > .cap_tasks~ fi OLD_IFS=$IFS From 884a8795623087d4812511de21dfb9329fa29e56 Mon Sep 17 00:00:00 2001 From: Frederic Crozat Date: Mon, 21 Sep 2015 19:55:28 +0200 Subject: [PATCH 08/15] Do not fail if tput is not available Fixes issue #4376 --- tools/install.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tools/install.sh b/tools/install.sh index 4b1a6ba7e..30d66d4b5 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -2,7 +2,10 @@ set -e # Use colors, but only if connected to a terminal, and that terminal # supports them. -ncolors=$(tput colors) +tput=$(which tput) +if [ -n "$tput" ]; then + ncolors=$($tput colors) +fi if [ -t 1 ] && [ -n "$ncolors" ] && [ "$ncolors" -ge 8 ]; then RED="$(tput setaf 1)" GREEN="$(tput setaf 2)" From 95296bb0c5fade33c6cda7ccc7139a35c2641b3a Mon Sep 17 00:00:00 2001 From: Frederic Crozat Date: Tue, 22 Sep 2015 16:46:22 +0200 Subject: [PATCH 09/15] also handle missing tput in upgrade script. --- tools/upgrade.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tools/upgrade.sh b/tools/upgrade.sh index 65af6e368..6e9696202 100644 --- a/tools/upgrade.sh +++ b/tools/upgrade.sh @@ -1,7 +1,10 @@ # Use colors, but only if connected to a terminal, and that terminal # supports them. -ncolors=$(tput colors) +tput=$(which tput) +if [ -n "$tput" ]; then + ncolors=$(tput colors) +fi if [ -t 1 ] && [ -n "$ncolors" ] && [ "$ncolors" -ge 8 ]; then RED="$(tput setaf 1)" GREEN="$(tput setaf 2)" From e957ae41354d6892170e327df3be8a5913f41e78 Mon Sep 17 00:00:00 2001 From: Alexander Frolov Date: Wed, 23 Sep 2015 09:54:22 +0300 Subject: [PATCH 10/15] Update README.md --- plugins/vi-mode/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/vi-mode/README.md b/plugins/vi-mode/README.md index 03e67cca2..8519a5592 100644 --- a/plugins/vi-mode/README.md +++ b/plugins/vi-mode/README.md @@ -61,8 +61,8 @@ Insertion Delete and Insert ----------------- -- `ctrl-h` : While in *Insert mode*: delete character after the cursor -- `ctrl-w` : While in *Insert mode*: delete word after the cursor +- `ctrl-h` : While in *Insert mode*: delete character before the cursor +- `ctrl-w` : While in *Insert mode*: delete word before the cursor - `d{motion}` : Delete text that {motion} moves over - `dd` : Delete line - `D` : Delete characters under the cursor until the end of the line From 5323954c98ca41b47f0d9d40797932d4a6cd980f Mon Sep 17 00:00:00 2001 From: Michele Bologna Date: Wed, 23 Sep 2015 10:52:24 +0200 Subject: [PATCH 11/15] Uniform git prompt equal remote Uniform git prompt equal remote to all others prompts, setting the correct symbol (if applicable) to $git_remote_status, instead of echoing it. It also solves the problem pointed out in #3911 --- lib/git.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/git.zsh b/lib/git.zsh index baf863717..15cd364a0 100644 --- a/lib/git.zsh +++ b/lib/git.zsh @@ -38,7 +38,7 @@ git_remote_status() { if [ $ahead -eq 0 ] && [ $behind -eq 0 ] then - echo "$ZSH_THEME_GIT_PROMPT_EQUAL_REMOTE" + git_remote_status="$ZSH_THEME_GIT_PROMPT_EQUAL_REMOTE" elif [ $ahead -gt 0 ] && [ $behind -eq 0 ] then git_remote_status="$ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE" From 12e99b5334c547c8e8fc1bdcacc88347386eb743 Mon Sep 17 00:00:00 2001 From: Michele Bologna Date: Wed, 23 Sep 2015 11:14:14 +0200 Subject: [PATCH 12/15] fix indentation --- lib/git.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/git.zsh b/lib/git.zsh index 15cd364a0..1e203c7c6 100644 --- a/lib/git.zsh +++ b/lib/git.zsh @@ -38,7 +38,7 @@ git_remote_status() { if [ $ahead -eq 0 ] && [ $behind -eq 0 ] then - git_remote_status="$ZSH_THEME_GIT_PROMPT_EQUAL_REMOTE" + git_remote_status="$ZSH_THEME_GIT_PROMPT_EQUAL_REMOTE" elif [ $ahead -gt 0 ] && [ $behind -eq 0 ] then git_remote_status="$ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE" From 7a636097f8cdc5cacfe9c2e794d885fa3ecfc5dc Mon Sep 17 00:00:00 2001 From: shawn Date: Wed, 23 Sep 2015 18:47:09 -0400 Subject: [PATCH 13/15] Correct repo dir cvs's metadata is under CVS and not .cvs --- lib/grep.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/grep.zsh b/lib/grep.zsh index 3fa103d19..abc1650a1 100644 --- a/lib/grep.zsh +++ b/lib/grep.zsh @@ -11,7 +11,7 @@ if grep-flag-available --color=auto; then fi # ignore VCS folders (if the necessary grep flags are available) -VCS_FOLDERS="{.bzr,.cvs,.git,.hg,.svn}" +VCS_FOLDERS="{.bzr,CVS,.git,.hg,.svn}" if grep-flag-available --exclude-dir=.cvs; then GREP_OPTIONS+=" --exclude-dir=$VCS_FOLDERS" From 0c0450b3035cd4e9fd3f2c07469b933a4d1aa78f Mon Sep 17 00:00:00 2001 From: Aleksandar Vidakovic Date: Thu, 24 Sep 2015 11:51:15 +0100 Subject: [PATCH 14/15] Accept single and double quotes in Gulp plugin --- plugins/gulp/gulp.plugin.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/gulp/gulp.plugin.zsh b/plugins/gulp/gulp.plugin.zsh index 6017c7b60..8e11a444f 100644 --- a/plugins/gulp/gulp.plugin.zsh +++ b/plugins/gulp/gulp.plugin.zsh @@ -20,10 +20,10 @@ # in the current directory. # function $$gulp_completion() { - compls=$(grep -Eo "gulp.task\(('(([a-zA-Z0-9]|-)*)',)" gulpfile.js 2>/dev/null | grep -Eo "'(([a-zA-Z0-9]|-)*)'" | sed s/"'"//g | sort) + compls=$(grep -Eo "gulp.task\((['\"](([a-zA-Z0-9]|-)*)['\"],)" gulpfile.js 2>/dev/null | grep -Eo "['\"](([a-zA-Z0-9]|-)*)['\"]" | sed s/"['\"]"//g | sort)" completions=(${=compls}) compadd -- $completions } -compdef $$gulp_completion gulp \ No newline at end of file +compdef $$gulp_completion gulp From 17088c6431271fe9fd9fa5cdfd56ff2addab5fd5 Mon Sep 17 00:00:00 2001 From: Piotr Gaczkowski Date: Fri, 25 Sep 2015 22:45:45 +0200 Subject: [PATCH 15/15] Fix invalid test expression. --- plugins/chruby/chruby.plugin.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/chruby/chruby.plugin.zsh b/plugins/chruby/chruby.plugin.zsh index 5be6528b0..164b4319f 100644 --- a/plugins/chruby/chruby.plugin.zsh +++ b/plugins/chruby/chruby.plugin.zsh @@ -24,7 +24,7 @@ _homebrew-installed() { } _chruby-from-homebrew-installed() { - [ -r $(brew --prefix chruby)] &> /dev/null + [ -r $(brew --prefix chruby) ] &> /dev/null } _ruby-build_installed() {