diff options
author | shadmansaleh <shadmansaleh3@gmail.com> | 2021-06-02 13:48:13 +0600 |
---|---|---|
committer | shadmansaleh <shadmansaleh3@gmail.com> | 2021-06-11 01:01:02 +0600 |
commit | 68be8b99cfb1ab6105c48707986ce409ca38dd35 (patch) | |
tree | e0d3a12f6531b4766f431535949f627132ecb83d | |
parent | 1e6c02510afd79659519f2a69075b36784134322 (diff) | |
download | rneovim-68be8b99cfb1ab6105c48707986ce409ca38dd35.tar.gz rneovim-68be8b99cfb1ab6105c48707986ce409ca38dd35.tar.bz2 rneovim-68be8b99cfb1ab6105c48707986ce409ca38dd35.zip |
feat(runtime): Allow lua to be used in compiler
-rw-r--r-- | runtime/doc/quickfix.txt | 4 | ||||
-rw-r--r-- | src/nvim/ex_cmds2.c | 7 | ||||
-rw-r--r-- | test/functional/lua/runtime_spec.lua | 30 |
3 files changed, 38 insertions, 3 deletions
diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt index a937cfee98..ebc7e2a1b4 100644 --- a/runtime/doc/quickfix.txt +++ b/runtime/doc/quickfix.txt @@ -1208,8 +1208,8 @@ not "b:current_compiler". What the command actually does is the following: - Delete the "current_compiler" and "b:current_compiler" variables. - Define the "CompilerSet" user command. With "!" it does ":set", without "!" it does ":setlocal". -- Execute ":runtime! compiler/{name}.vim". The plugins are expected to set - options with "CompilerSet" and set the "current_compiler" variable to the +- Execute ":runtime! compiler/{name}.(vim|lua)". The plugins are expected to + set options with "CompilerSet" and set the "current_compiler" variable to the name of the compiler. - Delete the "CompilerSet" user command. - Set "b:current_compiler" to the value of "current_compiler". diff --git a/src/nvim/ex_cmds2.c b/src/nvim/ex_cmds2.c index 56a14887df..3f35c41e7a 100644 --- a/src/nvim/ex_cmds2.c +++ b/src/nvim/ex_cmds2.c @@ -2421,6 +2421,7 @@ void ex_compiler(exarg_T *eap) if (*eap->arg == NUL) { // List all compiler scripts. do_cmdline_cmd("echo globpath(&rtp, 'compiler/*.vim')"); // NOLINT + do_cmdline_cmd("echo globpath(&rtp, 'compiler/*.lua')"); // NOLINT } else { size_t bufsize = STRLEN(eap->arg) + 14; buf = xmalloc(bufsize); @@ -2445,7 +2446,11 @@ void ex_compiler(exarg_T *eap) snprintf((char *)buf, bufsize, "compiler/%s.vim", eap->arg); if (source_in_path(p_rtp, buf, DIP_ALL) == FAIL) { - EMSG2(_("E666: compiler not supported: %s"), eap->arg); + // Try lua compiler + snprintf((char *)buf, bufsize, "compiler/%s.lua", eap->arg); + if (source_in_path(p_rtp, buf, DIP_ALL) == FAIL) { + EMSG2(_("E666: compiler not supported: %s"), eap->arg); + } } xfree(buf); diff --git a/test/functional/lua/runtime_spec.lua b/test/functional/lua/runtime_spec.lua index a37570e4a4..11407ad19c 100644 --- a/test/functional/lua/runtime_spec.lua +++ b/test/functional/lua/runtime_spec.lua @@ -85,5 +85,35 @@ describe('runtime:', function() end) end) + describe('compiler', function() + local compiler_folder = table.concat({xconfig, 'nvim', 'compiler'}, pathsep) + + it('loads lua compilers', function() + local compiler_file = table.concat({compiler_folder, 'new_compiler.lua'}, + pathsep) + mkdir_p(compiler_folder) + write_file(compiler_file, [[vim.g.lua_compiler = 1]]) + + clear{ args_rm={'-' }, env={ XDG_CONFIG_HOME=xconfig }} + exec('compiler new_compiler') + + eq(1, eval('g:lua_compiler')) + rmdir(compiler_folder) + end) + + it('loads vim compilers when both lua and vim version exist', function() + local compiler_file = table.concat({compiler_folder, 'new_compiler'}, + pathsep) + mkdir_p(compiler_folder) + write_file(compiler_file..'.vim', [[let g:compiler = 'vim']]) + write_file(compiler_file..'.lua', [[vim.g.compiler = 'lua']]) + + clear{ args_rm={'-u' }, env={ XDG_CONFIG_HOME=xconfig }} + exec('compiler new_compiler') + + eq('vim', eval('g:compiler')) + rmdir(compiler_folder) + end) + end) end) |