mirror of
https://github.com/nushell/nushell.git
synced 2025-05-08 08:52:56 +00:00
# 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>
30 lines
855 B
Rust
30 lines
855 B
Rust
mod deparse;
|
|
mod exportable;
|
|
mod flatten;
|
|
mod known_external;
|
|
mod lex;
|
|
mod lite_parser;
|
|
mod parse_keywords;
|
|
mod parse_patterns;
|
|
mod parse_shape_specs;
|
|
mod parser;
|
|
mod type_check;
|
|
|
|
pub use deparse::{escape_for_script_arg, escape_quote_string};
|
|
pub use flatten::{
|
|
flatten_block, flatten_expression, flatten_pipeline, flatten_pipeline_element, FlatShape,
|
|
};
|
|
pub use known_external::KnownExternal;
|
|
pub use lex::{lex, lex_signature, Token, TokenContents};
|
|
pub use lite_parser::{lite_parse, LiteBlock, LiteCommand};
|
|
pub use nu_protocol::parser_path::*;
|
|
pub use parse_keywords::*;
|
|
|
|
pub use parser::{
|
|
is_math_expression_like, parse, parse_block, parse_expression, parse_external_call,
|
|
parse_unit_value, trim_quotes, trim_quotes_str, unescape_unquote_string, DURATION_UNIT_GROUPS,
|
|
};
|
|
|
|
#[cfg(feature = "plugin")]
|
|
pub use parse_keywords::parse_register;
|