Files
nushell/crates/nu-utils/src/default_files
Douglas bf8763fc11 Add shape_garbage (#14626)
# Description

Adds `$env.config.color_config.shape_garbage` to the default config so
that it is populated out of the box.

Thanks to @PerchunPak for finding that it was missing.

# User-Facing Changes

I think this is useful on two levels, but it will be a change for a lot
of users:

1. Accessing it won't generate an error out-of-the-box
2. Garbage errors are highlighted in reverse-red in real-time in the
REPL. This means that, for example, typing just a `$` will start out as
an error - Once a valid variable (e.g., `$env`) is completed, then the
highlight will change to the parsed shape.

# Tests + Formatting

- 🟢 `toolkit fmt`
- 🟢 `toolkit clippy`
- 🟢 `toolkit test`
- 🟢 `toolkit test stdlib`

# After Submitting

N/A
2024-12-18 19:43:26 -06:00
..
2024-12-18 19:43:26 -06:00
2024-12-17 14:18:23 -06:00
2024-12-17 14:18:23 -06:00
2024-12-17 14:18:23 -06:00
2024-12-17 14:18:23 -06:00

Nushell configuration files

default_env.nu:

  • The internal default environment variables (other than $env.config) that will be set during Nushell startup.
  • Is loaded before the user's env.nu.
  • Will be loaded during any startup where the user's env.nu is also loaded. For example:
    • During normal startup with nu
    • During a startup where the user specifies an alternative env.nu via nu --env-config <path>
    • During a nu -c <commandstring> or nu <script> startup so that ENV_CONVERSIONS is properly handled for Windows.
  • Is not loaded when running with an explicit no --no-config-file (-n).
  • Is not commented - Comments are in doc_env.nu.
  • Should be optimized for fastest load times.
  • Can be introspected via config env --default | nu-highlight

default_config.nu:

Counterpart to default_env.nu.

  • Contains any $env.config values that are not set via Rust defaults.
  • Is loaded after the user's env.nu.
  • Is loaded before the user's config.nu.
  • Will be loaded during any startup where the user's config.nu is also loaded. For example:
    • During normal startup with nu
    • During a startup where the user specifies an alternative config.nu via nu --config <path>
  • Likewise, is never loaded during a startup where the user's config.nu would not be loaded. For example:
    • nu -n/--no-config
    • nu -c "ls"
    • nu <script.nu>
  • Is not commented - Comments are in doc_config.nu.
  • Should be optimized for fastest load times. Whenever possible, values should be set via nu-protocol::config
    • Exception: color_config values are currently set in this file so that user's can introspect the values
    • TODO: Implement defaults for color_config in nu-protocol::config and remove from default_config.nu
  • Can be introspected via config nu --default | nu-highlight
  • An ideal default_config.nu (when all values are set via nu-protocol::config) will simply be:
    $env.config = {}
    

doc_env.nu

  • A commented file documenting the most common environment variables that a user might configure in env.nu
  • For convenient in-shell access - Can be pretty-printed via config env --doc | nu-highlight
  • Since this file is for documentation only, include actual Nushell code without comments so that it can be pretty-printed
  • No optimization necessary - Not intended for use other than documentation.
  • Consider replacing config env --doc with help env.nu at some point.
  • Uses a mix of default values (explained) as well as other examples that users might want in their own env.nu

doc_config.nu

Counterpart to doc_env.nu.

  • A commented file documenting the most common environment variables that a user might configure in config.nu
  • For convenient in-shell access - Can be pretty-printed via config nu --doc | nu-highlight
  • Since this file is for documentation only, include actual Nushell code without comments so that it can be pretty-printed
  • No optimization necessary - Not intended for use other than documentation.
  • Consider replacing config nu --doc with help config.nu at some point.
  • Uses a mix of default values (explained) as well as other examples that users might want in their own config.nu

scaffold_env.nu

  • This file is used one-time (typically) at first startup
  • If the $nu.default-config-path directory does not exist, the directory is created and then both scaffold_env.nu and scaffold_config.nu are written to it
  • Contains only commented lines explaining the purpose of the file to the user, along with information on the config env command.

scaffold_config.nu

Counterpart to scaffold_env.nu.

  • This file is used one-time (typically) at first startup
  • If the $nu.default-config-path directory does not exist, the directory is created and then both scaffold_env.nu and scaffold_config.nu are written to it
  • Contains only commented lines explaining the purpose of the file to the user, along with information on the config nu command.

sample_login.nu

This file is not used by any Nushell code. Of course, if the user has a login.nu, then it will be evaluated during startup of a login shell.