diff options
author | Thomas Adam <thomas@xteddy.org> | 2019-11-07 08:01:26 +0000 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2019-11-07 08:01:26 +0000 |
commit | eb215d3d3fc6a55245cfbad77613129c06f6ff3c (patch) | |
tree | dfd9c9b14c8129d04974357954ac136f6a8e3060 | |
parent | 4408df1e8aa1662b197117e1eee13344d4c1d63e (diff) | |
parent | c225262e132ded1b4e1e8c0bd21884e9da78ddb3 (diff) | |
download | rtmux-eb215d3d3fc6a55245cfbad77613129c06f6ff3c.tar.gz rtmux-eb215d3d3fc6a55245cfbad77613129c06f6ff3c.tar.bz2 rtmux-eb215d3d3fc6a55245cfbad77613129c06f6ff3c.zip |
Merge branch 'obsd-master'
-rw-r--r-- | cmd-send-keys.c | 5 | ||||
-rw-r--r-- | tmux.1 | 6 | ||||
-rw-r--r-- | window-copy.c | 32 |
3 files changed, 35 insertions, 8 deletions
diff --git a/cmd-send-keys.c b/cmd-send-keys.c index fe202335..ddbab6f7 100644 --- a/cmd-send-keys.c +++ b/cmd-send-keys.c @@ -33,8 +33,9 @@ const struct cmd_entry cmd_send_keys_entry = { .name = "send-keys", .alias = "send", - .args = { "HlXRMN:t:", 0, -1 }, - .usage = "[-HlXRM] [-N repeat-count] " CMD_TARGET_PANE_USAGE " key ...", + .args = { "FHlMN:Rt:X", 0, -1 }, + .usage = "[-FHlMRX] [-N repeat-count] " CMD_TARGET_PANE_USAGE + " key ...", .target = { 't', CMD_FIND_PANE, 0 }, @@ -2677,7 +2677,7 @@ With only .Ar key-table . .It Xo Ic send-keys -.Op Fl HlMRX +.Op Fl FHlMRX .Op Fl N Ar repeat-count .Op Fl t Ar target-pane .Ar key Ar ... @@ -2716,7 +2716,9 @@ the .Sx WINDOWS AND PANES section. .Fl N -specifies a repeat count. +specifies a repeat count and +.Fl F +expands formats in arguments where appropriate. .It Xo Ic send-prefix .Op Fl 2 .Op Fl t Ar target-pane diff --git a/window-copy.c b/window-copy.c index 473112e3..01dc1f85 100644 --- a/window-copy.c +++ b/window-copy.c @@ -1673,12 +1673,24 @@ window_copy_cmd_search_backward(struct window_copy_cmd_state *cs) struct window_copy_mode_data *data = wme->data; u_int np = wme->prefix; const char *argument; + char *expanded; if (cs->args->argc == 2) { argument = cs->args->argv[1]; if (*argument != '\0') { - free(data->searchstr); - data->searchstr = xstrdup(argument); + if (args_has(cs->args, 'F')) { + expanded = format_single(NULL, argument, NULL, + NULL, NULL, wme->wp); + if (*expanded == '\0') { + free(expanded); + return (WINDOW_COPY_CMD_NOTHING); + } + free(data->searchstr); + data->searchstr = expanded; + } else { + free(data->searchstr); + data->searchstr = xstrdup(argument); + } } } if (data->searchstr != NULL) { @@ -1696,12 +1708,24 @@ window_copy_cmd_search_forward(struct window_copy_cmd_state *cs) struct window_copy_mode_data *data = wme->data; u_int np = wme->prefix; const char *argument; + char *expanded; if (cs->args->argc == 2) { argument = cs->args->argv[1]; if (*argument != '\0') { - free(data->searchstr); - data->searchstr = xstrdup(argument); + if (args_has(cs->args, 'F')) { + expanded = format_single(NULL, argument, NULL, + NULL, NULL, wme->wp); + if (*expanded == '\0') { + free(expanded); + return (WINDOW_COPY_CMD_NOTHING); + } + free(data->searchstr); + data->searchstr = expanded; + } else { + free(data->searchstr); + data->searchstr = xstrdup(argument); + } } } if (data->searchstr != NULL) { |