]> jfr.im git - irc/irssi/irssi.git/commitdiff
reorder history add and fixes
authorailin-nemui <redacted>
Fri, 8 Jan 2016 14:42:59 +0000 (15:42 +0100)
committerailin-nemui <redacted>
Fri, 8 Jan 2016 14:42:59 +0000 (15:42 +0100)
src/fe-common/core/command-history.c
src/fe-common/core/window-commands.c
src/fe-text/gui-readline.c

index 9f46ee9975c8d01a3e0281e8d0d4e861a77c4a4d..1060744ec13535c32d08640ff18da49bc9890c49 100644 (file)
@@ -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);
index e5005144ff0fa6a5a5a7f68ccf4d7fb517325470..9e4aab3a132f988cabbccdbb8b271295a922209c 100644 (file)
@@ -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;
 
index fcf152e8083cd95e59c44e21ffb426d3ac9ce1af..5acfaf605fc5ead6f4c3bd3d962ac269d79a3212 100644 (file)
@@ -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);