version 1.73, 2019/06/12 09:10:29 |
version 1.74, 2020/04/09 13:54:38 |
|
|
static struct client * |
static struct client * |
cmd_find_current_client(struct cmdq_item *item, int quiet) |
cmd_find_current_client(struct cmdq_item *item, int quiet) |
{ |
{ |
struct client *c; |
struct client *c = NULL, *found; |
struct session *s; |
struct session *s; |
struct window_pane *wp; |
struct window_pane *wp; |
struct cmd_find_state fs; |
struct cmd_find_state fs; |
|
|
if (item->client != NULL && item->client->session != NULL) |
if (item != NULL) |
return (item->client); |
c = item->client; |
|
if (c != NULL && c->session != NULL) |
|
return (c); |
|
|
c = NULL; |
found = NULL; |
if ((wp = cmd_find_inside_pane(item->client)) != NULL) { |
if (c != NULL && (wp = cmd_find_inside_pane(c)) != NULL) { |
cmd_find_clear_state(&fs, CMD_FIND_QUIET); |
cmd_find_clear_state(&fs, CMD_FIND_QUIET); |
fs.w = wp->window; |
fs.w = wp->window; |
if (cmd_find_best_session_with_window(&fs) == 0) |
if (cmd_find_best_session_with_window(&fs) == 0) |
c = cmd_find_best_client(fs.s); |
found = cmd_find_best_client(fs.s); |
} else { |
} else { |
s = cmd_find_best_session(NULL, 0, CMD_FIND_QUIET); |
s = cmd_find_best_session(NULL, 0, CMD_FIND_QUIET); |
if (s != NULL) |
if (s != NULL) |
c = cmd_find_best_client(s); |
found = cmd_find_best_client(s); |
} |
} |
if (c == NULL && !quiet) |
if (found == NULL && item != NULL && !quiet) |
cmdq_error(item, "no current client"); |
cmdq_error(item, "no current client"); |
log_debug("%s: no target, return %p", __func__, c); |
log_debug("%s: no target, return %p", __func__, found); |
return (c); |
return (found); |
} |
} |
|
|
/* Find the target client or report an error and return NULL. */ |
/* Find the target client or report an error and return NULL. */ |