plugins/bashmarks: Refactor function names and variable names

This commit is contained in:
Koichi Murase
2023-10-12 15:54:14 +09:00
parent 1eacdc7118
commit f161382de7

View File

@@ -45,11 +45,29 @@
# bm -d [TAB] - tab completion is available # bm -d [TAB] - tab completion is available
# bm -l - list all bookmarks # bm -l - list all bookmarks
# setup file to store bookmarks # Default configurations
if [[ ! $SDIRS ]]; then if [[ ! ${BASHMARKS_SDIRS-} ]]; then
SDIRS=~/.sdirs BASHMARKS_SDIRS=${SDIRS:-$HOME/.sdirs}
fi
# Deprecated interfaces (2023-10-12)
_omb_deprecate_declare 20000 SDIRS BASHMARKS_SDIRS sync
_omb_deprecate_function 20000 _echo_usage _bashmarks_usage
_omb_deprecate_function 20000 _save_bookmark _bashmarks_save
_omb_deprecate_function 20000 _delete_bookmark _bashmarks_delete
_omb_deprecate_function 20000 _goto_bookmark _bashmarks_goto
_omb_deprecate_function 20000 _list_bookmark _bashmarks_list
_omb_deprecate_function 20000 _print_bookmark _bashmarks_print
_omb_deprecate_function 20000 _l _bashmarks_list_names
_omb_deprecate_function 20000 _bookmark_name_valid _bashmarks_is_valid_bookmark_name
_omb_deprecate_function 20000 _comp _bashmarks_comp_cmd_bm
_omb_deprecate_function 20000 _compzsh _bashmarks_compzsh_cmd_bm
_omb_deprecate_function 20000 _purge_line _bashmarks_purge_line
# setup file to store bookmarks
if [[ ! -e $BASHMARKS_SDIRS ]]; then
touch "$BASHMARKS_SDIRS"
fi fi
touch "$SDIRS"
# main function # main function
function bm { function bm {
@@ -57,48 +75,48 @@ function bm {
case $option in case $option in
# save current directory to bookmarks [ bm -a BOOKMARK_NAME ] # save current directory to bookmarks [ bm -a BOOKMARK_NAME ]
-a) -a)
_save_bookmark "$2" _bashmarks_save "$2"
;; ;;
# delete bookmark [ bm -d BOOKMARK_NAME ] # delete bookmark [ bm -d BOOKMARK_NAME ]
-d) -d)
_delete_bookmark "$2" _bashmarks_delete "$2"
;; ;;
# jump to bookmark [ bm -g BOOKMARK_NAME ] # jump to bookmark [ bm -g BOOKMARK_NAME ]
-g) -g)
_goto_bookmark "$2" _bashmarks_goto "$2"
;; ;;
# print bookmark [ bm -p BOOKMARK_NAME ] # print bookmark [ bm -p BOOKMARK_NAME ]
-p) -p)
_print_bookmark "$2" _bashmarks_print "$2"
;; ;;
# show bookmark list [ bm -l ] # show bookmark list [ bm -l ]
-l) -l)
_list_bookmark _bashmarks_list
;; ;;
# help [ bm -h ] # help [ bm -h ]
-h) -h)
_echo_usage _bashmarks_usage
;; ;;
*) *)
if [[ $1 == -* ]]; then if [[ $1 == -* ]]; then
# unrecognized option. echo error message and usage [ bm -X ] # unrecognized option. echo error message and usage [ bm -X ]
echo "Unknown option '$1'" echo "Unknown option '$1'"
_echo_usage _bashmarks_usage
kill -SIGINT $$ kill -SIGINT $$
exit 1 exit 1
elif [[ $1 == "" ]]; then elif [[ $1 == "" ]]; then
# no args supplied - echo usage [ bm ] # no args supplied - echo usage [ bm ]
_echo_usage _bashmarks_usage
else else
# non-option supplied as first arg. assume goto [ bm BOOKMARK_NAME ] # non-option supplied as first arg. assume goto [ bm BOOKMARK_NAME ]
_goto_bookmark "$1" _bashmarks_goto "$1"
fi fi
;; ;;
esac esac
} }
# print usage information # print usage information
function _echo_usage { function _bashmarks_usage {
echo 'USAGE:' echo 'USAGE:'
echo "bm -h - Prints this usage info" echo "bm -h - Prints this usage info"
echo 'bm -a <bookmark_name> - Saves the current directory as "bookmark_name"' echo 'bm -a <bookmark_name> - Saves the current directory as "bookmark_name"'
@@ -109,29 +127,25 @@ function _echo_usage {
} }
# save current directory to bookmarks # save current directory to bookmarks
function _save_bookmark { function _bashmarks_save {
local exit_message if _bashmarks_is_valid_bookmark_name "$@"; then
_bookmark_name_valid "$@" _bashmarks_purge_line "$BASHMARKS_SDIRS" "export DIR_$1="
if [[ ! $exit_message ]]; then
_purge_line "$SDIRS" "export DIR_$1="
CURDIR=$(echo $PWD| sed "s#^$HOME#\$HOME#g") CURDIR=$(echo $PWD| sed "s#^$HOME#\$HOME#g")
echo "export DIR_$1=\"$CURDIR\"" >> $SDIRS echo "export DIR_$1=\"$CURDIR\"" >> "$BASHMARKS_SDIRS"
fi fi
} }
# delete bookmark # delete bookmark
function _delete_bookmark { function _bashmarks_delete {
local exit_message if _bashmarks_is_valid_bookmark_name "$@"; then
_bookmark_name_valid "$@" _bashmarks_purge_line "$BASHMARKS_SDIRS" "export DIR_$1="
if [[ ! $exit_message ]]; then
_purge_line "$SDIRS" "export DIR_$1="
unset "DIR_$1" unset "DIR_$1"
fi fi
} }
# jump to bookmark # jump to bookmark
function _goto_bookmark { function _bashmarks_goto {
source "$SDIRS" source "$BASHMARKS_SDIRS"
local target_varname=DIR_$1 local target_varname=DIR_$1
local target=${!target_varname-} local target=${!target_varname-}
if [[ -d $target ]]; then if [[ -d $target ]]; then
@@ -144,8 +158,8 @@ function _goto_bookmark {
} }
# list bookmarks with dirname # list bookmarks with dirname
function _list_bookmark { function _bashmarks_list {
source "$SDIRS" source "$BASHMARKS_SDIRS"
# if color output is not working for you, comment out the line below '\033[1;32m' == "red" # if color output is not working for you, comment out the line below '\033[1;32m' == "red"
env | sort | awk '/^DIR_.+/{split(substr($0,5),parts,"="); printf("\033[0;33m%-20s\033[0m %s\n", parts[1], parts[2]);}' env | sort | awk '/^DIR_.+/{split(substr($0,5),parts,"="); printf("\033[0;33m%-20s\033[0m %s\n", parts[1], parts[2]);}'
# uncomment this line if color output is not working with the line above # uncomment this line if color output is not working with the line above
@@ -153,48 +167,49 @@ function _list_bookmark {
} }
# print bookmark # print bookmark
function _print_bookmark { function _bashmarks_print {
source "$SDIRS" source "$BASHMARKS_SDIRS"
echo "$(eval $(echo echo $(echo \$DIR_$1)))" echo "$(eval $(echo echo $(echo \$DIR_$1)))"
} }
# list bookmarks without dirname # list bookmarks without dirname
function _l { function _bashmarks_list_names {
source "$SDIRS" source "$BASHMARKS_SDIRS"
env | grep "^DIR_" | cut -c5- | sort | grep "^.*=" | cut -f1 -d "=" env | grep "^DIR_" | cut -c5- | sort | grep "^.*=" | cut -f1 -d "="
} }
# validate bookmark name # validate bookmark name
# @var[out] exit_message # @var[out] exit_message
function _bookmark_name_valid { function _bashmarks_is_valid_bookmark_name {
exit_message="" local exit_message=""
if [[ ! $1 ]]; then if [[ ! $1 ]]; then
exit_message="bookmark name required" exit_message="bookmark name required"
echo "$exit_message" echo "$exit_message" >&2
return 1
elif [[ $1 == *[!A-Za-z0-9_]* ]]; then elif [[ $1 == *[!A-Za-z0-9_]* ]]; then
exit_message="bookmark name is not valid" exit_message="bookmark name is not valid"
echo "$exit_message" echo "$exit_message" >&2
return 1
fi fi
} }
# completion command # completion command
function _comp { function _bashmarks_comp_cmd_bm {
local curw
COMPREPLY=() COMPREPLY=()
if ((COMP_CWORD >= 2)) && [[ ${COMP_WORDS[1]} == -[gpd] ]]; then if ((COMP_CWORD >= 2)) && [[ ${COMP_WORDS[1]} == -[gpd] ]]; then
local cur=${COMP_WORDS[COMP_CWORD]} local cur=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=($(compgen -W '$(_l)' -- "$cur")) COMPREPLY=($(compgen -W '$(_bashmarks_list_names)' -- "$cur"))
fi fi
return 0 return 0
} }
# ZSH completion command # ZSH completion command
function _compzsh { function _bashmarks_compzsh_cmd_bm {
reply=($(_l)) reply=($(_bashmarks_list_names))
} }
# safe delete line from sdirs # safe delete line from sdirs
function _purge_line { function _bashmarks_purge_line {
if [[ -s $1 ]]; then if [[ -s $1 ]]; then
# safely create a temp file # safely create a temp file
t=$(mktemp -t bashmarks.XXXXXX) || exit 1 t=$(mktemp -t bashmarks.XXXXXX) || exit 1
@@ -210,20 +225,22 @@ function _purge_line {
fi fi
} }
# bind completion command for g,p,d to _comp # bind completion command for g,p,d to _bashmarks_comp_cmd_bm
if [[ ${ZSH_VERSION-} ]]; then if [[ ${ZSH_VERSION-} ]]; then
compctl -K _compzsh bm -g compctl -K _bashmarks_compzsh_cmd_bm bm -g
compctl -K _compzsh bm -p compctl -K _bashmarks_compzsh_cmd_bm bm -p
compctl -K _compzsh bm -d compctl -K _bashmarks_compzsh_cmd_bm bm -d
compctl -K _compzsh g compctl -K _bashmarks_compzsh_cmd_bm g
compctl -K _compzsh p compctl -K _bashmarks_compzsh_cmd_bm p
compctl -K _compzsh d compctl -K _bashmarks_compzsh_cmd_bm d
else else
shopt -s progcomp shopt -s progcomp
complete -F _comp bm complete -F _bashmarks_comp_cmd_bm bm
complete -F _comp g complete -F _bashmarks_comp_cmd_bm bm
complete -F _comp p complete -F _bashmarks_comp_cmd_bm bm
complete -F _comp d complete -F _bashmarks_comp_cmd_bm g
complete -F _bashmarks_comp_cmd_bm p
complete -F _bashmarks_comp_cmd_bm d
fi fi
alias s='bm -a' # Save a bookmark [bookmark_name] alias s='bm -a' # Save a bookmark [bookmark_name]