aboutsummaryrefslogtreecommitdiff
path: root/cmd-find.c
diff options
context:
space:
mode:
Diffstat (limited to 'cmd-find.c')
-rw-r--r--cmd-find.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/cmd-find.c b/cmd-find.c
index dec386ac..10f2fd04 100644
--- a/cmd-find.c
+++ b/cmd-find.c
@@ -803,6 +803,15 @@ cmd_find_clear_state(struct cmd_find_state *fs, struct cmd_q *cmdq, int flags)
fs->idx = -1;
}
+/* Check if state is empty/ */
+int
+cmd_find_empty_state(struct cmd_find_state *fs)
+{
+ if (fs->s == NULL && fs->wl == NULL && fs->w == NULL && fs->wp == NULL)
+ return (1);
+ return (0);
+}
+
/* Check if a state if valid. */
int
cmd_find_valid_state(struct cmd_find_state *fs)
@@ -959,12 +968,19 @@ cmd_find_target(struct cmd_find_state *fs, struct cmd_find_state *current,
cmd_find_clear_state(fs, cmdq, flags);
/* Find current state. */
- if (server_check_marked() && (flags & CMD_FIND_DEFAULT_MARKED))
+ if (server_check_marked() && (flags & CMD_FIND_DEFAULT_MARKED)) {
fs->current = &marked_pane;
- else if (cmd_find_valid_state(&cmdq->current))
+ log_debug(" current is marked pane");
+ } else if (cmd_find_valid_state(&cmdq->current)) {
fs->current = &cmdq->current;
- else
+ log_debug(" current is from queue");
+ } else {
fs->current = current;
+ log_debug(" current is from argument");
+ }
+ if (!cmd_find_empty_state(fs->current) &&
+ !cmd_find_valid_state(fs->current))
+ fatalx("invalid current find state");
/* An empty or NULL target is the current. */
if (target == NULL || *target == '\0')