mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
Found a way to make the MS-Windows installer wait for the uninstaller to
finish, no need for the user to press Enter.
This commit is contained in:
parent
9d72807646
commit
b230bd5a16
@ -7226,7 +7226,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
|||||||
{not in Vi}
|
{not in Vi}
|
||||||
{only when compiled with the +persistent_undo feature}
|
{only when compiled with the +persistent_undo feature}
|
||||||
List of directory names for undo files, separated with commas.
|
List of directory names for undo files, separated with commas.
|
||||||
See |'backupdir'| for the format.
|
See |'backupdir'| for details of the format.
|
||||||
"." means using the directory of the file. The undo file name for
|
"." means using the directory of the file. The undo file name for
|
||||||
"file.txt" is ".file.txt.un~".
|
"file.txt" is ".file.txt.un~".
|
||||||
For other directories the file name is the full path of the edited
|
For other directories the file name is the full path of the edited
|
||||||
@ -7246,9 +7246,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
|||||||
When on, Vim automatically saves undo history to an undo file when
|
When on, Vim automatically saves undo history to an undo file when
|
||||||
writing a buffer to a file, and restores undo history from the same
|
writing a buffer to a file, and restores undo history from the same
|
||||||
file on buffer read.
|
file on buffer read.
|
||||||
The name of the undo file is specified by 'undodir'.
|
The directory where the undo file is stored is specified by 'undodir'.
|
||||||
See |undo-persistence|.
|
For more information about this feature see |undo-persistence|.
|
||||||
WARNING: this is a very new feature. Use at your own risc!
|
WARNING: this is a very new feature. Use at your own risk!
|
||||||
|
|
||||||
*'undolevels'* *'ul'*
|
*'undolevels'* *'ul'*
|
||||||
'undolevels' 'ul' number (default 100, 1000 for Unix, VMS,
|
'undolevels' 'ul' number (default 100, 1000 for Unix, VMS,
|
||||||
|
@ -211,7 +211,7 @@ I cannot believe how great it is to use VIM. I think the guys at work are
|
|||||||
getting tired of hearing me bragging about it. Others eyes are lighting up.
|
getting tired of hearing me bragging about it. Others eyes are lighting up.
|
||||||
(Rick Croote)
|
(Rick Croote)
|
||||||
|
|
||||||
Emacs takes way too much time to start up and run, it is to big and bulky for
|
Emacs takes way too much time to start up and run, it is too big and bulky for
|
||||||
effective use and the interface is more confusing than it is of any help. VIM
|
effective use and the interface is more confusing than it is of any help. VIM
|
||||||
however is short, it is fast, it is powerful, it has a good interface and it
|
however is short, it is fast, it is powerful, it has a good interface and it
|
||||||
is all purpose. (Paal Ditlefsen Ekran)
|
is all purpose. (Paal Ditlefsen Ekran)
|
||||||
|
@ -1085,14 +1085,17 @@ restored. (Luc St-Louis)
|
|||||||
|
|
||||||
Vim 7.3:
|
Vim 7.3:
|
||||||
- Win32 DOS and Win32 console version: test69 fails.
|
- Win32 DOS and Win32 console version: test69 fails.
|
||||||
|
- Win32 binary: vim -r fails. (Antonio Colombo) Also on Unix.
|
||||||
- using NSIS 2.46: install on Windows 7 works, but no "Edit with Vim" menu.
|
- using NSIS 2.46: install on Windows 7 works, but no "Edit with Vim" menu.
|
||||||
Ron's version: http://dev.ronware.org/p/vim/finfo?name=gvim.nsi
|
Ron's version: http://dev.ronware.org/p/vim/finfo?name=gvim.nsi
|
||||||
- When running uninstall program from NSIS via install.exe, still need to
|
- When running uninstall program from NSIS via install.exe, still need to
|
||||||
ask confirmation in console window, uninstaller doesn't wait. Is there an
|
ask confirmation in console window, uninstaller doesn't wait.
|
||||||
NSIS option to wait?
|
Wait until the uninstaller is deleted -> doesn't work when cancelling
|
||||||
|
Wait until window is gone with EnumWindows (see os_win32.c).
|
||||||
Patches to include:
|
Patches to include:
|
||||||
- Persistent undo bugs / fixes:
|
- Persistent undo bugs / fixes:
|
||||||
- Add undofile(name): get undo file name for buffer "name".
|
- Add undofile(name): get undo file name for buffer "name".
|
||||||
|
- When there is no undo info (undolevels negative), delete the undo file.
|
||||||
- Extend test62 for gettabvar() and settabvar(). (Yegappan Lakshmanan, 2010
|
- Extend test62 for gettabvar() and settabvar(). (Yegappan Lakshmanan, 2010
|
||||||
May 23)
|
May 23)
|
||||||
- Also crypt the undo file.
|
- Also crypt the undo file.
|
||||||
@ -1163,6 +1166,7 @@ Needs some work:
|
|||||||
Includes changes for omnicompletion.
|
Includes changes for omnicompletion.
|
||||||
Needs some more testing.
|
Needs some more testing.
|
||||||
Update 2010 Apr 20, patch by Andy Kittner, May 16
|
Update 2010 Apr 20, patch by Andy Kittner, May 16
|
||||||
|
Build the MS-Windows version with Python 2.6.5 and 3.1.2?
|
||||||
- Easier/standard way to disable default plugins.
|
- Easier/standard way to disable default plugins.
|
||||||
- ":{range}source": source the lines from the current file.
|
- ":{range}source": source the lines from the current file.
|
||||||
You can already yank lines and use :@" to execute them.
|
You can already yank lines and use :@" to execute them.
|
||||||
|
@ -15,15 +15,15 @@ set insertmode
|
|||||||
set hidden
|
set hidden
|
||||||
|
|
||||||
" Make cursor keys ignore wrapping
|
" Make cursor keys ignore wrapping
|
||||||
inoremap <Down> <C-R>=pumvisible() ? "\<lt>Down>" : "\<lt>C-O>gj"<CR>
|
inoremap <silent> <Down> <C-R>=pumvisible() ? "\<lt>Down>" : "\<lt>C-O>gj"<CR>
|
||||||
inoremap <Up> <C-R>=pumvisible() ? "\<lt>Up>" : "\<lt>C-O>gk"<CR>
|
inoremap <silent> <Up> <C-R>=pumvisible() ? "\<lt>Up>" : "\<lt>C-O>gk"<CR>
|
||||||
|
|
||||||
" CTRL-F does Find dialog instead of page forward
|
" CTRL-F does Find dialog instead of page forward
|
||||||
noremap <C-F> :promptfind<CR>
|
noremap <silent> <C-F> :promptfind<CR>
|
||||||
vnoremap <C-F> y:promptfind <C-R>"<CR>
|
vnoremap <silent> <C-F> y:promptfind <C-R>"<CR>
|
||||||
onoremap <C-F> <C-C>:promptfind<CR>
|
onoremap <silent> <C-F> <C-C>:promptfind<CR>
|
||||||
inoremap <C-F> <C-O>:promptfind<CR>
|
inoremap <silent> <C-F> <C-O>:promptfind<CR>
|
||||||
cnoremap <C-F> <C-C>:promptfind<CR>
|
cnoremap <silent> <C-F> <C-C>:promptfind<CR>
|
||||||
|
|
||||||
|
|
||||||
set backspace=2 " allow backspacing over everything in insert mode
|
set backspace=2 " allow backspacing over everything in insert mode
|
||||||
|
@ -288,7 +288,7 @@ CLEAN :
|
|||||||
|
|
||||||
|
|
||||||
install.exe: dosinst.c
|
install.exe: dosinst.c
|
||||||
$(CPP) /Fe$@ /nologo /W3 -DNDEBUG -DWIN32 dosinst.c kernel32.lib shell32.lib ole32.lib advapi32.lib uuid.lib
|
$(CPP) /Fe$@ /nologo /W3 -DNDEBUG -DWIN32 dosinst.c kernel32.lib shell32.lib user32.lib ole32.lib advapi32.lib uuid.lib
|
||||||
|
|
||||||
uninstal.exe: uninstal.c
|
uninstal.exe: uninstal.c
|
||||||
$(CPP) /nologo /W3 -DNDEBUG -DWIN32 uninstal.c shell32.lib advapi32.lib
|
$(CPP) /nologo /W3 -DNDEBUG -DWIN32 uninstal.c shell32.lib advapi32.lib
|
||||||
|
@ -830,7 +830,7 @@ $(OUTDIR):
|
|||||||
|
|
||||||
install.exe: dosinst.c
|
install.exe: dosinst.c
|
||||||
$(CC) /nologo -DNDEBUG -DWIN32 dosinst.c kernel32.lib shell32.lib \
|
$(CC) /nologo -DNDEBUG -DWIN32 dosinst.c kernel32.lib shell32.lib \
|
||||||
ole32.lib advapi32.lib uuid.lib
|
user32.lib ole32.lib advapi32.lib uuid.lib
|
||||||
- if exist install.exe del install.exe
|
- if exist install.exe del install.exe
|
||||||
ren dosinst.exe install.exe
|
ren dosinst.exe install.exe
|
||||||
|
|
||||||
|
@ -446,6 +446,25 @@ get_vim_env(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int num_windows;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Callback used for EnumWindows():
|
||||||
|
* Count the window if the title looks like it is for the uninstaller.
|
||||||
|
*/
|
||||||
|
/*ARGSUSED*/
|
||||||
|
static BOOL CALLBACK
|
||||||
|
window_cb(HWND hwnd, LPARAM lparam)
|
||||||
|
{
|
||||||
|
char title[256];
|
||||||
|
|
||||||
|
title[0] = 0;
|
||||||
|
GetWindowText(hwnd, title, 256);
|
||||||
|
if (strstr(title, "Vim ") != NULL && strstr(title, "Uninstall:") != NULL)
|
||||||
|
++num_windows;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check for already installed Vims.
|
* Check for already installed Vims.
|
||||||
* Return non-zero when found one.
|
* Return non-zero when found one.
|
||||||
@ -543,26 +562,51 @@ uninstall_check(int skip_question)
|
|||||||
&orig_num_keys, NULL, NULL, NULL,
|
&orig_num_keys, NULL, NULL, NULL,
|
||||||
NULL, NULL, NULL, NULL);
|
NULL, NULL, NULL, NULL);
|
||||||
|
|
||||||
#if 0 /* let the uninstall program delete the key */
|
|
||||||
/* Delete the uninstall key. It has no subkeys, so
|
|
||||||
* this is easy. Do this before uninstalling, that
|
|
||||||
* may try to delete the key as well. */
|
|
||||||
RegDeleteKey(key_handle, subkey_name_buff);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Find existing .bat files before deleting them. */
|
/* Find existing .bat files before deleting them. */
|
||||||
find_bat_exe(TRUE);
|
find_bat_exe(TRUE);
|
||||||
|
|
||||||
/* Execute the uninstall program. Put it in double
|
/* Execute the uninstall program. Put it in double
|
||||||
* quotes if there is an embedded space. */
|
* quotes if there is an embedded space. */
|
||||||
if (strchr(temp_string_buffer, ' ') != NULL)
|
|
||||||
{
|
{
|
||||||
char buf[BUFSIZE];
|
char buf[BUFSIZE];
|
||||||
|
|
||||||
|
if (strchr(temp_string_buffer, ' ') != NULL)
|
||||||
|
sprintf(buf, "\"%s\"", temp_string_buffer);
|
||||||
|
else
|
||||||
strcpy(buf, temp_string_buffer);
|
strcpy(buf, temp_string_buffer);
|
||||||
sprintf(temp_string_buffer, "\"%s\"", buf);
|
run_command(buf);
|
||||||
}
|
}
|
||||||
run_command(temp_string_buffer);
|
|
||||||
|
/* Count the number of windows with a title that match
|
||||||
|
* the installer, so that we can check when it's done.
|
||||||
|
* The uninstaller copies itself, executes the copy
|
||||||
|
* and exits, thus we can't wait for the process to
|
||||||
|
* finish. */
|
||||||
|
Sleep(1000); /* wait for uninstaller to start up */
|
||||||
|
num_windows = 0;
|
||||||
|
EnumWindows(window_cb, 0);
|
||||||
|
Sleep(1000); /* wait for windows to be counted */
|
||||||
|
if (num_windows == 0)
|
||||||
|
{
|
||||||
|
/* Did not find the uninstaller, ask user to press
|
||||||
|
* Enter when done. Just in case. */
|
||||||
|
printf("Press Enter when the uninstaller is finished\n");
|
||||||
|
rewind(stdin);
|
||||||
|
(void)getchar();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("Waiting for the uninstaller to finish (press CTRL-C to abort).");
|
||||||
|
do
|
||||||
|
{
|
||||||
|
printf(".");
|
||||||
|
fflush(stdout);
|
||||||
|
num_windows = 0;
|
||||||
|
EnumWindows(window_cb, 0);
|
||||||
|
Sleep(1000); /* wait for windows to be counted */
|
||||||
|
} while (num_windows > 0);
|
||||||
|
}
|
||||||
|
printf("\nDone!\n");
|
||||||
|
|
||||||
/* Check if an uninstall reg key was deleted.
|
/* Check if an uninstall reg key was deleted.
|
||||||
* if it was, we want to decrement key_index.
|
* if it was, we want to decrement key_index.
|
||||||
@ -2393,16 +2437,9 @@ main(int argc, char **argv)
|
|||||||
get_vim_env();
|
get_vim_env();
|
||||||
|
|
||||||
/* When nothing found exit quietly. If something found wait for
|
/* When nothing found exit quietly. If something found wait for
|
||||||
* hitting Enter.
|
* a little while, so that the user can read the messages. */
|
||||||
* We would like to exit without hitting Enter, but the uninstaller
|
|
||||||
* detaches itself, thus we get here before it's finished. */
|
|
||||||
if (i)
|
if (i)
|
||||||
{
|
Sleep(3000);
|
||||||
printf("\n");
|
|
||||||
printf("When the uninstall program is finished, press Enter to continue\n");
|
|
||||||
rewind(stdin);
|
|
||||||
(void)getchar();
|
|
||||||
}
|
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user