Allow the initial context on prompts to be set with the new -I option to

command-prompt. From Tiago Cunha.
This commit is contained in:
Nicholas Marriott
2011-07-02 21:05:44 +00:00
parent 1202284f37
commit ad60a2c952
5 changed files with 73 additions and 24 deletions

View File

@ -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;