let fish_completer = {|spans| fish --command $"complete '--do-complete=($spans | str join ' ')'" | from tsv --flexible --noheaders --no-infer | rename value description | update value { if ($in | path exists) {$'"($in | str replace "\"" "\\\"" )"'} else {$in} } } # 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 _ => $fish_completer } | do $in $spans } $env.config.completions.external.completer = $external_completer