summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicholas Marriott <nicholas.marriott@gmail.com>2015-02-18 22:36:53 +0000
committerNicholas Marriott <nicholas.marriott@gmail.com>2015-02-18 22:36:53 +0000
commitf4196138cefe01df9aed085a7534dc30f45999e8 (patch)
treeeaa685cd8ce41ba6c3114037bf42d22999ae4f9a
parentfe1aa9299eb84e89dc5009997b46e0c3bc000e45 (diff)
parentbe6dc83277c49c8f7db30cc363134463af0aa596 (diff)
Merge branch 'master' of ssh://git.code.sf.net/p/tmux/tmux-code
-rw-r--r--Makefile.am1
-rw-r--r--cmd-clock-mode.c49
-rw-r--r--cmd-copy-mode.c15
-rw-r--r--cmd-queue.c5
-rw-r--r--colour.c16
-rw-r--r--status.c8
-rw-r--r--window.c2
7 files changed, 31 insertions, 65 deletions
diff --git a/Makefile.am b/Makefile.am
index 071c3a17..63e20b17 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -73,7 +73,6 @@ dist_tmux_SOURCES = \
cmd-choose-client.c \
cmd-choose-tree.c \
cmd-clear-history.c \
- cmd-clock-mode.c \
cmd-command-prompt.c \
cmd-confirm-before.c \
cmd-copy-mode.c \
diff --git a/cmd-clock-mode.c b/cmd-clock-mode.c
deleted file mode 100644
index 80835813..00000000
--- a/cmd-clock-mode.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* $OpenBSD$ */
-
-/*
- * Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
- * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#include <sys/types.h>
-
-#include "tmux.h"
-
-/*
- * Enter clock mode.
- */
-
-enum cmd_retval cmd_clock_mode_exec(struct cmd *, struct cmd_q *);
-
-const struct cmd_entry cmd_clock_mode_entry = {
- "clock-mode", NULL,
- "t:", 0, 0,
- CMD_TARGET_PANE_USAGE,
- 0,
- cmd_clock_mode_exec
-};
-
-enum cmd_retval
-cmd_clock_mode_exec(struct cmd *self, struct cmd_q *cmdq)
-{
- struct args *args = self->args;
- struct window_pane *wp;
-
- if (cmd_find_pane(cmdq, args_get(args, 't'), NULL, &wp) == NULL)
- return (CMD_RETURN_ERROR);
-
- window_pane_set_mode(wp, &window_clock_mode);
-
- return (CMD_RETURN_NORMAL);
-}
diff --git a/cmd-copy-mode.c b/cmd-copy-mode.c
index 89335296..b46a5a46 100644
--- a/cmd-copy-mode.c
+++ b/cmd-copy-mode.c
@@ -21,7 +21,7 @@
#include "tmux.h"
/*
- * Enter copy mode.
+ * Enter copy or clock mode.
*/
enum cmd_retval cmd_copy_mode_exec(struct cmd *, struct cmd_q *);
@@ -34,6 +34,14 @@ const struct cmd_entry cmd_copy_mode_entry = {
cmd_copy_mode_exec
};
+const struct cmd_entry cmd_clock_mode_entry = {
+ "clock-mode", NULL,
+ "t:", 0, 0,
+ CMD_TARGET_PANE_USAGE,
+ 0,
+ cmd_copy_mode_exec
+};
+
enum cmd_retval
cmd_copy_mode_exec(struct cmd *self, struct cmd_q *cmdq)
{
@@ -43,6 +51,11 @@ cmd_copy_mode_exec(struct cmd *self, struct cmd_q *cmdq)
if (cmd_find_pane(cmdq, args_get(args, 't'), NULL, &wp) == NULL)
return (CMD_RETURN_ERROR);
+ if (self->entry == &cmd_clock_mode_entry) {
+ window_pane_set_mode(wp, &window_clock_mode);
+ return (CMD_RETURN_NORMAL);
+ }
+
if (wp->mode != &window_copy_mode) {
if (window_pane_set_mode(wp, &window_copy_mode) != 0)
return (CMD_RETURN_NORMAL);
diff --git a/cmd-queue.c b/cmd-queue.c
index 58282c8f..6be532a8 100644
--- a/cmd-queue.c
+++ b/cmd-queue.c
@@ -163,6 +163,7 @@ cmdq_continue(struct cmd_q *cmdq)
int empty, flags;
char s[1024];
+ cmdq->references++;
notify_disable();
empty = TAILQ_EMPTY(&cmdq->queue);
@@ -220,11 +221,13 @@ empty:
if (cmdq->client_exit > 0)
cmdq->client->flags |= CLIENT_EXIT;
if (cmdq->emptyfn != NULL)
- cmdq->emptyfn(cmdq); /* may free cmdq */
+ cmdq->emptyfn(cmdq);
empty = 1;
out:
notify_enable();
+ cmdq_free(cmdq);
+
return (empty);
}
diff --git a/colour.c b/colour.c
index 9e90596f..b5efd6f1 100644
--- a/colour.c
+++ b/colour.c
@@ -236,28 +236,28 @@ colour_fromstring(const char *s)
if (strcasecmp(s, "default") == 0 || (s[0] == '8' && s[1] == '\0'))
return (8);
if (strcasecmp(s, "brightblack") == 0 ||
- (s[0] == '9' && s[1] == '0' && s[1] == '\0'))
+ (s[0] == '9' && s[1] == '0' && s[2] == '\0'))
return (90);
if (strcasecmp(s, "brightred") == 0 ||
- (s[0] == '9' && s[1] == '1' && s[1] == '\0'))
+ (s[0] == '9' && s[1] == '1' && s[2] == '\0'))
return (91);
if (strcasecmp(s, "brightgreen") == 0 ||
- (s[0] == '9' && s[1] == '2' && s[1] == '\0'))
+ (s[0] == '9' && s[1] == '2' && s[2] == '\0'))
return (92);
if (strcasecmp(s, "brightyellow") == 0 ||
- (s[0] == '9' && s[1] == '3' && s[1] == '\0'))
+ (s[0] == '9' && s[1] == '3' && s[2] == '\0'))
return (93);
if (strcasecmp(s, "brightblue") == 0 ||
- (s[0] == '9' && s[1] == '4' && s[1] == '\0'))
+ (s[0] == '9' && s[1] == '4' && s[2] == '\0'))
return (94);
if (strcasecmp(s, "brightmagenta") == 0 ||
- (s[0] == '9' && s[1] == '5' && s[1] == '\0'))
+ (s[0] == '9' && s[1] == '5' && s[2] == '\0'))
return (95);
if (strcasecmp(s, "brightcyan") == 0 ||
- (s[0] == '9' && s[1] == '6' && s[1] == '\0'))
+ (s[0] == '9' && s[1] == '6' && s[2] == '\0'))
return (96);
if (strcasecmp(s, "brightwhite") == 0 ||
- (s[0] == '9' && s[1] == '7' && s[1] == '\0'))
+ (s[0] == '9' && s[1] == '7' && s[2] == '\0'))
return (97);
return (-1);
}
diff --git a/status.c b/status.c
index e7714a00..5f8895fb 100644
--- a/status.c
+++ b/status.c
@@ -758,9 +758,9 @@ status_prompt_set(struct client *c, const char *msg, const char *input,
status_message_clear(c);
status_prompt_clear(c);
- c->prompt_string = format_expand_time(ft, msg, time(NULL));
+ c->prompt_string = format_expand_time(ft, msg, t);
- c->prompt_buffer = format_expand_time(ft, input, time(NULL));
+ c->prompt_buffer = format_expand_time(ft, input, t);
c->prompt_index = strlen(c->prompt_buffer);
c->prompt_callbackfn = callbackfn;
@@ -817,10 +817,10 @@ status_prompt_update(struct client *c, const char *msg, const char *input)
t = time(NULL);
free(c->prompt_string);
- c->prompt_string = format_expand_time(ft, msg, time(NULL));
+ c->prompt_string = format_expand_time(ft, msg, t);
free(c->prompt_buffer);
- c->prompt_buffer = format_expand_time(ft, input, time(NULL));
+ c->prompt_buffer = format_expand_time(ft, input, t);
c->prompt_index = strlen(c->prompt_buffer);
c->prompt_hindex = 0;
diff --git a/window.c b/window.c
index 54129634..fff2cfc3 100644
--- a/window.c
+++ b/window.c
@@ -262,7 +262,7 @@ window_find_by_id(u_int id)
for (i = 0; i < ARRAY_LENGTH(&windows); i++) {
w = ARRAY_ITEM(&windows, i);
- if (w->id == id)
+ if (w != NULL && w->id == id)
return (w);
}
return (NULL);