From 40d246b29c8e0ee012d7836969dc8b41d6516444 Mon Sep 17 00:00:00 2001 From: nicm Date: Wed, 28 Nov 2018 11:20:13 +0000 Subject: [PATCH] Handle UTF-8 in word-separators option, GitHub issue 1551. --- window-copy.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/window-copy.c b/window-copy.c index 516eb71e..59fb24d3 100644 --- a/window-copy.c +++ b/window-copy.c @@ -1817,15 +1817,27 @@ window_copy_in_set(struct window_pane *wp, u_int px, u_int py, const char *set) struct window_copy_mode_data *data = wp->modedata; struct grid_cell gc; const struct utf8_data *ud; + struct utf8_data *copy; + struct utf8_data *loop; + int found = 0; grid_get_cell(data->backing->grid, px, py, &gc); - + if (gc.flags & GRID_FLAG_PADDING) + return (0); ud = &gc.data; - if (ud->size != 1 || (gc.flags & GRID_FLAG_PADDING)) - return (0); - if (*ud->data == 0x00 || *ud->data == 0x7f) - return (0); - return (strchr(set, *ud->data) != NULL); + + copy = utf8_fromcstr(set); + for (loop = copy; loop->size != 0; loop++) { + if (loop->size != ud->size) + continue; + if (memcmp(loop->data, ud->data, loop->size) == 0) { + found = 1; + break; + } + } + free(copy); + + return (found); } static u_int