(svn r2332) - Feature: Add 'clear' command and CTRL+L to empty the console window
authorDarkvater
Mon, 16 May 2005 13:46:26 +0000
changeset 1827 b8a0edd6eb89
parent 1826 d123cb6b11dc
child 1828 4035c8aaa3ea
(svn r2332) - Feature: Add 'clear' command and CTRL+L to empty the console window
- Fix: do not execute emtpy commands anymore
console.c
console.h
console_cmds.c
--- a/console.c	Mon May 16 12:15:53 2005 +0000
+++ b/console.c	Mon May 16 13:46:26 2005 +0000
@@ -151,6 +151,9 @@
 						SetWindowDirty(w);
 					}
 					break;
+					case (WKC_CTRL | 'L'):
+					IConsoleCmdExec("clear");
+					break;
 				case WKC_BACKSPACE: case WKC_DELETE:
 					if (DeleteTextBufferChar(&_iconsole_cmdline, e->keypress.keycode)) {
 						IConsoleResetHistoryPos();
@@ -222,13 +225,19 @@
 	IConsoleHistoryAdd("");
 }
 
-void IConsoleClear(void)
+void IConsoleClearBuffer(void)
 {
 	uint i;
-	for (i = 0; i <= ICON_BUFFER; i++)
+	for (i = 0; i <= ICON_BUFFER; i++) {
 		free(_iconsole_buffer[i]);
+		_iconsole_buffer[i] = NULL;
+	}
+}
 
+static void IConsoleClear(void)
+{
 	free(_iconsole_cmdline.buf);
+	IConsoleClearBuffer();
 }
 
 static void IConsoleWriteToLogFile(const char* string)
@@ -1022,6 +1031,8 @@
 	bool longtoken = false;
 	bool foundtoken = false;
 
+	if (*cmdstr == '\0') return; // don't execute empty commands
+
 	for (cmdptr = cmdstr; *cmdptr != '\0'; cmdptr++) {
 		if (!IsValidAsciiChar(*cmdptr)) {
 			IConsoleError("command contains malformed characters, aborting");
--- a/console.h	Mon May 16 12:15:53 2005 +0000
+++ b/console.h	Mon May 16 13:46:26 2005 +0000
@@ -114,8 +114,8 @@
 
 // ** console functions ** //
 void IConsoleInit(void);
-void IConsoleClear(void);
 void IConsoleFree(void);
+void IConsoleClearBuffer(void);
 void IConsoleResize(void);
 void IConsoleSwitch(void);
 void IConsoleClose(void);
--- a/console_cmds.c	Mon May 16 12:15:53 2005 +0000
+++ b/console_cmds.c	Mon May 16 13:46:26 2005 +0000
@@ -268,7 +268,6 @@
 	return true;
 }
 
-
 DEF_CONSOLE_CMD(ConPrintWorkingDirectory)
 {
 	const char *path;
@@ -287,6 +286,18 @@
 	return true;
 }
 
+DEF_CONSOLE_CMD(ConClearBuffer)
+{
+	if (argc == 0) {
+		IConsoleHelp("Clear the console buffer. Usage: 'clear'");
+		return true;
+	}
+
+	IConsoleClearBuffer();
+	InvalidateWindow(WC_CONSOLE, 0);
+	return true;
+}
+
 
 // ********************************* //
 // * Network Core Console Commands * //
@@ -1217,6 +1228,7 @@
 	IConsoleCmdRegister("ls",           ConListFiles);
 	IConsoleCmdRegister("cd",           ConChangeDirectory);
 	IConsoleCmdRegister("pwd",          ConPrintWorkingDirectory);
+	IConsoleCmdRegister("clear",        ConClearBuffer);
 
 	IConsoleAliasRegister("dir",      "ls");
 	IConsoleAliasRegister("newmap",   "newgame");