zoxide/templates/nushell.txt

106 lines
2.7 KiB
Plaintext
Raw Normal View History

2021-04-08 18:35:42 +00:00
{%- let section = "# =============================================================================\n#" -%}
{%- let not_configured = "# -- not configured --" -%}
2021-03-31 16:45:43 +00:00
2021-04-27 12:07:38 +00:00
{{ section }}
# Utility functions for zoxide.
#
# Default prompt for Nushell.
def __zoxide_prompt [] {
2021-06-02 21:19:21 +00:00
let git = $"(do -i {git rev-parse --abbrev-ref HEAD} | str trim)"
let git = (if (echo $git | str length) == 0 {
""
} {
build-string (char lparen) (ansi cb) $git (ansi reset) (char rparen)
})
build-string (ansi gb) (pwd) (ansi reset) $git "> "
2021-04-27 12:07:38 +00:00
}
2021-04-08 18:35:42 +00:00
{{ section }}
2021-03-31 16:45:43 +00:00
# Hook configuration for zoxide.
#
# Hook to add new entries to the database.
{%- match hook %}
2021-05-03 21:12:43 +00:00
{%- when InitHook::None %}
2021-03-31 16:45:43 +00:00
def __zoxide_hook [] {}
2021-05-03 21:12:43 +00:00
{%- when InitHook::Prompt %}
2021-03-31 16:45:43 +00:00
def __zoxide_hook [] {
shells | where active == $true && name == filesystem | get path | each { zoxide add -- $it }
2021-03-31 16:45:43 +00:00
}
2021-05-03 21:12:43 +00:00
{%- when InitHook::Pwd %}
2021-03-31 16:45:43 +00:00
def __zoxide_hook [] {}
2021-06-02 21:19:21 +00:00
$"zoxide: PWD hooks are not supported on Nushell.(char nl)Use 'zoxide init nushell --hook prompt' instead.(char nl)"
2021-03-31 16:45:43 +00:00
{%- endmatch %}
2021-04-08 18:35:42 +00:00
{{ section }}
2021-03-31 16:45:43 +00:00
# When using zoxide with --no-aliases, alias these internal functions as
# desired.
#
# Jump to a directory using only keywords.
def __zoxide_z [...rest:string] {
2021-06-02 21:19:21 +00:00
if (shells | where active == $true | get name) != filesystem {
if (echo $rest | length) > 1 {
$"zoxide: can only jump directories on filesystem(char nl)"
2021-05-05 23:01:57 +00:00
} {
2021-06-02 21:19:21 +00:00
cd (echo $rest)
2021-05-05 23:01:57 +00:00
{%- if echo %}
pwd
{%- endif %}
}
2021-03-31 16:45:43 +00:00
} {
2021-06-02 21:19:21 +00:00
let arg0 = (echo $rest | append '~' | first 1);
if (echo $rest | length) <= 1 && ($arg0 == '-' || (echo $arg0 | path expand | path exists)) {
cd $arg0
2021-05-05 23:01:57 +00:00
} {
2021-06-30 20:41:46 +00:00
cd $"(zoxide query --exclude (pwd) -- $rest | str trim)"
2021-03-31 16:45:43 +00:00
}
2021-04-08 18:35:42 +00:00
{%- if echo %}
2021-05-05 23:01:57 +00:00
pwd
2021-04-08 18:35:42 +00:00
{%- endif %}
2021-05-05 23:01:57 +00:00
}
2021-03-31 16:45:43 +00:00
}
# Jump to a directory using interactive search.
def __zoxide_zi [...rest:string] {
2021-06-02 21:19:21 +00:00
if (shells | where active == $true | get name) != filesystem {
$"zoxide: can only jump directories on filesystem(char nl)"
2021-05-05 23:01:57 +00:00
} {
2021-06-30 20:41:46 +00:00
cd $"(zoxide query -i -- $rest | str trim)"
2021-04-08 18:35:42 +00:00
{%- if echo %}
2021-05-05 23:01:57 +00:00
pwd
2021-04-08 18:35:42 +00:00
{%- endif %}
2021-05-05 23:01:57 +00:00
}
2021-03-31 16:45:43 +00:00
}
2021-04-08 18:35:42 +00:00
{{ section }}
2021-03-31 16:45:43 +00:00
# Convenient aliases for zoxide. Disable these using --no-aliases.
#
{%- match cmd %}
{%- when Some with (cmd) %}
2021-06-02 21:19:21 +00:00
alias {{cmd}} = __zoxide_z
alias {{cmd}}i = __zoxide_zi
2021-03-31 16:45:43 +00:00
{%- when None %}
2021-04-08 18:35:42 +00:00
{{ not_configured }}
2021-03-31 16:45:43 +00:00
{%- endmatch %}
2021-04-08 18:35:42 +00:00
{{ section }}
2021-04-27 12:07:38 +00:00
# To initialize zoxide, first create a Nushell script:
2021-03-31 16:45:43 +00:00
#
# zoxide init nushell --hook prompt | save ~/.zoxide.nu
#
2021-04-27 12:07:38 +00:00
# Add this to your configuration (usually ~/.config/nu/config.toml):
#
# prompt = "__zoxide_hook;__zoxide_prompt"
# startup = ["zoxide init nushell --hook prompt | save ~/.zoxide.nu", "source ~/.zoxide.nu"]
#
# You can replace __zoxide_prompt with a custom prompt.