diff options
author | Thomas Adam <thomas@xteddy.org> | 2020-05-29 16:01:19 +0100 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2020-05-29 16:01:19 +0100 |
commit | 5ef790a6c41f5b78d2e757612b75cb9142b9173f (patch) | |
tree | d183a67740c647c0ae6227bdcdb62be5a61d6679 | |
parent | ce6b3a539dffa92ea014009670f6871cd0cf7232 (diff) | |
parent | 175e45005f4572b19a4aa34094f9a8c69ced5475 (diff) | |
download | rtmux-5ef790a6c41f5b78d2e757612b75cb9142b9173f.tar.gz rtmux-5ef790a6c41f5b78d2e757612b75cb9142b9173f.tar.bz2 rtmux-5ef790a6c41f5b78d2e757612b75cb9142b9173f.zip |
Merge branch 'obsd-master'
-rw-r--r-- | cmd-find-window.c | 91 | ||||
-rw-r--r-- | tmux.1 | 4 |
2 files changed, 38 insertions, 57 deletions
diff --git a/cmd-find-window.c b/cmd-find-window.c index e1faeb2f..4cd155e4 100644 --- a/cmd-find-window.c +++ b/cmd-find-window.c @@ -32,8 +32,8 @@ const struct cmd_entry cmd_find_window_entry = { .name = "find-window", .alias = "findw", - .args = { "CNrt:TZ", 1, 1 }, - .usage = "[-CNrTZ] " CMD_TARGET_PANE_USAGE " match-string", + .args = { "CiNrt:TZ", 1, 1 }, + .usage = "[-CiNrTZ] " CMD_TARGET_PANE_USAGE " match-string", .target = { 't', CMD_FIND_PANE, 0 }, @@ -47,7 +47,7 @@ cmd_find_window_exec(struct cmd *self, struct cmdq_item *item) struct args *args = cmd_get_args(self), *new_args; struct cmd_find_state *target = cmdq_get_target(item); struct window_pane *wp = target->wp; - const char *s = args->argv[0]; + const char *s = args->argv[0], *suffix = ""; char *filter, *argv = { NULL }; int C, N, T; @@ -55,62 +55,41 @@ cmd_find_window_exec(struct cmd *self, struct cmdq_item *item) N = args_has(args, 'N'); T = args_has(args, 'T'); + if (args_has(args, 'r') && args_has(args, 'i')) + suffix = "/ri"; + else if (args_has(args, 'r')) + suffix = "/r"; + else if (args_has(args, 'i')) + suffix = "/i"; + if (!C && !N && !T) C = N = T = 1; - if (!args_has(args, 'r')) { - if (C && N && T) { - xasprintf(&filter, - "#{||:" - "#{C:%s},#{||:#{m:*%s*,#{window_name}}," - "#{m:*%s*,#{pane_title}}}}", - s, s, s); - } else if (C && N) { - xasprintf(&filter, - "#{||:#{C:%s},#{m:*%s*,#{window_name}}}", - s, s); - } else if (C && T) { - xasprintf(&filter, - "#{||:#{C:%s},#{m:*%s*,#{pane_title}}}", - s, s); - } else if (N && T) { - xasprintf(&filter, - "#{||:#{m:*%s*,#{window_name}}," - "#{m:*%s*,#{pane_title}}}", - s, s); - } else if (C) - xasprintf(&filter, "#{C:%s}", s); - else if (N) - xasprintf(&filter, "#{m:*%s*,#{window_name}}", s); - else - xasprintf(&filter, "#{m:*%s*,#{pane_title}}", s); - } else { - if (C && N && T) { - xasprintf(&filter, - "#{||:" - "#{C/r:%s},#{||:#{m/r:%s,#{window_name}}," - "#{m/r:%s,#{pane_title}}}}", - s, s, s); - } else if (C && N) { - xasprintf(&filter, - "#{||:#{C/r:%s},#{m/r:%s,#{window_name}}}", - s, s); - } else if (C && T) { - xasprintf(&filter, - "#{||:#{C/r:%s},#{m/r:%s,#{pane_title}}}", - s, s); - } else if (N && T) { - xasprintf(&filter, - "#{||:#{m/r:%s,#{window_name}}," - "#{m/r:%s,#{pane_title}}}", - s, s); - } else if (C) - xasprintf(&filter, "#{C/r:%s}", s); - else if (N) - xasprintf(&filter, "#{m/r:%s,#{window_name}}", s); - else - xasprintf(&filter, "#{m/r:%s,#{pane_title}}", s); - } + if (C && N && T) { + xasprintf(&filter, + "#{||:" + "#{C%s:%s},#{||:#{m%s:*%s*,#{window_name}}," + "#{m%s:*%s*,#{pane_title}}}}", + suffix, s, suffix, s, suffix, s); + } else if (C && N) { + xasprintf(&filter, + "#{||:#{C%s:%s},#{m%s:*%s*,#{window_name}}}", + suffix, s, suffix, s); + } else if (C && T) { + xasprintf(&filter, + "#{||:#{C%s:%s},#{m%s:*%s*,#{pane_title}}}", + suffix, s, suffix, s); + } else if (N && T) { + xasprintf(&filter, + "#{||:#{m%s:*%s*,#{window_name}}," + "#{m%s:*%s*,#{pane_title}}}", + suffix, s, suffix, s); + } else if (C) + xasprintf(&filter, "#{C%s:%s}", suffix, s); + else if (N) + xasprintf(&filter, "#{m%s:*%s*,#{window_name}}", suffix, s); + else + xasprintf(&filter, "#{m%s:*%s*,#{pane_title}}", suffix, s); new_args = args_parse("", 1, &argv); if (args_has(args, 'Z')) @@ -2079,7 +2079,7 @@ With .Fl b , other commands are not blocked from running until the indicator is closed. .It Xo Ic find-window -.Op Fl rCNTZ +.Op Fl iCNrTZ .Op Fl t Ar target-pane .Ar match-string .Xc @@ -2098,6 +2098,8 @@ matches only visible window contents, matches only the window name and .Fl T matches only the window title. +.Fl i +makes the search ignore case. The default is .Fl CNT . .Fl Z |