nu_protocol::engine

Struct StateWorkingSet

Source
pub struct StateWorkingSet<'a> {
    pub permanent_state: &'a EngineState,
    pub delta: StateDelta,
    pub files: FileStack,
    pub search_predecls: bool,
    pub parse_errors: Vec<ParseError>,
    pub parse_warnings: Vec<ParseWarning>,
    pub compile_errors: Vec<CompileError>,
}
Expand description

A temporary extension to the global state. This handles bridging between the global state and the additional declarations and scope changes that are not yet part of the global scope.

This working set is created by the parser as a way of handling declarations and scope changes that may later be merged or dropped (and not merged) depending on the needs of the code calling the parser.

Fields§

§permanent_state: &'a EngineState§delta: StateDelta§files: FileStack§search_predecls: bool

Whether or not predeclarations are searched when looking up a command (used with aliases)

§parse_errors: Vec<ParseError>§parse_warnings: Vec<ParseWarning>§compile_errors: Vec<CompileError>

Implementations§

Source§

impl<'a> StateWorkingSet<'a>

Source

pub fn new(permanent_state: &'a EngineState) -> Self

Source

pub fn permanent(&self) -> &EngineState

Source

pub fn error(&mut self, parse_error: ParseError)

Source

pub fn warning(&mut self, parse_warning: ParseWarning)

Source

pub fn num_files(&self) -> usize

Source

pub fn num_virtual_paths(&self) -> usize

Source

pub fn num_decls(&self) -> usize

Source

pub fn num_blocks(&self) -> usize

Source

pub fn num_modules(&self) -> usize

Source

pub fn unique_overlay_names(&self) -> HashSet<&[u8]>

Source

pub fn num_overlays(&self) -> usize

Source

pub fn add_decl(&mut self, decl: Box<dyn Command>) -> DeclId

Source

pub fn use_decls(&mut self, decls: Vec<(Vec<u8>, DeclId)>)

Source

pub fn use_modules(&mut self, modules: Vec<(Vec<u8>, ModuleId)>)

Source

pub fn use_variables(&mut self, variables: Vec<(Vec<u8>, VarId)>)

Source

pub fn add_predecl(&mut self, decl: Box<dyn Command>) -> Option<DeclId>

Source

pub fn find_or_create_plugin( &mut self, identity: &PluginIdentity, make: impl FnOnce() -> Arc<dyn RegisteredPlugin>, ) -> Arc<dyn RegisteredPlugin>

Source

pub fn update_plugin_registry(&mut self, item: PluginRegistryItem)

Source

pub fn merge_predecl(&mut self, name: &[u8]) -> Option<DeclId>

Source

pub fn move_predecls_to_overlay(&mut self)

Source

pub fn hide_decl(&mut self, name: &[u8]) -> Option<DeclId>

Source

pub fn hide_decls(&mut self, decls: &[Vec<u8>])

Source

pub fn add_block(&mut self, block: Arc<Block>) -> BlockId

Source

pub fn add_module( &mut self, name: &str, module: Module, comments: Vec<Span>, ) -> ModuleId

Source

pub fn get_module_comments(&self, module_id: ModuleId) -> Option<&[Span]>

Source

pub fn next_span_start(&self) -> usize

Source

pub fn global_span_offset(&self) -> usize

Source

pub fn files(&self) -> impl Iterator<Item = &CachedFile>

Source

pub fn get_contents_of_file(&self, file_id: FileId) -> Option<&[u8]>

Source

pub fn add_file(&mut self, filename: String, contents: &[u8]) -> FileId

Source

pub fn add_virtual_path( &mut self, name: String, virtual_path: VirtualPath, ) -> VirtualPathId

Source

pub fn get_span_for_filename(&self, filename: &str) -> Option<Span>

Source

pub fn get_span_for_file(&self, file_id: FileId) -> Span

Panics: On invalid FileId

Use with care

Source

pub fn get_span_contents(&self, span: Span) -> &[u8]

Source

pub fn enter_scope(&mut self)

Source

pub fn exit_scope(&mut self)

Source

pub fn find_predecl(&self, name: &[u8]) -> Option<DeclId>

Source

pub fn find_decl(&self, name: &[u8]) -> Option<DeclId>

Source

pub fn find_module(&self, name: &[u8]) -> Option<ModuleId>

Source

pub fn contains_decl_partial_match(&self, name: &[u8]) -> bool

Source

pub fn next_var_id(&self) -> VarId

Source

pub fn list_variables(&self) -> Vec<&[u8]>

Source

pub fn find_variable(&self, name: &[u8]) -> Option<VarId>

Source

pub fn find_variable_in_current_frame(&self, name: &[u8]) -> Option<VarId>

Source

pub fn add_variable( &mut self, name: Vec<u8>, span: Span, ty: Type, mutable: bool, ) -> VarId

Source

pub fn get_cwd(&self) -> String

👎Deprecated since 0.92.3: please use EngineState::cwd() instead

Returns the current working directory as a String, which is guaranteed to be canonicalized. Returns an empty string if $env.PWD doesn’t exist, is not a String, or is not an absolute path.

It does NOT consider modifications to the working directory made on a stack.

Source

pub fn get_env_var(&self, name: &str) -> Option<&Value>

Source

pub fn get_config(&self) -> &Arc<Config>

Returns a reference to the config stored at permanent state

At runtime, you most likely want to call Stack::get_config() because this method does not capture environment updates during runtime.

Source

pub fn set_variable_type(&mut self, var_id: VarId, ty: Type)

Source

pub fn set_variable_const_val(&mut self, var_id: VarId, val: Value)

Source

pub fn get_variable(&self, var_id: VarId) -> &Variable

Source

pub fn get_variable_if_possible(&self, var_id: VarId) -> Option<&Variable>

Source

pub fn get_constant(&self, var_id: VarId) -> Result<&Value, ParseError>

Source

pub fn get_decl(&self, decl_id: DeclId) -> &dyn Command

Source

pub fn get_decl_mut(&mut self, decl_id: DeclId) -> &mut Box<dyn Command>

Source

pub fn get_signature(&self, decl: &dyn Command) -> Signature

Source

pub fn find_commands_by_predicate( &self, predicate: impl Fn(&[u8]) -> bool, ignore_deprecated: bool, ) -> Vec<(Vec<u8>, Option<String>, CommandType)>

Source

pub fn get_block(&self, block_id: BlockId) -> &Arc<Block>

Source

pub fn get_module(&self, module_id: ModuleId) -> &Module

Source

pub fn get_block_mut(&mut self, block_id: BlockId) -> &mut Block

Source

pub fn has_overlay(&self, name: &[u8]) -> bool

Source

pub fn find_overlay(&self, name: &[u8]) -> Option<&OverlayFrame>

Source

pub fn last_overlay_name(&self) -> &[u8]

Source

pub fn last_overlay(&self) -> &OverlayFrame

Source

pub fn last_overlay_mut(&mut self) -> &mut OverlayFrame

Source

pub fn decls_of_overlay(&self, name: &[u8]) -> HashMap<Vec<u8>, DeclId>

Collect all decls that belong to an overlay

Source

pub fn add_overlay( &mut self, name: Vec<u8>, origin: ModuleId, decls: Vec<(Vec<u8>, DeclId)>, modules: Vec<(Vec<u8>, ModuleId)>, prefixed: bool, )

Source

pub fn remove_overlay(&mut self, name: &[u8], keep_custom: bool)

Source

pub fn render(self) -> StateDelta

Source

pub fn build_desc(&self, spans: &[Span]) -> (String, String)

Source

pub fn find_block_by_span(&self, span: Span) -> Option<Arc<Block>>

Source

pub fn find_module_by_span(&self, span: Span) -> Option<ModuleId>

Source

pub fn find_virtual_path(&self, name: &str) -> Option<&VirtualPath>

Source

pub fn get_virtual_path( &self, virtual_path_id: VirtualPathId, ) -> &(String, VirtualPath)

Source

pub fn add_span(&mut self, span: Span) -> SpanId

Trait Implementations§

Source§

impl<'a> GetSpan for &'a StateWorkingSet<'a>

Source§

fn get_span(&self, span_id: SpanId) -> Span

Source§

impl<'a> SourceCode for &StateWorkingSet<'a>

Source§

fn read_span<'b>( &'b self, span: &SourceSpan, context_lines_before: usize, context_lines_after: usize, ) -> Result<Box<dyn SpanContents<'_> + 'b>, MietteError>

Read the bytes for a specific span from this SourceCode, keeping a certain number of lines before and after the span as context.

Auto Trait Implementations§

§

impl<'a> Freeze for StateWorkingSet<'a>

§

impl<'a> !RefUnwindSafe for StateWorkingSet<'a>

§

impl<'a> Send for StateWorkingSet<'a>

§

impl<'a> Sync for StateWorkingSet<'a>

§

impl<'a> Unpin for StateWorkingSet<'a>

§

impl<'a> !UnwindSafe for StateWorkingSet<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> IntoSpanned for T

Source§

fn into_spanned(self, span: Span) -> Spanned<T>

Wrap items together with a span into Spanned. Read more
Source§

impl<D> OwoColorize for D

Source§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>
where C: Color,

Set the foreground color generically Read more
Source§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>
where C: Color,

Set the background color generically. Read more
Source§

fn black(&self) -> FgColorDisplay<'_, Black, Self>

Change the foreground color to black
Source§

fn on_black(&self) -> BgColorDisplay<'_, Black, Self>

Change the background color to black
Source§

fn red(&self) -> FgColorDisplay<'_, Red, Self>

Change the foreground color to red
Source§

fn on_red(&self) -> BgColorDisplay<'_, Red, Self>

Change the background color to red
Source§

fn green(&self) -> FgColorDisplay<'_, Green, Self>

Change the foreground color to green
Source§

fn on_green(&self) -> BgColorDisplay<'_, Green, Self>

Change the background color to green
Source§

fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>

Change the foreground color to yellow
Source§

fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>

Change the background color to yellow
Source§

fn blue(&self) -> FgColorDisplay<'_, Blue, Self>

Change the foreground color to blue
Source§

fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>

Change the background color to blue
Source§

fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to magenta
Source§

fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to magenta
Source§

fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to purple
Source§

fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to purple
Source§

fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>

Change the foreground color to cyan
Source§

fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>

Change the background color to cyan
Source§

fn white(&self) -> FgColorDisplay<'_, White, Self>

Change the foreground color to white
Source§

fn on_white(&self) -> BgColorDisplay<'_, White, Self>

Change the background color to white
Source§

fn default_color(&self) -> FgColorDisplay<'_, Default, Self>

Change the foreground color to the terminal default
Source§

fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>

Change the background color to the terminal default
Source§

fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>

Change the foreground color to bright black
Source§

fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>

Change the background color to bright black
Source§

fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>

Change the foreground color to bright red
Source§

fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>

Change the background color to bright red
Source§

fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>

Change the foreground color to bright green
Source§

fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>

Change the background color to bright green
Source§

fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>

Change the foreground color to bright yellow
Source§

fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>

Change the background color to bright yellow
Source§

fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>

Change the foreground color to bright blue
Source§

fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>

Change the background color to bright blue
Source§

fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright magenta
Source§

fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright magenta
Source§

fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright purple
Source§

fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright purple
Source§

fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>

Change the foreground color to bright cyan
Source§

fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>

Change the background color to bright cyan
Source§

fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>

Change the foreground color to bright white
Source§

fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>

Change the background color to bright white
Source§

fn bold(&self) -> BoldDisplay<'_, Self>

Make the text bold
Source§

fn dimmed(&self) -> DimDisplay<'_, Self>

Make the text dim
Source§

fn italic(&self) -> ItalicDisplay<'_, Self>

Make the text italicized
Source§

fn underline(&self) -> UnderlineDisplay<'_, Self>

Make the text underlined
Make the text blink
Make the text blink (but fast!)
Source§

fn reversed(&self) -> ReversedDisplay<'_, Self>

Swap the foreground and background colors
Source§

fn hidden(&self) -> HiddenDisplay<'_, Self>

Hide the text
Source§

fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>

Cross out the text
Source§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at compile-time. If the color is constant, use either OwoColorize::fg or a color-specific method, such as OwoColorize::green, Read more
Source§

fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the background color at runtime. Only use if you do not know what color to use at compile-time. If the color is constant, use either OwoColorize::bg or a color-specific method, such as OwoColorize::on_yellow, Read more
Source§

fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the foreground color to a specific RGB value.
Source§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
Source§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
Source§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
Source§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize = _

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.