diff options
author | James McCoy <jamessan@jamessan.com> | 2016-09-21 10:15:19 -0400 |
---|---|---|
committer | James McCoy <jamessan@jamessan.com> | 2016-09-24 14:03:14 -0400 |
commit | d533edf61eef15456efdf16bf45e68c824ee5870 (patch) | |
tree | 0fbbf17c1bc09ae02d543edee2b1e6a7528421ab /src | |
parent | 68bcb32ec43e2fab30dc05439fc77cf28793922c (diff) | |
download | rneovim-d533edf61eef15456efdf16bf45e68c824ee5870.tar.gz rneovim-d533edf61eef15456efdf16bf45e68c824ee5870.tar.bz2 rneovim-d533edf61eef15456efdf16bf45e68c824ee5870.zip |
vim-patch:7.4.1604
Problem: Although emoji characters are ambiguous width, best is to treat
them as full width.
Solution: Update the Unicode character tables. Add the 'emoji' options.
(Yasuhiro Matsumoto)
https://github.com/vim/vim/commit/3848e00e0177abdb31bc600234967863ec487233
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/CMakeLists.txt | 3 | ||||
-rw-r--r-- | src/nvim/mbyte.c | 3 | ||||
-rw-r--r-- | src/nvim/option.c | 2 | ||||
-rw-r--r-- | src/nvim/option_defs.h | 1 | ||||
-rw-r--r-- | src/nvim/options.lua | 8 | ||||
-rw-r--r-- | src/nvim/version.c | 2 |
6 files changed, 17 insertions, 2 deletions
diff --git a/src/nvim/CMakeLists.txt b/src/nvim/CMakeLists.txt index 7c2c2feebc..64e99fb475 100644 --- a/src/nvim/CMakeLists.txt +++ b/src/nvim/CMakeLists.txt @@ -39,6 +39,7 @@ set(UNICODE_DIR ${PROJECT_SOURCE_DIR}/unicode) set(UNICODEDATA_FILE ${UNICODE_DIR}/UnicodeData.txt) set(CASEFOLDING_FILE ${UNICODE_DIR}/CaseFolding.txt) set(EASTASIANWIDTH_FILE ${UNICODE_DIR}/EastAsianWidth.txt) +set(EMOJI_FILE ${UNICODE_DIR}/emoji-data.txt) set(GENERATED_UNICODE_TABLES ${GENERATED_DIR}/unicode_tables.generated.h) include_directories(${GENERATED_DIR}) @@ -195,12 +196,14 @@ add_custom_command(OUTPUT ${GENERATED_UNICODE_TABLES} ${UNICODEDATA_FILE} ${CASEFOLDING_FILE} ${EASTASIANWIDTH_FILE} + ${EMOJI_FILE} ${GENERATED_UNICODE_TABLES} DEPENDS ${UNICODE_TABLES_GENERATOR} ${UNICODEDATA_FILE} ${CASEFOLDING_FILE} ${EASTASIANWIDTH_FILE} + ${EMOJI_FILE} ) add_custom_command(OUTPUT ${GENERATED_API_DISPATCH} ${API_METADATA} diff --git a/src/nvim/mbyte.c b/src/nvim/mbyte.c index f577fd847e..e05b3f3a37 100644 --- a/src/nvim/mbyte.c +++ b/src/nvim/mbyte.c @@ -949,6 +949,9 @@ int utf_char2cells(int c) if (intable(doublewidth, ARRAY_SIZE(doublewidth), c)) return 2; #endif + if (p_emoji && intable(emoji, ARRAY_SIZE(emoji), c)) { + return 2; + } } /* Characters below 0x100 are influenced by 'isprint' option */ else if (c >= 0x80 && !vim_isprintc(c)) diff --git a/src/nvim/option.c b/src/nvim/option.c index d8908cca90..acefe5b4aa 100644 --- a/src/nvim/option.c +++ b/src/nvim/option.c @@ -2520,7 +2520,7 @@ did_set_string_option ( errmsg = e_invarg; } /* 'ambiwidth' */ - else if (varp == &p_ambw) { + else if (varp == &p_ambw || (bool *)varp == &p_emoji) { if (check_opt_strings(p_ambw, p_ambw_values, FALSE) != OK) errmsg = e_invarg; else if (set_chars_option(&p_lcs) != NULL) diff --git a/src/nvim/option_defs.h b/src/nvim/option_defs.h index e36cceaaf4..00ab25c406 100644 --- a/src/nvim/option_defs.h +++ b/src/nvim/option_defs.h @@ -402,6 +402,7 @@ static char *(p_dy_values[]) = {"lastline", "uhex", NULL}; #define DY_LASTLINE 0x001 #define DY_UHEX 0x002 EXTERN int p_ed; /* 'edcompatible' */ +EXTERN bool p_emoji; // 'emoji' EXTERN char_u *p_ead; /* 'eadirection' */ EXTERN bool p_ea; /* 'equalalways' */ EXTERN char_u *p_ep; /* 'equalprg' */ diff --git a/src/nvim/options.lua b/src/nvim/options.lua index 060ec8c1e1..583c63614a 100644 --- a/src/nvim/options.lua +++ b/src/nvim/options.lua @@ -644,6 +644,14 @@ return { defaults={if_true={vi=false}} }, { + full_name='emoji', abbreviation='emo', + type='bool', scope={'global'}, + vi_def=true, + redraw={'everything'}, + varname='p_emoji', + defaults={if_true={vi=true}} + }, + { full_name='encoding', abbreviation='enc', type='string', scope={'global'}, deny_in_modelines=true, diff --git a/src/nvim/version.c b/src/nvim/version.c index 685a2a843b..0106185d13 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -839,7 +839,7 @@ static int included_patches[] = { // 1607, // 1606, // 1605, - // 1604, + 1604, 1603, // 1602 NA // 1601 NA |