0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

Included the patch to support netbeans in a terminal.

This commit is contained in:
Bram Moolenaar
2010-05-22 18:28:27 +02:00
parent ca7e1f2066
commit 67c5384434
18 changed files with 369 additions and 235 deletions

View File

@@ -220,7 +220,7 @@ typedef struct
{
SmcConn smcconn; /* The SM connection ID */
IceConn iceconn; /* The ICE connection ID */
char *clientid; /* The client ID for the current smc session */
char *clientid; /* The client ID for the current smc session */
Bool save_yourself; /* If we're in the middle of a save_yourself */
Bool shutdown; /* If we're in shutdown mode */
} xsmp_config_T;
@@ -366,6 +366,12 @@ mch_inchar(buf, maxlen, wtime, tb_change_cnt)
{
int len;
#ifdef FEAT_NETBEANS_INTG
/* Process the queued netbeans messages. */
if (usingNetbeans)
netbeans_parse_messages();
#endif
/* Check if window changed size while we were busy, perhaps the ":set
* columns=99" command was used. */
while (do_resize)
@@ -378,6 +384,11 @@ mch_inchar(buf, maxlen, wtime, tb_change_cnt)
if (!do_resize) /* return if not interrupted by resize */
return 0;
handle_resize();
#ifdef FEAT_NETBEANS_INTG
/* Process the queued netbeans messages. */
if (usingNetbeans)
netbeans_parse_messages();
#endif
}
}
else /* wtime == -1 */
@@ -407,12 +418,22 @@ mch_inchar(buf, maxlen, wtime, tb_change_cnt)
{
while (do_resize) /* window changed size */
handle_resize();
#ifdef FEAT_NETBEANS_INTG
/* Process the queued netbeans messages. */
if (usingNetbeans)
netbeans_parse_messages();
#endif
/*
* we want to be interrupted by the winch signal
* or by an event on the monitored file descriptors
*/
WaitForChar(-1L);
if (do_resize) /* interrupted by SIGWINCH signal */
continue;
if (WaitForChar(-1L) == 0)
{
if (do_resize) /* interrupted by SIGWINCH signal */
handle_resize();
return 0;
}
/* If input was put directly in typeahead buffer bail out here. */
if (typebuf_changed(tb_change_cnt))
@@ -1324,7 +1345,7 @@ catch_signals(func_deadly, func_other)
* return TRUE
* "when" == SIGNAL_BLOCK: Going to be busy, block signals
* "when" == SIGNAL_UNBLOCK: Going to wait, unblock signals, use postponed
* signal
* signal
* Returns TRUE when Vim should exit.
*/
int
@@ -4766,6 +4787,9 @@ RealWaitForChar(fd, msec, check_for_gpm)
int *check_for_gpm UNUSED;
{
int ret;
#ifdef FEAT_NETBEANS_INTG
int nb_fd = (usingNetbeans ? netbeans_filedesc() : -1);
#endif
#if defined(FEAT_XCLIPBOARD) || defined(USE_XSMP) || defined(FEAT_MZSCHEME)
static int busy = FALSE;
@@ -4815,7 +4839,7 @@ RealWaitForChar(fd, msec, check_for_gpm)
# endif
#endif
#ifndef HAVE_SELECT
struct pollfd fds[5];
struct pollfd fds[6];
int nfd;
# ifdef FEAT_XCLIPBOARD
int xterm_idx = -1;
@@ -4825,6 +4849,9 @@ RealWaitForChar(fd, msec, check_for_gpm)
# endif
# ifdef USE_XSMP
int xsmp_idx = -1;
# endif
# ifdef FEAT_NETBEANS_INTG
int nb_idx = -1;
# endif
int towait = (int)msec;
@@ -4876,6 +4903,15 @@ RealWaitForChar(fd, msec, check_for_gpm)
nfd++;
}
# endif
#ifdef FEAT_NETBEANS_INTG
if (nb_fd != -1)
{
nb_idx = nfd;
fds[nfd].fd = nb_fd;
fds[nfd].events = POLLIN;
nfd++;
}
#endif
ret = poll(fds, nfd, towait);
# ifdef FEAT_MZSCHEME
@@ -4929,6 +4965,13 @@ RealWaitForChar(fd, msec, check_for_gpm)
finished = FALSE; /* Try again */
}
# endif
#ifdef FEAT_NETBEANS_INTG
if (ret > 0 && nb_idx != -1 && fds[nb_idx].revents & POLLIN)
{
netbeans_read();
--ret;
}
#endif
#else /* HAVE_SELECT */
@@ -5010,6 +5053,14 @@ RealWaitForChar(fd, msec, check_for_gpm)
maxfd = xsmp_icefd;
}
# endif
#ifdef FEAT_NETBEANS_INTG
if (nb_fd != -1)
{
FD_SET(nb_fd, &rfds);
if (maxfd < nb_fd)
maxfd = nb_fd;
}
#endif
# ifdef OLD_VMS
/* Old VMS as v6.2 and older have broken select(). It waits more than
@@ -5087,6 +5138,13 @@ RealWaitForChar(fd, msec, check_for_gpm)
}
}
# endif
#ifdef FEAT_NETBEANS_INTG
if (ret > 0 && nb_fd != -1 && FD_ISSET(nb_fd, &rfds))
{
netbeans_read();
--ret;
}
#endif
#endif /* HAVE_SELECT */