- patchlevel 203
This commit is contained in:
parent
8143bfab13
commit
cb95305191
150
7.3.203
Normal file
150
7.3.203
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
To: vim_dev@googlegroups.com
|
||||||
|
Subject: Patch 7.3.203
|
||||||
|
Fcc: outbox
|
||||||
|
From: Bram Moolenaar <Bram@moolenaar.net>
|
||||||
|
Mime-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
------------
|
||||||
|
|
||||||
|
Patch 7.3.203
|
||||||
|
Problem: MS-Windows: Can't run an external command without a console window.
|
||||||
|
Solution: Support ":!start /b cmd". (Xaizek)
|
||||||
|
Files: runtime/doc/os_win32.txt, src/os_win32.c
|
||||||
|
|
||||||
|
|
||||||
|
*** ../mercurial/vim73/runtime/doc/os_win32.txt 2011-01-08 16:05:50.000000000 +0100
|
||||||
|
--- runtime/doc/os_win32.txt 2011-05-25 17:04:58.000000000 +0200
|
||||||
|
***************
|
||||||
|
*** 313,319 ****
|
||||||
|
with :!start do not get passed Vim's open file handles, which means they do
|
||||||
|
not have to be closed before Vim.
|
||||||
|
To avoid this special treatment, use ":! start".
|
||||||
|
! The optional "/min" argument causes the window to be minimized.
|
||||||
|
|
||||||
|
Q. I'm using Win32s, and when I try to run an external command like "make",
|
||||||
|
Vim doesn't wait for it to finish! Help!
|
||||||
|
--- 313,348 ----
|
||||||
|
with :!start do not get passed Vim's open file handles, which means they do
|
||||||
|
not have to be closed before Vim.
|
||||||
|
To avoid this special treatment, use ":! start".
|
||||||
|
! There are two optional arguments (see the next Q):
|
||||||
|
! /min the window will be minimized.
|
||||||
|
! /b" no console window will be opened
|
||||||
|
! You can only one of these flags at a time. A second second one will be
|
||||||
|
! treated as the start of the command.
|
||||||
|
!
|
||||||
|
! Q. How do I avoid getting a window for programs that I run asynchronously?
|
||||||
|
! A. You have two possible solutions depending on what exactly do you want:
|
||||||
|
! 1) You may use the /min flag that would run program in minimized state with
|
||||||
|
! no other changes. It will work equally for console and GUI applications.
|
||||||
|
! 2) You can use /b flag to run console applications without creating a
|
||||||
|
! console window for them (GUI applications are not affected). But you
|
||||||
|
! should use this flag only if application you run doesn't require any
|
||||||
|
! input. Otherwise it will get an EOF error because it's input stream
|
||||||
|
! (stdin) would be redirected to \\.\NUL (stdour and stderr too).
|
||||||
|
!
|
||||||
|
! Example for a console application, run Exuberant ctags: >
|
||||||
|
! :!start /min ctags -R .
|
||||||
|
! < When it has finished you should see file named "tags" in your current
|
||||||
|
! directory. You should notice the window title blinking on your taskbar.
|
||||||
|
! This is more noticable for commands that take longer.
|
||||||
|
! Now delete the "tags" file and run this command: >
|
||||||
|
! :!start /b ctags -R .
|
||||||
|
! < You should have the same "tags" file, but this time there will be no
|
||||||
|
! blinking on the taskbar.
|
||||||
|
! Example for a GUI application: >
|
||||||
|
! :!start /min notepad
|
||||||
|
! :!start /b notepad
|
||||||
|
! < The first command runs notepad minimized and the second one runs it
|
||||||
|
! normally.
|
||||||
|
|
||||||
|
Q. I'm using Win32s, and when I try to run an external command like "make",
|
||||||
|
Vim doesn't wait for it to finish! Help!
|
||||||
|
*** ../mercurial/vim73/src/os_win32.c 2011-05-05 18:31:54.000000000 +0200
|
||||||
|
--- src/os_win32.c 2011-05-25 16:45:31.000000000 +0200
|
||||||
|
***************
|
||||||
|
*** 3401,3406 ****
|
||||||
|
--- 3401,3407 ----
|
||||||
|
{
|
||||||
|
STARTUPINFO si;
|
||||||
|
PROCESS_INFORMATION pi;
|
||||||
|
+ DWORD flags = CREATE_NEW_CONSOLE;
|
||||||
|
|
||||||
|
si.cb = sizeof(si);
|
||||||
|
si.lpReserved = NULL;
|
||||||
|
***************
|
||||||
|
*** 3418,3423 ****
|
||||||
|
--- 3419,3440 ----
|
||||||
|
si.dwFlags = STARTF_USESHOWWINDOW;
|
||||||
|
si.wShowWindow = SW_SHOWMINNOACTIVE;
|
||||||
|
}
|
||||||
|
+ else if ((STRNICMP(cmdbase, "/b", 2) == 0)
|
||||||
|
+ && vim_iswhite(cmdbase[2]))
|
||||||
|
+ {
|
||||||
|
+ cmdbase = skipwhite(cmdbase + 2);
|
||||||
|
+ flags = CREATE_NO_WINDOW;
|
||||||
|
+ si.dwFlags = STARTF_USESTDHANDLES;
|
||||||
|
+ si.hStdInput = CreateFile("\\\\.\\NUL", // File name
|
||||||
|
+ GENERIC_READ, // Access flags
|
||||||
|
+ 0, // Share flags
|
||||||
|
+ NULL, // Security att.
|
||||||
|
+ OPEN_EXISTING, // Open flags
|
||||||
|
+ FILE_ATTRIBUTE_NORMAL, // File att.
|
||||||
|
+ NULL); // Temp file
|
||||||
|
+ si.hStdOutput = si.hStdInput;
|
||||||
|
+ si.hStdError = si.hStdInput;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
/* When the command is in double quotes, but 'shellxquote' is
|
||||||
|
* empty, keep the double quotes around the command.
|
||||||
|
***************
|
||||||
|
*** 3445,3451 ****
|
||||||
|
NULL, // Process security attributes
|
||||||
|
NULL, // Thread security attributes
|
||||||
|
FALSE, // Inherit handles
|
||||||
|
! CREATE_NEW_CONSOLE, // Creation flags
|
||||||
|
NULL, // Environment
|
||||||
|
NULL, // Current directory
|
||||||
|
&si, // Startup information
|
||||||
|
--- 3462,3468 ----
|
||||||
|
NULL, // Process security attributes
|
||||||
|
NULL, // Thread security attributes
|
||||||
|
FALSE, // Inherit handles
|
||||||
|
! flags, // Creation flags
|
||||||
|
NULL, // Environment
|
||||||
|
NULL, // Current directory
|
||||||
|
&si, // Startup information
|
||||||
|
***************
|
||||||
|
*** 3458,3463 ****
|
||||||
|
--- 3475,3485 ----
|
||||||
|
EMSG(_("E371: Command not found"));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
+ if (si.hStdInput != NULL)
|
||||||
|
+ {
|
||||||
|
+ /* Close the handle to \\.\NUL */
|
||||||
|
+ CloseHandle(si.hStdInput);
|
||||||
|
+ }
|
||||||
|
/* Close the handles to the subprocess, so that it goes away */
|
||||||
|
CloseHandle(pi.hThread);
|
||||||
|
CloseHandle(pi.hProcess);
|
||||||
|
*** ../vim-7.3.202/src/version.c 2011-05-25 15:16:06.000000000 +0200
|
||||||
|
--- src/version.c 2011-05-25 17:05:59.000000000 +0200
|
||||||
|
***************
|
||||||
|
*** 711,712 ****
|
||||||
|
--- 711,714 ----
|
||||||
|
{ /* Add new patch number below this line */
|
||||||
|
+ /**/
|
||||||
|
+ 203,
|
||||||
|
/**/
|
||||||
|
|
||||||
|
--
|
||||||
|
hundred-and-one symptoms of being an internet addict:
|
||||||
|
108. While reading a magazine, you look for the Zoom icon for a better
|
||||||
|
look at a photograph.
|
||||||
|
|
||||||
|
/// 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 ///
|
Loading…
Reference in New Issue
Block a user