Skip to content

Instantly share code, notes, and snippets.

@mattn
Last active August 29, 2015 14:11
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mattn/78477753124fb4eb84a3 to your computer and use it in GitHub Desktop.
Save mattn/78477753124fb4eb84a3 to your computer and use it in GitHub Desktop.
Patch to add ambiwidth=fulldouble to display N (neutral unicode characters) as double
diff -r 8cae3b61ce9e runtime/doc/options.txt
--- a/runtime/doc/options.txt Mon Dec 08 04:16:45 2014 +0100
+++ b/runtime/doc/options.txt Wed Dec 10 14:28:43 2014 +0900
@@ -685,6 +685,7 @@
"single": Use the same width as characters in US-ASCII. This is
expected by most users.
"double": Use twice the width of ASCII characters.
+ "fulldouble": Use twice the width for neutral characters.
*E834* *E835*
The value "double" cannot be used if 'listchars' or 'fillchars'
contains a character that would be double width.
@@ -708,6 +709,13 @@
compiled with the |+termresponse| feature and if |t_u7| is set to the
escape sequence to request cursor position report.
+ Unicode consortium give data file about this East Asian Width
+ (http://www.unicode.org/Public/UCD/latest/ucd/EastAsianWidth.txt).
+ Character class W mean double, A mean ambiguous. And N mean neutral.
+ But most of font that contains emoticons (a.k.a emoji) displays the
+ character as double. If the terminal you use handles the characters as
+ double, you need to set "fulldouble" instead of "double".
+
*'antialias'* *'anti'* *'noantialias'* *'noanti'*
'antialias' 'anti' boolean (default: off)
global
diff -r 8cae3b61ce9e runtime/tools/unicode.vim
--- a/runtime/tools/unicode.vim Mon Dec 08 04:16:45 2014 +0100
+++ b/runtime/tools/unicode.vim Wed Dec 10 14:28:43 2014 +0900
@@ -195,7 +195,7 @@
let ranges = []
let dataidx = 0
for p in s:widthprops
- if p[1][0] =~ a:pattern
+ if p[1][0] =~ a:pattern && !(a:pattern == 'N' && p[1] =~ '#.*LATIN')
if p[0] =~ '\.\.'
" It is a range. we don't check for composing char then.
let rng = split(p[0], '\.\.')
@@ -254,7 +254,11 @@
" Edit the Unicode text file. Requires the netrw plugin.
-edit http://unicode.org/Public/UNIDATA/UnicodeData.txt
+if filereadable("UnicodeData.txt")
+ edit UnicodeData.txt
+else
+ edit http://unicode.org/Public/UNIDATA/UnicodeData.txt
+endif
" Parse each line, create a list of lists.
call ParseDataToProps()
@@ -269,7 +273,11 @@
call BuildCombiningTable()
" Edit the case folding text file. Requires the netrw plugin.
-edit http://www.unicode.org/Public/UNIDATA/CaseFolding.txt
+if filereadable("CaseFolding.txt")
+ edit CaseFolding.txt
+else
+ edit http://www.unicode.org/Public/UNIDATA/CaseFolding.txt
+endif
" Parse each line, create a list of lists.
call ParseFoldProps()
@@ -278,7 +286,11 @@
call BuildFoldTable()
" Edit the width text file. Requires the netrw plugin.
-edit http://www.unicode.org/Public/UNIDATA/EastAsianWidth.txt
+if filereadable("EastAsianWidth.txt")
+ edit EastAsianWidth.txt
+else
+ edit http://www.unicode.org/Public/UNIDATA/EastAsianWidth.txt
+endif
" Parse each line, create a list of lists.
call ParseWidthProps()
@@ -288,3 +300,6 @@
" Build the ambiguous width table.
call BuildWidthTable('A', 'ambiguous')
+
+" Build the neutral width table.
+call BuildWidthTable('N', 'neutral')
diff -r 8cae3b61ce9e src/mbyte.c
--- a/src/mbyte.c Mon Dec 08 04:16:45 2014 +0100
+++ b/src/mbyte.c Wed Dec 10 14:28:43 2014 +0900
@@ -1468,6 +1468,758 @@
{0xf0000, 0xffffd},
{0x100000, 0x10fffd}
};
+ /* Sorted list of non-overlapping intervals of neutral part of East Asian
+ * Ambiguous characters, generated with ../runtime/tools/unicode.vim. */
+ static struct interval neutral[] =
+ {
+ {0x0000, 0x0040},
+ {0x005b, 0x0060},
+ {0x007b, 0x00a0},
+ {0x00a2, 0x00a3},
+ {0x00a5, 0x00a6},
+ {0x00a9, 0x00a9},
+ {0x00ab, 0x00ac},
+ {0x00af, 0x00af},
+ {0x00b5, 0x00b5},
+ {0x00bb, 0x00bb},
+ {0x02b0, 0x02c3},
+ {0x02c5, 0x02c6},
+ {0x02c8, 0x02c8},
+ {0x02cc, 0x02cc},
+ {0x02ce, 0x02cf},
+ {0x02d1, 0x02d7},
+ {0x02dc, 0x02dc},
+ {0x02de, 0x02de},
+ {0x02e0, 0x02ff},
+ {0x0370, 0x0377},
+ {0x037a, 0x037f},
+ {0x0384, 0x038a},
+ {0x038c, 0x038c},
+ {0x038e, 0x0390},
+ {0x03aa, 0x03b0},
+ {0x03c2, 0x03c2},
+ {0x03ca, 0x0400},
+ {0x0402, 0x040f},
+ {0x0450, 0x0450},
+ {0x0452, 0x052f},
+ {0x0531, 0x0556},
+ {0x0559, 0x055f},
+ {0x0561, 0x0587},
+ {0x0589, 0x058a},
+ {0x058d, 0x058f},
+ {0x0591, 0x05be},
+ {0x05c0, 0x05c6},
+ {0x05d0, 0x05ea},
+ {0x05f0, 0x05f4},
+ {0x0600, 0x061c},
+ {0x061e, 0x066f},
+ {0x0671, 0x070d},
+ {0x070f, 0x0710},
+ {0x0712, 0x074a},
+ {0x074d, 0x07b1},
+ {0x07c0, 0x07fa},
+ {0x0800, 0x082d},
+ {0x0830, 0x083e},
+ {0x0840, 0x085b},
+ {0x085e, 0x085e},
+ {0x08a0, 0x08b2},
+ {0x08e4, 0x0902},
+ {0x0904, 0x0939},
+ {0x093d, 0x094c},
+ {0x094e, 0x0980},
+ {0x0982, 0x0983},
+ {0x0985, 0x098c},
+ {0x098f, 0x0990},
+ {0x0993, 0x09a8},
+ {0x09aa, 0x09b0},
+ {0x09b2, 0x09b2},
+ {0x09b6, 0x09b9},
+ {0x09bd, 0x09c4},
+ {0x09c7, 0x09c8},
+ {0x09cb, 0x09cc},
+ {0x09ce, 0x09ce},
+ {0x09dc, 0x09dd},
+ {0x09df, 0x09e3},
+ {0x09e6, 0x09fb},
+ {0x0a01, 0x0a02},
+ {0x0a05, 0x0a0a},
+ {0x0a0f, 0x0a10},
+ {0x0a13, 0x0a28},
+ {0x0a2a, 0x0a30},
+ {0x0a32, 0x0a33},
+ {0x0a35, 0x0a36},
+ {0x0a38, 0x0a39},
+ {0x0a3e, 0x0a42},
+ {0x0a47, 0x0a48},
+ {0x0a4b, 0x0a4d},
+ {0x0a59, 0x0a5c},
+ {0x0a5e, 0x0a5e},
+ {0x0a66, 0x0a74},
+ {0x0a81, 0x0a82},
+ {0x0a85, 0x0a8d},
+ {0x0a8f, 0x0a91},
+ {0x0a93, 0x0aa8},
+ {0x0aaa, 0x0ab0},
+ {0x0ab2, 0x0ab3},
+ {0x0ab5, 0x0ab9},
+ {0x0abd, 0x0ac5},
+ {0x0ac7, 0x0ac8},
+ {0x0acb, 0x0acc},
+ {0x0ad0, 0x0ad0},
+ {0x0ae0, 0x0ae3},
+ {0x0ae6, 0x0af1},
+ {0x0b02, 0x0b03},
+ {0x0b05, 0x0b0c},
+ {0x0b0f, 0x0b10},
+ {0x0b13, 0x0b28},
+ {0x0b2a, 0x0b30},
+ {0x0b32, 0x0b33},
+ {0x0b35, 0x0b39},
+ {0x0b3d, 0x0b3d},
+ {0x0b41, 0x0b44},
+ {0x0b47, 0x0b48},
+ {0x0b4b, 0x0b4c},
+ {0x0b5c, 0x0b5d},
+ {0x0b5f, 0x0b63},
+ {0x0b66, 0x0b77},
+ {0x0b83, 0x0b83},
+ {0x0b85, 0x0b8a},
+ {0x0b8e, 0x0b90},
+ {0x0b92, 0x0b95},
+ {0x0b99, 0x0b9a},
+ {0x0b9c, 0x0b9c},
+ {0x0b9e, 0x0b9f},
+ {0x0ba3, 0x0ba4},
+ {0x0ba8, 0x0baa},
+ {0x0bae, 0x0bb9},
+ {0x0bbe, 0x0bbf},
+ {0x0bc1, 0x0bc2},
+ {0x0bc6, 0x0bc8},
+ {0x0bca, 0x0bcc},
+ {0x0bd0, 0x0bd0},
+ {0x0be6, 0x0bfa},
+ {0x0c01, 0x0c03},
+ {0x0c05, 0x0c0c},
+ {0x0c0e, 0x0c10},
+ {0x0c12, 0x0c28},
+ {0x0c2a, 0x0c39},
+ {0x0c3d, 0x0c44},
+ {0x0c46, 0x0c48},
+ {0x0c4a, 0x0c4d},
+ {0x0c55, 0x0c56},
+ {0x0c58, 0x0c59},
+ {0x0c60, 0x0c63},
+ {0x0c66, 0x0c6f},
+ {0x0c78, 0x0c7f},
+ {0x0c82, 0x0c83},
+ {0x0c85, 0x0c8c},
+ {0x0c8e, 0x0c90},
+ {0x0c92, 0x0ca8},
+ {0x0caa, 0x0cb3},
+ {0x0cb5, 0x0cb9},
+ {0x0cbd, 0x0cbd},
+ {0x0cc0, 0x0cc4},
+ {0x0cc7, 0x0cc8},
+ {0x0cca, 0x0ccd},
+ {0x0cd5, 0x0cd6},
+ {0x0cde, 0x0cde},
+ {0x0ce0, 0x0ce3},
+ {0x0ce6, 0x0cef},
+ {0x0cf1, 0x0cf2},
+ {0x0d02, 0x0d03},
+ {0x0d05, 0x0d0c},
+ {0x0d0e, 0x0d10},
+ {0x0d12, 0x0d3a},
+ {0x0d3d, 0x0d44},
+ {0x0d46, 0x0d48},
+ {0x0d4a, 0x0d4c},
+ {0x0d4e, 0x0d4e},
+ {0x0d60, 0x0d63},
+ {0x0d66, 0x0d75},
+ {0x0d79, 0x0d7f},
+ {0x0d82, 0x0d83},
+ {0x0d85, 0x0d96},
+ {0x0d9a, 0x0db1},
+ {0x0db3, 0x0dbb},
+ {0x0dbd, 0x0dbd},
+ {0x0dc0, 0x0dc6},
+ {0x0dcf, 0x0dd4},
+ {0x0dd8, 0x0ddf},
+ {0x0de6, 0x0def},
+ {0x0df2, 0x0df4},
+ {0x0e01, 0x0e30},
+ {0x0e32, 0x0e3a},
+ {0x0e3f, 0x0e5b},
+ {0x0e81, 0x0e82},
+ {0x0e84, 0x0e84},
+ {0x0e87, 0x0e88},
+ {0x0e8a, 0x0e8a},
+ {0x0e8d, 0x0e8d},
+ {0x0e94, 0x0e97},
+ {0x0e99, 0x0e9f},
+ {0x0ea1, 0x0ea3},
+ {0x0ea5, 0x0ea5},
+ {0x0ea7, 0x0ea7},
+ {0x0eaa, 0x0eab},
+ {0x0ead, 0x0eb0},
+ {0x0eb2, 0x0eb9},
+ {0x0ebb, 0x0ebd},
+ {0x0ec0, 0x0ec4},
+ {0x0ec6, 0x0ec6},
+ {0x0ec8, 0x0ecd},
+ {0x0ed0, 0x0ed9},
+ {0x0edc, 0x0edf},
+ {0x0f00, 0x0f34},
+ {0x0f36, 0x0f36},
+ {0x0f38, 0x0f38},
+ {0x0f3a, 0x0f47},
+ {0x0f49, 0x0f6c},
+ {0x0f71, 0x0f7e},
+ {0x0f80, 0x0f97},
+ {0x0f99, 0x0fbc},
+ {0x0fbe, 0x0fc5},
+ {0x0fc7, 0x0fcc},
+ {0x0fce, 0x0fda},
+ {0x1000, 0x1030},
+ {0x1032, 0x1037},
+ {0x1039, 0x1081},
+ {0x1083, 0x108c},
+ {0x108e, 0x108e},
+ {0x1090, 0x109c},
+ {0x109e, 0x10c5},
+ {0x10c7, 0x10c7},
+ {0x10cd, 0x10cd},
+ {0x10d0, 0x10ff},
+ {0x1160, 0x1248},
+ {0x124a, 0x124d},
+ {0x1250, 0x1256},
+ {0x1258, 0x1258},
+ {0x125a, 0x125d},
+ {0x1260, 0x1288},
+ {0x128a, 0x128d},
+ {0x1290, 0x12b0},
+ {0x12b2, 0x12b5},
+ {0x12b8, 0x12be},
+ {0x12c0, 0x12c0},
+ {0x12c2, 0x12c5},
+ {0x12c8, 0x12d6},
+ {0x12d8, 0x1310},
+ {0x1312, 0x1315},
+ {0x1318, 0x135a},
+ {0x135d, 0x137c},
+ {0x1380, 0x1399},
+ {0x13a0, 0x13f4},
+ {0x1400, 0x169c},
+ {0x16a0, 0x16f8},
+ {0x1700, 0x170c},
+ {0x170e, 0x1714},
+ {0x1720, 0x1736},
+ {0x1740, 0x1753},
+ {0x1760, 0x176c},
+ {0x176e, 0x1770},
+ {0x1772, 0x1773},
+ {0x1780, 0x17b5},
+ {0x17b7, 0x17c5},
+ {0x17c7, 0x17dc},
+ {0x17e0, 0x17e9},
+ {0x17f0, 0x17f9},
+ {0x1800, 0x180e},
+ {0x1810, 0x1819},
+ {0x1820, 0x1877},
+ {0x1880, 0x18a8},
+ {0x18aa, 0x18aa},
+ {0x18b0, 0x18f5},
+ {0x1900, 0x191e},
+ {0x1920, 0x192b},
+ {0x1930, 0x1931},
+ {0x1933, 0x193b},
+ {0x1940, 0x1940},
+ {0x1944, 0x196d},
+ {0x1970, 0x1974},
+ {0x1980, 0x19ab},
+ {0x19b0, 0x19c9},
+ {0x19d0, 0x19da},
+ {0x19de, 0x1a1a},
+ {0x1a1e, 0x1a54},
+ {0x1a58, 0x1a5e},
+ {0x1a63, 0x1a7c},
+ {0x1a80, 0x1a89},
+ {0x1a90, 0x1a99},
+ {0x1aa0, 0x1aad},
+ {0x1ab0, 0x1abd},
+ {0x1b00, 0x1b03},
+ {0x1b05, 0x1b33},
+ {0x1b36, 0x1b3a},
+ {0x1b3d, 0x1b41},
+ {0x1b43, 0x1b4b},
+ {0x1b50, 0x1b7c},
+ {0x1b80, 0x1b81},
+ {0x1b83, 0x1ba0},
+ {0x1ba2, 0x1ba9},
+ {0x1bab, 0x1be5},
+ {0x1be8, 0x1bec},
+ {0x1bef, 0x1bf3},
+ {0x1bfc, 0x1c37},
+ {0x1c3b, 0x1c49},
+ {0x1c4d, 0x1c7f},
+ {0x1cc0, 0x1cc7},
+ {0x1cd0, 0x1ce0},
+ {0x1ce2, 0x1cec},
+ {0x1cee, 0x1cf3},
+ {0x1cf5, 0x1cf6},
+ {0x1cf8, 0x1cf9},
+ {0x1d2c, 0x1d6a},
+ {0x1d78, 0x1d78},
+ {0x1d9b, 0x1df5},
+ {0x1dfc, 0x1dff},
+ {0x1f00, 0x1f15},
+ {0x1f18, 0x1f1d},
+ {0x1f20, 0x1f45},
+ {0x1f48, 0x1f4d},
+ {0x1f50, 0x1f57},
+ {0x1f59, 0x1f59},
+ {0x1f5b, 0x1f5b},
+ {0x1f5d, 0x1f5d},
+ {0x1f5f, 0x1f7d},
+ {0x1f80, 0x1fb4},
+ {0x1fb6, 0x1fc4},
+ {0x1fc6, 0x1fd3},
+ {0x1fd6, 0x1fdb},
+ {0x1fdd, 0x1fef},
+ {0x1ff2, 0x1ff4},
+ {0x1ff6, 0x1ffe},
+ {0x2000, 0x200f},
+ {0x2011, 0x2012},
+ {0x2017, 0x2017},
+ {0x201a, 0x201b},
+ {0x201e, 0x201f},
+ {0x2023, 0x2023},
+ {0x2028, 0x202f},
+ {0x2031, 0x2031},
+ {0x2034, 0x2034},
+ {0x2036, 0x203a},
+ {0x203c, 0x203d},
+ {0x203f, 0x2064},
+ {0x2066, 0x2070},
+ {0x2075, 0x207e},
+ {0x2080, 0x2080},
+ {0x2085, 0x208e},
+ {0x20a0, 0x20a8},
+ {0x20aa, 0x20ab},
+ {0x20ad, 0x20bd},
+ {0x20d0, 0x20e0},
+ {0x20e2, 0x20f0},
+ {0x2100, 0x2102},
+ {0x2104, 0x2104},
+ {0x2106, 0x2108},
+ {0x210a, 0x2112},
+ {0x2114, 0x2115},
+ {0x2117, 0x2120},
+ {0x2123, 0x2125},
+ {0x2127, 0x212a},
+ {0x212c, 0x2152},
+ {0x2155, 0x215a},
+ {0x215f, 0x215f},
+ {0x216c, 0x216f},
+ {0x217a, 0x2182},
+ {0x2185, 0x2188},
+ {0x219a, 0x21b7},
+ {0x21ba, 0x21d1},
+ {0x21d3, 0x21d3},
+ {0x21d5, 0x21e6},
+ {0x21e8, 0x21ff},
+ {0x2201, 0x2201},
+ {0x2204, 0x2206},
+ {0x2209, 0x220a},
+ {0x220c, 0x220e},
+ {0x2210, 0x2210},
+ {0x2212, 0x2214},
+ {0x2216, 0x2219},
+ {0x221b, 0x221c},
+ {0x2221, 0x2222},
+ {0x2224, 0x2224},
+ {0x2226, 0x2226},
+ {0x222d, 0x222d},
+ {0x222f, 0x2233},
+ {0x2238, 0x223b},
+ {0x223e, 0x2247},
+ {0x2249, 0x224b},
+ {0x224d, 0x2251},
+ {0x2253, 0x225f},
+ {0x2262, 0x2263},
+ {0x2268, 0x2269},
+ {0x226c, 0x226d},
+ {0x2270, 0x2281},
+ {0x2284, 0x2285},
+ {0x2288, 0x2294},
+ {0x2296, 0x2298},
+ {0x229a, 0x22a4},
+ {0x22a6, 0x22be},
+ {0x22c0, 0x2311},
+ {0x2313, 0x2328},
+ {0x232b, 0x23fa},
+ {0x2400, 0x2426},
+ {0x2440, 0x244a},
+ {0x24ea, 0x24ea},
+ {0x254c, 0x254f},
+ {0x2574, 0x257f},
+ {0x2590, 0x2591},
+ {0x2596, 0x259f},
+ {0x25a2, 0x25a2},
+ {0x25aa, 0x25b1},
+ {0x25b4, 0x25b5},
+ {0x25b8, 0x25bb},
+ {0x25be, 0x25bf},
+ {0x25c2, 0x25c5},
+ {0x25c9, 0x25ca},
+ {0x25cc, 0x25cd},
+ {0x25d2, 0x25e1},
+ {0x25e6, 0x25ee},
+ {0x25f0, 0x2604},
+ {0x2607, 0x2608},
+ {0x260a, 0x260d},
+ {0x2610, 0x2613},
+ {0x2616, 0x261b},
+ {0x261d, 0x261d},
+ {0x261f, 0x263f},
+ {0x2641, 0x2641},
+ {0x2643, 0x265f},
+ {0x2662, 0x2662},
+ {0x2666, 0x2666},
+ {0x266b, 0x266b},
+ {0x266e, 0x266e},
+ {0x2670, 0x269d},
+ {0x26a0, 0x26bd},
+ {0x26c0, 0x26c3},
+ {0x26ce, 0x26ce},
+ {0x26e2, 0x26e2},
+ {0x26e4, 0x26e7},
+ {0x2700, 0x273c},
+ {0x273e, 0x2756},
+ {0x2758, 0x2775},
+ {0x2780, 0x2b54},
+ {0x2b5a, 0x2b73},
+ {0x2b76, 0x2b95},
+ {0x2b98, 0x2bb9},
+ {0x2bbd, 0x2bc8},
+ {0x2bca, 0x2bd1},
+ {0x2c80, 0x2cf3},
+ {0x2cf9, 0x2d25},
+ {0x2d27, 0x2d27},
+ {0x2d2d, 0x2d2d},
+ {0x2d30, 0x2d67},
+ {0x2d6f, 0x2d70},
+ {0x2d80, 0x2d96},
+ {0x2da0, 0x2da6},
+ {0x2da8, 0x2dae},
+ {0x2db0, 0x2db6},
+ {0x2db8, 0x2dbe},
+ {0x2dc0, 0x2dc6},
+ {0x2dc8, 0x2dce},
+ {0x2dd0, 0x2dd6},
+ {0x2dd8, 0x2dde},
+ {0x2de0, 0x2e42},
+ {0x303f, 0x303f},
+ {0x4dc0, 0x4dff},
+ {0xa4d0, 0xa62b},
+ {0xa640, 0xa66e},
+ {0xa670, 0xa69d},
+ {0xa6a0, 0xa6f7},
+ {0xa700, 0xa721},
+ {0xa770, 0xa770},
+ {0xa788, 0xa78a},
+ {0xa7f8, 0xa7f9},
+ {0xa800, 0xa801},
+ {0xa803, 0xa805},
+ {0xa807, 0xa80a},
+ {0xa80c, 0xa826},
+ {0xa828, 0xa82b},
+ {0xa830, 0xa839},
+ {0xa840, 0xa877},
+ {0xa880, 0xa8c3},
+ {0xa8ce, 0xa8d9},
+ {0xa8e0, 0xa8fb},
+ {0xa900, 0xa953},
+ {0xa95f, 0xa95f},
+ {0xa980, 0xa982},
+ {0xa984, 0xa9b2},
+ {0xa9b4, 0xa9bb},
+ {0xa9bd, 0xa9cd},
+ {0xa9cf, 0xa9d9},
+ {0xa9de, 0xa9e4},
+ {0xa9e6, 0xa9fe},
+ {0xaa00, 0xaa36},
+ {0xaa40, 0xaa42},
+ {0xaa44, 0xaa4b},
+ {0xaa50, 0xaa59},
+ {0xaa5c, 0xaa7a},
+ {0xaa7e, 0xaaaf},
+ {0xaab1, 0xaac0},
+ {0xaac2, 0xaac2},
+ {0xaadb, 0xaaea},
+ {0xaaec, 0xaaf4},
+ {0xab01, 0xab06},
+ {0xab09, 0xab0e},
+ {0xab11, 0xab16},
+ {0xab20, 0xab26},
+ {0xab28, 0xab2e},
+ {0xab5b, 0xab5f},
+ {0xabc0, 0xabe4},
+ {0xabe6, 0xabe7},
+ {0xabe9, 0xabeb},
+ {0xabf0, 0xabf9},
+ {0xd7b0, 0xd7c6},
+ {0xd7cb, 0xd7fb},
+ {0xd800, 0xdfff},
+ {0xfb13, 0xfb17},
+ {0xfb1d, 0xfb1d},
+ {0xfb1f, 0xfb36},
+ {0xfb38, 0xfb3c},
+ {0xfb3e, 0xfb3e},
+ {0xfb40, 0xfb41},
+ {0xfb43, 0xfb44},
+ {0xfb46, 0xfbc1},
+ {0xfbd3, 0xfd3f},
+ {0xfd50, 0xfd8f},
+ {0xfd92, 0xfdc7},
+ {0xfdf0, 0xfdfd},
+ {0xfe20, 0xfe2d},
+ {0xfe70, 0xfe74},
+ {0xfe76, 0xfefc},
+ {0xfeff, 0xfeff},
+ {0xfff9, 0xfffc},
+ {0x10000, 0x1000b},
+ {0x1000d, 0x10026},
+ {0x10028, 0x1003a},
+ {0x1003c, 0x1003d},
+ {0x1003f, 0x1004d},
+ {0x10050, 0x1005d},
+ {0x10080, 0x100fa},
+ {0x10100, 0x10102},
+ {0x10107, 0x10133},
+ {0x10137, 0x1018c},
+ {0x10190, 0x1019b},
+ {0x101a0, 0x101a0},
+ {0x101d0, 0x101fc},
+ {0x10280, 0x1029c},
+ {0x102a0, 0x102d0},
+ {0x102e1, 0x102fb},
+ {0x10300, 0x10323},
+ {0x10330, 0x1034a},
+ {0x10350, 0x1037a},
+ {0x10380, 0x1039d},
+ {0x1039f, 0x103c3},
+ {0x103c8, 0x103d5},
+ {0x10400, 0x1049d},
+ {0x104a0, 0x104a9},
+ {0x10500, 0x10527},
+ {0x10530, 0x10563},
+ {0x1056f, 0x1056f},
+ {0x10600, 0x10736},
+ {0x10740, 0x10755},
+ {0x10760, 0x10767},
+ {0x10800, 0x10805},
+ {0x10808, 0x10808},
+ {0x1080a, 0x10835},
+ {0x10837, 0x10838},
+ {0x1083c, 0x1083c},
+ {0x1083f, 0x10855},
+ {0x10857, 0x1089e},
+ {0x108a7, 0x108af},
+ {0x10900, 0x1091b},
+ {0x1091f, 0x10939},
+ {0x1093f, 0x1093f},
+ {0x10980, 0x109b7},
+ {0x109be, 0x109bf},
+ {0x10a00, 0x10a03},
+ {0x10a05, 0x10a06},
+ {0x10a0c, 0x10a13},
+ {0x10a15, 0x10a17},
+ {0x10a19, 0x10a33},
+ {0x10a38, 0x10a3a},
+ {0x10a40, 0x10a47},
+ {0x10a50, 0x10a58},
+ {0x10a60, 0x10a9f},
+ {0x10ac0, 0x10ae6},
+ {0x10aeb, 0x10af6},
+ {0x10b00, 0x10b35},
+ {0x10b39, 0x10b55},
+ {0x10b58, 0x10b72},
+ {0x10b78, 0x10b91},
+ {0x10b99, 0x10b9c},
+ {0x10ba9, 0x10baf},
+ {0x10c00, 0x10c48},
+ {0x10e60, 0x10e7e},
+ {0x11003, 0x1104d},
+ {0x11052, 0x1106f},
+ {0x11080, 0x11081},
+ {0x11083, 0x110c1},
+ {0x110d0, 0x110e8},
+ {0x110f0, 0x110f9},
+ {0x11100, 0x1112b},
+ {0x1112d, 0x11134},
+ {0x11136, 0x11143},
+ {0x11150, 0x11172},
+ {0x11174, 0x11176},
+ {0x11180, 0x11181},
+ {0x11183, 0x111c8},
+ {0x111cd, 0x111cd},
+ {0x111d0, 0x111da},
+ {0x111e1, 0x111f4},
+ {0x11200, 0x11211},
+ {0x11213, 0x11233},
+ {0x11236, 0x1123d},
+ {0x112b0, 0x112de},
+ {0x112e0, 0x112ea},
+ {0x112f0, 0x112f9},
+ {0x11302, 0x11303},
+ {0x11305, 0x1130c},
+ {0x1130f, 0x11310},
+ {0x11313, 0x11328},
+ {0x1132a, 0x11330},
+ {0x11332, 0x11333},
+ {0x11335, 0x11339},
+ {0x1133d, 0x1133f},
+ {0x11341, 0x11344},
+ {0x11347, 0x11348},
+ {0x1134b, 0x1134d},
+ {0x1135d, 0x11363},
+ {0x11366, 0x1136c},
+ {0x11370, 0x11374},
+ {0x11480, 0x114b8},
+ {0x114bb, 0x114c0},
+ {0x114c2, 0x114c7},
+ {0x114d0, 0x114d9},
+ {0x11580, 0x115b5},
+ {0x115b8, 0x115bd},
+ {0x115bf, 0x115c9},
+ {0x11600, 0x1163c},
+ {0x1163f, 0x11644},
+ {0x11650, 0x11659},
+ {0x11680, 0x116aa},
+ {0x116ae, 0x116b5},
+ {0x116c0, 0x116c9},
+ {0x118a0, 0x118f2},
+ {0x118ff, 0x118ff},
+ {0x11ac0, 0x11af8},
+ {0x12000, 0x12398},
+ {0x12400, 0x1246e},
+ {0x12470, 0x12474},
+ {0x13000, 0x1342e},
+ {0x16800, 0x16a38},
+ {0x16a40, 0x16a5e},
+ {0x16a60, 0x16a69},
+ {0x16a6e, 0x16a6f},
+ {0x16ad0, 0x16aed},
+ {0x16af0, 0x16af5},
+ {0x16b00, 0x16b45},
+ {0x16b50, 0x16b59},
+ {0x16b5b, 0x16b61},
+ {0x16b63, 0x16b77},
+ {0x16b7d, 0x16b8f},
+ {0x16f00, 0x16f44},
+ {0x16f50, 0x16f7e},
+ {0x16f8f, 0x16f9f},
+ {0x1bc00, 0x1bc6a},
+ {0x1bc70, 0x1bc7c},
+ {0x1bc80, 0x1bc88},
+ {0x1bc90, 0x1bc99},
+ {0x1bc9c, 0x1bca3},
+ {0x1d000, 0x1d0f5},
+ {0x1d100, 0x1d126},
+ {0x1d129, 0x1d1dd},
+ {0x1d200, 0x1d245},
+ {0x1d300, 0x1d356},
+ {0x1d360, 0x1d371},
+ {0x1d400, 0x1d454},
+ {0x1d456, 0x1d49c},
+ {0x1d49e, 0x1d49f},
+ {0x1d4a2, 0x1d4a2},
+ {0x1d4a5, 0x1d4a6},
+ {0x1d4a9, 0x1d4ac},
+ {0x1d4ae, 0x1d4b9},
+ {0x1d4bb, 0x1d4bb},
+ {0x1d4bd, 0x1d4c3},
+ {0x1d4c5, 0x1d505},
+ {0x1d507, 0x1d50a},
+ {0x1d50d, 0x1d514},
+ {0x1d516, 0x1d51c},
+ {0x1d51e, 0x1d539},
+ {0x1d53b, 0x1d53e},
+ {0x1d540, 0x1d544},
+ {0x1d546, 0x1d546},
+ {0x1d54a, 0x1d550},
+ {0x1d552, 0x1d6a5},
+ {0x1d6a8, 0x1d7cb},
+ {0x1d7ce, 0x1d7ff},
+ {0x1e800, 0x1e8c4},
+ {0x1e8c7, 0x1e8d6},
+ {0x1ee00, 0x1ee03},
+ {0x1ee05, 0x1ee1f},
+ {0x1ee21, 0x1ee22},
+ {0x1ee24, 0x1ee24},
+ {0x1ee27, 0x1ee27},
+ {0x1ee29, 0x1ee32},
+ {0x1ee34, 0x1ee37},
+ {0x1ee39, 0x1ee39},
+ {0x1ee3b, 0x1ee3b},
+ {0x1ee42, 0x1ee42},
+ {0x1ee47, 0x1ee47},
+ {0x1ee49, 0x1ee49},
+ {0x1ee4b, 0x1ee4b},
+ {0x1ee4d, 0x1ee4f},
+ {0x1ee51, 0x1ee52},
+ {0x1ee54, 0x1ee54},
+ {0x1ee57, 0x1ee57},
+ {0x1ee59, 0x1ee59},
+ {0x1ee5b, 0x1ee5b},
+ {0x1ee5d, 0x1ee5d},
+ {0x1ee5f, 0x1ee5f},
+ {0x1ee61, 0x1ee62},
+ {0x1ee64, 0x1ee64},
+ {0x1ee67, 0x1ee6a},
+ {0x1ee6c, 0x1ee72},
+ {0x1ee74, 0x1ee77},
+ {0x1ee79, 0x1ee7c},
+ {0x1ee7e, 0x1ee7e},
+ {0x1ee80, 0x1ee89},
+ {0x1ee8b, 0x1ee9b},
+ {0x1eea1, 0x1eea3},
+ {0x1eea5, 0x1eea9},
+ {0x1eeab, 0x1eebb},
+ {0x1eef0, 0x1eef1},
+ {0x1f000, 0x1f02b},
+ {0x1f030, 0x1f093},
+ {0x1f0a0, 0x1f0ae},
+ {0x1f0b1, 0x1f0bf},
+ {0x1f0c1, 0x1f0cf},
+ {0x1f0d1, 0x1f0f5},
+ {0x1f10b, 0x1f10c},
+ {0x1f12e, 0x1f12e},
+ {0x1f16a, 0x1f16b},
+ {0x1f1e6, 0x1f1ff},
+ {0x1f300, 0x1f32c},
+ {0x1f330, 0x1f37d},
+ {0x1f380, 0x1f3ce},
+ {0x1f3d4, 0x1f3f7},
+ {0x1f400, 0x1f4fe},
+ {0x1f500, 0x1f54a},
+ {0x1f550, 0x1f579},
+ {0x1f57b, 0x1f5a3},
+ {0x1f5a5, 0x1f642},
+ {0x1f645, 0x1f6cf},
+ {0x1f6e0, 0x1f6ec},
+ {0x1f6f0, 0x1f6f3},
+ {0x1f700, 0x1f773},
+ {0x1f780, 0x1f7d4},
+ {0x1f800, 0x1f80b},
+ {0x1f810, 0x1f847},
+ {0x1f850, 0x1f859},
+ {0x1f860, 0x1f887},
+ {0x1f890, 0x1f8ad},
+ {0xe0001, 0xe0001},
+ {0xe0020, 0xe007f}
+ };
if (c >= 0x100)
{
@@ -1494,7 +2246,11 @@
else if (c >= 0x80 && !vim_isprintc(c))
return 4; /* unprintable, displays <xx> */
- if (c >= 0x80 && *p_ambw == 'd' && intable(ambiguous, sizeof(ambiguous), c))
+ if (c >= 0x80 && (*p_ambw == 'd' || *p_ambw == 'f') &&
+ intable(ambiguous, sizeof(ambiguous), c))
+ return 2;
+ if (c >= 0x80 && (*p_ambw == 'f') &&
+ intable(neutral, sizeof(neutral), c))
return 2;
return 1;
diff -r 8cae3b61ce9e src/option.c
--- a/src/option.c Mon Dec 08 04:16:45 2014 +0100
+++ b/src/option.c Wed Dec 10 14:28:43 2014 +0900
@@ -2991,7 +2991,7 @@
#define PARAM_COUNT (sizeof(options) / sizeof(struct vimoption))
#ifdef FEAT_MBYTE
-static char *(p_ambw_values[]) = {"single", "double", NULL};
+static char *(p_ambw_values[]) = {"single", "double", "fulldouble", NULL};
#endif
static char *(p_bg_values[]) = {"light", "dark", NULL};
static char *(p_nf_values[]) = {"octal", "hex", "alpha", NULL};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment