X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;ds=sidebyside;f=.shellrc;h=5975ab3a7f4ab27cd2002f40839f4bc7d4d12c77;hb=20515fecab4ad47200eff26038c6cef8e2cef271;hp=860ba44f609fc9d1543e7a94b4eaa9e9f7299291;hpb=8f5cace7e5228c97c0b8f9a2372390f13c5984ac;p=dotfiles.git diff --git a/.shellrc b/.shellrc index 860ba44..5975ab3 100644 --- a/.shellrc +++ b/.shellrc @@ -57,8 +57,7 @@ OPS1="$OPS1\\$" PS1="$OPS1 " -case "$SHELL" in -*/bash) +if test -n "$BASH_VERSION"; then [ "`type -t ls`" = alias ] && unalias ls [ "`type -t ll`" = alias ] && unalias ll [ "`type -t mc`" = alias ] && unalias mc @@ -126,18 +125,15 @@ case "$SHELL" in eval "`pip completion --bash`" rm -rf /tmp/pip_build_"$USER" fi - ;; -*/ksh) +elif test -n "$KSH_VERSION" -o -n "$FCEDIT"; then back() { cd - ${1:+"$@"}; } clo() { clear; exit; } j() { jobs; } - ;; -*/sh) +else clo() { clear; exit; } - ;; -esac +fi # clear history, clear screen and logout @@ -164,8 +160,51 @@ KillAll() { } -include() -{ +# git-related + +# chdir to a remote's directory (if the remote is on the local FS) +cdremote() { + cd "`git config --get remote.$1.url`" +} + +if test -n "$BASH_VERSION"; then + # list remotes with URLs matching a regexp + list_remotes() { + GIT_REMOTES="" + for remote in `git remote`; do + if git config --get remote.$remote.url | grep -q "$1"; then + GIT_REMOTES="$GIT_REMOTES $remote" + fi + done + remote="" + unset remote + } + + # completion for cdremote - list remotes with directories as URLs + _cdremote_complete() { + local cur="${COMP_WORDS[COMP_CWORD]}"; + list_remotes '^\(/\|\.\./\)' # (/ or ../ at the beginning) + COMPREPLY=(`compgen -W "$GIT_REMOTES" -- "$cur"`) + GIT_REMOTES="" + unset GIT_REMOTES + } + + complete -F _cdremote_complete cdremote + + # completion for git-open - list remotes with http(s) URLs + _git_open() { + local cur="${COMP_WORDS[COMP_CWORD]}"; + list_remotes '^http\(s\)\?://' + COMPREPLY=(`compgen -W "$GIT_REMOTES" -- "$cur"`) + GIT_REMOTES="" + unset GIT_REMOTES + } + + complete -F _git_open git-open +fi + + +include() { cfg="$1" if [ -f "./$cfg" -a -r "./$cfg" ]; then echo "Reading config file \`$cfg'" 1>&2 @@ -180,12 +219,10 @@ include() mc() { - case "$SHELL" in - */bash) - MC_SAVE_OPS1="$OPS1" - OPS1="\u@\h " - ;; - esac + if test -n "$BASH_VERSION"; then + MC_SAVE_OPS1="$OPS1" + OPS1="\u@\h " + fi if [ -n "$SLOWTERM" ]; then MC_SLOW="--slow"