From 036c26dbed157b210d303efb6c187693f4361ea4 Mon Sep 17 00:00:00 2001 From: John McBride Date: Mon, 3 Feb 2020 11:43:24 -0700 Subject: [PATCH] Update jump plugin - remove z plugin - remove fasd plugin - update test that referenced fsad Signed-off-by: John McBride --- lib/search.bash | 4 +- plugins/available/fasd.plugin.bash | 34 ------- plugins/available/jump.plugin.bash | 4 +- plugins/available/z.plugin.bash | 153 ----------------------------- test/lib/search.bats | 2 +- 5 files changed, 5 insertions(+), 192 deletions(-) delete mode 100755 plugins/available/fasd.plugin.bash delete mode 100644 plugins/available/z.plugin.bash diff --git a/lib/search.bash b/lib/search.bash index 1c487a3e..58f98904 100755 --- a/lib/search.bash +++ b/lib/search.bash @@ -134,14 +134,14 @@ ${echo_underline_yellow}EXAMPLES${echo_normal} ${echo_bold_green}❯ bash-it search git${echo_bold_blue} ${echo_bold_yellow}aliases: ${echo_bold_green}git ${echo_normal}gitsvn - ${echo_bold_yellow}plugins: ${echo_normal}autojump fasd ${echo_bold_green}git ${echo_normal}git-subrepo jgitflow jump + ${echo_bold_yellow}plugins: ${echo_normal}autojump ${echo_bold_green}git ${echo_normal}git-subrepo jgitflow jump ${echo_bold_yellow}completions: ${echo_bold_green}git ${echo_normal}git_flow git_flow_avh${echo_normal} You can exclude some terms by prefixing a term with a minus, eg: ${echo_bold_green}❯ bash-it search git -flow -svn${echo_bold_blue} ${echo_bold_yellow}aliases: ${echo_normal}git - ${echo_bold_yellow}plugins: ${echo_normal}autojump fasd git git-subrepo jump + ${echo_bold_yellow}plugins: ${echo_normal}autojump git git-subrepo jump ${echo_bold_yellow}completions: ${echo_normal}git${echo_normal} Finally, if you prefix a term with '@' symbol, that indicates an exact diff --git a/plugins/available/fasd.plugin.bash b/plugins/available/fasd.plugin.bash deleted file mode 100755 index 13421767..00000000 --- a/plugins/available/fasd.plugin.bash +++ /dev/null @@ -1,34 +0,0 @@ -cite about-plugin -about-plugin 'initialize fasd (see https://github.com/clvv/fasd)' - -__init_fasd() { - command -v fasd &> /dev/null - if [ $? -eq 1 ]; then - echo -e "You must install fasd before you can use this plugin" - echo -e "See: https://github.com/clvv/fasd" - else - eval "$(fasd --init posix-alias)" - - # Note, this is a custom bash-hook to ensure that the last exit status - # is maintained even while this hook is in place. This code can be - # removed once PR #72 is merged into fasd. - # - # See: https://github.com/clvv/fasd/pull/72 - _fasd_prompt_func() { - local _exit_code="$?" - eval "fasd --proc $(fasd --sanitize $(history 1 | \ - sed "s/^[ ]*[0-9]*[ ]*//"))" >> "/dev/null" 2>&1 - return $_exit_code - } - - # add bash hook - case $PROMPT_COMMAND in - *_fasd_prompt_func*) ;; - "") PROMPT_COMMAND="_fasd_prompt_func";; - *) PROMPT_COMMAND="_fasd_prompt_func;$PROMPT_COMMAND";; - esac - eval "$(fasd --init bash-ccomp bash-ccomp-install)" - fi -} - -__init_fasd diff --git a/plugins/available/jump.plugin.bash b/plugins/available/jump.plugin.bash index bc6f85e1..3c1f20a6 100755 --- a/plugins/available/jump.plugin.bash +++ b/plugins/available/jump.plugin.bash @@ -1,9 +1,9 @@ cite about-plugin -about-plugin 'initialize jump (see https://github.com/gsamokovarov/jump)' +about-plugin 'initialize jump (see https://github.com/gsamokovarov/jump). Add `export JUMP_OPTS="bind=z"` to change keybinding' __init_jump() { command -v jump &> /dev/null || return - eval "$(jump shell --bind=z)" + eval "$(jump shell bash ${JUMP_OPTS[@]})" } __init_jump diff --git a/plugins/available/z.plugin.bash b/plugins/available/z.plugin.bash deleted file mode 100644 index 7cfb7932..00000000 --- a/plugins/available/z.plugin.bash +++ /dev/null @@ -1,153 +0,0 @@ -cite about-plugin -about-plugin 'maintains a jump-list of the directories you actually use' -about-plugin ' z is DEPRECATED, use fasd instead' - -# INSTALL: -# * put something like this in your .bashrc: -# . /path/to/z.sh -# * cd around for a while to build up the db -# * PROFIT!! -# -# USE: -# * z foo # goes to most frecent dir matching foo -# * z foo bar # goes to most frecent dir matching foo and bar -# * z -r foo # goes to highest ranked dir matching foo -# * z -t foo # goes to most recently accessed dir matching foo -# * z -l foo # list all dirs matching foo (by frecency) - -if [ -e "${BASH_IT}/plugins/enabled/fasd.plugin.bash" ] || [ -e "${BASH_IT}/plugins/enabled/*${BASH_IT_LOAD_PRIORITY_SEPARATOR}fasd.plugin.bash" ]; then - printf '%s\n' 'sorry, the z plugin is incompatible with the fasd plugin. you may use either, but not both.' - return -fi - -z() { - local datafile="$HOME/.z" - if [ "$1" = "--add" ]; then - # add - shift - # $HOME isn't worth matching - [ "$*" = "$HOME" ] && return - awk -v p="$*" -v t="$(date +%s)" -F"|" ' - BEGIN { rank[p] = 1; time[p] = t } - $2 >= 1 { - if( $1 == p ) { - rank[$1] = $2 + 1 - time[$1] = t - } else { - rank[$1] = $2 - time[$1] = $3 - } - count += $2 - } - END { - if( count > 1000 ) { - for( i in rank ) print i "|" 0.9*rank[i] "|" time[i] # aging - } else for( i in rank ) print i "|" rank[i] "|" time[i] - } - ' "$datafile" 2>/dev/null > "$datafile.tmp" - mv -f "$datafile.tmp" "$datafile" - elif [ "$1" = "--complete" ]; then - # tab completion - awk -v q="$2" -F"|" ' - BEGIN { - if( q == tolower(q) ) nocase = 1 - split(substr(q,3),fnd," ") - } - { - if( system("test -d \"" $1 "\"") ) next - if( nocase ) { - for( i in fnd ) tolower($1) !~ tolower(fnd[i]) && $1 = "" - if( $1 ) print $1 - } else { - for( i in fnd ) $1 !~ fnd[i] && $1 = "" - if( $1 ) print $1 - } - } - ' "$datafile" 2>/dev/null - else - # list/go - while [ "$1" ]; do case "$1" in - -h) echo "z [-h][-l][-r][-t] args" >&2; return;; - -l) local list=1;; - -r) local typ="rank";; - -t) local typ="recent";; - --) while [ "$1" ]; do shift; local fnd="$fnd $1";done;; - *) local fnd="$fnd $1";; - esac; local last=$1; shift; done - [ "$fnd" ] || local list=1 - # if we hit enter on a completion just go there - [ -d "$last" ] && cd "$last" && return - [ -f "$datafile" ] || return - local cd="$(awk -v t="$(date +%s)" -v list="$list" -v typ="$typ" -v q="$fnd" -v tmpfl="$datafile.tmp" -F"|" ' - function frecent(rank, time) { - dx = t-time - if( dx < 3600 ) return rank*4 - if( dx < 86400 ) return rank*2 - if( dx < 604800 ) return rank/2 - return rank/4 - } - function output(files, toopen, override) { - if( list ) { - if( typ == "recent" ) { - cmd = "sort -nr >&2" - } else cmd = "sort -n >&2" - for( i in files ) if( files[i] ) printf "%-10s %s\n", files[i], i | cmd - if( override ) printf "%-10s %s\n", "common:", override > "/dev/stderr" - } else { - if( override ) toopen = override - print toopen - } - } - function common(matches, fnd, nc) { - for( i in matches ) { - if( matches[i] && (!short || length(i) < length(short)) ) short = i - } - if( short == "/" ) return - for( i in matches ) if( matches[i] && i !~ short ) x = 1 - if( x ) return - if( nc ) { - for( i in fnd ) if( tolower(short) !~ tolower(fnd[i]) ) x = 1 - } else for( i in fnd ) if( short !~ fnd[i] ) x = 1 - if( !x ) return short - } - BEGIN { split(q, a, " ") } - { - if( system("test -d \"" $1 "\"") ) next - print $0 >> tmpfl - if( typ == "rank" ) { - f = $2 - } else if( typ == "recent" ) { - f = t-$3 - } else f = frecent($2, $3) - wcase[$1] = nocase[$1] = f - for( i in a ) { - if( $1 !~ a[i] ) delete wcase[$1] - if( tolower($1) !~ tolower(a[i]) ) delete nocase[$1] - } - if( wcase[$1] > oldf ) { - cx = $1 - oldf = wcase[$1] - } else if( nocase[$1] > noldf ) { - ncx = $1 - noldf = nocase[$1] - } - } - END { - if( cx ) { - output(wcase, cx, common(wcase, a, 0)) - } else if( ncx ) output(nocase, ncx, common(nocase, a, 1)) - } - ' "$datafile")" - if [ $? -gt 0 ]; then - rm -f "$datafile.tmp" - else - mv -f "$datafile.tmp" "$datafile" - [ "$cd" ] && cd "$cd" - fi - fi -} -# tab completion -complete -C 'z --complete "$COMP_LINE"' z -# populate directory list. avoid clobbering other PROMPT_COMMANDs. -echo $PROMPT_COMMAND | grep -q "z --add" -[ $? -gt 0 ] && PROMPT_COMMAND='z --add "$(pwd -P)";'"$PROMPT_COMMAND" diff --git a/test/lib/search.bats b/test/lib/search.bats index 56cda073..5bbc8207 100644 --- a/test/lib/search.bats +++ b/test/lib/search.bats @@ -53,7 +53,7 @@ function local_teardown { @test "search: git" { run _bash-it-search 'git' --no-color assert_line -n 0 ' aliases: git gitsvn ' - assert_line -n 1 ' plugins: autojump fasd git git-subrepo jgitflow jump ' + assert_line -n 1 ' plugins: autojump git git-subrepo jgitflow jump ' assert_line -n 2 ' completions: git git_flow git_flow_avh ' }