From 8d0a719dbf21661537a64abf65cb70d86a42b5a9 Mon Sep 17 00:00:00 2001 From: amtoine Date: Tue, 23 May 2023 19:29:30 +0200 Subject: [PATCH 1/4] fix the multi-completer external completion --- book/custom_completions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/custom_completions.md b/book/custom_completions.md index 232e639f73d..2087bea107f 100644 --- a/book/custom_completions.md +++ b/book/custom_completions.md @@ -169,7 +169,7 @@ let external_completer = {|spans| $spans.0: { default_completer $spans | from json } # default ls: { ls_completer $spans | from json } git: { git_completer $spans | from json } - } | get $spans.0 | each {|it| do $it} + } | each {|it| do $it} } ``` From d2520657bb492b6ffabf4a9b91f926a56c1e2d71 Mon Sep 17 00:00:00 2001 From: amtoine Date: Tue, 23 May 2023 19:30:28 +0200 Subject: [PATCH 2/4] use the new mutable `$env.* = ...` syntax --- book/custom_completions.md | 41 ++++++++++++-------------------------- 1 file changed, 13 insertions(+), 28 deletions(-) diff --git a/book/custom_completions.md b/book/custom_completions.md index 2087bea107f..c786d98ee7d 100644 --- a/book/custom_completions.md +++ b/book/custom_completions.md @@ -54,7 +54,7 @@ module commands { def animals [] { ["cat", "dog", "eel" ] } - + def animal-names [context: string] { { cat: ["Missy", "Phoebe"] @@ -144,19 +144,11 @@ This example should enable carapace external completions: ```nu # config.nu -let carapace_completer = {|spans| - carapace $spans.0 nushell $spans | from json -} - -# The default config record. This is where much of your global configuration is setup. -let-env config = { - # ... your config - completions: { - external: { - enable: true - max_results: 100 - completer: $carapace_completer - } +$env.config.completions.external = { + enable: true + max_results: 100 + completer: {|spans| + carapace $spans.0 nushell $spans | from json } } ``` @@ -164,7 +156,7 @@ let-env config = { Multiple completers can be defined as such: ```nu -let external_completer = {|spans| +{|spans| { $spans.0: { default_completer $spans | from json } # default ls: { ls_completer $spans | from json } @@ -176,19 +168,12 @@ let external_completer = {|spans| This example shows an external completer that uses the `fish` shell's `complete` command. (You must have the fish shell installed for this example to work.) ```nu -let fish_completer = {|spans| - fish --command $'complete "--do-complete=($spans | str join " ")"' | str trim | split row "\n" | each { |line| $line | split column "\t" value description } | flatten -} - -let-env config = { - # ... your config - completions: { - external: { - enable: true - max_results: 100 - completer: $fish_completer - } - } +$env.config.completions.external.completer = {|spans| + fish --command $'complete "--do-complete=($spans | str join " ")"' + | str trim + | split row "\n" + | each { |line| $line | split column "\t" value description } + | flatten } ``` From daea6e6e8c50b5c57eb9b36315442c4e3fe54076 Mon Sep 17 00:00:00 2001 From: amtoine Date: Tue, 23 May 2023 19:31:21 +0200 Subject: [PATCH 3/4] use 4 spaces indentation in the multi-completer example --- book/custom_completions.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/book/custom_completions.md b/book/custom_completions.md index c786d98ee7d..3db5b4a7f7c 100644 --- a/book/custom_completions.md +++ b/book/custom_completions.md @@ -157,11 +157,11 @@ Multiple completers can be defined as such: ```nu {|spans| - { - $spans.0: { default_completer $spans | from json } # default - ls: { ls_completer $spans | from json } - git: { git_completer $spans | from json } - } | each {|it| do $it} + { + $spans.0: { default_completer $spans | from json } # default + ls: { ls_completer $spans | from json } + git: { git_completer $spans | from json } + } | each {|it| do $it} } ``` From 47e85432b2109e75f976537422216a67808929d0 Mon Sep 17 00:00:00 2001 From: amtoine Date: Wed, 24 May 2023 18:31:58 +0200 Subject: [PATCH 4/4] define completers and add note about how to configure any of them --- book/custom_completions.md | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/book/custom_completions.md b/book/custom_completions.md index 3db5b4a7f7c..a0b0017bed2 100644 --- a/book/custom_completions.md +++ b/book/custom_completions.md @@ -140,23 +140,31 @@ External completers can also be integrated, instead of relying solely on Nushell For this set the `external_completer` field in `config.nu` to a block which will be evaluated if no Nushell completions were found. You can configure the block to run an external completer, such as [carapace](https://github.com/rsteube/carapace-bin). +> **Note** +> in the following, we define a bunch of different completers. +> +> one can configure them in `$nu.config-path` as follows: +> +> ```nu +> $env.config.completions.external = { +> enable: true +> max_results: 100 +> completer: $completer +> } +> ``` + This example should enable carapace external completions: ```nu -# config.nu -$env.config.completions.external = { - enable: true - max_results: 100 - completer: {|spans| - carapace $spans.0 nushell $spans | from json - } +let carapace_completer = {|spans| + carapace $spans.0 nushell $spans | from json } ``` Multiple completers can be defined as such: ```nu -{|spans| +let multiple_completers = {|spans| { $spans.0: { default_completer $spans | from json } # default ls: { ls_completer $spans | from json } @@ -168,7 +176,7 @@ Multiple completers can be defined as such: This example shows an external completer that uses the `fish` shell's `complete` command. (You must have the fish shell installed for this example to work.) ```nu -$env.config.completions.external.completer = {|spans| +let fish_completer = {|spans| fish --command $'complete "--do-complete=($spans | str join " ")"' | str trim | split row "\n"