termptyesc: extract ECH handler to its own function + test
Test is not fully working at the moment. There seems to be an issue with appending text outside margins
This commit is contained in:
parent
ff830fbc42
commit
89a6a9d652
|
@ -2790,6 +2790,19 @@ _handle_esc_csi_tbc(Termpty *ty, Eina_Unicode **ptr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_handle_esc_csi_ech(Termpty *ty, Eina_Unicode **ptr)
|
||||||
|
{
|
||||||
|
Eina_Unicode *b = *ptr;
|
||||||
|
int arg = _csi_arg_get(ty, &b);
|
||||||
|
|
||||||
|
if (arg == -CSI_ARG_ERROR)
|
||||||
|
return;
|
||||||
|
DBG("ECH - Erase Character: %d", arg);
|
||||||
|
TERMPTY_RESTRICT_FIELD(arg, 1, ty->w);
|
||||||
|
termpty_clear_line(ty, TERMPTY_CLR_END, arg);
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
_handle_esc_csi(Termpty *ty, const Eina_Unicode *c, const Eina_Unicode *ce)
|
_handle_esc_csi(Termpty *ty, const Eina_Unicode *c, const Eina_Unicode *ce)
|
||||||
{
|
{
|
||||||
|
@ -2891,13 +2904,8 @@ _handle_esc_csi(Termpty *ty, const Eina_Unicode *c, const Eina_Unicode *ce)
|
||||||
else
|
else
|
||||||
_handle_esc_csi_ctc(ty, &b);
|
_handle_esc_csi_ctc(ty, &b);
|
||||||
break;
|
break;
|
||||||
case 'X': // erase N chars
|
case 'X':
|
||||||
arg = _csi_arg_get(ty, &b);
|
_handle_esc_csi_ech(ty, &b);
|
||||||
if (arg == -CSI_ARG_ERROR)
|
|
||||||
goto error;
|
|
||||||
TERMPTY_RESTRICT_FIELD(arg, 1, ty->w);
|
|
||||||
DBG("ECH: erase %d chars", arg);
|
|
||||||
termpty_clear_line(ty, TERMPTY_CLR_END, arg);
|
|
||||||
break;
|
break;
|
||||||
case 'Z':
|
case 'Z':
|
||||||
{
|
{
|
||||||
|
|
|
@ -0,0 +1,85 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# fill space
|
||||||
|
PL=1
|
||||||
|
for _ in $(seq 0 23); do
|
||||||
|
PL=$((PL+1))
|
||||||
|
if [ $PL -gt 9 ] ; then
|
||||||
|
PL=1
|
||||||
|
fi
|
||||||
|
printf '%s' "$PL"
|
||||||
|
for _ in $(seq 2 $PL); do
|
||||||
|
printf '#'
|
||||||
|
done
|
||||||
|
PR=$((9 - PL))
|
||||||
|
for _ in $(seq 0 6); do
|
||||||
|
printf '\033[0;1m\-'
|
||||||
|
printf '\033[0;46;1;4m/'
|
||||||
|
printf '\033[0;46;1;4m|'
|
||||||
|
printf '\033[0;1;4;7m\\'
|
||||||
|
printf '\033[0m~'
|
||||||
|
printf '\033[0;1m_'
|
||||||
|
printf '\033[0;31;7m>'
|
||||||
|
printf '\033[0;31;4;7m^'
|
||||||
|
printf '\033[0;1;7m<'
|
||||||
|
done
|
||||||
|
printf '\033[0m'
|
||||||
|
for _ in $(seq 1 $PR); do
|
||||||
|
printf '#'
|
||||||
|
done
|
||||||
|
printf '%s' "$PR"
|
||||||
|
done
|
||||||
|
|
||||||
|
# set color
|
||||||
|
printf '\033[43;32;3m'
|
||||||
|
|
||||||
|
# move
|
||||||
|
printf '\033[1;10H'
|
||||||
|
# ECH 0
|
||||||
|
printf '1>\033[0X'
|
||||||
|
# move
|
||||||
|
printf '\033[3;10H'
|
||||||
|
# ECH default
|
||||||
|
printf '2>\033[X'
|
||||||
|
# move
|
||||||
|
printf '\033[5;10H'
|
||||||
|
# ECH 3
|
||||||
|
printf '3>\033[3X'
|
||||||
|
|
||||||
|
|
||||||
|
# set top/bottom margins:
|
||||||
|
printf '\033[8;14r'
|
||||||
|
# allow left/right margins
|
||||||
|
printf '\033[?69h'
|
||||||
|
# set left/right margins:
|
||||||
|
printf '\033[5;75s'
|
||||||
|
|
||||||
|
# move
|
||||||
|
printf '\033[7;10H'
|
||||||
|
# outside margins (top)
|
||||||
|
printf '4>\033[X'
|
||||||
|
# move
|
||||||
|
printf '\033[8;1H'
|
||||||
|
# outside margins(left)
|
||||||
|
printf '5>\033[X'
|
||||||
|
# move
|
||||||
|
printf '\033[15;10H'
|
||||||
|
# outside margins(bottom)
|
||||||
|
printf '6>\033[X'
|
||||||
|
# move
|
||||||
|
printf '\033[8;76H'
|
||||||
|
# outside margins(right)
|
||||||
|
printf '7>\033[X'
|
||||||
|
|
||||||
|
# move
|
||||||
|
printf '\033[9;10H'
|
||||||
|
# ECH full line
|
||||||
|
printf '8>\033[88888X'
|
||||||
|
|
||||||
|
# restrict cursor
|
||||||
|
printf '\033[?6h'
|
||||||
|
|
||||||
|
# move
|
||||||
|
printf '\033[4;4H'
|
||||||
|
# ECH still goes outside margins
|
||||||
|
printf '9>\033[888X'
|
|
@ -65,3 +65,4 @@ sd.sh 4bfda7ec3e6192acab077de2bc270525
|
||||||
decst8c.sh 0ea805e8f4c2626ce66c566a10548d0f
|
decst8c.sh 0ea805e8f4c2626ce66c566a10548d0f
|
||||||
ctc.sh d35eeacdb2e99f5ac8cc3c4e8d72f8b0
|
ctc.sh d35eeacdb2e99f5ac8cc3c4e8d72f8b0
|
||||||
tbc.sh d0216e4056e5ab1cb4d411b6d6074785
|
tbc.sh d0216e4056e5ab1cb4d411b6d6074785
|
||||||
|
ech.sh 6257d40c467d63cc7883c380357d87f7
|
||||||
|
|
Loading…
Reference in New Issue