summaryrefslogtreecommitdiffstats
path: root/source/ap/vim/patches/7.2.093
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2009-08-26 10:00:38 -0500
committer Eric Hameleers <alien@slackware.com>2018-05-31 22:41:17 +0200
commit5a12e7c134274dba706667107d10d231517d3e05 (patch)
tree55718d5acb710fde798d9f38d0bbaf594ed4b296 /source/ap/vim/patches/7.2.093
downloadcurrent-slackware-13.0.tar.gz
current-slackware-13.0.tar.xz
Slackware 13.0slackware-13.0
Wed Aug 26 10:00:38 CDT 2009 Slackware 13.0 x86_64 is released as stable! Thanks to everyone who helped make this release possible -- see the RELEASE_NOTES for the credits. The ISOs are off to the replicator. This time it will be a 6 CD-ROM 32-bit set and a dual-sided 32-bit/64-bit x86/x86_64 DVD. We're taking pre-orders now at store.slackware.com. Please consider picking up a copy to help support the project. Once again, thanks to the entire Slackware community for all the help testing and fixing things and offering suggestions during this development cycle. As always, have fun and enjoy! -P.
Diffstat (limited to 'source/ap/vim/patches/7.2.093')
-rw-r--r--source/ap/vim/patches/7.2.093234
1 files changed, 234 insertions, 0 deletions
diff --git a/source/ap/vim/patches/7.2.093 b/source/ap/vim/patches/7.2.093
new file mode 100644
index 000000000..b0f44909b
--- /dev/null
+++ b/source/ap/vim/patches/7.2.093
@@ -0,0 +1,234 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.093 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.093 (extra)
+Problem: Win32: inputdialog() and find/replace dialogs can't handle
+ multi-byte text.
+Solution: Use the wide version of dialog functions when available. (Yanwei
+ Jia)
+Files: src/gui_w32.c, src/gui_w48.c
+
+
+*** ../vim-7.2.092/src/gui_w32.c Thu Nov 20 17:09:09 2008
+--- src/gui_w32.c Wed Jan 28 21:15:29 2009
+***************
+*** 1582,1587 ****
+--- 1582,1598 ----
+ s_findrep_struct.lpstrReplaceWith[0] = NUL;
+ s_findrep_struct.wFindWhatLen = MSWIN_FR_BUFSIZE;
+ s_findrep_struct.wReplaceWithLen = MSWIN_FR_BUFSIZE;
++ # if defined(FEAT_MBYTE) && defined(WIN3264)
++ s_findrep_struct_w.lStructSize = sizeof(s_findrep_struct_w);
++ s_findrep_struct_w.lpstrFindWhat =
++ (LPWSTR)alloc(MSWIN_FR_BUFSIZE * sizeof(WCHAR));
++ s_findrep_struct_w.lpstrFindWhat[0] = NUL;
++ s_findrep_struct_w.lpstrReplaceWith =
++ (LPWSTR)alloc(MSWIN_FR_BUFSIZE * sizeof(WCHAR));
++ 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
+
+ theend:
+***************
+*** 2938,2945 ****
+
+ /* If the edit box exists, copy the string. */
+ if (s_textfield != NULL)
+! GetDlgItemText(hwnd, DLG_NONBUTTON_CONTROL + 2,
+ s_textfield, IOSIZE);
+
+ /*
+ * Need to check for IDOK because if the user just hits Return to
+--- 2949,2975 ----
+
+ /* If the edit box exists, copy the string. */
+ if (s_textfield != NULL)
+! {
+! # if defined(FEAT_MBYTE) && defined(WIN3264)
+! /* If the OS is Windows NT, and 'encoding' differs from active
+! * codepage: use wide function and convert text. */
+! if (os_version.dwPlatformId == VER_PLATFORM_WIN32_NT
+! && enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+! {
+! WCHAR *wp = (WCHAR *)alloc(IOSIZE * sizeof(WCHAR));
+! char_u *p;
+!
+! GetDlgItemTextW(hwnd, DLG_NONBUTTON_CONTROL + 2, wp, IOSIZE);
+! p = utf16_to_enc(wp, NULL);
+! vim_strncpy(s_textfield, p, IOSIZE);
+! vim_free(p);
+! vim_free(wp);
+! }
+! else
+! # endif
+! GetDlgItemText(hwnd, DLG_NONBUTTON_CONTROL + 2,
+ s_textfield, IOSIZE);
++ }
+
+ /*
+ * Need to check for IDOK because if the user just hits Return to
+*** ../vim-7.2.092/src/gui_w48.c Wed Jan 28 14:17:21 2009
+--- src/gui_w48.c Wed Jan 28 21:10:26 2009
+***************
+*** 153,158 ****
+--- 153,161 ----
+ #ifdef MSWIN_FIND_REPLACE
+ static UINT s_findrep_msg = 0; /* set in gui_w[16/32].c */
+ static FINDREPLACE s_findrep_struct;
++ # if defined(FEAT_MBYTE) && defined(WIN3264)
++ 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 */
+***************
+*** 884,889 ****
+--- 887,931 ----
+ #endif
+
+ #ifdef MSWIN_FIND_REPLACE
++ # if defined(FEAT_MBYTE) && defined(WIN3264)
++ /*
++ * copy useful data from structure LPFINDREPLACE to structure LPFINDREPLACEW
++ */
++ static void
++ findrep_atow(LPFINDREPLACEW lpfrw, LPFINDREPLACE lpfr)
++ {
++ WCHAR *wp;
++
++ lpfrw->hwndOwner = lpfr->hwndOwner;
++ lpfrw->Flags = lpfr->Flags;
++
++ wp = enc_to_utf16(lpfr->lpstrFindWhat, NULL);
++ wcsncpy(lpfrw->lpstrFindWhat, wp, lpfrw->wFindWhatLen - 1);
++ vim_free(wp);
++
++ /* the field "lpstrReplaceWith" doesn't need to be copied */
++ }
++
++ /*
++ * copy useful data from structure LPFINDREPLACEW to structure LPFINDREPLACE
++ */
++ static void
++ findrep_wtoa(LPFINDREPLACE lpfr, LPFINDREPLACEW lpfrw)
++ {
++ char_u *p;
++
++ lpfr->Flags = lpfrw->Flags;
++
++ p = utf16_to_enc(lpfrw->lpstrFindWhat, NULL);
++ vim_strncpy(lpfr->lpstrFindWhat, p, lpfr->wFindWhatLen - 1);
++ vim_free(p);
++
++ p = utf16_to_enc(lpfrw->lpstrReplaceWith, NULL);
++ vim_strncpy(lpfr->lpstrReplaceWith, p, lpfr->wReplaceWithLen - 1);
++ vim_free(p);
++ }
++ # endif
++
+ /*
+ * Handle a Find/Replace window message.
+ */
+***************
+*** 893,898 ****
+--- 935,950 ----
+ int flags = 0;
+ int down;
+
++ # if defined(FEAT_MBYTE) && defined(WIN3264)
++ /* If the OS is Windows NT, and 'encoding' differs from active codepage:
++ * convert text from wide string. */
++ if (os_version.dwPlatformId == VER_PLATFORM_WIN32_NT
++ && 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. */
+ (void)SetFocus(s_hwnd);
+***************
+*** 2562,2568 ****
+ if (!IsWindow(s_findrep_hwnd))
+ {
+ initialise_findrep(eap->arg);
+! s_findrep_hwnd = FindText((LPFINDREPLACE) &s_findrep_struct);
+ }
+
+ set_window_title(s_findrep_hwnd,
+--- 2614,2632 ----
+ if (!IsWindow(s_findrep_hwnd))
+ {
+ initialise_findrep(eap->arg);
+! # if defined(FEAT_MBYTE) && defined(WIN3264)
+! /* If the OS is Windows NT, and 'encoding' differs from active
+! * codepage: convert text and use wide function. */
+! if (os_version.dwPlatformId == VER_PLATFORM_WIN32_NT
+! && enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+! {
+! findrep_atow(&s_findrep_struct_w, &s_findrep_struct);
+! s_findrep_hwnd = FindTextW(
+! (LPFINDREPLACEW) &s_findrep_struct_w);
+! }
+! else
+! # endif
+! s_findrep_hwnd = FindText((LPFINDREPLACE) &s_findrep_struct);
+ }
+
+ set_window_title(s_findrep_hwnd,
+***************
+*** 2587,2593 ****
+ if (!IsWindow(s_findrep_hwnd))
+ {
+ initialise_findrep(eap->arg);
+! s_findrep_hwnd = ReplaceText((LPFINDREPLACE) &s_findrep_struct);
+ }
+
+ set_window_title(s_findrep_hwnd,
+--- 2651,2668 ----
+ if (!IsWindow(s_findrep_hwnd))
+ {
+ initialise_findrep(eap->arg);
+! # if defined(FEAT_MBYTE) && defined(WIN3264)
+! if (os_version.dwPlatformId == VER_PLATFORM_WIN32_NT
+! && enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+! {
+! findrep_atow(&s_findrep_struct_w, &s_findrep_struct);
+! s_findrep_hwnd = ReplaceTextW(
+! (LPFINDREPLACEW) &s_findrep_struct_w);
+! }
+! else
+! # endif
+! s_findrep_hwnd = ReplaceText(
+! (LPFINDREPLACE) &s_findrep_struct);
+ }
+
+ set_window_title(s_findrep_hwnd,
+*** ../vim-7.2.092/src/version.c Wed Jan 28 19:08:31 2009
+--- src/version.c Wed Jan 28 21:19:56 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 93,
+ /**/
+
+--
+I'm not familiar with this proof, but I'm aware of a significant
+following of toddlers who believe that peanut butter is the solution
+to all of life's problems... -- Tim Hammerquist
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///