feat(nu): enable right prompt (#4490)

Closes #3982
This commit is contained in:
nibon7 2022-12-02 19:40:36 +08:00 committed by GitHub
parent 497039be07
commit a7abc0f450
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 5 deletions

View File

@ -261,7 +261,9 @@ not explicitly used in either `format` or `right_format`.
Note: The right prompt is a single line following the input location. To right align modules above
the input line in a multi-line prompt, see the [`fill` module](/config/#fill).
`right_format` is currently supported for the following shells: elvish, fish, zsh, xonsh, cmd.
`right_format` is currently supported for the following shells: elvish, fish, zsh, xonsh, cmd, nushell.
Note: Nushell 0.71.0 or later is required
### Example

View File

@ -12,7 +12,28 @@ let-env PROMPT_COMMAND = {
^::STARSHIP:: prompt $"--cmd-duration=($env.CMD_DURATION_MS)" $"--status=($env.LAST_EXIT_CODE)" $"--terminal-width=($width)"
}
# Not well-suited for `starship prompt --right`.
# Built-in right prompt is equivalent to $fill$right_format in the first prompt line.
# Thus does not play well with default `add_newline = True`.
let-env PROMPT_COMMAND_RIGHT = {''}
# Whether we can show right prompt on the last line
let has_rprompt_last_line_support = (version).version >= 0.71.0
# Whether we have config items
let has_config_items = (not ($env | get -i config | is-empty))
if $has_rprompt_last_line_support {
let config = if $has_config_items {
$env.config | upsert render_right_prompt_on_last_line true
} else {
{render_right_prompt_on_last_line: true}
}
{config: $config}
} else {
{ }
} | load-env
let-env PROMPT_COMMAND_RIGHT = {
if $has_rprompt_last_line_support {
let width = (term size).columns
^::STARSHIP:: prompt --right $"--cmd-duration=($env.CMD_DURATION_MS)" $"--status=($env.LAST_EXIT_CODE)" $"--terminal-width=($width)"
} else {
''
}
}