Mercurial > vim
diff src/screen.c @ 16918:21cddcc6fbe8 v8.1.1460
patch 8.1.1460: popup window border characters may be wrong
commit https://github.com/vim/vim/commit/02e15072be08ef4ae03d673fc95ed6234e749e1c
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Jun 3 22:53:30 2019 +0200
patch 8.1.1460: popup window border characters may be wrong
Problem: Popup window border characters may be wrong.
Solution: Reset the border characters for each popup. Correct use of
'ambiwidth'.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 03 Jun 2019 23:00:06 +0200 |
parents | 90cec755ff80 |
children | 03f3a9ca2770 |
line wrap: on
line diff
--- a/src/screen.c +++ b/src/screen.c @@ -1041,7 +1041,7 @@ update_popups(void) int total_height; int popup_attr; int border_attr[4]; - int border_char[8] = {'-', '|', '-', '|', '+', '+', '+', '+', }; + int border_char[8]; char_u buf[MB_MAXBYTES]; int row; int i; @@ -1080,7 +1080,7 @@ update_popups(void) // We can only use these line drawing characters when 'encoding' is // "utf-8" and 'ambiwidth' is "single". - if (enc_utf8 && p_ambw == 's') + if (enc_utf8 && *p_ambw == 's') { border_char[0] = border_char[2] = 0x2550; border_char[1] = border_char[3] = 0x2551; @@ -1089,6 +1089,13 @@ update_popups(void) border_char[6] = 0x255d; border_char[7] = 0x255a; } + else + { + border_char[0] = border_char[2] = '-'; + border_char[1] = border_char[3] = '|'; + for (i = 4; i < 8; ++i) + border_char[i] = '+'; + } for (i = 0; i < 8; ++i) if (wp->w_border_char[i] != 0) border_char[i] = wp->w_border_char[i];