feat(wd): update to version v0.7.0 (#12436)

Co-authored-by: ohmyzsh[bot] <54982679+ohmyzsh[bot]@users.noreply.github.com>
This commit is contained in:
ohmyzsh[bot] 2024-05-21 20:48:54 +02:00 committed by GitHub
parent 04b66b2308
commit f6b3fc84d1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 95 additions and 22 deletions

View File

@ -39,7 +39,7 @@ dependencies:
plugins/wd: plugins/wd:
repo: mfaerevaag/wd repo: mfaerevaag/wd
branch: master branch: master
version: tag:v0.6.1 version: tag:v0.7.0
precopy: | precopy: |
set -e set -e
rm -r test rm -r test

View File

@ -142,7 +142,7 @@ rm -f ~/.zcompdump; compinit
If you want to make use of the `fzf`-powered browse feature to fuzzy search through all your warp points, set up a keybind in your `.zshrc`: If you want to make use of the `fzf`-powered browse feature to fuzzy search through all your warp points, set up a keybind in your `.zshrc`:
```zsh ```zsh
bindkey '^G' wd_browse bindkey ${FZF_WD_BINDKEY:-'^B'} fuzzy_wd_widget
``` ```
## Usage ## Usage
@ -158,6 +158,19 @@ If a warp point with the same name exists, use `wd add foo --force` to overwrite
**Note:** a warp point cannot contain colons, or consist of only spaces and dots. **Note:** a warp point cannot contain colons, or consist of only spaces and dots.
The first will conflict in how `wd` stores the warp points, and the second will conflict with other features, as below. The first will conflict in how `wd` stores the warp points, and the second will conflict with other features, as below.
* Add warp point to any directory with default name:
```zsh
wd addcd /foo/ bar
```
* Add warp point to any directory with a custom name:
```zsh
wd addcd /foo/
```
You can omit point name to automatically use the current directory's name instead. You can omit point name to automatically use the current directory's name instead.
* From any directory, warp to `foo` with: * From any directory, warp to `foo` with:

View File

@ -31,6 +31,7 @@ function _wd() {
commands=( commands=(
'add:Adds the current working directory to your warp points' 'add:Adds the current working directory to your warp points'
'addcd:Adds a directory to your warp points'
'add!:Overwrites existing warp point' 'add!:Overwrites existing warp point'
'export:Export warp points as static named directories' 'export:Export warp points as static named directories'
'rm:Removes the given warp point' 'rm:Removes the given warp point'
@ -63,6 +64,9 @@ function _wd() {
add) add)
_message 'Write the name of your warp point' && ret=0 _message 'Write the name of your warp point' && ret=0
;; ;;
addcd)
_message 'Write the name of your path' && ret=0
;;
show) show)
_describe -t points "Warp points" warp_points && ret=0 _describe -t points "Warp points" warp_points && ret=0
;; ;;

View File

@ -14,7 +14,8 @@
eval "wd() { source '${0:A:h}/wd.sh' }" eval "wd() { source '${0:A:h}/wd.sh' }"
wd > /dev/null wd > /dev/null
# Register the function as a Zsh widget zle -N wd_browse_widget
zle -N wd_browse zle -N wd_restore_buffer
# Bind the widget to a key combination autoload -Uz add-zle-hook-widget
bindkey '^G' wd_browse add-zle-hook-widget line-init wd_restore_buffer
bindkey ${FZF_WD_BINDKEY:-'^B'} wd_browse_widget

View File

@ -8,7 +8,7 @@
# @github.com/mfaerevaag/wd # @github.com/mfaerevaag/wd
# version # version
readonly WD_VERSION=0.6.1 readonly WD_VERSION=0.7.0
# colors # colors
readonly WD_BLUE="\033[96m" readonly WD_BLUE="\033[96m"
@ -74,18 +74,20 @@ wd_print_usage()
Usage: wd [command] [point] Usage: wd [command] [point]
Commands: Commands:
<point> Warps to the directory specified by the warp point <point> Warps to the directory specified by the warp point
<point> <path> Warps to the directory specified by the warp point with path appended <point> <path> Warps to the directory specified by the warp point with path appended
add <point> Adds the current working directory to your warp points add <point> Adds the current working directory to your warp points
add Adds the current working directory to your warp points with current directory's name add Adds the current working directory to your warp points with current directory's name
rm <point> Removes the given warp point addcd <path> Adds a path to your warp points with the directory's name
rm Removes the given warp point with current directory's name addcd <path> <point> Adds a path to your warp points with a custom name
show <point> Print path to given warp point rm <point> Removes the given warp point
show Print warp points to current directory rm Removes the given warp point with current directory's name
list Print all stored warp points show <point> Print path to given warp point
ls <point> Show files from given warp point (ls) show Print warp points to current directory
path <point> Show the path to given warp point (pwd) list Print all stored warp points
clean Remove points warping to nonexistent directories (will prompt unless --force is used) ls <point> Show files from given warp point (ls)
path <point> Show the path to given warp point (pwd)
clean Remove points warping to nonexistent directories (will prompt unless --force is used)
-v | --version Print version -v | --version Print version
-d | --debug Exit after execution with exit codes (for testing) -d | --debug Exit after execution with exit codes (for testing)
@ -203,6 +205,28 @@ wd_add()
fi fi
} }
wd_addcd() {
local folder="$1"
local point=$2
local force=$3
local currentdir=$PWD
if [[ -z "$folder" ]]; then
wd_exit_fail "You must specify a path"
return
fi
if [[ ! -d "$folder" ]]; then
wd_exit_fail "The directory does not exist"
return
fi
cd "$folder" || return
wd_add "$point" "$force"
cd "$currentdir" || return
}
wd_remove() wd_remove()
{ {
local point_list=$1 local point_list=$1
@ -235,7 +259,15 @@ wd_browse() {
return 1 return 1
fi fi
local entries=("${(@f)$(sed "s:${HOME}:~:g" "$WD_CONFIG" | awk -F ':' '{print $1 " -> " $2}')}") local entries=("${(@f)$(sed "s:${HOME}:~:g" "$WD_CONFIG" | awk -F ':' '{print $1 " -> " $2}')}")
local selected_entry=$(printf '%s\n' "${entries[@]}" | fzf --height 40% --reverse) local script_path="${${(%):-%x}:h}"
local wd_remove_output=$(mktemp "${TMPDIR:-/tmp}/wd.XXXXXXXXXX")
local entries_with_headers=("All warp points:" "Press enter to select. Press delete to remove" "${entries[@]}")
local fzf_bind="delete:execute(echo {} | awk -F ' -> ' '{print \$1}' | xargs -I {} "$script_path/wd.sh" rm {} > "$wd_remove_output")+abort"
local fzf_command=$(printf '%s\n' "${entries_with_headers[@]}" | fzf --height 100% --reverse --header-lines=2 --bind="$fzf_bind")
if [[ -e $wd_remove_output ]]; then
cat "$wd_remove_output"
rm "$wd_remove_output"
fi
if [[ -n $selected_entry ]]; then if [[ -n $selected_entry ]]; then
local selected_point="${selected_entry%% ->*}" local selected_point="${selected_entry%% ->*}"
selected_point=$(echo "$selected_point" | xargs) selected_point=$(echo "$selected_point" | xargs)
@ -243,6 +275,24 @@ wd_browse() {
fi fi
} }
wd_browse_widget() {
if [[ -e $WD_CONFIG ]]; then
wd_browse
saved_buffer=$BUFFER
saved_cursor=$CURSOR
BUFFER=
zle redisplay
zle accept-line
fi
}
wd_restore_buffer() {
BUFFER=$saved_buffer
CURSOR=$saved_cursor
saved_buffer=
saved_cursor=1
}
wd_list_all() wd_list_all()
{ {
wd_print_msg "$WD_BLUE" "All warp points:" wd_print_msg "$WD_BLUE" "All warp points:"
@ -371,7 +421,7 @@ wd_export_static_named_directories() {
fi fi
} }
local WD_CONFIG=${WD_CONFIG:-$HOME/.warprc} WD_CONFIG=${WD_CONFIG:-$HOME/.warprc}
local WD_QUIET=0 local WD_QUIET=0
local WD_EXIT_CODE=0 local WD_EXIT_CODE=0
local WD_DEBUG=0 local WD_DEBUG=0
@ -455,6 +505,10 @@ else
wd_browse wd_browse
break break
;; ;;
"-c"|"--addcd"|"addcd")
wd_addcd "$2" "$3" "$wd_force_mode"
break
;;
"-e"|"export") "-e"|"export")
wd_export_static_named_directories wd_export_static_named_directories
break break
@ -510,6 +564,7 @@ fi
unset wd_extglob_is_set unset wd_extglob_is_set
unset wd_warp unset wd_warp
unset wd_add unset wd_add
unset wd_addcd
unset wd_remove unset wd_remove
unset wd_show unset wd_show
unset wd_list_all unset wd_list_all