billiob pushed a commit to branch master.

http://git.enlightenment.org/apps/terminology.git/commit/?id=a0738339dde4163fb3abc5b9badf19912226b03f

commit a0738339dde4163fb3abc5b9badf19912226b03f
Author: Boris Faure <[email protected]>
Date:   Sat Jan 19 22:10:12 2019 +0100

    termptyesc: CHA and HPA are the same
---
 src/bin/termptyesc.c | 40 +++++++++++++---------------------------
 tests/hpa.sh         | 43 +++++++++++++++++++++++++++++++++++++++++++
 tests/tests.results  |  1 +
 3 files changed, 57 insertions(+), 27 deletions(-)

diff --git a/src/bin/termptyesc.c b/src/bin/termptyesc.c
index bf9bb0d..8709017 100644
--- a/src/bin/termptyesc.c
+++ b/src/bin/termptyesc.c
@@ -2467,14 +2467,22 @@ _handle_esc_csi_cub(Termpty *ty, Eina_Unicode **ptr)
 }
 
 static void
-_handle_esc_csi_cha(Termpty *ty, Eina_Unicode **ptr)
+_handle_esc_csi_cha(Termpty *ty, Eina_Unicode **ptr,
+                    const Eina_Unicode *cc)
 {
    Eina_Unicode *b = *ptr;
    int arg = _csi_arg_get(ty, &b);
    int min = 0;
    int max = ty->w;
 
-   DBG("CHA - Cursor Horizontal Absolute: %d", arg);
+   if (*cc == '`')
+     {
+        DBG("HPA - Horizontal Position Absolute: %d", arg);
+     }
+   else
+     {
+        DBG("CHA - Cursor Horizontal Absolute: %d", arg);
+     }
    if (arg == -CSI_ARG_ERROR)
      return;
    if (arg < 1)
@@ -2882,7 +2890,7 @@ _handle_esc_csi(Termpty *ty, const Eina_Unicode *c, const 
Eina_Unicode *ce)
         _handle_esc_csi_cpl(ty, &b);
         break;
       case 'G':
-        _handle_esc_csi_cha(ty, &b);
+        _handle_esc_csi_cha(ty, &b, cc);
         break;
       case 'H':
         _handle_esc_csi_cursor_pos_set(ty, &b, cc);
@@ -2935,30 +2943,8 @@ _handle_esc_csi(Termpty *ty, const Eina_Unicode *c, 
const Eina_Unicode *ce)
       case 'Z':
         _handle_esc_csi_cbt(ty, &b);
         break;
-      case '`': // HPA
-        arg = _csi_arg_get(ty, &b);
-        if (arg == -CSI_ARG_ERROR)
-          goto error;
-        DBG("Horizontal Position Absolute (HPA): %d", arg);
-        arg--;
-        if (arg < 0)
-          arg = 0;
-        ty->termstate.wrapnext = 0;
-        ty->cursor_state.cx = arg;
-        TERMPTY_RESTRICT_FIELD(ty->cursor_state.cx, 0, ty->w);
-        if (ty->termstate.restrict_cursor)
-          {
-             if ((ty->termstate.right_margin != 0)
-                 && (ty->cursor_state.cx >= ty->termstate.right_margin))
-               {
-                  ty->cursor_state.cx = ty->termstate.right_margin - 1;
-               }
-             if ((ty->termstate.left_margin != 0)
-                 && (ty->cursor_state.cx < ty->termstate.left_margin))
-               {
-                  ty->cursor_state.cx = ty->termstate.left_margin;
-               }
-          }
+      case '`':
+        _handle_esc_csi_cha(ty, &b, cc);
         break;
       case 'a': // cursor right N (HPR)
         _handle_esc_csi_cuf(ty, &b);
diff --git a/tests/hpa.sh b/tests/hpa.sh
new file mode 100755
index 0000000..af20f61
--- /dev/null
+++ b/tests/hpa.sh
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+# fill space with E
+printf '\033[69;1;1;25;80\044x'
+
+#set color
+printf '\033[46;31;3m'
+
+# arg = 3
+printf '\033[1;10H1\033[3`1'
+
+# no arg
+printf '\033[2;10H2\033[`2'
+
+# go too far
+printf '\033[3;10H3\033[3333`3'
+
+# arg == 0
+printf '\033[4;10H4\033[0`4'
+
+# set top/bottom margins:
+printf '\033[10;20r'
+# allow left/right margins
+printf '\033[?69h'
+# set left/right margins:
+printf '\033[5;15s'
+# fill margin with @
+printf '\033[64;10;5;20;15\044x'
+
+# From inside to outside
+printf '\033[12;12HA\033[20`A'
+
+# From outside (on the left) to outside (on the right)
+printf '\033[12;2HB\033[40`B'
+
+# restrict cursor
+printf '\033[?6h'
+
+# From inside to inside
+printf '\033[4;4HC\033[6`C'
+
+# From inside to outside
+printf '\033[5;2HD\033[40`D'
diff --git a/tests/tests.results b/tests/tests.results
index 460ea37..ea76819 100644
--- a/tests/tests.results
+++ b/tests/tests.results
@@ -68,3 +68,4 @@ tbc.sh d0216e4056e5ab1cb4d411b6d6074785
 ech.sh 57a3ff127abbb3efa4082fab7de59970
 text_append_after_right_margin.sh 26b334188d39e2b12538a6ca91ca168c
 cbt.sh 417cd352d3eba45d6016df67a0314444
+hpa.sh 0f86ca83e072d41b89dd1a012f0749a7

-- 


Reply via email to