nu_cmd_lang/
default_context.rs

1use crate::*;
2use nu_protocol::engine::{EngineState, StateWorkingSet};
3
4pub fn create_default_context() -> EngineState {
5    let engine_state = EngineState::new();
6    add_default_context(engine_state)
7}
8
9pub fn add_default_context(mut engine_state: EngineState) -> EngineState {
10    let delta = {
11        let mut working_set = StateWorkingSet::new(&engine_state);
12
13        macro_rules! bind_command {
14            ( $( $command:expr ),* $(,)? ) => {
15                $( working_set.add_decl(Box::new($command)); )*
16            };
17        }
18
19        // Core
20        bind_command! {
21            Alias,
22            Attr,
23            AttrCategory,
24            AttrComplete,
25            AttrCompleteExternal,
26            AttrDeprecated,
27            AttrExample,
28            AttrSearchTerms,
29            Break,
30            Collect,
31            Const,
32            Continue,
33            Def,
34            Describe,
35            Do,
36            Echo,
37            Error,
38            ErrorMake,
39            ExportAlias,
40            ExportCommand,
41            ExportConst,
42            ExportDef,
43            ExportExtern,
44            ExportUse,
45            ExportModule,
46            Extern,
47            For,
48            Hide,
49            HideEnv,
50            If,
51            Ignore,
52            Overlay,
53            OverlayUse,
54            OverlayList,
55            OverlayNew,
56            OverlayHide,
57            Let,
58            Loop,
59            Match,
60            Module,
61            Mut,
62            Return,
63            Scope,
64            ScopeAliases,
65            ScopeCommands,
66            ScopeEngineStats,
67            ScopeExterns,
68            ScopeModules,
69            ScopeVariables,
70            Try,
71            Use,
72            Version,
73            While,
74        };
75
76        working_set.render()
77    };
78
79    if let Err(err) = engine_state.merge_delta(delta) {
80        eprintln!("Error creating default context: {err:?}");
81    }
82
83    engine_state
84}