mirror of
https://github.com/kovidgoyal/kitty
synced 2026-07-25 09:48:09 +02:00
Handle leading zeroes in CSI codes
This commit is contained in:
@@ -15,9 +15,16 @@ static unsigned int pow10[10] = {
|
|||||||
static inline unsigned int
|
static inline unsigned int
|
||||||
utoi(uint32_t *buf, unsigned int sz) {
|
utoi(uint32_t *buf, unsigned int sz) {
|
||||||
unsigned int ans = 0;
|
unsigned int ans = 0;
|
||||||
|
uint32_t *p = buf;
|
||||||
|
// Ignore leading zeros
|
||||||
|
while(sz > 0) {
|
||||||
|
printf("*p=%c\n", *p);
|
||||||
|
if (*p == '0') { p++; sz--; }
|
||||||
|
else break;
|
||||||
|
}
|
||||||
if (sz < sizeof(pow10)/sizeof(pow10[10])) {
|
if (sz < sizeof(pow10)/sizeof(pow10[10])) {
|
||||||
for (int i = sz-1, j=0; i >=0; i--, j++) {
|
for (int i = sz-1, j=0; i >=0; i--, j++) {
|
||||||
ans += (buf[i] - '0') * pow10[j];
|
ans += (p[i] - '0') * pow10[j];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ans;
|
return ans;
|
||||||
|
|||||||
@@ -85,6 +85,7 @@ class TestParser(BaseTest):
|
|||||||
pb('\033[4H', ('screen_cursor_position', 4, 1))
|
pb('\033[4H', ('screen_cursor_position', 4, 1))
|
||||||
pb('\033[3;2H', ('screen_cursor_position', 3, 2))
|
pb('\033[3;2H', ('screen_cursor_position', 3, 2))
|
||||||
pb('\033[3;2;H', ('screen_cursor_position', 3, 2))
|
pb('\033[3;2;H', ('screen_cursor_position', 3, 2))
|
||||||
|
pb('\033[00000000003;0000000000000002H', ('screen_cursor_position', 3, 2))
|
||||||
self.ae(s.cursor.x, 1), self.ae(s.cursor.y, 2)
|
self.ae(s.cursor.x, 1), self.ae(s.cursor.y, 2)
|
||||||
pb('\033[J', ('screen_erase_in_display', 0, 0))
|
pb('\033[J', ('screen_erase_in_display', 0, 0))
|
||||||
pb('\033[?J', ('screen_erase_in_display', 0, 1))
|
pb('\033[?J', ('screen_erase_in_display', 0, 1))
|
||||||
|
|||||||
Reference in New Issue
Block a user