summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorailin-nemui <ailin-nemui@users.noreply.github.com>2016-01-08 15:42:59 +0100
committerailin-nemui <ailin-nemui@users.noreply.github.com>2016-01-08 15:42:59 +0100
commitad842ea8a60f107d68df4298a8914e66edf95c3b (patch)
treebb626f02e75538edea4c9c698b0c322aca26e2c7 /src
parent4659cea65a663b11f3cc16e1d03c9955a4135238 (diff)
downloadirssi-ad842ea8a60f107d68df4298a8914e66edf95c3b.zip
reorder history add and fixes
Diffstat (limited to 'src')
-rw-r--r--src/fe-common/core/command-history.c10
-rw-r--r--src/fe-common/core/window-commands.c4
-rw-r--r--src/fe-text/gui-readline.c15
3 files changed, 9 insertions, 20 deletions
diff --git a/src/fe-common/core/command-history.c b/src/fe-common/core/command-history.c
index 9f46ee99..1060744e 100644
--- a/src/fe-common/core/command-history.c
+++ b/src/fe-common/core/command-history.c
@@ -33,7 +33,6 @@
static HISTORY_REC *global_history;
static int window_history;
static GSList *histories;
-static HISTORY_REC *last_cleared_history;
void command_history_add(HISTORY_REC *history, const char *text)
{
@@ -42,13 +41,6 @@ void command_history_add(HISTORY_REC *history, const char *text)
g_return_if_fail(history != NULL);
g_return_if_fail(text != NULL);
- if (last_cleared_history == history) {
- last_cleared_history = NULL;
- return; /* ignore this history addition, we just
- cleared it */
- }
- last_cleared_history = NULL;
-
link = g_list_last(history->list);
if (link != NULL && g_strcmp0(link->data, text) == 0)
return; /* same as previous entry */
@@ -195,7 +187,6 @@ void command_history_clear(HISTORY_REC *history)
g_list_free(history->list);
history->list = NULL;
history->lines = 0;
- last_cleared_history = history;
}
void command_history_destroy(HISTORY_REC *history)
@@ -207,7 +198,6 @@ void command_history_destroy(HISTORY_REC *history)
histories = g_slist_remove(histories, history);
command_history_clear(history);
- last_cleared_history = NULL; /* was destroyed */
g_free_not_null(history->name);
g_free(history);
diff --git a/src/fe-common/core/window-commands.c b/src/fe-common/core/window-commands.c
index e5005144..9e4aab3a 100644
--- a/src/fe-common/core/window-commands.c
+++ b/src/fe-common/core/window-commands.c
@@ -620,10 +620,10 @@ static void cmd_window_name(const char *data)
void cmd_window_history(const char *data)
{
GHashTable *optlist;
- char *name;
+ char *name;
void *free_arg;
- if (!cmd_get_params(data, &free_arg, 1 | PARAM_FLAG_OPTIONS,
+ if (!cmd_get_params(data, &free_arg, 1 | PARAM_FLAG_OPTIONS | PARAM_FLAG_STRIP_TRAILING_WS,
"window history", &optlist, &name))
return;
diff --git a/src/fe-text/gui-readline.c b/src/fe-text/gui-readline.c
index fcf152e8..5acfaf60 100644
--- a/src/fe-text/gui-readline.c
+++ b/src/fe-text/gui-readline.c
@@ -456,22 +456,21 @@ static void key_send_line(void)
add_history = *str != '\0';
history = command_history_current(active_win);
+ if (redir != NULL && redir->flags & ENTRY_REDIRECT_FLAG_HIDDEN)
+ add_history = 0;
+
+ if (add_history && history != NULL) {
+ command_history_add(history, str);
+ }
+
if (redir == NULL) {
signal_emit("send command", 3, str,
active_win->active_server,
active_win->active);
} else {
- if (redir->flags & ENTRY_REDIRECT_FLAG_HIDDEN)
- add_history = 0;
handle_entry_redirect(str);
}
- if (add_history) {
- history = command_history_find(history);
- if (history != NULL)
- command_history_add(history, str);
- }
-
if (active_entry != NULL)
gui_entry_set_text(active_entry, "");
command_history_clear_pos(active_win);