merges from irssi.org cvs.
[silc.git] / apps / irssi / src / fe-text / textbuffer-commands.c
index db5bc782f93aef69e9db49cf742ad40fd60a52d9..61350a3ee35f3346816d5a33cc29dff989181ff3 100644 (file)
 #include "gui-windows.h"
 #include "textbuffer-reformat.h"
 
-/* SYNTAX: CLEAR */
+/* SYNTAX: CLEAR [-all] [<refnum>] */
 static void cmd_clear(const char *data)
 {
+        WINDOW_REC *window;
        GHashTable *optlist;
+        char *refnum;
        void *free_arg;
         GSList *tmp;
 
        g_return_if_fail(data != NULL);
 
-       if (!cmd_get_params(data, &free_arg, PARAM_FLAG_OPTIONS,
-                           "clear", &optlist)) return;
+       if (!cmd_get_params(data, &free_arg, 1 | PARAM_FLAG_OPTIONS,
+                           "clear", &optlist, &refnum)) return;
 
-       if (g_hash_table_lookup(optlist, "all") == NULL) {
-                /* clear active window */
-               textbuffer_view_clear(WINDOW_GUI(active_win)->view);
-       } else {
+       if (g_hash_table_lookup(optlist, "all") != NULL) {
                 /* clear all windows */
                for (tmp = windows; tmp != NULL; tmp = tmp->next) {
                        WINDOW_REC *window = tmp->data;
 
                        textbuffer_view_clear(WINDOW_GUI(window)->view);
                }
+       } else if (*refnum != '\0') {
+                /* clear specified window */
+               window = window_find_refnum(atoi(refnum));
+                if (window != NULL)
+                       textbuffer_view_clear(WINDOW_GUI(window)->view);
+       } else {
+                /* clear active window */
+               textbuffer_view_clear(WINDOW_GUI(active_win)->view);
        }
 
        cmd_params_free(free_arg);