vim-patch:7.4.1620

Problem:    Emoji characters are not considered as a kind of word character.
Solution:   Give emoji characters a word class number. (Yashuhiro Matsumoto)

4077b33a83
This commit is contained in:
James McCoy 2016-09-22 00:40:45 -04:00
parent 49735d6fae
commit 45598d2e5e
No known key found for this signature in database
GPG Key ID: DFE691AE331BA3DB
3 changed files with 9 additions and 4 deletions

View File

@ -12,7 +12,7 @@
-- 2 then interval applies only to first, third, fifth, … character in range. -- 2 then interval applies only to first, third, fifth, … character in range.
-- Fourth value is number that should be added to the codepoint to yield -- Fourth value is number that should be added to the codepoint to yield
-- folded/lower/upper codepoint. -- folded/lower/upper codepoint.
-- 4. emoji table: sorted list of non-overlapping closed intervals of Emoji -- 4. emoji_tab table: sorted list of non-overlapping closed intervals of Emoji
-- characters -- characters
if arg[1] == '--help' then if arg[1] == '--help' then
print('Usage:') print('Usage:')
@ -221,7 +221,7 @@ local build_width_table = function(ut_fp, dataprops, widthprops, widths,
end end
local build_emoji_table = function(ut_fp, emojiprops) local build_emoji_table = function(ut_fp, emojiprops)
ut_fp:write('static const struct interval emoji[] = {\n') ut_fp:write('static const struct interval emoji_tab[] = {\n')
for _, p in ipairs(emojiprops) do for _, p in ipairs(emojiprops) do
if p[2]:match('Emoji%s+#') then if p[2]:match('Emoji%s+#') then
local start, end_ = p[1]:find('%.%.') local start, end_ = p[1]:find('%.%.')

View File

@ -949,7 +949,7 @@ int utf_char2cells(int c)
if (intable(doublewidth, ARRAY_SIZE(doublewidth), c)) if (intable(doublewidth, ARRAY_SIZE(doublewidth), c))
return 2; return 2;
#endif #endif
if (p_emoji && intable(emoji, ARRAY_SIZE(emoji), c)) { if (p_emoji && intable(emoji_tab, ARRAY_SIZE(emoji_tab), c)) {
return 2; return 2;
} }
} }
@ -1715,6 +1715,11 @@ int utf_class(int c)
return (int)classes[mid].class; return (int)classes[mid].class;
} }
// emoji
if (intable(emoji_tab, ARRAY_SIZE(emoji_tab), c)) {
return 3;
}
/* most other characters are "word" characters */ /* most other characters are "word" characters */
return 2; return 2;
} }

View File

@ -823,7 +823,7 @@ static int included_patches[] = {
// 1623 NA // 1623 NA
// 1622 NA // 1622 NA
// 1621 NA // 1621 NA
// 1620, 1620,
// 1619, // 1619,
// 1618 NA // 1618 NA
// 1617 NA // 1617 NA