summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.0806
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.0806')
-rw-r--r--data/vim/patches/8.1.08067095
1 files changed, 0 insertions, 7095 deletions
diff --git a/data/vim/patches/8.1.0806 b/data/vim/patches/8.1.0806
deleted file mode 100644
index c59e436d7..000000000
--- a/data/vim/patches/8.1.0806
+++ /dev/null
@@ -1,7095 +0,0 @@
-To: vim_dev@googlegroups.com
-Subject: Patch 8.1.0806
-Fcc: outbox
-From: Bram Moolenaar <Bram@moolenaar.net>
-Mime-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-------------
-
-Patch 8.1.0806
-Problem: Too many #ifdefs.
-Solution: Graduate FEAT_MBYTE, part 2.
-Files: src/ex_cmds2.c, src/ex_docmd.c, src/ex_getln.c, src/gui_w32.c,
- src/gui_x11.c, src/hardcopy.c, src/if_xcmdsrv.c, src/json.c,
- src/kword_test.c, src/main.c, src/mbyte.c, src/memline.c,
- src/message.c, src/misc1.c, src/misc2.c, src/move.c, src/normal.c,
- src/ops.c, src/option.c, src/charset.c
-
-
-*** ../vim-8.1.0805/src/ex_cmds2.c 2019-01-24 15:04:44.666887862 +0100
---- src/ex_cmds2.c 2019-01-24 15:09:55.708856796 +0100
-***************
-*** 5421,5427 ****
- #if (defined(FEAT_EVAL) && !((defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
- && defined(LC_MESSAGES))) \
- || ((defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
-- && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE)) \
- && !defined(LC_MESSAGES))
- /*
- * Get the language used for messages from the environment.
---- 5421,5426 ----
-***************
-*** 5485,5492 ****
- }
- #endif
-
-! #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
-! && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE))
- /*
- * ":language": Set the language (locale).
- */
---- 5484,5490 ----
- }
- #endif
-
-! #if defined(HAVE_LOCALE_H) || defined(X_LOCALE) \
- /*
- * ":language": Set the language (locale).
- */
-*** ../vim-8.1.0805/src/ex_docmd.c 2019-01-24 15:04:44.666887862 +0100
---- src/ex_docmd.c 2019-01-24 15:10:21.144699639 +0100
-***************
-*** 4300,4307 ****
- xp->xp_pattern = arg;
- break;
-
-! #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
-! && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE))
- case CMD_language:
- p = skiptowhite(arg);
- if (*p == NUL)
---- 4300,4306 ----
- xp->xp_pattern = arg;
- break;
-
-! #if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
- case CMD_language:
- p = skiptowhite(arg);
- if (*p == NUL)
-***************
-*** 5963,5970 ****
- #if defined(FEAT_CMDHIST)
- {EXPAND_HISTORY, "history"},
- #endif
-! #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
-! && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE))
- {EXPAND_LOCALES, "locale"},
- #endif
- {EXPAND_MAPCLEAR, "mapclear"},
---- 5962,5968 ----
- #if defined(FEAT_CMDHIST)
- {EXPAND_HISTORY, "history"},
- #endif
-! #if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
- {EXPAND_LOCALES, "locale"},
- #endif
- {EXPAND_MAPCLEAR, "mapclear"},
-*** ../vim-8.1.0805/src/ex_getln.c 2019-01-24 15:04:44.670887836 +0100
---- src/ex_getln.c 2019-01-24 15:10:41.796571593 +0100
-***************
-*** 5253,5260 ****
- #ifdef FEAT_PROFILE
- {EXPAND_PROFILE, get_profile_name, TRUE, TRUE},
- #endif
-! #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
-! && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE))
- {EXPAND_LANGUAGE, get_lang_arg, TRUE, FALSE},
- {EXPAND_LOCALES, get_locales, TRUE, FALSE},
- #endif
---- 5253,5259 ----
- #ifdef FEAT_PROFILE
- {EXPAND_PROFILE, get_profile_name, TRUE, TRUE},
- #endif
-! #if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
- {EXPAND_LANGUAGE, get_lang_arg, TRUE, FALSE},
- {EXPAND_LOCALES, get_locales, TRUE, FALSE},
- #endif
-*** ../vim-8.1.0805/src/gui_w32.c 2019-01-19 19:54:17.141981393 +0100
---- src/gui_w32.c 2019-01-24 15:12:02.496067677 +0100
-***************
-*** 30,38 ****
- #endif
-
- #if defined(FEAT_DIRECTX)
-- # ifndef FEAT_MBYTE
-- # error FEAT_MBYTE is required for FEAT_DIRECTX.
-- # endif
- static DWriteContext *s_dwc = NULL;
- static int s_directx_enabled = 0;
- static int s_directx_load_attempted = 0;
---- 30,35 ----
-***************
-*** 318,326 ****
- #ifdef MSWIN_FIND_REPLACE
- static UINT s_findrep_msg = 0; /* set in gui_w[16/32].c */
- static FINDREPLACE s_findrep_struct;
-- # ifdef FEAT_MBYTE
- static FINDREPLACEW s_findrep_struct_w;
-- # endif
- static HWND s_findrep_hwnd = NULL;
- static int s_findrep_is_find; /* TRUE for find dialog, FALSE
- for find/replace dialog */
---- 315,321 ----
-***************
-*** 396,408 ****
- }
- #endif
-
-! #if defined(FEAT_MBYTE) || defined(GLOBAL_IME)
-! /* use of WindowProc depends on wide_WindowProc */
-! # define MyWindowProc vim_WindowProc
-! #else
-! /* use ordinary WindowProc */
-! # define MyWindowProc DefWindowProc
-! #endif
-
- extern int current_font_height; /* this is in os_mswin.c */
-
---- 391,398 ----
- }
- #endif
-
-! /* use of WindowProc depends on wide_WindowProc */
-! #define MyWindowProc vim_WindowProc
-
- extern int current_font_height; /* this is in os_mswin.c */
-
-***************
-*** 724,730 ****
- {
- int len;
- int i;
-- #ifdef FEAT_MBYTE
- WCHAR wstring[2];
- char_u *ws = NULL;
-
---- 714,719 ----
-***************
-*** 785,791 ****
- }
-
- if (len == 0)
-- #endif
- {
- string[0] = ch;
- len = 1;
---- 774,779 ----
-***************
-*** 1118,1124 ****
- #endif
-
- #ifdef MSWIN_FIND_REPLACE
-- # ifdef FEAT_MBYTE
- /*
- * copy useful data from structure LPFINDREPLACE to structure LPFINDREPLACEW
- */
---- 1106,1111 ----
-***************
-*** 1155,1161 ****
- vim_strncpy((char_u *)lpfr->lpstrReplaceWith, p, lpfr->wReplaceWithLen - 1);
- vim_free(p);
- }
-- # endif
-
- /*
- * Handle a Find/Replace window message.
---- 1142,1147 ----
-***************
-*** 1166,1179 ****
- int flags = 0;
- int down;
-
-- # ifdef FEAT_MBYTE
- /* If the OS is Windows NT, and 'encoding' differs from active codepage:
- * convert text from wide string. */
- if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
- {
- findrep_wtoa(&s_findrep_struct, &s_findrep_struct_w);
- }
-- # endif
-
- if (s_findrep_struct.Flags & FR_DIALOGTERM)
- /* Give main window the focus back. */
---- 1152,1163 ----
-***************
-*** 1318,1342 ****
- }
- }
-
-! #if defined(FEAT_MBYTE) \
-! || defined(GLOBAL_IME) \
-! || defined(PROTO)
-! # ifdef PROTO
- typedef int WINAPI;
-! # endif
-
- LRESULT WINAPI
- vim_WindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
- {
-! # ifdef GLOBAL_IME
- return global_ime_DefWindowProc(hwnd, message, wParam, lParam);
-! # else
- if (wide_WindowProc)
- return DefWindowProcW(hwnd, message, wParam, lParam);
- return DefWindowProc(hwnd, message, wParam, lParam);
- #endif
- }
-- #endif
-
- /*
- * Called when the foreground or background color has been changed.
---- 1302,1322 ----
- }
- }
-
-! #ifdef PROTO
- typedef int WINAPI;
-! #endif
-
- LRESULT WINAPI
- vim_WindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
- {
-! #ifdef GLOBAL_IME
- return global_ime_DefWindowProc(hwnd, message, wParam, lParam);
-! #else
- if (wide_WindowProc)
- return DefWindowProcW(hwnd, message, wParam, lParam);
- return DefWindowProc(hwnd, message, wParam, lParam);
- #endif
- }
-
- /*
- * Called when the foreground or background color has been changed.
-***************
-*** 1751,1760 ****
- rc.left = FILL_X(gui.col);
- rc.top = FILL_Y(gui.row);
- rc.right = rc.left + gui.char_width;
-- #ifdef FEAT_MBYTE
- if (mb_lefthalve(gui.row, gui.col))
- rc.right += gui.char_width;
-- #endif
- rc.bottom = rc.top + gui.char_height;
- hbr = CreateSolidBrush(color);
- FrameRect(s_hdc, &rc, hbr);
---- 1731,1738 ----
-***************
-*** 2345,2351 ****
- return size.cx;
- }
-
-- #ifdef FEAT_MBYTE
- /*
- * Return the width in pixels of the given text in the given DC, taking care
- * of 'encoding' to active codepage conversion.
---- 2323,2328 ----
-***************
-*** 2374,2382 ****
-
- return GetTextWidth(hdc, str, len);
- }
-- #else
-- # define GetTextWidthEnc(h, s, l) GetTextWidth((h), (s), (l))
-- #endif
-
- static void get_work_area(RECT *spi_rect);
-
---- 2351,2356 ----
-***************
-*** 2451,2465 ****
-
- if (showit)
- {
-! # ifdef FEAT_MBYTE
-! # ifndef TB_SETUNICODEFORMAT
- /* For older compilers. We assume this never changes. */
-! # define TB_SETUNICODEFORMAT 0x2005
-! # endif
- /* Enable/disable unicode support */
- int uu = (enc_codepage >= 0 && (int)GetACP() != enc_codepage);
- SendMessage(s_toolbarhwnd, TB_SETUNICODEFORMAT, (WPARAM)uu, (LPARAM)0);
-- # endif
- ShowWindow(s_toolbarhwnd, SW_SHOW);
- }
- else
---- 2425,2437 ----
-
- if (showit)
- {
-! # ifndef TB_SETUNICODEFORMAT
- /* For older compilers. We assume this never changes. */
-! # define TB_SETUNICODEFORMAT 0x2005
-! # endif
- /* Enable/disable unicode support */
- int uu = (enc_codepage >= 0 && (int)GetACP() != enc_codepage);
- SendMessage(s_toolbarhwnd, TB_SETUNICODEFORMAT, (WPARAM)uu, (LPARAM)0);
- ShowWindow(s_toolbarhwnd, SW_SHOW);
- }
- else
-***************
-*** 2475,2481 ****
- static void
- add_tabline_popup_menu_entry(HMENU pmenu, UINT item_id, char_u *item_text)
- {
-- #ifdef FEAT_MBYTE
- WCHAR *wn = NULL;
-
- if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
---- 2447,2452 ----
-***************
-*** 2499,2505 ****
- }
-
- if (wn == NULL)
-- #endif
- {
- MENUITEMINFO info;
-
---- 2470,2475 ----
-***************
-*** 2606,2625 ****
- int nr = 0;
- int curtabidx = 0;
- int tabadded = 0;
-- #ifdef FEAT_MBYTE
- static int use_unicode = FALSE;
- int uu;
- WCHAR *wstr = NULL;
-- #endif
-
- if (s_tabhwnd == NULL)
- return;
-
-! #ifdef FEAT_MBYTE
-! # ifndef CCM_SETUNICODEFORMAT
- /* For older compilers. We assume this never changes. */
-! # define CCM_SETUNICODEFORMAT 0x2005
-! # endif
- uu = (enc_codepage >= 0 && (int)GetACP() != enc_codepage);
- if (uu != use_unicode)
- {
---- 2576,2592 ----
- int nr = 0;
- int curtabidx = 0;
- int tabadded = 0;
- static int use_unicode = FALSE;
- int uu;
- WCHAR *wstr = NULL;
-
- if (s_tabhwnd == NULL)
- return;
-
-! #ifndef CCM_SETUNICODEFORMAT
- /* For older compilers. We assume this never changes. */
-! # define CCM_SETUNICODEFORMAT 0x2005
-! #endif
- uu = (enc_codepage >= 0 && (int)GetACP() != enc_codepage);
- if (uu != use_unicode)
- {
-***************
-*** 2627,2633 ****
- SendMessage(s_tabhwnd, CCM_SETUNICODEFORMAT, (WPARAM)uu, (LPARAM)0);
- use_unicode = uu;
- }
-- #endif
-
- tie.mask = TCIF_TEXT;
- tie.iImage = -1;
---- 2594,2599 ----
-***************
-*** 2651,2657 ****
-
- get_tabline_label(tp, FALSE);
- tie.pszText = (LPSTR)NameBuff;
-- #ifdef FEAT_MBYTE
- wstr = NULL;
- if (use_unicode)
- {
---- 2617,2622 ----
-***************
-*** 2669,2675 ****
- }
- }
- if (wstr == NULL)
-- #endif
- {
- TabCtrl_SetItem(s_tabhwnd, nr, &tie);
- }
---- 2634,2639 ----
-***************
-*** 2770,2776 ****
- static void
- set_window_title(HWND hwnd, char *title)
- {
-- #ifdef FEAT_MBYTE
- if (title != NULL && enc_codepage >= 0 && enc_codepage != (int)GetACP())
- {
- WCHAR *wbuf;
---- 2734,2739 ----
-***************
-*** 2784,2790 ****
- }
- return;
- }
-- #endif
- (void)SetWindowText(hwnd, (LPCSTR)title);
- }
-
---- 2747,2752 ----
-***************
-*** 2800,2806 ****
- if (!IsWindow(s_findrep_hwnd))
- {
- initialise_findrep(eap->arg);
-- # ifdef FEAT_MBYTE
- /* If the OS is Windows NT, and 'encoding' differs from active
- * codepage: convert text and use wide function. */
- if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
---- 2762,2767 ----
-***************
-*** 2810,2816 ****
- (LPFINDREPLACEW) &s_findrep_struct_w);
- }
- else
-- # endif
- s_findrep_hwnd = FindText((LPFINDREPLACE) &s_findrep_struct);
- }
-
---- 2771,2776 ----
-***************
-*** 2835,2841 ****
- if (!IsWindow(s_findrep_hwnd))
- {
- initialise_findrep(eap->arg);
-- # ifdef FEAT_MBYTE
- if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
- {
- findrep_atow(&s_findrep_struct_w, &s_findrep_struct);
---- 2795,2800 ----
-***************
-*** 2843,2849 ****
- (LPFINDREPLACEW) &s_findrep_struct_w);
- }
- else
-- # endif
- s_findrep_hwnd = ReplaceText(
- (LPFINDREPLACE) &s_findrep_struct);
- }
---- 2802,2807 ----
-***************
-*** 2931,2937 ****
- out_flush(); /* make sure all output has been processed */
- (void)BeginPaint(hwnd, &ps);
-
-- #ifdef FEAT_MBYTE
- /* prevent multi-byte characters from misprinting on an invalid
- * rectangle */
- if (has_mbyte)
---- 2889,2894 ----
-***************
-*** 2942,2948 ****
- ps.rcPaint.left = rect.left;
- ps.rcPaint.right = rect.right;
- }
-- #endif
-
- if (!IsRectEmpty(&ps.rcPaint))
- {
---- 2899,2904 ----
-***************
-*** 3255,3261 ****
- char *font_name = lf.lfFaceName;
-
- charset_name = charset_id2name((int)lf.lfCharSet);
-- #ifdef FEAT_MBYTE
- /* Convert a font name from the current codepage to 'encoding'.
- * TODO: Use Wide APIs (including LOGFONTW) instead of ANSI APIs. */
- if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
---- 3211,3216 ----
-***************
-*** 3264,3270 ****
- acp_to_enc((char_u *)lf.lfFaceName, (int)strlen(lf.lfFaceName),
- (char_u **)&font_name, &len);
- }
-- #endif
- quality_name = quality_id2name((int)lf.lfQuality);
-
- res = (char *)alloc((unsigned)(strlen(font_name) + 20
---- 3219,3224 ----
-***************
-*** 3301,3310 ****
- }
- }
-
-- #ifdef FEAT_MBYTE
- if (font_name != lf.lfFaceName)
- vim_free(font_name);
-- #endif
- return (char_u *)res;
- }
-
---- 3255,3262 ----
-***************
-*** 3329,3335 ****
- }
- #endif
-
-- #ifdef FEAT_MBYTE
- /*
- * Handler of gui.wide_font (p_guifontwide) changed notification.
- */
---- 3281,3286 ----
-***************
-*** 3338,3346 ****
- {
- LOGFONT lf;
-
-! # ifdef FEAT_MBYTE_IME
- update_im_font();
-! # endif
-
- gui_mch_free_font(gui.wide_ital_font);
- gui.wide_ital_font = NOFONT;
---- 3289,3297 ----
- {
- LOGFONT lf;
-
-! #ifdef FEAT_MBYTE_IME
- update_im_font();
-! #endif
-
- gui_mch_free_font(gui.wide_ital_font);
- gui.wide_ital_font = NOFONT;
-***************
-*** 3370,3376 ****
- }
- }
- }
-- #endif
-
- /*
- * Initialise vim to use the font with the given name.
---- 3321,3326 ----
-***************
-*** 3574,3586 ****
-
- #if defined(FEAT_BROWSE) || defined(PROTO)
- /*
-- * The file browser exists in two versions: with "W" uses wide characters,
-- * without "W" the current codepage. When FEAT_MBYTE is defined and on
-- * Windows NT/2000/XP the "W" functions are used.
-- */
--
-- # ifdef FEAT_MBYTE
-- /*
- * Wide version of convert_filter().
- */
- static WCHAR *
---- 3524,3529 ----
-***************
-*** 3600,3609 ****
- }
-
- /*
-! * Wide version of gui_mch_browse(). Keep in sync!
- */
- static char_u *
-! gui_mch_browseW(
- int saving,
- char_u *title,
- char_u *dflt,
---- 3543,3559 ----
- }
-
- /*
-! * Pop open a file browser and return the file selected, in allocated memory,
-! * or NULL if Cancel is hit.
-! * saving - TRUE if the file will be saved to, FALSE if it will be opened.
-! * title - Title message for the file browser dialog.
-! * dflt - Default name of file.
-! * ext - Default extension to be added to files without extensions.
-! * initdir - directory in which to open the browser (NULL = current dir)
-! * filter - Filter for matched files to choose from.
- */
- static char_u *
-! gui_mch_browse(
- int saving,
- char_u *title,
- char_u *dflt,
-***************
-*** 3718,3724 ****
- vim_free(p);
- return q;
- }
-- # endif /* FEAT_MBYTE */
-
-
- /*
---- 3668,3673 ----
-***************
-*** 3762,3867 ****
- return gui_mch_browse(0, title, (char_u *)_("Not Used"), NULL,
- initdir, (char_u *)_("Directory\t*.nothing\n"));
- }
--
-- /*
-- * Pop open a file browser and return the file selected, in allocated memory,
-- * or NULL if Cancel is hit.
-- * saving - TRUE if the file will be saved to, FALSE if it will be opened.
-- * title - Title message for the file browser dialog.
-- * dflt - Default name of file.
-- * ext - Default extension to be added to files without extensions.
-- * initdir - directory in which to open the browser (NULL = current dir)
-- * filter - Filter for matched files to choose from.
-- *
-- * Keep in sync with gui_mch_browseW() above!
-- */
-- char_u *
-- gui_mch_browse(
-- int saving,
-- char_u *title,
-- char_u *dflt,
-- char_u *ext,
-- char_u *initdir,
-- char_u *filter)
-- {
-- # ifdef FEAT_MBYTE
-- return gui_mch_browseW(saving, title, dflt, ext, initdir, filter);
-- # else
-- OPENFILENAME fileStruct;
-- char_u fileBuf[MAXPATHL];
-- char_u *initdirp = NULL;
-- char_u *filterp;
-- char_u *p;
--
-- if (dflt == NULL)
-- fileBuf[0] = NUL;
-- else
-- vim_strncpy(fileBuf, dflt, MAXPATHL - 1);
--
-- /* Convert the filter to Windows format. */
-- filterp = convert_filter(filter);
--
-- vim_memset(&fileStruct, 0, sizeof(OPENFILENAME));
-- # ifdef OPENFILENAME_SIZE_VERSION_400
-- /* be compatible with Windows NT 4.0 */
-- fileStruct.lStructSize = OPENFILENAME_SIZE_VERSION_400;
-- # else
-- fileStruct.lStructSize = sizeof(fileStruct);
-- # endif
--
-- fileStruct.lpstrTitle = (LPSTR)title;
-- fileStruct.lpstrDefExt = (LPSTR)ext;
--
-- fileStruct.lpstrFile = (LPSTR)fileBuf;
-- fileStruct.nMaxFile = MAXPATHL;
-- fileStruct.lpstrFilter = (LPSTR)filterp;
-- fileStruct.hwndOwner = s_hwnd; /* main Vim window is owner*/
-- /* has an initial dir been specified? */
-- if (initdir != NULL && *initdir != NUL)
-- {
-- /* Must have backslashes here, no matter what 'shellslash' says */
-- initdirp = vim_strsave(initdir);
-- if (initdirp != NULL)
-- for (p = initdirp; *p != NUL; ++p)
-- if (*p == '/')
-- *p = '\\';
-- fileStruct.lpstrInitialDir = (LPSTR)initdirp;
-- }
--
-- /*
-- * TODO: Allow selection of multiple files. Needs another arg to this
-- * function to ask for it, and need to use OFN_ALLOWMULTISELECT below.
-- * Also, should we use OFN_FILEMUSTEXIST when opening? Vim can edit on
-- * files that don't exist yet, so I haven't put it in. What about
-- * OFN_PATHMUSTEXIST?
-- * Don't use OFN_OVERWRITEPROMPT, Vim has its own ":confirm" dialog.
-- */
-- fileStruct.Flags = (OFN_NOCHANGEDIR | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY);
-- # ifdef FEAT_SHORTCUT
-- if (curbuf->b_p_bin)
-- fileStruct.Flags |= OFN_NODEREFERENCELINKS;
-- # endif
-- if (saving)
-- {
-- if (!GetSaveFileName(&fileStruct))
-- return NULL;
-- }
-- else
-- {
-- if (!GetOpenFileName(&fileStruct))
-- return NULL;
-- }
--
-- vim_free(filterp);
-- vim_free(initdirp);
--
-- /* Give focus back to main window (when using MDI). */
-- SetFocus(s_hwnd);
--
-- /* Shorten the file name if possible */
-- return vim_strsave(shorten_fname1((char_u *)fileBuf));
-- # endif
-- }
- #endif /* FEAT_BROWSE */
-
- static void
---- 3711,3716 ----
-***************
-*** 3871,3879 ****
- {
- #define BUFPATHLEN _MAX_PATH
- #define DRAGQVAL 0xFFFFFFFF
-- #ifdef FEAT_MBYTE
- WCHAR wszFile[BUFPATHLEN];
-- #endif
- char szFile[BUFPATHLEN];
- UINT cFiles = DragQueryFile(hDrop, DRAGQVAL, NULL, 0);
- UINT i;
---- 3720,3726 ----
-***************
-*** 3894,3904 ****
- if (fnames != NULL)
- for (i = 0; i < cFiles; ++i)
- {
-- #ifdef FEAT_MBYTE
- if (DragQueryFileW(hDrop, i, wszFile, BUFPATHLEN) > 0)
- fnames[i] = utf16_to_enc(wszFile, NULL);
- else
-- #endif
- {
- DragQueryFile(hDrop, i, szFile, BUFPATHLEN);
- fnames[i] = vim_strsave((char_u *)szFile);
---- 3741,3749 ----
-***************
-*** 4060,4072 ****
-
- *tofree = NULL;
-
-- #ifdef FEAT_MBYTE
- /* Try using the Unicode version first, it takes care of conversion when
- * 'encoding' is changed. */
- argc = get_cmd_argsW(&argv);
- if (argc != 0)
- goto done;
-- #endif
-
- /* Handle the program name. Remove the ".exe" extension, and find the 1st
- * non-space. */
---- 3905,3915 ----
-***************
-*** 4145,4151 ****
- {
- if (pnew != NULL)
- *pnew++ = *p;
-- #ifdef FEAT_MBYTE
- /* Can't use mb_* functions, because 'encoding' is not
- * initialized yet here. */
- if (IsDBCSLeadByte(*p))
---- 3988,3993 ----
-***************
-*** 4154,4160 ****
- if (pnew != NULL)
- *pnew++ = *p;
- }
-- #endif
- ++p;
- }
- }
---- 3996,4001 ----
-***************
-*** 4178,4186 ****
- }
- }
-
-- #ifdef FEAT_MBYTE
- done:
-- #endif
- argv[argc] = NULL; /* NULL-terminated list */
- *argvp = argv;
- return argc;
---- 4019,4025 ----
-***************
-*** 4381,4387 ****
- LPARAM lParam;
- } NMTTDISPINFO_NEW;
-
-- #ifdef FEAT_MBYTE
- typedef struct tagTOOLINFOW_NEW
- {
- UINT cbSize;
---- 4220,4225 ----
-***************
-*** 4405,4411 ****
- LPARAM lParam;
- } NMTTDISPINFOW_NEW;
-
-- #endif
-
- typedef HRESULT (WINAPI* DLLGETVERSIONPROC)(DLLVERSIONINFO *);
- #ifndef TTM_SETMAXTIPWIDTH
---- 4243,4248 ----
-***************
-*** 4438,4444 ****
- } NMTTDISPINFOA, *LPNMTTDISPINFOA;
- # define LPNMTTDISPINFO LPNMTTDISPINFOA
-
-- # ifdef FEAT_MBYTE
- typedef struct tagNMTTDISPINFOW {
- NMHDR hdr;
- LPWSTR lpszText;
---- 4275,4280 ----
-***************
-*** 4447,4453 ****
- UINT uFlags;
- LPARAM lParam;
- } NMTTDISPINFOW, *LPNMTTDISPINFOW;
-- # endif
- # endif
- #endif
-
---- 4283,4288 ----
-***************
-*** 4970,4978 ****
- case WM_NOTIFY:
- switch (((LPNMHDR) lParam)->code)
- {
-- # ifdef FEAT_MBYTE
- case TTN_GETDISPINFOW:
-- # endif
- case TTN_GETDISPINFO:
- {
- LPNMHDR hdr = (LPNMHDR)lParam;
---- 4805,4811 ----
-***************
-*** 5034,5040 ****
- # endif
- if (str != NULL)
- {
-- # ifdef FEAT_MBYTE
- if (hdr->code == TTN_GETDISPINFOW)
- {
- LPNMTTDISPINFOW lpdi = (LPNMTTDISPINFOW)lParam;
---- 4867,4872 ----
-***************
-*** 5049,5055 ****
- /* can't show tooltip if failed */
- }
- else
-- # endif
- {
- LPNMTTDISPINFO lpdi = (LPNMTTDISPINFO)lParam;
-
---- 4881,4886 ----
-***************
-*** 5353,5363 ****
- const char szVimWndClass[] = VIM_CLASS;
- const char szTextAreaClass[] = "VimTextArea";
- WNDCLASS wndclass;
-- #ifdef FEAT_MBYTE
- const WCHAR szVimWndClassW[] = VIM_CLASSW;
- const WCHAR szTextAreaClassW[] = L"VimTextArea";
- WNDCLASSW wndclassw;
-- #endif
- #ifdef GLOBAL_IME
- ATOM atom;
- #endif
---- 5184,5192 ----
-***************
-*** 5383,5389 ****
-
- s_brush = CreateSolidBrush(GetSysColor(COLOR_BTNFACE));
-
-- #ifdef FEAT_MBYTE
- /* First try using the wide version, so that we can use any title.
- * Otherwise only characters in the active codepage will work. */
- if (GetClassInfoW(s_hinst, szVimWndClassW, &wndclassw) == 0)
---- 5212,5217 ----
-***************
-*** 5410,5437 ****
- }
-
- if (!wide_WindowProc)
-! #endif
-!
-! if (GetClassInfo(s_hinst, szVimWndClass, &wndclass) == 0)
-! {
-! wndclass.style = CS_DBLCLKS;
-! wndclass.lpfnWndProc = _WndProc;
-! wndclass.cbClsExtra = 0;
-! wndclass.cbWndExtra = 0;
-! wndclass.hInstance = s_hinst;
-! wndclass.hIcon = LoadIcon(wndclass.hInstance, "IDR_VIM");
-! wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
-! wndclass.hbrBackground = s_brush;
-! wndclass.lpszMenuName = NULL;
-! wndclass.lpszClassName = szVimWndClass;
-
-! if ((
- #ifdef GLOBAL_IME
-! atom =
- #endif
-! RegisterClass(&wndclass)) == 0)
-! return FAIL;
-! }
-
- if (vim_parent_hwnd != NULL)
- {
---- 5238,5263 ----
- }
-
- if (!wide_WindowProc)
-! if (GetClassInfo(s_hinst, szVimWndClass, &wndclass) == 0)
-! {
-! wndclass.style = CS_DBLCLKS;
-! wndclass.lpfnWndProc = _WndProc;
-! wndclass.cbClsExtra = 0;
-! wndclass.cbWndExtra = 0;
-! wndclass.hInstance = s_hinst;
-! wndclass.hIcon = LoadIcon(wndclass.hInstance, "IDR_VIM");
-! wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
-! wndclass.hbrBackground = s_brush;
-! wndclass.lpszMenuName = NULL;
-! wndclass.lpszClassName = szVimWndClass;
-
-! if ((
- #ifdef GLOBAL_IME
-! atom =
- #endif
-! RegisterClass(&wndclass)) == 0)
-! return FAIL;
-! }
-
- if (vim_parent_hwnd != NULL)
- {
-***************
-*** 5503,5509 ****
- #endif
-
- /* Create the text area window */
-- #ifdef FEAT_MBYTE
- if (wide_WindowProc)
- {
- if (GetClassInfoW(s_hinst, szTextAreaClassW, &wndclassw) == 0)
---- 5329,5334 ----
-***************
-*** 5532,5540 ****
- s_hwnd, NULL,
- s_hinst, NULL);
- }
-! else
-! #endif
-! if (GetClassInfo(s_hinst, szTextAreaClass, &wndclass) == 0)
- {
- wndclass.style = CS_OWNDC;
- wndclass.lpfnWndProc = _TextAreaWndProc;
---- 5357,5363 ----
- s_hwnd, NULL,
- s_hinst, NULL);
- }
-! else if (GetClassInfo(s_hinst, szTextAreaClass, &wndclass) == 0)
- {
- wndclass.style = CS_OWNDC;
- wndclass.lpfnWndProc = _TextAreaWndProc;
-***************
-*** 5642,5648 ****
- s_findrep_struct.lpstrReplaceWith[0] = NUL;
- s_findrep_struct.wFindWhatLen = MSWIN_FR_BUFSIZE;
- s_findrep_struct.wReplaceWithLen = MSWIN_FR_BUFSIZE;
-- # ifdef FEAT_MBYTE
- s_findrep_struct_w.lStructSize = sizeof(s_findrep_struct_w);
- s_findrep_struct_w.lpstrFindWhat =
- (LPWSTR)alloc(MSWIN_FR_BUFSIZE * sizeof(WCHAR));
---- 5465,5470 ----
-***************
-*** 5652,5658 ****
- s_findrep_struct_w.lpstrReplaceWith[0] = NUL;
- s_findrep_struct_w.wFindWhatLen = MSWIN_FR_BUFSIZE;
- s_findrep_struct_w.wReplaceWithLen = MSWIN_FR_BUFSIZE;
-- # endif
- #endif
-
- #ifdef FEAT_EVAL
---- 5474,5479 ----
-***************
-*** 6149,6155 ****
-
- #endif /* FEAT_MBYTE_IME */
-
-! #if defined(FEAT_MBYTE) && !defined(FEAT_MBYTE_IME) && defined(GLOBAL_IME)
- /* Win32 with GLOBAL IME */
-
- /*
---- 5970,5976 ----
-
- #endif /* FEAT_MBYTE_IME */
-
-! #if !defined(FEAT_MBYTE_IME) && defined(GLOBAL_IME)
- /* Win32 with GLOBAL IME */
-
- /*
-***************
-*** 6186,6192 ****
- }
- #endif
-
-- #ifdef FEAT_MBYTE
- /*
- * Convert latin9 text "text[len]" to ucs-2 in "unicodebuf".
- */
---- 6007,6012 ----
-***************
-*** 6212,6218 ****
- *unicodebuf++ = c;
- }
- }
-- #endif
-
- #ifdef FEAT_RIGHTLEFT
- /*
---- 6032,6037 ----
-***************
-*** 6319,6330 ****
- int i;
- const RECT *pcliprect = NULL;
- UINT foptions = 0;
-- #ifdef FEAT_MBYTE
- static WCHAR *unicodebuf = NULL;
- static int *unicodepdy = NULL;
- static int unibuflen = 0;
- int n = 0;
-- #endif
- int y;
-
- /*
---- 6138,6147 ----
-***************
-*** 6354,6367 ****
- */
- rc.left = FILL_X(col);
- rc.top = FILL_Y(row);
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- {
- /* Compute the length in display cells. */
- rc.right = FILL_X(col + mb_string2cells(text, len));
- }
- else
-- #endif
- rc.right = FILL_X(col + len);
- rc.bottom = FILL_Y(row + 1);
-
---- 6171,6182 ----
-***************
-*** 6429,6435 ****
- * No check for DRAW_BOLD, Windows will have done it already.
- */
-
-- #ifdef FEAT_MBYTE
- /* Check if there are any UTF-8 characters. If not, use normal text
- * output to speed up output. */
- if (enc_utf8)
---- 6244,6249 ----
-***************
-*** 6437,6449 ****
- if (text[n] >= 0x80)
- break;
-
-! # if defined(FEAT_DIRECTX)
- /* Quick hack to enable DirectWrite. To use DirectWrite (antialias), it is
- * required that unicode drawing routine, currently. So this forces it
- * enabled. */
- if (IS_ENABLE_DIRECTX())
- n = 0; /* Keep n < len, to enter block for unicode. */
-! # endif
-
- /* Check if the Unicode buffer exists and is big enough. Create it
- * with the same length as the multi-byte string, the number of wide
---- 6251,6263 ----
- if (text[n] >= 0x80)
- break;
-
-! #if defined(FEAT_DIRECTX)
- /* Quick hack to enable DirectWrite. To use DirectWrite (antialias), it is
- * required that unicode drawing routine, currently. So this forces it
- * enabled. */
- if (IS_ENABLE_DIRECTX())
- n = 0; /* Keep n < len, to enter block for unicode. */
-! #endif
-
- /* Check if the Unicode buffer exists and is big enough. Create it
- * with the same length as the multi-byte string, the number of wide
-***************
-*** 6516,6522 ****
- i += utf_ptr2len_len(text + i, len - i);
- ++clen;
- }
-! # if defined(FEAT_DIRECTX)
- if (IS_ENABLE_DIRECTX())
- {
- /* Add one to "cells" for italics. */
---- 6330,6336 ----
- i += utf_ptr2len_len(text + i, len - i);
- ++clen;
- }
-! #if defined(FEAT_DIRECTX)
- if (IS_ENABLE_DIRECTX())
- {
- /* Add one to "cells" for italics. */
-***************
-*** 6526,6532 ****
- foptions, pcliprect, unicodepdy);
- }
- else
-! # endif
- ExtTextOutW(s_hdc, TEXT_X(col), TEXT_Y(row),
- foptions, pcliprect, unicodebuf, wlen, unicodepdy);
- len = cells; /* used for underlining */
---- 6340,6346 ----
- foptions, pcliprect, unicodepdy);
- }
- else
-! #endif
- ExtTextOutW(s_hdc, TEXT_X(col), TEXT_Y(row),
- foptions, pcliprect, unicodebuf, wlen, unicodepdy);
- len = cells; /* used for underlining */
-***************
-*** 6568,6574 ****
- }
- }
- else
-- #endif
- {
- #ifdef FEAT_RIGHTLEFT
- /* Windows will mess up RL text, so we have to draw it character by
---- 6382,6387 ----
-***************
-*** 6690,6696 ****
-
- if (menu_is_menubar(menu->name))
- {
-- #ifdef FEAT_MBYTE
- WCHAR *wn = NULL;
-
- if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
---- 6503,6508 ----
-***************
-*** 6719,6725 ****
- }
-
- if (wn == NULL)
-- #endif
- {
- MENUITEMINFO info;
-
---- 6531,6536 ----
-***************
-*** 6847,6853 ****
- else
- #endif
- {
-- #ifdef FEAT_MBYTE
- WCHAR *wn = NULL;
-
- if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
---- 6658,6663 ----
-***************
-*** 6865,6871 ****
- }
- }
- if (wn == NULL)
-- #endif
- InsertMenu(parent->submenu_id, (UINT)idx,
- (menu_is_separator(menu->name) ? MF_SEPARATOR : MF_STRING)
- | MF_BYPOSITION,
---- 6675,6680 ----
-***************
-*** 7059,7065 ****
- /* If the edit box exists, copy the string. */
- if (s_textfield != NULL)
- {
-- # ifdef FEAT_MBYTE
- /* If the OS is Windows NT, and 'encoding' differs from active
- * codepage: use wide function and convert text. */
- if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
---- 6868,6873 ----
-***************
-*** 7074,7080 ****
- vim_free(wp);
- }
- else
-- # endif
- GetDlgItemText(hwnd, DLG_NONBUTTON_CONTROL + 2,
- (LPSTR)s_textfield, IOSIZE);
- }
---- 6882,6887 ----
-***************
-*** 7306,7316 ****
- last_white = NULL;
- for (pend = pstart; *pend != NUL && *pend != '\n'; )
- {
-- #ifdef FEAT_MBYTE
- l = (*mb_ptr2len)(pend);
-- #else
-- l = 1;
-- #endif
- if (l == 1 && VIM_ISWHITE(*pend)
- && textWidth > maxDialogWidth * 3 / 4)
- last_white = pend;
---- 7113,7119 ----
-***************
-*** 7693,7699 ****
- BOOL use_enc)
- {
- int nChar = 0;
-- #ifdef FEAT_MBYTE
- int len = lstrlen(lpAnsiIn) + 1; /* include NUL character */
- int i;
- WCHAR *wn;
---- 7496,7501 ----
-***************
-*** 7719,7734 ****
- for (i = 0; i < nChar; ++i)
- if (lpWCStr[i] == (WORD)'\t') /* replace tabs with spaces */
- lpWCStr[i] = (WORD)' ';
-- #else
-- do
-- {
-- if (*lpAnsiIn == '\t')
-- *lpWCStr++ = (WORD)' ';
-- else
-- *lpWCStr++ = (WORD)*lpAnsiIn;
-- nChar++;
-- } while (*lpAnsiIn++);
-- #endif
-
- return nChar;
- }
---- 7521,7526 ----
-***************
-*** 8775,8781 ****
- return multiline_tip;
- }
-
-- #ifdef FEAT_MBYTE
- static void
- make_tooltipw(BalloonEval *beval, char *text, POINT pt)
- {
---- 8567,8572 ----
-***************
-*** 8845,8851 ****
- mouse_event(MOUSEEVENTF_MOVE, (DWORD)-1, (DWORD)-1, 0, 0);
- vim_free(pti);
- }
-- #endif
-
- static void
- make_tooltip(BalloonEval *beval, char *text, POINT pt)
---- 8636,8641 ----
-***************
-*** 8853,8865 ****
- TOOLINFO *pti;
- int ToolInfoSize;
-
-- #ifdef FEAT_MBYTE
- if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
- {
- make_tooltipw(beval, text, pt);
- return;
- }
-- #endif
-
- if (multiline_balloon_available() == TRUE)
- ToolInfoSize = sizeof(TOOLINFO_NEW);
---- 8643,8653 ----
-***************
-*** 9072,9078 ****
- info->uFlags |= TTF_DI_SETITEM;
- }
- break;
-- #ifdef FEAT_MBYTE
- case TTN_GETDISPINFOW:
- {
- // if we get here then we have new common controls
---- 8860,8865 ----
-***************
-*** 9081,9087 ****
- info->uFlags |= TTF_DI_SETITEM;
- }
- break;
-- #endif
- }
- }
- }
---- 8868,8873 ----
-*** ../vim-8.1.0805/src/gui_x11.c 2019-01-17 17:13:25.920984090 +0100
---- src/gui_x11.c 2019-01-24 15:13:43.959427047 +0100
-***************
-*** 748,754 ****
- gui_focus_change(FALSE);
- }
-
-! #if defined(X_HAVE_UTF8_STRING) && defined(FEAT_MBYTE)
- # if X_HAVE_UTF8_STRING
- # define USE_UTF8LOOKUP
- # endif
---- 748,754 ----
- gui_focus_change(FALSE);
- }
-
-! #if defined(X_HAVE_UTF8_STRING)
- # if X_HAVE_UTF8_STRING
- # define USE_UTF8LOOKUP
- # endif
-***************
-*** 810,822 ****
- if (status == XLookupNone || status == XLookupChars)
- key_sym = XK_VoidSymbol;
-
-- # ifdef FEAT_MBYTE
- /* Do conversion from 'termencoding' to 'encoding'. When using
- * Xutf8LookupString() it has already been done. */
- if (len > 0 && input_conv.vc_type != CONV_NONE
-! # ifdef USE_UTF8LOOKUP
- && !enc_utf8
-! # endif
- )
- {
- int maxlen = len * 4 + 40; /* guessed */
---- 810,821 ----
- if (status == XLookupNone || status == XLookupChars)
- key_sym = XK_VoidSymbol;
-
- /* Do conversion from 'termencoding' to 'encoding'. When using
- * Xutf8LookupString() it has already been done. */
- if (len > 0 && input_conv.vc_type != CONV_NONE
-! # ifdef USE_UTF8LOOKUP
- && !enc_utf8
-! # endif
- )
- {
- int maxlen = len * 4 + 40; /* guessed */
-***************
-*** 829,835 ****
- string_alloced = True;
- len = convert_input(p, len, maxlen);
- }
-- # endif
-
- /* Translate CSI to K_CSI, otherwise it could be recognized as the
- * start of a special key. */
---- 828,833 ----
-***************
-*** 901,910 ****
- && (ev_press->state & Mod1Mask)
- && !(key_sym == XK_BackSpace || key_sym == XK_Delete)
- && (string[0] & 0x80) == 0
-! #ifdef FEAT_MBYTE
-! && !enc_dbcs
-! #endif
-! )
- {
- #if defined(FEAT_MENU) && defined(FEAT_GUI_MOTIF)
- /* Ignore ALT keys when they are used for the menu only */
---- 899,905 ----
- && (ev_press->state & Mod1Mask)
- && !(key_sym == XK_BackSpace || key_sym == XK_Delete)
- && (string[0] & 0x80) == 0
-! && !enc_dbcs)
- {
- #if defined(FEAT_MENU) && defined(FEAT_GUI_MOTIF)
- /* Ignore ALT keys when they are used for the menu only */
-***************
-*** 930,936 ****
- && !(key_sym == XK_Tab && (ev_press->state & ShiftMask)))
- {
- string[0] |= 0x80;
-- #ifdef FEAT_MBYTE
- if (enc_utf8) /* convert to utf-8 */
- {
- string[1] = string[0] & 0xbf;
---- 925,930 ----
-***************
-*** 944,950 ****
- else
- len = 2;
- }
-- #endif
- }
- else
- ev_press->state |= Mod1Mask;
---- 938,943 ----
-***************
-*** 983,992 ****
- if (len == -3 || key_sym == XK_space || key_sym == XK_Tab
- || key_sym == XK_Return || key_sym == XK_Linefeed
- || key_sym == XK_Escape
-! #ifdef FEAT_MBYTE
-! || (enc_dbcs && len == 1 && (ev_press->state & Mod1Mask))
-! #endif
-! )
- {
- modifiers = 0;
- if (ev_press->state & ShiftMask)
---- 976,982 ----
- if (len == -3 || key_sym == XK_space || key_sym == XK_Tab
- || key_sym == XK_Return || key_sym == XK_Linefeed
- || key_sym == XK_Escape
-! || (enc_dbcs && len == 1 && (ev_press->state & Mod1Mask)))
- {
- modifiers = 0;
- if (ev_press->state & ShiftMask)
-***************
-*** 2375,2381 ****
- int flags)
- {
- int cells = len;
-- #ifdef FEAT_MBYTE
- static void *buf = NULL;
- static int buflen = 0;
- char_u *p;
---- 2365,2370 ----
-***************
-*** 2399,2415 ****
- while (p < s + len)
- {
- c = utf_ptr2char(p);
-! # ifdef FEAT_XFONTSET
- if (current_fontset != NULL)
- {
-! # ifdef SMALL_WCHAR_T
- if (c >= 0x10000)
- c = 0xbf; /* show chars > 0xffff as ? */
-! # endif
- ((wchar_t *)buf)[wlen] = c;
- }
- else
-! # endif
- {
- if (c >= 0x10000)
- c = 0xbf; /* show chars > 0xffff as ? */
---- 2388,2404 ----
- while (p < s + len)
- {
- c = utf_ptr2char(p);
-! #ifdef FEAT_XFONTSET
- if (current_fontset != NULL)
- {
-! # ifdef SMALL_WCHAR_T
- if (c >= 0x10000)
- c = 0xbf; /* show chars > 0xffff as ? */
-! # endif
- ((wchar_t *)buf)[wlen] = c;
- }
- else
-! #endif
- {
- if (c >= 0x10000)
- c = 0xbf; /* show chars > 0xffff as ? */
-***************
-*** 2431,2438 ****
- }
- }
-
-- #endif
--
- #ifdef FEAT_XFONTSET
- if (current_fontset != NULL)
- {
---- 2420,2425 ----
-***************
-*** 2452,2463 ****
-
- if (flags & DRAW_TRANSP)
- {
-- #ifdef FEAT_MBYTE
- if (enc_utf8)
- XDrawString16(gui.dpy, gui.wid, gui.text_gc, TEXT_X(col),
- TEXT_Y(row), buf, wlen);
- else
-- #endif
- XDrawString(gui.dpy, gui.wid, gui.text_gc, TEXT_X(col),
- TEXT_Y(row), (char *)s, len);
- }
---- 2439,2448 ----
-***************
-*** 2472,2495 ****
- FILL_Y(row), gui.char_width * cells, gui.char_height);
- XSetForeground(gui.dpy, gui.text_gc, prev_fg_color);
-
-- #ifdef FEAT_MBYTE
- if (enc_utf8)
- XDrawString16(gui.dpy, gui.wid, gui.text_gc, TEXT_X(col),
- TEXT_Y(row), buf, wlen);
- else
-- #endif
- XDrawString(gui.dpy, gui.wid, gui.text_gc, TEXT_X(col),
- TEXT_Y(row), (char *)s, len);
- }
- else
- {
- /* XmbDrawImageString has bug, don't use it for fontset. */
-- #ifdef FEAT_MBYTE
- if (enc_utf8)
- XDrawImageString16(gui.dpy, gui.wid, gui.text_gc, TEXT_X(col),
- TEXT_Y(row), buf, wlen);
- else
-- #endif
- XDrawImageString(gui.dpy, gui.wid, gui.text_gc, TEXT_X(col),
- TEXT_Y(row), (char *)s, len);
- }
---- 2457,2476 ----
-***************
-*** 2497,2508 ****
- /* Bold trick: draw the text again with a one-pixel offset. */
- if (flags & DRAW_BOLD)
- {
-- #ifdef FEAT_MBYTE
- if (enc_utf8)
- XDrawString16(gui.dpy, gui.wid, gui.text_gc, TEXT_X(col) + 1,
- TEXT_Y(row), buf, wlen);
- else
-- #endif
- XDrawString(gui.dpy, gui.wid, gui.text_gc, TEXT_X(col) + 1,
- TEXT_Y(row), (char *)s, len);
- }
---- 2478,2487 ----
-***************
-*** 2628,2637 ****
- {
- int w = 1;
-
-- #ifdef FEAT_MBYTE
- if (mb_lefthalve(gui.row, gui.col))
- w = 2;
-- #endif
- gui_mch_set_fg_color(color);
- XDrawRectangle(gui.dpy, gui.wid, gui.text_gc, FILL_X(gui.col),
- FILL_Y(gui.row), w * gui.char_width - 1, gui.char_height - 1);
---- 2607,2614 ----
-*** ../vim-8.1.0805/src/hardcopy.c 2019-01-19 17:43:03.417449145 +0100
---- src/hardcopy.c 2019-01-24 15:16:45.286266663 +0100
-***************
-*** 102,108 ****
- static long_u curr_fg;
- static int page_count;
-
-! #if defined(FEAT_MBYTE) && defined(FEAT_POSTSCRIPT)
- # define OPT_MBFONT_USECOURIER 0
- # define OPT_MBFONT_ASCII 1
- # define OPT_MBFONT_REGULAR 2
---- 102,108 ----
- static long_u curr_fg;
- static int page_count;
-
-! #if defined(FEAT_POSTSCRIPT)
- # define OPT_MBFONT_USECOURIER 0
- # define OPT_MBFONT_ASCII 1
- # define OPT_MBFONT_REGULAR 2
-***************
-*** 149,155 ****
- return parse_list_options(p_popt, printer_opts, OPT_PRINT_NUM_OPTIONS);
- }
-
-! #if (defined(FEAT_MBYTE) && defined(FEAT_POSTSCRIPT)) || defined(PROTO)
- /*
- * Parse 'printmbfont' and set the flags in "mbfont_opts".
- * Returns an error message or NULL;
---- 149,155 ----
- return parse_list_options(p_popt, printer_opts, OPT_PRINT_NUM_OPTIONS);
- }
-
-! #if defined(FEAT_POSTSCRIPT) || defined(PROTO)
- /*
- * Parse 'printmbfont' and set the flags in "mbfont_opts".
- * Returns an error message or NULL;
-***************
-*** 456,464 ****
- int page_line;
- char_u *tbuf;
- char_u *p;
-- #ifdef FEAT_MBYTE
- int l;
-- #endif
-
- /* Also use the space for the line number. */
- if (prt_use_number())
---- 456,462 ----
-***************
-*** 513,536 ****
- mch_print_start_line(TRUE, page_line);
- for (p = tbuf; *p != NUL; )
- {
-! if (mch_print_text_out(p,
-! #ifdef FEAT_MBYTE
-! (l = (*mb_ptr2len)(p))
-! #else
-! 1
-! #endif
-! ))
- {
- ++page_line;
- if (page_line >= 0) /* out of room in header */
- break;
- mch_print_start_line(TRUE, page_line);
- }
-- #ifdef FEAT_MBYTE
- p += l;
-- #else
-- p++;
-- #endif
- }
-
- vim_free(tbuf);
---- 511,524 ----
- mch_print_start_line(TRUE, page_line);
- for (p = tbuf; *p != NUL; )
- {
-! if (mch_print_text_out(p, (l = (*mb_ptr2len)(p))))
- {
- ++page_line;
- if (page_line >= 0) /* out of room in header */
- break;
- mch_print_start_line(TRUE, page_line);
- }
- p += l;
- }
-
- vim_free(tbuf);
-***************
-*** 867,876 ****
- for (col = ppos->column; line[col] != NUL && !need_break; col += outputlen)
- {
- outputlen = 1;
-- #ifdef FEAT_MBYTE
- if (has_mbyte && (outputlen = (*mb_ptr2len)(line + col)) < 1)
- outputlen = 1;
-- #endif
- #ifdef FEAT_SYN_HL
- /*
- * syntax highlighting stuff.
---- 855,862 ----
-***************
-*** 932,942 ****
- else
- {
- need_break = mch_print_text_out(line + col, outputlen);
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- print_pos += (*mb_ptr2cells)(line + col);
- else
-- #endif
- print_pos++;
- }
- }
---- 918,926 ----
-***************
-*** 1046,1052 ****
- {"Courier", "Courier-Bold", "Courier-Oblique", "Courier-BoldOblique"}
- };
-
-- #ifdef FEAT_MBYTE
- /* Generic font metrics for multi-byte fonts */
- static struct prt_ps_font_S prt_ps_mb_font =
- {
---- 1030,1035 ----
-***************
-*** 1055,1061 ****
- -250, 805,
- {NULL, NULL, NULL, NULL}
- };
-- #endif
-
- /* Pointer to current font set being used */
- static struct prt_ps_font_S* prt_ps_font;
---- 1038,1043 ----
-***************
-*** 1076,1082 ****
- int has_charset;
- };
-
-- #ifdef FEAT_MBYTE
-
- #define CS_JIS_C_1978 (0x01)
- #define CS_JIS_X_1983 (0x02)
---- 1058,1063 ----
-***************
-*** 1261,1267 ****
- "KS_X_1992"
- }
- };
-- #endif /* FEAT_MBYTE */
-
- struct prt_ps_resource_S
- {
---- 1242,1247 ----
-***************
-*** 1410,1416 ****
- static char_u prt_line_buffer[257];
- static garray_T prt_ps_buffer;
-
-- # ifdef FEAT_MBYTE
- static int prt_do_conv;
- static vimconv_T prt_conv;
-
---- 1390,1395 ----
-***************
-*** 1422,1428 ****
- static int prt_half_width;
- static char *prt_ascii_encoding;
- static char_u prt_hexchar[] = "0123456789abcdef";
-- # endif
-
- static void
- prt_write_file_raw_len(char_u *buffer, int bytes)
---- 1401,1406 ----
-***************
-*** 1494,1511 ****
- vim_snprintf((char *)prt_line_buffer, sizeof(prt_line_buffer),
- "/_%s /VIM-%s /%s ref\n", new_name, encoding, font);
- prt_write_file(prt_line_buffer);
-- #ifdef FEAT_MBYTE
- if (prt_out_mbyte)
- sprintf((char *)prt_line_buffer, "/%s %d %f /_%s sffs\n",
- new_name, height, 500./prt_ps_courier_font.wx, new_name);
- else
-- #endif
- vim_snprintf((char *)prt_line_buffer, sizeof(prt_line_buffer),
- "/%s %d /_%s ffs\n", new_name, height, new_name);
- prt_write_file(prt_line_buffer);
- }
-
-- #ifdef FEAT_MBYTE
- /*
- * Write a line to define the CID font.
- */
---- 1472,1486 ----
-***************
-*** 1530,1536 ****
- "/%s %s d\n", new_name, original_name);
- prt_write_file(prt_line_buffer);
- }
-- #endif
-
- /*
- * Convert a real value into an integer and fractional part as integers, with
---- 1505,1510 ----
-***************
-*** 1659,1676 ****
- /* Draw the text
- * Note: we write text out raw - EBCDIC conversion is handled in the
- * PostScript world via the font encoding vector. */
-- #ifdef FEAT_MBYTE
- if (prt_out_mbyte)
- prt_write_string("<");
- else
-- #endif
- prt_write_string("(");
- prt_write_file_raw_len(prt_ps_buffer.ga_data, prt_ps_buffer.ga_len);
-- #ifdef FEAT_MBYTE
- if (prt_out_mbyte)
- prt_write_string(">");
- else
-- #endif
- prt_write_string(")");
- /* Add a moveto if need be and use the appropriate show procedure */
- if (prt_do_moveto)
---- 1633,1646 ----
-***************
-*** 2150,2156 ****
- void
- mch_print_cleanup(void)
- {
-- #ifdef FEAT_MBYTE
- if (prt_out_mbyte)
- {
- int i;
---- 2120,2125 ----
-***************
-*** 2171,2177 ****
- convert_setup(&prt_conv, NULL, NULL);
- prt_do_conv = FALSE;
- }
-- #endif
- if (prt_ps_fd != NULL)
- {
- fclose(prt_ps_fd);
---- 2140,2145 ----
-***************
-*** 2250,2262 ****
- if (prt_use_number())
- {
- prt_number_width = PRINT_NUMBER_WIDTH * prt_char_width;
-- #ifdef FEAT_MBYTE
- /* If we are outputting multi-byte characters then line numbers will be
- * printed with half width characters
- */
- if (prt_out_mbyte)
- prt_number_width /= 2;
-- #endif
- prt_left_margin += prt_number_width;
- }
- else
---- 2218,2228 ----
-***************
-*** 2265,2271 ****
- return (int)((prt_right_margin - prt_left_margin) / prt_char_width);
- }
-
-- #ifdef FEAT_MBYTE
- static int
- prt_build_cid_fontname(int font, char_u *name, int name_len)
- {
---- 2231,2236 ----
-***************
-*** 2279,2285 ****
-
- return TRUE;
- }
-- #endif
-
- /*
- * Get number of lines of text that fit on a page (excluding the header).
---- 2244,2249 ----
-***************
-*** 2315,2321 ****
- return lpp - prt_header_height();
- }
-
-- #ifdef FEAT_MBYTE
- static int
- prt_match_encoding(
- char *p_encoding,
---- 2279,2284 ----
-***************
-*** 2368,2374 ****
- }
- return FALSE;
- }
-- #endif
-
- int
- mch_print_init(
---- 2331,2336 ----
-***************
-*** 2385,2398 ****
- double right;
- double top;
- double bottom;
-- #ifdef FEAT_MBYTE
- int props;
- int cmap = 0;
- char_u *p_encoding;
- struct prt_ps_encoding_S *p_mbenc;
- struct prt_ps_encoding_S *p_mbenc_first;
- struct prt_ps_charset_S *p_mbchar = NULL;
-- #endif
-
- #if 0
- /*
---- 2347,2358 ----
-***************
-*** 2415,2421 ****
- /*
- * Set up font and encoding.
- */
-- #ifdef FEAT_MBYTE
- p_encoding = enc_skip(p_penc);
- if (*p_encoding == NUL)
- p_encoding = enc_skip(p_enc);
---- 2375,2380 ----
-***************
-*** 2542,2552 ****
- prt_ps_font = &prt_ps_mb_font;
- }
- else
-- #endif
- {
-- #ifdef FEAT_MBYTE
- prt_use_courier = FALSE;
-- #endif
- prt_ps_font = &prt_ps_courier_font;
- }
-
---- 2501,2508 ----
-***************
-*** 2699,2708 ****
- }
-
- prt_bufsiz = psettings->chars_per_line;
-- #ifdef FEAT_MBYTE
- if (prt_out_mbyte)
- prt_bufsiz *= 2;
-- #endif
- ga_init2(&prt_ps_buffer, (int)sizeof(char), prt_bufsiz);
-
- prt_page_num = 0;
---- 2655,2662 ----
-***************
-*** 2781,2807 ****
- char buffer[256];
- char_u *p_encoding;
- char_u *p;
-- #ifdef FEAT_MBYTE
- struct prt_ps_resource_S *res_cidfont;
- struct prt_ps_resource_S *res_cmap;
-- #endif
- int retval = FALSE;
-
- res_prolog = (struct prt_ps_resource_S *)
- alloc(sizeof(struct prt_ps_resource_S));
- res_encoding = (struct prt_ps_resource_S *)
- alloc(sizeof(struct prt_ps_resource_S));
-- #ifdef FEAT_MBYTE
- res_cidfont = (struct prt_ps_resource_S *)
- alloc(sizeof(struct prt_ps_resource_S));
- res_cmap = (struct prt_ps_resource_S *)
- alloc(sizeof(struct prt_ps_resource_S));
-- #endif
- if (res_prolog == NULL || res_encoding == NULL
-! #ifdef FEAT_MBYTE
-! || res_cidfont == NULL || res_cmap == NULL
-! #endif
-! )
- goto theend;
-
- /*
---- 2735,2754 ----
- char buffer[256];
- char_u *p_encoding;
- char_u *p;
- struct prt_ps_resource_S *res_cidfont;
- struct prt_ps_resource_S *res_cmap;
- int retval = FALSE;
-
- res_prolog = (struct prt_ps_resource_S *)
- alloc(sizeof(struct prt_ps_resource_S));
- res_encoding = (struct prt_ps_resource_S *)
- alloc(sizeof(struct prt_ps_resource_S));
- res_cidfont = (struct prt_ps_resource_S *)
- alloc(sizeof(struct prt_ps_resource_S));
- res_cmap = (struct prt_ps_resource_S *)
- alloc(sizeof(struct prt_ps_resource_S));
- if (res_prolog == NULL || res_encoding == NULL
-! || res_cidfont == NULL || res_cmap == NULL)
- goto theend;
-
- /*
-***************
-*** 2863,2873 ****
- prt_mediasize[prt_media].height,
- (double)0, NULL, NULL);
- /* Define fonts needed */
-- #ifdef FEAT_MBYTE
- if (!prt_out_mbyte || prt_use_courier)
-- #endif
- prt_dsc_font_resource("DocumentNeededResources", &prt_ps_courier_font);
-- #ifdef FEAT_MBYTE
- if (prt_out_mbyte)
- {
- prt_dsc_font_resource((prt_use_courier ? NULL
---- 2810,2817 ----
-***************
-*** 2875,2881 ****
- if (!prt_custom_cmap)
- prt_dsc_resources(NULL, "cmap", prt_cmap);
- }
-- #endif
-
- /* Search for external resources VIM supplies */
- if (!prt_find_resource("prolog", res_prolog))
---- 2819,2824 ----
-***************
-*** 2887,2893 ****
- goto theend;
- if (!prt_check_resource(res_prolog, PRT_PROLOG_VERSION))
- goto theend;
-- #ifdef FEAT_MBYTE
- if (prt_out_mbyte)
- {
- /* Look for required version of multi-byte printing procset */
---- 2830,2835 ----
-***************
-*** 2901,2923 ****
- if (!prt_check_resource(res_cidfont, PRT_CID_PROLOG_VERSION))
- goto theend;
- }
-- #endif
-
- /* Find an encoding to use for printing.
- * Check 'printencoding'. If not set or not found, then use 'encoding'. If
- * that cannot be found then default to "latin1".
- * Note: VIM specific encoding header is always skipped.
- */
-- #ifdef FEAT_MBYTE
- if (!prt_out_mbyte)
- {
-- #endif
- p_encoding = enc_skip(p_penc);
- if (*p_encoding == NUL
- || !prt_find_resource((char *)p_encoding, res_encoding))
- {
- /* 'printencoding' not set or not supported - find alternate */
-- #ifdef FEAT_MBYTE
- int props;
-
- p_encoding = enc_skip(p_enc);
---- 2843,2861 ----
-***************
-*** 2925,2931 ****
- if (!(props & ENC_8BIT)
- || !prt_find_resource((char *)p_encoding, res_encoding))
- /* 8-bit 'encoding' is not supported */
-- #endif
- {
- /* Use latin1 as default printing encoding */
- p_encoding = (char_u *)"latin1";
---- 2863,2868 ----
-***************
-*** 2941,2947 ****
- goto theend;
- /* For the moment there are no checks on encoding resource files to
- * perform */
-- #ifdef FEAT_MBYTE
- }
- else
- {
---- 2878,2883 ----
-***************
-*** 2989,3002 ****
- if (!prt_open_resource(res_cmap))
- goto theend;
- }
-- #endif
-
- /* List resources supplied */
- STRCPY(buffer, res_prolog->title);
- STRCAT(buffer, " ");
- STRCAT(buffer, res_prolog->version);
- prt_dsc_resources("DocumentSuppliedResources", "procset", buffer);
-- #ifdef FEAT_MBYTE
- if (prt_out_mbyte)
- {
- STRCPY(buffer, res_cidfont->title);
---- 2925,2936 ----
-***************
-*** 3013,3019 ****
- }
- }
- if (!prt_out_mbyte || prt_use_courier)
-- #endif
- {
- STRCPY(buffer, res_encoding->title);
- STRCAT(buffer, " ");
---- 2947,2952 ----
-***************
-*** 3035,3045 ****
- prt_dsc_noarg("BeginDefaults");
-
- /* List font resources most likely common to all pages */
-- #ifdef FEAT_MBYTE
- if (!prt_out_mbyte || prt_use_courier)
-- #endif
- prt_dsc_font_resource("PageResources", &prt_ps_courier_font);
-- #ifdef FEAT_MBYTE
- if (prt_out_mbyte)
- {
- prt_dsc_font_resource((prt_use_courier ? NULL : "PageResources"),
---- 2968,2975 ----
-***************
-*** 3047,3053 ****
- if (!prt_custom_cmap)
- prt_dsc_resources(NULL, "cmap", prt_cmap);
- }
-- #endif
-
- /* Paper will be used for all pages */
- prt_dsc_textline("PageMedia", prt_mediasize[prt_media].name);
---- 2977,2982 ----
-***************
-*** 3062,3068 ****
- /* Add required procsets - NOTE: order is important! */
- if (!prt_add_resource(res_prolog))
- goto theend;
-- #ifdef FEAT_MBYTE
- if (prt_out_mbyte)
- {
- /* Add CID font procset, and any user supplied CMap */
---- 2991,2996 ----
-***************
-*** 3071,3081 ****
- if (prt_custom_cmap && !prt_add_resource(res_cmap))
- goto theend;
- }
-- #endif
-
-- #ifdef FEAT_MBYTE
- if (!prt_out_mbyte || prt_use_courier)
-- #endif
- /* There will be only one Roman font encoding to be included in the PS
- * file. */
- if (!prt_add_resource(res_encoding))
---- 2999,3006 ----
-***************
-*** 3102,3115 ****
- prt_write_string("c\n");
-
- /* Font resource inclusion and definition */
-- #ifdef FEAT_MBYTE
- if (!prt_out_mbyte || prt_use_courier)
- {
- /* When using Courier for ASCII range when printing multi-byte, need to
- * pick up ASCII encoding to use with it. */
- if (prt_use_courier)
- p_encoding = (char_u *)prt_ascii_encoding;
-- #endif
- prt_dsc_resources("IncludeResource", "font",
- prt_ps_courier_font.ps_fontname[PRT_PS_FONT_ROMAN]);
- prt_def_font("F0", (char *)p_encoding, (int)prt_line_height,
---- 3027,3038 ----
-***************
-*** 3126,3132 ****
- prt_ps_courier_font.ps_fontname[PRT_PS_FONT_BOLDOBLIQUE]);
- prt_def_font("F3", (char *)p_encoding, (int)prt_line_height,
- prt_ps_courier_font.ps_fontname[PRT_PS_FONT_BOLDOBLIQUE]);
-- #ifdef FEAT_MBYTE
- }
- if (prt_out_mbyte)
- {
---- 3049,3054 ----
-***************
-*** 3182,3188 ****
- /* Use BOLD for BOLDOBLIQUE */
- prt_dup_cidfont("CF1", "CF3");
- }
-- #endif
-
- /* Misc constant vars used for underlining and background rects */
- prt_def_var("UO", PRT_PS_FONT_TO_USER(prt_line_height,
---- 3104,3109 ----
-***************
-*** 3199,3208 ****
- theend:
- vim_free(res_prolog);
- vim_free(res_encoding);
-- #ifdef FEAT_MBYTE
- vim_free(res_cidfont);
- vim_free(res_cmap);
-- #endif
-
- return retval;
- }
---- 3120,3127 ----
-***************
-*** 3269,3280 ****
- prt_dsc_noarg("BeginPageSetup");
-
- prt_write_string("sv\n0 g\n");
-- #ifdef FEAT_MBYTE
- prt_in_ascii = !prt_out_mbyte;
- if (prt_out_mbyte)
- prt_write_string("CF0 sf\n");
- else
-- #endif
- prt_write_string("F0 sf\n");
- prt_fgcol = PRCOLOR_BLACK;
- prt_bgcol = PRCOLOR_WHITE;
---- 3188,3197 ----
-***************
-*** 3318,3326 ****
-
- prt_attribute_change = TRUE;
- prt_need_moveto = TRUE;
-- #ifdef FEAT_MBYTE
- prt_half_width = FALSE;
-- #endif
- }
-
- int
---- 3235,3241 ----
-***************
-*** 3332,3346 ****
- char_u ch_buff[8];
- float char_width;
- float next_pos;
-- #ifdef FEAT_MBYTE
- int in_ascii;
- int half_width;
- char_u *tofree = NULL;
-- #endif
-
- char_width = prt_char_width;
-
-- #ifdef FEAT_MBYTE
- /* Ideally VIM would create a rearranged CID font to combine a Roman and
- * CJKV font to do what VIM is doing here - use a Roman font for characters
- * in the ASCII range, and the original CID font for everything else.
---- 3247,3258 ----
-***************
-*** 3392,3398 ****
- prt_attribute_change = TRUE;
- }
- }
-- #endif
-
- /* Output any required changes to the graphics state, after flushing any
- * text buffered so far.
---- 3304,3309 ----
-***************
-*** 3413,3423 ****
- }
- if (prt_need_font)
- {
-- #ifdef FEAT_MBYTE
- if (!prt_in_ascii)
- prt_write_string("CF");
- else
-- #endif
- prt_write_string("F");
- prt_write_int(prt_font);
- prt_write_string("sf\n");
---- 3324,3332 ----
-***************
-*** 3459,3465 ****
- prt_attribute_change = FALSE;
- }
-
-- #ifdef FEAT_MBYTE
- if (prt_do_conv)
- {
- /* Convert from multi-byte to 8-bit encoding */
---- 3368,3373 ----
-***************
-*** 3486,3492 ****
- }
- }
- else
-- #endif
- {
- /* Add next character to buffer of characters to output.
- * Note: One printed character may require several PS characters to
---- 3394,3399 ----
-***************
-*** 3528,3537 ****
- ga_append(&prt_ps_buffer, ch);
- }
-
-- #ifdef FEAT_MBYTE
- /* Need to free any translated characters */
- vim_free(tofree);
-- #endif
-
- prt_text_run += char_width;
- prt_pos_x += char_width;
---- 3435,3442 ----
-*** ../vim-8.1.0805/src/if_xcmdsrv.c 2019-01-19 18:23:38.017218438 +0100
---- src/if_xcmdsrv.c 2019-01-24 15:17:19.318047080 +0100
-***************
-*** 440,459 ****
- * comm window in the communication window.
- * Length must be computed exactly!
- */
-- #ifdef FEAT_MBYTE
- length = STRLEN(name) + STRLEN(p_enc) + STRLEN(cmd) + 14;
-- #else
-- length = STRLEN(name) + STRLEN(cmd) + 10;
-- #endif
- property = (char_u *)alloc((unsigned)length + 30);
-
-- #ifdef FEAT_MBYTE
- sprintf((char *)property, "%c%c%c-n %s%c-E %s%c-s %s",
- 0, asExpr ? 'c' : 'k', 0, name, 0, p_enc, 0, cmd);
-- #else
-- sprintf((char *)property, "%c%c%c-n %s%c-s %s",
-- 0, asExpr ? 'c' : 'k', 0, name, 0, cmd);
-- #endif
- if (name == loosename)
- vim_free(loosename);
- /* Add a back reference to our comm window */
---- 440,450 ----
-***************
-*** 758,777 ****
- if (!WindowValid(dpy, win))
- return -1;
-
-- #ifdef FEAT_MBYTE
- length = STRLEN(p_enc) + STRLEN(str) + 14;
-- #else
-- length = STRLEN(str) + 10;
-- #endif
- if ((property = (char_u *)alloc((unsigned)length + 30)) != NULL)
- {
-- #ifdef FEAT_MBYTE
- sprintf((char *)property, "%cn%c-E %s%c-n %s%c-w %x",
- 0, 0, p_enc, 0, str, 0, (unsigned int)commWindow);
-- #else
-- sprintf((char *)property, "%cn%c-n %s%c-w %x",
-- 0, 0, str, 0, (unsigned int)commWindow);
-- #endif
- /* Add length of what "%x" resulted in. */
- length += STRLEN(property + length);
- res = AppendPropCarefully(dpy, win, commProperty, property, length + 1);
---- 749,759 ----
-***************
-*** 1334,1350 ****
-
- /* Initialize the result property. */
- ga_init2(&reply, 1, 100);
-- #ifdef FEAT_MBYTE
- (void)ga_grow(&reply, 50 + STRLEN(p_enc));
- sprintf(reply.ga_data, "%cr%c-E %s%c-s %s%c-r ",
- 0, 0, p_enc, 0, serial, 0);
- reply.ga_len = 14 + STRLEN(p_enc) + STRLEN(serial);
-- #else
-- (void)ga_grow(&reply, 50);
-- sprintf(reply.ga_data, "%cr%c-s %s%c-r ",
-- 0, 0, serial, 0);
-- reply.ga_len = 10 + STRLEN(serial);
-- #endif
-
- /* Evaluate the expression and return the result. */
- if (res != NULL)
---- 1316,1325 ----
-*** ../vim-8.1.0805/src/json.c 2019-01-20 15:30:36.885328746 +0100
---- src/json.c 2019-01-24 15:18:12.385703726 +0100
-***************
-*** 96,102 ****
- ga_concat(gap, (char_u *)"\"\"");
- else
- {
-! #if defined(FEAT_MBYTE) && defined(USE_ICONV)
- vimconv_T conv;
- char_u *converted = NULL;
-
---- 96,102 ----
- ga_concat(gap, (char_u *)"\"\"");
- else
- {
-! #if defined(USE_ICONV)
- vimconv_T conv;
- char_u *converted = NULL;
-
-***************
-*** 115,126 ****
- while (*res != NUL)
- {
- int c;
-- #ifdef FEAT_MBYTE
- /* always use utf-8 encoding, ignore 'encoding' */
- c = utf_ptr2char(res);
-- #else
-- c = *res;
-- #endif
-
- switch (c)
- {
---- 115,122 ----
-***************
-*** 142,153 ****
- default:
- if (c >= 0x20)
- {
-- #ifdef FEAT_MBYTE
- numbuf[utf_char2bytes(c, numbuf)] = NUL;
-- #else
-- numbuf[0] = c;
-- numbuf[1] = NUL;
-- #endif
- ga_concat(gap, numbuf);
- }
- else
---- 138,144 ----
-***************
-*** 157,170 ****
- ga_concat(gap, numbuf);
- }
- }
-- #ifdef FEAT_MBYTE
- res += utf_ptr2len(res);
-- #else
-- ++res;
-- #endif
- }
- ga_append(gap, '"');
-! #if defined(FEAT_MBYTE) && defined(USE_ICONV)
- vim_free(converted);
- #endif
- }
---- 148,157 ----
- ga_concat(gap, numbuf);
- }
- }
- res += utf_ptr2len(res);
- }
- ga_append(gap, '"');
-! #if defined(USE_ICONV)
- vim_free(converted);
- #endif
- }
-***************
-*** 421,431 ****
- {
- /* The JSON is always expected to be utf-8, thus use utf functions
- * here. The string is converted below if needed. */
-! if (*p == NUL || p[1] == NUL
-! #ifdef FEAT_MBYTE
-! || utf_ptr2len(p) < utf_byte2len(*p)
-! #endif
-! )
- {
- /* Not enough bytes to make a character or end of the string. Get
- * more if possible. */
---- 408,414 ----
- {
- /* The JSON is always expected to be utf-8, thus use utf functions
- * here. The string is converted below if needed. */
-! if (*p == NUL || p[1] == NUL || utf_ptr2len(p) < utf_byte2len(*p))
- {
- /* Not enough bytes to make a character or end of the string. Get
- * more if possible. */
-***************
-*** 488,500 ****
- }
- if (res != NULL)
- {
-- #ifdef FEAT_MBYTE
- char_u buf[NUMBUFLEN];
- buf[utf_char2bytes((int)nr, buf)] = NUL;
- ga_concat(&ga, buf);
-- #else
-- ga_append(&ga, (int)nr);
-- #endif
- }
- break;
- default:
---- 471,479 ----
-***************
-*** 511,521 ****
- }
- else
- {
-- #ifdef FEAT_MBYTE
- len = utf_ptr2len(p);
-- #else
-- len = 1;
-- #endif
- if (res != NULL)
- {
- if (ga_grow(&ga, len) == FAIL)
---- 490,496 ----
-***************
-*** 538,544 ****
- {
- ga_append(&ga, NUL);
- res->v_type = VAR_STRING;
-! #if defined(FEAT_MBYTE) && defined(USE_ICONV)
- if (!enc_utf8)
- {
- vimconv_T conv;
---- 513,519 ----
- {
- ga_append(&ga, NUL);
- res->v_type = VAR_STRING;
-! #if defined(USE_ICONV)
- if (!enc_utf8)
- {
- vimconv_T conv;
-*** ../vim-8.1.0805/src/kword_test.c 2017-01-28 16:33:18.000000000 +0100
---- src/kword_test.c 2019-01-24 15:18:32.497573317 +0100
-***************
-*** 21,27 ****
- /* This file has to be included because the tested functions are static */
- #include "charset.c"
-
-- #ifdef FEAT_MBYTE
- /*
- * Test the results of vim_iswordc() and vim_iswordp() are matched.
- */
---- 21,26 ----
-***************
-*** 73,85 ****
- }
- }
- }
-- #endif
-
- int
- main(void)
- {
-- #ifdef FEAT_MBYTE
- test_isword_funcs_utf8();
-- #endif
- return 0;
- }
---- 72,81 ----
-*** ../vim-8.1.0805/src/main.c 2019-01-19 21:06:55.344138786 +0100
---- src/main.c 2019-01-24 15:19:25.293230303 +0100
-***************
-*** 119,125 ****
- */
- mch_early_init();
-
-! #if defined(WIN32) && defined(FEAT_MBYTE)
- /*
- * MinGW expands command line arguments, which confuses our code to
- * convert when 'encoding' changes. Get the unexpanded arguments.
---- 119,125 ----
- */
- mch_early_init();
-
-! #if defined(WIN32)
- /*
- * MinGW expands command line arguments, which confuses our code to
- * convert when 'encoding' changes. Get the unexpanded arguments.
-***************
-*** 250,256 ****
- params.fname = alist_name(&GARGLIST[0]);
- }
-
-! #if defined(WIN32) && defined(FEAT_MBYTE)
- {
- extern void set_alist_count(void);
-
---- 250,256 ----
- params.fname = alist_name(&GARGLIST[0]);
- }
-
-! #if defined(WIN32)
- {
- extern void set_alist_count(void);
-
-***************
-*** 592,600 ****
- {
- char_u *enc = NULL;
-
-- # ifdef FEAT_MBYTE
- enc = p_menc;
-- # endif
- if (params.use_ef != NULL)
- set_string_option_direct((char_u *)"ef", -1,
- params.use_ef, OPT_FREE, SID_CARG);
---- 592,598 ----
-***************
-*** 813,819 ****
- /* Must come before the may_req_ calls. */
- starting = 0;
-
-! #if defined(FEAT_TERMRESPONSE) && defined(FEAT_MBYTE)
- /* Must be done before redrawing, puts a few characters on the screen. */
- may_req_ambiguous_char_width();
- #endif
---- 811,817 ----
- /* Must come before the may_req_ calls. */
- starting = 0;
-
-! #if defined(FEAT_TERMRESPONSE)
- /* Must be done before redrawing, puts a few characters on the screen. */
- may_req_ambiguous_char_width();
- #endif
-***************
-*** 926,934 ****
- {
- cmdline_init();
-
-- #ifdef FEAT_MBYTE
- (void)mb_init(); /* init mb_bytelen_tab[] to ones */
-- #endif
- #ifdef FEAT_EVAL
- eval_init(); /* init global variables */
- #endif
---- 924,930 ----
-***************
-*** 1549,1555 ****
- if (garbage_collect_at_exit)
- garbage_collect(FALSE);
- #endif
-! #if defined(WIN32) && defined(FEAT_MBYTE)
- free_cmd_argsW();
- #endif
-
---- 1545,1551 ----
- if (garbage_collect_at_exit)
- garbage_collect(FALSE);
- #endif
-! #if defined(WIN32)
- free_cmd_argsW();
- #endif
-
-***************
-*** 2501,2507 ****
- #endif
- );
-
-! #if defined(FEAT_MBYTE) && defined(WIN32)
- {
- /* Remember this argument has been added to the argument list.
- * Needed when 'encoding' is changed. */
---- 2497,2503 ----
- #endif
- );
-
-! #if defined(WIN32)
- {
- /* Remember this argument has been added to the argument list.
- * Needed when 'encoding' is changed. */
-***************
-*** 2584,2590 ****
- #if defined(WIN3264) && !defined(FEAT_GUI_W32)
- if (is_cygpty_used())
- {
-! # if defined(FEAT_MBYTE) && defined(HAVE_BIND_TEXTDOMAIN_CODESET) \
- && defined(FEAT_GETTEXT)
- char *s, *tofree = NULL;
-
---- 2580,2586 ----
- #if defined(WIN3264) && !defined(FEAT_GUI_W32)
- if (is_cygpty_used())
- {
-! # if defined(HAVE_BIND_TEXTDOMAIN_CODESET) \
- && defined(FEAT_GETTEXT)
- char *s, *tofree = NULL;
-
-***************
-*** 3660,3668 ****
- {
- cmdsrv_main(&parmp->argc, parmp->argv,
- parmp->serverName_arg, &parmp->serverStr);
-- # ifdef FEAT_MBYTE
- parmp->serverStrEnc = vim_strsave(p_enc);
-- # endif
- }
-
- /* If we're still running, get the name to register ourselves.
---- 3656,3662 ----
-***************
-*** 4281,4287 ****
- char_u *res = data;
-
- *tofree = NULL;
-- # ifdef FEAT_MBYTE
- if (client_enc != NULL && p_enc != NULL)
- {
- vimconv_T vimconv;
---- 4275,4280 ----
-***************
-*** 4298,4304 ****
- }
- convert_setup(&vimconv, NULL, NULL);
- }
-- # endif
- return res;
- }
- #endif
---- 4291,4296 ----
-*** ../vim-8.1.0805/src/mbyte.c 2019-01-20 15:30:36.885328746 +0100
---- src/mbyte.c 2019-01-24 15:21:25.168448247 +0100
-***************
-*** 136,143 ****
- # endif
- #endif
-
-- #if defined(FEAT_MBYTE) || defined(PROTO)
--
- static int dbcs_char2len(int c);
- static int dbcs_char2bytes(int c, char_u *buf);
- static int dbcs_ptr2len(char_u *p);
---- 136,141 ----
-***************
-*** 211,219 ****
- }
- #endif
-
-- #endif
-
-- #if defined(FEAT_MBYTE) || defined(FEAT_POSTSCRIPT) || defined(PROTO)
- /*
- * Canonical encoding names and their properties.
- * "iso-8859-n" is handled by enc_canonize() directly.
---- 209,215 ----
-***************
-*** 456,464 ****
- return -1;
- }
-
-- #endif
--
-- #if defined(FEAT_MBYTE) || defined(PROTO)
-
- /*
- * Find canonical encoding "name" in the list and return its properties.
---- 452,457 ----
-***************
-*** 4294,4302 ****
- return col - 1;
- return col;
- }
-- #endif
-
-- #if defined(FEAT_MBYTE) || defined(FEAT_POSTSCRIPT) || defined(PROTO)
- static int enc_alias_search(char_u *name);
-
- /*
---- 4287,4293 ----
-***************
-*** 4325,4331 ****
- char_u *p, *s;
- int i;
-
-- # ifdef FEAT_MBYTE
- if (STRCMP(enc, "default") == 0)
- {
- /* Use the default encoding as it's found by set_init_1(). */
---- 4316,4321 ----
-***************
-*** 4334,4340 ****
- r = (char_u *)"latin1";
- return vim_strsave(r);
- }
-- # endif
-
- /* copy "enc" to allocated memory, with room for two '-' */
- r = alloc((unsigned)(STRLEN(enc) + 3));
---- 4324,4329 ----
-***************
-*** 4406,4420 ****
- return enc_alias_table[i].canon;
- return -1;
- }
-- #endif
-
-- #if defined(FEAT_MBYTE) || defined(PROTO)
-
-! # ifdef HAVE_LANGINFO_H
-! # include <langinfo.h>
-! # endif
-
-! # ifndef FEAT_GUI_W32
- /*
- * Get the canonicalized encoding from the specified locale string "locale"
- * or from the environment variables LC_ALL, LC_CTYPE and LANG.
---- 4395,4407 ----
- return enc_alias_table[i].canon;
- return -1;
- }
-
-
-! #ifdef HAVE_LANGINFO_H
-! # include <langinfo.h>
-! #endif
-
-! #ifndef FEAT_GUI_W32
- /*
- * Get the canonicalized encoding from the specified locale string "locale"
- * or from the environment variables LC_ALL, LC_CTYPE and LANG.
-***************
-*** 4472,4478 ****
-
- return enc_canonize((char_u *)buf);
- }
-! # endif
-
- /*
- * Get the canonicalized encoding of the current locale.
---- 4459,4465 ----
-
- return enc_canonize((char_u *)buf);
- }
-! #endif
-
- /*
- * Get the canonicalized encoding of the current locale.
-***************
-*** 4481,4487 ****
- char_u *
- enc_locale(void)
- {
-! # ifdef WIN3264
- char buf[50];
- long acp = GetACP();
-
---- 4468,4474 ----
- char_u *
- enc_locale(void)
- {
-! #ifdef WIN3264
- char buf[50];
- long acp = GetACP();
-
-***************
-*** 4493,4511 ****
- sprintf(buf, "cp%ld", acp);
-
- return enc_canonize((char_u *)buf);
-! # else
- char *s;
-
-! # ifdef HAVE_NL_LANGINFO_CODESET
- if ((s = nl_langinfo(CODESET)) == NULL || *s == NUL)
-! # endif
-! # if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
- if ((s = setlocale(LC_CTYPE, NULL)) == NULL || *s == NUL)
-! # endif
- s = NULL;
-
- return enc_locale_env(s);
-! # endif
- }
-
- # if defined(WIN3264) || defined(PROTO) || defined(FEAT_CYGWIN_WIN32_CLIPBOARD)
---- 4480,4498 ----
- sprintf(buf, "cp%ld", acp);
-
- return enc_canonize((char_u *)buf);
-! #else
- char *s;
-
-! # ifdef HAVE_NL_LANGINFO_CODESET
- if ((s = nl_langinfo(CODESET)) == NULL || *s == NUL)
-! # endif
-! # if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
- if ((s = setlocale(LC_CTYPE, NULL)) == NULL || *s == NUL)
-! # endif
- s = NULL;
-
- return enc_locale_env(s);
-! #endif
- }
-
- # if defined(WIN3264) || defined(PROTO) || defined(FEAT_CYGWIN_WIN32_CLIPBOARD)
-***************
-*** 4800,4806 ****
- # endif /* DYNAMIC_ICONV */
- # endif /* USE_ICONV */
-
-- #endif /* FEAT_MBYTE */
-
- #ifdef FEAT_GUI
- # define USE_IMACTIVATEFUNC (!gui.in_use && *p_imaf != NUL)
---- 4787,4792 ----
-***************
-*** 4810,4817 ****
- # define USE_IMSTATUSFUNC (*p_imsf != NUL)
- #endif
-
-! #if defined(FEAT_EVAL) && defined(FEAT_MBYTE) \
-! && (defined(FEAT_XIM) || defined(IME_WITHOUT_XIM))
- static void
- call_imactivatefunc(int active)
- {
---- 4796,4802 ----
- # define USE_IMSTATUSFUNC (*p_imsf != NUL)
- #endif
-
-! #if defined(FEAT_EVAL) && (defined(FEAT_XIM) || defined(IME_WITHOUT_XIM))
- static void
- call_imactivatefunc(int active)
- {
-***************
-*** 6482,6488 ****
- int
- im_get_status(void)
- {
-! # if defined(FEAT_MBYTE) && defined(FEAT_EVAL)
- if (USE_IMSTATUSFUNC)
- return call_imstatusfunc();
- # endif
---- 6467,6473 ----
- int
- im_get_status(void)
- {
-! # if defined(FEAT_EVAL)
- if (USE_IMSTATUSFUNC)
- return call_imstatusfunc();
- # endif
-***************
-*** 6492,6498 ****
- void
- im_set_active(int active_arg)
- {
-! # if defined(FEAT_MBYTE) && defined(FEAT_EVAL)
- int active = !p_imdisable && active_arg;
-
- if (USE_IMACTIVATEFUNC && active != im_get_status())
---- 6477,6483 ----
- void
- im_set_active(int active_arg)
- {
-! # if defined(FEAT_EVAL)
- int active = !p_imdisable && active_arg;
-
- if (USE_IMACTIVATEFUNC && active != im_get_status())
-***************
-*** 6513,6519 ****
-
- #endif /* FEAT_XIM */
-
-- #if defined(FEAT_MBYTE) || defined(PROTO)
-
- /*
- * Setup "vcp" for conversion from "from" to "to".
---- 6498,6503 ----
-***************
-*** 6548,6557 ****
- int to_is_utf8;
-
- /* Reset to no conversion. */
-! # ifdef USE_ICONV
- if (vcp->vc_type == CONV_ICONV && vcp->vc_fd != (iconv_t)-1)
- iconv_close(vcp->vc_fd);
-! # endif
- vcp->vc_type = CONV_NONE;
- vcp->vc_factor = 1;
- vcp->vc_fail = FALSE;
---- 6532,6541 ----
- int to_is_utf8;
-
- /* Reset to no conversion. */
-! #ifdef USE_ICONV
- if (vcp->vc_type == CONV_ICONV && vcp->vc_fd != (iconv_t)-1)
- iconv_close(vcp->vc_fd);
-! #endif
- vcp->vc_type = CONV_NONE;
- vcp->vc_factor = 1;
- vcp->vc_fail = FALSE;
-***************
-*** 6624,6630 ****
- vcp->vc_type = CONV_UTF8_MAC;
- }
- #endif
-! # ifdef USE_ICONV
- else
- {
- /* Use iconv() for conversion. */
---- 6608,6614 ----
- vcp->vc_type = CONV_UTF8_MAC;
- }
- #endif
-! #ifdef USE_ICONV
- else
- {
- /* Use iconv() for conversion. */
-***************
-*** 6637,6643 ****
- vcp->vc_factor = 4; /* could be longer too... */
- }
- }
-! # endif
- if (vcp->vc_type == CONV_NONE)
- return FAIL;
-
---- 6621,6627 ----
- vcp->vc_factor = 4; /* could be longer too... */
- }
- }
-! #endif
- if (vcp->vc_type == CONV_NONE)
- return FAIL;
-
-***************
-*** 6958,6961 ****
-
- return retval;
- }
-- #endif
---- 6942,6944 ----
-*** ../vim-8.1.0805/src/memline.c 2019-01-19 17:43:03.417449145 +0100
---- src/memline.c 2019-01-24 15:21:52.472269571 +0100
-***************
-*** 240,248 ****
- static void ml_upd_block0(buf_T *buf, upd_block0_T what);
- static void set_b0_fname(ZERO_BL *, buf_T *buf);
- static void set_b0_dir_flag(ZERO_BL *b0p, buf_T *buf);
-- #ifdef FEAT_MBYTE
- static void add_b0_fenc(ZERO_BL *b0p, buf_T *buf);
-- #endif
- static time_t swapfile_info(char_u *);
- static int recov_file_names(char_u **, char_u *, int prepend_dot);
- static int ml_append_int(buf_T *, linenr_T, char_u *, colnr_T, int, int);
---- 240,246 ----
-***************
-*** 1033,1042 ****
- }
- }
-
-- #ifdef FEAT_MBYTE
- /* Also add the 'fileencoding' if there is room. */
- add_b0_fenc(b0p, curbuf);
-- #endif
- }
-
- /*
---- 1031,1038 ----
-***************
-*** 1054,1060 ****
- b0p->b0_flags &= ~B0_SAME_DIR;
- }
-
-- #ifdef FEAT_MBYTE
- /*
- * When there is room, add the 'fileencoding' to block zero.
- */
---- 1050,1055 ----
-***************
-*** 1066,1078 ****
- int n;
- int size = B0_FNAME_SIZE_NOCRYPT;
-
-! # ifdef FEAT_CRYPT
- /* Without encryption use the same offset as in Vim 7.2 to be compatible.
- * With encryption it's OK to move elsewhere, the swap file is not
- * compatible anyway. */
- if (*buf->b_p_key != NUL)
- size = B0_FNAME_SIZE_CRYPT;
-! # endif
-
- n = (int)STRLEN(buf->b_p_fenc);
- if ((int)STRLEN(b0p->b0_fname) + n + 1 > size)
---- 1061,1073 ----
- int n;
- int size = B0_FNAME_SIZE_NOCRYPT;
-
-! #ifdef FEAT_CRYPT
- /* Without encryption use the same offset as in Vim 7.2 to be compatible.
- * With encryption it's OK to move elsewhere, the swap file is not
- * compatible anyway. */
- if (*buf->b_p_key != NUL)
- size = B0_FNAME_SIZE_CRYPT;
-! #endif
-
- n = (int)STRLEN(buf->b_p_fenc);
- if ((int)STRLEN(b0p->b0_fname) + n + 1 > size)
-***************
-*** 1085,1091 ****
- b0p->b0_flags |= B0_HAS_FENC;
- }
- }
-- #endif
-
-
- /*
---- 1080,1085 ----
-***************
-*** 5103,5111 ****
- b0p->b0_dirty = buf->b_changed ? B0_DIRTY : 0;
- b0p->b0_flags = (b0p->b0_flags & ~B0_FF_MASK)
- | (get_fileformat(buf) + 1);
-- #ifdef FEAT_MBYTE
- add_b0_fenc(b0p, buf);
-- #endif
- hp->bh_flags |= BH_DIRTY;
- mf_sync(buf->b_ml.ml_mfp, MFS_ZERO);
- break;
---- 5097,5103 ----
-***************
-*** 5682,5691 ****
- }
- check_cursor();
-
-- # ifdef FEAT_MBYTE
- /* Make sure the cursor is on the first byte of a multi-byte char. */
- if (has_mbyte)
- mb_adjust_cursor();
-- # endif
- }
- #endif
---- 5674,5681 ----
-*** ../vim-8.1.0805/src/message.c 2019-01-20 15:30:36.885328746 +0100
---- src/message.c 2019-01-24 15:25:35.298805375 +0100
-***************
-*** 219,225 ****
- room = (int)(Rows - msg_row - 1) * Columns + sc_col - 1;
- if (len > room && room > 0)
- {
-- #ifdef FEAT_MBYTE
- if (enc_utf8)
- /* may have up to 18 bytes per cell (6 per char, up to two
- * composing chars) */
---- 219,224 ----
-***************
-*** 228,234 ****
- /* may have up to 2 bytes per cell for euc-jp */
- len = (room + 2) * 2;
- else
-- #endif
- len = room + 2;
- buf = alloc(len);
- if (buf != NULL)
---- 227,232 ----
-***************
-*** 274,280 ****
- break;
- len += n;
- buf[e] = s[e];
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- for (n = (*mb_ptr2len)(s + e); --n > 0; )
- {
---- 272,277 ----
-***************
-*** 282,293 ****
- break;
- buf[e] = s[e];
- }
-- #endif
- }
-
- /* Last part: End of the string. */
- i = e;
-- #ifdef FEAT_MBYTE
- if (enc_dbcs != 0)
- {
- /* For DBCS going backwards in a string is slow, but
---- 279,288 ----
-***************
-*** 317,323 ****
- }
- }
- else
-- #endif
- {
- for (i = (int)STRLEN(s); len + (n = ptr2cells(s + i - 1)) <= room; --i)
- len += n;
---- 312,317 ----
-***************
-*** 852,858 ****
- if ((force || (shortmess(SHM_TRUNC) && !exmode_active))
- && (n = (int)STRLEN(s) - room) > 0)
- {
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- {
- int size = vim_strsize(s);
---- 846,851 ----
-***************
-*** 868,874 ****
- }
- --n;
- }
-- #endif
- s += n;
- *s = '<';
- }
---- 861,866 ----
-***************
-*** 1388,1398 ****
- void
- msg_putchar_attr(int c, int attr)
- {
-- #ifdef FEAT_MBYTE
- char_u buf[MB_MAXBYTES + 1];
-- #else
-- char_u buf[4];
-- #endif
-
- if (IS_SPECIAL(c))
- {
---- 1380,1386 ----
-***************
-*** 1402,1415 ****
- buf[3] = NUL;
- }
- else
-- {
-- #ifdef FEAT_MBYTE
- buf[(*mb_char2bytes)(c, buf)] = NUL;
-- #else
-- buf[0] = c;
-- buf[1] = NUL;
-- #endif
-- }
- msg_puts_attr((char *)buf, attr);
- }
-
---- 1390,1396 ----
-***************
-*** 1478,1484 ****
- char_u *
- msg_outtrans_one(char_u *p, int attr)
- {
-- #ifdef FEAT_MBYTE
- int l;
-
- if (has_mbyte && (l = (*mb_ptr2len)(p)) > 1)
---- 1459,1464 ----
-***************
-*** 1486,1492 ****
- msg_outtrans_len_attr(p, l, attr);
- return p + l;
- }
-- #endif
- msg_puts_attr((char *)transchar_byte(*p), attr);
- return p + 1;
- }
---- 1466,1471 ----
-***************
-*** 1498,1507 ****
- char_u *str = msgstr;
- char_u *plain_start = msgstr;
- char_u *s;
-- #ifdef FEAT_MBYTE
- int mb_l;
- int c;
-- #endif
-
- /* if MSG_HIST flag set, add message to history */
- if (attr & MSG_HIST)
---- 1477,1484 ----
-***************
-*** 1510,1521 ****
- attr &= ~MSG_HIST;
- }
-
-- #ifdef FEAT_MBYTE
- /* If the string starts with a composing character first draw a space on
- * which the composing char can be drawn. */
- if (enc_utf8 && utf_iscomposing(utf_ptr2char(msgstr)))
- msg_puts_attr(" ", attr);
-- #endif
-
- /*
- * Go over the string. Special characters are translated and printed.
---- 1487,1496 ----
-***************
-*** 1523,1529 ****
- */
- while (--len >= 0)
- {
-- #ifdef FEAT_MBYTE
- if (enc_utf8)
- /* Don't include composing chars after the end. */
- mb_l = utfc_ptr2len_len(str, len + 1);
---- 1498,1503 ----
-***************
-*** 1553,1559 ****
- str += mb_l;
- }
- else
-- #endif
- {
- s = transchar_byte(*str);
- if (s[1] != NUL)
---- 1527,1532 ----
-***************
-*** 1639,1648 ****
- len = vim_strsize((char_u *)text);
- /* Highlight special keys */
- msg_puts_attr(text, len > 1
-! #ifdef FEAT_MBYTE
-! && (*mb_ptr2len)((char_u *)text) <= 1
-! #endif
-! ? attr : 0);
- retval += len;
- }
- return retval;
---- 1612,1618 ----
- len = vim_strsize((char_u *)text);
- /* Highlight special keys */
- msg_puts_attr(text, len > 1
-! && (*mb_ptr2len)((char_u *)text) <= 1 ? attr : 0);
- retval += len;
- }
- return retval;
-***************
-*** 1685,1691 ****
- int modifiers = 0;
- int special = FALSE;
-
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- {
- char_u *p;
---- 1655,1660 ----
-***************
-*** 1696,1702 ****
- if (p != NULL)
- return p;
- }
-- #endif
-
- c = *str;
- if (c == K_SPECIAL && str[1] != NUL && str[2] != NUL)
---- 1665,1670 ----
-***************
-*** 1716,1722 ****
- special = TRUE;
- }
-
-- #ifdef FEAT_MBYTE
- if (has_mbyte && !IS_SPECIAL(c))
- {
- int len = (*mb_ptr2len)(str);
---- 1684,1689 ----
-***************
-*** 1734,1740 ****
- *sp = str + len;
- }
- else
-- #endif
- *sp = str + 1;
-
- /* Make unprintable characters in <> form, also <M-Space> and <Tab>.
---- 1701,1706 ----
-***************
-*** 1778,1787 ****
- int n;
- int attr = 0;
- char_u *trail = NULL;
-- #ifdef FEAT_MBYTE
- int l;
- char_u buf[MB_MAXBYTES + 1];
-- #endif
-
- if (curwin->w_p_list)
- list = TRUE;
---- 1744,1751 ----
-***************
-*** 1811,1817 ****
- else
- c = *p_extra++;
- }
-- #ifdef FEAT_MBYTE
- else if (has_mbyte && (l = (*mb_ptr2len)(s)) > 1)
- {
- col += (*mb_ptr2cells)(s);
---- 1775,1780 ----
-***************
-*** 1831,1837 ****
- s += l;
- continue;
- }
-- #endif
- else
- {
- attr = 0;
---- 1794,1799 ----
-***************
-*** 1906,1912 ****
- msg_clr_eos();
- }
-
-- #ifdef FEAT_MBYTE
- /*
- * Use screen_puts() to output one multi-byte character.
- * Return the pointer "s" advanced to the next character.
---- 1868,1873 ----
-***************
-*** 1952,1958 ****
- }
- return s + l;
- }
-- #endif
-
- /*
- * Output a string to the screen at position msg_row, msg_col.
---- 1913,1918 ----
-***************
-*** 2069,2078 ****
- char_u *s = str;
- char_u *t_s = str; /* string from "t_s" to "s" is still todo */
- int t_col = 0; /* screen cells todo, 0 when "t_s" not used */
-- #ifdef FEAT_MBYTE
- int l;
- int cw;
-- #endif
- char_u *sb_str = str;
- int sb_col = msg_col;
- int wrap;
---- 2029,2036 ----
-***************
-*** 2091,2110 ****
- cmdmsg_rl
- ? (
- msg_col <= 1
-! || (*s == TAB && msg_col <= 7)
-! # ifdef FEAT_MBYTE
-! || (has_mbyte && (*mb_ptr2cells)(s) > 1 && msg_col <= 2)
-! # endif
-! )
- :
- #endif
- (msg_col + t_col >= Columns - 1
- || (*s == TAB && msg_col + t_col >= ((Columns - 1) & ~7))
-- # ifdef FEAT_MBYTE
- || (has_mbyte && (*mb_ptr2cells)(s) > 1
-! && msg_col + t_col >= Columns - 2)
-! # endif
-! ))))
- {
- /*
- * The screen is scrolled up when at the last row (some terminals
---- 2049,2062 ----
- cmdmsg_rl
- ? (
- msg_col <= 1
-! || (*s == TAB && msg_col <= 7)
-! || (has_mbyte && (*mb_ptr2cells)(s) > 1 && msg_col <= 2))
- :
- #endif
- (msg_col + t_col >= Columns - 1
- || (*s == TAB && msg_col + t_col >= ((Columns - 1) & ~7))
- || (has_mbyte && (*mb_ptr2cells)(s) > 1
-! && msg_col + t_col >= Columns - 2)))))
- {
- /*
- * The screen is scrolled up when at the last row (some terminals
-***************
-*** 2133,2139 ****
- #endif
- )
- {
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- {
- if (enc_utf8 && maxlen >= 0)
---- 2085,2090 ----
-***************
-*** 2144,2150 ****
- s = screen_puts_mbyte(s, l, attr);
- }
- else
-- #endif
- msg_screen_putchar(*s++, attr);
- did_last_char = TRUE;
- }
---- 2095,2100 ----
-***************
-*** 2188,2198 ****
-
- wrap = *s == '\n'
- || msg_col + t_col >= Columns
-- #ifdef FEAT_MBYTE
- || (has_mbyte && (*mb_ptr2cells)(s) > 1
-! && msg_col + t_col >= Columns - 1)
-! #endif
-! ;
- if (t_col > 0 && (wrap || *s == '\r' || *s == '\b'
- || *s == '\t' || *s == BELL))
- /* output any postponed text */
---- 2138,2145 ----
-
- wrap = *s == '\n'
- || msg_col + t_col >= Columns
- || (has_mbyte && (*mb_ptr2cells)(s) > 1
-! && msg_col + t_col >= Columns - 1);
- if (t_col > 0 && (wrap || *s == '\r' || *s == '\b'
- || *s == '\t' || *s == BELL))
- /* output any postponed text */
-***************
-*** 2233,2239 ****
- vim_beep(BO_SH);
- else
- {
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- {
- cw = (*mb_ptr2cells)(s);
---- 2180,2185 ----
-***************
-*** 2248,2289 ****
- cw = 1;
- l = 1;
- }
-! #endif
- /* When drawing from right to left or when a double-wide character
- * doesn't fit, draw a single character here. Otherwise collect
- * characters and draw them all at once later. */
-- #if defined(FEAT_RIGHTLEFT) || defined(FEAT_MBYTE)
- if (
- # ifdef FEAT_RIGHTLEFT
-! cmdmsg_rl
-! # ifdef FEAT_MBYTE
-! ||
-! # endif
- # endif
-! # ifdef FEAT_MBYTE
-! (cw > 1 && msg_col + t_col >= Columns - 1)
-! # endif
-! )
- {
-- # ifdef FEAT_MBYTE
- if (l > 1)
- s = screen_puts_mbyte(s, l, attr) - 1;
- else
-- # endif
- msg_screen_putchar(*s, attr);
- }
- else
-- #endif
- {
- /* postpone this character until later */
- if (t_col == 0)
- t_s = s;
-- #ifdef FEAT_MBYTE
- t_col += cw;
- s += l - 1;
-- #else
-- ++t_col;
-- #endif
- }
- }
- ++s;
---- 2194,2221 ----
- cw = 1;
- l = 1;
- }
-!
- /* When drawing from right to left or when a double-wide character
- * doesn't fit, draw a single character here. Otherwise collect
- * characters and draw them all at once later. */
- if (
- # ifdef FEAT_RIGHTLEFT
-! cmdmsg_rl ||
- # endif
-! (cw > 1 && msg_col + t_col >= Columns - 1))
- {
- if (l > 1)
- s = screen_puts_mbyte(s, l, attr) - 1;
- else
- msg_screen_putchar(*s, attr);
- }
- else
- {
- /* postpone this character until later */
- if (t_col == 0)
- t_s = s;
- t_col += cw;
- s += l - 1;
- }
- }
- ++s;
-***************
-*** 2601,2612 ****
- screen_puts_len(t_s, (int)(s - t_s), msg_row, msg_col, attr);
- msg_col += *t_col;
- *t_col = 0;
-- #ifdef FEAT_MBYTE
- /* If the string starts with a composing character don't increment the
- * column position for it. */
- if (enc_utf8 && utf_iscomposing(utf_ptr2char(t_s)))
- --msg_col;
-- #endif
- if (msg_col >= Columns)
- {
- msg_col = 0;
---- 2533,2542 ----
-***************
-*** 2643,2656 ****
- char_u buf[4];
- char_u *p;
- #ifdef WIN3264
-! # if defined(FEAT_MBYTE) && !defined(FEAT_GUI_MSWIN)
- char_u *ccp = NULL;
-
- # endif
- if (!(silent_mode && p_verbose == 0))
- mch_settmode(TMODE_COOK); /* handle '\r' and '\n' correctly */
-
-! # if defined(FEAT_MBYTE) && !defined(FEAT_GUI_MSWIN)
- if (enc_codepage >= 0 && (int)GetConsoleCP() != enc_codepage)
- {
- int inlen = (int)STRLEN(str);
---- 2573,2586 ----
- char_u buf[4];
- char_u *p;
- #ifdef WIN3264
-! # if !defined(FEAT_GUI_MSWIN)
- char_u *ccp = NULL;
-
- # endif
- if (!(silent_mode && p_verbose == 0))
- mch_settmode(TMODE_COOK); /* handle '\r' and '\n' correctly */
-
-! # if !defined(FEAT_GUI_MSWIN)
- if (enc_codepage >= 0 && (int)GetConsoleCP() != enc_codepage)
- {
- int inlen = (int)STRLEN(str);
-***************
-*** 2708,2714 ****
- msg_didout = TRUE; /* assume that line is not empty */
-
- #ifdef WIN3264
-! # if defined(FEAT_MBYTE) && !defined(FEAT_GUI_MSWIN)
- vim_free(ccp);
- # endif
- if (!(silent_mode && p_verbose == 0))
---- 2638,2644 ----
- msg_didout = TRUE; /* assume that line is not empty */
-
- #ifdef WIN3264
-! # if !defined(FEAT_GUI_MSWIN)
- vim_free(ccp);
- # endif
- if (!(silent_mode && p_verbose == 0))
-***************
-*** 3646,3652 ****
- retval = 1;
- for (i = 0; hotkeys[i]; ++i)
- {
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- {
- if ((*mb_ptr2char)(hotkeys + i) == c)
---- 3576,3581 ----
-***************
-*** 3654,3660 ****
- i += (*mb_ptr2len)(hotkeys + i) - 1;
- }
- else
-- #endif
- if (hotkeys[i] == c)
- break;
- ++retval;
---- 3583,3588 ----
-***************
-*** 3690,3696 ****
- char_u *to,
- int lowercase) /* make character lower case */
- {
-- #ifdef FEAT_MBYTE
- int len;
- int c;
-
---- 3618,3623 ----
-***************
-*** 3709,3715 ****
- }
- }
- else
-- #endif
- {
- if (lowercase)
- *to = (char_u)TOLOWER_LOC(*from);
---- 3636,3641 ----
-***************
-*** 3735,3745 ****
- int dfltbutton)
- {
- int len = 0;
-! #ifdef FEAT_MBYTE
-! # define HOTK_LEN (has_mbyte ? MB_MAXBYTES : 1)
-! #else
-! # define HOTK_LEN 1
-! #endif
- int lenhotkey = HOTK_LEN; /* count first button */
- char_u *hotk = NULL;
- char_u *msgp = NULL;
---- 3661,3667 ----
- int dfltbutton)
- {
- int len = 0;
-! #define HOTK_LEN (has_mbyte ? MB_MAXBYTES : 1)
- int lenhotkey = HOTK_LEN; /* count first button */
- char_u *hotk = NULL;
- char_u *msgp = NULL;
-***************
-*** 3771,3781 ****
- *msgp++ = ' '; /* '\n' -> ', ' */
-
- /* advance to next hotkey and set default hotkey */
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- hotkp += STRLEN(hotkp);
- else
-- #endif
- ++hotkp;
- hotkp[copy_char(r + 1, hotkp, TRUE)] = NUL;
- if (dfltbutton)
---- 3693,3701 ----
-***************
-*** 4583,4589 ****
- str_arg_l = (q == NULL) ? precision
- : (size_t)(q - str_arg);
- }
-- # ifdef FEAT_MBYTE
- if (fmt_spec == 'S')
- {
- if (min_field_width != 0)
---- 4503,4508 ----
-***************
-*** 4600,4606 ****
- str_arg_l = precision = p1 - (char_u *)str_arg;
- }
- }
-- # endif
- break;
-
- default:
---- 4519,4524 ----
-*** ../vim-8.1.0805/src/misc1.c 2019-01-20 15:30:36.889328720 +0100
---- src/misc1.c 2019-01-24 15:29:11.881374564 +0100
-***************
-*** 843,853 ****
- p = saved_line + curwin->w_cursor.col;
- while (*p != NUL)
- {
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- p += replace_push_mb(p);
- else
-- #endif
- replace_push(*p++);
- }
- saved_line[curwin->w_cursor.col] = NUL;
---- 843,851 ----
-***************
-*** 1296,1302 ****
- ;
- ++p;
-
-- #ifdef FEAT_MBYTE
- /* Compute the length of the replaced characters in
- * screen characters, not bytes. */
- {
---- 1294,1299 ----
-***************
-*** 1317,1328 ****
- (size_t)((leader + lead_len) - endp));
- lead_len += l;
- }
-- #else
-- if (p < leader + lead_repl_len)
-- p = leader;
-- else
-- p -= lead_repl_len;
-- #endif
- mch_memmove(p, lead_repl, (size_t)lead_repl_len);
- if (p + lead_repl_len > leader + lead_len)
- p[lead_repl_len] = NUL;
---- 1314,1319 ----
-***************
-*** 1330,1336 ****
- /* blank-out any other chars from the old leader. */
- while (--p >= leader)
- {
-- #ifdef FEAT_MBYTE
- int l = mb_head_off(leader, p);
-
- if (l > 1)
---- 1321,1326 ----
-***************
-*** 1346,1361 ****
- lead_len -= l;
- *p = ' ';
- }
-! else
-! #endif
-! if (!VIM_ISWHITE(*p))
- *p = ' ';
- }
- }
- else /* left adjusted leader */
- {
- p = skipwhite(leader);
-! #ifdef FEAT_MBYTE
- /* Compute the length of the replaced characters in
- * screen characters, not bytes. Move the part that is
- * not to be overwritten. */
---- 1336,1349 ----
- lead_len -= l;
- *p = ' ';
- }
-! else if (!VIM_ISWHITE(*p))
- *p = ' ';
- }
- }
- else /* left adjusted leader */
- {
- p = skipwhite(leader);
-!
- /* Compute the length of the replaced characters in
- * screen characters, not bytes. Move the part that is
- * not to be overwritten. */
-***************
-*** 1378,1384 ****
- lead_len += lead_repl_len - i;
- }
- }
-- #endif
- mch_memmove(p, lead_repl, (size_t)lead_repl_len);
-
- /* Replace any remaining non-white chars in the old
---- 1366,1371 ----
-***************
-*** 1396,1402 ****
- }
- else
- {
-- #ifdef FEAT_MBYTE
- int l = (*mb_ptr2len)(p);
-
- if (l > 1)
---- 1383,1388 ----
-***************
-*** 1412,1418 ****
- (leader + lead_len) - p);
- lead_len -= l - 1;
- }
-- #endif
- *p = ' ';
- }
- }
---- 1398,1403 ----
-***************
-*** 1537,1547 ****
- if (curbuf->b_p_ai || (flags & OPENLINE_DELSPACES))
- {
- while ((*p_extra == ' ' || *p_extra == '\t')
-- #ifdef FEAT_MBYTE
- && (!enc_utf8
-! || !utf_iscomposing(utf_ptr2char(p_extra + 1)))
-! #endif
-! )
- {
- if (REPLACE_NORMAL(State))
- replace_push(*p_extra);
---- 1522,1529 ----
- if (curbuf->b_p_ai || (flags & OPENLINE_DELSPACES))
- {
- while ((*p_extra == ' ' || *p_extra == '\t')
- && (!enc_utf8
-! || !utf_iscomposing(utf_ptr2char(p_extra + 1))))
- {
- if (REPLACE_NORMAL(State))
- replace_push(*p_extra);
-***************
-*** 2320,2326 ****
- ins_bytes_len(char_u *p, int len)
- {
- int i;
-- #ifdef FEAT_MBYTE
- int n;
-
- if (has_mbyte)
---- 2302,2307 ----
-***************
-*** 2334,2340 ****
- ins_char_bytes(p + i, n);
- }
- else
-- #endif
- for (i = 0; i < len; ++i)
- ins_char(p[i]);
- }
---- 2315,2320 ----
-***************
-*** 2350,2367 ****
- ins_char(int c)
- {
- char_u buf[MB_MAXBYTES + 1];
-! int n = 1;
-!
-! #ifdef FEAT_MBYTE
-! n = (*mb_char2bytes)(c, buf);
-
- /* When "c" is 0x100, 0x200, etc. we don't want to insert a NUL byte.
- * Happens for CTRL-Vu9900. */
- if (buf[0] == 0)
- buf[0] = '\n';
-- #else
-- buf[0] = c;
-- #endif
-
- ins_char_bytes(buf, n);
- }
---- 2330,2341 ----
- ins_char(int c)
- {
- char_u buf[MB_MAXBYTES + 1];
-! int n = (*mb_char2bytes)(c, buf);
-
- /* When "c" is 0x100, 0x200, etc. we don't want to insert a NUL byte.
- * Happens for CTRL-Vu9900. */
- if (buf[0] == 0)
- buf[0] = '\n';
-
- ins_char_bytes(buf, n);
- }
-***************
-*** 2401,2409 ****
- colnr_T new_vcol = 0; /* init for GCC */
- colnr_T vcol;
- int old_list;
-- #ifndef FEAT_MBYTE
-- char_u cbuf[2];
-- #endif
-
- /*
- * Disable 'list' temporarily, unless 'cpo' contains the 'L' flag.
---- 2375,2380 ----
-***************
-*** 2421,2433 ****
- * cells. May result in adding spaces to fill a gap.
- */
- getvcol(curwin, &curwin->w_cursor, NULL, &vcol, NULL);
-- #ifndef FEAT_MBYTE
-- cbuf[0] = c;
-- cbuf[1] = NUL;
-- new_vcol = vcol + chartabsize(cbuf, vcol);
-- #else
- new_vcol = vcol + chartabsize(buf, vcol);
-- #endif
- while (oldp[col + oldlen] != NUL && vcol < new_vcol)
- {
- vcol += chartabsize(oldp + col + oldlen, vcol);
---- 2392,2398 ----
-***************
-*** 2435,2445 ****
- * position. */
- if (vcol > new_vcol && oldp[col + oldlen] == TAB)
- break;
-- #ifdef FEAT_MBYTE
- oldlen += (*mb_ptr2len)(oldp + col + oldlen);
-- #else
-- ++oldlen;
-- #endif
- /* Deleted a bit too much, insert spaces. */
- if (vcol > new_vcol)
- newlen += vcol - new_vcol;
---- 2400,2406 ----
-***************
-*** 2449,2459 ****
- else if (oldp[col] != NUL)
- {
- /* normal replace */
-- #ifdef FEAT_MBYTE
- oldlen = (*mb_ptr2len)(oldp + col);
-- #else
-- oldlen = 1;
-- #endif
- }
-
-
---- 2410,2416 ----
-***************
-*** 2464,2474 ****
- replace_push(NUL);
- for (i = 0; i < oldlen; ++i)
- {
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- i += replace_push_mb(oldp + col + i) - 1;
- else
-- #endif
- replace_push(oldp[col + i]);
- }
- }
---- 2421,2429 ----
-***************
-*** 2488,2500 ****
- (size_t)(linelen - col - oldlen));
-
- /* Insert or overwrite the new character. */
-- #ifdef FEAT_MBYTE
- mch_memmove(p, buf, charlen);
- i = charlen;
-- #else
-- *p = c;
-- i = 1;
-- #endif
-
- /* Fill with spaces when necessary. */
- while (i < newlen)
---- 2443,2450 ----
-***************
-*** 2517,2527 ****
- #endif
- )
- {
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- showmatch(mb_ptr2char(buf));
- else
-- #endif
- showmatch(c);
- }
-
---- 2467,2475 ----
-***************
-*** 2530,2540 ****
- #endif
- {
- /* Normal insert: move cursor right */
-- #ifdef FEAT_MBYTE
- curwin->w_cursor.col += charlen;
-- #else
-- ++curwin->w_cursor.col;
-- #endif
- }
- /*
- * TODO: should try to update w_row here, to avoid recomputing it later.
---- 2478,2484 ----
-***************
-*** 2586,2592 ****
- int
- del_char(int fixpos)
- {
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- {
- /* Make sure the cursor is at the start of a character. */
---- 2530,2535 ----
-***************
-*** 2595,2605 ****
- return FAIL;
- return del_chars(1L, fixpos);
- }
-- #endif
- return del_bytes(1L, fixpos, TRUE);
- }
-
-- #if defined(FEAT_MBYTE) || defined(PROTO)
- /*
- * Like del_bytes(), but delete characters instead of bytes.
- */
---- 2538,2546 ----
-***************
-*** 2620,2626 ****
- }
- return del_bytes(bytes, fixpos, TRUE);
- }
-- #endif
-
- /*
- * Delete "count" bytes under the cursor.
---- 2561,2566 ----
-***************
-*** 2662,2668 ****
- return FAIL;
- }
-
-- #ifdef FEAT_MBYTE
- /* If 'delcombine' is set and deleting (less than) one character, only
- * delete the last combining character. */
- if (p_deco && use_delcombine && enc_utf8
---- 2602,2607 ----
-***************
-*** 2685,2691 ****
- fixpos = 0;
- }
- }
-- #endif
-
- /*
- * When count is too big, reduce it.
---- 2624,2629 ----
-***************
-*** 2708,2718 ****
- #ifdef FEAT_VIRTUALEDIT
- curwin->w_cursor.coladd = 0;
- #endif
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- curwin->w_cursor.col -=
- (*mb_head_off)(oldp, oldp + curwin->w_cursor.col);
-- #endif
- }
- count = oldlen - col;
- movelen = 1;
---- 2646,2654 ----
-***************
-*** 2847,2866 ****
- if (pos->col == MAXCOL)
- return NUL;
- ptr = ml_get_pos(pos);
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- return (*mb_ptr2char)(ptr);
-- #endif
- return (int)*ptr;
- }
-
- int
- gchar_cursor(void)
- {
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- return (*mb_ptr2char)(ml_get_cursor());
-- #endif
- return (int)*ml_get_cursor();
- }
-
---- 2783,2798 ----
-***************
-*** 3681,3687 ****
- }
- break;
- }
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- {
- if (MB_BYTE2LEN(n) > len)
---- 3613,3618 ----
-***************
-*** 3689,3695 ****
- buf[len >= buflen ? buflen - 1 : len] = NUL;
- n = (*mb_ptr2char)(buf);
- }
-- #endif
- #ifdef UNIX
- if (n == intr_char)
- n = ESC;
---- 3620,3625 ----
-***************
-*** 4023,4029 ****
- if (var != NULL && *var == NUL) /* empty is same as not set */
- var = NULL;
-
-- # ifdef FEAT_MBYTE
- if (enc_utf8 && var != NULL)
- {
- int len;
---- 3953,3958 ----
-***************
-*** 4038,4044 ****
- return;
- }
- }
-- # endif
-
- /*
- * Default home dir is C:/
---- 3967,3972 ----
-***************
-*** 4437,4443 ****
-
- if (p != NULL)
- {
-! #if defined(FEAT_MBYTE) && defined(WIN3264)
- if (enc_utf8)
- {
- int len;
---- 4365,4371 ----
-
- if (p != NULL)
- {
-! #if defined(WIN3264)
- if (enc_utf8)
- {
- int len;
-***************
-*** 4481,4487 ****
- else
- p = mch_getenv((char_u *)"VIM");
-
-! #if defined(FEAT_MBYTE) && defined(WIN3264)
- if (enc_utf8)
- {
- int len;
---- 4409,4415 ----
- else
- p = mch_getenv((char_u *)"VIM");
-
-! #if defined(WIN3264)
- if (enc_utf8)
- {
- int len;
-***************
-*** 5332,5338 ****
- *d++ = *s; /* copy next char */
- if (*s != '~' && *s != '.') /* and leading "~" and "." */
- skip = TRUE;
-- # ifdef FEAT_MBYTE
- if (has_mbyte)
- {
- int l = mb_ptr2len(s);
---- 5260,5265 ----
-***************
-*** 5340,5346 ****
- while (--l > 0)
- *d++ = *++s;
- }
-- # endif
- }
- }
- }
---- 5267,5272 ----
-***************
-*** 10155,10164 ****
- static int stardepth = 0; /* depth for "**" expansion */
- WIN32_FIND_DATA fb;
- HANDLE hFind = (HANDLE)0;
-- # ifdef FEAT_MBYTE
- WIN32_FIND_DATAW wfb;
- WCHAR *wn = NULL; /* UCS-2 name, NULL when not used. */
-- # endif
- char_u *matchname;
- int ok;
-
---- 10081,10088 ----
-***************
-*** 10170,10177 ****
- return 0;
- }
-
-! /* Make room for file name. When doing encoding conversion the actual
-! * length may be quite a bit longer, thus use the maximum possible length. */
- buf = alloc((int)MAXPATHL);
- if (buf == NULL)
- return 0;
---- 10094,10101 ----
- return 0;
- }
-
-! // Make room for file name. When doing encoding conversion the actual
-! // length may be quite a bit longer, thus use the maximum possible length.
- buf = alloc((int)MAXPATHL);
- if (buf == NULL)
- return 0;
-***************
-*** 10199,10205 ****
- else if (path_end >= path + wildoff
- && vim_strchr((char_u *)"*?[~", *path_end) != NULL)
- e = p;
-- # ifdef FEAT_MBYTE
- if (has_mbyte)
- {
- len = (*mb_ptr2len)(path_end);
---- 10123,10128 ----
-***************
-*** 10208,10214 ****
- path_end += len;
- }
- else
-- # endif
- *p++ = *path_end++;
- }
- e = p;
---- 10131,10136 ----
-***************
-*** 10269,10275 ****
-
- /* Scan all files in the directory with "dir/ *.*" */
- STRCPY(s, "*.*");
-- # ifdef FEAT_MBYTE
- if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
- {
- /* The active codepage differs from 'encoding'. Attempt using the
---- 10191,10196 ----
-***************
-*** 10286,10302 ****
- }
-
- if (wn == NULL)
-- # endif
- hFind = FindFirstFile((LPCSTR)buf, &fb);
- ok = (hFind != INVALID_HANDLE_VALUE);
-
- while (ok)
- {
-- # ifdef FEAT_MBYTE
- if (wn != NULL)
- p = utf16_to_enc(wfb.cFileName, NULL); /* p is allocated here */
- else
-- # endif
- p = (char_u *)fb.cFileName;
- /* Ignore entries starting with a dot, unless when asked for. Accept
- * all entries found with "matchname". */
---- 10207,10220 ----
-***************
-*** 10341,10354 ****
- }
- }
-
-- # ifdef FEAT_MBYTE
- if (wn != NULL)
- {
- vim_free(p);
- ok = FindNextFileW(hFind, &wfb);
- }
- else
-- # endif
- ok = FindNextFile(hFind, &fb);
-
- /* If no more matches and no match was used, try expanding the name
---- 10259,10270 ----
-***************
-*** 10357,10363 ****
- {
- STRCPY(s, matchname);
- FindClose(hFind);
-- # ifdef FEAT_MBYTE
- if (wn != NULL)
- {
- vim_free(wn);
---- 10273,10278 ----
-***************
-*** 10366,10372 ****
- hFind = FindFirstFileW(wn, &wfb);
- }
- if (wn == NULL)
-- # endif
- hFind = FindFirstFile((LPCSTR)buf, &fb);
- ok = (hFind != INVALID_HANDLE_VALUE);
- VIM_CLEAR(matchname);
---- 10281,10286 ----
-***************
-*** 10374,10382 ****
- }
-
- FindClose(hFind);
-- # ifdef FEAT_MBYTE
- vim_free(wn);
-- # endif
- vim_free(buf);
- vim_regfree(regmatch.regprog);
- vim_free(matchname);
---- 10288,10294 ----
-***************
-*** 10480,10486 ****
- || (!p_fic && (flags & EW_ICASE)
- && isalpha(PTR2CHAR(path_end)))))
- e = p;
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- {
- len = (*mb_ptr2len)(path_end);
---- 10392,10397 ----
-***************
-*** 10489,10495 ****
- path_end += len;
- }
- else
-- #endif
- *p++ = *path_end++;
- }
- e = p;
---- 10400,10405 ----
-*** ../vim-8.1.0805/src/misc2.c 2019-01-20 15:30:36.889328720 +0100
---- src/misc2.c 2019-01-24 15:31:04.464628741 +0100
-***************
-*** 73,79 ****
- * Get the screen position of character col with a coladd in the cursor line.
- */
- int
-! getviscol2(colnr_T col, colnr_T coladd)
- {
- colnr_T x;
- pos_T pos;
---- 73,79 ----
- * Get the screen position of character col with a coladd in the cursor line.
- */
- int
-! getviscol2(colnr_T col, colnr_T coladd UNUSED)
- {
- colnr_T x;
- pos_T pos;
-***************
-*** 320,330 ****
- }
- #endif
-
-- #ifdef FEAT_MBYTE
- /* prevent from moving onto a trail byte */
- if (has_mbyte)
- mb_adjustpos(curbuf, pos);
-- #endif
-
- if (col < wcol)
- return FAIL;
---- 320,328 ----
-***************
-*** 358,364 ****
- p = ml_get_pos(lp);
- if (*p != NUL) /* still within line, move to next char (may be NUL) */
- {
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- {
- int l = (*mb_ptr2len)(p);
---- 356,361 ----
-***************
-*** 366,372 ****
- lp->col += l;
- return ((p[l] != NUL) ? 0 : 2);
- }
-- #endif
- lp->col++;
- #ifdef FEAT_VIRTUALEDIT
- lp->coladd = 0;
---- 363,368 ----
-***************
-*** 424,433 ****
- /* past end of line */
- p = ml_get(lp->lnum);
- lp->col = (colnr_T)STRLEN(p);
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- lp->col -= (*mb_head_off)(p, p + lp->col);
-- #endif
- return 0;
- }
-
---- 420,427 ----
-***************
-*** 435,447 ****
- {
- /* still within line */
- lp->col--;
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- {
- p = ml_get(lp->lnum);
- lp->col -= (*mb_head_off)(p, p + lp->col);
- }
-- #endif
- return 0;
- }
-
---- 429,439 ----
-***************
-*** 451,460 ****
- lp->lnum--;
- p = ml_get(lp->lnum);
- lp->col = (colnr_T)STRLEN(p);
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- lp->col -= (*mb_head_off)(p, p + lp->col);
-- #endif
- return 1;
- }
-
---- 443,450 ----
-***************
-*** 608,618 ****
- else
- {
- win->w_cursor.col = len - 1;
-- #ifdef FEAT_MBYTE
- /* Move the cursor to the head byte. */
- if (has_mbyte)
- mb_adjustpos(win->w_buffer, &win->w_cursor);
-- #endif
- }
- }
- else if (win->w_cursor.col < 0)
---- 598,606 ----
-***************
-*** 1394,1402 ****
- char_u *p2;
- char_u *escaped_string;
- unsigned length;
-- #ifdef FEAT_MBYTE
- int l;
-- #endif
-
- /*
- * First count the number of backslashes required.
---- 1382,1388 ----
-***************
-*** 1405,1418 ****
- length = 1; /* count the trailing NUL */
- for (p = string; *p; p++)
- {
-- #ifdef FEAT_MBYTE
- if (has_mbyte && (l = (*mb_ptr2len)(p)) > 1)
- {
- length += l; /* count a multibyte char */
- p += l - 1;
- continue;
- }
-- #endif
- if (vim_strchr(esc_chars, *p) != NULL || (bsl && rem_backslash(p)))
- ++length; /* count a backslash */
- ++length; /* count an ordinary char */
---- 1391,1402 ----
-***************
-*** 1423,1429 ****
- p2 = escaped_string;
- for (p = string; *p; p++)
- {
-- #ifdef FEAT_MBYTE
- if (has_mbyte && (l = (*mb_ptr2len)(p)) > 1)
- {
- mch_memmove(p2, p, (size_t)l);
---- 1407,1412 ----
-***************
-*** 1431,1437 ****
- p += l - 1; /* skip multibyte char */
- continue;
- }
-- #endif
- if (vim_strchr(esc_chars, *p) != NULL || (bsl && rem_backslash(p)))
- *p2++ = cc;
- *p2++ = *p;
---- 1414,1419 ----
-***************
-*** 1642,1648 ****
- if (res != NULL)
- while (*p != NUL)
- {
-- # ifdef FEAT_MBYTE
- int l;
-
- if (enc_utf8)
---- 1624,1629 ----
-***************
-*** 1685,1691 ****
- else if (has_mbyte && (l = (*mb_ptr2len)(p)) > 1)
- p += l; /* skip multi-byte character */
- else
-- # endif
- {
- *p = TOUPPER_LOC(*p); /* note that toupper() can be a macro */
- p++;
---- 1666,1671 ----
-***************
-*** 1711,1717 ****
- if (res != NULL)
- while (*p != NUL)
- {
-- # ifdef FEAT_MBYTE
- int l;
-
- if (enc_utf8)
---- 1691,1696 ----
-***************
-*** 1754,1760 ****
- else if (has_mbyte && (l = (*mb_ptr2len)(p)) > 1)
- p += l; /* skip multi-byte character */
- else
-- # endif
- {
- *p = TOLOWER_LOC(*p); /* note that tolower() can be a macro */
- p++;
---- 1733,1738 ----
-***************
-*** 1943,1949 ****
- int b;
-
- p = string;
-- #ifdef FEAT_MBYTE
- if (enc_utf8 && c >= 0x80)
- {
- while (*p != NUL)
---- 1921,1926 ----
-***************
-*** 1980,1986 ****
- }
- return NULL;
- }
-- #endif
- while ((b = *p) != NUL)
- {
- if (b == c)
---- 1957,1962 ----
-***************
-*** 2713,2723 ****
- * When not a known special key, and not a printable character, try to
- * extract modifiers.
- */
-! if (c > 0
-! #ifdef FEAT_MBYTE
-! && (*mb_char2len)(c) == 1
-! #endif
-! )
- {
- if (table_idx < 0
- && (!vim_isprintc(c) || (c & 0x7f) == ' ')
---- 2689,2695 ----
- * When not a known special key, and not a printable character, try to
- * extract modifiers.
- */
-! if (c > 0 && (*mb_char2len)(c) == 1)
- {
- if (table_idx < 0
- && (!vim_isprintc(c) || (c & 0x7f) == ' ')
-***************
-*** 2760,2771 ****
- /* Not a special key, only modifiers, output directly */
- else
- {
-- #ifdef FEAT_MBYTE
- if (has_mbyte && (*mb_char2len)(c) > 1)
- idx += (*mb_char2bytes)(c, string + idx);
-! else
-! #endif
-! if (vim_isprintc(c))
- string[idx++] = c;
- else
- {
---- 2732,2740 ----
- /* Not a special key, only modifiers, output directly */
- else
- {
- if (has_mbyte && (*mb_char2len)(c) > 1)
- idx += (*mb_char2bytes)(c, string + idx);
-! else if (vim_isprintc(c))
- string[idx++] = c;
- else
- {
-***************
-*** 2825,2834 ****
- dst[dlen++] = KEY2TERMCAP0(key);
- dst[dlen++] = KEY2TERMCAP1(key);
- }
-- #ifdef FEAT_MBYTE
- else if (has_mbyte && !keycode)
- dlen += (*mb_char2bytes)(key, dst + dlen);
-- #endif
- else if (keycode)
- dlen = (int)(add_char2buf(key, dst + dlen) - dst);
- else
---- 2794,2801 ----
-***************
-*** 2873,2883 ****
- last_dash = bp;
- if (bp[1] != NUL)
- {
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- l = mb_ptr2len(bp + 1);
- else
-- #endif
- l = 1;
- /* Anything accepted, like <C-?>.
- * <C-"> or <M-"> are not special in strings as " is
---- 2840,2848 ----
-***************
-*** 2935,2945 ****
- /* Modifier with single letter, or special key name. */
- if (in_string && last_dash[1] == '\\' && last_dash[2] == '"')
- off = 2;
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- l = mb_ptr2len(last_dash + off);
- else
-- #endif
- l = 1;
- if (modifiers != 0 && last_dash[l + off] == '>')
- key = PTR2CHAR(last_dash + off);
---- 2900,2908 ----
-***************
-*** 3028,3037 ****
- if (!(modifiers & MOD_MASK_CMD))
- #endif
- if ((modifiers & MOD_MASK_ALT) && key < 0x80
-! #ifdef FEAT_MBYTE
-! && !enc_dbcs /* avoid creating a lead byte */
-! #endif
-! )
- {
- key |= 0x80;
- modifiers &= ~MOD_MASK_ALT; /* remove the META modifier */
---- 2991,2997 ----
- if (!(modifiers & MOD_MASK_CMD))
- #endif
- if ((modifiers & MOD_MASK_ALT) && key < 0x80
-! && !enc_dbcs) // avoid creating a lead byte
- {
- key |= 0x80;
- modifiers &= ~MOD_MASK_ALT; /* remove the META modifier */
-***************
-*** 3377,3383 ****
- return State;
- }
-
-- #if defined(FEAT_MBYTE) || defined(PROTO)
- /*
- * Return TRUE if "p" points to just after a path separator.
- * Takes care of multi-byte characters.
---- 3337,3342 ----
-***************
-*** 3389,3395 ****
- return p > b && vim_ispathsep(p[-1])
- && (!has_mbyte || (*mb_head_off)(b, p - 1) == 0);
- }
-- #endif
-
- /*
- * Return TRUE if file names "f1" and "f2" are in the same directory.
---- 3348,3353 ----
-***************
-*** 6376,6383 ****
-
- #endif
-
-! #if (defined(FEAT_MBYTE) && defined(FEAT_QUICKFIX)) \
-! || defined(FEAT_SPELL) || defined(PROTO)
- /*
- * Return TRUE if string "s" contains a non-ASCII character (128 or higher).
- * When "s" is NULL FALSE is returned.
---- 6334,6340 ----
-
- #endif
-
-! #if defined(FEAT_QUICKFIX) || defined(FEAT_SPELL) || defined(PROTO)
- /*
- * Return TRUE if string "s" contains a non-ASCII character (128 or higher).
- * When "s" is NULL FALSE is returned.
-*** ../vim-8.1.0805/src/move.c 2019-01-11 11:55:12.930066044 +0100
---- src/move.c 2019-01-24 15:31:26.516482525 +0100
-***************
-*** 934,940 ****
- }
-
- /*
-! * compute curwin->w_wcol and curwin->w_virtcol.
- * Also updates curwin->w_wrow and curwin->w_cline_row.
- * Also updates curwin->w_leftcol.
- */
---- 934,940 ----
- }
-
- /*
-! * Compute curwin->w_wcol and curwin->w_virtcol.
- * Also updates curwin->w_wrow and curwin->w_cline_row.
- * Also updates curwin->w_leftcol.
- */
-***************
-*** 2845,2855 ****
- validate_cursor();
- # endif
- restart_edit = restart_edit_save;
-- # ifdef FEAT_MBYTE
- /* Correct cursor for multi-byte character. */
- if (has_mbyte)
- mb_adjust_cursor();
-- # endif
- redraw_later(VALID);
-
- /* Only scroll when 'scrollbind' hasn't done this. */
---- 2845,2853 ----
-*** ../vim-8.1.0805/src/normal.c 2019-01-19 17:43:03.421449119 +0100
---- src/normal.c 2019-01-24 15:41:20.432534170 +0100
-***************
-*** 477,487 ****
- int top, bot;
- int c;
-
-- #ifdef FEAT_MBYTE
- /* A multi-byte character is never a command. */
- if (cmdchar >= 0x100)
- return -1;
-- #endif
-
- /* We use the absolute value of the character. Special keys have a
- * negative value, but are sorted on their absolute value. */
---- 477,485 ----
-***************
-*** 1036,1042 ****
- }
- }
-
-- #ifdef FEAT_MBYTE
- /* When getting a text character and the next character is a
- * multi-byte character, it could be a composing character.
- * However, don't wait for it to arrive. Also, do enable mapping,
---- 1034,1039 ----
-***************
-*** 1058,1064 ****
- ca.ncharC2 = c;
- }
- ++no_mapping;
-- #endif
- }
- --no_mapping;
- --allow_keys;
---- 1055,1060 ----
-***************
-*** 1255,1264 ****
- checkpcmark(); /* check if we moved since setting pcmark */
- vim_free(ca.searchbuf);
-
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- mb_adjust_cursor();
-- #endif
-
- if (curwin->w_p_scb && toplevel)
- {
---- 1251,1258 ----
-***************
-*** 1745,1751 ****
- }
- }
-
-- #ifdef FEAT_MBYTE
- /* Include the trailing byte of a multi-byte char. */
- if (has_mbyte && oap->inclusive)
- {
---- 1739,1744 ----
-***************
-*** 1755,1761 ****
- if (l > 1)
- oap->end.col += l - 1;
- }
-- #endif
- curwin->w_set_curswant = TRUE;
-
- /*
---- 1748,1753 ----
-***************
-*** 3133,3144 ****
- {
- find_start_of_word(&VIsual);
- if (*p_sel == 'e' && *ml_get_cursor() != NUL)
-- #ifdef FEAT_MBYTE
- curwin->w_cursor.col +=
- (*mb_ptr2len)(ml_get_cursor());
-- #else
-- ++curwin->w_cursor.col;
-- #endif
- find_end_of_word(&curwin->w_cursor);
- }
- }
---- 3125,3132 ----
-***************
-*** 3180,3188 ****
- while (pos->col > 0)
- {
- col = pos->col - 1;
-- #ifdef FEAT_MBYTE
- col -= (*mb_head_off)(line, line + col);
-- #endif
- if (get_mouse_class(line + col) != cclass)
- break;
- pos->col = col;
---- 3168,3174 ----
-***************
-*** 3204,3221 ****
- if (*p_sel == 'e' && pos->col > 0)
- {
- --pos->col;
-- #ifdef FEAT_MBYTE
- pos->col -= (*mb_head_off)(line, line + pos->col);
-- #endif
- }
- cclass = get_mouse_class(line + pos->col);
- while (line[pos->col] != NUL)
- {
-- #ifdef FEAT_MBYTE
- col = pos->col + (*mb_ptr2len)(line + pos->col);
-- #else
-- col = pos->col + 1;
-- #endif
- if (get_mouse_class(line + col) != cclass)
- {
- if (*p_sel == 'e')
---- 3190,3201 ----
-***************
-*** 3238,3247 ****
- {
- int c;
-
-- #ifdef FEAT_MBYTE
- if (has_mbyte && MB_BYTE2LEN(p[0]) > 1)
- return mb_get_class(p);
-- #endif
-
- c = *p;
- if (c == ' ' || c == '\t')
---- 3218,3225 ----
-***************
-*** 3431,3441 ****
- char_u *ptr;
- int col = 0; /* init to shut up GCC */
- int i;
-- #ifdef FEAT_MBYTE
- int this_class = 0;
- int prev_class;
- int prevcol;
-- #endif
- int bn = 0; /* bracket nesting */
-
- /*
---- 3409,3417 ----
-***************
-*** 3449,3455 ****
- * 1. skip to start of identifier/string
- */
- col = startcol;
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- {
- while (ptr[col] != NUL)
---- 3425,3430 ----
-***************
-*** 3464,3470 ****
- }
- }
- else
-- #endif
- while (ptr[col] != NUL
- && (i == 0 ? !vim_iswordc(ptr[col]) : VIM_ISWHITE(ptr[col]))
- && (!(find_type & FIND_EVAL) || ptr[col] != ']')
---- 3439,3444 ----
-***************
-*** 3477,3483 ****
- /*
- * 2. Back up to start of identifier/string.
- */
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- {
- /* Remember class of character under cursor. */
---- 3451,3456 ----
-***************
-*** 3510,3516 ****
- break;
- }
- else
-- #endif
- {
- while (col > 0
- && ((i == 0
---- 3483,3488 ----
-***************
-*** 3532,3542 ****
- }
- }
-
-! if (ptr[col] == NUL || (i == 0 && (
-! #ifdef FEAT_MBYTE
-! has_mbyte ? this_class != 2 :
-! #endif
-! !vim_iswordc(ptr[col]))))
- {
- /*
- * didn't find an identifier or string
---- 3504,3511 ----
- }
- }
-
-! if (ptr[col] == NUL || (i == 0
-! && (has_mbyte ? this_class != 2 : !vim_iswordc(ptr[col]))))
- {
- /*
- * didn't find an identifier or string
-***************
-*** 3556,3562 ****
- bn = 0;
- startcol -= col;
- col = 0;
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- {
- /* Search for point of changing multibyte character class. */
---- 3525,3530 ----
-***************
-*** 3571,3577 ****
- col += (*mb_ptr2len)(ptr + col);
- }
- else
-- #endif
- while ((i == 0 ? vim_iswordc(ptr[col])
- : (ptr[col] != NUL && !VIM_ISWHITE(ptr[col])))
- || ((find_type & FIND_EVAL)
---- 3539,3544 ----
-***************
-*** 3787,3797 ****
- }
- while ((*p_sel != 'e') ? s <= e : s < e)
- {
-- # ifdef FEAT_MBYTE
- l = (*mb_ptr2len)(s);
-- # else
-- l = (*s == NUL) ? 0 : 1;
-- # endif
- if (l == 0)
- {
- ++bytes;
---- 3754,3760 ----
-***************
-*** 4558,4564 ****
- else
- coladvance(curwin->w_curswant);
-
-- #if defined(FEAT_LINEBREAK) || defined(FEAT_MBYTE)
- if (curwin->w_cursor.col > 0 && curwin->w_p_wrap)
- {
- colnr_T virtcol;
---- 4521,4526 ----
-***************
-*** 4570,4579 ****
- */
- validate_virtcol();
- virtcol = curwin->w_virtcol;
-! # if defined(FEAT_LINEBREAK)
- if (virtcol > (colnr_T)width1 && *p_sbr != NUL)
- virtcol -= vim_strsize(p_sbr);
-! # endif
-
- if (virtcol > curwin->w_curswant
- && (curwin->w_curswant < (colnr_T)width1
---- 4532,4541 ----
- */
- validate_virtcol();
- virtcol = curwin->w_virtcol;
-! #if defined(FEAT_LINEBREAK)
- if (virtcol > (colnr_T)width1 && *p_sbr != NUL)
- virtcol -= vim_strsize(p_sbr);
-! #endif
-
- if (virtcol > curwin->w_curswant
- && (curwin->w_curswant < (colnr_T)width1
-***************
-*** 4582,4588 ****
- > (colnr_T)width2 / 2)))
- --curwin->w_cursor.col;
- }
-- #endif
-
- if (atend)
- curwin->w_curswant = MAXCOL; /* stick in the last column */
---- 4544,4549 ----
-***************
-*** 5768,5774 ****
- /* put a backslash before \ and some others */
- if (vim_strchr(aux_ptr, *ptr) != NULL)
- *p++ = '\\';
-- #ifdef FEAT_MBYTE
- /* When current byte is a part of multibyte character, copy all
- * bytes of that character. */
- if (has_mbyte)
---- 5729,5734 ----
-***************
-*** 5779,5785 ****
- for (i = 0; i < len && n >= 1; ++i, --n)
- *p++ = *ptr++;
- }
-- #endif
- *p++ = *ptr++;
- }
- *p = NUL;
---- 5739,5744 ----
-***************
-*** 5790,5800 ****
- */
- if (cmdchar == '*' || cmdchar == '#')
- {
-! if (!g_cmd && (
-! #ifdef FEAT_MBYTE
-! has_mbyte ? vim_iswordp(mb_prevptr(ml_get_curline(), ptr)) :
-! #endif
-! vim_iswordc(ptr[-1])))
- STRCAT(buf, "\\>");
- #ifdef FEAT_CMDHIST
- /* put pattern in search history */
---- 5749,5757 ----
- */
- if (cmdchar == '*' || cmdchar == '#')
- {
-! if (!g_cmd && (has_mbyte
-! ? vim_iswordp(mb_prevptr(ml_get_curline(), ptr))
-! : vim_iswordc(ptr[-1])))
- STRCAT(buf, "\\>");
- #ifdef FEAT_CMDHIST
- /* put pattern in search history */
-***************
-*** 5844,5854 ****
- *pp = ml_get_pos(&VIsual);
- *lenp = curwin->w_cursor.col - VIsual.col + 1;
- }
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- /* Correct the length to include the whole last character. */
- *lenp += (*mb_ptr2len)(*pp + (*lenp - 1)) - 1;
-- #endif
- }
- reset_VIsual_and_resel();
- return OK;
---- 5801,5809 ----
-***************
-*** 6058,6069 ****
- else
- #endif
- {
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- curwin->w_cursor.col +=
- (*mb_ptr2len)(ml_get_cursor());
- else
-- #endif
- ++curwin->w_cursor.col;
- }
- }
---- 6013,6022 ----
-***************
-*** 6129,6139 ****
-
- if (*cp != NUL)
- {
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- curwin->w_cursor.col += (*mb_ptr2len)(cp);
- else
-- #endif
- ++curwin->w_cursor.col;
- }
- cap->retval |= CA_NO_ADJ_OP_END;
---- 6082,6090 ----
-***************
-*** 7060,7069 ****
- /* Abort if not enough characters to replace. */
- ptr = ml_get_cursor();
- if (STRLEN(ptr) < (unsigned)cap->count1
-! #ifdef FEAT_MBYTE
-! || (has_mbyte && mb_charlen(ptr) < cap->count1)
-! #endif
-! )
- {
- clearopbeep(cap->oap);
- return;
---- 7011,7017 ----
- /* Abort if not enough characters to replace. */
- ptr = ml_get_cursor();
- if (STRLEN(ptr) < (unsigned)cap->count1
-! || (has_mbyte && mb_charlen(ptr) < cap->count1))
- {
- clearopbeep(cap->oap);
- return;
-***************
-*** 7098,7108 ****
- * autoindent. The insert command depends on being on the last
- * character of a line or not.
- */
-- #ifdef FEAT_MBYTE
- (void)del_chars(cap->count1, FALSE); /* delete the characters */
-- #else
-- (void)del_bytes(cap->count1, FALSE, FALSE); /* delete the characters */
-- #endif
- stuffcharReadbuff('\r');
- stuffcharReadbuff(ESC);
-
---- 7046,7052 ----
-***************
-*** 7115,7121 ****
- NUL, 'r', NUL, had_ctrl_v, cap->nchar);
-
- curbuf->b_op_start = curwin->w_cursor;
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- {
- int old_State = State;
---- 7059,7064 ----
-***************
-*** 7151,7157 ****
- }
- }
- else
-- #endif
- {
- /*
- * Replace the characters within one line.
---- 7094,7099 ----
-***************
-*** 7194,7205 ****
- (colnr_T)(curwin->w_cursor.col - cap->count1));
- }
- --curwin->w_cursor.col; /* cursor on the last replaced char */
-- #ifdef FEAT_MBYTE
- /* if the character on the left of the current cursor is a multi-byte
- * character, move two characters left */
- if (has_mbyte)
- mb_adjust_cursor();
-- #endif
- curbuf->b_op_end = curwin->w_cursor;
- curwin->w_set_curswant = TRUE;
- set_last_insert(cap->nchar);
---- 7136,7145 ----
-***************
-*** 8202,8208 ****
- validate_virtcol();
- curwin->w_curswant = curwin->w_virtcol;
- curwin->w_set_curswant = FALSE;
-- #if defined(FEAT_LINEBREAK) || defined(FEAT_MBYTE)
- if (curwin->w_cursor.col > 0 && curwin->w_p_wrap)
- {
- /*
---- 8142,8147 ----
-***************
-*** 8213,8219 ****
- if (curwin->w_virtcol > (colnr_T)i)
- --curwin->w_cursor.col;
- }
-- #endif
- }
- else if (nv_screengo(oap, FORWARD, cap->count1 - 1) == FAIL)
- clearopbeep(oap);
---- 8152,8157 ----
-***************
-*** 8328,8334 ****
- do_ascii(NULL);
- break;
-
-- #ifdef FEAT_MBYTE
- /*
- * "g8": Display the bytes used for the UTF-8 character under the
- * cursor. It is displayed in hex.
---- 8266,8271 ----
-***************
-*** 8340,8346 ****
- else
- show_utf8();
- break;
-- #endif
-
- /* "g<": show scrollback text */
- case '<':
---- 8277,8282 ----
-***************
-*** 8843,8853 ****
- )
- {
- --curwin->w_cursor.col;
-- #ifdef FEAT_MBYTE
- /* prevent cursor from moving on the trail byte */
- if (has_mbyte)
- mb_adjust_cursor();
-- #endif
- oap->inclusive = TRUE;
- }
- }
---- 8779,8787 ----
-***************
-*** 8879,8889 ****
- if (VIsual_active && cap->oap->inclusive && *p_sel == 'e'
- && gchar_cursor() != NUL && LT_POS(VIsual, curwin->w_cursor))
- {
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- inc_cursor();
- else
-- #endif
- ++curwin->w_cursor.col;
- cap->oap->inclusive = FALSE;
- }
---- 8813,8821 ----
-***************
-*** 8913,8921 ****
- if (pp->col > 0)
- {
- --pp->col;
-- #ifdef FEAT_MBYTE
- mb_adjustpos(curbuf, pp);
-- #endif
- }
- else if (pp->lnum > 1)
- {
---- 8845,8851 ----
-***************
-*** 9646,9656 ****
-
- oap->block_mode = TRUE;
-
-- #ifdef FEAT_MBYTE
- /* prevent from moving onto a trail byte */
- if (has_mbyte)
- mb_adjustpos(curwin->w_buffer, &oap->end);
-- #endif
-
- getvvcol(curwin, &(oap->start), &oap->start_vcol, NULL, &oap->end_vcol);
-
---- 9576,9584 ----
-*** ../vim-8.1.0805/src/ops.c 2019-01-20 15:30:36.889328720 +0100
---- src/ops.c 2019-01-24 15:44:26.003148115 +0100
-***************
-*** 97,105 ****
- static int put_in_typebuf(char_u *s, int esc, int colon,
- int silent);
- static void stuffescaped(char_u *arg, int literally);
-- #ifdef FEAT_MBYTE
- static void mb_adjust_opend(oparg_T *oap);
-- #endif
- static void free_yank_all(void);
- static int yank_copy_line(struct block_def *bd, long y_idx);
- #ifdef FEAT_CLIPBOARD
---- 97,103 ----
-***************
-*** 421,427 ****
- ws_vcol = bd.start_vcol - bd.pre_whitesp;
- if (bd.startspaces)
- {
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- {
- if ((*mb_ptr2len)(bd.textstart) == 1)
---- 419,424 ----
-***************
-*** 433,439 ****
- }
- }
- else
-- #endif
- ++bd.textstart;
- }
- for ( ; VIM_ISWHITE(*bd.textstart); )
---- 430,435 ----
-***************
-*** 632,638 ****
- }
- }
-
-- #ifdef FEAT_MBYTE
- if (has_mbyte && spaces > 0)
- {
- int off;
---- 628,633 ----
-***************
-*** 650,656 ****
- spaces -= off;
- count -= off;
- }
-- #endif
-
- newp = alloc_check((unsigned)(STRLEN(oldp)) + s_len + count + 1);
- if (newp == NULL)
---- 645,650 ----
-***************
-*** 1491,1501 ****
- /* stuff a single special character */
- if (*arg != NUL)
- {
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- c = mb_cptr2char_adv(&arg);
- else
-- #endif
- c = *arg++;
- if (literally && ((c < ' ' && c != TAB) || c == DEL))
- stuffcharReadbuff(Ctrl_V);
---- 1485,1493 ----
-***************
-*** 1774,1783 ****
- adjust_clip_reg(&oap->regname);
- #endif
-
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- mb_adjust_opend(oap);
-- #endif
-
- /*
- * Imitate the strange Vi behaviour: If the delete spans more than one
---- 1766,1773 ----
-***************
-*** 2109,2115 ****
- return OK;
- }
-
-- #ifdef FEAT_MBYTE
- /*
- * Adjust end of operating area for ending on a multi-byte character.
- * Used for deletion.
---- 2099,2104 ----
-***************
-*** 2125,2134 ****
- oap->end.col += mb_tail_off(p, p + oap->end.col);
- }
- }
-- #endif
-
--
-- #ifdef FEAT_MBYTE
- /*
- * Replace the character under the cursor with "c".
- * This takes care of multi-byte characters.
---- 2114,2120 ----
-***************
-*** 2144,2150 ****
- /* Backup to the replaced character. */
- dec_cursor();
- }
-- #endif
-
- /*
- * Replace a whole area with one character.
---- 2130,2135 ----
-***************
-*** 2153,2161 ****
- op_replace(oparg_T *oap, int c)
- {
- int n, numc;
-- #ifdef FEAT_MBYTE
- int num_chars;
-- #endif
- char_u *newp, *oldp;
- size_t oldlen;
- struct block_def bd;
---- 2138,2144 ----
-***************
-*** 2176,2185 ****
- c = NL;
- }
-
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- mb_adjust_opend(oap);
-- #endif
-
- if (u_save((linenr_T)(oap->start.lnum - 1),
- (linenr_T)(oap->end.lnum + 1)) == FAIL)
---- 2159,2166 ----
-***************
-*** 2230,2236 ****
- if (bd.is_short && (!virtual_op || bd.is_MAX))
- numc -= (oap->end_vcol - bd.end_vcol) + 1;
-
-- #ifdef FEAT_MBYTE
- /* A double-wide character can be replaced only up to half the
- * times. */
- if ((*mb_char2cells)(c) > 1)
---- 2211,2216 ----
-***************
-*** 2246,2252 ****
- /* Compute bytes needed, move character count to num_chars. */
- num_chars = numc;
- numc *= (*mb_char2len)(c);
-- #endif
- /* oldlen includes textlen, so don't double count */
- n += numc - bd.textlen;
-
---- 2226,2231 ----
-***************
-*** 2266,2272 ****
- * literally. */
- if (had_ctrl_v_cr || (c != '\r' && c != '\n'))
- {
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- {
- n = (int)STRLEN(newp);
---- 2245,2250 ----
-***************
-*** 2274,2280 ****
- n += (*mb_char2bytes)(c, newp + n);
- }
- else
-- #endif
- vim_memset(newp + STRLEN(newp), c, (size_t)numc);
- if (!bd.is_short)
- {
---- 2252,2257 ----
-***************
-*** 2324,2330 ****
- n = gchar_cursor();
- if (n != NUL)
- {
-- #ifdef FEAT_MBYTE
- if ((*mb_char2len)(c) > 1 || (*mb_char2len)(n) > 1)
- {
- /* This is slow, but it handles replacing a single-byte
---- 2301,2306 ----
-***************
-*** 2334,2340 ****
- replace_character(c);
- }
- else
-- #endif
- {
- #ifdef FEAT_VIRTUALEDIT
- if (n == TAB)
---- 2310,2315 ----
-***************
-*** 2372,2382 ****
- curwin->w_cursor.col -= (virtcols + 1);
- for (; virtcols >= 0; virtcols--)
- {
-- # ifdef FEAT_MBYTE
- if ((*mb_char2len)(c) > 1)
- replace_character(c);
- else
-- # endif
- PBYTE(curwin->w_cursor, c);
- if (inc(&curwin->w_cursor) == -1)
- break;
---- 2347,2355 ----
-***************
-*** 2530,2536 ****
-
- for (todo = length; todo > 0; --todo)
- {
-- # ifdef FEAT_MBYTE
- if (has_mbyte)
- {
- int len = (*mb_ptr2len)(ml_get_pos(pos));
---- 2503,2508 ----
-***************
-*** 2539,2545 ****
- if (len > 0)
- todo -= len - 1;
- }
-- # endif
- did_change |= swapchar(op_type, pos);
- if (inc(pos) == -1) /* at end of file */
- break;
---- 2511,2516 ----
-***************
-*** 2566,2572 ****
- if (c >= 0x80 && op_type == OP_ROT13)
- return FALSE;
-
-- #ifdef FEAT_MBYTE
- if (op_type == OP_UPPER && c == 0xdf
- && (enc_latin1like || STRCMP(p_enc, "iso-8859-2") == 0))
- {
---- 2537,2542 ----
-***************
-*** 2583,2589 ****
-
- if (enc_dbcs != 0 && c >= 0x100) /* No lower/uppercase letter */
- return FALSE;
-- #endif
- nc = c;
- if (MB_ISLOWER(c))
- {
---- 2553,2558 ----
-***************
-*** 2601,2607 ****
- }
- if (nc != c)
- {
-- #ifdef FEAT_MBYTE
- if (enc_utf8 && (c >= 0x80 || nc >= 0x80))
- {
- pos_T sp = curwin->w_cursor;
---- 2570,2575 ----
-***************
-*** 2613,2619 ****
- curwin->w_cursor = sp;
- }
- else
-- #endif
- PBYTE(*pos, nc);
- return TRUE;
- }
---- 2581,2586 ----
-***************
-*** 3216,3228 ****
- {
- getvcol(curwin, &oap->end, &cs, NULL, &ce);
- if (p[endcol] == NUL || (cs + oap->end.coladd < ce
-- # ifdef FEAT_MBYTE
- /* Don't add space for double-wide
- * char; endcol will be on last byte
- * of multi-byte char. */
-! && (*mb_head_off)(p, p + endcol) == 0
-! # endif
-! ))
- {
- if (oap->start.lnum == oap->end.lnum
- && oap->start.col == oap->end.col)
---- 3183,3192 ----
- {
- getvcol(curwin, &oap->end, &cs, NULL, &ce);
- if (p[endcol] == NUL || (cs + oap->end.coladd < ce
- /* Don't add space for double-wide
- * char; endcol will be on last byte
- * of multi-byte char. */
-! && (*mb_head_off)(p, p + endcol) == 0))
- {
- if (oap->start.lnum == oap->end.lnum
- && oap->start.col == oap->end.col)
-***************
-*** 3745,3756 ****
- #endif
- getvcol(curwin, &curwin->w_cursor, NULL, NULL, &col);
-
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- /* move to start of next multi-byte character */
- curwin->w_cursor.col += (*mb_ptr2len)(ml_get_cursor());
- else
-- #endif
- #ifdef FEAT_VIRTUALEDIT
- if (c != TAB || ve_flags != VE_ALL)
- #endif
---- 3709,3718 ----
-***************
-*** 3820,3829 ****
- bd.startspaces = incr - bd.endspaces;
- --bd.textcol;
- delcount = 1;
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- bd.textcol -= (*mb_head_off)(oldp, oldp + bd.textcol);
-- #endif
- if (oldp[bd.textcol] != TAB)
- {
- /* Only a Tab can be split into spaces. Other
---- 3782,3789 ----
-***************
-*** 3919,3925 ****
- * char */
- if (dir == FORWARD && gchar_cursor() != NUL)
- {
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- {
- int bytelen = (*mb_ptr2len)(ml_get_cursor());
---- 3879,3884 ----
-***************
-*** 3933,3939 ****
- }
- }
- else
-- #endif
- {
- ++col;
- if (yanklen)
---- 3892,3897 ----
-***************
-*** 4279,4289 ****
- int name;
- int attr;
- char_u *arg = eap->arg;
-- #ifdef FEAT_MBYTE
- int clen;
-- #else
-- # define clen 1
-- #endif
-
- if (arg != NULL && *arg == NUL)
- arg = NULL;
---- 4237,4243 ----
-***************
-*** 4344,4356 ****
- }
- for (p = yb->y_array[j]; *p && (n -= ptr2cells(p)) >= 0; ++p)
- {
-- #ifdef FEAT_MBYTE
- clen = (*mb_ptr2len)(p);
-- #endif
- msg_outtrans_len(p, clen);
-- #ifdef FEAT_MBYTE
- p += clen - 1;
-- #endif
- }
- }
- if (n > 1 && yb->y_type == MLINE)
---- 4298,4306 ----
-***************
-*** 4438,4460 ****
- int skip_esc) /* if TRUE, ignore trailing ESC */
- {
- int n;
-- #ifdef FEAT_MBYTE
- int l;
-- #endif
-
- n = (int)Columns - 6;
- while (*p != NUL
- && !(*p == ESC && skip_esc && *(p + 1) == NUL)
- && (n -= ptr2cells(p)) >= 0)
- {
-- #ifdef FEAT_MBYTE
- if (has_mbyte && (l = (*mb_ptr2len)(p)) > 1)
- {
- msg_outtrans_len(p, l);
- p += l;
- }
- else
-- #endif
- msg_outtrans_len(p++, 1);
- }
- ui_breakcheck();
---- 4388,4406 ----
-***************
-*** 4631,4642 ****
- {
- curr = skipwhite(curr);
- if (*curr != ')' && currsize != 0 && endcurr1 != TAB
-- #ifdef FEAT_MBYTE
- && (!has_format_option(FO_MBYTE_JOIN)
- || (mb_ptr2char(curr) < 0x100 && endcurr1 < 0x100))
- && (!has_format_option(FO_MBYTE_JOIN2)
- || mb_ptr2char(curr) < 0x100 || endcurr1 < 0x100)
-- #endif
- )
- {
- /* don't add a space if the line is ending in a space */
---- 4577,4586 ----
-***************
-*** 4657,4663 ****
- endcurr1 = endcurr2 = NUL;
- if (insert_space && currsize > 0)
- {
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- {
- cend = curr + currsize;
---- 4601,4606 ----
-***************
-*** 4670,4676 ****
- }
- }
- else
-- #endif
- {
- endcurr1 = *(curr + currsize - 1);
- if (currsize > 1)
---- 4613,4618 ----
-***************
-*** 5715,5734 ****
- while (col > 0 && vim_isbdigit(ptr[col]))
- {
- --col;
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- col -= (*mb_head_off)(ptr, ptr + col);
-- #endif
- }
-
- if (dohex)
- while (col > 0 && vim_isxdigit(ptr[col]))
- {
- --col;
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- col -= (*mb_head_off)(ptr, ptr + col);
-- #endif
- }
-
- if ( dobin
---- 5657,5672 ----
-***************
-*** 5737,5746 ****
- && (ptr[col] == 'X'
- || ptr[col] == 'x')
- && ptr[col - 1] == '0'
-- #ifdef FEAT_MBYTE
- && (!has_mbyte ||
- !(*mb_head_off)(ptr, ptr + col - 1))
-- #endif
- && vim_isxdigit(ptr[col + 1]))))
- {
-
---- 5675,5682 ----
-***************
-*** 5751,5760 ****
- while (col > 0 && vim_isdigit(ptr[col]))
- {
- col--;
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- col -= (*mb_head_off)(ptr, ptr + col);
-- #endif
- }
- }
-
---- 5687,5694 ----
-***************
-*** 5763,5790 ****
- && (ptr[col] == 'X'
- || ptr[col] == 'x')
- && ptr[col - 1] == '0'
-- #ifdef FEAT_MBYTE
- && (!has_mbyte ||
- !(*mb_head_off)(ptr, ptr + col - 1))
-- #endif
- && vim_isxdigit(ptr[col + 1])) ||
- ( dobin
- && col > 0
- && (ptr[col] == 'B'
- || ptr[col] == 'b')
- && ptr[col - 1] == '0'
-- #ifdef FEAT_MBYTE
- && (!has_mbyte ||
- !(*mb_head_off)(ptr, ptr + col - 1))
-- #endif
- && vim_isbdigit(ptr[col + 1])))
- {
- /* Found hexadecimal or binary number, move to its start. */
- --col;
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- col -= (*mb_head_off)(ptr, ptr + col);
-- #endif
- }
- else
- {
---- 5697,5718 ----
-***************
-*** 5803,5812 ****
- && !(doalp && ASCII_ISALPHA(ptr[col])))
- {
- --col;
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- col -= (*mb_head_off)(ptr, ptr + col);
-- #endif
- }
- }
- }
---- 5731,5738 ----
-***************
-*** 5827,5837 ****
- goto theend;
-
- if (col > pos->col && ptr[col - 1] == '-'
-! #ifdef FEAT_MBYTE
-! && (!has_mbyte ||
-! !(*mb_head_off)(ptr, ptr + col - 1))
-! #endif
-! )
- {
- negative = TRUE;
- was_positive = FALSE;
---- 5753,5759 ----
- goto theend;
-
- if (col > pos->col && ptr[col - 1] == '-'
-! && (!has_mbyte || !(*mb_head_off)(ptr, ptr + col - 1)))
- {
- negative = TRUE;
- was_positive = FALSE;
-***************
-*** 5895,5904 ****
- else
- {
- if (col > 0 && ptr[col - 1] == '-'
-- #ifdef FEAT_MBYTE
- && (!has_mbyte ||
- !(*mb_head_off)(ptr, ptr + col - 1))
-- #endif
- && !visual)
- {
- /* negative number */
---- 5817,5824 ----
-***************
-*** 6539,6545 ****
- if (dpy != NULL && str != NULL && motion_type >= 0
- && len < 1024*1024 && len > 0)
- {
-- #ifdef FEAT_MBYTE
- int ok = TRUE;
-
- /* The CUT_BUFFER0 is supposed to always contain latin1. Convert from
---- 6459,6464 ----
-***************
-*** 6579,6585 ****
- /* Do not store the string if conversion failed. Better to use any
- * other selection than garbled text. */
- if (ok)
-- #endif
- {
- XStoreBuffer(dpy, (char *)str, (int)len, 0);
- XFlush(dpy);
---- 6498,6503 ----
-***************
-*** 7349,7359 ****
- else if (!vim_isspace(line[i]))
- is_word = 1;
- ++chars;
-- #ifdef FEAT_MBYTE
- i += (*mb_ptr2len)(line + i);
-- #else
-- ++i;
-- #endif
- }
-
- if (is_word)
---- 7267,7273 ----
-***************
-*** 7384,7392 ****
- char_u buf2[40];
- linenr_T lnum;
- varnumber_T byte_count = 0;
-- #ifdef FEAT_MBYTE
- varnumber_T bom_count = 0;
-- #endif
- varnumber_T byte_count_cursor = 0;
- varnumber_T char_count = 0;
- varnumber_T char_count_cursor = 0;
---- 7298,7304 ----
-***************
-*** 7609,7620 ****
- }
- }
-
-- #ifdef FEAT_MBYTE
- bom_count = bomb_size();
- if (bom_count > 0)
- vim_snprintf((char *)IObuff + STRLEN(IObuff), IOSIZE,
-! _("(+%lld for BOM)"), (long_long_T)bom_count);
-! #endif
- if (dict == NULL)
- {
- /* Don't shorten this message, the user asked for it. */
---- 7521,7530 ----
- }
- }
-
- bom_count = bomb_size();
- if (bom_count > 0)
- vim_snprintf((char *)IObuff + STRLEN(IObuff), IOSIZE,
-! _("(+%lld for BOM)"), (long_long_T)bom_count);
- if (dict == NULL)
- {
- /* Don't shorten this message, the user asked for it. */
-***************
-*** 7629,7639 ****
- {
- dict_add_number(dict, "words", word_count);
- dict_add_number(dict, "chars", char_count);
-! dict_add_number(dict, "bytes", byte_count
-! # ifdef FEAT_MBYTE
-! + bom_count
-! # endif
-! );
- dict_add_number(dict, VIsual_active ? "visual_bytes" : "cursor_bytes",
- byte_count_cursor);
- dict_add_number(dict, VIsual_active ? "visual_chars" : "cursor_chars",
---- 7539,7545 ----
- {
- dict_add_number(dict, "words", word_count);
- dict_add_number(dict, "chars", char_count);
-! dict_add_number(dict, "bytes", byte_count + bom_count);
- dict_add_number(dict, VIsual_active ? "visual_bytes" : "cursor_bytes",
- byte_count_cursor);
- dict_add_number(dict, VIsual_active ? "visual_chars" : "cursor_chars",
-*** ../vim-8.1.0805/src/option.c 2019-01-20 15:30:36.889328720 +0100
---- src/option.c 2019-01-24 15:50:26.424493073 +0100
-***************
-*** 66,74 ****
- #endif
- #define PV_BIN OPT_BUF(BV_BIN)
- #define PV_BL OPT_BUF(BV_BL)
-! #ifdef FEAT_MBYTE
-! # define PV_BOMB OPT_BUF(BV_BOMB)
-! #endif
- #define PV_CI OPT_BUF(BV_CI)
- #ifdef FEAT_CINDENT
- # define PV_CIN OPT_BUF(BV_CIN)
---- 66,72 ----
- #endif
- #define PV_BIN OPT_BUF(BV_BIN)
- #define PV_BL OPT_BUF(BV_BL)
-! #define PV_BOMB OPT_BUF(BV_BOMB)
- #define PV_CI OPT_BUF(BV_CI)
- #ifdef FEAT_CINDENT
- # define PV_CIN OPT_BUF(BV_CIN)
-***************
-*** 101,109 ****
- #define PV_FIXEOL OPT_BUF(BV_FIXEOL)
- #define PV_EP OPT_BOTH(OPT_BUF(BV_EP))
- #define PV_ET OPT_BUF(BV_ET)
-! #ifdef FEAT_MBYTE
-! # define PV_FENC OPT_BUF(BV_FENC)
-! #endif
- #if defined(FEAT_BEVAL) && defined(FEAT_EVAL)
- # define PV_BEXPR OPT_BOTH(OPT_BUF(BV_BEXPR))
- #endif
---- 99,105 ----
- #define PV_FIXEOL OPT_BUF(BV_FIXEOL)
- #define PV_EP OPT_BOTH(OPT_BUF(BV_EP))
- #define PV_ET OPT_BUF(BV_ET)
-! #define PV_FENC OPT_BUF(BV_FENC)
- #if defined(FEAT_BEVAL) && defined(FEAT_EVAL)
- # define PV_BEXPR OPT_BOTH(OPT_BUF(BV_BEXPR))
- #endif
-***************
-*** 137,145 ****
- # define PV_LISP OPT_BUF(BV_LISP)
- # define PV_LW OPT_BOTH(OPT_BUF(BV_LW))
- #endif
-! #ifdef FEAT_MBYTE
-! # define PV_MENC OPT_BOTH(OPT_BUF(BV_MENC))
-! #endif
- #define PV_MA OPT_BUF(BV_MA)
- #define PV_ML OPT_BUF(BV_ML)
- #define PV_MOD OPT_BUF(BV_MOD)
---- 133,139 ----
- # define PV_LISP OPT_BUF(BV_LISP)
- # define PV_LW OPT_BOTH(OPT_BUF(BV_LW))
- #endif
-! #define PV_MENC OPT_BOTH(OPT_BUF(BV_MENC))
- #define PV_MA OPT_BUF(BV_MA)
- #define PV_ML OPT_BUF(BV_ML)
- #define PV_MOD OPT_BUF(BV_MOD)
-***************
-*** 281,289 ****
- */
- static int p_ai;
- static int p_bin;
-- #ifdef FEAT_MBYTE
- static int p_bomb;
-- #endif
- static char_u *p_bh;
- static char_u *p_bt;
- static int p_bl;
---- 275,281 ----
-***************
-*** 312,320 ****
- static int p_eol;
- static int p_fixeol;
- static int p_et;
-- #ifdef FEAT_MBYTE
- static char_u *p_fenc;
-- #endif
- static char_u *p_ff;
- static char_u *p_fo;
- static char_u *p_flp;
---- 304,310 ----
-***************
-*** 554,566 ****
- #endif
- {(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
- {"ambiwidth", "ambw", P_STRING|P_VI_DEF|P_RCLR,
-- #if defined(FEAT_MBYTE)
- (char_u *)&p_ambw, PV_NONE,
- {(char_u *)"single", (char_u *)0L}
-- #else
-- (char_u *)NULL, PV_NONE,
-- {(char_u *)0L, (char_u *)0L}
-- #endif
- SCTX_INIT},
- {"autochdir", "acd", P_BOOL|P_VI_DEF,
- #ifdef FEAT_AUTOCHDIR
---- 544,551 ----
-***************
-*** 680,690 ****
- (char_u *)NULL, PV_NONE,
- {(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
- {"bomb", NULL, P_BOOL|P_NO_MKRC|P_VI_DEF|P_RSTAT,
-- #ifdef FEAT_MBYTE
- (char_u *)&p_bomb, PV_BOMB,
-- #else
-- (char_u *)NULL, PV_NONE,
-- #endif
- {(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
- {"breakat", "brk", P_STRING|P_VI_DEF|P_RALL|P_FLAGLIST,
- #ifdef FEAT_LINEBREAK
---- 665,671 ----
-***************
-*** 736,748 ****
- {(char_u *)"", (char_u *)0L}
- SCTX_INIT},
- {"casemap", "cmp", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP,
-- #ifdef FEAT_MBYTE
- (char_u *)&p_cmp, PV_NONE,
- {(char_u *)"internal,keepascii", (char_u *)0L}
-- #else
-- (char_u *)NULL, PV_NONE,
-- {(char_u *)0L, (char_u *)0L}
-- #endif
- SCTX_INIT},
- {"cdpath", "cd", P_STRING|P_EXPAND|P_VI_DEF|P_COMMA|P_NODUP,
- #ifdef FEAT_SEARCHPATH
---- 717,724 ----
-***************
-*** 763,769 ****
- #endif
- SCTX_INIT},
- {"charconvert", "ccv", P_STRING|P_VI_DEF|P_SECURE,
-! #if defined(FEAT_MBYTE) && defined(FEAT_EVAL)
- (char_u *)&p_ccv, PV_NONE,
- {(char_u *)"", (char_u *)0L}
- #else
---- 739,745 ----
- #endif
- SCTX_INIT},
- {"charconvert", "ccv", P_STRING|P_VI_DEF|P_SECURE,
-! #if defined(FEAT_EVAL)
- (char_u *)&p_ccv, PV_NONE,
- {(char_u *)"", (char_u *)0L}
- #else
-***************
-*** 1016,1026 ****
- #endif
- SCTX_INIT},
- {"delcombine", "deco", P_BOOL|P_VI_DEF|P_VIM,
-- #ifdef FEAT_MBYTE
- (char_u *)&p_deco, PV_NONE,
-- #else
-- (char_u *)NULL, PV_NONE,
-- #endif
- {(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
- {"dictionary", "dict", P_STRING|P_EXPAND|P_VI_DEF|P_ONECOMMA|P_NODUP|P_NDNAME,
- #ifdef FEAT_INS_EXPAND
---- 992,998 ----
-***************
-*** 1077,1098 ****
- (char_u *)&p_ed, PV_NONE,
- {(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
- {"emoji", "emo", P_BOOL|P_VI_DEF|P_RCLR,
-- #if defined(FEAT_MBYTE)
- (char_u *)&p_emoji, PV_NONE,
- {(char_u *)TRUE, (char_u *)0L}
-- #else
-- (char_u *)NULL, PV_NONE,
-- {(char_u *)0L, (char_u *)0L}
-- #endif
- SCTX_INIT},
- {"encoding", "enc", P_STRING|P_VI_DEF|P_RCLR|P_NO_ML,
-- #ifdef FEAT_MBYTE
- (char_u *)&p_enc, PV_NONE,
- {(char_u *)ENC_DFLT, (char_u *)0L}
-- #else
-- (char_u *)NULL, PV_NONE,
-- {(char_u *)0L, (char_u *)0L}
-- #endif
- SCTX_INIT},
- {"endofline", "eol", P_BOOL|P_NO_MKRC|P_VI_DEF|P_RSTAT,
- (char_u *)&p_eol, PV_EOL,
---- 1049,1060 ----
-***************
-*** 1138,1159 ****
- {(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
- {"fileencoding","fenc", P_STRING|P_ALLOCED|P_VI_DEF|P_RSTAT|P_RBUF
- |P_NO_MKRC,
-- #ifdef FEAT_MBYTE
- (char_u *)&p_fenc, PV_FENC,
- {(char_u *)"", (char_u *)0L}
-- #else
-- (char_u *)NULL, PV_NONE,
-- {(char_u *)0L, (char_u *)0L}
-- #endif
- SCTX_INIT},
- {"fileencodings","fencs", P_STRING|P_VI_DEF|P_ONECOMMA,
-- #ifdef FEAT_MBYTE
- (char_u *)&p_fencs, PV_NONE,
- {(char_u *)"ucs-bom", (char_u *)0L}
-- #else
-- (char_u *)NULL, PV_NONE,
-- {(char_u *)0L, (char_u *)0L}
-- #endif
- SCTX_INIT},
- {"fileformat", "ff", P_STRING|P_ALLOCED|P_VI_DEF|P_RSTAT|P_NO_MKRC
- |P_CURSWANT,
---- 1100,1111 ----
-***************
-*** 1416,1422 ****
- #endif
- SCTX_INIT},
- {"guifontwide", "gfw", P_STRING|P_VI_DEF|P_RCLR|P_ONECOMMA|P_NODUP,
-! #if defined(FEAT_GUI) && defined(FEAT_MBYTE)
- (char_u *)&p_guifontwide, PV_NONE,
- {(char_u *)"", (char_u *)0L}
- #else
---- 1368,1374 ----
- #endif
- SCTX_INIT},
- {"guifontwide", "gfw", P_STRING|P_VI_DEF|P_RCLR|P_ONECOMMA|P_NODUP,
-! #if defined(FEAT_GUI)
- (char_u *)&p_guifontwide, PV_NONE,
- {(char_u *)"", (char_u *)0L}
- #else
-***************
-*** 1533,1539 ****
- (char_u *)&p_ic, PV_NONE,
- {(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
- {"imactivatefunc","imaf",P_STRING|P_VI_DEF|P_SECURE,
-! #if defined(FEAT_EVAL) && defined(FEAT_MBYTE)
- (char_u *)&p_imaf, PV_NONE,
- {(char_u *)"", (char_u *)NULL}
- # else
---- 1485,1491 ----
- (char_u *)&p_ic, PV_NONE,
- {(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
- {"imactivatefunc","imaf",P_STRING|P_VI_DEF|P_SECURE,
-! #if defined(FEAT_EVAL)
- (char_u *)&p_imaf, PV_NONE,
- {(char_u *)"", (char_u *)NULL}
- # else
-***************
-*** 1549,1566 ****
- #endif
- {(char_u *)"", (char_u *)0L} SCTX_INIT},
- {"imcmdline", "imc", P_BOOL|P_VI_DEF,
-- #ifdef FEAT_MBYTE
- (char_u *)&p_imcmdline, PV_NONE,
-- #else
-- (char_u *)NULL, PV_NONE,
-- #endif
- {(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
- {"imdisable", "imd", P_BOOL|P_VI_DEF,
-- #ifdef FEAT_MBYTE
- (char_u *)&p_imdisable, PV_NONE,
-- #else
-- (char_u *)NULL, PV_NONE,
-- #endif
- #ifdef __sgi
- {(char_u *)TRUE, (char_u *)0L}
- #else
---- 1501,1510 ----
-***************
-*** 1576,1582 ****
- {(char_u *)B_IMODE_USE_INSERT, (char_u *)0L}
- SCTX_INIT},
- {"imstatusfunc","imsf",P_STRING|P_VI_DEF|P_SECURE,
-! #if defined(FEAT_EVAL) && defined(FEAT_MBYTE)
- (char_u *)&p_imsf, PV_NONE,
- {(char_u *)"", (char_u *)NULL}
- #else
---- 1520,1526 ----
- {(char_u *)B_IMODE_USE_INSERT, (char_u *)0L}
- SCTX_INIT},
- {"imstatusfunc","imsf",P_STRING|P_VI_DEF|P_SECURE,
-! #if defined(FEAT_EVAL)
- (char_u *)&p_imsf, PV_NONE,
- {(char_u *)"", (char_u *)NULL}
- #else
-***************
-*** 1872,1884 ****
- #endif
- SCTX_INIT},
- {"makeencoding","menc", P_STRING|P_VI_DEF,
-- #ifdef FEAT_MBYTE
- (char_u *)&p_menc, PV_MENC,
- {(char_u *)"", (char_u *)0L}
-- #else
-- (char_u *)NULL, PV_NONE,
-- {(char_u *)0L, (char_u *)0L}
-- #endif
- SCTX_INIT},
- {"makeprg", "mp", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
- #ifdef FEAT_QUICKFIX
---- 1816,1823 ----
-***************
-*** 1901,1911 ****
- (char_u *)&p_mat, PV_NONE,
- {(char_u *)5L, (char_u *)0L} SCTX_INIT},
- {"maxcombine", "mco", P_NUM|P_VI_DEF|P_CURSWANT,
-- #ifdef FEAT_MBYTE
- (char_u *)&p_mco, PV_NONE,
-- #else
-- (char_u *)NULL, PV_NONE,
-- #endif
- {(char_u *)2, (char_u *)0L} SCTX_INIT},
- {"maxfuncdepth", "mfd", P_NUM|P_VI_DEF,
- #ifdef FEAT_EVAL
---- 1840,1846 ----
-***************
-*** 2197,2203 ****
- #endif
- SCTX_INIT},
- {"printmbcharset", "pmbcs", P_STRING|P_VI_DEF,
-! #if defined(FEAT_POSTSCRIPT) && defined(FEAT_MBYTE)
- (char_u *)&p_pmcs, PV_NONE,
- {(char_u *)"", (char_u *)0L}
- #else
---- 2132,2138 ----
- #endif
- SCTX_INIT},
- {"printmbcharset", "pmbcs", P_STRING|P_VI_DEF,
-! #if defined(FEAT_POSTSCRIPT)
- (char_u *)&p_pmcs, PV_NONE,
- {(char_u *)"", (char_u *)0L}
- #else
-***************
-*** 2206,2212 ****
- #endif
- SCTX_INIT},
- {"printmbfont", "pmbfn", P_STRING|P_VI_DEF,
-! #if defined(FEAT_POSTSCRIPT) && defined(FEAT_MBYTE)
- (char_u *)&p_pmfn, PV_NONE,
- {(char_u *)"", (char_u *)0L}
- #else
---- 2141,2147 ----
- #endif
- SCTX_INIT},
- {"printmbfont", "pmbfn", P_STRING|P_VI_DEF,
-! #if defined(FEAT_POSTSCRIPT)
- (char_u *)&p_pmfn, PV_NONE,
- {(char_u *)"", (char_u *)0L}
- #else
-***************
-*** 2748,2760 ****
- #endif
- {(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
- {"termencoding", "tenc", P_STRING|P_VI_DEF|P_RCLR,
-- #ifdef FEAT_MBYTE
- (char_u *)&p_tenc, PV_NONE,
- {(char_u *)"", (char_u *)0L}
-- #else
-- (char_u *)NULL, PV_NONE,
-- {(char_u *)0L, (char_u *)0L}
-- #endif
- SCTX_INIT},
- {"termguicolors", "tgc", P_BOOL|P_VI_DEF|P_VIM|P_RCLR,
- #ifdef FEAT_TERMGUICOLORS
---- 2683,2690 ----
-***************
-*** 3238,3246 ****
-
- #define PARAM_COUNT (sizeof(options) / sizeof(struct vimoption))
-
-- #ifdef FEAT_MBYTE
- static char *(p_ambw_values[]) = {"single", "double", NULL};
-- #endif
- static char *(p_bg_values[]) = {"light", "dark", NULL};
- static char *(p_nf_values[]) = {"bin", "octal", "hex", "alpha", NULL};
- static char *(p_ff_values[]) = {FF_UNIX, FF_DOS, FF_MAC, NULL};
---- 3168,3174 ----
-***************
-*** 3643,3649 ****
-
- didset_options2();
-
-- #ifdef FEAT_MBYTE
- # if defined(WIN3264) && defined(FEAT_GETTEXT)
- /*
- * If $LANG isn't set, try to get a good value for it. This makes the
---- 3571,3576 ----
-***************
-*** 3727,3733 ****
- }
- #endif
-
-! # if defined(WIN3264) && !defined(FEAT_GUI)
- /* Win32 console: When GetACP() returns a different value from
- * GetConsoleCP() set 'termencoding'. */
- if (GetACP() != GetConsoleCP())
---- 3654,3660 ----
- }
- #endif
-
-! #if defined(WIN3264) && !defined(FEAT_GUI)
- /* Win32 console: When GetACP() returns a different value from
- * GetConsoleCP() set 'termencoding'. */
- if (GetACP() != GetConsoleCP())
-***************
-*** 3750,3760 ****
- else
- p_tenc = empty_option;
- }
-! # endif
-! # if defined(WIN3264) && defined(FEAT_MBYTE)
- /* $HOME may have characters in active code page. */
- init_homedir();
-! # endif
- }
- else
- {
---- 3677,3687 ----
- else
- p_tenc = empty_option;
- }
-! #endif
-! #if defined(WIN3264)
- /* $HOME may have characters in active code page. */
- init_homedir();
-! #endif
- }
- else
- {
-***************
-*** 3762,3768 ****
- p_enc = save_enc;
- }
- }
-- #endif
-
- #ifdef FEAT_MULTI_LANG
- /* Set the default for 'helplang'. */
---- 3689,3694 ----
-***************
-*** 3859,3877 ****
-
- for (i = 0; !istermoption(&options[i]); i++)
- if (!(options[i].flags & P_NODEFAULT)
-- #if defined(FEAT_MBYTE) || defined(FEAT_CRYPT)
- && (opt_flags == 0
-! || (TRUE
-! # if defined(FEAT_MBYTE)
-! && options[i].var != (char_u *)&p_enc
-! # endif
- # if defined(FEAT_CRYPT)
- && options[i].var != (char_u *)&p_cm
- && options[i].var != (char_u *)&p_key
- # endif
-! ))
-! #endif
-! )
- set_option_default(i, opt_flags, p_cp);
-
- /* The 'scroll' option must be computed for all windows. */
---- 3785,3797 ----
-
- for (i = 0; !istermoption(&options[i]); i++)
- if (!(options[i].flags & P_NODEFAULT)
- && (opt_flags == 0
-! || (options[i].var != (char_u *)&p_enc
- # if defined(FEAT_CRYPT)
- && options[i].var != (char_u *)&p_cm
- && options[i].var != (char_u *)&p_key
- # endif
-! )))
- set_option_default(i, opt_flags, p_cp);
-
- /* The 'scroll' option must be computed for all windows. */
-***************
-*** 5018,5024 ****
- #endif
- )
- ++arg; /* remove backslash */
-- #ifdef FEAT_MBYTE
- if (has_mbyte
- && (i = (*mb_ptr2len)(arg)) > 1)
- {
---- 4938,4943 ----
-***************
-*** 5028,5034 ****
- s += i;
- }
- else
-- #endif
- *s++ = *arg++;
- }
- *s = NUL;
---- 4947,4952 ----
-***************
-*** 5596,5604 ****
- /* initialize the table for 'iskeyword' et.al. */
- (void)init_chartab();
-
-- #ifdef FEAT_MBYTE
- (void)opt_strings_flags(p_cmp, p_cmp_values, &cmp_flags, TRUE);
-- #endif
- (void)opt_strings_flags(p_bkc, p_bkc_values, &bkc_flags, TRUE);
- (void)opt_strings_flags(p_bo, p_bo_values, &bo_flags, TRUE);
- #ifdef FEAT_SESSION
---- 5514,5520 ----
-***************
-*** 5689,5697 ****
- {
- check_string_option(&buf->b_p_bh);
- check_string_option(&buf->b_p_bt);
-- #ifdef FEAT_MBYTE
- check_string_option(&buf->b_p_fenc);
-- #endif
- check_string_option(&buf->b_p_ff);
- #ifdef FEAT_FIND_ID
- check_string_option(&buf->b_p_def);
---- 5605,5611 ----
-***************
-*** 5780,5788 ****
- check_string_option(&buf->b_p_lw);
- #endif
- check_string_option(&buf->b_p_bkc);
-- #ifdef FEAT_MBYTE
- check_string_option(&buf->b_p_menc);
-- #endif
- #ifdef FEAT_VARTABS
- check_string_option(&buf->b_p_vsts);
- check_string_option(&buf->b_p_vts);
---- 5694,5700 ----
-***************
-*** 6318,6324 ****
- }
-
- /* 'ambiwidth' */
-- #ifdef FEAT_MBYTE
- else if (varp == &p_ambw || varp == &p_emoji)
- {
- if (check_opt_strings(p_ambw, p_ambw_values, FALSE) != OK)
---- 6230,6235 ----
-***************
-*** 6328,6334 ****
- else if (set_chars_option(&p_fcs) != NULL)
- errmsg = _("E835: Conflicts with value of 'fillchars'");
- }
-- #endif
-
- /* 'background' */
- else if (varp == &p_bg)
---- 6239,6244 ----
-***************
-*** 6404,6410 ****
- errmsg = e_invarg;
- }
-
-- #ifdef FEAT_MBYTE
- /* 'encoding', 'fileencoding', 'termencoding' and 'makeencoding' */
- else if (varp == &p_enc || gvarp == &p_fenc || varp == &p_tenc
- || gvarp == &p_menc)
---- 6314,6319 ----
-***************
-*** 6419,6428 ****
- errmsg = e_invarg;
- else
- {
-! # ifdef FEAT_TITLE
- /* May show a "+" in the title now. */
- redraw_titles();
-! # endif
- /* Add 'fileencoding' to the swap file. */
- ml_setflags(curbuf);
- }
---- 6328,6337 ----
- errmsg = e_invarg;
- else
- {
-! #ifdef FEAT_TITLE
- /* May show a "+" in the title now. */
- redraw_titles();
-! #endif
- /* Add 'fileencoding' to the swap file. */
- ml_setflags(curbuf);
- }
-***************
-*** 6439,6467 ****
- if (varp == &p_enc)
- {
- errmsg = mb_init();
-! # ifdef FEAT_TITLE
- redraw_titles();
-! # endif
- }
- }
-
-! # if defined(FEAT_GUI_GTK)
- if (errmsg == NULL && varp == &p_tenc && gui.in_use)
- {
- /* GTK+ 2 uses only a single encoding, and that is UTF-8. */
- if (STRCMP(p_tenc, "utf-8") != 0)
- errmsg = N_("E617: Cannot be changed in the GTK+ 2 GUI");
- }
-! # endif
-
- if (errmsg == NULL)
- {
-! # ifdef FEAT_KEYMAP
- /* When 'keymap' is used and 'encoding' changes, reload the keymap
- * (with another encoding). */
- if (varp == &p_enc && *curbuf->b_p_keymap != NUL)
- (void)keymap_init();
-! # endif
-
- /* When 'termencoding' is not empty and 'encoding' changes or when
- * 'termencoding' changes, need to setup for keyboard input and
---- 6348,6376 ----
- if (varp == &p_enc)
- {
- errmsg = mb_init();
-! #ifdef FEAT_TITLE
- redraw_titles();
-! #endif
- }
- }
-
-! #if defined(FEAT_GUI_GTK)
- if (errmsg == NULL && varp == &p_tenc && gui.in_use)
- {
- /* GTK+ 2 uses only a single encoding, and that is UTF-8. */
- if (STRCMP(p_tenc, "utf-8") != 0)
- errmsg = N_("E617: Cannot be changed in the GTK+ 2 GUI");
- }
-! #endif
-
- if (errmsg == NULL)
- {
-! #ifdef FEAT_KEYMAP
- /* When 'keymap' is used and 'encoding' changes, reload the keymap
- * (with another encoding). */
- if (varp == &p_enc && *curbuf->b_p_keymap != NUL)
- (void)keymap_init();
-! #endif
-
- /* When 'termencoding' is not empty and 'encoding' changes or when
- * 'termencoding' changes, need to setup for keyboard input and
-***************
-*** 6477,6490 ****
- }
- }
-
-! # if defined(WIN3264) && defined(FEAT_MBYTE)
- /* $HOME may have characters in active code page. */
- if (varp == &p_enc)
- init_homedir();
-! # endif
- }
- }
-- #endif
-
- #if defined(FEAT_POSTSCRIPT)
- else if (varp == &p_penc)
---- 6386,6398 ----
- }
- }
-
-! #if defined(WIN3264)
- /* $HOME may have characters in active code page. */
- if (varp == &p_enc)
- init_homedir();
-! #endif
- }
- }
-
- #if defined(FEAT_POSTSCRIPT)
- else if (varp == &p_penc)
-***************
-*** 6684,6690 ****
- /* 'matchpairs' */
- else if (gvarp == &p_mps)
- {
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- {
- for (p = *varp; *p != NUL; ++p)
---- 6592,6597 ----
-***************
-*** 6711,6717 ****
- }
- }
- else
-- #endif
- {
- /* Check for "x:y,x:y" */
- for (p = *varp; *p != NUL; p += 4)
---- 6618,6623 ----
-***************
-*** 6971,6977 ****
- redraw_gui_only = TRUE;
- }
- # endif
-- # ifdef FEAT_MBYTE
- else if (varp == &p_guifontwide)
- {
- if (STRCMP(p_guifontwide, "*") == 0)
---- 6877,6882 ----
-***************
-*** 6980,6986 ****
- errmsg = N_("E534: Invalid wide font");
- redraw_gui_only = TRUE;
- }
-- # endif
- #endif
-
- #ifdef CURSOR_SHAPE
---- 6885,6890 ----
-***************
-*** 7001,7007 ****
- #ifdef FEAT_PRINTER
- else if (varp == &p_popt)
- errmsg = parse_printoptions();
-! # if defined(FEAT_MBYTE) && defined(FEAT_POSTSCRIPT)
- else if (varp == &p_pmfn)
- errmsg = parse_printmbfont();
- # endif
---- 6905,6911 ----
- #ifdef FEAT_PRINTER
- else if (varp == &p_popt)
- errmsg = parse_printoptions();
-! # if defined(FEAT_POSTSCRIPT)
- else if (varp == &p_pmfn)
- errmsg = parse_printmbfont();
- # endif
-***************
-*** 7395,7408 ****
- errmsg = e_invarg;
- }
-
-- #ifdef FEAT_MBYTE
- /* 'casemap' */
- else if (varp == &p_cmp)
- {
- if (opt_strings_flags(p_cmp, p_cmp_values, &cmp_flags, TRUE) != OK)
- errmsg = e_invarg;
- }
-- #endif
-
- #ifdef FEAT_DIFF
- /* 'diffopt' */
---- 7299,7310 ----
-***************
-*** 8022,8054 ****
- {
- c1 = c2 = c3 = 0;
- s = p + len + 1;
-- #ifdef FEAT_MBYTE
- c1 = mb_ptr2char_adv(&s);
- if (mb_char2cells(c1) > 1)
- continue;
-- #else
-- c1 = *s++;
-- #endif
- if (tab[i].cp == &lcs_tab2)
- {
- if (*s == NUL)
- continue;
-- #ifdef FEAT_MBYTE
- c2 = mb_ptr2char_adv(&s);
- if (mb_char2cells(c2) > 1)
- continue;
-- #else
-- c2 = *s++;
-- #endif
- if (!(*s == ',' || *s == NUL))
- {
-- #ifdef FEAT_MBYTE
- c3 = mb_ptr2char_adv(&s);
- if (mb_char2cells(c3) > 1)
- continue;
-- #else
-- c3 = *s++;
-- #endif
- }
- }
-
---- 7924,7944 ----
-***************
-*** 8506,8518 ****
- {
- redraw_titles();
- }
-- # ifdef FEAT_MBYTE
- /* when 'bomb' is changed, redraw the window title and tab page text */
- else if ((int *)varp == &curbuf->b_p_bomb)
- {
- redraw_titles();
- }
-- # endif
- #endif
-
- /* when 'bin' is set also set some other options */
---- 8396,8406 ----
-***************
-*** 8891,8900 ****
- #endif
- }
-
-- # ifdef FEAT_MBYTE
- /* set 'delcombine' */
- p_deco = TRUE;
-- # endif
-
- # ifdef FEAT_KEYMAP
- /* Force-set the necessary keymap for arabic */
---- 8779,8786 ----
-***************
-*** 9210,9216 ****
- }
- #endif
-
-- #ifdef FEAT_MBYTE
- /* 'maxcombine' */
- else if (pp == &p_mco)
- {
---- 9096,9101 ----
-***************
-*** 9220,9226 ****
- p_mco = 0;
- screenclear(); /* will re-allocate the screen */
- }
-- #endif
-
- else if (pp == &curbuf->b_p_iminsert)
- {
---- 9105,9110 ----
-***************
-*** 10078,10084 ****
- return (char_u *)NULL;
- }
-
-- #if defined(FEAT_MBYTE) || defined(PROTO)
- char_u *
- get_encoding_default(void)
- {
---- 9962,9967 ----
-***************
-*** 10089,10095 ****
- return options[i].def_val[VI_DEFAULT];
- return (char_u *)NULL;
- }
-- #endif
-
- /*
- * Translate a string like "t_xx", "<t_xx>" or "<S-Tab>" to a key number.
---- 9972,9977 ----
-***************
-*** 10794,10804 ****
- clear_string_option(&buf->b_p_lw);
- break;
- #endif
-- #ifdef FEAT_MBYTE
- case PV_MENC:
- clear_string_option(&buf->b_p_menc);
- break;
-- #endif
- }
- }
- #endif
---- 10676,10684 ----
-***************
-*** 10853,10861 ****
- case PV_LW: return (char_u *)&(curbuf->b_p_lw);
- #endif
- case PV_BKC: return (char_u *)&(curbuf->b_p_bkc);
-- #ifdef FEAT_MBYTE
- case PV_MENC: return (char_u *)&(curbuf->b_p_menc);
-- #endif
- }
- return NULL; /* "cannot happen" */
- }
---- 10733,10739 ----
-***************
-*** 10931,10940 ****
- case PV_LW: return *curbuf->b_p_lw != NUL
- ? (char_u *)&(curbuf->b_p_lw) : p->var;
- #endif
-- #ifdef FEAT_MBYTE
- case PV_MENC: return *curbuf->b_p_menc != NUL
- ? (char_u *)&(curbuf->b_p_menc) : p->var;
-- #endif
-
- #ifdef FEAT_ARABIC
- case PV_ARAB: return (char_u *)&(curwin->w_p_arab);
---- 10809,10816 ----
-***************
-*** 11000,11008 ****
-
- case PV_AI: return (char_u *)&(curbuf->b_p_ai);
- case PV_BIN: return (char_u *)&(curbuf->b_p_bin);
-- #ifdef FEAT_MBYTE
- case PV_BOMB: return (char_u *)&(curbuf->b_p_bomb);
-- #endif
- case PV_BH: return (char_u *)&(curbuf->b_p_bh);
- case PV_BT: return (char_u *)&(curbuf->b_p_bt);
- case PV_BL: return (char_u *)&(curbuf->b_p_bl);
---- 10876,10882 ----
-***************
-*** 11031,11039 ****
- case PV_EOL: return (char_u *)&(curbuf->b_p_eol);
- case PV_FIXEOL: return (char_u *)&(curbuf->b_p_fixeol);
- case PV_ET: return (char_u *)&(curbuf->b_p_et);
-- #ifdef FEAT_MBYTE
- case PV_FENC: return (char_u *)&(curbuf->b_p_fenc);
-- #endif
- case PV_FF: return (char_u *)&(curbuf->b_p_ff);
- case PV_FT: return (char_u *)&(curbuf->b_p_ft);
- case PV_FO: return (char_u *)&(curbuf->b_p_fo);
---- 10905,10911 ----
-***************
-*** 11378,11386 ****
- free_buf_options(buf, TRUE);
- buf->b_p_ro = FALSE; /* don't copy readonly */
- buf->b_p_tx = p_tx;
-- #ifdef FEAT_MBYTE
- buf->b_p_fenc = vim_strsave(p_fenc);
-- #endif
- switch (*p_ffs)
- {
- case 'm':
---- 11250,11256 ----
-***************
-*** 11410,11418 ****
- buf->b_p_wm_nopaste = p_wm_nopaste;
- buf->b_p_wm_nobin = p_wm_nobin;
- buf->b_p_bin = p_bin;
-- #ifdef FEAT_MBYTE
- buf->b_p_bomb = p_bomb;
-- #endif
- buf->b_p_fixeol = p_fixeol;
- buf->b_p_et = p_et;
- buf->b_p_et_nobin = p_et_nobin;
---- 11280,11286 ----
-***************
-*** 11549,11557 ****
- #ifdef FEAT_LISP
- buf->b_p_lw = empty_option;
- #endif
-- #ifdef FEAT_MBYTE
- buf->b_p_menc = empty_option;
-- #endif
-
- /*
- * Don't copy the options set by ex_help(), use the saved values,
---- 11417,11423 ----
-***************
-*** 12137,12149 ****
- *
- * langmap_mapchar[] maps any of 256 chars to an ASCII char used for Vim
- * commands.
-! * When FEAT_MBYTE is defined langmap_mapga.ga_data is a sorted table of
-! * langmap_entry_T. This does the same as langmap_mapchar[] for characters >=
-! * 256.
-! */
-! # if defined(FEAT_MBYTE) || defined(PROTO)
-! /*
-! * With multi-byte support use growarray for 'langmap' chars >= 256
- */
- typedef struct
- {
---- 12003,12012 ----
- *
- * langmap_mapchar[] maps any of 256 chars to an ASCII char used for Vim
- * commands.
-! * langmap_mapga.ga_data is a sorted table of langmap_entry_T. This does the
-! * same as langmap_mapchar[] for characters >= 256.
-! *
-! * Use growarray for 'langmap' chars >= 256
- */
- typedef struct
- {
-***************
-*** 12217,12223 ****
- }
- return c; /* no entry found, return "c" unmodified */
- }
-- # endif
-
- static void
- langmap_init(void)
---- 12080,12085 ----
-***************
-*** 12226,12234 ****
-
- for (i = 0; i < 256; i++)
- langmap_mapchar[i] = i; /* we init with a one-to-one map */
-- # ifdef FEAT_MBYTE
- ga_init2(&langmap_mapga, sizeof(langmap_entry_T), 8);
-- # endif
- }
-
- /*
---- 12088,12094 ----
-***************
-*** 12242,12250 ****
- char_u *p2;
- int from, to;
-
-- #ifdef FEAT_MBYTE
- ga_clear(&langmap_mapga); /* clear the previous map first */
-- #endif
- langmap_init(); /* back to one-to-one map */
-
- for (p = p_langmap; p[0] != NUL; )
---- 12102,12108 ----
-***************
-*** 12268,12278 ****
- }
- if (p[0] == '\\' && p[1] != NUL)
- ++p;
-- #ifdef FEAT_MBYTE
- from = (*mb_ptr2char)(p);
-- #else
-- from = p[0];
-- #endif
- to = NUL;
- if (p2 == NULL)
- {
---- 12126,12132 ----
-***************
-*** 12281,12291 ****
- {
- if (p[0] == '\\')
- ++p;
-- #ifdef FEAT_MBYTE
- to = (*mb_ptr2char)(p);
-- #else
-- to = p[0];
-- #endif
- }
- }
- else
---- 12135,12141 ----
-***************
-*** 12294,12304 ****
- {
- if (p2[0] == '\\')
- ++p2;
-- #ifdef FEAT_MBYTE
- to = (*mb_ptr2char)(p2);
-- #else
-- to = p2[0];
-- #endif
- }
- }
- if (to == NUL)
---- 12144,12150 ----
-***************
-*** 12308,12318 ****
- return;
- }
-
-- #ifdef FEAT_MBYTE
- if (from >= 256)
- langmap_set_entry(from, to);
- else
-- #endif
- langmap_mapchar[from & 255] = to;
-
- /* Advance to next pair */
---- 12154,12162 ----
-***************
-*** 12813,12819 ****
- {
- buf->b_start_ffc = *buf->b_p_ff;
- buf->b_start_eol = buf->b_p_eol;
-- #ifdef FEAT_MBYTE
- buf->b_start_bomb = buf->b_p_bomb;
-
- /* Only use free/alloc when necessary, they take time. */
---- 12657,12662 ----
-***************
-*** 12823,12829 ****
- vim_free(buf->b_start_fenc);
- buf->b_start_fenc = vim_strsave(buf->b_p_fenc);
- }
-- #endif
- }
-
- /*
---- 12666,12671 ----
-***************
-*** 12850,12864 ****
- return TRUE;
- if ((buf->b_p_bin || !buf->b_p_fixeol) && buf->b_start_eol != buf->b_p_eol)
- return TRUE;
-- #ifdef FEAT_MBYTE
- if (!buf->b_p_bin && buf->b_start_bomb != buf->b_p_bomb)
- return TRUE;
- if (buf->b_start_fenc == NULL)
- return (*buf->b_p_fenc != NUL);
- return (STRCMP(buf->b_start_fenc, buf->b_p_fenc) != 0);
-- #else
-- return FALSE;
-- #endif
- }
-
- /*
---- 12692,12702 ----
-***************
-*** 13244,13250 ****
- ptr = curbuf->b_p_mps;
- while (*ptr != NUL)
- {
-- #ifdef FEAT_MBYTE
- if (has_mbyte)
- {
- char_u *prev;
---- 13082,13087 ----
-***************
-*** 13284,13290 ****
- ptr += mb_ptr2len(ptr);
- }
- else
-- #endif
- {
- if (*ptr == *initc)
- {
---- 13121,13126 ----
-*** ../vim-8.1.0805/src/charset.c 2019-01-24 15:04:44.662887892 +0100
---- src/charset.c 2019-01-24 15:52:54.887433134 +0100
-***************
-*** 1266,1272 ****
- #endif
- )
- {
-- head = 0;
- for (;;)
- {
- head = 0;
---- 1266,1271 ----
-*** ../vim-8.1.0805/src/version.c 2019-01-24 15:04:44.674887811 +0100
---- src/version.c 2019-01-24 15:50:45.136358654 +0100
-***************
-*** 793,794 ****
---- 793,796 ----
- { /* Add new patch number below this line */
-+ /**/
-+ 806,
- /**/
-
---
-"Never be afraid to tell the world who you are."
- -- Anonymous
-
- /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
-/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
-\\\ an exciting new programming language -- http://www.Zimbu.org ///
- \\\ help me help AIDS victims -- http://ICCF-Holland.org ///