aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTiago Cunha <tcunha@gmx.com>2011-05-22 16:26:38 +0000
committerTiago Cunha <tcunha@gmx.com>2011-05-22 16:26:38 +0000
commitd256660a783bad37d09c179d5ed39bd0967452c2 (patch)
treea0a609c7ea4215393133d901c0251aeface65838
parentb2f301f4e2b05764cd80da2ebc08e10605d0eeca (diff)
downloadrtmux-d256660a783bad37d09c179d5ed39bd0967452c2.tar.gz
rtmux-d256660a783bad37d09c179d5ed39bd0967452c2.tar.bz2
rtmux-d256660a783bad37d09c179d5ed39bd0967452c2.zip
Sync OpenBSD patchset 917:
Pass prompts through status_replace so that they can be more helpful (such as showing the previous session name when renaming). From Tiago Cunha.
-rw-r--r--cmd-command-prompt.c19
-rw-r--r--tmux.111
2 files changed, 23 insertions, 7 deletions
diff --git a/cmd-command-prompt.c b/cmd-command-prompt.c
index 1fc3dea2..daad348f 100644
--- a/cmd-command-prompt.c
+++ b/cmd-command-prompt.c
@@ -1,4 +1,4 @@
-/* $Id: cmd-command-prompt.c,v 1.30 2011-01-07 15:04:51 tcunha Exp $ */
+/* $Id: cmd-command-prompt.c,v 1.31 2011-05-22 16:26:38 tcunha Exp $ */
/*
* Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -82,7 +82,7 @@ cmd_command_prompt_exec(struct cmd *self, struct cmd_ctx *ctx)
const char *prompts;
struct cmd_command_prompt_cdata *cdata;
struct client *c;
- char *prompt, *ptr;
+ char *prompt, *prompt_replaced, *ptr;
size_t n;
if ((c = cmd_find_client(ctx, args_get(args, 't'))) == NULL)
@@ -116,8 +116,12 @@ cmd_command_prompt_exec(struct cmd *self, struct cmd_ctx *ctx)
ptr = strsep(&cdata->next_prompt, ",");
if (prompts == NULL)
prompt = xstrdup(ptr);
- else
- xasprintf(&prompt, "%s ", ptr);
+ else {
+ prompt_replaced = status_replace(c, NULL, NULL, NULL, ptr,
+ time(NULL), 0);
+ xasprintf(&prompt, "%s ", prompt_replaced);
+ xfree(prompt_replaced);
+ }
status_prompt_set(c, prompt, cmd_command_prompt_callback,
cmd_command_prompt_free, cdata, 0);
xfree(prompt);
@@ -133,6 +137,7 @@ cmd_command_prompt_callback(void *data, const char *s)
struct cmd_list *cmdlist;
struct cmd_ctx ctx;
char *cause, *newtempl, *prompt, *ptr;
+ char *prompt_replaced;
if (s == NULL)
return (0);
@@ -142,8 +147,12 @@ cmd_command_prompt_callback(void *data, const char *s)
cdata->template = newtempl;
if ((ptr = strsep(&cdata->next_prompt, ",")) != NULL) {
- xasprintf(&prompt, "%s ", ptr);
+ prompt_replaced = status_replace(c, NULL, NULL, NULL, ptr,
+ time(NULL), 0);
+ xasprintf(&prompt, "%s ", prompt_replaced);
status_prompt_update(c, prompt);
+
+ xfree(prompt_replaced);
xfree(prompt);
cdata->idx++;
return (1);
diff --git a/tmux.1 b/tmux.1
index 89829e96..4fad61a4 100644
--- a/tmux.1
+++ b/tmux.1
@@ -1,4 +1,4 @@
-.\" $Id: tmux.1,v 1.316 2011-05-22 16:26:09 tcunha Exp $
+.\" $Id: tmux.1,v 1.317 2011-05-22 16:26:38 tcunha Exp $
.\"
.\" Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
.\"
@@ -1259,7 +1259,7 @@ The
.Ar shell-command
string may contain the special character sequences supported by the
.Ic status-left
-command.
+option.
If no
.Ar shell-command
is given, the current pipe (if any) is closed.
@@ -2628,6 +2628,7 @@ Open the command prompt in a client.
This may be used from inside
.Nm
to execute commands interactively.
+.Pp
If
.Ar template
is specified, it is used as the command.
@@ -2641,6 +2642,12 @@ a single prompt is displayed, constructed from
if it is present, or
.Ql \&:
if not.
+The
+.Ar prompts
+may contain the special character sequences supported by the
+.Ic status-left
+option.
+.Pp
Before the command is executed, the first occurrence of the string
.Ql %%
and all occurrences of