aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbfredl <bjorn.linse@gmail.com>2022-06-28 20:38:34 +0200
committerbfredl <bjorn.linse@gmail.com>2022-06-28 23:41:46 +0200
commit7ab2e12ebc9cdab71a4751550b9026db3a4bd0cf (patch)
treedd8c8d31e890c5cf0bd064f68be5f6e29ed58ddc
parent83170a49865a3e271f918cde82201e794d029882 (diff)
downloadrneovim-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.c20
-rw-r--r--test/functional/core/startup_spec.lua6
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")]])