aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/main.c
diff options
context:
space:
mode:
authorBjörn Linse <bjorn.linse@gmail.com>2020-12-01 18:54:50 +0100
committerGitHub <noreply@github.com>2020-12-01 18:54:50 +0100
commit72c22862dc2199462aef0d450a49d29a9d0680b9 (patch)
tree04954cbd59abc06ac1a82511f63329290e58c11a /src/nvim/main.c
parentf88c2490c7971e7f8889e60316ff3767b1a3f92c (diff)
parenteb387ae53009b4da93fbbb3423e5ef01023dc32a (diff)
downloadrneovim-72c22862dc2199462aef0d450a49d29a9d0680b9.tar.gz
rneovim-72c22862dc2199462aef0d450a49d29a9d0680b9.tar.bz2
rneovim-72c22862dc2199462aef0d450a49d29a9d0680b9.zip
Merge pull request #12235 from dm1try/add_init_lua
add init.lua as an alternative user config
Diffstat (limited to 'src/nvim/main.c')
-rw-r--r--src/nvim/main.c34
1 files changed, 30 insertions, 4 deletions
diff --git a/src/nvim/main.c b/src/nvim/main.c
index 63249416b1..79c165419e 100644
--- a/src/nvim/main.c
+++ b/src/nvim/main.c
@@ -1069,9 +1069,14 @@ static void command_line_scan(mparm_T *parmp)
} else {
a = argv[0];
}
- size_t s_size = STRLEN(a) + 4;
+
+ size_t s_size = STRLEN(a) + 9;
char *s = xmalloc(s_size);
- snprintf(s, s_size, "so %s", a);
+ if (path_with_extension(a, "lua")) {
+ snprintf(s, s_size, "luafile %s", a);
+ } else {
+ snprintf(s, s_size, "so %s", a);
+ }
parmp->cmds_tofree[parmp->n_commands] = true;
parmp->commands[parmp->n_commands++] = s;
} else {
@@ -1770,6 +1775,23 @@ static bool do_user_initialization(void)
do_exrc = p_exrc;
return do_exrc;
}
+
+ char_u *init_lua_path = (char_u *)stdpaths_user_conf_subpath("init.lua");
+ if (os_path_exists(init_lua_path)
+ && nlua_exec_file((const char *)init_lua_path)) {
+ os_setenv("MYVIMRC", (const char *)init_lua_path, 1);
+ char_u *vimrc_path = (char_u *)stdpaths_user_conf_subpath("init.vim");
+
+ if (os_path_exists(vimrc_path)) {
+ EMSG3(_("Conflicting configs: \"%s\" \"%s\""), init_lua_path, vimrc_path);
+ }
+
+ xfree(vimrc_path);
+ xfree(init_lua_path);
+ return false;
+ }
+ xfree(init_lua_path);
+
char_u *user_vimrc = (char_u *)stdpaths_user_conf_subpath("init.vim");
if (do_source(user_vimrc, true, DOSO_VIMRC) != FAIL) {
do_exrc = p_exrc;
@@ -1829,8 +1851,12 @@ static void source_startup_scripts(const mparm_T *const parmp)
|| strequal(parmp->use_vimrc, "NORC")) {
// Do nothing.
} else {
- if (do_source((char_u *)parmp->use_vimrc, false, DOSO_NONE) != OK) {
- EMSG2(_("E282: Cannot read from \"%s\""), parmp->use_vimrc);
+ if (path_with_extension(parmp->use_vimrc, "lua")) {
+ nlua_exec_file(parmp->use_vimrc);
+ } else {
+ if (do_source((char_u *)parmp->use_vimrc, false, DOSO_NONE) != OK) {
+ EMSG2(_("E282: Cannot read from \"%s\""), parmp->use_vimrc);
+ }
}
}
} else if (!silent_mode) {