From 72fe89e17cb9133e49e174167f461831dd84a7d9 Mon Sep 17 00:00:00 2001 From: Steven Date: Fri, 5 Mar 2010 22:12:23 +0000 Subject: [PATCH] S.A. history fixes git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@99 af15c1b1-3010-417e-b628-4374ebc0bcbd --- Quake/keys.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Quake/keys.c b/Quake/keys.c index 15c8b166..399aea87 100644 --- a/Quake/keys.c +++ b/Quake/keys.c @@ -392,7 +392,11 @@ void Key_Console (int key) Cbuf_AddText (key_lines[edit_line]+1); // skip the prompt Cbuf_AddText ("\n"); Con_Printf ("%s\n",key_lines[edit_line]); - edit_line = (edit_line + 1) & 31; + + // If the last two lines are identical, only store one (in history) + if (edit_line==0 || strcmp(key_lines[edit_line],key_lines[edit_line-1])) + edit_line = (edit_line + 1) & 31; + history_line = edit_line; key_lines[edit_line][0] = ']'; key_lines[edit_line][1] = 0; //johnfitz -- otherwise old history items show up in the new edit line @@ -497,6 +501,8 @@ void Key_Console (int key) return; case K_UPARROW: + if (history_line == 0) + return; key_tabpartial[0] = 0; do { @@ -527,6 +533,7 @@ void Key_Console (int key) if (history_line == edit_line) { key_lines[edit_line][0] = ']'; + key_lines[edit_line][1] = 0; key_linepos = 1; } else @@ -535,6 +542,17 @@ void Key_Console (int key) key_linepos = Q_strlen(key_lines[edit_line]); } return; + case 'c': + if (keydown[K_CTRL]) { + // Control+C (S.A) + // abort this line. + Con_Printf ("%s\n",key_lines[edit_line]); + key_lines[edit_line][0] = ']'; + key_lines[edit_line][1] = 0; //johnfitz -- otherwise old history items show up in the new edit line + key_linepos = 1; + history_line=edit_line; + return; + } } //johnfitz -- clipboard pasting, stolen from zquake