From 70c9501550b5e6707e64775ff3d9aa6bc3925455 Mon Sep 17 00:00:00 2001 From: Matthew Rothenberg Date: Thu, 2 Oct 2014 20:42:43 -0400 Subject: [PATCH] fix ability to undefine default aliases in zsh The ability to not define default aliases in the `.git.scmbrc` file leading to not having those aliases not present worked fine in bash. However, this seems to still have thrown an error in zsh. For example, if you commented out the line: git_checkout_alias="gco" then when sourcing scm_breeze aliases.sh would throw an error. This applied only to aliases defined with the `_alias()` function and not those with the `_git_alias()` function. To fix this, I wrapped `_alias()` in a similar check to the one `_git_alias()` has, where it passes the portions as arguments and verifies the first is present before proceeding. I'm not 100% certain why seperate functions exist for these two things to begin with (as far as I can tell from a cursory examination the main difference is `_git_aliases()` defines a tab completion?) but I believe my change has fixed the ability to comment out aliases in `.git.scmbrc` in zsh for users who do not want them (I'm in this boat, there are too many for me and I get confused). I tested manually in both bash and zsh and it appears to work, however you might want to review this before merging given my relative unfamiliarity with the codebase. --- lib/git/aliases.sh | 34 +++++++++++++++++----------------- lib/scm_breeze.sh | 8 +++++++- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/lib/git/aliases.sh b/lib/git/aliases.sh index 6003a48..eda83bf 100644 --- a/lib/git/aliases.sh +++ b/lib/git/aliases.sh @@ -37,7 +37,7 @@ function git(){ esac } -_alias $git_alias='git' +_alias "$git_alias" "git" # -------------------------------------------------------------------- @@ -75,14 +75,14 @@ __git_alias () { # -------------------------------------------------------------------- # SCM Breeze functions -_alias $git_status_shortcuts_alias="git_status_shortcuts" -_alias $git_add_shortcuts_alias="git_add_shortcuts" -_alias $exec_scmb_expand_args_alias="exec_scmb_expand_args" -_alias $git_show_files_alias="git_show_affected_files" -_alias $git_commit_all_alias='git_commit_all' +_alias "$git_status_shortcuts_alias" "git_status_shortcuts" +_alias "$git_add_shortcuts_alias" "git_add_shortcuts" +_alias "$exec_scmb_expand_args_alias" "exec_scmb_expand_args" +_alias "$git_show_files_alias" "git_show_affected_files" +_alias "$git_commit_all_alias" "git_commit_all" # Git Index alias -_alias $git_index_alias="git_index" +_alias "$git_index_alias" "git_index" # Only set up the following aliases if 'git_setup_aliases' is 'yes' if [ "$git_setup_aliases" = "yes" ]; then @@ -139,16 +139,17 @@ if [ "$git_setup_aliases" = "yes" ]; then # Compound/complex commands - _alias $git_fetch_all_alias="git fetch --all" - _alias $git_pull_then_push_alias="git pull && git push" - _alias $git_fetch_and_rebase_alias='git fetch && git rebase' - _alias $git_commit_amend_alias='git commit --amend' + _alias "$git_fetch_all_alias" "git fetch --all" + _alias "$git_pull_then_push_alias" "git pull && git push" + _alias "$git_fetch_and_rebase_alias" "git fetch && git rebase" + _alias "$git_commit_amend_alias" "git commit --amend" + # Add staged changes to latest commit without prompting for message - _alias $git_commit_amend_no_msg_alias='git commit --amend -C HEAD' - _alias $git_commit_no_msg_alias='git commit -C HEAD' - _alias $git_log_stat_alias='git log --stat --max-count=5' - _alias $git_log_graph_alias='git log --graph --max-count=5' - _alias $git_add_all_alias='git add --all .' + _alias "$git_commit_amend_no_msg_alias" "git commit --amend -C HEAD" + _alias "$git_commit_no_msg_alias" "git commit -C HEAD" + _alias "$git_log_stat_alias" "git log --stat --max-count=5" + _alias "$git_log_graph_alias" "git log --graph --max-count=5" + _alias "$git_add_all_alias" "git add --all ." fi @@ -168,4 +169,3 @@ if [ $shell = "bash" ]; then else compdef _git_index_tab_completion git_index $git_index_alias fi - diff --git a/lib/scm_breeze.sh b/lib/scm_breeze.sh index 59e4548..2c692bb 100644 --- a/lib/scm_breeze.sh +++ b/lib/scm_breeze.sh @@ -10,7 +10,13 @@ enable_nullglob() { if [ $shell = "zsh" ]; then setopt NULL_GLOB; else shopt disable_nullglob() { if [ $shell = "zsh" ]; then unsetopt NULL_GLOB; else shopt -u nullglob; fi; } # Alias wrapper that ignores errors if alias is not defined. -_alias(){ alias "$@" 2> /dev/null; } +_safe_alias(){ alias "$@" 2> /dev/null; } +_alias() { + if [ -n "$1" ]; then + local alias_str="$1"; local cmd="$2" + _safe_alias $alias_str="$cmd" + fi +} find_binary(){ if [ $shell = "zsh" ]; then