summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.1081
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.1081')
-rw-r--r--data/vim/patches/8.1.10811264
1 files changed, 0 insertions, 1264 deletions
diff --git a/data/vim/patches/8.1.1081 b/data/vim/patches/8.1.1081
deleted file mode 100644
index 9b833db8c..000000000
--- a/data/vim/patches/8.1.1081
+++ /dev/null
@@ -1,1264 +0,0 @@
-To: vim_dev@googlegroups.com
-Subject: Patch 8.1.1081
-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.1081
-Problem: MS-Windows: cannot use fonts whose name cannot be represented in
- the current code page.
-Solution: Use wide font functions. (Ken Takata, closes #4000)
-Files: src/gui_w32.c, src/os_mswin.c, src/proto/gui_w32.pro,
- src/proto/os_mswin.pro
-
-
-*** ../vim-8.1.1080/src/gui_w32.c 2019-03-28 22:43:12.103997449 +0100
---- src/gui_w32.c 2019-03-30 16:20:37.994106945 +0100
-***************
-*** 253,259 ****
- typedef int HBRUSH;
- typedef int HDROP;
- typedef int INT;
-! typedef int LOGFONT[];
- typedef int LPARAM;
- typedef int LPCREATESTRUCT;
- typedef int LPCSTR;
---- 253,259 ----
- typedef int HBRUSH;
- typedef int HDROP;
- typedef int INT;
-! typedef int LOGFONTW[];
- typedef int LPARAM;
- typedef int LPCREATESTRUCT;
- typedef int LPCSTR;
-***************
-*** 501,515 ****
- /*
- * For control IME.
- *
-! * These LOGFONT used for IME.
- */
- #if defined(FEAT_MBYTE_IME) || defined(GLOBAL_IME)
-! /* holds LOGFONT for 'guifontwide' if available, otherwise 'guifont' */
-! static LOGFONT norm_logfont;
- #endif
- #ifdef FEAT_MBYTE_IME
-! /* holds LOGFONT for 'guifont' always. */
-! static LOGFONT sub_logfont;
- #endif
-
- #ifdef FEAT_MBYTE_IME
---- 501,515 ----
- /*
- * For control IME.
- *
-! * These LOGFONTW used for IME.
- */
- #if defined(FEAT_MBYTE_IME) || defined(GLOBAL_IME)
-! /* holds LOGFONTW for 'guifontwide' if available, otherwise 'guifont' */
-! static LOGFONTW norm_logfont;
- #endif
- #ifdef FEAT_MBYTE_IME
-! /* holds LOGFONTW for 'guifont' always. */
-! static LOGFONTW sub_logfont;
- #endif
-
- #ifdef FEAT_MBYTE_IME
-***************
-*** 1520,1531 ****
- }
-
- static GuiFont
-! get_font_handle(LOGFONT *lf)
- {
- HFONT font = NULL;
-
- /* Load the font */
-! font = CreateFontIndirect(lf);
-
- if (font == NULL)
- return NOFONT;
---- 1520,1531 ----
- }
-
- static GuiFont
-! get_font_handle(LOGFONTW *lf)
- {
- HFONT font = NULL;
-
- /* Load the font */
-! font = CreateFontIndirectW(lf);
-
- if (font == NULL)
- return NOFONT;
-***************
-*** 1556,1562 ****
- char_u *name,
- int giveErrorIfMissing)
- {
-! LOGFONT lf;
- GuiFont font = NOFONT;
-
- if (get_logfont(&lf, name, NULL, giveErrorIfMissing) == OK)
---- 1556,1562 ----
- char_u *name,
- int giveErrorIfMissing)
- {
-! LOGFONTW lf;
- GuiFont font = NOFONT;
-
- if (get_logfont(&lf, name, NULL, giveErrorIfMissing) == OK)
-***************
-*** 3201,3223 ****
- }
-
- static char_u *
-! logfont2name(LOGFONT lf)
- {
- char *p;
- char *res;
- char *charset_name;
- char *quality_name;
-! char *font_name = lf.lfFaceName;
-
- charset_name = charset_id2name((int)lf.lfCharSet);
-- /* 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)
-- {
-- int len;
-- acp_to_enc((char_u *)lf.lfFaceName, (int)strlen(lf.lfFaceName),
-- (char_u **)&font_name, &len);
-- }
- quality_name = quality_id2name((int)lf.lfQuality);
-
- res = (char *)alloc((unsigned)(strlen(font_name) + 20
---- 3201,3218 ----
- }
-
- static char_u *
-! logfont2name(LOGFONTW lf)
- {
- char *p;
- char *res;
- char *charset_name;
- char *quality_name;
-! char *font_name;
-
-+ font_name = (char *)utf16_to_enc(lf.lfFaceName, NULL);
-+ if (font_name == NULL)
-+ return NULL;
- charset_name = charset_id2name((int)lf.lfCharSet);
- quality_name = quality_id2name((int)lf.lfQuality);
-
- res = (char *)alloc((unsigned)(strlen(font_name) + 20
-***************
-*** 3254,3278 ****
- }
- }
-
-! if (font_name != lf.lfFaceName)
-! vim_free(font_name);
- return (char_u *)res;
- }
-
-
- #ifdef FEAT_MBYTE_IME
- /*
-! * Set correct LOGFONT to IME. Use 'guifontwide' if available, otherwise use
- * 'guifont'
- */
- static void
- update_im_font(void)
- {
-! LOGFONT lf_wide;
-
- if (p_guifontwide != NULL && *p_guifontwide != NUL
- && gui.wide_font != NOFONT
-! && GetObject((HFONT)gui.wide_font, sizeof(lf_wide), &lf_wide))
- norm_logfont = lf_wide;
- else
- norm_logfont = sub_logfont;
---- 3249,3272 ----
- }
- }
-
-! vim_free(font_name);
- return (char_u *)res;
- }
-
-
- #ifdef FEAT_MBYTE_IME
- /*
-! * Set correct LOGFONTW to IME. Use 'guifontwide' if available, otherwise use
- * 'guifont'
- */
- static void
- update_im_font(void)
- {
-! LOGFONTW lf_wide;
-
- if (p_guifontwide != NULL && *p_guifontwide != NUL
- && gui.wide_font != NOFONT
-! && GetObjectW((HFONT)gui.wide_font, sizeof(lf_wide), &lf_wide))
- norm_logfont = lf_wide;
- else
- norm_logfont = sub_logfont;
-***************
-*** 3286,3292 ****
- void
- gui_mch_wide_font_changed(void)
- {
-! LOGFONT lf;
-
- #ifdef FEAT_MBYTE_IME
- update_im_font();
---- 3280,3286 ----
- void
- gui_mch_wide_font_changed(void)
- {
-! LOGFONTW lf;
-
- #ifdef FEAT_MBYTE_IME
- update_im_font();
-***************
-*** 3300,3306 ****
- gui.wide_boldital_font = NOFONT;
-
- if (gui.wide_font
-! && GetObject((HFONT)gui.wide_font, sizeof(lf), &lf))
- {
- if (!lf.lfItalic)
- {
---- 3294,3300 ----
- gui.wide_boldital_font = NOFONT;
-
- if (gui.wide_font
-! && GetObjectW((HFONT)gui.wide_font, sizeof(lf), &lf))
- {
- if (!lf.lfItalic)
- {
-***************
-*** 3328,3334 ****
- int
- gui_mch_init_font(char_u *font_name, int fontset UNUSED)
- {
-! LOGFONT lf;
- GuiFont font = NOFONT;
- char_u *p;
-
---- 3322,3328 ----
- int
- gui_mch_init_font(char_u *font_name, int fontset UNUSED)
- {
-! LOGFONTW lf;
- GuiFont font = NOFONT;
- char_u *p;
-
-***************
-*** 4225,4232 ****
- static BOOL (WINAPI *pImmReleaseContext)(HWND, HIMC);
- static BOOL (WINAPI *pImmGetOpenStatus)(HIMC);
- static BOOL (WINAPI *pImmSetOpenStatus)(HIMC, BOOL);
-! static BOOL (WINAPI *pImmGetCompositionFont)(HIMC, LPLOGFONTA);
-! static BOOL (WINAPI *pImmSetCompositionFont)(HIMC, LPLOGFONTA);
- static BOOL (WINAPI *pImmSetCompositionWindow)(HIMC, LPCOMPOSITIONFORM);
- static BOOL (WINAPI *pImmGetConversionStatus)(HIMC, LPDWORD, LPDWORD);
- static BOOL (WINAPI *pImmSetConversionStatus)(HIMC, DWORD, DWORD);
---- 4219,4226 ----
- static BOOL (WINAPI *pImmReleaseContext)(HWND, HIMC);
- static BOOL (WINAPI *pImmGetOpenStatus)(HIMC);
- static BOOL (WINAPI *pImmSetOpenStatus)(HIMC, BOOL);
-! static BOOL (WINAPI *pImmGetCompositionFontW)(HIMC, LPLOGFONTW);
-! static BOOL (WINAPI *pImmSetCompositionFontW)(HIMC, LPLOGFONTW);
- static BOOL (WINAPI *pImmSetCompositionWindow)(HIMC, LPCOMPOSITIONFORM);
- static BOOL (WINAPI *pImmGetConversionStatus)(HIMC, LPDWORD, LPDWORD);
- static BOOL (WINAPI *pImmSetConversionStatus)(HIMC, DWORD, DWORD);
-***************
-*** 4239,4246 ****
- # define pImmReleaseContext ImmReleaseContext
- # define pImmGetOpenStatus ImmGetOpenStatus
- # define pImmSetOpenStatus ImmSetOpenStatus
-! # define pImmGetCompositionFont ImmGetCompositionFontA
-! # define pImmSetCompositionFont ImmSetCompositionFontA
- # define pImmSetCompositionWindow ImmSetCompositionWindow
- # define pImmGetConversionStatus ImmGetConversionStatus
- # define pImmSetConversionStatus ImmSetConversionStatus
---- 4233,4240 ----
- # define pImmReleaseContext ImmReleaseContext
- # define pImmGetOpenStatus ImmGetOpenStatus
- # define pImmSetOpenStatus ImmSetOpenStatus
-! # define pImmGetCompositionFontW ImmGetCompositionFontW
-! # define pImmSetCompositionFontW ImmSetCompositionFontW
- # define pImmSetCompositionWindow ImmSetCompositionWindow
- # define pImmGetConversionStatus ImmGetConversionStatus
- # define pImmSetConversionStatus ImmSetConversionStatus
-***************
-*** 4379,4392 ****
- * Return OK or FAIL.
- */
- static int
-! gui_w32_get_menu_font(LOGFONT *lf)
- {
-! NONCLIENTMETRICS nm;
-
-! nm.cbSize = sizeof(NONCLIENTMETRICS);
-! if (!SystemParametersInfo(
- SPI_GETNONCLIENTMETRICS,
-! sizeof(NONCLIENTMETRICS),
- &nm,
- 0))
- return FAIL;
---- 4373,4386 ----
- * Return OK or FAIL.
- */
- static int
-! gui_w32_get_menu_font(LOGFONTW *lf)
- {
-! NONCLIENTMETRICSW nm;
-
-! nm.cbSize = sizeof(NONCLIENTMETRICSW);
-! if (!SystemParametersInfoW(
- SPI_GETNONCLIENTMETRICS,
-! sizeof(NONCLIENTMETRICSW),
- &nm,
- 0))
- return FAIL;
-***************
-*** 4403,4409 ****
- static void
- set_tabline_font(void)
- {
-! LOGFONT lfSysmenu;
- HFONT font;
- HWND hwnd;
- HDC hdc;
---- 4397,4403 ----
- static void
- set_tabline_font(void)
- {
-! LOGFONTW lfSysmenu;
- HFONT font;
- HWND hwnd;
- HDC hdc;
-***************
-*** 4413,4419 ****
- if (gui_w32_get_menu_font(&lfSysmenu) != OK)
- return;
-
-! font = CreateFontIndirect(&lfSysmenu);
-
- SendMessage(s_tabhwnd, WM_SETFONT, (WPARAM)font, TRUE);
-
---- 4407,4413 ----
- if (gui_w32_get_menu_font(&lfSysmenu) != OK)
- return;
-
-! font = CreateFontIndirectW(&lfSysmenu);
-
- SendMessage(s_tabhwnd, WM_SETFONT, (WPARAM)font, TRUE);
-
-***************
-*** 5562,5568 ****
- case IMN_SETOPENSTATUS:
- if (pImmGetOpenStatus(hImc))
- {
-! pImmSetCompositionFont(hImc, &norm_logfont);
- im_set_position(gui.row, gui.col);
-
- /* Disable langmap */
---- 5556,5562 ----
- case IMN_SETOPENSTATUS:
- if (pImmGetOpenStatus(hImc))
- {
-! pImmSetCompositionFontW(hImc, &norm_logfont);
- im_set_position(gui.row, gui.col);
-
- /* Disable langmap */
-***************
-*** 5703,5715 ****
- * set font to IM.
- */
- void
-! im_set_font(LOGFONT *lf)
- {
- HIMC hImc;
-
- if (pImmGetContext && (hImc = pImmGetContext(s_hwnd)) != (HIMC)0)
- {
-! pImmSetCompositionFont(hImc, lf);
- pImmReleaseContext(s_hwnd, hImc);
- }
- }
---- 5697,5709 ----
- * set font to IM.
- */
- void
-! im_set_font(LOGFONTW *lf)
- {
- HIMC hImc;
-
- if (pImmGetContext && (hImc = pImmGetContext(s_hwnd)) != (HIMC)0)
- {
-! pImmSetCompositionFontW(hImc, lf);
- pImmReleaseContext(s_hwnd, hImc);
- }
- }
-***************
-*** 6829,6835 ****
- int dlgPaddingX;
- int dlgPaddingY;
- #ifdef USE_SYSMENU_FONT
-! LOGFONT lfSysmenu;
- int use_lfSysmenu = FALSE;
- #endif
- garray_T ga;
---- 6823,6829 ----
- int dlgPaddingX;
- int dlgPaddingY;
- #ifdef USE_SYSMENU_FONT
-! LOGFONTW lfSysmenu;
- int use_lfSysmenu = FALSE;
- #endif
- garray_T ga;
-***************
-*** 6894,6900 ****
- #ifdef USE_SYSMENU_FONT
- if (gui_w32_get_menu_font(&lfSysmenu) == OK)
- {
-! font = CreateFontIndirect(&lfSysmenu);
- use_lfSysmenu = TRUE;
- }
- else
---- 6888,6894 ----
- #ifdef USE_SYSMENU_FONT
- if (gui_w32_get_menu_font(&lfSysmenu) == OK)
- {
-! font = CreateFontIndirectW(&lfSysmenu);
- use_lfSysmenu = TRUE;
- }
- else
-***************
-*** 7123,7129 ****
- /* point size */
- *p++ = -MulDiv(lfSysmenu.lfHeight, 72,
- GetDeviceCaps(hdc, LOGPIXELSY));
-! nchar = nCopyAnsiToWideChar(p, lfSysmenu.lfFaceName, FALSE);
- }
- else
- #endif
---- 7117,7124 ----
- /* point size */
- *p++ = -MulDiv(lfSysmenu.lfHeight, 72,
- GetDeviceCaps(hdc, LOGPIXELSY));
-! wcscpy(p, lfSysmenu.lfFaceName);
-! nchar = (int)wcslen(lfSysmenu.lfFaceName) + 1;
- }
- else
- #endif
-***************
-*** 7488,7501 ****
- DWORD dlgFontSize;
- SIZE size;
- #ifdef USE_SYSMENU_FONT
-! LOGFONT lfSysmenu;
- #endif
-
- s_usenewlook = FALSE;
-
- #ifdef USE_SYSMENU_FONT
- if (gui_w32_get_menu_font(&lfSysmenu) == OK)
-! hfontTools = CreateFontIndirect(&lfSysmenu);
- else
- #endif
- hfontTools = CreateFont(-DLG_FONT_POINT_SIZE, 0, 0, 0, 0, 0, 0, 0,
---- 7483,7496 ----
- DWORD dlgFontSize;
- SIZE size;
- #ifdef USE_SYSMENU_FONT
-! LOGFONTW lfSysmenu;
- #endif
-
- s_usenewlook = FALSE;
-
- #ifdef USE_SYSMENU_FONT
- if (gui_w32_get_menu_font(&lfSysmenu) == OK)
-! hfontTools = CreateFontIndirectW(&lfSysmenu);
- else
- #endif
- hfontTools = CreateFont(-DLG_FONT_POINT_SIZE, 0, 0, 0, 0, 0, 0, 0,
-***************
-*** 7563,7569 ****
- int x;
- int y;
- #ifdef USE_SYSMENU_FONT
-! LOGFONT lfSysmenu;
- int use_lfSysmenu = FALSE;
- #endif
-
---- 7558,7564 ----
- int x;
- int y;
- #ifdef USE_SYSMENU_FONT
-! LOGFONTW lfSysmenu;
- int use_lfSysmenu = FALSE;
- #endif
-
-***************
-*** 7599,7605 ****
- #ifdef USE_SYSMENU_FONT
- if (gui_w32_get_menu_font(&lfSysmenu) == OK)
- {
-! font = CreateFontIndirect(&lfSysmenu);
- use_lfSysmenu = TRUE;
- }
- else
---- 7594,7600 ----
- #ifdef USE_SYSMENU_FONT
- if (gui_w32_get_menu_font(&lfSysmenu) == OK)
- {
-! font = CreateFontIndirectW(&lfSysmenu);
- use_lfSysmenu = TRUE;
- }
- else
-***************
-*** 7708,7714 ****
- /* point size */
- *p++ = -MulDiv(lfSysmenu.lfHeight, 72,
- GetDeviceCaps(hdc, LOGPIXELSY));
-! nchar = nCopyAnsiToWideChar(p, lfSysmenu.lfFaceName, FALSE);
- }
- else
- #endif
---- 7703,7710 ----
- /* point size */
- *p++ = -MulDiv(lfSysmenu.lfHeight, 72,
- GetDeviceCaps(hdc, LOGPIXELSY));
-! wcscpy(p, lfSysmenu.lfFaceName);
-! nchar = (int)wcslen(lfSysmenu.lfFaceName) + 1;
- }
- else
- #endif
-***************
-*** 8136,8145 ****
- = (void *)GetProcAddress(hLibImm, "ImmGetOpenStatus");
- pImmSetOpenStatus
- = (void *)GetProcAddress(hLibImm, "ImmSetOpenStatus");
-! pImmGetCompositionFont
-! = (void *)GetProcAddress(hLibImm, "ImmGetCompositionFontA");
-! pImmSetCompositionFont
-! = (void *)GetProcAddress(hLibImm, "ImmSetCompositionFontA");
- pImmSetCompositionWindow
- = (void *)GetProcAddress(hLibImm, "ImmSetCompositionWindow");
- pImmGetConversionStatus
---- 8132,8141 ----
- = (void *)GetProcAddress(hLibImm, "ImmGetOpenStatus");
- pImmSetOpenStatus
- = (void *)GetProcAddress(hLibImm, "ImmSetOpenStatus");
-! pImmGetCompositionFontW
-! = (void *)GetProcAddress(hLibImm, "ImmGetCompositionFontW");
-! pImmSetCompositionFontW
-! = (void *)GetProcAddress(hLibImm, "ImmSetCompositionFontW");
- pImmSetCompositionWindow
- = (void *)GetProcAddress(hLibImm, "ImmSetCompositionWindow");
- pImmGetConversionStatus
-***************
-*** 8154,8161 ****
- || pImmReleaseContext == NULL
- || pImmGetOpenStatus == NULL
- || pImmSetOpenStatus == NULL
-! || pImmGetCompositionFont == NULL
-! || pImmSetCompositionFont == NULL
- || pImmSetCompositionWindow == NULL
- || pImmGetConversionStatus == NULL
- || pImmSetConversionStatus == NULL)
---- 8150,8157 ----
- || pImmReleaseContext == NULL
- || pImmGetOpenStatus == NULL
- || pImmSetOpenStatus == NULL
-! || pImmGetCompositionFontW == NULL
-! || pImmSetCompositionFontW == NULL
- || pImmSetCompositionWindow == NULL
- || pImmGetConversionStatus == NULL
- || pImmSetConversionStatus == NULL)
-*** ../vim-8.1.1080/src/os_mswin.c 2019-02-17 17:44:36.215875493 +0100
---- src/os_mswin.c 2019-03-30 16:20:37.994106945 +0100
-***************
-*** 85,91 ****
- typedef int CONSOLE_CURSOR_INFO;
- typedef int COORD;
- typedef int DWORD;
-! typedef int ENUMLOGFONT;
- typedef int HANDLE;
- typedef int HDC;
- typedef int HFONT;
---- 85,91 ----
- typedef int CONSOLE_CURSOR_INFO;
- typedef int COORD;
- typedef int DWORD;
-! typedef int ENUMLOGFONTW;
- typedef int HANDLE;
- typedef int HDC;
- typedef int HFONT;
-***************
-*** 93,99 ****
- typedef int HWND;
- typedef int INPUT_RECORD;
- typedef int KEY_EVENT_RECORD;
-! typedef int LOGFONT;
- typedef int LPARAM;
- typedef int LPBOOL;
- typedef int LPCSTR;
---- 93,99 ----
- typedef int HWND;
- typedef int INPUT_RECORD;
- typedef int KEY_EVENT_RECORD;
-! typedef int LOGFONTW;
- typedef int LPARAM;
- typedef int LPBOOL;
- typedef int LPCSTR;
-***************
-*** 103,109 ****
- typedef int LPWSTR;
- typedef int LRESULT;
- typedef int MOUSE_EVENT_RECORD;
-! typedef int NEWTEXTMETRIC;
- typedef int PACL;
- typedef int PRINTDLG;
- typedef int PSECURITY_DESCRIPTOR;
---- 103,109 ----
- typedef int LPWSTR;
- typedef int LRESULT;
- typedef int MOUSE_EVENT_RECORD;
-! typedef int NEWTEXTMETRICW;
- typedef int PACL;
- typedef int PRINTDLG;
- typedef int PSECURITY_DESCRIPTOR;
-***************
-*** 1420,1426 ****
- static int stored_nCopies = 1;
- static int stored_nFlags = 0;
-
-! LOGFONT fLogFont;
- int pifItalic;
- int pifBold;
- int pifUnderline;
---- 1420,1426 ----
- static int stored_nCopies = 1;
- static int stored_nFlags = 0;
-
-! LOGFONTW fLogFont;
- int pifItalic;
- int pifBold;
- int pifUnderline;
-***************
-*** 1577,1583 ****
- fLogFont.lfItalic = pifItalic;
- fLogFont.lfUnderline = pifUnderline;
- prt_font_handles[pifBold][pifItalic][pifUnderline]
-! = CreateFontIndirect(&fLogFont);
- }
-
- SetBkMode(prt_dlg.hDC, OPAQUE);
---- 1577,1583 ----
- fLogFont.lfItalic = pifItalic;
- fLogFont.lfUnderline = pifUnderline;
- prt_font_handles[pifBold][pifItalic][pifUnderline]
-! = CreateFontIndirectW(&fLogFont);
- }
-
- SetBkMode(prt_dlg.hDC, OPAQUE);
-***************
-*** 2915,2926 ****
- return qp->name;
- }
-
-! static const LOGFONT s_lfDefault =
- {
- -12, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET,
- OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
- PROOF_QUALITY, FIXED_PITCH | FF_DONTCARE,
-! "Fixedsys" /* see _ReadVimIni */
- };
-
- /* Initialise the "current height" to -12 (same as s_lfDefault) just
---- 2915,2926 ----
- return qp->name;
- }
-
-! static const LOGFONTW s_lfDefault =
- {
- -12, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET,
- OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
- PROOF_QUALITY, FIXED_PITCH | FF_DONTCARE,
-! L"Fixedsys" /* see _ReadVimIni */
- };
-
- /* Initialise the "current height" to -12 (same as s_lfDefault) just
-***************
-*** 2937,2943 ****
- * calculation is for a vertical (height) size or a horizontal (width) one.
- */
- static int
-! points_to_pixels(char_u *str, char_u **end, int vertical, long_i pprinter_dc)
- {
- int pixels;
- int points = 0;
---- 2937,2943 ----
- * calculation is for a vertical (height) size or a horizontal (width) one.
- */
- static int
-! points_to_pixels(WCHAR *str, WCHAR **end, int vertical, long_i pprinter_dc)
- {
- int pixels;
- int points = 0;
-***************
-*** 2948,2954 ****
-
- while (*str != NUL)
- {
-! if (*str == '.' && divisor == 0)
- {
- /* Start keeping a divisor, for later */
- divisor = 1;
---- 2948,2954 ----
-
- while (*str != NUL)
- {
-! if (*str == L'.' && divisor == 0)
- {
- /* Start keeping a divisor, for later */
- divisor = 1;
-***************
-*** 2959,2965 ****
- break;
-
- points *= 10;
-! points += *str - '0';
- divisor *= 10;
- }
- ++str;
---- 2959,2965 ----
- break;
-
- points *= 10;
-! points += *str - L'0';
- divisor *= 10;
- }
- ++str;
-***************
-*** 2989,3003 ****
-
- static int CALLBACK
- font_enumproc(
-! ENUMLOGFONT *elf,
-! NEWTEXTMETRIC *ntm UNUSED,
-! int type UNUSED,
- LPARAM lparam)
- {
- /* Return value:
- * 0 = terminate now (monospace & ANSI)
- * 1 = continue, still no luck...
-! * 2 = continue, but we have an acceptable LOGFONT
- * (monospace, not ANSI)
- * We use these values, as EnumFontFamilies returns 1 if the
- * callback function is never called. So, we check the return as
---- 2989,3003 ----
-
- static int CALLBACK
- font_enumproc(
-! ENUMLOGFONTW *elf,
-! NEWTEXTMETRICW *ntm UNUSED,
-! DWORD type UNUSED,
- LPARAM lparam)
- {
- /* Return value:
- * 0 = terminate now (monospace & ANSI)
- * 1 = continue, still no luck...
-! * 2 = continue, but we have an acceptable LOGFONTW
- * (monospace, not ANSI)
- * We use these values, as EnumFontFamilies returns 1 if the
- * callback function is never called. So, we check the return as
-***************
-*** 3005,3011 ****
- * It's not pretty, but it works!
- */
-
-! LOGFONT *lf = (LOGFONT *)(lparam);
-
- #ifndef FEAT_PROPORTIONAL_FONTS
- /* Ignore non-monospace fonts without further ado */
---- 3005,3011 ----
- * It's not pretty, but it works!
- */
-
-! LOGFONTW *lf = (LOGFONTW *)(lparam);
-
- #ifndef FEAT_PROPORTIONAL_FONTS
- /* Ignore non-monospace fonts without further ado */
-***************
-*** 3013,3019 ****
- return 1;
- #endif
-
-! /* Remember this LOGFONT as a "possible" */
- *lf = elf->elfLogFont;
-
- /* Terminate the scan as soon as we find an ANSI font */
---- 3013,3019 ----
- return 1;
- #endif
-
-! /* Remember this LOGFONTW as a "possible" */
- *lf = elf->elfLogFont;
-
- /* Terminate the scan as soon as we find an ANSI font */
-***************
-*** 3027,3041 ****
- }
-
- static int
-! init_logfont(LOGFONT *lf)
- {
- int n;
- HWND hwnd = GetDesktopWindow();
- HDC hdc = GetWindowDC(hwnd);
-
-! n = EnumFontFamilies(hdc,
-! (LPCSTR)lf->lfFaceName,
-! (FONTENUMPROC)font_enumproc,
- (LPARAM)lf);
-
- ReleaseDC(hwnd, hdc);
---- 3027,3041 ----
- }
-
- static int
-! init_logfont(LOGFONTW *lf)
- {
- int n;
- HWND hwnd = GetDesktopWindow();
- HDC hdc = GetWindowDC(hwnd);
-
-! n = EnumFontFamiliesW(hdc,
-! lf->lfFaceName,
-! (FONTENUMPROCW)font_enumproc,
- (LPARAM)lf);
-
- ReleaseDC(hwnd, hdc);
-***************
-*** 3044,3050 ****
- if (n == 1)
- return FAIL;
-
-! /* Tidy up the rest of the LOGFONT structure. We set to a basic
- * font - get_logfont() sets bold, italic, etc based on the user's
- * input.
- */
---- 3044,3050 ----
- if (n == 1)
- return FAIL;
-
-! /* Tidy up the rest of the LOGFONTW structure. We set to a basic
- * font - get_logfont() sets bold, italic, etc based on the user's
- * input.
- */
-***************
-*** 3060,3098 ****
- }
-
- /*
- * Get font info from "name" into logfont "lf".
- * Return OK for a valid name, FAIL otherwise.
- */
- int
- get_logfont(
-! LOGFONT *lf,
- char_u *name,
- HDC printer_dc,
- int verbose)
- {
-! char_u *p;
- int i;
- int ret = FAIL;
-! static LOGFONT *lastlf = NULL;
-! char_u *acpname = NULL;
-
- *lf = s_lfDefault;
- if (name == NULL)
- return OK;
-
-! /* Convert 'name' from 'encoding' to the current codepage, because
-! * lf->lfFaceName uses the current codepage.
-! * TODO: Use Wide APIs instead of ANSI APIs. */
-! if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
-! {
-! int len;
-! enc_to_acp(name, (int)STRLEN(name), &acpname, &len);
-! name = acpname;
-! }
-! if (STRCMP(name, "*") == 0)
- {
- #if defined(FEAT_GUI_MSWIN)
-! CHOOSEFONT cf;
- /* if name is "*", bring up std font dialog: */
- vim_memset(&cf, 0, sizeof(cf));
- cf.lStructSize = sizeof(cf);
---- 3060,3110 ----
- }
-
- /*
-+ * Compare a UTF-16 string and an ASCII string literally.
-+ * Only works all the code points are inside ASCII range.
-+ */
-+ static int
-+ utf16ascncmp(const WCHAR *w, const char *p, size_t n)
-+ {
-+ size_t i;
-+
-+ for (i = 0; i < n; i++)
-+ {
-+ if (w[i] == 0 || w[i] != p[i])
-+ return w[i] - p[i];
-+ }
-+ return 0;
-+ }
-+
-+ /*
- * Get font info from "name" into logfont "lf".
- * Return OK for a valid name, FAIL otherwise.
- */
- int
- get_logfont(
-! LOGFONTW *lf,
- char_u *name,
- HDC printer_dc,
- int verbose)
- {
-! WCHAR *p;
- int i;
- int ret = FAIL;
-! static LOGFONTW *lastlf = NULL;
-! WCHAR *wname;
-
- *lf = s_lfDefault;
- if (name == NULL)
- return OK;
-
-! wname = enc_to_utf16(name, NULL);
-! if (wname == NULL)
-! return FAIL;
-!
-! if (wcscmp(wname, L"*") == 0)
- {
- #if defined(FEAT_GUI_MSWIN)
-! CHOOSEFONTW cf;
- /* if name is "*", bring up std font dialog: */
- vim_memset(&cf, 0, sizeof(cf));
- cf.lStructSize = sizeof(cf);
-***************
-*** 3102,3108 ****
- *lf = *lastlf;
- cf.lpLogFont = lf;
- cf.nFontType = 0 ; //REGULAR_FONTTYPE;
-! if (ChooseFont(&cf))
- ret = OK;
- #endif
- goto theend;
---- 3114,3120 ----
- *lf = *lastlf;
- cf.lpLogFont = lf;
- cf.nFontType = 0 ; //REGULAR_FONTTYPE;
-! if (ChooseFontW(&cf))
- ret = OK;
- #endif
- goto theend;
-***************
-*** 3111,3124 ****
- /*
- * Split name up, it could be <name>:h<height>:w<width> etc.
- */
-! for (p = name; *p && *p != ':'; p++)
- {
-! if (p - name + 1 >= LF_FACESIZE)
- goto theend; /* Name too long */
-! lf->lfFaceName[p - name] = *p;
- }
-! if (p != name)
-! lf->lfFaceName[p - name] = NUL;
-
- /* First set defaults */
- lf->lfHeight = -12;
---- 3123,3136 ----
- /*
- * Split name up, it could be <name>:h<height>:w<width> etc.
- */
-! for (p = wname; *p && *p != L':'; p++)
- {
-! if (p - wname + 1 >= LF_FACESIZE)
- goto theend; /* Name too long */
-! lf->lfFaceName[p - wname] = *p;
- }
-! if (p != wname)
-! lf->lfFaceName[p - wname] = NUL;
-
- /* First set defaults */
- lf->lfHeight = -12;
-***************
-*** 3136,3153 ****
- int did_replace = FALSE;
-
- for (i = 0; lf->lfFaceName[i]; ++i)
-! if (IsDBCSLeadByte(lf->lfFaceName[i]))
-! ++i;
-! else if (lf->lfFaceName[i] == '_')
- {
-! lf->lfFaceName[i] = ' ';
- did_replace = TRUE;
- }
- if (!did_replace || init_logfont(lf) == FAIL)
- goto theend;
- }
-
-! while (*p == ':')
- p++;
-
- /* Set the values found after ':' */
---- 3148,3163 ----
- int did_replace = FALSE;
-
- for (i = 0; lf->lfFaceName[i]; ++i)
-! if (lf->lfFaceName[i] == L'_')
- {
-! lf->lfFaceName[i] = L' ';
- did_replace = TRUE;
- }
- if (!did_replace || init_logfont(lf) == FAIL)
- goto theend;
- }
-
-! while (*p == L':')
- p++;
-
- /* Set the values found after ':' */
-***************
-*** 3155,3184 ****
- {
- switch (*p++)
- {
-! case 'h':
- lf->lfHeight = - points_to_pixels(p, &p, TRUE, (long_i)printer_dc);
- break;
-! case 'w':
- lf->lfWidth = points_to_pixels(p, &p, FALSE, (long_i)printer_dc);
- break;
-! case 'b':
- lf->lfWeight = FW_BOLD;
- break;
-! case 'i':
- lf->lfItalic = TRUE;
- break;
-! case 'u':
- lf->lfUnderline = TRUE;
- break;
-! case 's':
- lf->lfStrikeOut = TRUE;
- break;
-! case 'c':
- {
- struct charset_pair *cp;
-
- for (cp = charset_pairs; cp->name != NULL; ++cp)
-! if (STRNCMP(p, cp->name, strlen(cp->name)) == 0)
- {
- lf->lfCharSet = cp->charset;
- p += strlen(cp->name);
---- 3165,3194 ----
- {
- switch (*p++)
- {
-! case L'h':
- lf->lfHeight = - points_to_pixels(p, &p, TRUE, (long_i)printer_dc);
- break;
-! case L'w':
- lf->lfWidth = points_to_pixels(p, &p, FALSE, (long_i)printer_dc);
- break;
-! case L'b':
- lf->lfWeight = FW_BOLD;
- break;
-! case L'i':
- lf->lfItalic = TRUE;
- break;
-! case L'u':
- lf->lfUnderline = TRUE;
- break;
-! case L's':
- lf->lfStrikeOut = TRUE;
- break;
-! case L'c':
- {
- struct charset_pair *cp;
-
- for (cp = charset_pairs; cp->name != NULL; ++cp)
-! if (utf16ascncmp(p, cp->name, strlen(cp->name)) == 0)
- {
- lf->lfCharSet = cp->charset;
- p += strlen(cp->name);
-***************
-*** 3186,3202 ****
- }
- if (cp->name == NULL && verbose)
- {
-! semsg(_("E244: Illegal charset name \"%s\" in font name \"%s\""), p, name);
- break;
- }
- break;
- }
-! case 'q':
- {
- struct quality_pair *qp;
-
- for (qp = quality_pairs; qp->name != NULL; ++qp)
-! if (STRNCMP(p, qp->name, strlen(qp->name)) == 0)
- {
- lf->lfQuality = qp->quality;
- p += strlen(qp->name);
---- 3196,3214 ----
- }
- if (cp->name == NULL && verbose)
- {
-! char_u *s = utf16_to_enc(p, NULL);
-! semsg(_("E244: Illegal charset name \"%s\" in font name \"%s\""), s, name);
-! vim_free(s);
- break;
- }
- break;
- }
-! case L'q':
- {
- struct quality_pair *qp;
-
- for (qp = quality_pairs; qp->name != NULL; ++qp)
-! if (utf16ascncmp(p, qp->name, strlen(qp->name)) == 0)
- {
- lf->lfQuality = qp->quality;
- p += strlen(qp->name);
-***************
-*** 3204,3210 ****
- }
- if (qp->name == NULL && verbose)
- {
-! semsg(_("E244: Illegal quality name \"%s\" in font name \"%s\""), p, name);
- break;
- }
- break;
---- 3216,3224 ----
- }
- if (qp->name == NULL && verbose)
- {
-! char_u *s = utf16_to_enc(p, NULL);
-! semsg(_("E244: Illegal quality name \"%s\" in font name \"%s\""), s, name);
-! vim_free(s);
- break;
- }
- break;
-***************
-*** 3214,3220 ****
- semsg(_("E245: Illegal char '%c' in font name \"%s\""), p[-1], name);
- goto theend;
- }
-! while (*p == ':')
- p++;
- }
- ret = OK;
---- 3228,3234 ----
- semsg(_("E245: Illegal char '%c' in font name \"%s\""), p[-1], name);
- goto theend;
- }
-! while (*p == L':')
- p++;
- }
- ret = OK;
-***************
-*** 3224,3234 ****
- if (ret == OK && printer_dc == NULL)
- {
- vim_free(lastlf);
-! lastlf = (LOGFONT *)alloc(sizeof(LOGFONT));
- if (lastlf != NULL)
-! mch_memmove(lastlf, lf, sizeof(LOGFONT));
- }
-! vim_free(acpname);
-
- return ret;
- }
---- 3238,3248 ----
- if (ret == OK && printer_dc == NULL)
- {
- vim_free(lastlf);
-! lastlf = (LOGFONTW *)alloc(sizeof(LOGFONTW));
- if (lastlf != NULL)
-! mch_memmove(lastlf, lf, sizeof(LOGFONTW));
- }
-! vim_free(wname);
-
- return ret;
- }
-*** ../vim-8.1.1080/src/proto/gui_w32.pro 2019-02-01 20:42:18.718884011 +0100
---- src/proto/gui_w32.pro 2019-03-30 16:20:37.994106945 +0100
-***************
-*** 70,76 ****
- void gui_mch_set_fg_color(guicolor_T color);
- void gui_mch_set_bg_color(guicolor_T color);
- void gui_mch_set_sp_color(guicolor_T color);
-! void im_set_font(LOGFONT *lf);
- void im_set_position(int row, int col);
- void im_set_active(int active);
- int im_get_status(void);
---- 70,76 ----
- void gui_mch_set_fg_color(guicolor_T color);
- void gui_mch_set_bg_color(guicolor_T color);
- void gui_mch_set_sp_color(guicolor_T color);
-! void im_set_font(LOGFONTW *lf);
- void im_set_position(int row, int col);
- void im_set_active(int active);
- int im_get_status(void);
-*** ../vim-8.1.1080/src/proto/os_mswin.pro 2019-02-10 23:18:49.038187525 +0100
---- src/proto/os_mswin.pro 2019-03-30 16:20:37.994106945 +0100
-***************
-*** 49,54 ****
- void serverProcessPendingMessages(void);
- char *charset_id2name(int id);
- char *quality_id2name(DWORD id);
-! int get_logfont(LOGFONT *lf, char_u *name, HDC printer_dc, int verbose);
- void channel_init_winsock(void);
- /* vim: set ft=c : */
---- 49,54 ----
- void serverProcessPendingMessages(void);
- char *charset_id2name(int id);
- char *quality_id2name(DWORD id);
-! int get_logfont(LOGFONTW *lf, char_u *name, HDC printer_dc, int verbose);
- void channel_init_winsock(void);
- /* vim: set ft=c : */
-*** ../vim-8.1.1080/src/version.c 2019-03-30 15:59:48.086175476 +0100
---- src/version.c 2019-03-30 16:22:38.549119396 +0100
-***************
-*** 777,778 ****
---- 777,780 ----
- { /* Add new patch number below this line */
-+ /**/
-+ 1081,
- /**/
-
---
-hundred-and-one symptoms of being an internet addict:
-161. You get up before the sun rises to check your e-mail, and you
- find yourself in the very same chair long after the sun has set.
-
- /// 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 ///