# HG changeset patch # User Bram Moolenaar # Date 1548349207 -3600 # Node ID 2dcaa860e3fc89595a5b63c64e1c3f7cf2ec0259 # Parent 50e09796a00a922fd4c7dd3a569a663a851fbde6 patch 8.1.0811: too many #ifdefs commit https://github.com/vim/vim/commit/30276f2beb248557c6b33cd5418bca8b7084b0a5 Author: Bram Moolenaar Date: Thu Jan 24 17:59:39 2019 +0100 patch 8.1.0811: too many #ifdefs Problem: Too many #ifdefs. Solution: Graduate FEAT_MBYTE, the final chapter. diff --git a/src/appveyor.bat b/src/appveyor.bat --- a/src/appveyor.bat +++ b/src/appveyor.bat @@ -7,7 +7,7 @@ cd %APPVEYOR_BUILD_FOLDER% cd src echo "Building MinGW 32bit console version" set PATH=c:\msys64\mingw32\bin;%PATH% -mingw32-make.exe -f Make_ming.mak GUI=no OPTIMIZE=speed IME=yes MBYTE=yes ICONV=yes DEBUG=no FEATURES=%FEATURE% || exit 1 +mingw32-make.exe -f Make_ming.mak GUI=no OPTIMIZE=speed IME=yes ICONV=yes DEBUG=no FEATURES=%FEATURE% || exit 1 :: Save vim.exe before Make clean, moved back below. copy vim.exe testdir mingw32-make.exe -f Make_ming.mak clean @@ -16,24 +16,24 @@ mingw32-make.exe -f Make_ming.mak clean :: with specified features without python. echo "Building MinGW 32bit GUI version" if "%FEATURE%" == "HUGE" ( - mingw32-make.exe -f Make_ming.mak OPTIMIZE=speed CHANNEL=yes GUI=yes IME=yes MBYTE=yes ICONV=yes DEBUG=no PYTHON_VER=27 DYNAMIC_PYTHON=yes PYTHON=C:\Python27 PYTHON3_VER=35 DYNAMIC_PYTHON3=yes PYTHON3=C:\Python35 FEATURES=%FEATURE% || exit 1 + mingw32-make.exe -f Make_ming.mak OPTIMIZE=speed CHANNEL=yes GUI=yes IME=yes ICONV=yes DEBUG=no PYTHON_VER=27 DYNAMIC_PYTHON=yes PYTHON=C:\Python27 PYTHON3_VER=35 DYNAMIC_PYTHON3=yes PYTHON3=C:\Python35 FEATURES=%FEATURE% || exit 1 ) ELSE ( - mingw32-make.exe -f Make_ming.mak OPTIMIZE=speed GUI=yes IME=yes MBYTE=yes ICONV=yes DEBUG=no FEATURES=%FEATURE% || exit 1 + mingw32-make.exe -f Make_ming.mak OPTIMIZE=speed GUI=yes IME=yes ICONV=yes DEBUG=no FEATURES=%FEATURE% || exit 1 ) .\gvim -u NONE -c "redir @a | ver |0put a | wq" ver_ming.txt echo "Building MSVC 64bit console Version" sed -e "s/\$(LINKARGS2)/\$(LINKARGS2) | sed -e 's#.*\\\\r.*##'/" Make_mvc.mak > Make_mvc2.mak -nmake -f Make_mvc2.mak CPU=AMD64 OLE=no GUI=no IME=yes MBYTE=yes ICONV=yes DEBUG=no FEATURES=%FEATURE% || exit 1 +nmake -f Make_mvc2.mak CPU=AMD64 OLE=no GUI=no IME=yes ICONV=yes DEBUG=no FEATURES=%FEATURE% || exit 1 nmake -f Make_mvc2.mak clean :: build MSVC huge version with python and channel support :: GUI needs to be last, so that testing works echo "Building MSVC 64bit GUI Version" if "%FEATURE%" == "HUGE" ( - nmake -f Make_mvc2.mak DIRECTX=yes CPU=AMD64 CHANNEL=yes OLE=no GUI=yes IME=yes MBYTE=yes ICONV=yes DEBUG=no PYTHON_VER=27 DYNAMIC_PYTHON=yes PYTHON=C:\Python27-x64 PYTHON3_VER=35 DYNAMIC_PYTHON3=yes PYTHON3=C:\Python35-x64 FEATURES=%FEATURE% || exit 1 + nmake -f Make_mvc2.mak DIRECTX=yes CPU=AMD64 CHANNEL=yes OLE=no GUI=yes IME=yes ICONV=yes DEBUG=no PYTHON_VER=27 DYNAMIC_PYTHON=yes PYTHON=C:\Python27-x64 PYTHON3_VER=35 DYNAMIC_PYTHON3=yes PYTHON3=C:\Python35-x64 FEATURES=%FEATURE% || exit 1 ) ELSE ( - nmake -f Make_mvc2.mak CPU=AMD64 OLE=no GUI=yes IME=yes MBYTE=yes ICONV=yes DEBUG=no FEATURES=%FEATURE% || exit 1 + nmake -f Make_mvc2.mak CPU=AMD64 OLE=no GUI=yes IME=yes ICONV=yes DEBUG=no FEATURES=%FEATURE% || exit 1 ) .\gvim -u NONE -c "redir @a | ver |0put a | wq" ver_msvc.txt diff --git a/src/auto/configure b/src/auto/configure --- a/src/auto/configure +++ b/src/auto/configure @@ -7937,10 +7937,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_multibyte" >&5 $as_echo "$enable_multibyte" >&6; } -if test "$enable_multibyte" = "yes"; then - $as_echo "#define FEAT_MBYTE 1" >>confdefs.h - -else +if test "$enable_multibyte" != "yes"; then as_fn_error $? "The multi-byte feature can no longer be disabled. If you have a problem with this, discuss on the Vim mailing list." "$LINENO" 5 fi diff --git a/src/config.h.in b/src/config.h.in --- a/src/config.h.in +++ b/src/config.h.in @@ -387,9 +387,6 @@ /* Define if you want to include the Cscope interface. */ #undef FEAT_CSCOPE -/* Define if you want to include multibyte support. */ -#undef FEAT_MBYTE - /* Define if you don't want to include right-left support. */ #undef DISABLE_RIGHTLEFT diff --git a/src/configure.ac b/src/configure.ac --- a/src/configure.ac +++ b/src/configure.ac @@ -2124,9 +2124,7 @@ AC_ARG_ENABLE(multibyte, [ --enable-multibyte Include multibyte editing support.], , [enable_multibyte="yes"]) AC_MSG_RESULT($enable_multibyte) -if test "$enable_multibyte" = "yes"; then - AC_DEFINE(FEAT_MBYTE) -else +if test "$enable_multibyte" != "yes"; then AC_MSG_ERROR([The multi-byte feature can no longer be disabled. If you have a problem with this, discuss on the Vim mailing list.]) fi diff --git a/src/crypt_zip.c b/src/crypt_zip.c --- a/src/crypt_zip.c +++ b/src/crypt_zip.c @@ -24,11 +24,7 @@ */ /* Need a type that should be 32 bits. 64 also works but wastes space. */ -# if VIM_SIZEOF_INT >= 4 typedef unsigned int u32_T; /* int is at least 32 bits */ -# else -typedef unsigned long u32_T; /* long should be 32 bits or more */ -# endif /* The state of encryption, referenced by cryptstate_T. */ typedef struct { diff --git a/src/feature.h b/src/feature.h --- a/src/feature.h +++ b/src/feature.h @@ -286,7 +286,7 @@ * * Disabled for EBCDIC as it requires multibyte. */ -#if defined(FEAT_BIG) && !defined(DISABLE_ARABIC) && VIM_SIZEOF_INT >= 4 && !defined(EBCDIC) +#if defined(FEAT_BIG) && !defined(DISABLE_ARABIC) && !defined(EBCDIC) # define FEAT_ARABIC #endif #ifdef FEAT_ARABIC @@ -600,21 +600,14 @@ * +multi_byte Generic multi-byte character handling. * Now always enabled. */ -#if !defined(FEAT_MBYTE) -# define FEAT_MBYTE -#endif -#if VIM_SIZEOF_INT < 4 && !defined(PROTO) - Error: Vim only works with 32 bit int or larger -#endif /* Define this if you want to use 16 bit Unicode only, reduces memory used for * the screen structures. */ /* #define UNICODE16 */ /* - * +multi_byte_ime Win32 IME input method. Requires +multi_byte. - * Only for far-east Windows, so IME can be used to input - * chars. Not tested much! + * +multi_byte_ime Win32 IME input method. Only for far-east Windows, so + * IME can be used to input chars. Not tested much! */ #if defined(FEAT_GUI_W32) && !defined(FEAT_MBYTE_IME) /* #define FEAT_MBYTE_IME */ diff --git a/src/fileio.c b/src/fileio.c --- a/src/fileio.c +++ b/src/fileio.c @@ -1178,10 +1178,9 @@ retry: */ if (!skip_read) { -#if VIM_SIZEOF_INT > 2 -# if defined(SSIZE_MAX) && (SSIZE_MAX < 0x10000L) +#if defined(SSIZE_MAX) && (SSIZE_MAX < 0x10000L) size = SSIZE_MAX; /* use max I/O size, 52K */ -# else +#else /* Use buffer >= 64K. Add linerest to double the size if the * line gets very long, to avoid a lot of copying. But don't * read more than 1 Mbyte at a time, so we can be interrupted. @@ -1189,20 +1188,11 @@ retry: size = 0x10000L + linerest; if (size > 0x100000L) size = 0x100000L; -# endif -#else - size = 0x7ff0L - linerest; /* limit buffer to 32K */ #endif } /* Protect against the argument of lalloc() going negative. */ - if ( -#if VIM_SIZEOF_INT <= 2 - linerest >= 0x7ff0 -#else - size < 0 || size + linerest + 1 < 0 || linerest >= MAXCOL -#endif - ) + if (size < 0 || size + linerest + 1 < 0 || linerest >= MAXCOL) { ++split; *ptr = NL; /* split line by inserting a NL */ diff --git a/src/message.c b/src/message.c --- a/src/message.c +++ b/src/message.c @@ -4492,14 +4492,10 @@ vim_vsnprintf_typval( { /* Don't put the #if inside memchr(), it can be a * macro. */ -# if VIM_SIZEOF_INT <= 2 - char *q = memchr(str_arg, '\0', precision); -# else /* memchr on HP does not like n > 2^31 !!! */ char *q = memchr(str_arg, '\0', precision <= (size_t)0x7fffffffL ? precision : (size_t)0x7fffffffL); -# endif str_arg_l = (q == NULL) ? precision : (size_t)(q - str_arg); } diff --git a/src/os_macosx.m b/src/os_macosx.m --- a/src/os_macosx.m +++ b/src/os_macosx.m @@ -130,18 +130,14 @@ clip_mch_request_selection(VimClipboard char_u *str = (char_u*)[string UTF8String]; int len = [string lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; -#ifdef FEAT_MBYTE if (input_conv.vc_type != CONV_NONE) str = string_convert(&input_conv, str, &len); -#endif if (str) clip_yank_selection(motion_type, str, len, cbd); -#ifdef FEAT_MBYTE if (input_conv.vc_type != CONV_NONE) vim_free(str); -#endif releasepool: [pool release]; @@ -169,7 +165,6 @@ clip_mch_set_selection(VimClipboard *cbd /* TODO: Avoid overflow. */ int len = (int)llen; -#ifdef FEAT_MBYTE if (output_conv.vc_type != CONV_NONE) { char_u *conv_str = string_convert(&output_conv, str, &len); @@ -179,7 +174,6 @@ clip_mch_set_selection(VimClipboard *cbd str = conv_str; } } -#endif if (len > 0) { diff --git a/src/spell.h b/src/spell.h --- a/src/spell.h +++ b/src/spell.h @@ -38,11 +38,7 @@ /* Type used for indexes in the word tree need to be at least 4 bytes. If int * is 8 bytes we could use something smaller, but what? */ -#if VIM_SIZEOF_INT > 3 typedef int idx_T; -#else -typedef long idx_T; -#endif typedef int salfirst_T; diff --git a/src/structs.h b/src/structs.h --- a/src/structs.h +++ b/src/structs.h @@ -416,12 +416,8 @@ struct u_header /* * structures used in undo.c */ -#if VIM_SIZEOF_INT > 2 -# define ALIGN_LONG /* longword alignment and use filler byte */ -# define ALIGN_SIZE (sizeof(long)) -#else -# define ALIGN_SIZE (sizeof(short)) -#endif +#define ALIGN_LONG /* longword alignment and use filler byte */ +#define ALIGN_SIZE (sizeof(long)) #define ALIGN_MASK (ALIGN_SIZE - 1) @@ -1229,19 +1225,11 @@ typedef unsigned long uvarnumber_T; # endif #else /* Use 32-bit Number. */ -# if VIM_SIZEOF_INT <= 3 /* use long if int is smaller than 32 bits */ -typedef long varnumber_T; -typedef unsigned long uvarnumber_T; -#define VARNUM_MIN LONG_MIN -#define VARNUM_MAX LONG_MAX -#define UVARNUM_MAX ULONG_MAX -# else typedef int varnumber_T; typedef unsigned int uvarnumber_T; #define VARNUM_MIN INT_MIN #define VARNUM_MAX INT_MAX #define UVARNUM_MAX UINT_MAX -# endif #endif typedef double float_T; diff --git a/src/testdir/runtest.vim b/src/testdir/runtest.vim --- a/src/testdir/runtest.vim +++ b/src/testdir/runtest.vim @@ -49,13 +49,9 @@ source setup.vim " This also enables use of line continuation. set nocp viminfo+=nviminfo -" Use utf-8 or latin1 by default, instead of whatever the system default -" happens to be. Individual tests can overrule this at the top of the file. -if has('multi_byte') - set encoding=utf-8 -else - set encoding=latin1 -endif +" Use utf-8 by default, instead of whatever the system default happens to be. +" Individual tests can overrule this at the top of the file. +set encoding=utf-8 " REDIR_TEST_TO_NULL has a very permissive SwapExists autocommand which is for " the test_name.vim file itself. Replace it here with a more restrictive one, diff --git a/src/testdir/test_alot_utf8.vim b/src/testdir/test_alot_utf8.vim --- a/src/testdir/test_alot_utf8.vim +++ b/src/testdir/test_alot_utf8.vim @@ -2,8 +2,7 @@ " This makes testing go faster, since Vim doesn't need to restart. " These tests use utf8 'encoding'. Setting 'encoding' is already done in -" runtest.vim. Checking for the multi_byte feature is in the individual -" files, so that they can be run by themselves. +" runtest.vim. source test_charsearch_utf8.vim source test_expr_utf8.vim diff --git a/src/testdir/test_arabic.vim b/src/testdir/test_arabic.vim --- a/src/testdir/test_arabic.vim +++ b/src/testdir/test_arabic.vim @@ -2,7 +2,7 @@ " NOTE: This just checks if the code works. If you know Arabic please add " functional tests that check the shaping works with real text. -if !has('arabic') || !has('multi_byte') +if !has('arabic') finish endif diff --git a/src/testdir/test_charsearch_utf8.vim b/src/testdir/test_charsearch_utf8.vim --- a/src/testdir/test_charsearch_utf8.vim +++ b/src/testdir/test_charsearch_utf8.vim @@ -1,7 +1,4 @@ " Tests for related f{char} and t{char} using utf-8. -if !has('multi_byte') - finish -endif " Test for t,f,F,T movement commands func Test_search_cmds() diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim --- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -582,7 +582,7 @@ func Test_setcmdpos() endfunc func Test_cmdline_overstrike() - let encodings = has('multi_byte') ? [ 'latin1', 'utf8' ] : [ 'latin1' ] + let encodings = ['latin1', 'utf8'] let encoding_save = &encoding for e in encodings @@ -601,11 +601,9 @@ func Test_cmdline_overstrike() call assert_equal('"ab0cd3ef4', @:) endfor - if has('multi_byte') - " Test overstrike with multi-byte characters. - call feedkeys(":\"テキストエディタ\\\ab\\cd\", 'xt') - call assert_equal('"テabキcdエディタ', @:) - endif + " Test overstrike with multi-byte characters. + call feedkeys(":\"テキストエディタ\\\ab\\cd\", 'xt') + call assert_equal('"テabキcdエディタ', @:) let &encoding = encoding_save endfunc diff --git a/src/testdir/test_digraph.vim b/src/testdir/test_digraph.vim --- a/src/testdir/test_digraph.vim +++ b/src/testdir/test_digraph.vim @@ -1,6 +1,6 @@ " Tests for digraphs -if !has("digraphs") || !has("multi_byte") +if !has("digraphs") finish endif @@ -466,9 +466,6 @@ func Test_show_digraph() endfunc func Test_show_digraph_cp1251() - if !has('multi_byte') - return - endif new set encoding=cp1251 call Put_Dig("='") diff --git a/src/testdir/test_display.vim b/src/testdir/test_display.vim --- a/src/testdir/test_display.vim +++ b/src/testdir/test_display.vim @@ -39,7 +39,7 @@ func Test_display_foldcolumn() endfunc func Test_display_foldtext_mbyte() - if !has("folding") || !has("multi_byte") + if !has("folding") return endif call NewWindow(10, 40) diff --git a/src/testdir/test_edit.vim b/src/testdir/test_edit.vim --- a/src/testdir/test_edit.vim +++ b/src/testdir/test_edit.vim @@ -37,12 +37,10 @@ func Test_edit_01() call assert_equal([''], getline(1,'$')) %d " 4) delete a multibyte character - if has("multi_byte") - call setline(1, "\u0401") - call feedkeys("i\\", 'tnix') - call assert_equal([''], getline(1,'$')) - %d - endif + call setline(1, "\u0401") + call feedkeys("i\\", 'tnix') + call assert_equal([''], getline(1,'$')) + %d " 5.1) delete linebreak with 'bs' option containing eol let _bs=&bs set bs=eol @@ -440,7 +438,7 @@ endfunc func Test_edit_CTRL_() " disabled for Windows builds, why? - if !has("multi_byte") || !has("rightleft") || has("win32") + if !has("rightleft") || has("win32") return endif let _encoding=&encoding @@ -608,15 +606,14 @@ func Test_edit_CTRL_K() endtry call delete('Xdictionary.txt') - if has("multi_byte") - call test_override("char_avail", 1) - set showcmd - %d - call feedkeys("A\a:\", 'tnix') - call assert_equal(['ä'], getline(1, '$')) - call test_override("char_avail", 0) - set noshowcmd - endif + call test_override("char_avail", 1) + set showcmd + %d + call feedkeys("A\a:\", 'tnix') + call assert_equal(['ä'], getline(1, '$')) + call test_override("char_avail", 0) + set noshowcmd + bw! endfunc diff --git a/src/testdir/test_erasebackword.vim b/src/testdir/test_erasebackword.vim --- a/src/testdir/test_erasebackword.vim +++ b/src/testdir/test_erasebackword.vim @@ -1,10 +1,5 @@ func Test_erasebackword() - if !has('multi_byte') - return - endif - - set encoding=utf-8 enew exe "normal o wwwこんにちわ世界ワールドvim \" @@ -21,5 +16,4 @@ func Test_erasebackword() call assert_equal('', getline('.')) enew! - set encoding& endfunc diff --git a/src/testdir/test_expr_utf8.vim b/src/testdir/test_expr_utf8.vim --- a/src/testdir/test_expr_utf8.vim +++ b/src/testdir/test_expr_utf8.vim @@ -1,7 +1,4 @@ " Tests for expressions using utf-8. -if !has('multi_byte') - finish -endif func Test_strgetchar() call assert_equal(char2nr('á'), strgetchar('áxb', 0)) diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim --- a/src/testdir/test_functions.vim +++ b/src/testdir/test_functions.vim @@ -106,11 +106,9 @@ func Test_strwidth() call assert_equal(4, strwidth(1234)) call assert_equal(5, strwidth(-1234)) - if has('multi_byte') - call assert_equal(2, strwidth('😉')) - call assert_equal(17, strwidth('Eĥoŝanĝo ĉiuĵaŭde')) - call assert_equal((aw == 'single') ? 6 : 7, strwidth('Straße')) - endif + call assert_equal(2, strwidth('😉')) + call assert_equal(17, strwidth('Eĥoŝanĝo ĉiuĵaŭde')) + call assert_equal((aw == 'single') ? 6 : 7, strwidth('Straße')) call assert_fails('call strwidth({->0})', 'E729:') call assert_fails('call strwidth([])', 'E730:') @@ -277,10 +275,8 @@ func Test_strpart() call assert_equal('fg', strpart('abcdefg', 5, 4)) call assert_equal('defg', strpart('abcdefg', 3)) - if has('multi_byte') - call assert_equal('lép', strpart('éléphant', 2, 4)) - call assert_equal('léphant', strpart('éléphant', 2)) - endif + call assert_equal('lép', strpart('éléphant', 2, 4)) + call assert_equal('léphant', strpart('éléphant', 2)) endfunc func Test_tolower() @@ -290,10 +286,6 @@ func Test_tolower() call assert_equal(' !"#$%&''()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~', \ tolower(' !"#$%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~')) - if !has('multi_byte') - return - endif - " Test with a few uppercase diacritics. call assert_equal("aàáâãäåāăąǎǟǡả", tolower("AÀÁÂÃÄÅĀĂĄǍǞǠẢ")) call assert_equal("bḃḇ", tolower("BḂḆ")) @@ -368,10 +360,6 @@ func Test_toupper() call assert_equal(' !"#$%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~', \ toupper(' !"#$%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~')) - if !has('multi_byte') - return - endif - " Test with a few lowercase diacritics. call assert_equal("AÀÁÂÃÄÅĀĂĄǍǞǠẢ", toupper("aàáâãäåāăąǎǟǡả")) call assert_equal("BḂḆ", toupper("bḃḇ")) diff --git a/src/testdir/test_ga.vim b/src/testdir/test_ga.vim --- a/src/testdir/test_ga.vim +++ b/src/testdir/test_ga.vim @@ -21,10 +21,6 @@ func Test_ga_command() call assert_equal("\n 101, Hex 65, Octal 145", Do_ga('e')) - if !has('multi_byte') - return - endif - " Test a few multi-bytes characters. call assert_equal("\n<é> 233, Hex 00e9, Oct 351, Digr e'", Do_ga('é')) call assert_equal("\n<ẻ> 7867, Hex 1ebb, Oct 17273, Digr e2", Do_ga('ẻ')) diff --git a/src/testdir/test_iminsert.vim b/src/testdir/test_iminsert.vim --- a/src/testdir/test_iminsert.vim +++ b/src/testdir/test_iminsert.vim @@ -1,7 +1,3 @@ -if !has('multi_byte') - finish -endif - source view_util.vim let s:imactivatefunc_called = 0 diff --git a/src/testdir/test_increment_dbcs.vim b/src/testdir/test_increment_dbcs.vim --- a/src/testdir/test_increment_dbcs.vim +++ b/src/testdir/test_increment_dbcs.vim @@ -1,7 +1,4 @@ " Tests for using Ctrl-A/Ctrl-X using DBCS. -if !has('multi_byte') - finish -endif set encoding=cp932 scriptencoding cp932 diff --git a/src/testdir/test_json.vim b/src/testdir/test_json.vim --- a/src/testdir/test_json.vim +++ b/src/testdir/test_json.vim @@ -1,10 +1,5 @@ " Test for JSON functions. -" JSON requires using utf-8, because conversion breaks the asserts. -if !has('multi_byte') - finish -endif - let s:json1 = '"str\"in\\g"' let s:var1 = "str\"in\\g" let s:json2 = '"\u0001\u0002\u0003\u0004\u0005\u0006\u0007"' @@ -79,10 +74,8 @@ func Test_json_encode() call assert_equal(s:json4, json_encode(s:var4)) call assert_equal(s:json5, json_encode(s:var5)) - if has('multi_byte') - call assert_equal(s:jsonmb, json_encode(s:varmb)) - " no test for surrogate pair, json_encode() doesn't create them. - endif + call assert_equal(s:jsonmb, json_encode(s:varmb)) + " no test for surrogate pair, json_encode() doesn't create them. call assert_equal(s:jsonnr, json_encode(s:varnr)) if has('float') @@ -121,11 +114,9 @@ func Test_json_decode() call assert_equal(s:var4, json_decode(s:json4)) call assert_equal(s:var5, json_decode(s:json5)) - if has('multi_byte') - call assert_equal(s:varmb, json_decode(s:jsonmb)) - call assert_equal(s:varsp1, json_decode(s:jsonsp1)) - call assert_equal(s:varsp2, json_decode(s:jsonsp2)) - endif + call assert_equal(s:varmb, json_decode(s:jsonmb)) + call assert_equal(s:varsp1, json_decode(s:jsonsp1)) + call assert_equal(s:varsp2, json_decode(s:jsonsp2)) call assert_equal(s:varnr, json_decode(s:jsonnr)) if has('float') @@ -197,10 +188,8 @@ func Test_js_encode() call assert_equal(s:json4, js_encode(s:var4)) call assert_equal(s:json5, js_encode(s:var5)) - if has('multi_byte') - call assert_equal(s:jsonmb, js_encode(s:varmb)) - " no test for surrogate pair, js_encode() doesn't create them. - endif + call assert_equal(s:jsonmb, js_encode(s:varmb)) + " no test for surrogate pair, js_encode() doesn't create them. call assert_equal(s:jsonnr, js_encode(s:varnr)) if has('float') @@ -237,11 +226,9 @@ func Test_js_decode() call assert_equal(s:var4, js_decode(s:json4)) call assert_equal(s:var5, js_decode(s:json5)) - if has('multi_byte') - call assert_equal(s:varmb, js_decode(s:jsonmb)) - call assert_equal(s:varsp1, js_decode(s:jsonsp1)) - call assert_equal(s:varsp2, js_decode(s:jsonsp2)) - endif + call assert_equal(s:varmb, js_decode(s:jsonmb)) + call assert_equal(s:varsp1, js_decode(s:jsonsp1)) + call assert_equal(s:varsp2, js_decode(s:jsonsp2)) call assert_equal(s:varnr, js_decode(s:jsonnr)) if has('float') diff --git a/src/testdir/test_makeencoding.vim b/src/testdir/test_makeencoding.vim --- a/src/testdir/test_makeencoding.vim +++ b/src/testdir/test_makeencoding.vim @@ -1,7 +1,4 @@ " Tests for 'makeencoding'. -if !has('multi_byte') - finish -endif source shared.vim diff --git a/src/testdir/test_maparg.vim b/src/testdir/test_maparg.vim --- a/src/testdir/test_maparg.vim +++ b/src/testdir/test_maparg.vim @@ -1,8 +1,5 @@ " Tests for maparg(). " Also test utf8 map with a 0x80 byte. -if !has("multi_byte") - finish -endif function s:SID() return str2nr(matchstr(expand(''), '\zs\d\+\ze_SID$')) diff --git a/src/testdir/test_mapping.vim b/src/testdir/test_mapping.vim --- a/src/testdir/test_mapping.vim +++ b/src/testdir/test_mapping.vim @@ -1,9 +1,5 @@ " Tests for mappings and abbreviations -if !has('multi_byte') - finish -endif - func Test_abbreviation() " abbreviation with 0x80 should work inoreab чкпр vim diff --git a/src/testdir/test_marks.vim b/src/testdir/test_marks.vim --- a/src/testdir/test_marks.vim +++ b/src/testdir/test_marks.vim @@ -122,9 +122,6 @@ func Test_marks_cmd() endfunc func Test_marks_cmd_multibyte() - if !has('multi_byte') - return - endif new Xone call setline(1, [repeat('á', &columns)]) norm! ma diff --git a/src/testdir/test_match.vim b/src/testdir/test_match.vim --- a/src/testdir/test_match.vim +++ b/src/testdir/test_match.vim @@ -114,36 +114,33 @@ function Test_match() call assert_equal([{'group': 'MyGroup1', 'id': 3, 'priority': 10, 'pos1': [1, 5, 1], 'pos2': [1, 8, 3]}], getmatches()) call clearmatches() - " - if has('multi_byte') - call setline(1, 'abcdΣabcdef') - call matchaddpos("MyGroup1", [[1, 4, 2], [1, 9, 2]]) - 1 - redraw! - let v1 = screenattr(1, 1) - let v4 = screenattr(1, 4) - let v5 = screenattr(1, 5) - let v6 = screenattr(1, 6) - let v7 = screenattr(1, 7) - let v8 = screenattr(1, 8) - let v9 = screenattr(1, 9) - let v10 = screenattr(1, 10) - call assert_equal([{'group': 'MyGroup1', 'id': 11, 'priority': 10, 'pos1': [1, 4, 2], 'pos2': [1, 9, 2]}], getmatches()) - call assert_notequal(v1, v4) - call assert_equal(v5, v4) - call assert_equal(v6, v1) - call assert_equal(v7, v1) - call assert_equal(v8, v4) - call assert_equal(v9, v4) - call assert_equal(v10, v1) + call setline(1, 'abcdΣabcdef') + call matchaddpos("MyGroup1", [[1, 4, 2], [1, 9, 2]]) + 1 + redraw! + let v1 = screenattr(1, 1) + let v4 = screenattr(1, 4) + let v5 = screenattr(1, 5) + let v6 = screenattr(1, 6) + let v7 = screenattr(1, 7) + let v8 = screenattr(1, 8) + let v9 = screenattr(1, 9) + let v10 = screenattr(1, 10) + call assert_equal([{'group': 'MyGroup1', 'id': 11, 'priority': 10, 'pos1': [1, 4, 2], 'pos2': [1, 9, 2]}], getmatches()) + call assert_notequal(v1, v4) + call assert_equal(v5, v4) + call assert_equal(v6, v1) + call assert_equal(v7, v1) + call assert_equal(v8, v4) + call assert_equal(v9, v4) + call assert_equal(v10, v1) - " Check, that setmatches() can correctly restore the matches from matchaddpos() - call matchadd('MyGroup1', '\%2lmatchadd') - let m=getmatches() - call clearmatches() - call setmatches(m) - call assert_equal([{'group': 'MyGroup1', 'id': 11, 'priority': 10, 'pos1': [1, 4, 2], 'pos2': [1,9, 2]}, {'group': 'MyGroup1', 'pattern': '\%2lmatchadd', 'priority': 10, 'id': 12}], getmatches()) - endif + " Check, that setmatches() can correctly restore the matches from matchaddpos() + call matchadd('MyGroup1', '\%2lmatchadd') + let m=getmatches() + call clearmatches() + call setmatches(m) + call assert_equal([{'group': 'MyGroup1', 'id': 11, 'priority': 10, 'pos1': [1, 4, 2], 'pos2': [1,9, 2]}, {'group': 'MyGroup1', 'pattern': '\%2lmatchadd', 'priority': 10, 'id': 12}], getmatches()) highlight MyGroup1 NONE highlight MyGroup2 NONE diff --git a/src/testdir/test_matchadd_conceal_utf8.vim b/src/testdir/test_matchadd_conceal_utf8.vim --- a/src/testdir/test_matchadd_conceal_utf8.vim +++ b/src/testdir/test_matchadd_conceal_utf8.vim @@ -1,5 +1,5 @@ " Test for matchadd() and conceal feature using utf-8. -if !has('conceal') || !has('multi_byte') +if !has('conceal') finish endif diff --git a/src/testdir/test_mksession_utf8.vim b/src/testdir/test_mksession_utf8.vim --- a/src/testdir/test_mksession_utf8.vim +++ b/src/testdir/test_mksession_utf8.vim @@ -3,7 +3,7 @@ set encoding=utf-8 scriptencoding utf-8 -if !has('multi_byte') || !has('mksession') +if !has('mksession') finish endif diff --git a/src/testdir/test_normal.vim b/src/testdir/test_normal.vim --- a/src/testdir/test_normal.vim +++ b/src/testdir/test_normal.vim @@ -1368,10 +1368,6 @@ func Test_normal23_K() endfunc func Test_normal24_rot13() - " This test uses multi byte characters - if !has("multi_byte") - return - endif " Testing for g?? g?g? new call append(0, 'abcdefghijklmnopqrstuvwxyzäüö') @@ -1621,10 +1617,6 @@ fun! Test_normal29_brace() endfunc fun! Test_normal30_changecase() - " This test uses multi byte characters - if !has("multi_byte") - return - endif new call append(0, 'This is a simple test: äüöß') norm! 1ggVu @@ -1894,42 +1886,36 @@ func Test_g_ctrl_g() call assert_equal("\nCol 1 of 10; Line 1 of 2; Word 1 of 4; Char 1 of 23; Byte 1 of 22", a) set bin & eol& - if has('multi_byte') - call setline(1, ['Français', '日本語']) + call setline(1, ['Français', '日本語']) - let a = execute(":norm! \gojlg\") - call assert_equal("\nCol 4-3 of 9-6; Line 2 of 2; Word 2 of 2; Char 11 of 13; Byte 16 of 20", a) + let a = execute(":norm! \gojlg\") + call assert_equal("\nCol 4-3 of 9-6; Line 2 of 2; Word 2 of 2; Char 11 of 13; Byte 16 of 20", a) - let a = execute(":norm! \gojvlg\") - call assert_equal("\nSelected 1 of 2 Lines; 1 of 2 Words; 2 of 13 Chars; 6 of 20 Bytes", a) + let a = execute(":norm! \gojvlg\") + call assert_equal("\nSelected 1 of 2 Lines; 1 of 2 Words; 2 of 13 Chars; 6 of 20 Bytes", a) - let a = execute(":norm! \goll\jlg\") - call assert_equal("\nSelected 4 Cols; 2 of 2 Lines; 2 of 2 Words; 6 of 13 Chars; 11 of 20 Bytes", a) + let a = execute(":norm! \goll\jlg\") + call assert_equal("\nSelected 4 Cols; 2 of 2 Lines; 2 of 2 Words; 6 of 13 Chars; 11 of 20 Bytes", a) - set fenc=utf8 bomb - let a = execute(":norm! \gojlg\") - call assert_equal("\nCol 4-3 of 9-6; Line 2 of 2; Word 2 of 2; Char 11 of 13; Byte 16 of 20(+3 for BOM)", a) + set fenc=utf8 bomb + let a = execute(":norm! \gojlg\") + call assert_equal("\nCol 4-3 of 9-6; Line 2 of 2; Word 2 of 2; Char 11 of 13; Byte 16 of 20(+3 for BOM)", a) - set fenc=utf16 bomb - let a = execute(":norm! g\") - call assert_equal("\nCol 4-3 of 9-6; Line 2 of 2; Word 2 of 2; Char 11 of 13; Byte 16 of 20(+2 for BOM)", a) + set fenc=utf16 bomb + let a = execute(":norm! g\") + call assert_equal("\nCol 4-3 of 9-6; Line 2 of 2; Word 2 of 2; Char 11 of 13; Byte 16 of 20(+2 for BOM)", a) - set fenc=utf32 bomb - let a = execute(":norm! g\") - call assert_equal("\nCol 4-3 of 9-6; Line 2 of 2; Word 2 of 2; Char 11 of 13; Byte 16 of 20(+4 for BOM)", a) + set fenc=utf32 bomb + let a = execute(":norm! g\") + call assert_equal("\nCol 4-3 of 9-6; Line 2 of 2; Word 2 of 2; Char 11 of 13; Byte 16 of 20(+4 for BOM)", a) - set fenc& bomb& - endif + set fenc& bomb& set ff& bwipe! endfunc fun! Test_normal34_g_cmd3() - if !has("multi_byte") - return - endif - " Test for g8 new let a=execute(':norm! 1G0g8') @@ -1948,9 +1934,6 @@ fun! Test_normal34_g_cmd3() endfunc func Test_normal_8g8() - if !has("multi_byte") - return - endif new " Test 8g8 which finds invalid utf8 at or after the cursor. @@ -2290,11 +2273,6 @@ func Test_normal45_drop() endfunc func Test_normal46_ignore() - " This test uses multi byte characters - if !has("multi_byte") - return - endif - new " How to test this? " let's just for now test, that the buffer @@ -2470,9 +2448,7 @@ func Test_normal54_Ctrl_bsl() call assert_equal(['abcdefghijklmn'], getline(1,'$')) exe "norm! df\m" call assert_equal(['abcdefghijklmn'], getline(1,'$')) - if !has("multi_byte") - return - endif + call setline(2, 'abcdefghijklmnāf') norm! 2gg0 exe "norm! df\" @@ -2494,9 +2470,6 @@ func Test_normal_large_count() endfunc func Test_delete_until_paragraph() - if !has('multi_byte') - return - endif new normal grádv} call assert_equal('á', getline(1)) diff --git a/src/testdir/test_plus_arg_edit.vim b/src/testdir/test_plus_arg_edit.vim --- a/src/testdir/test_plus_arg_edit.vim +++ b/src/testdir/test_plus_arg_edit.vim @@ -10,10 +10,6 @@ function Test_edit() endfunction func Test_edit_bad() - if !has('multi_byte') - finish - endif - " Test loading a utf8 file with bad utf8 sequences. call writefile(["[\xff][\xc0][\xe2\x89\xf0][\xc2\xc2]"], "Xfile") new diff --git a/src/testdir/test_profile.vim b/src/testdir/test_profile.vim --- a/src/testdir/test_profile.vim +++ b/src/testdir/test_profile.vim @@ -407,7 +407,7 @@ func Test_profile_errors() endfunc func Test_profile_truncate_mbyte() - if !has('multi_byte') || &enc !=# 'utf-8' + if &enc !=# 'utf-8' return endif diff --git a/src/testdir/test_put.vim b/src/testdir/test_put.vim --- a/src/testdir/test_put.vim +++ b/src/testdir/test_put.vim @@ -1,9 +1,6 @@ " Tests for put commands, e.g. ":put", "p", "gp", "P", "gP", etc. func Test_put_block() - if !has('multi_byte') - return - endif new call feedkeys("i\u2500\x\", 'x') call feedkeys("\y", 'x') diff --git a/src/testdir/test_regex_char_classes.vim b/src/testdir/test_regex_char_classes.vim --- a/src/testdir/test_regex_char_classes.vim +++ b/src/testdir/test_regex_char_classes.vim @@ -1,9 +1,6 @@ " Tests for regexp with backslash and other special characters inside [] " Also test backslash for hex/octal numbered character. " -if !has('multi_byte') - finish -endif scriptencoding utf-8 diff --git a/src/testdir/test_regexp_utf8.vim b/src/testdir/test_regexp_utf8.vim --- a/src/testdir/test_regexp_utf8.vim +++ b/src/testdir/test_regexp_utf8.vim @@ -1,7 +1,4 @@ " Tests for regexp in utf8 encoding -if !has('multi_byte') - finish -endif func s:equivalence_test() let str = "AÀÁÂÃÄÅĀĂĄǍǞǠẢ BḂḆ CÇĆĈĊČ DĎĐḊḎḐ EÈÉÊËĒĔĖĘĚẺẼ FḞ GĜĞĠĢǤǦǴḠ HĤĦḢḦḨ IÌÍÎÏĨĪĬĮİǏỈ JĴ KĶǨḰḴ LĹĻĽĿŁḺ MḾṀ NÑŃŅŇṄṈ OÒÓÔÕÖØŌŎŐƠǑǪǬỎ PṔṖ Q RŔŖŘṘṞ SŚŜŞŠṠ TŢŤŦṪṮ UÙÚÛÜŨŪŬŮŰŲƯǓỦ VṼ WŴẀẂẄẆ XẊẌ YÝŶŸẎỲỶỸ ZŹŻŽƵẐẔ aàáâãäåāăąǎǟǡả bḃḇ cçćĉċč dďđḋḏḑ eèéêëēĕėęěẻẽ fḟ gĝğġģǥǧǵḡ hĥħḣḧḩẖ iìíîïĩīĭįǐỉ jĵǰ kķǩḱḵ lĺļľŀłḻ mḿṁ nñńņňʼnṅṉ oòóôõöøōŏőơǒǫǭỏ pṕṗ q rŕŗřṙṟ sśŝşšṡ tţťŧṫṯẗ uùúûüũūŭůűųưǔủ vṽ wŵẁẃẅẇẘ xẋẍ yýÿŷẏẙỳỷỹ zźżžƶẑẕ" diff --git a/src/testdir/test_search.vim b/src/testdir/test_search.vim --- a/src/testdir/test_search.vim +++ b/src/testdir/test_search.vim @@ -1127,9 +1127,6 @@ endfunc " Test for search('multi-byte char', 'bce') func Test_search_multibyte() - if !has('multi_byte') - return - endif let save_enc = &encoding set encoding=utf8 enew! @@ -1178,7 +1175,7 @@ func Test_search_Ctrl_L_combining() " ' ̇' U+0307 Dec:775 COMBINING DOT ABOVE ̇ /\%u307\Z "\u0307" " ' ̣' U+0323 Dec:803 COMBINING DOT BELOW ̣ /\%u323 "\u0323" " Those should also appear on the commandline - if !has('multi_byte') || !exists('+incsearch') + if !exists('+incsearch') return endif call Cmdline3_prep() diff --git a/src/testdir/test_source_utf8.vim b/src/testdir/test_source_utf8.vim --- a/src/testdir/test_source_utf8.vim +++ b/src/testdir/test_source_utf8.vim @@ -1,7 +1,4 @@ " Test the :source! command -if !has('multi_byte') - finish -endif func Test_source_utf8() " check that sourcing a script with 0x80 as second byte works diff --git a/src/testdir/test_spell.vim b/src/testdir/test_spell.vim --- a/src/testdir/test_spell.vim +++ b/src/testdir/test_spell.vim @@ -135,10 +135,8 @@ func Test_spellinfo() set enc=cp1250 spell spelllang=en call assert_match("^\nfile: .*/runtime/spell/en.ascii.spl\n$", execute('spellinfo')) - if has('multi_byte') - set enc=utf-8 spell spelllang=en - call assert_match("^\nfile: .*/runtime/spell/en.utf-8.spl\n$", execute('spellinfo')) - endif + set enc=utf-8 spell spelllang=en + call assert_match("^\nfile: .*/runtime/spell/en.utf-8.spl\n$", execute('spellinfo')) set enc=latin1 spell spelllang=en_us,en_nz call assert_match("^\n" . diff --git a/src/testdir/test_startup_utf8.vim b/src/testdir/test_startup_utf8.vim --- a/src/testdir/test_startup_utf8.vim +++ b/src/testdir/test_startup_utf8.vim @@ -1,7 +1,4 @@ " Tests for startup using utf-8. -if !has('multi_byte') - finish -endif source shared.vim source screendump.vim diff --git a/src/testdir/test_termencoding.vim b/src/testdir/test_termencoding.vim --- a/src/testdir/test_termencoding.vim +++ b/src/testdir/test_termencoding.vim @@ -2,7 +2,7 @@ " setting 'termencoding' to make it work. " This only works with "iconv". -if !has('multi_byte') || !has('iconv') +if !has('iconv') finish endif diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim --- a/src/testdir/test_terminal.vim +++ b/src/testdir/test_terminal.vim @@ -209,9 +209,6 @@ func Test_terminal_scrape_123() endfunc func Test_terminal_scrape_multibyte() - if !has('multi_byte') - return - endif call writefile(["léttまrs"], 'Xtext') if has('win32') " Run cmd with UTF-8 codepage to make the type command print the expected diff --git a/src/testdir/test_utf8.vim b/src/testdir/test_utf8.vim --- a/src/testdir/test_utf8.vim +++ b/src/testdir/test_utf8.vim @@ -1,7 +1,4 @@ " Tests for Unicode manipulations -if !has('multi_byte') - finish -endif " Visual block Insert adjusts for multi-byte char diff --git a/src/testdir/test_utf8_comparisons.vim b/src/testdir/test_utf8_comparisons.vim --- a/src/testdir/test_utf8_comparisons.vim +++ b/src/testdir/test_utf8_comparisons.vim @@ -1,10 +1,6 @@ " Tests for case-insensitive UTF-8 comparisons (utf_strnicmp() in mbyte.c) " Also test "g~ap". -if !has("multi_byte") - finish -endif - func Ch(a, op, b, expected) call assert_equal(eval(printf('"%s" %s "%s"', a:a, a:op, a:b)), a:expected, \ printf('"%s" %s "%s" should return %d', a:a, a:op, a:b, a:expected)) diff --git a/src/testdir/test_viminfo.vim b/src/testdir/test_viminfo.vim --- a/src/testdir/test_viminfo.vim +++ b/src/testdir/test_viminfo.vim @@ -391,9 +391,6 @@ func Test_viminfo_jumplist() endfunc func Test_viminfo_encoding() - if !has('multi_byte') - return - endif set enc=latin1 call histdel(':') call histadd(':', "echo '\xe9'") diff --git a/src/testdir/test_virtualedit.vim b/src/testdir/test_virtualedit.vim --- a/src/testdir/test_virtualedit.vim +++ b/src/testdir/test_virtualedit.vim @@ -48,11 +48,9 @@ func Test_replace_end_of_line() call setline(1, range(20)) exe "normal! gg2jv10lr-" call assert_equal(["1", "-----------", "3"], getline(2,4)) - if has('multi_byte') - call setline(1, range(20)) - exe "normal! gg2jv10lr\hh" - call assert_equal(["1", "───────────", "3"], getline(2,4)) - endif + call setline(1, range(20)) + exe "normal! gg2jv10lr\hh" + call assert_equal(["1", "───────────", "3"], getline(2,4)) bwipe! set virtualedit= diff --git a/src/testdir/test_visual.vim b/src/testdir/test_visual.vim --- a/src/testdir/test_visual.vim +++ b/src/testdir/test_visual.vim @@ -6,9 +6,6 @@ endif func Test_block_shift_multibyte() " Uses double-wide character. - if !has('multi_byte') - return - endif split call setline(1, ['xヹxxx', 'ヹxxx']) exe "normal 1G0l\jl>" diff --git a/src/testdir/test_wordcount.vim b/src/testdir/test_wordcount.vim --- a/src/testdir/test_wordcount.vim +++ b/src/testdir/test_wordcount.vim @@ -1,9 +1,5 @@ " Test for wordcount() function -if !has('multi_byte') - finish -endif - func Test_wordcount() let save_enc = &enc set encoding=utf-8 diff --git a/src/testdir/test_writefile.vim b/src/testdir/test_writefile.vim --- a/src/testdir/test_writefile.vim +++ b/src/testdir/test_writefile.vim @@ -33,7 +33,7 @@ func Test_writefile_fails_gently() endfunc func Test_writefile_fails_conversion() - if !has('multi_byte') || !has('iconv') || system('uname -s') =~ 'SunOS' + if !has('iconv') || system('uname -s') =~ 'SunOS' return endif set nobackup nowritebackup diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -788,6 +788,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 811, +/**/ 810, /**/ 809, diff --git a/src/vim.h b/src/vim.h --- a/src/vim.h +++ b/src/vim.h @@ -157,6 +157,10 @@ # define VIM_SIZEOF_INT __SIZEOF_INT__ #endif +#if VIM_SIZEOF_INT < 4 && !defined(PROTO) + Error: Vim only works with 32 bit int or larger +#endif + /* * #defines for optionals and features * Also defines FEAT_TINY, FEAT_SMALL, etc. when FEAT_HUGE is defined. @@ -1664,8 +1668,6 @@ typedef long linenr_T; /* line number t typedef int colnr_T; /* column number type */ typedef unsigned short disptick_T; /* display tick type */ -#define MAXLNUM (0x7fffffffL) /* maximum (invalid) line number */ - /* * Well, you won't believe it, but some S/390 machines ("host", now also known * as zServer) use 31 bit pointers. There are also some newer machines, that @@ -1675,14 +1677,12 @@ typedef unsigned short disptick_T; /* di * With this we restrict the maximum line length to 1073741823. I guess this is * not a real problem. BTW: Longer lines are split. */ -#if VIM_SIZEOF_INT >= 4 -# ifdef __MVS__ -# define MAXCOL (0x3fffffffL) /* maximum column number, 30 bits */ -# else -# define MAXCOL (0x7fffffffL) /* maximum column number, 31 bits */ -# endif +#ifdef __MVS__ +# define MAXCOL (0x3fffffffL) /* maximum column number, 30 bits */ +# define MAXLNUM (0x3fffffffL) /* maximum (invalid) line number */ #else -# define MAXCOL (0x7fff) /* maximum column number, 15 bits */ +# define MAXCOL (0x7fffffffL) /* maximum column number, 31 bits */ +# define MAXLNUM (0x7fffffffL) /* maximum (invalid) line number */ #endif #define SHOWCMD_COLS 10 /* columns needed by shown command */