summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2022-06-04 10:01:09 +0100
committerThomas Adam <thomas@xteddy.org>2022-06-04 10:01:09 +0100
commitafb3a5fe7180f73457346cf12d096497d93aa642 (patch)
tree115ee9190ae9ff5af5358fdc0ee1662380145aed
parente77e11ec6bad1207ab15ee0f148b6a084d9f091c (diff)
parent020c403dff56269d93625970ed41761520afc853 (diff)
Merge branch 'obsd-master'
-rw-r--r--cmd-choose-tree.c2
-rw-r--r--paste.c8
-rw-r--r--tmux.h1
3 files changed, 10 insertions, 1 deletions
diff --git a/cmd-choose-tree.c b/cmd-choose-tree.c
index 7aa1d217..f2f4b2e3 100644
--- a/cmd-choose-tree.c
+++ b/cmd-choose-tree.c
@@ -100,7 +100,7 @@ cmd_choose_tree_exec(struct cmd *self, struct cmdq_item *item)
const struct window_mode *mode;
if (cmd_get_entry(self) == &cmd_choose_buffer_entry) {
- if (paste_get_top(NULL) == NULL)
+ if (paste_is_empty())
return (CMD_RETURN_NORMAL);
mode = &window_buffer_mode;
} else if (cmd_get_entry(self) == &cmd_choose_client_entry) {
diff --git a/paste.c b/paste.c
index 51ae2b1d..ad9d71e5 100644
--- a/paste.c
+++ b/paste.c
@@ -111,6 +111,12 @@ paste_walk(struct paste_buffer *pb)
return (RB_NEXT(paste_time_tree, &paste_by_time, pb));
}
+int
+paste_is_empty(void)
+{
+ return RB_ROOT(&paste_by_time) == NULL;
+}
+
/* Get the most recent automatic buffer. */
struct paste_buffer *
paste_get_top(const char **name)
@@ -118,6 +124,8 @@ paste_get_top(const char **name)
struct paste_buffer *pb;
pb = RB_MIN(paste_time_tree, &paste_by_time);
+ while (pb != NULL && !pb->automatic)
+ pb = RB_NEXT(paste_time_tree, &paste_by_time, pb);
if (pb == NULL)
return (NULL);
if (name != NULL)
diff --git a/tmux.h b/tmux.h
index 53084b8b..972b4624 100644
--- a/tmux.h
+++ b/tmux.h
@@ -2058,6 +2058,7 @@ u_int paste_buffer_order(struct paste_buffer *);
time_t paste_buffer_created(struct paste_buffer *);
const char *paste_buffer_data(struct paste_buffer *, size_t *);
struct paste_buffer *paste_walk(struct paste_buffer *);
+int paste_is_empty(void);
struct paste_buffer *paste_get_top(const char **);
struct paste_buffer *paste_get_name(const char *);
void paste_free(struct paste_buffer *);