mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2024-11-15 18:30:08 +00:00
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:
parent
04b66b2308
commit
f6b3fc84d1
5 changed files with 95 additions and 22 deletions
2
.github/dependencies.yml
vendored
2
.github/dependencies.yml
vendored
|
@ -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
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue