[ekg2-devel] ncurses history: Nie wszystko warto pamiętać.

Wiesław Ochmiński wiechu w wiechu.com
Pon, 18 Lut 2008, 16:28:34 CET


Kłaniam!

Może nie warto zapamiętywać w history kilku kolejnych takich samych linii?

    Pozdrawiam,
	W.
-- 
 Wiesław Ochmiński, Polska Północna, Malbork.
-------------- następna część ---------
Index: plugins/ncurses/vars-en.txt
===================================================================
--- plugins/ncurses/vars-en.txt	(wersja 3796)
+++ plugins/ncurses/vars-en.txt	(kopia robocza)
@@ -115,6 +115,12 @@
 	
 	defines header size displayed on the top of the screen. Maximum value: 5.
 
+history_savedups
+	type: integer
+	default value: 1
+
+	if set to 0, don't save lines matching the previous history entry
+
 kill_irc_window
 	type: bool
 	default value: 1
Index: plugins/ncurses/vars-pl.txt
===================================================================
--- plugins/ncurses/vars-pl.txt	(wersja 3796)
+++ plugins/ncurses/vars-pl.txt	(kopia robocza)
@@ -161,6 +161,13 @@
 	określa rozmiar nagłówka okna wyświetlanego na górze ekranu.
 	maksymalna ilość linii to 5.
 
+history_savedups
+	typ: liczba
+	domyślna wartość: 1
+
+	jeśli ustawiona na 0, to wiersze pasujące do ostatniego wiersza
+	historii nie są wprowadzane do listy historii.
+
 kill_irc_window
 	typ: bool
 	domyślna wartość: 1
Index: plugins/ncurses/old.h
===================================================================
--- plugins/ncurses/old.h	(wersja 3796)
+++ plugins/ncurses/old.h	(kopia robocza)
@@ -147,6 +147,7 @@
 extern int config_display_transparent;
 extern int config_enter_scrolls;
 extern int config_header_size;
+extern int config_history_savedups;
 extern int config_margin_size;
 extern int config_statusbar_size;
 extern int config_kill_irc_window;
Index: plugins/ncurses/main.c
===================================================================
--- plugins/ncurses/main.c	(wersja 3796)
+++ plugins/ncurses/main.c	(kopia robocza)
@@ -50,6 +50,7 @@
 int config_enter_scrolls;
 int config_header_size;
 int config_margin_size;
+int config_history_savedups = 1;
 int config_kill_irc_window = 1;
 int config_statusbar_size;
 int config_lastlog_size;
@@ -519,6 +520,7 @@
 	config_backlog_size = 1000;         /* maksymalny rozmiar backloga */
 	config_display_transparent = 1;     /* czy chcemy przezroczyste tło? */
         config_kill_irc_window = 1;         /* czy zamykać kanały ircowe przez alt-k? */
+	config_history_savedups = 1;		/* save lines matching the previous history entry */
 	config_statusbar_size = 1;
 	config_header_size = 0;
 	config_enter_scrolls = 0;
@@ -672,6 +674,7 @@
 	variable_add(&ncurses_plugin, ("display_transparent"), VAR_BOOL, 1, &config_display_transparent, ncurses_display_transparent_changed, NULL, NULL);
 	variable_add(&ncurses_plugin, ("enter_scrolls"), VAR_BOOL, 1, &config_enter_scrolls, NULL, NULL, NULL);
 	variable_add(&ncurses_plugin, ("header_size"), VAR_INT, 1, &config_header_size, header_statusbar_resize, NULL, NULL);
+	variable_add(&ncurses_plugin, ("history_savedups"),  VAR_BOOL, 1, &config_history_savedups, NULL, NULL, NULL);
 	variable_add(&ncurses_plugin, ("kill_irc_window"),  VAR_BOOL, 1, &config_kill_irc_window, NULL, NULL, NULL);
         variable_add(&ncurses_plugin, ("margin_size"), VAR_INT, 1, &config_margin_size, NULL, NULL, NULL);
 	variable_add(&ncurses_plugin, ("statusbar_size"), VAR_INT, 1, &config_statusbar_size, header_statusbar_resize, NULL, NULL);
Index: plugins/ncurses/bindings.c
===================================================================
--- plugins/ncurses/bindings.c	(wersja 3796)
+++ plugins/ncurses/bindings.c	(kopia robocza)
@@ -267,11 +267,13 @@
 	}
 
 	if (xwcscmp(line, TEXT(""))) {
+	    if (config_history_savedups || xwcscmp(line, history[1])) {
 		if (history[0] != line)
 			xfree(history[0]);
 		history[0] = xwcsdup(line);
 		xfree(history[HISTORY_MAX - 1]);
 		memmove(&history[1], &history[0], sizeof(history) - sizeof(history[0]));
+	    }
 	} else {
 		if (config_enter_scrolls)
 			print("none", "");


Więcej informacji o liście dyskusyjnej ekg2-devel