Mercurial > vim
diff src/os_win32.c @ 7797:0d46cea25641 v7.4.1195
commit https://github.com/vim/vim/commit/f12d983deab06b0408781d7a6c2f8970d765b723
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Jan 29 21:11:25 2016 +0100
patch 7.4.1195
Problem: The channel feature does not work in the MS-Windows console.
Solution: Add win32 console support. (Yasuhiro Matsumoto)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Fri, 29 Jan 2016 21:15:05 +0100 |
parents | 29d4ee3f009a |
children | c079097365f3 |
line wrap: on
line diff
--- a/src/os_win32.c +++ b/src/os_win32.c @@ -1443,6 +1443,11 @@ WaitForChar(long msec) 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,9 +1464,22 @@ WaitForChar(long msec) #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,6 +1580,7 @@ WaitForChar(long msec) if (input_available()) return TRUE; #endif + return FALSE; }