From 0271518975e488755599c7654955fabf47e1c292 Mon Sep 17 00:00:00 2001 From: Joakim Hulthe Date: Wed, 28 Feb 2024 14:16:30 +0100 Subject: [PATCH] nushell: Set up external completion using fish --- tree/.config/nushell/config.nu | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/tree/.config/nushell/config.nu b/tree/.config/nushell/config.nu index 226eccc..c13992b 100644 --- a/tree/.config/nushell/config.nu +++ b/tree/.config/nushell/config.nu @@ -174,11 +174,22 @@ let light_theme = { shape_vardecl: purple } -# External completer example -# let carapace_completer = {|spans| -# carapace $spans.0 nushell $spans | from json -# } +# Use fish for external completion +let fish_completer = {|spans| + # if the current command is an alias, get it's expansion + let expanded_alias = (scope aliases | where name == $spans.0 | get -i 0 | get -i expansion) + # overwrite + let spans = (if $expanded_alias != null { + # put the first word of the expanded alias first in the span + $spans | skip 1 | prepend ($expanded_alias | split row " " | take 1) + } else { $spans }) + + + fish --command $'complete "--do-complete=($spans | str join " ")"' + | $"value(char tab)description(char newline)" + $in + | from tsv --flexible --no-infer +} $env.config = { show_banner: false @@ -259,7 +270,7 @@ $env.config = { external: { enable: true # set to false to prevent nushell looking into $env.PATH to find more suggestions, `false` recommended for WSL users as this look up may be very slow max_results: 100 # setting it lower can improve completion performance at the cost of omitting some options - completer: null # check 'carapace_completer' above as an example + completer: $fish_completer } }