]> gitweb.ps.run Git - iftint/commitdiff
extract InputAction setup, remove printing screen size
authorPatrick <patrick.schoenberger@posteo.de>
Sat, 14 Oct 2023 00:40:47 +0000 (02:40 +0200)
committerPatrick <patrick.schoenberger@posteo.de>
Sat, 14 Oct 2023 00:40:47 +0000 (02:40 +0200)
main3.c

diff --git a/main3.c b/main3.c
index 2b0be3b5cb58d3feaee4f688ec31e559d1384bc5..19110167805a4240e102af4a2152661687e4ae0b 100644 (file)
--- a/main3.c
+++ b/main3.c
@@ -237,7 +237,7 @@ void NodeDraw(Node *n) {
     switch (n->kind) {
     case NK_Namespace: { PRINTF("namespace"); printf(" %s {", n->data); indent++; for (int i = 0; i < n->childCount; i++) { INDENT NodeDraw(NodeGetChild(n, i)); } indent--; INDENT printf("}\n"); break; }
     case NK_Struct:    { PRINTF("struct"); printf(" %s {", n->data); indent++; for (int i = 0; i < n->childCount; i++) { INDENT NodeDraw(NodeGetChild(n, i)); } indent--; INDENT printf("}\n"); break; }
     switch (n->kind) {
     case NK_Namespace: { PRINTF("namespace"); printf(" %s {", n->data); indent++; for (int i = 0; i < n->childCount; i++) { INDENT NodeDraw(NodeGetChild(n, i)); } indent--; INDENT printf("}\n"); break; }
     case NK_Struct:    { PRINTF("struct"); printf(" %s {", n->data); indent++; for (int i = 0; i < n->childCount; i++) { INDENT NodeDraw(NodeGetChild(n, i)); } indent--; INDENT printf("}\n"); break; }
-    case NK_Func:      { PRINTF("fn"); printf(" %s ", n->data); NodeDraw(NodeGetChild(n, 0)); INDENT NodeDraw(NodeGetChild(n, 1)); break; }
+    case NK_Func:      { PRINTF("fn"); printf(" %s ", n->data); NodeDraw(NodeGetChild(n, 0)); NodeDraw(NodeGetChild(n, 1)); break; }
     case NK_VarList:
     case NK_ExprList:  { PRINTF("("); for (int i = 0; i < n->childCount; i++) { if (i != 0) printf(", "); NodeDraw(NodeGetChild(n, i)); } PRINTF(")"); break; }
     case NK_Var:       { PRINTF("[%s]", n->data); break; }
     case NK_VarList:
     case NK_ExprList:  { PRINTF("("); for (int i = 0; i < n->childCount; i++) { if (i != 0) printf(", "); NodeDraw(NodeGetChild(n, i)); } PRINTF(")"); break; }
     case NK_Var:       { PRINTF("[%s]", n->data); break; }
@@ -263,15 +263,15 @@ void NodeDraw(Node *n) {
 typedef enum Input {
     IN_None,
 
 typedef enum Input {
     IN_None,
 
-    IN_SPACE,
-    IN_D,
-    IN_A,
-
     IN_H,
     IN_J,
     IN_K,
     IN_L,
 
     IN_H,
     IN_J,
     IN_K,
     IN_L,
 
+    IN_SPACE,
+    IN_D,
+    IN_A,
+
     IN_F,
     IN_V,
     IN_T,
     IN_F,
     IN_V,
     IN_T,
@@ -290,15 +290,15 @@ typedef enum Input {
 const char *IN_STRINGS[IN_COUNT] = {
     "IN_None",
 
 const char *IN_STRINGS[IN_COUNT] = {
     "IN_None",
 
-    "IN_SPACE",
-    "IN_D",
-    "IN_A",
-
     "IN_H",
     "IN_J",
     "IN_K",
     "IN_L",
 
     "IN_H",
     "IN_J",
     "IN_K",
     "IN_L",
 
+    "IN_SPACE",
+    "IN_D",
+    "IN_A",
+
     "IN_F",
     "IN_V",
     "IN_T",
     "IN_F",
     "IN_V",
     "IN_T",
@@ -318,14 +318,14 @@ Input InputGet() {
     while (true) {
         c = getch();
         switch (c) {
     while (true) {
         c = getch();
         switch (c) {
-            case ' ': return IN_SPACE;
-            case 'd': return IN_D;
-            
             case 'h': return IN_H;
             case 'j': return IN_J;
             case 'k': return IN_K;
             case 'l': return IN_L;
 
             case 'h': return IN_H;
             case 'j': return IN_J;
             case 'k': return IN_K;
             case 'l': return IN_L;
 
+            case ' ': return IN_SPACE;
+            case 'd': return IN_D;
+            
             case 'f': return IN_F;
             case 'v': return IN_V;
             case 't': return IN_T;
             case 'f': return IN_F;
             case 'v': return IN_V;
             case 't': return IN_T;
@@ -344,14 +344,14 @@ Input InputGet() {
 typedef enum InputAction {
     IA_None,
 
 typedef enum InputAction {
     IA_None,
 
-    IA_StartEditing,
-    IA_Delete,
-
     IA_MoveLeft,
     IA_MoveUp,
     IA_MoveDown,
     IA_MoveRight,
 
     IA_MoveLeft,
     IA_MoveUp,
     IA_MoveDown,
     IA_MoveRight,
 
+    IA_StartEditing,
+    IA_Delete,
+
     IA_AddNamespace,
     IA_AddStruct,
     IA_AddFunc,
     IA_AddNamespace,
     IA_AddStruct,
     IA_AddFunc,
@@ -371,14 +371,14 @@ typedef enum InputAction {
 const char *IA_STRINGS[IA_COUNT] = {
     "IA_None",
 
 const char *IA_STRINGS[IA_COUNT] = {
     "IA_None",
 
-    "IA_StartEditing",
-    "IA_Delete",
-
     "IA_MoveLeft",
     "IA_MoveUp",
     "IA_MoveDown",
     "IA_MoveRight",
 
     "IA_MoveLeft",
     "IA_MoveUp",
     "IA_MoveDown",
     "IA_MoveRight",
 
+    "IA_StartEditing",
+    "IA_Delete",
+
     "IA_AddNamespace",
     "IA_AddStruct",
     "IA_AddFunc",
     "IA_AddNamespace",
     "IA_AddStruct",
     "IA_AddFunc",
@@ -407,7 +407,7 @@ void DrawInfo(InputAction actions[NK_COUNT][IN_COUNT], NodeKind nk, InputMode mo
     vt100CursorPos(line++, h-30);
     printf("%s:%s", NK_STRINGS[nk], (mode == IM_Normal ? "" : " (editing)"));
 
     vt100CursorPos(line++, h-30);
     printf("%s:%s", NK_STRINGS[nk], (mode == IM_Normal ? "" : " (editing)"));
 
-    for (int i = 0; i < IN_COUNT; i++) {
+    for (int i = IN_L+1; i < IN_COUNT; i++) {
         InputAction action = actions[nk][i];
         if (action != IA_None) {
             vt100CursorPos(line++, h-30);
         InputAction action = actions[nk][i];
         if (action != IA_None) {
             vt100CursorPos(line++, h-30);
@@ -461,14 +461,14 @@ Node *GetNode(InputAction actions[NK_COUNT][IN_COUNT]) {
             #define S(NAME, PARENT, KIND) Node *NAME = NEW(Node); NAME->kind = KIND; NAME->data = NEWSTR; NodeAppend(PARENT, NAME);
 
             switch (action) {
             #define S(NAME, PARENT, KIND) Node *NAME = NEW(Node); NAME->kind = KIND; NAME->data = NEWSTR; NodeAppend(PARENT, NAME);
 
             switch (action) {
-            case IA_StartEditing: { mode = IM_Editing; break; }
-            case IA_Delete: { n = NodeRemove(n->parent, n); break; }
-
             case IA_MoveLeft: { if (n->prev != NULL) n = n->prev; break; }
             case IA_MoveDown: { if (n->child != NULL) n = n->child; break; }
             case IA_MoveUp: { if (n->parent != NULL) n = n->parent; break; }
             case IA_MoveRight: { if (n->next != NULL) n = n->next; break; }
             
             case IA_MoveLeft: { if (n->prev != NULL) n = n->prev; break; }
             case IA_MoveDown: { if (n->child != NULL) n = n->child; break; }
             case IA_MoveUp: { if (n->parent != NULL) n = n->parent; break; }
             case IA_MoveRight: { if (n->next != NULL) n = n->next; 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_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; }
@@ -492,10 +492,7 @@ Node *GetNode(InputAction actions[NK_COUNT][IN_COUNT]) {
 }
 
 
 }
 
 
-int main() {
-    // Setup
-    static InputAction actions[NK_COUNT][IN_COUNT];
-
+void SetupInputActions(InputAction actions[NK_COUNT][IN_COUNT]) {
     for (int i = 0; i < NK_COUNT; i++) {
         actions[i][IN_H] = IA_MoveLeft;
         actions[i][IN_J] = IA_MoveUp;
     for (int i = 0; i < NK_COUNT; i++) {
         actions[i][IN_H] = IA_MoveLeft;
         actions[i][IN_J] = IA_MoveUp;
@@ -571,6 +568,12 @@ int main() {
     actions[NK_Op][IN_S] = IA_AddStr;
     actions[NK_Op][IN_C] = IA_AddCall;
     actions[NK_Op][IN_O] = IA_AddOp;
     actions[NK_Op][IN_S] = IA_AddStr;
     actions[NK_Op][IN_C] = IA_AddCall;
     actions[NK_Op][IN_O] = IA_AddOp;
+}
+
+int main() {
+    // Setup
+    static InputAction actions[NK_COUNT][IN_COUNT];
+    SetupInputActions(actions);
 
     // Main
     vt100EnableAlternateBuffer();
 
     // Main
     vt100EnableAlternateBuffer();
@@ -581,10 +584,6 @@ int main() {
     vt100DisableAlternateBuffer();
     vt100ShowCursor();
 
     vt100DisableAlternateBuffer();
     vt100ShowCursor();
 
-    int v, h;
-    vt100GetScreenSize(&v, &h);
-    printf("Screen Size: %d | %d\n", v, h);
-
     NodeDraw(n);
 
     return 0;
     NodeDraw(n);
 
     return 0;