nushell/crates
Wind def36865ef
Enable reloading changes to a submodule (#13170)
# Description

Fixes: https://github.com/nushell/nushell/issues/12099

Currently if user run `use voice.nu`, and file is unchanged, then run
`use voice.nu` again. nushell will use the module directly, even if
submodule inside `voice.nu` is changed.

After discussed with @kubouch, I think it's ok to re-parse the module
file when:
1. It exports sub modules which are defined by a file
2. It uses other modules which are defined by a file

## About the change:
To achieve the behavior, we need to add 2 attributes to `Module`:
1. `imported_modules`: it tracks the other modules is imported by the
givem `module`, e.g: `use foo.nu`
2. `file`: the path of a module, if a module is defined by a file, it
will be `Some(path)`, or else it will be `None`.

After the change:

    use voice.nu always read the file and parse it.
    use voice will still use the module which is saved in EngineState.

# User-Facing Changes

use `xxx.nu` will read the file and parse it if it exports submodules or
uses submodules

# Tests + Formatting

Done

---------

Co-authored-by: Jakub Žádník <kubouch@gmail.com>
2024-06-25 18:33:37 -07:00
..
nu_plugin_custom_values Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu_plugin_example Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu_plugin_formats Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu_plugin_gstat Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu_plugin_inc Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu_plugin_nu_example Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu_plugin_polars Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu_plugin_python Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu_plugin_query Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu_plugin_stress_internals Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu-cli Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu-cmd-base Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu-cmd-extra Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu-cmd-lang Define keywords (#13213) 2024-06-25 18:32:54 -07:00
nu-cmd-plugin Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu-color-config Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu-command Define keywords (#13213) 2024-06-25 18:32:54 -07:00
nu-derive-value Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu-engine Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu-explore Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu-glob Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu-json Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu-lsp Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu-parser Enable reloading changes to a submodule (#13170) 2024-06-25 18:33:37 -07:00
nu-path Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu-plugin Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu-plugin-core Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu-plugin-engine Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu-plugin-protocol Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu-plugin-test-support Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu-pretty-hex Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu-protocol Enable reloading changes to a submodule (#13170) 2024-06-25 18:33:37 -07:00
nu-std Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu-system Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu-table Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu-term-grid Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu-test-support Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nu-utils Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
nuon Bumping version to 0.95.1 (#13231) 2024-06-25 18:26:07 -07:00
README.md Remove old nushell/merge engine-q 2022-02-07 14:54:06 -05:00

Nushell core libraries and plugins

These sub-crates form both the foundation for Nu and a set of plugins which extend Nu with additional functionality.

Foundational libraries are split into two kinds of crates:

  • Core crates - those crates that work together to build the Nushell language engine
  • Support crates - a set of crates that support the engine with additional features like JSON support, ANSI support, and more.

Plugins are likewise also split into two types:

  • Core plugins - plugins that provide part of the default experience of Nu, including access to the system properties, processes, and web-connectivity features.
  • Extra plugins - these plugins run a wide range of different capabilities like working with different file types, charting, viewing binary data, and more.