[vte] emulation: Migrating from terminfo: single-byte control codes
- From: Egmont Koblinger <egmontkob src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vte] emulation: Migrating from terminfo: single-byte control codes
- Date: Mon, 19 May 2014 13:09:18 +0000 (UTC)
commit 7281fa8dac1bdb1d091e47fd2ad5bcc9c6fbf616
Author: Egmont Koblinger <egmont gmail com>
Date: Mon May 19 14:41:02 2014 +0200
emulation: Migrating from terminfo: single-byte control codes
Hardwire the behavior of single-byte control codes (newline, tab etc.) and
closely related ones (e.g. tab stops), rather than relying on terminfo.
Implement CSI n I (n tabs).
src/caps.c | 8 +++++
src/vteseq-2.gperf | 30 ++++++++++----------
src/vteseq-n.gperf | 11 +++++--
src/vteseq.c | 80 ++++++++++++---------------------------------------
4 files changed, 50 insertions(+), 79 deletions(-)
---
diff --git a/src/caps.c b/src/caps.c
index 109a461..6aab339 100644
--- a/src/caps.c
+++ b/src/caps.c
@@ -38,13 +38,20 @@
#define CR "\015"
#define SO "\016"
#define SI "\017"
+#define DEL "\177"
/* From some really old XTerm docs we had at the office, and an updated
* version at Moy, Gildea, and Dickey. */
struct _vte_capability_string _vte_xterm_capability_strings[] = {
{ENQ, "return-terminal-status", 0},
+ {BEL, "bell", 0},
+ {BS, "backspace", 0},
+ {TAB, "tab", 0},
+ {LF, "line-feed", 0},
{VT, "vertical-tab", 0},
{FF, "form-feed", 0},
+ {CR, "carriage-return", 0},
+ {DEL, "backspace", 0},
{ESC " F", "7-bit-controls", 0},
{ESC " G", "8-bit-controls", 0},
@@ -116,6 +123,7 @@ struct _vte_capability_string _vte_xterm_capability_strings[] = {
{CSI ";%dH", "cursor-position-top-row", 0},
{CSI "%d;%dH", "cursor-position", 0},
{CSI "I", "cursor-forward-tabulation", 0},
+ {CSI "%dI", "cursor-forward-tabulation", 0},
{CSI "J", "erase-in-display", 0},
{CSI "%dJ", "erase-in-display", 0},
{CSI "?J", "selective-erase-in-display", 0},
diff --git a/src/vteseq-2.gperf b/src/vteseq-2.gperf
index 7179159..e0444b7 100644
--- a/src/vteseq-2.gperf
+++ b/src/vteseq-2.gperf
@@ -147,17 +147,17 @@ struct vteseq_2_struct {
"RI", VTE_SEQUENCE_HANDLER(vte_sequence_handler_RI)
#"RX", VTE_SEQUENCE_HANDLER_NULL
#"SA", VTE_SEQUENCE_HANDLER_NULL
-"SF", VTE_SEQUENCE_HANDLER(vte_sequence_handler_SF)
-"SR", VTE_SEQUENCE_HANDLER(vte_sequence_handler_SR)
+#"SF", VTE_SEQUENCE_HANDLER(vte_sequence_handler_SF)
+#"SR", VTE_SEQUENCE_HANDLER(vte_sequence_handler_SR)
#"SX", VTE_SEQUENCE_HANDLER_NULL
"UP", VTE_SEQUENCE_HANDLER(vte_sequence_handler_UP)
#"XF", VTE_SEQUENCE_HANDLER_NULL
"ae", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ae)
"al", VTE_SEQUENCE_HANDLER(vte_sequence_handler_al)
"as", VTE_SEQUENCE_HANDLER(vte_sequence_handler_as)
-"bc", VTE_SEQUENCE_HANDLER(vte_sequence_handler_le)
-"bl", VTE_SEQUENCE_HANDLER(vte_sequence_handler_bl)
-"bt", VTE_SEQUENCE_HANDLER(vte_sequence_handler_bt)
+#"bc", VTE_SEQUENCE_HANDLER(vte_sequence_handler_le)
+#"bl", VTE_SEQUENCE_HANDLER(vte_sequence_handler_bl)
+#"bt", VTE_SEQUENCE_HANDLER(vte_sequence_handler_bt)
"cS", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cS)
"cb", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cb)
"cc", VTE_SEQUENCE_HANDLER(vte_sequence_handler_noop)
@@ -166,14 +166,14 @@ struct vteseq_2_struct {
"ch", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ch)
"cl", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cl)
"cm", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cm)
-"cr", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cr)
+#"cr", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cr)
"cs", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cs)
-"ct", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ct)
+#"ct", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ct)
"cv", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cv)
"dc", VTE_SEQUENCE_HANDLER(vte_sequence_handler_dc)
"dl", VTE_SEQUENCE_HANDLER(vte_sequence_handler_dl)
"dm", VTE_SEQUENCE_HANDLER(vte_sequence_handler_noop)
-"do", VTE_SEQUENCE_HANDLER(vte_sequence_handler_do)
+#"do", VTE_SEQUENCE_HANDLER(vte_sequence_handler_do)
#"ds", VTE_SEQUENCE_HANDLER_NULL
"eA", VTE_SEQUENCE_HANDLER(vte_sequence_handler_eA)
"ec", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ec)
@@ -219,7 +219,7 @@ struct vteseq_2_struct {
#"kS", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
#"kT", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
#"ka", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
-"kb", VTE_SEQUENCE_HANDLER(vte_sequence_handler_kb)
+#"kb", VTE_SEQUENCE_HANDLER(vte_sequence_handler_kb)
#"kd", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
"ke", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ke)
#"kh", VTE_SEQUENCE_HANDLER(vte_sequence_handler_complain_key)
@@ -239,7 +239,7 @@ struct vteseq_2_struct {
#"l8", VTE_SEQUENCE_HANDLER_NULL
#"l9", VTE_SEQUENCE_HANDLER_NULL
#"la", VTE_SEQUENCE_HANDLER_NULL
-"le", VTE_SEQUENCE_HANDLER(vte_sequence_handler_le)
+#"le", VTE_SEQUENCE_HANDLER(vte_sequence_handler_le)
"ll", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ll)
"mb", VTE_SEQUENCE_HANDLER(vte_sequence_handler_mb)
"md", VTE_SEQUENCE_HANDLER(vte_sequence_handler_md)
@@ -251,7 +251,7 @@ struct vteseq_2_struct {
"mp", VTE_SEQUENCE_HANDLER(vte_sequence_handler_mp)
"mr", VTE_SEQUENCE_HANDLER(vte_sequence_handler_mr)
"nd", VTE_SEQUENCE_HANDLER(vte_sequence_handler_nd)
-"nw", VTE_SEQUENCE_HANDLER(vte_sequence_handler_nw)
+#"nw", VTE_SEQUENCE_HANDLER(vte_sequence_handler_nw)
#"pO", VTE_SEQUENCE_HANDLER_NULL
#"pc", VTE_SEQUENCE_HANDLER_NULL
#"pf", VTE_SEQUENCE_HANDLER_NULL
@@ -272,11 +272,11 @@ struct vteseq_2_struct {
#"sa", VTE_SEQUENCE_HANDLER_NULL
"sc", VTE_SEQUENCE_HANDLER(vte_sequence_handler_sc)
"se", VTE_SEQUENCE_HANDLER(vte_sequence_handler_se)
-"sf", VTE_SEQUENCE_HANDLER(vte_sequence_handler_sf)
+#"sf", VTE_SEQUENCE_HANDLER(vte_sequence_handler_sf)
"so", VTE_SEQUENCE_HANDLER(vte_sequence_handler_so)
-"sr", VTE_SEQUENCE_HANDLER(vte_sequence_handler_sr)
-"st", VTE_SEQUENCE_HANDLER(vte_sequence_handler_st)
-"ta", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ta)
+#"sr", VTE_SEQUENCE_HANDLER(vte_sequence_handler_sr)
+#"st", VTE_SEQUENCE_HANDLER(vte_sequence_handler_st)
+#"ta", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ta)
"te", VTE_SEQUENCE_HANDLER(vte_sequence_handler_noop)
"ti", VTE_SEQUENCE_HANDLER(vte_sequence_handler_noop)
#"ts", VTE_SEQUENCE_HANDLER_NULL
diff --git a/src/vteseq-n.gperf b/src/vteseq-n.gperf
index fff6e7b..94aefe6 100644
--- a/src/vteseq-n.gperf
+++ b/src/vteseq-n.gperf
@@ -21,10 +21,15 @@ struct vteseq_n_struct {
%%
#"..rp", VTE_SEQUENCE_HANDLER_NULL
#"..sa", VTE_SEQUENCE_HANDLER_NULL
+"line-feed", VTE_SEQUENCE_HANDLER(vte_sequence_handler_line_feed)
+"carriage-return", VTE_SEQUENCE_HANDLER(vte_sequence_handler_carriage_return)
+"bell", VTE_SEQUENCE_HANDLER(vte_sequence_handler_bell)
+"backspace", VTE_SEQUENCE_HANDLER(vte_sequence_handler_backspace)
+"tab", VTE_SEQUENCE_HANDLER(vte_sequence_handler_tab)
"index", VTE_SEQUENCE_HANDLER(vte_sequence_handler_index)
"decset", VTE_SEQUENCE_HANDLER(vte_sequence_handler_decset)
#"repeat", VTE_SEQUENCE_HANDLER_NULL
-"tab-set", VTE_SEQUENCE_HANDLER(vte_sequence_handler_st)
+"tab-set", VTE_SEQUENCE_HANDLER(vte_sequence_handler_tab_set)
"decreset", VTE_SEQUENCE_HANDLER(vte_sequence_handler_decreset)
"set-mode", VTE_SEQUENCE_HANDLER(vte_sequence_handler_set_mode)
"cursor-up", VTE_SEQUENCE_HANDLER(vte_sequence_handler_UP)
@@ -61,7 +66,7 @@ struct vteseq_n_struct {
#"dec-media-copy", VTE_SEQUENCE_HANDLER_NULL
"restore-cursor", VTE_SEQUENCE_HANDLER(vte_sequence_handler_rc)
"set-icon-title", VTE_SEQUENCE_HANDLER(vte_sequence_handler_set_icon_title)
-"cursor-back-tab", VTE_SEQUENCE_HANDLER(vte_sequence_handler_bt)
+"cursor-back-tab", VTE_SEQUENCE_HANDLER(vte_sequence_handler_back_tab)
"cursor-backward", VTE_SEQUENCE_HANDLER(vte_sequence_handler_LE)
"cursor-position", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cursor_position)
"cursor-position-top-row", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cursor_position_top_row)
@@ -124,7 +129,7 @@ struct vteseq_n_struct {
#"enable-locator-reporting", VTE_SEQUENCE_HANDLER_NULL
#"request-locator-position", VTE_SEQUENCE_HANDLER_NULL
"cursor-character-absolute", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cursor_character_absolute)
-"cursor-forward-tabulation", VTE_SEQUENCE_HANDLER(vte_sequence_handler_ta)
+"cursor-forward-tabulation", VTE_SEQUENCE_HANDLER(vte_sequence_handler_cursor_forward_tabulation)
#"double-height-bottom-half", VTE_SEQUENCE_HANDLER_NULL
"set-icon-and-window-title", VTE_SEQUENCE_HANDLER(vte_sequence_handler_set_icon_and_window_title)
#"selective-erase-in-display", VTE_SEQUENCE_HANDLER_NULL
diff --git a/src/vteseq.c b/src/vteseq.c
index 41d64cc..f71c09a 100644
--- a/src/vteseq.c
+++ b/src/vteseq.c
@@ -991,7 +991,7 @@ vte_sequence_handler_as (VteTerminal *terminal, GValueArray *params)
/* Beep. */
static void
-vte_sequence_handler_bl (VteTerminal *terminal, GValueArray *params)
+vte_sequence_handler_bell (VteTerminal *terminal, GValueArray *params)
{
_vte_terminal_beep (terminal);
g_signal_emit_by_name(terminal, "beep");
@@ -999,7 +999,7 @@ vte_sequence_handler_bl (VteTerminal *terminal, GValueArray *params)
/* Backtab. */
static void
-vte_sequence_handler_bt (VteTerminal *terminal, GValueArray *params)
+vte_sequence_handler_back_tab (VteTerminal *terminal, GValueArray *params)
{
long newcol;
@@ -1217,7 +1217,7 @@ vte_sequence_handler_cm (VteTerminal *terminal, GValueArray *params)
/* Carriage return. */
static void
-vte_sequence_handler_cr (VteTerminal *terminal, GValueArray *params)
+vte_sequence_handler_carriage_return (VteTerminal *terminal, GValueArray *params)
{
terminal->pvt->screen->cursor_current.col = 0;
}
@@ -1315,16 +1315,6 @@ vte_sequence_handler_cS (VteTerminal *terminal, GValueArray *params)
screen->insert_delta + end);
}
-/* Clear all tab stops. */
-static void
-vte_sequence_handler_ct (VteTerminal *terminal, GValueArray *params)
-{
- if (terminal->pvt->tabstops != NULL) {
- g_hash_table_destroy(terminal->pvt->tabstops);
- terminal->pvt->tabstops = NULL;
- }
-}
-
/* Move the cursor to the lower left-hand corner. */
static void
vte_sequence_handler_cursor_lower_left (VteTerminal *terminal, GValueArray *params)
@@ -1569,7 +1559,7 @@ vte_sequence_handler_ei (VteTerminal *terminal, GValueArray *params)
static void
vte_sequence_handler_form_feed (VteTerminal *terminal, GValueArray *params)
{
- vte_sequence_handler_index (terminal, params);
+ vte_sequence_handler_line_feed (terminal, params);
}
/* Move the cursor to the home position. */
@@ -1613,16 +1603,7 @@ vte_sequence_handler_im (VteTerminal *terminal, GValueArray *params)
static void
vte_sequence_handler_index (VteTerminal *terminal, GValueArray *params)
{
- vte_sequence_handler_sf (terminal, params);
-}
-
-/* Send me a backspace key sym, will you? Guess that the application meant
- * to send the cursor back one position. */
-static void
-vte_sequence_handler_kb (VteTerminal *terminal, GValueArray *params)
-{
- /* Move the cursor left. */
- vte_sequence_handler_le (terminal, params);
+ vte_sequence_handler_line_feed (terminal, params);
}
/* Keypad mode end. */
@@ -1641,7 +1622,7 @@ vte_sequence_handler_ks (VteTerminal *terminal, GValueArray *params)
/* Cursor left. */
static void
-vte_sequence_handler_le (VteTerminal *terminal, GValueArray *params)
+vte_sequence_handler_backspace (VteTerminal *terminal, GValueArray *params)
{
VteScreen *screen;
@@ -1657,7 +1638,7 @@ vte_sequence_handler_le (VteTerminal *terminal, GValueArray *params)
static void
vte_sequence_handler_LE (VteTerminal *terminal, GValueArray *params)
{
- vte_sequence_handler_multiple(terminal, params, vte_sequence_handler_le);
+ vte_sequence_handler_multiple(terminal, params, vte_sequence_handler_backspace);
}
/* Move the cursor to the lower left corner of the display. */
@@ -1751,13 +1732,6 @@ vte_sequence_handler_noop (VteTerminal *terminal, GValueArray *params)
{
}
-/* Carriage return command(?). */
-static void
-vte_sequence_handler_nw (VteTerminal *terminal, GValueArray *params)
-{
- vte_sequence_handler_cr (terminal, params);
-}
-
/* Restore cursor (position). */
static void
vte_sequence_handler_rc (VteTerminal *terminal, GValueArray *params)
@@ -1772,13 +1746,6 @@ vte_sequence_handler_rc (VteTerminal *terminal, GValueArray *params)
terminal->pvt->row_count - 1);
}
-/* Cursor down, with scrolling. */
-static void
-vte_sequence_handler_reverse_index (VteTerminal *terminal, GValueArray *params)
-{
- vte_sequence_handler_sr (terminal, params);
-}
-
/* Cursor right N characters. */
static void
vte_sequence_handler_RI (VteTerminal *terminal, GValueArray *params)
@@ -1939,19 +1906,11 @@ vte_sequence_handler_se (VteTerminal *terminal, GValueArray *params)
/* Cursor down, with scrolling. */
static void
-vte_sequence_handler_sf (VteTerminal *terminal, GValueArray *params)
+vte_sequence_handler_line_feed (VteTerminal *terminal, GValueArray *params)
{
_vte_terminal_cursor_down (terminal);
}
-/* Cursor down, with scrolling. */
-static void
-vte_sequence_handler_SF (VteTerminal *terminal, GValueArray *params)
-{
- /* XXX implement this directly in _vte_terminal_cursor_down */
- vte_sequence_handler_multiple(terminal, params, vte_sequence_handler_sf);
-}
-
/* Standout start. */
static void
vte_sequence_handler_so (VteTerminal *terminal, GValueArray *params)
@@ -1959,9 +1918,9 @@ vte_sequence_handler_so (VteTerminal *terminal, GValueArray *params)
terminal->pvt->screen->defaults.attr.reverse = 1;
}
-/* Cursor up, scrolling if need be. */
+/* Cursor up 1 line, with scrolling. */
static void
-vte_sequence_handler_sr (VteTerminal *terminal, GValueArray *params)
+vte_sequence_handler_reverse_index (VteTerminal *terminal, GValueArray *params)
{
long start, end;
VteScreen *screen;
@@ -1996,16 +1955,9 @@ vte_sequence_handler_sr (VteTerminal *terminal, GValueArray *params)
terminal->pvt->text_modified_flag = TRUE;
}
-/* Cursor up, with scrolling. */
-static void
-vte_sequence_handler_SR (VteTerminal *terminal, GValueArray *params)
-{
- vte_sequence_handler_multiple(terminal, params, vte_sequence_handler_sr);
-}
-
/* Set tab stop in the current column. */
static void
-vte_sequence_handler_st (VteTerminal *terminal, GValueArray *params)
+vte_sequence_handler_tab_set (VteTerminal *terminal, GValueArray *params)
{
if (terminal->pvt->tabstops == NULL) {
terminal->pvt->tabstops = g_hash_table_new(NULL, NULL);
@@ -2016,7 +1968,7 @@ vte_sequence_handler_st (VteTerminal *terminal, GValueArray *params)
/* Tab. */
static void
-vte_sequence_handler_ta (VteTerminal *terminal, GValueArray *params)
+vte_sequence_handler_tab (VteTerminal *terminal, GValueArray *params)
{
VteScreen *screen;
long old_len, newcol, col;
@@ -2105,6 +2057,12 @@ vte_sequence_handler_ta (VteTerminal *terminal, GValueArray *params)
}
}
+static void
+vte_sequence_handler_cursor_forward_tabulation (VteTerminal *terminal, GValueArray *params)
+{
+ vte_sequence_handler_multiple_r(terminal, params, vte_sequence_handler_tab);
+}
+
/* Clear tabs selectively. */
static void
vte_sequence_handler_tab_clear (VteTerminal *terminal, GValueArray *params)
@@ -2218,7 +2176,7 @@ vte_sequence_handler_ve (VteTerminal *terminal, GValueArray *params)
static void
vte_sequence_handler_vertical_tab (VteTerminal *terminal, GValueArray *params)
{
- vte_sequence_handler_index (terminal, params);
+ vte_sequence_handler_line_feed (terminal, params);
}
/* Cursor invisible. */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]