Hi Yukihiro ,Christian and Bram
2014/8/16(Sat) 10:14:35 UTC+9 Yukihiro Nakadaira:
> It doesn't work when highlighting multiple characters.
>
> $ vim -u NONE
> :set encoding=utf-8
> :call setline(1, 'aaaaa')
> :hi Test guibg=red ctermbg=red
>
> :call matchaddpos('Test', [[1, 1, 2]])
Thanks for bug report!
I update a patch. (Attached)
2014/8/16(Sat) 21:57:23 UTC+9 Christian Brabandt:
> Can you all please check, if all your issues also occur with the patch
>
> from here:
>
> https://groups.google.com/forum/#!msg/vim_use/V6cRWX4c13E/qh3YCUESU0kJ
Thanks for report.
I will check them soon in my new patch.
--
Best regards,
Hirohito Higashi
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.
diff -r 18fd959b07ef src/screen.c
--- a/src/screen.c Wed Aug 13 22:05:54 2014 +0200
+++ b/src/screen.c Sat Aug 16 20:13:23 2014 +0900
@@ -2911,6 +2911,7 @@
int mb_c = 0; /* decoded multi-byte character */
int mb_utf8 = FALSE; /* screen char is UTF-8 char */
int u8cc[MAX_MCO]; /* composing UTF-8 chars */
+ int hl_len = 0;
#endif
#ifdef FEAT_DIFF
int filler_lines; /* nr of filler lines to be drawn */
@@ -3832,6 +3833,10 @@
* priority).
*/
v = (long)(ptr - line);
+#ifdef FEAT_MBYTE
+ if (has_mbyte)
+ hl_len += (*mb_ptr2len)(ptr);
+#endif
cur = wp->w_match_head;
shl_flag = FALSE;
while (cur != NULL || shl_flag == FALSE)
@@ -3857,10 +3862,17 @@
&& v < (long)shl->endcol)
{
shl->attr_cur = shl->attr;
+#ifdef FEAT_MBYTE
+ if (has_mbyte && shl->endcol < hl_len)
+ shl->endcol = hl_len;
+#endif
}
- else if (v >= (long)shl->endcol)
+ else if (v == (long)shl->endcol)
{
shl->attr_cur = 0;
+#ifdef FEAT_MBYTE
+ hl_len = 0;
+#endif
next_search_hl(wp, shl, lnum, (colnr_T)v, cur);
pos_inprogress = cur == NULL || cur->pos.cur == 0
? FALSE : TRUE;