version 1.53, 2021/08/21 10:22:39 |
version 1.54, 2021/08/21 20:46:43 |
|
|
struct cmd_find_state *target = cmdq_get_target(item); |
struct cmd_find_state *target = cmdq_get_target(item); |
struct window_pane *wp = target->wp; |
struct window_pane *wp = target->wp; |
const char *s = args_string(args, 0), *suffix = ""; |
const char *s = args_string(args, 0), *suffix = ""; |
char *filter; |
struct args_value *filter; |
int C, N, T; |
int C, N, T; |
|
|
C = args_has(args, 'C'); |
C = args_has(args, 'C'); |
|
|
if (!C && !N && !T) |
if (!C && !N && !T) |
C = N = T = 1; |
C = N = T = 1; |
|
|
|
filter = xcalloc(1, sizeof *filter); |
|
filter->type = ARGS_STRING; |
|
|
if (C && N && T) { |
if (C && N && T) { |
xasprintf(&filter, |
xasprintf(&filter->string, |
"#{||:" |
"#{||:" |
"#{C%s:%s},#{||:#{m%s:*%s*,#{window_name}}," |
"#{C%s:%s},#{||:#{m%s:*%s*,#{window_name}}," |
"#{m%s:*%s*,#{pane_title}}}}", |
"#{m%s:*%s*,#{pane_title}}}}", |
suffix, s, suffix, s, suffix, s); |
suffix, s, suffix, s, suffix, s); |
} else if (C && N) { |
} else if (C && N) { |
xasprintf(&filter, |
xasprintf(&filter->string, |
"#{||:#{C%s:%s},#{m%s:*%s*,#{window_name}}}", |
"#{||:#{C%s:%s},#{m%s:*%s*,#{window_name}}}", |
suffix, s, suffix, s); |
suffix, s, suffix, s); |
} else if (C && T) { |
} else if (C && T) { |
xasprintf(&filter, |
xasprintf(&filter->string, |
"#{||:#{C%s:%s},#{m%s:*%s*,#{pane_title}}}", |
"#{||:#{C%s:%s},#{m%s:*%s*,#{pane_title}}}", |
suffix, s, suffix, s); |
suffix, s, suffix, s); |
} else if (N && T) { |
} else if (N && T) { |
xasprintf(&filter, |
xasprintf(&filter->string, |
"#{||:#{m%s:*%s*,#{window_name}}," |
"#{||:#{m%s:*%s*,#{window_name}}," |
"#{m%s:*%s*,#{pane_title}}}", |
"#{m%s:*%s*,#{pane_title}}}", |
suffix, s, suffix, s); |
suffix, s, suffix, s); |
} else if (C) |
} else if (C) { |
xasprintf(&filter, "#{C%s:%s}", suffix, s); |
xasprintf(&filter->string, |
else if (N) |
"#{C%s:%s}", |
xasprintf(&filter, "#{m%s:*%s*,#{window_name}}", suffix, s); |
suffix, s); |
else |
} else if (N) { |
xasprintf(&filter, "#{m%s:*%s*,#{pane_title}}", suffix, s); |
xasprintf(&filter->string, |
|
"#{m%s:*%s*,#{window_name}}", |
|
suffix, s); |
|
} else { |
|
xasprintf(&filter->string, |
|
"#{m%s:*%s*,#{pane_title}}", |
|
suffix, s); |
|
} |
|
|
new_args = args_create(); |
new_args = args_create(); |
if (args_has(args, 'Z')) |
if (args_has(args, 'Z')) |
|
|
args_set(new_args, 'f', filter); |
args_set(new_args, 'f', filter); |
|
|
window_pane_set_mode(wp, NULL, &window_tree_mode, target, new_args); |
window_pane_set_mode(wp, NULL, &window_tree_mode, target, new_args); |
|
|
args_free(new_args); |
args_free(new_args); |
free(filter); |
|
|
|
return (CMD_RETURN_NORMAL); |
return (CMD_RETURN_NORMAL); |
} |
} |