aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Marriott <nicholas.marriott@gmail.com>2007-08-27 15:28:07 +0000
committerNicholas Marriott <nicholas.marriott@gmail.com>2007-08-27 15:28:07 +0000
commit438144692dba1aabd34d3253be61b461f15e5e6d (patch)
tree369daf30feaf63f41f2f32c45fa76f30f6870eae
parent8dbccbc4dbafbac0cee008f6e93cf022fdb7b515 (diff)
downloadrtmux-438144692dba1aabd34d3253be61b461f15e5e6d.tar.gz
rtmux-438144692dba1aabd34d3253be61b461f15e5e6d.tar.bz2
rtmux-438144692dba1aabd34d3253be61b461f15e5e6d.zip
Flush even detached sessions.
-rw-r--r--NOTES6
-rw-r--r--TODO1
-rw-r--r--server.c28
-rw-r--r--session.c4
4 files changed, 20 insertions, 19 deletions
diff --git a/NOTES b/NOTES
index 20064ee5..ffdc6dcb 100644
--- a/NOTES
+++ b/NOTES
@@ -27,6 +27,8 @@ Attach to a previous session with:
tmux -n <session name> attach
+A name must (currently) be specified when attaching. This may change.
+
List all sessions with:
tmux list
@@ -37,8 +39,8 @@ Or the windows of a single session with:
Sessions are destroyed when no windows remain attached to them.
-Another server process can be used by specifying an alternative socket path with
-"-s <path>" but it shouldn't normally be required.
+Another server process can be used by specifying an alternative socket path
+with "-s <path>" but it shouldn't normally be required.
You can set the window title (listed in -l), using the \e] escape sequence. For
example:
diff --git a/TODO b/TODO
index 7d2108b0..685479d6 100644
--- a/TODO
+++ b/TODO
@@ -12,3 +12,4 @@
- wrap windows with forward/back
- new window command prompt
- mouse handling and some other bits elinks needs
+- scrollback
diff --git a/server.c b/server.c
index c24fb956..411f9f13 100644
--- a/server.c
+++ b/server.c
@@ -1,4 +1,4 @@
-/* $Id: server.c,v 1.6 2007-08-27 13:45:26 nicm Exp $ */
+/* $Id: server.c,v 1.7 2007-08-27 15:28:07 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -658,31 +658,29 @@ lost_window(struct window *w)
struct client *c;
struct session *s;
u_int i, j;
+ int destroyed;
- for (i = 0; i < ARRAY_LENGTH(&clients); i++) {
- c = ARRAY_ITEM(&clients, i);
- if (c == NULL || c->session == NULL)
+ for (i = 0; i < ARRAY_LENGTH(&sessions); i++) {
+ s = ARRAY_ITEM(&sessions, i);
+ if (s == NULL)
continue;
- if (!session_has(c->session, w))
+ if (!session_has(s, w))
continue;
- s = c->session;
/* Detach window from session. */
session_detach(s, w);
- /* Try to flush session and redraw if not destroyed. */
- if (session_flush(s) == 0) {
- changed_window(c);
- continue;
- }
-
- /* Kill all clients attached to this session. */
+ /* Try to flush session and either redraw or kill clients. */
+ destroyed = session_flush(s);
for (j = 0; j < ARRAY_LENGTH(&clients); j++) {
c = ARRAY_ITEM(&clients, j);
if (c == NULL || c->session != s)
continue;
- c->session = NULL;
- write_client(c, MSG_EXIT, NULL, 0);
+ if (destroyed) {
+ c->session = NULL;
+ write_client(c, MSG_EXIT, NULL, 0);
+ } else
+ changed_window(c);
}
}
}
diff --git a/session.c b/session.c
index cb0e90e1..d3667c6b 100644
--- a/session.c
+++ b/session.c
@@ -1,4 +1,4 @@
-/* $Id: session.c,v 1.5 2007-08-27 13:45:26 nicm Exp $ */
+/* $Id: session.c,v 1.6 2007-08-27 15:28:07 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -70,7 +70,7 @@ session_create(const char *name, const char *cmd, u_int sx, u_int sy)
if (*name != '\0')
strlcpy(s->name, name, sizeof s->name);
else
- xsnprintf(s->name, sizeof s->name, "session-%u", i);
+ xsnprintf(s->name, sizeof s->name, "%u", i);
return (s);
}