Reimplement __zoxide_hooked using SHLVL
This commit is contained in:
parent
d65b0021b3
commit
89ce75724d
|
|
@ -21,20 +21,25 @@ fn __zoxide_cd [path]{
|
||||||
#
|
#
|
||||||
|
|
||||||
# Initialize hook to track previous directory.
|
# Initialize hook to track previous directory.
|
||||||
__zoxide_oldpwd = $pwd
|
var oldpwd = $builtin:pwd
|
||||||
before-chdir = [$@before-chdir [_]{ edit:add-var __zoxide_oldpwd $pwd }]
|
set builtin:before-chdir = [$@builtin:before-chdir [_]{ edit:add-var oldpwd $builtin:pwd }]
|
||||||
|
|
||||||
{#- __zoxide_hooked requires https://github.com/elves/elvish/issues/1395 #}
|
|
||||||
|
|
||||||
# Initialize hook to add directories to zoxide.
|
# Initialize hook to add directories to zoxide.
|
||||||
|
var shlvl = $E:SHLVL
|
||||||
|
if (builtin:eq $shlvl "") {
|
||||||
|
set shlvl = 0
|
||||||
|
}
|
||||||
|
if (builtin:not (builtin:eq $E:__zoxide_hooked_elvish $shlvl)) {
|
||||||
|
set E:__zoxide_hooked_elvish = $shlvl
|
||||||
{%- match hook %}
|
{%- match hook %}
|
||||||
{%- when InitHook::None %}
|
{%- when InitHook::None %}
|
||||||
{{ not_configured }}
|
{{ not_configured }}
|
||||||
{%- when InitHook::Prompt %}
|
{%- when InitHook::Prompt %}
|
||||||
edit:before-readline = [$@edit:before-readline []{ zoxide add -- $pwd }]
|
set edit:before-readline = [$@edit:before-readline []{ zoxide add -- $pwd }]
|
||||||
{%- when InitHook::Pwd %}
|
{%- when InitHook::Pwd %}
|
||||||
after-chdir = [$@after-chdir [_]{ zoxide add -- $pwd }]
|
set builtin:after-chdir = [$@builtin:after-chdir [_]{ zoxide add -- $pwd }]
|
||||||
{%- endmatch %}
|
{%- endmatch %}
|
||||||
|
}
|
||||||
|
|
||||||
{{ section }}
|
{{ section }}
|
||||||
# When using zoxide with --no-aliases, alias these internal functions as
|
# When using zoxide with --no-aliases, alias these internal functions as
|
||||||
|
|
@ -46,13 +51,13 @@ fn __zoxide_z [@rest]{
|
||||||
if (builtin:eq [] $rest) {
|
if (builtin:eq [] $rest) {
|
||||||
__zoxide_cd ~
|
__zoxide_cd ~
|
||||||
} elif (builtin:eq [-] $rest) {
|
} elif (builtin:eq [-] $rest) {
|
||||||
__zoxide_cd $__zoxide_oldpwd
|
__zoxide_cd $oldpwd
|
||||||
} elif (and ('builtin:==' (builtin:count $rest) 1) (path:is-dir &follow-symlink=$true $rest[0])) {
|
} elif (and ('builtin:==' (builtin:count $rest) 1) (path:is-dir &follow-symlink=$true $rest[0])) {
|
||||||
__zoxide_cd $rest[0]
|
__zoxide_cd $rest[0]
|
||||||
} else {
|
} else {
|
||||||
var path
|
var path
|
||||||
try {
|
try {
|
||||||
path = (zoxide query --exclude $pwd -- $@rest)
|
set path = (zoxide query --exclude $pwd -- $@rest)
|
||||||
} except {
|
} except {
|
||||||
} else {
|
} else {
|
||||||
__zoxide_cd $path
|
__zoxide_cd $path
|
||||||
|
|
@ -65,7 +70,7 @@ edit:add-var __zoxide_z~ $__zoxide_z~
|
||||||
fn __zoxide_zi [@rest]{
|
fn __zoxide_zi [@rest]{
|
||||||
var path
|
var path
|
||||||
try {
|
try {
|
||||||
path = (zoxide query -i -- $@rest)
|
set path = (zoxide query -i -- $@rest)
|
||||||
} except {
|
} except {
|
||||||
} else {
|
} else {
|
||||||
__zoxide_cd $path
|
__zoxide_cd $path
|
||||||
|
|
@ -86,19 +91,19 @@ edit:add-var {{cmd}}i~ $__zoxide_zi~
|
||||||
# Load completions.
|
# Load completions.
|
||||||
{# zoxide-based completions are currently not possible, because Elvish only
|
{# zoxide-based completions are currently not possible, because Elvish only
|
||||||
# prints a completion if the current token is a prefix of it. -#}
|
# prints a completion if the current token is a prefix of it. -#}
|
||||||
fn __zoxide_z_complete [@args]{
|
fn __zoxide_z_complete [@rest]{
|
||||||
if (!= (count $args) 2) {
|
if (!= (builtin:count $rest) 2) {
|
||||||
return
|
builtin:return
|
||||||
}
|
}
|
||||||
edit:complete-filename $args[1] |
|
edit:complete-filename $rest[1] |
|
||||||
each [c]{
|
builtin:each [completion]{
|
||||||
dir = $c[stem]
|
var dir = $completion[stem]
|
||||||
if (path:is-dir $dir) {
|
if (path:is-dir $dir) {
|
||||||
put $dir
|
builtin:put $dir
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
edit:completion:arg-completer[{{cmd}}] = $__zoxide_z_complete~
|
set edit:completion:arg-completer[{{cmd}}] = $__zoxide_z_complete~
|
||||||
|
|
||||||
{%- when None %}
|
{%- when None %}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue