summaryrefslogtreecommitdiffstats
path: root/status.c
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@openbsd.org>2011-07-02 21:05:44 +0000
committerNicholas Marriott <nicm@openbsd.org>2011-07-02 21:05:44 +0000
commitad60a2c952694919ed3985855ef5a00939a937b8 (patch)
treecea7067924808b9a62d4cc02b32a358aface6913 /status.c
parent1202284f3728f98e2c40648f6813c64676547ef9 (diff)
Allow the initial context on prompts to be set with the new -I option to
command-prompt. From Tiago Cunha.
Diffstat (limited to 'status.c')
-rw-r--r--status.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/status.c b/status.c
index 46ff3633..6cf4e3dc 100644
--- a/status.c
+++ b/status.c
@@ -815,7 +815,7 @@ status_message_redraw(struct client *c)
/* Enable status line prompt. */
void
-status_prompt_set(struct client *c, const char *msg,
+status_prompt_set(struct client *c, const char *msg, const char *input,
int (*callbackfn)(void *, const char *), void (*freefn)(void *),
void *data, int flags)
{
@@ -826,8 +826,11 @@ status_prompt_set(struct client *c, const char *msg,
c->prompt_string = xstrdup(msg);
- c->prompt_buffer = xstrdup("");
- c->prompt_index = 0;
+ if (input != NULL)
+ c->prompt_buffer = xstrdup(input);
+ else
+ c->prompt_buffer = xstrdup("");
+ c->prompt_index = strlen(c->prompt_buffer);
c->prompt_callbackfn = callbackfn;
c->prompt_freefn = freefn;
@@ -871,13 +874,17 @@ status_prompt_clear(struct client *c)
/* Update status line prompt with a new prompt string. */
void
-status_prompt_update(struct client *c, const char *msg)
+status_prompt_update(struct client *c, const char *msg, const char *input)
{
xfree(c->prompt_string);
c->prompt_string = xstrdup(msg);
- *c->prompt_buffer = '\0';
- c->prompt_index = 0;
+ xfree(c->prompt_buffer);
+ if (input != NULL)
+ c->prompt_buffer = xstrdup(input);
+ else
+ c->prompt_buffer = xstrdup("");
+ c->prompt_index = strlen(c->prompt_buffer);
c->prompt_hindex = 0;