summaryrefslogtreecommitdiff
path: root/source/ap/vim/patches/7.3.240
diff options
context:
space:
mode:
Diffstat (limited to 'source/ap/vim/patches/7.3.240')
-rw-r--r--source/ap/vim/patches/7.3.240795
1 files changed, 0 insertions, 795 deletions
diff --git a/source/ap/vim/patches/7.3.240 b/source/ap/vim/patches/7.3.240
deleted file mode 100644
index 7048ac1f..00000000
--- a/source/ap/vim/patches/7.3.240
+++ /dev/null
@@ -1,795 +0,0 @@
-To: vim_dev@googlegroups.com
-Subject: Patch 7.3.240
-Fcc: outbox
-From: Bram Moolenaar <Bram@moolenaar.net>
-Mime-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-------------
-
-Note: I haven't verified this works or even compiles. Please send me a
-patch if you see a problem and can fix it.
-
-Patch 7.3.240
-Problem: External commands can't use pipes on MS-Windows.
-Solution: Implement pipes and use them when 'shelltemp' isn't set. (Vincent
- Berthoux)
-Files: src/eval.c, src/ex_cmds.c, src/misc2.c, src/os_unix.c,
- src/os_win32.c, src/proto/misc2.pro, src/ui.c
-
-
-*** ../vim-7.3.239/src/eval.c 2011-06-19 02:55:32.000000000 +0200
---- src/eval.c 2011-07-07 15:44:56.000000000 +0200
-***************
-*** 11931,11937 ****
- #ifdef FEAT_SEARCHPATH
- "file_in_path",
- #endif
-! #if defined(UNIX) && !defined(USE_SYSTEM)
- "filterpipe",
- #endif
- #ifdef FEAT_FIND_ID
---- 11931,11937 ----
- #ifdef FEAT_SEARCHPATH
- "file_in_path",
- #endif
-! #if (defined(UNIX) && !defined(USE_SYSTEM)) || defined(WIN3264)
- "filterpipe",
- #endif
- #ifdef FEAT_FIND_ID
-*** ../vim-7.3.239/src/ex_cmds.c 2011-06-12 22:03:15.000000000 +0200
---- src/ex_cmds.c 2011-07-07 15:44:56.000000000 +0200
-***************
-*** 1107,1113 ****
- if (do_out)
- shell_flags |= SHELL_DOOUT;
-
-! #if !defined(USE_SYSTEM) && defined(UNIX)
- if (!do_in && do_out && !p_stmp)
- {
- /* Use a pipe to fetch stdout of the command, do not use a temp file. */
---- 1107,1113 ----
- if (do_out)
- shell_flags |= SHELL_DOOUT;
-
-! #if (!defined(USE_SYSTEM) && defined(UNIX)) || defined(WIN3264)
- if (!do_in && do_out && !p_stmp)
- {
- /* Use a pipe to fetch stdout of the command, do not use a temp file. */
-*** ../vim-7.3.239/src/misc2.c 2011-07-07 15:08:53.000000000 +0200
---- src/misc2.c 2011-07-07 15:55:42.000000000 +0200
-***************
-*** 2146,2151 ****
---- 2146,2170 ----
- }
- }
-
-+ #if (defined(UNIX) && !defined(USE_SYSTEM)) || defined(WIN3264)
-+ /*
-+ * Append the text in "gap" below the cursor line and clear "gap".
-+ */
-+ void
-+ append_ga_line(gap)
-+ garray_T *gap;
-+ {
-+ /* Remove trailing CR. */
-+ if (gap->ga_len > 0
-+ && !curbuf->b_p_bin
-+ && ((char_u *)gap->ga_data)[gap->ga_len - 1] == CAR)
-+ --gap->ga_len;
-+ ga_append(gap, NUL);
-+ ml_append(curwin->w_cursor.lnum++, gap->ga_data, 0, FALSE);
-+ gap->ga_len = 0;
-+ }
-+ #endif
-+
- /************************************************************************
- * functions that use lookup tables for various things, generally to do with
- * special key codes.
-*** ../vim-7.3.239/src/os_unix.c 2011-04-11 16:56:29.000000000 +0200
---- src/os_unix.c 2011-07-07 15:54:58.000000000 +0200
-***************
-*** 3660,3686 ****
- /* Nothing to do. */
- }
-
-- #ifndef USE_SYSTEM
-- static void append_ga_line __ARGS((garray_T *gap));
--
-- /*
-- * Append the text in "gap" below the cursor line and clear "gap".
-- */
-- static void
-- append_ga_line(gap)
-- garray_T *gap;
-- {
-- /* Remove trailing CR. */
-- if (gap->ga_len > 0
-- && !curbuf->b_p_bin
-- && ((char_u *)gap->ga_data)[gap->ga_len - 1] == CAR)
-- --gap->ga_len;
-- ga_append(gap, NUL);
-- ml_append(curwin->w_cursor.lnum++, gap->ga_data, 0, FALSE);
-- gap->ga_len = 0;
-- }
-- #endif
--
- int
- mch_call_shell(cmd, options)
- char_u *cmd;
---- 3660,3665 ----
-*** ../vim-7.3.239/src/os_win32.c 2011-05-25 17:06:16.000000000 +0200
---- src/os_win32.c 2011-07-07 16:08:30.000000000 +0200
-***************
-*** 417,422 ****
---- 417,427 ----
- static PGNSECINFO pGetNamedSecurityInfo;
- #endif
-
-+ typedef BOOL (WINAPI *PSETHANDLEINFORMATION)(HANDLE, DWORD, DWORD);
-+
-+ static BOOL allowPiping = FALSE;
-+ static PSETHANDLEINFORMATION pSetHandleInformation;
-+
- /*
- * Set g_PlatformId to VER_PLATFORM_WIN32_NT (NT) or
- * VER_PLATFORM_WIN32_WINDOWS (Win95).
-***************
-*** 467,472 ****
---- 472,489 ----
- }
- }
- #endif
-+ /*
-+ * If we are on windows NT, try to load the pipe functions, only
-+ * available from Win2K.
-+ */
-+ if (g_PlatformId == VER_PLATFORM_WIN32_NT)
-+ {
-+ HANDLE kernel32 = GetModuleHandle("kernel32");
-+ pSetHandleInformation = (PSETHANDLEINFORMATION)GetProcAddress(
-+ kernel32, "SetHandleInformation");
-+
-+ allowPiping = pSetHandleInformation != NULL;
-+ }
- done = TRUE;
- }
- }
-***************
-*** 1635,1641 ****
- }
-
- #if ((defined(__MINGW32__) || defined (__CYGWIN32__)) && \
-! __MSVCRT_VERSION__ >= 0x800) || (defined(_MSC_VER) && _MSC_VER >= 1400)
- /*
- * Bad parameter handler.
- *
---- 1652,1658 ----
- }
-
- #if ((defined(__MINGW32__) || defined (__CYGWIN32__)) && \
-! __MSVCRT_VERSION__ >= 0x800) || (defined(_MSC_VER) && _MSC_VER >= 1400)
- /*
- * Bad parameter handler.
- *
-***************
-*** 3210,3216 ****
- * 4. Prompt the user to press a key to close the console window
- */
- static int
-! mch_system(char *cmd, int options)
- {
- STARTUPINFO si;
- PROCESS_INFORMATION pi;
---- 3227,3233 ----
- * 4. Prompt the user to press a key to close the console window
- */
- static int
-! mch_system_classic(char *cmd, int options)
- {
- STARTUPINFO si;
- PROCESS_INFORMATION pi;
-***************
-*** 3315,3320 ****
---- 3332,3829 ----
-
- return ret;
- }
-+
-+ /*
-+ * Thread launched by the gui to send the current buffer data to the
-+ * process. This way avoid to hang up vim totally if the children
-+ * process take a long time to process the lines.
-+ */
-+ static DWORD WINAPI
-+ sub_process_writer(LPVOID param)
-+ {
-+ HANDLE g_hChildStd_IN_Wr = param;
-+ linenr_T lnum = curbuf->b_op_start.lnum;
-+ DWORD len = 0;
-+ DWORD l;
-+ char_u *lp = ml_get(lnum);
-+ char_u *s;
-+ int written = 0;
-+
-+ for (;;)
-+ {
-+ l = (DWORD)STRLEN(lp + written);
-+ if (l == 0)
-+ len = 0;
-+ else if (lp[written] == NL)
-+ {
-+ /* NL -> NUL translation */
-+ WriteFile(g_hChildStd_IN_Wr, "", 1, &len, NULL);
-+ }
-+ else
-+ {
-+ s = vim_strchr(lp + written, NL);
-+ WriteFile(g_hChildStd_IN_Wr, (char *)lp + written,
-+ s == NULL ? l : (DWORD)(s - (lp + written)),
-+ &len, NULL);
-+ }
-+ if (len == (int)l)
-+ {
-+ /* Finished a line, add a NL, unless this line should not have
-+ * one. */
-+ if (lnum != curbuf->b_op_end.lnum
-+ || !curbuf->b_p_bin
-+ || (lnum != curbuf->b_no_eol_lnum
-+ && (lnum != curbuf->b_ml.ml_line_count
-+ || curbuf->b_p_eol)))
-+ {
-+ WriteFile(g_hChildStd_IN_Wr, "\n", 1, &ignored, NULL);
-+ }
-+
-+ ++lnum;
-+ if (lnum > curbuf->b_op_end.lnum)
-+ break;
-+
-+ lp = ml_get(lnum);
-+ written = 0;
-+ }
-+ else if (len > 0)
-+ written += len;
-+ }
-+
-+ /* finished all the lines, close pipe */
-+ CloseHandle(g_hChildStd_IN_Wr);
-+ ExitThread(0);
-+ }
-+
-+
-+ # define BUFLEN 100 /* length for buffer, stolen from unix version */
-+
-+ /*
-+ * This function read from the children's stdout and write the
-+ * data on screen or in the buffer accordingly.
-+ */
-+ static void
-+ dump_pipe(int options,
-+ HANDLE g_hChildStd_OUT_Rd,
-+ garray_T *ga,
-+ char_u buffer[],
-+ DWORD *buffer_off)
-+ {
-+ DWORD availableBytes = 0;
-+ DWORD i;
-+ int c;
-+ char_u *p;
-+ int ret;
-+ DWORD len;
-+ DWORD toRead;
-+ int repeatCount;
-+
-+ /* we query the pipe to see if there is any data to read
-+ * to avoid to perform a blocking read */
-+ ret = PeekNamedPipe(g_hChildStd_OUT_Rd, /* pipe to query */
-+ NULL, /* optional buffer */
-+ 0, /* buffe size */
-+ NULL, /* number of read bytes */
-+ &availableBytes, /* available bytes total */
-+ NULL); /* byteLeft */
-+
-+ repeatCount = 0;
-+ /* We got real data in the pipe, read it */
-+ while (ret != 0 && availableBytes > 0 && availableBytes > 0)
-+ {
-+ repeatCount++;
-+ toRead =
-+ # ifdef FEAT_MBYTE
-+ (DWORD)(BUFLEN - *buffer_off);
-+ # else
-+ (DWORD)BUFLEN;
-+ # endif
-+ toRead = availableBytes < toRead ? availableBytes : toRead;
-+ ReadFile(g_hChildStd_OUT_Rd, buffer
-+ # ifdef FEAT_MBYTE
-+ + *buffer_off, toRead
-+ # else
-+ , toRead
-+ # endif
-+ , &len, NULL);
-+
-+ /* If we haven't read anything, there is a problem */
-+ if (len == 0)
-+ break;
-+
-+ availableBytes -= len;
-+
-+ if (options & SHELL_READ)
-+ {
-+ /* Do NUL -> NL translation, append NL separated
-+ * lines to the current buffer. */
-+ for (i = 0; i < len; ++i)
-+ {
-+ if (buffer[i] == NL)
-+ append_ga_line(ga);
-+ else if (buffer[i] == NUL)
-+ ga_append(ga, NL);
-+ else
-+ ga_append(ga, buffer[i]);
-+ }
-+ }
-+ # ifdef FEAT_MBYTE
-+ else if (has_mbyte)
-+ {
-+ int l;
-+
-+ len += *buffer_off;
-+ buffer[len] = NUL;
-+
-+ /* Check if the last character in buffer[] is
-+ * incomplete, keep these bytes for the next
-+ * round. */
-+ for (p = buffer; p < buffer + len; p += l)
-+ {
-+ l = mb_cptr2len(p);
-+ if (l == 0)
-+ l = 1; /* NUL byte? */
-+ else if (MB_BYTE2LEN(*p) != l)
-+ break;
-+ }
-+ if (p == buffer) /* no complete character */
-+ {
-+ /* avoid getting stuck at an illegal byte */
-+ if (len >= 12)
-+ ++p;
-+ else
-+ {
-+ *buffer_off = len;
-+ return;
-+ }
-+ }
-+ c = *p;
-+ *p = NUL;
-+ msg_puts(buffer);
-+ if (p < buffer + len)
-+ {
-+ *p = c;
-+ *buffer_off = (DWORD)((buffer + len) - p);
-+ mch_memmove(buffer, p, *buffer_off);
-+ return;
-+ }
-+ *buffer_off = 0;
-+ }
-+ # endif /* FEAT_MBYTE */
-+ else
-+ {
-+ buffer[len] = NUL;
-+ msg_puts(buffer);
-+ }
-+
-+ windgoto(msg_row, msg_col);
-+ cursor_on();
-+ out_flush();
-+ }
-+ }
-+
-+ /*
-+ * Version of system to use for windows NT > 5.0 (Win2K), use pipe
-+ * for communication and doesn't open any new window.
-+ */
-+ static int
-+ mch_system_piped(char *cmd, int options)
-+ {
-+ STARTUPINFO si;
-+ PROCESS_INFORMATION pi;
-+ DWORD ret = 0;
-+
-+ HANDLE g_hChildStd_IN_Rd = NULL;
-+ HANDLE g_hChildStd_IN_Wr = NULL;
-+ HANDLE g_hChildStd_OUT_Rd = NULL;
-+ HANDLE g_hChildStd_OUT_Wr = NULL;
-+
-+ char_u buffer[BUFLEN + 1]; /* reading buffer + size */
-+ DWORD len;
-+
-+ /* buffer used to receive keys */
-+ char_u ta_buf[BUFLEN + 1]; /* TypeAHead */
-+ int ta_len = 0; /* valid bytes in ta_buf[] */
-+
-+ DWORD i;
-+ int c;
-+ int noread_cnt = 0;
-+ garray_T ga;
-+ int delay = 1;
-+ # ifdef FEAT_MBYTE
-+ DWORD buffer_off = 0; /* valid bytes in buffer[] */
-+ # endif
-+
-+ SECURITY_ATTRIBUTES saAttr;
-+
-+ /* Set the bInheritHandle flag so pipe handles are inherited. */
-+ saAttr.nLength = sizeof(SECURITY_ATTRIBUTES);
-+ saAttr.bInheritHandle = TRUE;
-+ saAttr.lpSecurityDescriptor = NULL;
-+
-+ if ( ! CreatePipe(&g_hChildStd_OUT_Rd, &g_hChildStd_OUT_Wr, &saAttr, 0)
-+ /* Ensure the read handle to the pipe for STDOUT is not inherited. */
-+ || ! pSetHandleInformation(g_hChildStd_OUT_Rd, HANDLE_FLAG_INHERIT, 0)
-+ /* Create a pipe for the child process's STDIN. */
-+ || ! CreatePipe(&g_hChildStd_IN_Rd, &g_hChildStd_IN_Wr, &saAttr, 0)
-+ /* Ensure the write handle to the pipe for STDIN is not inherited. */
-+ || ! pSetHandleInformation(g_hChildStd_IN_Wr, HANDLE_FLAG_INHERIT, 0) )
-+ {
-+ CloseHandle(g_hChildStd_IN_Rd);
-+ CloseHandle(g_hChildStd_IN_Wr);
-+ CloseHandle(g_hChildStd_OUT_Rd);
-+ CloseHandle(g_hChildStd_OUT_Wr);
-+ MSG_PUTS(_("\nCannot create pipes\n"));
-+ }
-+
-+ si.cb = sizeof(si);
-+ si.lpReserved = NULL;
-+ si.lpDesktop = NULL;
-+ si.lpTitle = NULL;
-+ si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
-+
-+ /* set-up our file redirection */
-+ si.hStdError = g_hChildStd_OUT_Wr;
-+ si.hStdOutput = g_hChildStd_OUT_Wr;
-+ si.hStdInput = g_hChildStd_IN_Rd;
-+ si.wShowWindow = SW_HIDE;
-+ si.cbReserved2 = 0;
-+ si.lpReserved2 = NULL;
-+
-+ if (options & SHELL_READ)
-+ ga_init2(&ga, 1, BUFLEN);
-+
-+ /* Now, run the command */
-+ CreateProcess(NULL, /* Executable name */
-+ cmd, /* Command to execute */
-+ NULL, /* Process security attributes */
-+ NULL, /* Thread security attributes */
-+
-+ // this command can be litigeous, handle inheritence was
-+ // deactivated for pending temp file, but, if we deactivate
-+ // it, the pipes don't work for some reason.
-+ TRUE, /* Inherit handles, first deactivated,
-+ * but needed */
-+ CREATE_DEFAULT_ERROR_MODE, /* Creation flags */
-+ NULL, /* Environment */
-+ NULL, /* Current directory */
-+ &si, /* Startup information */
-+ &pi); /* Process information */
-+
-+
-+ /* Close our unused side of the pipes */
-+ CloseHandle(g_hChildStd_IN_Rd);
-+ CloseHandle(g_hChildStd_OUT_Wr);
-+
-+ if (options & SHELL_WRITE)
-+ {
-+ HANDLE thread =
-+ CreateThread(NULL, /* security attributes */
-+ 0, /* default stack size */
-+ sub_process_writer, /* function to be executed */
-+ g_hChildStd_IN_Wr, /* parameter */
-+ 0, /* creation flag, start immediately */
-+ NULL); /* we don't care about thread id */
-+ CloseHandle(thread);
-+ g_hChildStd_IN_Wr = NULL;
-+ }
-+
-+ /* Keep updating the window while waiting for the shell to finish. */
-+ for (;;)
-+ {
-+ MSG msg;
-+
-+ if (PeekMessage(&msg, (HWND)NULL, 0, 0, PM_REMOVE))
-+ {
-+ TranslateMessage(&msg);
-+ DispatchMessage(&msg);
-+ }
-+
-+ /* write pipe information in the window */
-+ if ((options & (SHELL_READ|SHELL_WRITE))
-+ # ifdef FEAT_GUI
-+ || gui.in_use
-+ # endif
-+ )
-+ {
-+ len = 0;
-+ if (!(options & SHELL_EXPAND)
-+ && ((options &
-+ (SHELL_READ|SHELL_WRITE|SHELL_COOKED))
-+ != (SHELL_READ|SHELL_WRITE|SHELL_COOKED)
-+ # ifdef FEAT_GUI
-+ || gui.in_use
-+ # endif
-+ )
-+ && (ta_len > 0 || noread_cnt > 4))
-+ {
-+ if (ta_len == 0)
-+ {
-+ /* Get extra characters when we don't have any. Reset the
-+ * counter and timer. */
-+ noread_cnt = 0;
-+ # if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)
-+ gettimeofday(&start_tv, NULL);
-+ # endif
-+ len = ui_inchar(ta_buf, BUFLEN, 10L, 0);
-+ }
-+ if (ta_len > 0 || len > 0)
-+ {
-+ /*
-+ * For pipes: Check for CTRL-C: send interrupt signal to
-+ * child. Check for CTRL-D: EOF, close pipe to child.
-+ */
-+ if (len == 1 && cmd != NULL)
-+ {
-+ if (ta_buf[ta_len] == Ctrl_C)
-+ {
-+ /* Learn what exit code is expected, for
-+ * now put 9 as SIGKILL */
-+ TerminateProcess(pi.hProcess, 9);
-+ }
-+ if (ta_buf[ta_len] == Ctrl_D)
-+ {
-+ CloseHandle(g_hChildStd_IN_Wr);
-+ g_hChildStd_IN_Wr = NULL;
-+ }
-+ }
-+
-+ /* replace K_BS by <BS> and K_DEL by <DEL> */
-+ for (i = ta_len; i < ta_len + len; ++i)
-+ {
-+ if (ta_buf[i] == CSI && len - i > 2)
-+ {
-+ c = TERMCAP2KEY(ta_buf[i + 1], ta_buf[i + 2]);
-+ if (c == K_DEL || c == K_KDEL || c == K_BS)
-+ {
-+ mch_memmove(ta_buf + i + 1, ta_buf + i + 3,
-+ (size_t)(len - i - 2));
-+ if (c == K_DEL || c == K_KDEL)
-+ ta_buf[i] = DEL;
-+ else
-+ ta_buf[i] = Ctrl_H;
-+ len -= 2;
-+ }
-+ }
-+ else if (ta_buf[i] == '\r')
-+ ta_buf[i] = '\n';
-+ # ifdef FEAT_MBYTE
-+ if (has_mbyte)
-+ i += (*mb_ptr2len_len)(ta_buf + i,
-+ ta_len + len - i) - 1;
-+ # endif
-+ }
-+
-+ /*
-+ * For pipes: echo the typed characters. For a pty this
-+ * does not seem to work.
-+ */
-+ for (i = ta_len; i < ta_len + len; ++i)
-+ {
-+ if (ta_buf[i] == '\n' || ta_buf[i] == '\b')
-+ msg_putchar(ta_buf[i]);
-+ # ifdef FEAT_MBYTE
-+ else if (has_mbyte)
-+ {
-+ int l = (*mb_ptr2len)(ta_buf + i);
-+
-+ msg_outtrans_len(ta_buf + i, l);
-+ i += l - 1;
-+ }
-+ # endif
-+ else
-+ msg_outtrans_len(ta_buf + i, 1);
-+ }
-+ windgoto(msg_row, msg_col);
-+ out_flush();
-+
-+ ta_len += len;
-+
-+ /*
-+ * Write the characters to the child, unless EOF has been
-+ * typed for pipes. Write one character at a time, to
-+ * avoid losing too much typeahead. When writing buffer
-+ * lines, drop the typed characters (only check for
-+ * CTRL-C).
-+ */
-+ if (options & SHELL_WRITE)
-+ ta_len = 0;
-+ else if (g_hChildStd_IN_Wr != NULL)
-+ {
-+ WriteFile(g_hChildStd_IN_Wr, (char*)ta_buf,
-+ 1, &len, NULL);
-+ // if we are typing in, we want to keep things reactive
-+ delay = 1;
-+ if (len > 0)
-+ {
-+ ta_len -= len;
-+ mch_memmove(ta_buf, ta_buf + len, ta_len);
-+ }
-+ }
-+ }
-+ }
-+ }
-+
-+ if (ta_len)
-+ ui_inchar_undo(ta_buf, ta_len);
-+
-+ if (WaitForSingleObject(pi.hProcess, delay) != WAIT_TIMEOUT)
-+ {
-+ dump_pipe(options, g_hChildStd_OUT_Rd,
-+ &ga, buffer, &buffer_off);
-+ break;
-+ }
-+
-+ ++noread_cnt;
-+ dump_pipe(options, g_hChildStd_OUT_Rd,
-+ &ga, buffer, &buffer_off);
-+
-+ /* We start waiting for a very short time and then increase it, so
-+ * that we respond quickly when the process is quick, and don't
-+ * consume too much overhead when it's slow. */
-+ if (delay < 50)
-+ delay += 10;
-+ }
-+
-+ /* Close the pipe */
-+ CloseHandle(g_hChildStd_OUT_Rd);
-+ if (g_hChildStd_IN_Wr != NULL)
-+ CloseHandle(g_hChildStd_IN_Wr);
-+
-+ WaitForSingleObject(pi.hProcess, INFINITE);
-+
-+ /* Get the command exit code */
-+ GetExitCodeProcess(pi.hProcess, &ret);
-+
-+ if (options & SHELL_READ)
-+ {
-+ if (ga.ga_len > 0)
-+ {
-+ append_ga_line(&ga);
-+ /* remember that the NL was missing */
-+ curbuf->b_no_eol_lnum = curwin->w_cursor.lnum;
-+ }
-+ else
-+ curbuf->b_no_eol_lnum = 0;
-+ ga_clear(&ga);
-+ }
-+
-+ /* Close the handles to the subprocess, so that it goes away */
-+ CloseHandle(pi.hThread);
-+ CloseHandle(pi.hProcess);
-+
-+ return ret;
-+ }
-+
-+ static int
-+ mch_system(char *cmd, int options)
-+ {
-+ /* if we can pipe and the shelltemp option is off */
-+ if (allowPiping && !p_stmp)
-+ return mch_system_piped(cmd, options);
-+ else
-+ return mch_system_classic(cmd, options);
-+ }
- #else
-
- # define mch_system(c, o) system(c)
-***************
-*** 3388,3394 ****
- char_u *newcmd;
- long_u cmdlen = (
- #ifdef FEAT_GUI_W32
-! STRLEN(vimrun_path) +
- #endif
- STRLEN(p_sh) + STRLEN(p_shcf) + STRLEN(cmd) + 10);
-
---- 3897,3903 ----
- char_u *newcmd;
- long_u cmdlen = (
- #ifdef FEAT_GUI_W32
-! (allowPiping && !p_stmp ? 0 : STRLEN(vimrun_path)) +
- #endif
- STRLEN(p_sh) + STRLEN(p_shcf) + STRLEN(cmd) + 10);
-
-***************
-*** 3497,3503 ****
- MB_ICONWARNING);
- need_vimrun_warning = FALSE;
- }
-! if (!s_dont_use_vimrun)
- /* Use vimrun to execute the command. It opens a console
- * window, which can be closed without killing Vim. */
- vim_snprintf((char *)newcmd, cmdlen, "%s%s%s %s %s",
---- 4006,4012 ----
- MB_ICONWARNING);
- need_vimrun_warning = FALSE;
- }
-! if (!s_dont_use_vimrun && (!allowPiping || p_stmp))
- /* Use vimrun to execute the command. It opens a console
- * window, which can be closed without killing Vim. */
- vim_snprintf((char *)newcmd, cmdlen, "%s%s%s %s %s",
-***************
-*** 3521,3527 ****
- /* Print the return value, unless "vimrun" was used. */
- if (x != 0 && !(options & SHELL_SILENT) && !emsg_silent
- #if defined(FEAT_GUI_W32)
-! && ((options & SHELL_DOOUT) || s_dont_use_vimrun)
- #endif
- )
- {
---- 4030,4037 ----
- /* Print the return value, unless "vimrun" was used. */
- if (x != 0 && !(options & SHELL_SILENT) && !emsg_silent
- #if defined(FEAT_GUI_W32)
-! && ((options & SHELL_DOOUT) || s_dont_use_vimrun
-! || (allowPiping && !p_stmp))
- #endif
- )
- {
-*** ../vim-7.3.239/src/proto/misc2.pro 2011-07-07 15:08:53.000000000 +0200
---- src/proto/misc2.pro 2011-07-07 15:56:16.000000000 +0200
-***************
-*** 58,63 ****
---- 58,64 ----
- char_u *ga_concat_strings __ARGS((garray_T *gap));
- void ga_concat __ARGS((garray_T *gap, char_u *s));
- void ga_append __ARGS((garray_T *gap, int c));
-+ void append_ga_line __ARGS((garray_T *gap));
- int name_to_mod_mask __ARGS((int c));
- int simplify_key __ARGS((int key, int *modifiers));
- int handle_x_keys __ARGS((int key));
-*** ../vim-7.3.239/src/ui.c 2011-06-19 01:14:23.000000000 +0200
---- src/ui.c 2011-07-07 15:44:56.000000000 +0200
-***************
-*** 58,64 ****
- #endif
- }
-
-! #if defined(UNIX) || defined(VMS) || defined(PROTO)
- /*
- * When executing an external program, there may be some typed characters that
- * are not consumed by it. Give them back to ui_inchar() and they are stored
---- 58,64 ----
- #endif
- }
-
-! #if defined(UNIX) || defined(VMS) || defined(PROTO) || defined(WIN3264)
- /*
- * When executing an external program, there may be some typed characters that
- * are not consumed by it. Give them back to ui_inchar() and they are stored
-*** ../vim-7.3.239/src/version.c 2011-07-07 15:08:53.000000000 +0200
---- src/version.c 2011-07-07 16:14:20.000000000 +0200
-***************
-*** 711,712 ****
---- 711,714 ----
- { /* Add new patch number below this line */
-+ /**/
-+ 240,
- /**/
-
---
-hundred-and-one symptoms of being an internet addict:
-257. Your "hundred-and-one" lists include well over 101 items, since you
- automatically interpret all numbers in hexadecimal notation.
- (hex 101 = decimal 257)
-
- /// 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 ///