The branch, master has been updated
       via  3f54c9292fc8ee147d45256e430fbf85fab98128 (commit)
       via  bec6c807cd580b003cd94b52a20caa2cbc7a0753 (commit)
       via  7ab2690be8a451d123b12906b729e163ea37e0dd (commit)
      from  953c3ef47a1933d38308075c1bacc7ea8d38301b (commit)

- Log -----------------------------------------------------------------
commit 3f54c9292fc8ee147d45256e430fbf85fab98128
Merge: 953c3ef bec6c80
Author: Thomas Adam <tho...@xteddy.org>
Commit: Thomas Adam <tho...@xteddy.org>

    Merge branch 'obsd-master'

 cmd-capture-pane.c  |    4 ++--
 cmd-choose-buffer.c |    4 ++--
 cmd-delete-buffer.c |    4 ++--
 cmd-list-buffers.c  |    2 +-
 cmd-load-buffer.c   |    8 ++++----
 cmd-paste-buffer.c  |    8 ++++----
 cmd-save-buffer.c   |    4 ++--
 cmd-set-buffer.c    |    8 ++++----
 control-notify.c    |   17 +++++++++++++++--
 input-keys.c        |    2 +-
 paste.c             |   50 ++++++++++++++++++++++++++------------------------
 server.c            |    3 ---
 status.c            |    2 +-
 tmux.h              |   16 +++++++---------
 window-copy.c       |   14 +++++++-------
 15 files changed, 78 insertions(+), 68 deletions(-)



commit bec6c807cd580b003cd94b52a20caa2cbc7a0753
Author: nicm <nicm>
Commit: nicm <nicm>

    There is no longer a need for a paste_stack struct or for global_buffers
    to be global. Move to paste.c.
---
 cmd-capture-pane.c  |    4 ++--
 cmd-choose-buffer.c |    4 ++--
 cmd-delete-buffer.c |    4 ++--
 cmd-list-buffers.c  |    2 +-
 cmd-load-buffer.c   |    8 ++++----
 cmd-paste-buffer.c  |    8 ++++----
 cmd-save-buffer.c   |    4 ++--
 cmd-set-buffer.c    |    8 ++++----
 input-keys.c        |    2 +-
 paste.c             |   50 ++++++++++++++++++++++++++------------------------
 server.c            |    3 ---
 status.c            |    2 +-
 tmux.h              |   16 +++++++---------
 window-copy.c       |   14 +++++++-------
 14 files changed, 63 insertions(+), 66 deletions(-)

diff --git a/cmd-capture-pane.c b/cmd-capture-pane.c
index cf9a2f4..759063d 100644
--- a/cmd-capture-pane.c
+++ b/cmd-capture-pane.c
@@ -194,7 +194,7 @@ cmd_capture_pane_exec(struct cmd *self, struct cmd_q *cmdq)
        } else {
                limit = options_get_number(&global_options, "buffer-limit");
                if (!args_has(args, 'b')) {
-                       paste_add(&global_buffers, buf, len, limit);
+                       paste_add(buf, len, limit);
                        return (CMD_RETURN_NORMAL);
                }
 
@@ -206,7 +206,7 @@ cmd_capture_pane_exec(struct cmd *self, struct cmd_q *cmdq)
                        return (CMD_RETURN_ERROR);
                }
 
-               if (paste_replace(&global_buffers, buffer, buf, len) != 0) {
+               if (paste_replace(buffer, buf, len) != 0) {
                        cmdq_error(cmdq, "no buffer %d", buffer);
                        free(buf);
                        return (CMD_RETURN_ERROR);
diff --git a/cmd-choose-buffer.c b/cmd-choose-buffer.c
index 1e0edaa..c6c70a0 100644
--- a/cmd-choose-buffer.c
+++ b/cmd-choose-buffer.c
@@ -63,7 +63,7 @@ cmd_choose_buffer_exec(struct cmd *self, struct cmd_q *cmdq)
                return (CMD_RETURN_ERROR);
        utf8flag = options_get_number(&wl->window->options, "utf8");
 
-       if (paste_get_top(&global_buffers) == NULL)
+       if (paste_get_top() == NULL)
                return (CMD_RETURN_NORMAL);
 
        if (window_pane_set_mode(wl->window->active, &window_choose_mode) != 0)
@@ -75,7 +75,7 @@ cmd_choose_buffer_exec(struct cmd *self, struct cmd_q *cmdq)
                action = xstrdup("paste-buffer -b '%%'");
 
        idx = 0;
-       while ((pb = paste_walk_stack(&global_buffers, &idx)) != NULL) {
+       while ((pb = paste_walk_stack(&idx)) != NULL) {
                cdata = window_choose_data_create(TREE_OTHER, c, c->session);
                cdata->idx = idx - 1;
 
diff --git a/cmd-delete-buffer.c b/cmd-delete-buffer.c
index 32fb243..464d2b7 100644
--- a/cmd-delete-buffer.c
+++ b/cmd-delete-buffer.c
@@ -45,7 +45,7 @@ cmd_delete_buffer_exec(struct cmd *self, struct cmd_q *cmdq)
        int              buffer;
 
        if (!args_has(args, 'b')) {
-               paste_free_top(&global_buffers);
+               paste_free_top();
                return (CMD_RETURN_NORMAL);
        }
 
@@ -56,7 +56,7 @@ cmd_delete_buffer_exec(struct cmd *self, struct cmd_q *cmdq)
                return (CMD_RETURN_ERROR);
        }
 
-       if (paste_free_index(&global_buffers, buffer) != 0) {
+       if (paste_free_index(buffer) != 0) {
                cmdq_error(cmdq, "no buffer %d", buffer);
                return (CMD_RETURN_ERROR);
        }
diff --git a/cmd-list-buffers.c b/cmd-list-buffers.c
index 7051eae..2363c80 100644
--- a/cmd-list-buffers.c
+++ b/cmd-list-buffers.c
@@ -52,7 +52,7 @@ cmd_list_buffers_exec(unused struct cmd *self, struct cmd_q 
*cmdq)
                template = LIST_BUFFERS_TEMPLATE;
 
        idx = 0;
-       while ((pb = paste_walk_stack(&global_buffers, &idx)) != NULL) {
+       while ((pb = paste_walk_stack(&idx)) != NULL) {
                ft = format_create();
                format_add(ft, "line", "%u", idx - 1);
                format_paste_buffer(ft, pb, 0);
diff --git a/cmd-load-buffer.c b/cmd-load-buffer.c
index 636f0fc..5e9b674 100644
--- a/cmd-load-buffer.c
+++ b/cmd-load-buffer.c
@@ -119,10 +119,10 @@ cmd_load_buffer_exec(struct cmd *self, struct cmd_q *cmdq)
 
        limit = options_get_number(&global_options, "buffer-limit");
        if (buffer == -1) {
-               paste_add(&global_buffers, pdata, psize, limit);
+               paste_add(pdata, psize, limit);
                return (CMD_RETURN_NORMAL);
        }
-       if (paste_replace(&global_buffers, buffer, pdata, psize) != 0) {
+       if (paste_replace(buffer, pdata, psize) != 0) {
                cmdq_error(cmdq, "no buffer %d", buffer);
                free(pdata);
                return (CMD_RETURN_ERROR);
@@ -164,8 +164,8 @@ cmd_load_buffer_callback(struct client *c, int closed, void 
*data)
 
        limit = options_get_number(&global_options, "buffer-limit");
        if (*buffer == -1)
-               paste_add(&global_buffers, pdata, psize, limit);
-       else if (paste_replace(&global_buffers, *buffer, pdata, psize) != 0) {
+               paste_add(pdata, psize, limit);
+       else if (paste_replace(*buffer, pdata, psize) != 0) {
                /* No context so can't use server_client_msg_error. */
                evbuffer_add_printf(c->stderr_data, "no buffer %d\n", *buffer);
                server_push_stderr(c);
diff --git a/cmd-paste-buffer.c b/cmd-paste-buffer.c
index 8f7530a..c3837c6 100644
--- a/cmd-paste-buffer.c
+++ b/cmd-paste-buffer.c
@@ -69,9 +69,9 @@ cmd_paste_buffer_exec(struct cmd *self, struct cmd_q *cmdq)
        }
 
        if (buffer == -1)
-               pb = paste_get_top(&global_buffers);
+               pb = paste_get_top();
        else {
-               pb = paste_get_index(&global_buffers, buffer);
+               pb = paste_get_index(buffer);
                if (pb == NULL) {
                        cmdq_error(cmdq, "no buffer %d", buffer);
                        return (CMD_RETURN_ERROR);
@@ -93,9 +93,9 @@ cmd_paste_buffer_exec(struct cmd *self, struct cmd_q *cmdq)
        /* Delete the buffer if -d. */
        if (args_has(args, 'd')) {
                if (buffer == -1)
-                       paste_free_top(&global_buffers);
+                       paste_free_top();
                else
-                       paste_free_index(&global_buffers, buffer);
+                       paste_free_index(buffer);
        }
 
        return (CMD_RETURN_NORMAL);
diff --git a/cmd-save-buffer.c b/cmd-save-buffer.c
index b6ee2e4..0a1853d 100644
--- a/cmd-save-buffer.c
+++ b/cmd-save-buffer.c
@@ -66,7 +66,7 @@ cmd_save_buffer_exec(struct cmd *self, struct cmd_q *cmdq)
        FILE                    *f;
 
        if (!args_has(args, 'b')) {
-               if ((pb = paste_get_top(&global_buffers)) == NULL) {
+               if ((pb = paste_get_top()) == NULL) {
                        cmdq_error(cmdq, "no buffers");
                        return (CMD_RETURN_ERROR);
                }
@@ -78,7 +78,7 @@ cmd_save_buffer_exec(struct cmd *self, struct cmd_q *cmdq)
                        return (CMD_RETURN_ERROR);
                }
 
-               pb = paste_get_index(&global_buffers, buffer);
+               pb = paste_get_index(buffer);
                if (pb == NULL) {
                        cmdq_error(cmdq, "no buffer %d", buffer);
                        return (CMD_RETURN_ERROR);
diff --git a/cmd-set-buffer.c b/cmd-set-buffer.c
index a206760..5dabc1e 100644
--- a/cmd-set-buffer.c
+++ b/cmd-set-buffer.c
@@ -66,13 +66,13 @@ cmd_set_buffer_exec(struct cmd *self, struct cmd_q *cmdq)
                        free(cause);
                        return (CMD_RETURN_ERROR);
                }
-               pb = paste_get_index(&global_buffers, buffer);
+               pb = paste_get_index(buffer);
                if (pb == NULL) {
                        cmdq_error(cmdq, "no buffer %d", buffer);
                        return (CMD_RETURN_ERROR);
                }
        } else if (args_has(args, 'a')) {
-               pb = paste_get_top(&global_buffers);
+               pb = paste_get_top();
                if (pb != NULL)
                        buffer = 0;
        }
@@ -88,9 +88,9 @@ cmd_set_buffer_exec(struct cmd *self, struct cmd_q *cmdq)
        psize += newsize;
 
        if (buffer == -1)
-               paste_add(&global_buffers, pdata, psize, limit);
+               paste_add(pdata, psize, limit);
        else
-               paste_replace(&global_buffers, buffer, pdata, psize);
+               paste_replace(buffer, pdata, psize);
 
        return (CMD_RETURN_NORMAL);
 }
diff --git a/input-keys.c b/input-keys.c
index 0370a68..6e21cc0 100644
--- a/input-keys.c
+++ b/input-keys.c
@@ -240,7 +240,7 @@ input_mouse(struct window_pane *wp, struct session *s, 
struct mouse_event *m)
 
        if (m->button == 1 && (m->event & MOUSE_EVENT_CLICK) &&
            options_get_number(&wp->window->options, "mode-mouse") == 1) {
-               pb = paste_get_top(&global_buffers);
+               pb = paste_get_top();
                if (pb != NULL) {
                        paste_send_pane(pb, wp, "\r",
                            wp->screen->mode & MODE_BRACKETPASTE);
diff --git a/paste.c b/paste.c
index 98d71a0..9492fd9 100644
--- a/paste.c
+++ b/paste.c
@@ -30,46 +30,48 @@
  * string!
  */
 
+ARRAY_DECL(, struct paste_buffer *) paste_buffers =  ARRAY_INITIALIZER;
+
 /* Return each item of the stack in turn. */
 struct paste_buffer *
-paste_walk_stack(struct paste_stack *ps, u_int *idx)
+paste_walk_stack(u_int *idx)
 {
        struct paste_buffer     *pb;
 
-       pb = paste_get_index(ps, *idx);
+       pb = paste_get_index(*idx);
        (*idx)++;
        return (pb);
 }
 
 /* Get the top item on the stack. */
 struct paste_buffer *
-paste_get_top(struct paste_stack *ps)
+paste_get_top(void)
 {
-       if (ARRAY_LENGTH(ps) == 0)
+       if (ARRAY_LENGTH(&paste_buffers) == 0)
                return (NULL);
-       return (ARRAY_FIRST(ps));
+       return (ARRAY_FIRST(&paste_buffers));
 }
 
 /* Get an item by its index. */
 struct paste_buffer *
-paste_get_index(struct paste_stack *ps, u_int idx)
+paste_get_index(u_int idx)
 {
-       if (idx >= ARRAY_LENGTH(ps))
+       if (idx >= ARRAY_LENGTH(&paste_buffers))
                return (NULL);
-       return (ARRAY_ITEM(ps, idx));
+       return (ARRAY_ITEM(&paste_buffers, idx));
 }
 
 /* Free the top item on the stack. */
 int
-paste_free_top(struct paste_stack *ps)
+paste_free_top(void)
 {
        struct paste_buffer     *pb;
 
-       if (ARRAY_LENGTH(ps) == 0)
+       if (ARRAY_LENGTH(&paste_buffers) == 0)
                return (-1);
 
-       pb = ARRAY_FIRST(ps);
-       ARRAY_REMOVE(ps, 0);
+       pb = ARRAY_FIRST(&paste_buffers);
+       ARRAY_REMOVE(&paste_buffers, 0);
 
        free(pb->data);
        free(pb);
@@ -79,15 +81,15 @@ paste_free_top(struct paste_stack *ps)
 
 /* Free an item by index. */
 int
-paste_free_index(struct paste_stack *ps, u_int idx)
+paste_free_index(u_int idx)
 {
        struct paste_buffer     *pb;
 
-       if (idx >= ARRAY_LENGTH(ps))
+       if (idx >= ARRAY_LENGTH(&paste_buffers))
                return (-1);
 
-       pb = ARRAY_ITEM(ps, idx);
-       ARRAY_REMOVE(ps, idx);
+       pb = ARRAY_ITEM(&paste_buffers, idx);
+       ARRAY_REMOVE(&paste_buffers, idx);
 
        free(pb->data);
        free(pb);
@@ -100,22 +102,22 @@ paste_free_index(struct paste_stack *ps, u_int idx)
  * that the caller is responsible for allocating data.
  */
 void
-paste_add(struct paste_stack *ps, char *data, size_t size, u_int limit)
+paste_add(char *data, size_t size, u_int limit)
 {
        struct paste_buffer     *pb;
 
        if (size == 0)
                return;
 
-       while (ARRAY_LENGTH(ps) >= limit) {
-               pb = ARRAY_LAST(ps);
+       while (ARRAY_LENGTH(&paste_buffers) >= limit) {
+               pb = ARRAY_LAST(&paste_buffers);
                free(pb->data);
                free(pb);
-               ARRAY_TRUNC(ps, 1);
+               ARRAY_TRUNC(&paste_buffers, 1);
        }
 
        pb = xmalloc(sizeof *pb);
-       ARRAY_INSERT(ps, 0, pb);
+       ARRAY_INSERT(&paste_buffers, 0, pb);
 
        pb->data = data;
        pb->size = size;
@@ -127,7 +129,7 @@ paste_add(struct paste_stack *ps, char *data, size_t size, 
u_int limit)
  * allocating data.
  */
 int
-paste_replace(struct paste_stack *ps, u_int idx, char *data, size_t size)
+paste_replace(u_int idx, char *data, size_t size)
 {
        struct paste_buffer     *pb;
 
@@ -136,10 +138,10 @@ paste_replace(struct paste_stack *ps, u_int idx, char 
*data, size_t size)
                return (0);
        }
 
-       if (idx >= ARRAY_LENGTH(ps))
+       if (idx >= ARRAY_LENGTH(&paste_buffers))
                return (-1);
 
-       pb = ARRAY_ITEM(ps, idx);
+       pb = ARRAY_ITEM(&paste_buffers, idx);
        free(pb->data);
 
        pb->data = data;
diff --git a/server.c b/server.c
index ea8b77f..0d6c4f1 100644
--- a/server.c
+++ b/server.c
@@ -51,8 +51,6 @@ int            server_shutdown;
 struct event    server_ev_accept;
 struct event    server_ev_second;
 
-struct paste_stack global_buffers;
-
 int             server_create_socket(void);
 void            server_loop(void);
 int             server_should_shutdown(void);
@@ -147,7 +145,6 @@ server_start(int lockfd, char *lockfile)
        RB_INIT(&sessions);
        RB_INIT(&dead_sessions);
        TAILQ_INIT(&session_groups);
-       ARRAY_INIT(&global_buffers);
        mode_key_init_trees();
        key_bindings_init();
        utf8_build();
diff --git a/status.c b/status.c
index acbf278..4ea42f1 100644
--- a/status.c
+++ b/status.c
@@ -1157,7 +1157,7 @@ status_prompt_key(struct client *c, int key)
                c->flags |= CLIENT_STATUS;
                break;
        case MODEKEYEDIT_PASTE:
-               if ((pb = paste_get_top(&global_buffers)) == NULL)
+               if ((pb = paste_get_top()) == NULL)
                        break;
                for (n = 0; n < pb->size; n++) {
                        ch = (u_char) pb->data[n];
diff --git a/tmux.h b/tmux.h
index ed0f2e4..68a8517 100644
--- a/tmux.h
+++ b/tmux.h
@@ -1037,7 +1037,6 @@ struct paste_buffer {
        char            *data;
        size_t           size;
 };
-ARRAY_DECL(paste_stack, struct paste_buffer *);
 
 /* Environment variable. */
 struct environ_entry {
@@ -1709,13 +1708,13 @@ void    tty_keys_free(struct tty *);
 int    tty_keys_next(struct tty *);
 
 /* paste.c */
-struct paste_buffer *paste_walk_stack(struct paste_stack *, u_int *);
-struct paste_buffer *paste_get_top(struct paste_stack *);
-struct paste_buffer *paste_get_index(struct paste_stack *, u_int);
-int             paste_free_top(struct paste_stack *);
-int             paste_free_index(struct paste_stack *, u_int);
-void            paste_add(struct paste_stack *, char *, size_t, u_int);
-int             paste_replace(struct paste_stack *, u_int, char *, size_t);
+struct paste_buffer *paste_walk_stack(u_int *);
+struct paste_buffer *paste_get_top(void);
+struct paste_buffer *paste_get_index(u_int);
+int             paste_free_top(void);
+int             paste_free_index(u_int);
+void            paste_add(char *, size_t, u_int);
+int             paste_replace(u_int, char *, size_t);
 char           *paste_make_sample(struct paste_buffer *, int);
 void            paste_send_pane(struct paste_buffer *, struct window_pane *,
                     const char *, int);
@@ -1886,7 +1885,6 @@ const char *key_string_lookup_key(int);
 /* server.c */
 extern struct clients clients;
 extern struct clients dead_clients;
-extern struct paste_stack global_buffers;
 int     server_start(int, char *);
 void    server_update_socket(void);
 void    server_add_accept(int);
diff --git a/window-copy.c b/window-copy.c
index ef99ed9..296443a 100644
--- a/window-copy.c
+++ b/window-copy.c
@@ -776,7 +776,7 @@ window_copy_key_input(struct window_pane *wp, int key)
                *data->inputstr = '\0';
                break;
        case MODEKEYEDIT_PASTE:
-               if ((pb = paste_get_top(&global_buffers)) == NULL)
+               if ((pb = paste_get_top()) == NULL)
                        break;
                for (n = 0; n < pb->size; n++) {
                        ch = (u_char) pb->data[n];
@@ -1465,8 +1465,8 @@ window_copy_copy_buffer(struct window_pane *wp, int idx, 
void *buf, size_t len)
 
        if (idx == -1) {
                limit = options_get_number(&global_options, "buffer-limit");
-               paste_add(&global_buffers, buf, len, limit);
-       } else if (paste_replace(&global_buffers, idx, buf, len) != 0)
+               paste_add(buf, len, limit);
+       } else if (paste_replace(idx, buf, len) != 0)
                free(buf);
 }
 
@@ -1524,13 +1524,13 @@ window_copy_append_selection(struct window_pane *wp, 
int idx)
        if (idx == -1)
                idx = 0;
 
-       if (idx == 0 && paste_get_top(&global_buffers) == NULL) {
+       if (idx == 0 && paste_get_top() == NULL) {
                limit = options_get_number(&global_options, "buffer-limit");
-               paste_add(&global_buffers, buf, len, limit);
+               paste_add(buf, len, limit);
                return;
        }
 
-       pb = paste_get_index(&global_buffers, idx);
+       pb = paste_get_index(idx);
        if (pb != NULL) {
                buf = xrealloc(buf, 1, len + pb->size);
                memmove(buf + pb->size, buf, len);
@@ -1538,7 +1538,7 @@ window_copy_append_selection(struct window_pane *wp, int 
idx)
                len += pb->size;
        }
 
-       if (paste_replace(&global_buffers, idx, buf, len) != 0)
+       if (paste_replace(idx, buf, len) != 0)
                free(buf);
 }
 


commit 7ab2690be8a451d123b12906b729e163ea37e0dd
Author: nicm <nicm>
Commit: nicm <nicm>

    Differentiate between linked and unlinked window closes and renames,
    like we already do for adds. From Andre Masella.
---
 control-notify.c |   17 +++++++++++++++--
 1 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/control-notify.c b/control-notify.c
index a298cdc..4ea1570 100644
--- a/control-notify.c
+++ b/control-notify.c
@@ -99,14 +99,19 @@ void
 control_notify_window_unlinked(unused struct session *s, struct window *w)
 {
        struct client   *c;
+       struct session  *cs;
        u_int            i;
 
        for (i = 0; i < ARRAY_LENGTH(&clients); i++) {
                c = ARRAY_ITEM(&clients, i);
                if (!CONTROL_SHOULD_NOTIFY_CLIENT(c) || c->session == NULL)
                        continue;
+               cs = c->session;
 
-               control_write(c, "%%window-close @%u", w->id);
+               if (winlink_find_by_window_id(&cs->windows, w->id) != NULL)
+                       control_write(c, "%%window-close @%u", w->id);
+               else
+                       control_write(c, "%%unlinked-window-close @%u", w->id);
        }
 }
 
@@ -134,14 +139,22 @@ void
 control_notify_window_renamed(struct window *w)
 {
        struct client   *c;
+       struct session  *cs;
        u_int            i;
 
        for (i = 0; i < ARRAY_LENGTH(&clients); i++) {
                c = ARRAY_ITEM(&clients, i);
                if (!CONTROL_SHOULD_NOTIFY_CLIENT(c) || c->session == NULL)
                        continue;
+               cs = c->session;
 
-               control_write(c, "%%window-renamed @%u %s", w->id, w->name);
+               if (winlink_find_by_window_id(&cs->windows, w->id) != NULL) {
+                       control_write(c, "%%window-renamed @%u %s", w->id,
+                           w->name);
+               } else {
+                       control_write(c, "%%unlinked-window-renamed @%u %s",
+                           w->id, w->name);
+               }
        }
 }
 


-----------------------------------------------------------------------

Summary of changes:
 cmd-capture-pane.c  |    4 ++--
 cmd-choose-buffer.c |    4 ++--
 cmd-delete-buffer.c |    4 ++--
 cmd-list-buffers.c  |    2 +-
 cmd-load-buffer.c   |    8 ++++----
 cmd-paste-buffer.c  |    8 ++++----
 cmd-save-buffer.c   |    4 ++--
 cmd-set-buffer.c    |    8 ++++----
 control-notify.c    |   17 +++++++++++++++--
 input-keys.c        |    2 +-
 paste.c             |   50 ++++++++++++++++++++++++++------------------------
 server.c            |    3 ---
 status.c            |    2 +-
 tmux.h              |   16 +++++++---------
 window-copy.c       |   14 +++++++-------
 15 files changed, 78 insertions(+), 68 deletions(-)


hooks/post-receive
-- 
tmux

------------------------------------------------------------------------------
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform
_______________________________________________
tmux-cvs mailing list
tmux-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tmux-cvs

Reply via email to