summaryrefslogtreecommitdiff
path: root/src/escape.c
diff options
context:
space:
mode:
authorBerke Güzel <wenekar1@gmail.com>2026-10-14 17:17:43 +0300
committerBerke Güzel <wenekar1@gmail.com>2026-10-14 17:17:43 +0300
commit513bf031a589d9e2a1a2730adf56f95e5e316a06 (patch)
tree66ef6b095e6aa00c790ac37705fb9df3b099b92a /src/escape.c
parent234dd752dc2e15afab38cbbf78f8aa32be72ea5f (diff)
Remove unused private functions and inline trivial helpers
Diffstat (limited to 'src/escape.c')
-rw-r--r--src/escape.c41
1 files changed, 19 insertions, 22 deletions
diff --git a/src/escape.c b/src/escape.c
index 7956017..da0449a 100644
--- a/src/escape.c
+++ b/src/escape.c
@@ -20,7 +20,8 @@ static int sgr_color_param(const struct term *t, char *buf, size_t sz, int base,
return snprintf(buf, sz, ";%d", i < 8 ? base + i : base + 60 + i - 8);
return snprintf(buf, sz, ";%d:5:%d", base + 8, i);
}
- c = palette_resolve(&t->palette, c);
+ if (term_color_is_slot(c))
+ c = t->palette.colors[c & TERM_COLOR_SLOT_INDEX];
return snprintf(buf, sz, ";%d:2:%d:%d:%d", base + 8,
(int)((c >> 16) & 0xff), (int)((c >> 8) & 0xff), (int)(c & 0xff));
}
@@ -557,12 +558,6 @@ static int mode_get(const struct term *t, int mode, bool priv)
return -1;
}
-static int mode_status(const struct term *t, int mode, bool priv)
-{
- int set = mode_get(t, mode, priv);
- return set < 0 ? 0 : set ? 1 : 2;
-}
-
static int cursor_top(const struct term *t) { return t->origin_mode ? t->scroll_top : 0; }
static int cursor_bottom(const struct term *t) { return t->origin_mode ? t->scroll_bottom : t->rows - 1; }
static int cursor_left(const struct term *t) { return t->origin_mode && t->lr_margin_mode ? t->left_margin : 0; }
@@ -585,12 +580,16 @@ static void mode_set(struct term *t, int mode, bool enabled, bool priv)
default: break;
}
if (mode == 5) {
- term_sc_set_reverse_video(t, enabled);
+ if (t->reverse_video != enabled) {
+ t->reverse_video = enabled;
+ t->full_gen++;
+ }
} else if (mode == 6) {
t->origin_mode = enabled;
sc_move(t, 0, enabled ? t->scroll_top : 0);
} else if (mode == 7) {
- term_sc_set_autowrap(t, enabled);
+ t->autowrap = enabled;
+ t->pending_wrap = false;
} else if (mode == 1048) {
if (enabled) t->saved = term_cursor_save(t);
else sc_restore_cursor(t, &t->saved);
@@ -685,14 +684,16 @@ static inline TERM_ALWAYS_INLINE void dispatch_csi(struct term *t, const struct
case 'L':
case 'M':
if (csi->prefix || t->cursor_y < t->scroll_top || t->cursor_y > t->scroll_bottom) break;
- term_sc_scroll_region(t, t->cursor_y, t->scroll_bottom, csi_count(csi), csi->final == 'L');
+ term_screen_scroll_region(t, t->cursor_y, t->scroll_bottom,
+ csi_count(csi), csi->final == 'L', false);
/* IL and DL move the cursor to the left margin (xterm). */
sc_move(t, t->lr_margin_mode ? t->left_margin : 0, t->cursor_y);
break;
case 'S':
case 'T':
if (csi->prefix || csi->nparams > 1) break;
- term_sc_scroll(t, csi_count(csi), csi->final == 'T');
+ term_screen_scroll_region(t, t->scroll_top, t->scroll_bottom,
+ csi_count(csi), csi->final == 'T', true);
break;
case 'd': {
int64_t r = (int64_t)csi_count(csi) - 1 + cursor_top(t);
@@ -845,9 +846,10 @@ static inline TERM_ALWAYS_INLINE void dispatch_csi(struct term *t, const struct
sc_move(t, 0, 0);
} else if (csi->intermediate == '$' && csi->nparams >= 1) {
char reply[32];
+ int set = mode_get(t, csi->params[0], csi->prefix == '?');
snprintf(reply, sizeof(reply), "\033[%s%d;%d$y",
csi->prefix == '?' ? "?" : "", csi->params[0],
- mode_status(t, csi->params[0], csi->prefix == '?'));
+ set < 0 ? 0 : set ? 1 : 2);
send_response(t, reply);
}
break;
@@ -935,7 +937,7 @@ static void dispatch_esc(struct term *t, unsigned char ch)
break;
case 'M':
if (t->cursor_y == t->scroll_top)
- term_sc_scroll_region(t, t->scroll_top, t->scroll_bottom, 1, true);
+ term_screen_scroll_region(t, t->scroll_top, t->scroll_bottom, 1, true, false);
else
sc_move(t, t->cursor_x, t->cursor_y > 0 ? t->cursor_y - 1 : 0);
break;
@@ -1029,7 +1031,7 @@ void term_escape_byte(struct term *t, unsigned char ch)
term_text_ground(t, ch);
} else if (term_osc_room(t) || term_osc_grow(t)) {
*term_osc_tail(t) = (char)ch;
- term_osc_commit(t, 1);
+ t->osc_len++;
} else {
t->str_truncated = true;
}
@@ -1078,21 +1080,16 @@ void term_escape_byte(struct term *t, unsigned char ch)
}
}
-static inline size_t str_appendable_span(const char *buf, size_t len)
-{
- return scan_printable_span(buf, len, 0x80);
-}
-
size_t term_escape_str(struct term *t, const char *buf, size_t len)
{
if (t->state == ST_IGNORE) {
- size_t take = str_appendable_span(buf, len);
+ size_t take = scan_printable_span(buf, len, 0x80);
if (take < len)
term_escape_byte(t, (unsigned char)buf[take++]);
return take;
}
int is_osc = t->state == ST_OSC;
- size_t take = str_appendable_span(buf, len);
+ size_t take = scan_printable_span(buf, len, 0x80);
if (is_osc) {
size_t room = term_osc_room(t);
if (take > room && term_osc_grow(t))
@@ -1101,7 +1098,7 @@ size_t term_escape_str(struct term *t, const char *buf, size_t len)
if (take > room)
take = room;
memcpy(term_osc_tail(t), buf, take);
- term_osc_commit(t, take);
+ t->osc_len += (int)take;
} else {
t->str_truncated = true;
}