nu_cmd_lang/
default_context.rs1use 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 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}