From e604eaf55e1c5b19035778c0e0adb0dd6e344b94 Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Mon, 19 Aug 2019 18:17:17 +0200 Subject: lib: delete LC_CTYPE locale setting which causes problems Fixes #7942 --- lib/misc.zsh | 5 ----- 1 file changed, 5 deletions(-) (limited to 'lib') diff --git a/lib/misc.zsh b/lib/misc.zsh index 40ffa479d..36c3ae2e5 100644 --- a/lib/misc.zsh +++ b/lib/misc.zsh @@ -31,10 +31,5 @@ else alias afind='ack -il' fi -# only define LC_CTYPE if undefined -if [[ -z "$LC_CTYPE" && -z "$LC_ALL" ]]; then - export LC_CTYPE=${LANG%%:*} # pick the first entry from LANG -fi - # recognize comments setopt interactivecomments -- cgit v1.2.3-70-g09d2 From 095d56b5ea44988c83d0be501e70f37df3d5066b Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Thu, 19 Sep 2019 16:20:02 +0200 Subject: Fix WSL check for WSL 2 and simplify nohup in open_command WSL 2 changes the output of `uname -r`. For instance, WSL 1: 4.4.0-18980-Microsoft WSL 2: 4.19.67-microsoft-standard Since WSL 2 lowercases the M, we can match for the rest of the string which remains lowercase throughout both versions. Another option would be to match for both upper- and lower-case Ms, like that: $(uname -r) = *[Mm]icrosoft* Fixed use of nohup in open_command where it was only necessary for xdg-open (and actually harmful for cmd.exe in WSL 2). The current logic is simpler and more future-proof. --- lib/functions.zsh | 9 ++------- plugins/sublime/sublime.plugin.zsh | 2 +- 2 files changed, 3 insertions(+), 8 deletions(-) (limited to 'lib') diff --git a/lib/functions.zsh b/lib/functions.zsh index 9f8736bd7..61dfa4780 100644 --- a/lib/functions.zsh +++ b/lib/functions.zsh @@ -21,7 +21,7 @@ function open_command() { case "$OSTYPE" in darwin*) open_cmd='open' ;; cygwin*) open_cmd='cygstart' ;; - linux*) ! [[ $(uname -a) =~ "Microsoft" ]] && open_cmd='xdg-open' || { + linux*) [[ "$(uname -r)" != *icrosoft* ]] && open_cmd='nohup xdg-open' || { open_cmd='cmd.exe /c start ""' [[ -e "$1" ]] && { 1="$(wslpath -w "${1:a}")" || return 1 } } ;; @@ -31,12 +31,7 @@ function open_command() { ;; esac - # don't use nohup on OSX - if [[ "$OSTYPE" == darwin* ]]; then - ${=open_cmd} "$@" &>/dev/null - else - nohup ${=open_cmd} "$@" &>/dev/null - fi + ${=open_cmd} "$@" &>/dev/null } # diff --git a/plugins/sublime/sublime.plugin.zsh b/plugins/sublime/sublime.plugin.zsh index 3a82d6c7f..69604ab4f 100644 --- a/plugins/sublime/sublime.plugin.zsh +++ b/plugins/sublime/sublime.plugin.zsh @@ -15,7 +15,7 @@ alias stn=create_project declare -a _sublime_paths if [[ "$OSTYPE" == linux* ]]; then - if [[ "$(uname -r)" = *Microsoft* ]]; then + if [[ "$(uname -r)" = *icrosoft* ]]; then _sublime_paths=( "$(wslpath -u 'C:\Program Files\Sublime Text 3\subl.exe')" "$(wslpath -u 'C:\Program Files\Sublime Text 2\subl.exe')" -- cgit v1.2.3-70-g09d2 From 3e4d10c4f17b2fe57090a524d5d78781beda204a Mon Sep 17 00:00:00 2001 From: Shahin Sorkh Date: Wed, 16 Oct 2019 19:31:15 +0330 Subject: lib: allow alias expansion in _ sudo alias (#8268) --- lib/misc.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/misc.zsh b/lib/misc.zsh index 36c3ae2e5..61571afc9 100644 --- a/lib/misc.zsh +++ b/lib/misc.zsh @@ -22,7 +22,7 @@ env_default 'PAGER' 'less' env_default 'LESS' '-R' ## super user alias -alias _='sudo' +alias _='sudo ' ## more intelligent acking for ubuntu users if which ack-grep &> /dev/null; then -- cgit v1.2.3-70-g09d2 From 7cc3a32bff9b283bf5eea139b92cbfddf3b75de5 Mon Sep 17 00:00:00 2001 From: Wang Guan Date: Thu, 31 Oct 2013 05:46:27 +0900 Subject: Add an option about git submodules to ignore $GIT_STATUS_IGNORE_SUBMODULES can be used to specify handling of submodules. It can be: not set : ignore dirty submodules (this was default zsh behavior) "git" : do not use "--ignore-submodules" and let git choose, this obeys setting in .gitmodules other : comes into "--ignore-submodules=$GIT_STATUS_IGNORE_SUBMODULES" --- lib/git.zsh | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'lib') diff --git a/lib/git.zsh b/lib/git.zsh index 640561e97..e8ef0d78d 100644 --- a/lib/git.zsh +++ b/lib/git.zsh @@ -17,6 +17,19 @@ function parse_git_dirty() { if [[ "$DISABLE_UNTRACKED_FILES_DIRTY" == "true" ]]; then FLAGS+='--untracked-files=no' fi + case "$GIT_STATUS_IGNORE_SUBMODULES" in + "") + # if unset: ignore dirty submodules + FLAGS+="--ignore-submodules=dirty" + ;; + "git") + # let git decide (this respects per-repo config in .gitmodules) + ;; + *) + # other values are passed to --ignore-submodules + FLAGS+="--ignore-submodules=$GIT_STATUS_IGNORE_SUBMODULES" + ;; + esac STATUS=$(command git status ${FLAGS} 2> /dev/null | tail -n1) fi if [[ -n $STATUS ]]; then -- cgit v1.2.3-70-g09d2 From b7e37cea90b2bc718c66f90c0f9d52d1aa49ca79 Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Wed, 6 Nov 2019 19:41:13 +0100 Subject: Clean up ignore submodules logic in parse_git_dirty --- lib/git.zsh | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'lib') diff --git a/lib/git.zsh b/lib/git.zsh index e8ef0d78d..7affdec68 100644 --- a/lib/git.zsh +++ b/lib/git.zsh @@ -18,16 +18,13 @@ function parse_git_dirty() { FLAGS+='--untracked-files=no' fi case "$GIT_STATUS_IGNORE_SUBMODULES" in - "") - # if unset: ignore dirty submodules - FLAGS+="--ignore-submodules=dirty" - ;; - "git") + git) # let git decide (this respects per-repo config in .gitmodules) ;; *) + # if unset: ignore dirty submodules # other values are passed to --ignore-submodules - FLAGS+="--ignore-submodules=$GIT_STATUS_IGNORE_SUBMODULES" + FLAGS+="--ignore-submodules=${GIT_STATUS_IGNORE_SUBMODULES:-dirty}" ;; esac STATUS=$(command git status ${FLAGS} 2> /dev/null | tail -n1) -- cgit v1.2.3-70-g09d2 From 1546e1226a7b739776bda43f264b221739ba0397 Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Wed, 6 Nov 2019 19:46:52 +0100 Subject: Fix badly resolved rebase conflict --- lib/git.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/git.zsh b/lib/git.zsh index 7affdec68..2054fe272 100644 --- a/lib/git.zsh +++ b/lib/git.zsh @@ -12,7 +12,7 @@ function git_prompt_info() { function parse_git_dirty() { local STATUS local -a FLAGS - FLAGS=('--porcelain' '--ignore-submodules=dirty') + FLAGS=('--porcelain') if [[ "$(command git config --get oh-my-zsh.hide-dirty)" != "1" ]]; then if [[ "$DISABLE_UNTRACKED_FILES_DIRTY" == "true" ]]; then FLAGS+='--untracked-files=no' -- cgit v1.2.3-70-g09d2 From 1ba0af650ac575a7d35b10146d2e7a7b3b2e2ae6 Mon Sep 17 00:00:00 2001 From: Jacob Tomaw Date: Tue, 19 Nov 2019 12:47:12 -0500 Subject: Use safer append to hook function arrays (#8406) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use add-zsh-hook to add functions to hooks. That way they won't be added again when doing `source ~/.zshrc` multiple times. Co-authored-by: Marc Cornellà --- .gitignore | 1 + lib/termsupport.zsh | 7 ++++--- plugins/alias-finder/alias-finder.plugin.zsh | 5 +++-- plugins/dirhistory/dirhistory.plugin.zsh | 3 ++- plugins/dirpersist/dirpersist.plugin.zsh | 3 ++- plugins/git-prompt/git-prompt.plugin.zsh | 7 ++++--- plugins/last-working-dir/last-working-dir.plugin.zsh | 3 ++- plugins/pipenv/pipenv.plugin.zsh | 3 ++- plugins/timer/timer.plugin.zsh | 5 +++-- plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh | 5 ++--- themes/pygmalion-virtualenv.zsh-theme | 5 ++--- themes/pygmalion.zsh-theme | 5 ++--- 12 files changed, 29 insertions(+), 23 deletions(-) (limited to 'lib') diff --git a/.gitignore b/.gitignore index 87a79cdae..251c9dc9f 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ custom/ # temp files directories cache/ log/ +*.swp diff --git a/lib/termsupport.zsh b/lib/termsupport.zsh index aa14f3f07..f5e367fcb 100644 --- a/lib/termsupport.zsh +++ b/lib/termsupport.zsh @@ -75,8 +75,9 @@ function omz_termsupport_preexec { title '$CMD' '%100>...>$LINE%<<' } -precmd_functions+=(omz_termsupport_precmd) -preexec_functions+=(omz_termsupport_preexec) +autoload -U add-zsh-hook +add-zsh-hook precmd omz_termsupport_precmd +add-zsh-hook preexec omz_termsupport_preexec # Keep Apple Terminal.app's current working directory updated @@ -99,7 +100,7 @@ if [[ "$TERM_PROGRAM" == "Apple_Terminal" ]] && [[ -z "$INSIDE_EMACS" ]]; then } # Use a precmd hook instead of a chpwd hook to avoid contaminating output - precmd_functions+=(update_terminalapp_cwd) + add-zsh-hook precmd update_terminalapp_cwd # Run once to get initial cwd set update_terminalapp_cwd fi diff --git a/plugins/alias-finder/alias-finder.plugin.zsh b/plugins/alias-finder/alias-finder.plugin.zsh index 6b8fa66ce..caee9b5a3 100644 --- a/plugins/alias-finder/alias-finder.plugin.zsh +++ b/plugins/alias-finder/alias-finder.plugin.zsh @@ -4,7 +4,7 @@ alias-finder() { case $i in -e|--exact) exact=true;; -l|--longer) longer=true;; - *) + *) if [[ -z $cmd ]]; then cmd=$i else @@ -43,4 +43,5 @@ preexec_alias-finder() { fi } -preexec_functions+=(preexec_alias-finder) +autoload -U add-zsh-hook +add-zsh-hook preexec preexec_alias-finder diff --git a/plugins/dirhistory/dirhistory.plugin.zsh b/plugins/dirhistory/dirhistory.plugin.zsh index 239915e48..35c43d76a 100644 --- a/plugins/dirhistory/dirhistory.plugin.zsh +++ b/plugins/dirhistory/dirhistory.plugin.zsh @@ -53,7 +53,8 @@ function push_future() { } # Called by zsh when directory changes -chpwd_functions+=(chpwd_dirhistory) +autoload -U add-zsh-hook +add-zsh-hook chpwd chpwd_dirhistory function chpwd_dirhistory() { push_past $PWD # If DIRHISTORY_CD is not set... diff --git a/plugins/dirpersist/dirpersist.plugin.zsh b/plugins/dirpersist/dirpersist.plugin.zsh index 616e2c3c6..daadc3850 100644 --- a/plugins/dirpersist/dirpersist.plugin.zsh +++ b/plugins/dirpersist/dirpersist.plugin.zsh @@ -11,7 +11,8 @@ if [[ -f ${dirstack_file} ]] && [[ ${#dirstack[*]} -eq 0 ]] ; then [[ -d $dirstack[1] ]] && cd $dirstack[1] && cd $OLDPWD fi -chpwd_functions+=(chpwd_dirpersist) +autoload -U add-zsh-hook +add-zsh-hook chpwd chpwd_dirpersist chpwd_dirpersist() { if (( $DIRSTACKSIZE <= 0 )) || [[ -z $dirstack_file ]]; then return; fi local -ax my_stack diff --git a/plugins/git-prompt/git-prompt.plugin.zsh b/plugins/git-prompt/git-prompt.plugin.zsh index 76ac2e62b..da674af98 100644 --- a/plugins/git-prompt/git-prompt.plugin.zsh +++ b/plugins/git-prompt/git-prompt.plugin.zsh @@ -20,9 +20,10 @@ function precmd_update_git_vars() { fi } -chpwd_functions+=(chpwd_update_git_vars) -precmd_functions+=(precmd_update_git_vars) -preexec_functions+=(preexec_update_git_vars) +autoload -U add-zsh-hook +add-zsh-hook chpwd chpwd_update_git_vars +add-zsh-hook precmd precmd_update_git_vars +add-zsh-hook preexec preexec_update_git_vars ## Function definitions diff --git a/plugins/last-working-dir/last-working-dir.plugin.zsh b/plugins/last-working-dir/last-working-dir.plugin.zsh index 53bb19e46..fd21705ae 100644 --- a/plugins/last-working-dir/last-working-dir.plugin.zsh +++ b/plugins/last-working-dir/last-working-dir.plugin.zsh @@ -2,7 +2,8 @@ typeset -g ZSH_LAST_WORKING_DIRECTORY # Updates the last directory once directory is changed -chpwd_functions+=(chpwd_last_working_dir) +autoload -U add-zsh-hook +add-zsh-hook chpwd chpwd_last_working_dir chpwd_last_working_dir() { if [ "$ZSH_SUBSHELL" = 0 ]; then local cache_file="$ZSH_CACHE_DIR/last-working-dir" diff --git a/plugins/pipenv/pipenv.plugin.zsh b/plugins/pipenv/pipenv.plugin.zsh index 0a5dc56a4..ec41c3e02 100644 --- a/plugins/pipenv/pipenv.plugin.zsh +++ b/plugins/pipenv/pipenv.plugin.zsh @@ -23,7 +23,8 @@ _togglePipenvShell() { fi fi } -chpwd_functions+=(_togglePipenvShell) +autoload -U add-zsh-hook +add-zsh-hook chpwd _togglePipenvShell # Aliases alias pch="pipenv check" diff --git a/plugins/timer/timer.plugin.zsh b/plugins/timer/timer.plugin.zsh index 231134e7d..728377c5c 100644 --- a/plugins/timer/timer.plugin.zsh +++ b/plugins/timer/timer.plugin.zsh @@ -25,5 +25,6 @@ __timer_display_timer_precmd() { fi } -preexec_functions+=(__timer_save_time_preexec) -precmd_functions+=(__timer_display_timer_precmd) +autoload -U add-zsh-hook +add-zsh-hook preexec __timer_save_time_preexec +add-zsh-hook precmd __timer_display_timer_precmd diff --git a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh index e27c6bb76..2a4b43189 100644 --- a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh +++ b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh @@ -96,7 +96,6 @@ if [[ ! $DISABLE_VENV_CD -eq 1 ]]; then # Append workon_cwd to the chpwd_functions array, so it will be called on cd # http://zsh.sourceforge.net/Doc/Release/Functions.html - if ! (( $chpwd_functions[(I)workon_cwd] )); then - chpwd_functions+=(workon_cwd) - fi + autoload -U add-zsh-hook + add-zsh-hook chpwd workon_cwd fi diff --git a/themes/pygmalion-virtualenv.zsh-theme b/themes/pygmalion-virtualenv.zsh-theme index ea28e125a..605e3d10c 100644 --- a/themes/pygmalion-virtualenv.zsh-theme +++ b/themes/pygmalion-virtualenv.zsh-theme @@ -28,7 +28,8 @@ prompt_setup_pygmalion(){ base_prompt_nocolor=$(echo "$base_prompt" | perl -pe "s/%\{[^}]+\}//g") post_prompt_nocolor=$(echo "$post_prompt" | perl -pe "s/%\{[^}]+\}//g") - precmd_functions+=(prompt_pygmalion_precmd) + autoload -U add-zsh-hook + add-zsh-hook precmd prompt_pygmalion_precmd } prompt_pygmalion_precmd(){ @@ -46,5 +47,3 @@ prompt_pygmalion_precmd(){ } prompt_setup_pygmalion - - diff --git a/themes/pygmalion.zsh-theme b/themes/pygmalion.zsh-theme index 5f5fe7f9a..cd773e4a4 100644 --- a/themes/pygmalion.zsh-theme +++ b/themes/pygmalion.zsh-theme @@ -12,7 +12,8 @@ prompt_setup_pygmalion(){ base_prompt_nocolor=$(echo "$base_prompt" | perl -pe "s/%\{[^}]+\}//g") post_prompt_nocolor=$(echo "$post_prompt" | perl -pe "s/%\{[^}]+\}//g") - precmd_functions+=(prompt_pygmalion_precmd) + autoload -U add-zsh-hook + add-zsh-hook precmd prompt_pygmalion_precmd } prompt_pygmalion_precmd(){ @@ -30,5 +31,3 @@ prompt_pygmalion_precmd(){ } prompt_setup_pygmalion - - -- cgit v1.2.3-70-g09d2 From 56297902e9d0f7a14f6d4d88b24eaea7392f3c32 Mon Sep 17 00:00:00 2001 From: Andras Svraka Date: Thu, 16 Jan 2020 18:19:56 +0100 Subject: lib: add MSYS2 support to clipboard integration (#8542) --- lib/clipboard.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/clipboard.zsh b/lib/clipboard.zsh index 2c93d1bb5..5bba11d16 100644 --- a/lib/clipboard.zsh +++ b/lib/clipboard.zsh @@ -24,7 +24,7 @@ function clipcopy() { else cat $file | pbcopy fi - elif [[ $OSTYPE == cygwin* ]]; then + elif [[ $OSTYPE == (cygwin|msys)* ]]; then if [[ -z $file ]]; then cat > /dev/clipboard else @@ -71,7 +71,7 @@ function clippaste() { emulate -L zsh if [[ $OSTYPE == darwin* ]]; then pbpaste - elif [[ $OSTYPE == cygwin* ]]; then + elif [[ $OSTYPE == (cygwin|msys)* ]]; then cat /dev/clipboard else if (( $+commands[xclip] )); then -- cgit v1.2.3-70-g09d2 From 1c300d3a76a786a83e8a70b7a399db94c8bcf5b7 Mon Sep 17 00:00:00 2001 From: Evan Chiu Date: Sun, 10 Apr 2016 17:32:37 -0700 Subject: lib: add git function to determine repository name (#4989) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #4989 Co-authored-by: Marc Cornellà --- lib/git.zsh | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'lib') diff --git a/lib/git.zsh b/lib/git.zsh index 2054fe272..00cb00b19 100644 --- a/lib/git.zsh +++ b/lib/git.zsh @@ -199,3 +199,12 @@ function git_current_user_name() { function git_current_user_email() { command git config user.email 2>/dev/null } + +# Output the name of the root directory of the git repository +# Usage example: $(git_repo_name) +function git_repo_name() { + local repo_path + if repo_path="$(git rev-parse --show-toplevel 2>/dev/null)" && [[ -n "$repo_path" ]]; then + echo ${repo_path:t} + fi +} -- cgit v1.2.3-70-g09d2 From 17428f3c9a99c8d81e57bcf565d39011669e65ed Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Tue, 11 Feb 2020 20:16:43 +0100 Subject: lib: load bash completion functions automatically Fixes #8614 --- lib/completion.zsh | 3 +++ 1 file changed, 3 insertions(+) (limited to 'lib') diff --git a/lib/completion.zsh b/lib/completion.zsh index c7db2eb7b..c932bc925 100644 --- a/lib/completion.zsh +++ b/lib/completion.zsh @@ -71,3 +71,6 @@ if [[ $COMPLETION_WAITING_DOTS = true ]]; then zle -N expand-or-complete-with-dots bindkey "^I" expand-or-complete-with-dots fi + +# automatically load bash completion functions +autoload -Uz bashcompinit && bashcompinit -- cgit v1.2.3-70-g09d2 From 40b013f5f119be27bd2fdece431cf4979193bd25 Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Mon, 24 Feb 2020 20:25:27 +0100 Subject: lib: delete upgrade lock in upgrade_oh_my_zsh Provides a different solution to #8332 and #8333 --- lib/functions.zsh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/functions.zsh b/lib/functions.zsh index 61dfa4780..91e9cf895 100644 --- a/lib/functions.zsh +++ b/lib/functions.zsh @@ -3,11 +3,12 @@ function zsh_stats() { } function uninstall_oh_my_zsh() { - env ZSH=$ZSH sh $ZSH/tools/uninstall.sh + env ZSH="$ZSH" sh "$ZSH/tools/uninstall.sh" } function upgrade_oh_my_zsh() { - env ZSH=$ZSH sh $ZSH/tools/upgrade.sh + env ZSH="$ZSH" sh "$ZSH/tools/upgrade.sh" + rm -rf "$ZSH/log/update.lock" } function take() { -- cgit v1.2.3-70-g09d2