From b4f95c43fca75a3ee713fdf76fe55bb1e8ebba36 Mon Sep 17 00:00:00 2001 From: nicm Date: Wed, 5 Oct 2016 12:32:13 +0000 Subject: [PATCH 1/3] Allow cmd_mouse_at return arguments to be NULL. --- cmd.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cmd.c b/cmd.c index c643a346..f5889a7e 100644 --- a/cmd.c +++ b/cmd.c @@ -601,8 +601,10 @@ cmd_mouse_at(struct window_pane *wp, struct mouse_event *m, u_int *xp, if (y < wp->yoff || y >= wp->yoff + wp->sy) return (-1); - *xp = x - wp->xoff; - *yp = y - wp->yoff; + if (xp != NULL) + *xp = x - wp->xoff; + if (yp != NULL) + *yp = y - wp->yoff; return (0); } From 4117a7ed1909c16026f63d8469512ffd9fbbf4c9 Mon Sep 17 00:00:00 2001 From: nicm Date: Wed, 5 Oct 2016 12:34:05 +0000 Subject: [PATCH 2/3] Keep buffer creation time and add accessors for it and the order number. --- paste.c | 21 ++++++++++++++++++++- tmux.h | 2 ++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/paste.c b/paste.c index f5702438..94fca0ed 100644 --- a/paste.c +++ b/paste.c @@ -35,6 +35,7 @@ struct paste_buffer { size_t size; char *name; + time_t created; int automatic; u_int order; @@ -79,6 +80,20 @@ paste_buffer_name(struct paste_buffer *pb) return (pb->name); } +/* Get paste buffer order. */ +u_int +paste_buffer_order(struct paste_buffer *pb) +{ + return (pb->order); +} + +/* Get paste buffer created. */ +time_t +paste_buffer_created(struct paste_buffer *pb) +{ + return (pb->created); +} + /* Get paste buffer data. */ const char * paste_buffer_data(struct paste_buffer *pb, size_t *size) @@ -88,7 +103,7 @@ paste_buffer_data(struct paste_buffer *pb, size_t *size) return (pb->data); } -/* Walk paste buffers by name. */ +/* Walk paste buffers by time. */ struct paste_buffer * paste_walk(struct paste_buffer *pb) { @@ -174,6 +189,8 @@ paste_add(char *data, size_t size) pb->automatic = 1; paste_num_automatic++; + pb->created = time(NULL); + pb->order = paste_next_order++; RB_INSERT(paste_name_tree, &paste_by_name, pb); RB_INSERT(paste_time_tree, &paste_by_time, pb); @@ -264,6 +281,8 @@ paste_set(char *data, size_t size, const char *name, char **cause) pb->automatic = 0; pb->order = paste_next_order++; + pb->created = time(NULL); + if ((old = paste_get_name(name)) != NULL) paste_free(old); diff --git a/tmux.h b/tmux.h index 46e35aab..ba8a5019 100644 --- a/tmux.h +++ b/tmux.h @@ -1587,6 +1587,8 @@ void cfg_show_causes(struct session *); /* paste.c */ struct paste_buffer; const char *paste_buffer_name(struct paste_buffer *); +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 *); struct paste_buffer *paste_get_top(const char **); From f55c991a1b7ec25f03d977cabc7ae4563f37324a Mon Sep 17 00:00:00 2001 From: nicm Date: Wed, 5 Oct 2016 12:36:36 +0000 Subject: [PATCH 3/3] Wrap some long lines in screen-write.c. --- screen-write.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/screen-write.c b/screen-write.c index 2b7fba0b..39775174 100644 --- a/screen-write.c +++ b/screen-write.c @@ -389,8 +389,8 @@ screen_write_cnputs(struct screen_write_ctx *ctx, ssize_t maxlen, /* Copy from another screen. */ void -screen_write_copy(struct screen_write_ctx *ctx, - struct screen *src, u_int px, u_int py, u_int nx, u_int ny) +screen_write_copy(struct screen_write_ctx *ctx, struct screen *src, u_int px, + u_int py, u_int nx, u_int ny) { struct screen *s = ctx->s; struct grid *gd = src->grid; @@ -1111,7 +1111,7 @@ screen_write_cell(struct screen_write_ctx *ctx, const struct grid_cell *gc) gce = &gl->celldata[s->cx]; if (gce->flags & GRID_FLAG_EXTENDED) skip = 0; - else if (gc->flags != (gce->flags & ~GRID_FLAG_EXTENDED)) + else if (gc->flags != gce->flags) skip = 0; else if (gc->attr != gce->data.attr) skip = 0; @@ -1119,7 +1119,9 @@ screen_write_cell(struct screen_write_ctx *ctx, const struct grid_cell *gc) skip = 0; else if (gc->bg != gce->data.bg) skip = 0; - else if (gc->data.width != 1 || gce->data.data != gc->data.data[0]) + else if (gc->data.width != 1) + skip = 0; + else if (gce->data.data != gc->data.data[0]) skip = 0; } } @@ -1267,10 +1269,12 @@ screen_write_overwrite(struct screen_write_ctx *ctx, struct grid_cell *gc, } /* - * Overwrite any padding cells that belong to any UTF-8 characters we'll be - * overwriting with the current character. + * Overwrite any padding cells that belong to any UTF-8 characters + * we'll be overwriting with the current character. */ - if (width != 1 || gc->data.width != 1 || gc->flags & GRID_FLAG_PADDING) { + if (width != 1 || + gc->data.width != 1 || + gc->flags & GRID_FLAG_PADDING) { xx = s->cx + width - 1; while (++xx < screen_size_x(s)) { grid_view_get_cell(gd, xx, s->cy, &tmp_gc);