diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/autocmd.c | 20 |
1 files changed, 12 insertions, 8 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"); } |