feat: update the nushell init file and make it valid module and overlay (#5188)
* break long commands into multiple lines for readability * fix the format of closures We generally write `{|| ...}` instead of `{ || ...}`. * remove the `$"--opt=(val)"` structure when possible `starship` does not require to use `--opt=val` and so we do not need to do that with Nushell :) the only place where this is required is with `--status` because `$env.LAST_EXIT_CODE` can be negative and `starship` does not appear to *like* values of the form `-2`... so i left this line as it was. on the other hand, `$env.CMD_DURATION_MS` and `(term size).columns` should be fine 😌 * simplify the `config` mutation with new `?` syntax This is a new very handy feature of Nushell which gives a much simpler command combined with `default` and `merge`. * put all `let-env`s inside an `export-env` with `load-env` This commit has two reasons of existing: - i think it makes it a bit easier to read with less `let-env`s - it transforms the *script* into both a valid module and a valid overlay * bump the version to `0.78` in to docs * add a note about the init file being also a module to all docs * tweak the documentation * update the Nushell part of the install script * format the vuepress config file as previous commit 117580136d3da5e00a4ccb7ada508c8510a2e50e was not successful, let's try to make the CI happy manually 😌 * remove code quotes in the `config_cmd` of Nushell * format the style in the Nushell `warning` section
This commit is contained in:
parent
b33538bfb1
commit
470aeb09a7
|
@ -346,10 +346,10 @@ starship init nu | save -f ~/.cache/starship/init.nu
|
||||||
And add the following to the end of your Nushell configuration (find it by running `$nu.config-path`):
|
And add the following to the end of your Nushell configuration (find it by running `$nu.config-path`):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
source ~/.cache/starship/init.nu
|
use ~/.cache/starship/init.nu
|
||||||
```
|
```
|
||||||
|
|
||||||
Note: Only Nushell v0.73+ is supported
|
Note: Only Nushell v0.78+ is supported
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
|
|
@ -118,14 +118,14 @@ module.exports = defineConfig({
|
||||||
["meta", { name: "twitter:alt", content: "Starship: Cross-Shell Prompt" }],
|
["meta", { name: "twitter:alt", content: "Starship: Cross-Shell Prompt" }],
|
||||||
// Google Analytics
|
// Google Analytics
|
||||||
[
|
[
|
||||||
'script',
|
"script",
|
||||||
{
|
{
|
||||||
async: true,
|
async: true,
|
||||||
src: 'https://www.googletagmanager.com/gtag/js?id=G-N3M0VJ9NL6',
|
src: "https://www.googletagmanager.com/gtag/js?id=G-N3M0VJ9NL6",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'script',
|
"script",
|
||||||
{},
|
{},
|
||||||
"window.dataLayer = window.dataLayer || [];\nfunction gtag(){dataLayer.push(arguments);}\ngtag('js', new Date());\ngtag('config', 'G-N3M0VJ9NL6');",
|
"window.dataLayer = window.dataLayer || [];\nfunction gtag(){dataLayer.push(arguments);}\ngtag('js', new Date());\ngtag('config', 'G-N3M0VJ9NL6');",
|
||||||
],
|
],
|
||||||
|
|
|
@ -138,7 +138,7 @@ description: Starship is the minimal, blazing fast, and extremely customizable p
|
||||||
::: warning
|
::: warning
|
||||||
|
|
||||||
This will change in the future.
|
This will change in the future.
|
||||||
Only Nushell v0.73+ is supported.
|
Only Nushell v0.78+ is supported.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
@ -151,8 +151,9 @@ description: Starship is the minimal, blazing fast, and extremely customizable p
|
||||||
And add the following to the end of your Nushell configuration (find it by running `$nu.config-path`):
|
And add the following to the end of your Nushell configuration (find it by running `$nu.config-path`):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
source ~/.cache/starship/init.nu
|
use ~/.cache/starship/init.nu
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Xonsh
|
#### Xonsh
|
||||||
|
|
||||||
Add the following to the end of `~/.xonshrc`:
|
Add the following to the end of `~/.xonshrc`:
|
||||||
|
|
|
@ -337,12 +337,13 @@ print_install() {
|
||||||
nushell )
|
nushell )
|
||||||
# shellcheck disable=SC2088
|
# shellcheck disable=SC2088
|
||||||
config_file="${BOLD}your nu config file${NO_COLOR} (find it by running ${BOLD}\$nu.config-path${NO_COLOR} in Nushell)"
|
config_file="${BOLD}your nu config file${NO_COLOR} (find it by running ${BOLD}\$nu.config-path${NO_COLOR} in Nushell)"
|
||||||
config_cmd="mkdir ~/.cache/starship
|
config_cmd="use ~/.cache/starship/init.nu"
|
||||||
starship init nu | save -f ~/.cache/starship/init.nu
|
|
||||||
source ~/.cache/starship/init.nu"
|
|
||||||
warning="${warning} This will change in the future.
|
warning="${warning} This will change in the future.
|
||||||
Only Nushell v0.73 or higher is supported.
|
Only Nushell v0.78 or higher is supported.
|
||||||
Add the following to the end of ${BOLD}your Nushell env file${NO_COLOR} (find it by running ${BOLD}\$nu.env-path${NO_COLOR} in Nushell): \"mkdir ~/.cache/starship; starship init nu | save -f ~/.cache/starship/init.nu\""
|
Add the following to the end of ${BOLD}your Nushell env file${NO_COLOR} (find it by running ${BOLD}\$nu.env-path${NO_COLOR} in Nushell):
|
||||||
|
|
||||||
|
mkdir ~/.cache/starship
|
||||||
|
starship init nu | save -f ~/.cache/starship/init.nu"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
printf " %s\n %s\n And add the following to the end of %s:\n\n\t%s\n\n" \
|
printf " %s\n %s\n And add the following to the end of %s:\n\n\t%s\n\n" \
|
||||||
|
|
|
@ -1,27 +1,39 @@
|
||||||
let-env STARSHIP_SHELL = "nu"
|
# this file is both a valid
|
||||||
let-env STARSHIP_SESSION_KEY = (random chars -l 16)
|
# - overlay which can be loaded with `overlay use starship.nu`
|
||||||
let-env PROMPT_MULTILINE_INDICATOR = (^::STARSHIP:: prompt --continuation)
|
# - module which can be used with `use starship.nu`
|
||||||
|
# - script which can be used with `source starship.nu`
|
||||||
|
export-env { load-env {
|
||||||
|
STARSHIP_SHELL: "nu"
|
||||||
|
STARSHIP_SESSION_KEY: (random chars -l 16)
|
||||||
|
PROMPT_MULTILINE_INDICATOR: (
|
||||||
|
^::STARSHIP:: prompt --continuation
|
||||||
|
)
|
||||||
|
|
||||||
# Does not play well with default character module.
|
# Does not play well with default character module.
|
||||||
# TODO: Also Use starship vi mode indicators?
|
# TODO: Also Use starship vi mode indicators?
|
||||||
let-env PROMPT_INDICATOR = ""
|
PROMPT_INDICATOR: ""
|
||||||
|
|
||||||
let-env PROMPT_COMMAND = { ||
|
PROMPT_COMMAND: {||
|
||||||
# jobs are not supported
|
# jobs are not supported
|
||||||
let width = (term size).columns
|
(
|
||||||
^::STARSHIP:: prompt $"--cmd-duration=($env.CMD_DURATION_MS)" $"--status=($env.LAST_EXIT_CODE)" $"--terminal-width=($width)"
|
^::STARSHIP:: prompt
|
||||||
}
|
--cmd-duration $env.CMD_DURATION_MS
|
||||||
|
$"--status=($env.LAST_EXIT_CODE)"
|
||||||
|
--terminal-width (term size).columns
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
# Whether we have config items
|
config: ($env.config? | default {} | merge {
|
||||||
let has_config_items = (not ($env | get -i config | is-empty))
|
render_right_prompt_on_last_line: true
|
||||||
|
})
|
||||||
|
|
||||||
let-env config = if $has_config_items {
|
PROMPT_COMMAND_RIGHT: {||
|
||||||
$env.config | upsert render_right_prompt_on_last_line true
|
(
|
||||||
} else {
|
^::STARSHIP:: prompt
|
||||||
{render_right_prompt_on_last_line: true}
|
--right
|
||||||
}
|
--cmd-duration $env.CMD_DURATION_MS
|
||||||
|
$"--status=($env.LAST_EXIT_CODE)"
|
||||||
let-env PROMPT_COMMAND_RIGHT = { ||
|
--terminal-width (term size).columns
|
||||||
let width = (term size).columns
|
)
|
||||||
^::STARSHIP:: prompt --right $"--cmd-duration=($env.CMD_DURATION_MS)" $"--status=($env.LAST_EXIT_CODE)" $"--terminal-width=($width)"
|
}
|
||||||
}
|
}}
|
||||||
|
|
Loading…
Reference in New Issue