From 036c26dbed157b210d303efb6c187693f4361ea4 Mon Sep 17 00:00:00 2001 From: John McBride Date: Mon, 3 Feb 2020 11:43:24 -0700 Subject: [PATCH 1/6] 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 ' } From b4b4ccfe31b1404123ab19b1eba18740b8e9b207 Mon Sep 17 00:00:00 2001 From: John McBride Date: Mon, 3 Feb 2020 12:52:47 -0700 Subject: [PATCH 2/6] Correct bind option Signed-off-by: John McBride --- plugins/available/jump.plugin.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/available/jump.plugin.bash b/plugins/available/jump.plugin.bash index 3c1f20a6..74ce232f 100755 --- a/plugins/available/jump.plugin.bash +++ b/plugins/available/jump.plugin.bash @@ -1,5 +1,5 @@ cite about-plugin -about-plugin 'initialize jump (see https://github.com/gsamokovarov/jump). Add `export JUMP_OPTS="bind=z"` to change keybinding' +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 From 6cd634dd85e1d4de22d6a96cc782d2917dc57c4d Mon Sep 17 00:00:00 2001 From: John McBride Date: Mon, 3 Feb 2020 15:32:27 -0700 Subject: [PATCH 3/6] Initilize as array in example Signed-off-by: John McBride --- plugins/available/jump.plugin.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/available/jump.plugin.bash b/plugins/available/jump.plugin.bash index 74ce232f..f2b34684 100755 --- a/plugins/available/jump.plugin.bash +++ b/plugins/available/jump.plugin.bash @@ -1,5 +1,5 @@ cite about-plugin -about-plugin 'initialize jump (see https://github.com/gsamokovarov/jump). Add `export JUMP_OPTS="--bind=z"` to change keybinding' +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 From 3f293c253f18d61b2438e76a5ced323089130f74 Mon Sep 17 00:00:00 2001 From: John McBride Date: Mon, 3 Feb 2020 15:37:54 -0700 Subject: [PATCH 4/6] Safe array expansion Signed-off-by: John McBride --- plugins/available/jump.plugin.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/available/jump.plugin.bash b/plugins/available/jump.plugin.bash index f2b34684..26d6467d 100755 --- a/plugins/available/jump.plugin.bash +++ b/plugins/available/jump.plugin.bash @@ -3,7 +3,7 @@ about-plugin 'initialize jump (see https://github.com/gsamokovarov/jump). Add `e __init_jump() { command -v jump &> /dev/null || return - eval "$(jump shell bash ${JUMP_OPTS[@]})" + eval "$(jump shell bash "${JUMP_OPTS[@]}")" } __init_jump From b442267d2d353f9761316141e38ac80d92e8018f Mon Sep 17 00:00:00 2001 From: John McBride Date: Wed, 5 Feb 2020 15:15:13 -0700 Subject: [PATCH 5/6] Remove vf funcion as fasd unsupported Signed-off-by: John McBride --- plugins/available/fzf.plugin.bash | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/plugins/available/fzf.plugin.bash b/plugins/available/fzf.plugin.bash index def60825..4c672bbc 100644 --- a/plugins/available/fzf.plugin.bash +++ b/plugins/available/fzf.plugin.bash @@ -37,13 +37,3 @@ fcd() { -o -type d -print 2> /dev/null | fzf +m) && cd "$dir" } - -vf() { - about "Use fasd to search the file to open in vim" - group "fzf" - param "1: Search term for fasd" - example "vf xml" - - local file - file="$(fasd -Rfl "$1" | fzf -1 -0 --no-sort +m)" && vi "${file}" || return 1 -} From a76a9ee437b09b8fe7c47d0288518191ae42952f Mon Sep 17 00:00:00 2001 From: John McBride Date: Fri, 14 Feb 2020 14:03:54 -0700 Subject: [PATCH 6/6] Remove fasd zz function from percol plugin Signed-off-by: John McBride --- plugins/available/percol.plugin.bash | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/plugins/available/percol.plugin.bash b/plugins/available/percol.plugin.bash index 66610662..c1fc807c 100644 --- a/plugins/available/percol.plugin.bash +++ b/plugins/available/percol.plugin.bash @@ -1,5 +1,5 @@ cite about-plugin -about-plugin 'Search&Select history and fasd with percol' +about-plugin 'Search&Select history with percol' # Notice ## You have to upgrade bash to bash 4.x on Mac OS X. @@ -8,11 +8,9 @@ about-plugin 'Search&Select history and fasd with percol' # Install ## (sudo) pip install percol ## bash-it enable percol -## optional: bash-it enable fasd # Usage ## C-r to search&select from history -## zz to search&select from fasd _replace_by_history() { if command -v tac>/dev/null; then @@ -33,17 +31,5 @@ if command -v percol>/dev/null; then echo -e "\033[91m Your current Bash version is $BASH_VERSION.\033[m" else bind -x '"\C-r": _replace_by_history' - - # bind zz to percol if fasd enable - if [[ $(type -t zz) == 'alias' ]]; then - unalias zz - fi - - if command -v fasd>/dev/null; then - function zz() { - local l=$(fasd -d | awk '{print $2}' | percol) - cd $l - } - fi fi fi