diff options
author | bfredl <bjorn.linse@gmail.com> | 2022-06-28 20:38:34 +0200 |
---|---|---|
committer | bfredl <bjorn.linse@gmail.com> | 2022-06-28 23:41:46 +0200 |
commit | 7ab2e12ebc9cdab71a4751550b9026db3a4bd0cf (patch) | |
tree | dd8c8d31e890c5cf0bd064f68be5f6e29ed58ddc | |
parent | 83170a49865a3e271f918cde82201e794d029882 (diff) | |
download | rneovim-7ab2e12ebc9cdab71a4751550b9026db3a4bd0cf.tar.gz rneovim-7ab2e12ebc9cdab71a4751550b9026db3a4bd0cf.tar.bz2 rneovim-7ab2e12ebc9cdab71a4751550b9026db3a4bd0cf.zip |
refactor(aucmd): call define_autocmd() directly for default autocmds
-rw-r--r-- | src/nvim/autocmd.c | 20 | ||||
-rw-r--r-- | test/functional/core/startup_spec.lua | 6 |
2 files changed, 15 insertions, 11 deletions
diff --git a/src/nvim/autocmd.c b/src/nvim/autocmd.c index 7301e07a06..75666c600c 100644 --- a/src/nvim/autocmd.c +++ b/src/nvim/autocmd.c @@ -2707,14 +2707,21 @@ static void do_autocmd_focusgained(bool gained) recursive = false; } -// initialization +static void define_autocmd(event_T event, char *pat, char *group, bool once, bool nested, char *cmd) +{ + AucmdExecutable exec = AUCMD_EXECUTABLE_INIT; + exec.type = CALLABLE_EX; + exec.callable.cmd = cmd; // autocmd_register() makes a copy + int group_id = augroup_add(group); + autocmd_register(0, event, pat, (int)strlen(pat), group_id, once, nested, NULL, exec); +} +/// initialization of default autocmds void init_default_autocmds(void) { // open terminals when opening files that start with term:// #define PROTO "term://" - do_cmdline_cmd("augroup nvim_terminal"); - do_cmdline_cmd("autocmd BufReadCmd " PROTO "* ++nested " + define_autocmd(EVENT_BUFREADCMD, PROTO "*", "nvim_terminal", false, true, "if !exists('b:term_title')|call termopen(" // Capture the command string "matchstr(expand(\"<amatch>\"), " @@ -2723,11 +2730,8 @@ void init_default_autocmds(void) "{'cwd': expand(get(matchlist(expand(\"<amatch>\"), " "'\\c\\m" PROTO "\\(.\\{-}\\)//'), 1, ''))})" "|endif"); - do_cmdline_cmd("augroup END"); #undef PROTO - // limit syntax synchronization in the command window - do_cmdline_cmd("augroup nvim_cmdwin"); - do_cmdline_cmd("autocmd! CmdwinEnter [:>] syntax sync minlines=1 maxlines=1"); - do_cmdline_cmd("augroup END"); + define_autocmd(EVENT_CMDWINENTER, "[:>]", "nvim_cmdwin", false, false, + "syntax sync minlines=1 maxlines=1"); } diff --git a/test/functional/core/startup_spec.lua b/test/functional/core/startup_spec.lua index 919b7b3f9a..5ba80a3646 100644 --- a/test/functional/core/startup_spec.lua +++ b/test/functional/core/startup_spec.lua @@ -499,11 +499,11 @@ describe('sysinit', function() [[" -u NONE -i NONE --cmd "set noruler" -D')]]) screen:expect([[ ^ | - | Entering Debug mode. Type "cont" to continue. | - cmd: augroup nvim_terminal | + pre-vimrc command line | + cmd: set noruler | > | - <" -u NONE -i NONE --cmd "set noruler" -D 1,0-1 All| + <" -u NONE -i NONE --cmd "set noruler" -D 1,1 All| | ]]) command([[call chansend(g:id, "cont\n")]]) |