From 129decbdf77b17a1f0bc0957fdc9412582447ff3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= Date: Tue, 26 Jun 2012 11:57:40 -0400 Subject: [PATCH] terminal: Tab should not output spaces, just move cursor Emacs uses tab and backspace to move the cursor as well as the regular cursor movement escape codes. When it's less bytes than the escape code, emacs will use a tab or tab + backspace to move the cursor forward. The effect is that as you're moving around in the buffer, emacs will (seemingly) randomly insert spaces and overwrite what's in the terminal. Making tab just move the cursor as it should fixes this. --- clients/terminal.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/clients/terminal.c b/clients/terminal.c index 457756d6..7a5a67a8 100644 --- a/clients/terminal.c +++ b/clients/terminal.c @@ -1763,12 +1763,6 @@ handle_sgr(struct terminal *terminal, int code) static int handle_special_char(struct terminal *terminal, char c) { - union utf8_char *row; - struct attr *attr_row; - - row = terminal_get_row(terminal, terminal->row); - attr_row = terminal_get_attr_row(terminal, terminal->row); - switch(c) { case '\r': terminal->column = 0; @@ -1791,9 +1785,6 @@ handle_special_char(struct terminal *terminal, char c) while (terminal->column < terminal->width) { if (terminal->mode & MODE_IRM) terminal_shift_line(terminal, +1); - row[terminal->column].byte[0] = ' '; - row[terminal->column].byte[1] = '\0'; - attr_row[terminal->column] = terminal->curr_attr; terminal->column++; if (terminal->tab_ruler[terminal->column]) break; }