liminalOS/hm/modules/common/shellenv/config.nu
Youwen Wu b63c4c3cd1
feat: overhaul nushell completions and make login shell
Now that we can use the Fish completion engine in nushell, it's good
enough that I'm making it the login shell for the time being
2025-02-10 16:22:14 -08:00

32 lines
891 B
Text

let fish_completer = {|spans|
fish --command $'complete "--do-complete=($spans | str join " ")"'
| from tsv --flexible --noheaders --no-infer
| rename value description
}
let zoxide_completer = {|spans|
$spans | skip 1 | zoxide query -l ...$in | lines | where {|x| $x != $env.PWD}
}
# This completer will use fish by default
let external_completer = {|spans|
let expanded_alias = scope aliases
| where name == $spans.0
| get -i 0.expansion
let spans = if $expanded_alias != null {
$spans
| skip 1
| prepend ($expanded_alias | split row ' ' | take 1)
} else {
$spans
}
match $spans.0 {
# use zoxide completions for zoxide commands
__zoxide_z | __zoxide_zi => $zoxide_completer
_ => $fish_completer
} | do $in $spans
}
$env.config.completions.external.completer = $external_completer