diff --git a/plugins/available/dirs.plugin.bash b/plugins/available/dirs.plugin.bash index 2c1adf7a..05cf147c 100644 --- a/plugins/available/dirs.plugin.bash +++ b/plugins/available/dirs.plugin.bash @@ -58,16 +58,23 @@ function dirs-help() { # Add bookmarking functionality # Usage: -if [ ! -f ~/.dirs ]; then # if doesn't exist, create it - touch ~/.dirs +: "${BASH_IT_DIRS_BKS:=${XDG_STATE_HOME:-~/.local/state}/Bash_it/dirs}" +if [[ -f "${BASH_IT_DIRS_BKS:=${XDG_STATE_HOME:-~/.local/state}/Bash_it/dirs}" ]] +then + source "$BASH_IT_DIRS_BKS" +elif [[ -f ~/.dirs ]] +then + mv -vn ~/.dirs "$BASH_IT_DIRS_BKS" + source "$BASH_IT_DIRS_BKS" else - source ~/.dirs + touch "$BASH_IT_DIRS_BKS" fi -alias L='cat ~/.dirs' +alias L='cat "$BASH_IT_DIRS_BKS"' # Goes to destination dir, otherwise stay in the dir -G () { +function G() +{ about 'goes to destination dir' param '1: directory' example '$ G ..' @@ -76,7 +83,8 @@ G () { cd "${1:-${PWD}}" ; } -S () { +function S () +{ about 'save a bookmark' param '1: bookmark name' example '$ S mybkmrk' @@ -84,13 +92,14 @@ S () { [[ $# -eq 1 ]] || { echo "${FUNCNAME[0]} function requires 1 argument"; return 1; } - sed "/$@/d" ~/.dirs > ~/.dirs1; - \mv ~/.dirs1 ~/.dirs; - echo "$@"=\""${PWD}"\" >> ~/.dirs; - source ~/.dirs ; + sed "/$@/d" "$BASH_IT_DIRS_BKS" > ~/.dirs1; + \mv ~/.dirs1 "$BASH_IT_DIRS_BKS"; + echo "$@"=\""${PWD}"\" >> "$BASH_IT_DIRS_BKS"; + source "$BASH_IT_DIRS_BKS" ; } -R () { +function R() +{ about 'remove a bookmark' param '1: bookmark name' example '$ R mybkmrk' @@ -98,10 +107,10 @@ R () { [[ $# -eq 1 ]] || { echo "${FUNCNAME[0]} function requires 1 argument"; return 1; } - sed "/$@/d" ~/.dirs > ~/.dirs1; - \mv ~/.dirs1 ~/.dirs; + sed "/$@/d" "$BASH_IT_DIRS_BKS" > ~/.dirs1; + \mv ~/.dirs1 "$BASH_IT_DIRS_BKS"; } -alias U='source ~/.dirs' # Update bookmark stack +alias U='source "$BASH_IT_DIRS_BKS"' # Update bookmark stack # Set the Bash option so that no '$' is required when using the above facility shopt -s cdable_vars