Patch 7.4.1195
Problem: The channel feature does not work in the MS-Windows console.
Solution: Add win32 console support. (Yasuhiro Matsumoto)
Files: src/channel.c, src/gui_w32.c, src/os_mswin.c, src/os_win32.c,
src/proto/gui_w32.pro, src/proto/os_mswin.pro, src/vim.h
*** ../vim-7.4.1194/src/channel.c 2016-01-28 23:10:03.222681092 +0100
--- src/channel.c 2016-01-29 20:57:28.503796262 +0100
***************
*** 91,97 ****
#ifdef FEAT_GUI_GTK
gint ch_inputHandler; /* Cookie for input */
#endif
! #ifdef FEAT_GUI_W32
int ch_inputHandler; /* simply ret.value of WSAAsyncSelect()
*/
#endif
--- 91,97 ----
#ifdef FEAT_GUI_GTK
gint ch_inputHandler; /* Cookie for input */
#endif
! #ifdef WIN32
int ch_inputHandler; /* simply ret.value of WSAAsyncSelect()
*/
#endif
***************
*** 279,292 ****
int sd;
struct sockaddr_in server;
struct hostent * host;
! #ifdef FEAT_GUI_W32
u_short port = port_in;
#else
int port = port_in;
#endif
int idx;
! #ifdef FEAT_GUI_W32
channel_init_winsock();
#endif
--- 279,292 ----
int sd;
struct sockaddr_in server;
struct hostent * host;
! #ifdef WIN32
u_short port = port_in;
#else
int port = port_in;
#endif
int idx;
! #ifdef WIN32
channel_init_winsock();
#endif
***************
*** 861,867 ****
return channel_get(idx);
}
! # if defined(FEAT_GUI_W32) || defined(PROTO)
/*
* Lookup the channel index from the socket.
* Returns -1 when the socket isn't found.
--- 861,867 ----
return channel_get(idx);
}
! # if defined(WIN32) || defined(PROTO)
/*
* Lookup the channel index from the socket.
* Returns -1 when the socket isn't found.
***************
*** 965,971 ****
}
# endif /* UNIX && !HAVE_SELECT */
! # if (defined(UNIX) && defined(HAVE_SELECT)) || defined(PROTO)
/*
* The type of "rfds" is hidden to avoid problems with the function proto.
*/
--- 965,971 ----
}
# endif /* UNIX && !HAVE_SELECT */
! # if (!defined(FEAT_GUI_W32) && defined(HAVE_SELECT)) || defined(PROTO)
/*
* The type of "rfds" is hidden to avoid problems with the function proto.
*/
***************
*** 1007,1012 ****
return ret;
}
! # endif /* UNIX && HAVE_SELECT */
#endif /* FEAT_CHANNEL */
--- 1007,1012 ----
return ret;
}
! # endif /* !FEAT_GUI_W32 && HAVE_SELECT */
#endif /* FEAT_CHANNEL */
*** ../vim-7.4.1194/src/gui_w32.c 2016-01-24 20:36:18.854082474 +0100
--- src/gui_w32.c 2016-01-29 20:57:28.507796221 +0100
***************
*** 553,561 ****
static TMonitorFromWindow pMonitorFromWindow = NULL;
static TGetMonitorInfo pGetMonitorInfo = NULL;
static HANDLE user32_lib = NULL;
- #ifdef FEAT_CHANNEL
- int WSInitialized = FALSE; /* WinSock is initialized */
- #endif
/*
* Return TRUE when running under Windows NT 3.x or Win32s, both of which have
* less fancy GUI APIs.
--- 553,558 ----
***************
*** 844,849 ****
--- 841,847 ----
const LPWINDOWPOS lpwpos)
{
static int x = 0, y = 0, cx = 0, cy = 0;
+ extern int WSInitialized;
if (WSInitialized && (lpwpos->x != x || lpwpos->y != y
|| lpwpos->cx != cx || lpwpos->cy != cy))
***************
*** 5049,5070 ****
SetPixel(s_hdc, x+2, y, gui.currFgColor);
}
#endif
-
- #if defined(FEAT_CHANNEL) || defined(PROTO)
- /*
- * Initialize the Winsock dll.
- */
- void
- channel_init_winsock()
- {
- WSADATA wsaData;
- int wsaerr;
-
- if (WSInitialized)
- return;
-
- wsaerr = WSAStartup(MAKEWORD(2, 2), &wsaData);
- if (wsaerr == 0)
- WSInitialized = TRUE;
- }
- #endif
--- 5047,5049 ----
*** ../vim-7.4.1194/src/os_mswin.c 2016-01-24 20:36:18.858082431 +0100
--- src/os_mswin.c 2016-01-29 20:57:28.507796221 +0100
***************
*** 161,167 ****
static HWND s_hwnd = 0; /* console window handle, set by
GetConsoleHwnd() */
#endif
! extern int WSInitialized;
/* Don't generate prototypes here, because some systems do have these
* functions. */
--- 161,169 ----
static HWND s_hwnd = 0; /* console window handle, set by
GetConsoleHwnd() */
#endif
! #ifdef FEAT_CHANNEL
! int WSInitialized = FALSE; /* WinSock is initialized */
! #endif
/* Don't generate prototypes here, because some systems do have these
* functions. */
***************
*** 3093,3095 ****
--- 3095,3116 ----
}
#endif /* defined(FEAT_GUI) || defined(FEAT_PRINTER) */
+
+ #if defined(FEAT_CHANNEL) || defined(PROTO)
+ /*
+ * Initialize the Winsock dll.
+ */
+ void
+ channel_init_winsock()
+ {
+ WSADATA wsaData;
+ int wsaerr;
+
+ if (WSInitialized)
+ return;
+
+ wsaerr = WSAStartup(MAKEWORD(2, 2), &wsaData);
+ if (wsaerr == 0)
+ WSInitialized = TRUE;
+ }
+ #endif
*** ../vim-7.4.1194/src/os_win32.c 2016-01-28 15:07:35.260449013 +0100
--- src/os_win32.c 2016-01-29 21:08:37.216780684 +0100
***************
*** 1443,1448 ****
--- 1443,1453 ----
INPUT_RECORD ir;
DWORD cRecords;
WCHAR ch, ch2;
+ #ifdef FEAT_CHANNEL
+ int ret;
+ fd_set rfds;
+ int maxfd;
+ #endif
if (msec > 0)
/* Wait until the specified time has elapsed. */
***************
*** 1459,1467 ****
--- 1464,1485 ----
#ifdef FEAT_MZSCHEME
mzvim_check_threads();
#endif
+
#ifdef FEAT_CLIENTSERVER
serverProcessPendingMessages();
#endif
+
+ #ifdef FEAT_CHANNEL
+ FD_ZERO(&rfds);
+ maxfd = channel_select_setup(-1, &rfds);
+ if (maxfd >= 0)
+ {
+ ret = select(maxfd + 1, &rfds, NULL, NULL, NULL);
+ if (ret > 0 && channel_select_check(ret, &rfds) > 0)
+ return TRUE;
+ }
+ #endif
+
if (0
#ifdef FEAT_MOUSE
|| g_nMouseClick != -1
***************
*** 1562,1567 ****
--- 1580,1586 ----
if (input_available())
return TRUE;
#endif
+
return FALSE;
}
*** ../vim-7.4.1194/src/proto/gui_w32.pro 2016-01-25 16:05:52.009653108
+0100
--- src/proto/gui_w32.pro 2016-01-29 20:57:28.507796221 +0100
***************
*** 96,100 ****
BalloonEval *gui_mch_create_beval_area(void *target, char_u *mesg, void
(*mesgCB)(BalloonEval *, int), void *clientData);
void gui_mch_destroy_beval_area(BalloonEval *beval);
void netbeans_draw_multisign_indicator(int row);
- void channel_init_winsock(void);
/* vim: set ft=c : */
--- 96,99 ----
*** ../vim-7.4.1194/src/proto/os_mswin.pro 2016-01-19 13:21:55.845334290
+0100
--- src/proto/os_mswin.pro 2016-01-29 20:57:28.507796221 +0100
***************
*** 50,53 ****
--- 50,54 ----
void serverProcessPendingMessages(void);
char *charset_id2name(int id);
int get_logfont(LOGFONT *lf, char_u *name, HDC printer_dc, int verbose);
+ void channel_init_winsock(void);
/* vim: set ft=c : */
*** ../vim-7.4.1194/src/vim.h 2016-01-24 20:36:18.866082348 +0100
--- src/vim.h 2016-01-29 20:57:28.511796179 +0100
***************
*** 530,535 ****
--- 530,537 ----
# ifdef HAVE_SYS_POLL_H
# include <sys/poll.h>
# define HAVE_POLL
+ # elif defined(WIN32) && !defined(FEAT_GUI_W32)
+ # define HAVE_SELECT
# else
# ifdef HAVE_POLL_H
# include <poll.h>
*** ../vim-7.4.1194/src/version.c 2016-01-28 23:10:03.226681050 +0100
--- src/version.c 2016-01-29 20:57:58.463485122 +0100
***************
*** 748,749 ****
--- 748,751 ----
{ /* Add new patch number below this line */
+ /**/
+ 1195,
/**/
--
hundred-and-one symptoms of being an internet addict:
73. You give your dog used motherboards instead of bones
/// Bram Moolenaar -- [email protected] -- 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 ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.