mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
main: Start stdin before sourcing startup scripts
This is required to be compatible with plugins that ask user questions at startup(eg: vim-addon-local-vimrc)
This commit is contained in:
parent
67f3ff3dff
commit
5709181243
@ -271,6 +271,13 @@ int main(int argc, char **argv)
|
|||||||
/* Execute --cmd arguments. */
|
/* Execute --cmd arguments. */
|
||||||
exe_pre_commands(¶ms);
|
exe_pre_commands(¶ms);
|
||||||
|
|
||||||
|
if (!params.headless && params.input_isatty) {
|
||||||
|
// Its possible that one of the scripts sourced at startup will prompt the
|
||||||
|
// user, so start stdin now. TODO(tarruda): This is only for compatibility.
|
||||||
|
// Startup user prompting should be done in the VimEnter autocmd
|
||||||
|
input_start_stdin();
|
||||||
|
}
|
||||||
|
|
||||||
/* Source startup scripts. */
|
/* Source startup scripts. */
|
||||||
source_startup_scripts(¶ms);
|
source_startup_scripts(¶ms);
|
||||||
|
|
||||||
@ -351,16 +358,19 @@ int main(int argc, char **argv)
|
|||||||
if (params.edit_type == EDIT_STDIN && !recoverymode)
|
if (params.edit_type == EDIT_STDIN && !recoverymode)
|
||||||
read_stdin();
|
read_stdin();
|
||||||
|
|
||||||
if (!params.headless && (params.output_isatty || params.err_isatty)) {
|
if (!params.headless) {
|
||||||
if (params.input_isatty && (need_wait_return || msg_didany)) {
|
if ((params.output_isatty || params.err_isatty)
|
||||||
|
&& (need_wait_return || msg_didany)) {
|
||||||
// Since at this point there's no UI instance running yet, error messages
|
// Since at this point there's no UI instance running yet, error messages
|
||||||
// would have been printed to stdout. Before starting (which can result
|
// would have been printed to stdout. Before starting (which can result in
|
||||||
// in a alternate screen buffer being shown) we need confirmation that
|
// a alternate screen buffer being shown) we need confirmation that the
|
||||||
// the user has seen the messages and that is done with a call to
|
// user has seen the messages and that is done with a call to wait_return.
|
||||||
// wait_return. For that to work, stdin must be openend temporarily.
|
|
||||||
input_start_stdin();
|
|
||||||
wait_return(TRUE);
|
|
||||||
TIME_MSG("waiting for return");
|
TIME_MSG("waiting for return");
|
||||||
|
wait_return(TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (params.input_isatty) {
|
||||||
|
// Stop reading from stdin, the UI module will take over now.
|
||||||
input_stop_stdin();
|
input_stop_stdin();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user