- case IA_AddFunc: { NS(n1, n, NK_Func) NA(n2, n1, NK_ArgList) NA(n3, n1, NK_Body) n = n1; mode = Mode_Editing; break; }
- case IA_AddVar: { NS(n1, n, NK_Var) n = n1; mode = Mode_Editing; break; }
- case IA_AddIf: { NA(n1, n, NK_If) NA(n2, n1, NK_ExprList) NA(n3, n1, NK_Body) n = n1; break; }
- case IA_AddNum: { NS(n1, n, NK_Num) n = n1; mode = Mode_Editing; break; }
- case IA_AddStr: { NS(n1, n, NK_Str) n = n1; mode = Mode_Editing; break; }
- case IA_AddCall: { NS(n1, n, NK_Call) NA(n2, n1, NK_ExprList) n = n1; mode = Mode_Editing; break; }
- case IA_AddOp: { NS(n1, n, NK_Op) n = n1; mode = Mode_Editing; break; }
+ case IA_StartEditing: { mode = IM_Editing; break; }
+ case IA_Delete: { n = NodeRemove(n->parent, n); break; }
+
+ case IA_AddNamespace: { S(n1, n, NK_Namespace) n = n1; mode = IM_Editing; break; }
+ case IA_AddStruct: { S(n1, n, NK_Struct) n = n1; mode = IM_Editing; break; }
+ case IA_AddFunc: { S(n1, n, NK_Func) N(n2, n1, NK_VarList) N(n3, n1, NK_Body) n = n1; mode = IM_Editing; break; }
+ case IA_AddVar: { S(n1, n, NK_Var) n = n1; mode = IM_Editing; break; }
+ case IA_AddVarDecl: { S(n1, n, NK_VarDecl) S(n2, n1, NK_VarType) n = n1; mode = IM_Editing; break; }
+ case IA_AddType: { S(n1, n, NK_Type) n = n1; mode = IM_Editing; break; }
+ case IA_AddIf: { N(n1, n, NK_If) N(n2, n1, NK_ExprList) N(n3, n1, NK_Body) n = n2; break; }
+ case IA_AddWhile: { N(n1, n, NK_While) N(n2, n1, NK_ExprList) N(n3, n1, NK_Body) n = n2; break; }
+ case IA_AddNum: { S(n1, n, NK_Num) n = n1; mode = IM_Editing; break; }
+ case IA_AddStr: { S(n1, n, NK_Str) n = n1; mode = IM_Editing; break; }
+ case IA_AddCall: { S(n1, n, NK_Call) N(n2, n1, NK_ExprList) n = n1; mode = IM_Editing; break; }
+ case IA_AddOp: { S(n1, n, NK_Op) n = n1; mode = IM_Editing; break; }