mch_early_init() -> early_init().

Move general initialization functions to early_init, which simplifies
test/unit/helpers.lua, which requires all these functions.
This commit is contained in:
Scott Prager
2014-09-19 03:49:37 -04:00
parent d5ea183633
commit 275f6e3a6b
3 changed files with 55 additions and 71 deletions

View File

@@ -60,11 +60,13 @@
#include "nvim/os/time.h" #include "nvim/os/time.h"
#include "nvim/os/input.h" #include "nvim/os/input.h"
#include "nvim/os/os.h" #include "nvim/os/os.h"
#include "nvim/os/time.h"
#include "nvim/os/event.h" #include "nvim/os/event.h"
#include "nvim/os/signal.h" #include "nvim/os/signal.h"
#include "nvim/msgpack_rpc/helpers.h" #include "nvim/msgpack_rpc/helpers.h"
#include "nvim/api/private/defs.h" #include "nvim/api/private/defs.h"
#include "nvim/api/private/helpers.h" #include "nvim/api/private/helpers.h"
#include "nvim/api/private/handle.h"
/* Maximum number of commands from + or -c arguments. */ /* Maximum number of commands from + or -c arguments. */
#define MAX_ARG_CMDS 10 #define MAX_ARG_CMDS 10
@@ -143,13 +145,60 @@ static char *(main_errors[]) =
#define ME_INVALID_ARG 5 #define ME_INVALID_ARG 5
}; };
/// Performs early initialization.
///
/// Needed for unit tests. Must be called after `time_init()`.
void early_init(void)
{
handle_init();
(void)mb_init(); // init mb_bytelen_tab[] to ones
eval_init(); // init global variables
#ifdef __QNXNTO__
qnx_init(); // PhAttach() for clipboard, (and gui)
#endif
// Init the table of Normal mode commands.
init_normal_cmds();
#if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
// Setup to use the current locale (for ctype() and many other things).
// NOTE: Translated messages with encodings other than latin1 will not
// work until set_init_1() has been called!
init_locale();
#endif
// Allocate the first window and buffer.
// Can't do anything without it, exit when it fails.
if (!win_alloc_first()) {
mch_exit(0);
}
init_yank(); // init yank buffers
alist_init(&global_alist); // Init the argument list to empty.
global_alist.id = 0;
// Set the default values for the options.
// NOTE: Non-latin1 translated messages are working only after this,
// because this is where "has_mbyte" will be set, which is used by
// msg_outtrans_len_attr().
// First find out the home directory, needed to expand "~" in options.
init_homedir(); // find real value of $HOME
set_init_1();
TIME_MSG("inits 1");
set_lang_var(); // set v:lang and v:ctype
}
#ifndef NO_VIM_MAIN /* skip this for unittests */ #ifndef NO_VIM_MAIN /* skip this for unittests */
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
char_u *fname = NULL; /* file name from command line */ char_u *fname = NULL; /* file name from command line */
mparm_T params; /* various parameters passed between mparm_T params; /* various parameters passed between
* main() and other functions. */ * main() and other functions. */
mch_early_init(); time_init();
/* Many variables are in "params" so that we can pass them to invoked /* Many variables are in "params" so that we can pass them to invoked
* functions without a lot of arguments. "argc" and "argv" are also * functions without a lot of arguments. "argc" and "argv" are also
@@ -158,24 +207,7 @@ int main(int argc, char **argv)
init_startuptime(&params); init_startuptime(&params);
(void)mb_init(); /* init mb_bytelen_tab[] to ones */ early_init();
eval_init(); /* init global variables */
#ifdef __QNXNTO__
qnx_init(); /* PhAttach() for clipboard, (and gui) */
#endif
/* Init the table of Normal mode commands. */
init_normal_cmds();
#if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
/*
* Setup to use the current locale (for ctype() and many other things).
* NOTE: Translated messages with encodings other than latin1 will not
* work until set_init_1() has been called!
*/
init_locale();
#endif
/* /*
* Check if we have an interactive window. * Check if we have an interactive window.
@@ -185,32 +217,6 @@ int main(int argc, char **argv)
*/ */
check_and_set_isatty(&params); check_and_set_isatty(&params);
/*
* Allocate the first window and buffer.
* Can't do anything without it, exit when it fails.
*/
if (win_alloc_first() == FAIL)
mch_exit(0);
init_yank(); /* init yank buffers */
alist_init(&global_alist); /* Init the argument list to empty. */
global_alist.id = 0;
/*
* Set the default values for the options.
* NOTE: Non-latin1 translated messages are working only after this,
* because this is where "has_mbyte" will be set, which is used by
* msg_outtrans_len_attr().
* First find out the home directory, needed to expand "~" in options.
*/
init_homedir(); /* find real value of $HOME */
set_init_1();
TIME_MSG("inits 1");
set_lang_var(); /* set v:lang and v:ctype */
/* /*
* Figure out the way to work from the command name argv[0]. * Figure out the way to work from the command name argv[0].
* "vimdiff" starts diff mode, "rvim" sets "restricted", etc. * "vimdiff" starts diff mode, "rvim" sets "restricted", etc.

View File

@@ -439,12 +439,6 @@ int mch_nodetype(char_u *name)
return NODE_WRITABLE; return NODE_WRITABLE;
} }
void mch_early_init(void)
{
handle_init();
time_init();
}
#if defined(EXITFREE) || defined(PROTO) #if defined(EXITFREE) || defined(PROTO)
void mch_free_mem(void) void mch_free_mem(void)
{ {

View File

@@ -139,26 +139,10 @@ local function vim_init()
if vim_init_called ~= nil then if vim_init_called ~= nil then
return return
end end
-- import os_unix.h for mch_early_init(), which initializes some globals local main = cimport('./src/nvim/main.h')
local all = cimport('./src/nvim/os_unix.h', local time = cimport('./src/nvim/os/time.h')
'./src/nvim/misc1.h', time.time_init()
'./src/nvim/eval.h', main.early_init()
'./src/nvim/os_unix.h',
'./src/nvim/option.h',
'./src/nvim/ex_cmds2.h',
'./src/nvim/window.h',
'./src/nvim/ops.h',
'./src/nvim/normal.h',
'./src/nvim/mbyte.h')
all.mch_early_init()
all.mb_init()
all.eval_init()
all.init_normal_cmds()
all.win_alloc_first()
all.init_yank()
all.init_homedir()
all.set_init_1()
all.set_lang_var()
vim_init_called = true vim_init_called = true
end end