aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile1
-rw-r--r--cmake.config/iwyu/mapping.imp2
-rwxr-xr-xsrc/clint.py1
-rw-r--r--src/nvim/autocmd.c3
-rw-r--r--src/nvim/autocmd.h72
-rw-r--r--src/nvim/autocmd_defs.h71
-rw-r--r--src/nvim/edit.h2
-rw-r--r--src/nvim/generators/gen_events.lua5
-rw-r--r--src/nvim/generators/gen_ex_cmds.lua2
-rw-r--r--src/nvim/runtime.h2
10 files changed, 91 insertions, 70 deletions
diff --git a/Makefile b/Makefile
index 27e1699907..a229237268 100644
--- a/Makefile
+++ b/Makefile
@@ -160,6 +160,7 @@ iwyu: build/.ran-cmake
|src/nvim/ascii.h\
|src/nvim/assert.h\
|src/nvim/autocmd.h\
+ |src/nvim/autocmd_defs.h\
|src/nvim/base64.h\
|src/nvim/buffer.h\
|src/nvim/buffer_defs.h\
diff --git a/cmake.config/iwyu/mapping.imp b/cmake.config/iwyu/mapping.imp
index c56c9c0352..5f79addf04 100644
--- a/cmake.config/iwyu/mapping.imp
+++ b/cmake.config/iwyu/mapping.imp
@@ -171,8 +171,6 @@
# Generated to normal headers with a different name: header.h.generated.h -> nvim/some_other_header.h
{ include: [ '"api/private/dispatch_wrappers.h.generated.h"', private, '"nvim/api/private/dispatch.h"', public ] },
- { include: [ '"auevents_enum.generated.h"', private, '"nvim/autocmd.h"', public ] },
- { include: [ '"ex_cmds_enum.generated.h"', private, '"nvim/ex_cmds_defs.h"', public ] },
{ include: [ '"keysets.h.generated.h"', private, '"nvim/api/private/helpers.h"', public ] },
{ include: [ '"keysets_defs.generated.h"', private, '"nvim/api/private/defs.h"', public ] },
{ include: [ '"os/env.h.generated.h"', private, '"nvim/os/os.h"', public ] },
diff --git a/src/clint.py b/src/clint.py
index 6e4d419b38..293545199b 100755
--- a/src/clint.py
+++ b/src/clint.py
@@ -915,6 +915,7 @@ def CheckIncludes(filename, lines, error):
"src/nvim/ascii.h",
"src/nvim/assert.h",
"src/nvim/autocmd.h",
+ "src/nvim/autocmd_defs.h",
"src/nvim/base64.h",
"src/nvim/buffer.h",
"src/nvim/buffer_defs.h",
diff --git a/src/nvim/autocmd.c b/src/nvim/autocmd.c
index 80c9ad9465..1fd22f7060 100644
--- a/src/nvim/autocmd.c
+++ b/src/nvim/autocmd.c
@@ -1,10 +1,13 @@
// autocmd.c: Autocommand related functions
#include <assert.h>
+#include <stddef.h>
+#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include "klib/kvec.h"
#include "nvim/api/private/helpers.h"
#include "nvim/ascii.h"
#include "nvim/autocmd.h"
diff --git a/src/nvim/autocmd.h b/src/nvim/autocmd.h
index 57e2e15fc3..52256a953f 100644
--- a/src/nvim/autocmd.h
+++ b/src/nvim/autocmd.h
@@ -1,77 +1,19 @@
#pragma once
#include <stdbool.h>
+#include <stddef.h>
#include <stdint.h>
-#include "nvim/api/private/defs.h"
+#include "nvim/api/private/defs.h" // IWYU pragma: keep
+#include "nvim/autocmd_defs.h" // IWYU pragma: export
#include "nvim/buffer_defs.h"
-#include "nvim/cmdexpand_defs.h"
-#include "nvim/eval/typval_defs.h"
-#include "nvim/ex_cmds_defs.h"
+#include "nvim/cmdexpand_defs.h" // IWYU pragma: keep
+#include "nvim/eval/typval_defs.h" // IWYU pragma: keep
+#include "nvim/ex_cmds_defs.h" // IWYU pragma: keep
#include "nvim/macros.h"
-#include "nvim/regexp_defs.h"
+#include "nvim/pos.h"
#include "nvim/types.h"
-struct AutoPatCmd_S;
-
-// event_T definition
-#ifdef INCLUDE_GENERATED_DECLARATIONS
-# include "auevents_enum.generated.h"
-#endif
-
-// Struct to save values in before executing autocommands for a buffer that is
-// not the current buffer.
-typedef struct {
- buf_T *save_curbuf; ///< saved curbuf
- int use_aucmd_win_idx; ///< index in aucmd_win[] if >= 0
- handle_T save_curwin_handle; ///< ID of saved curwin
- handle_T new_curwin_handle; ///< ID of new curwin
- handle_T save_prevwin_handle; ///< ID of saved prevwin
- bufref_T new_curbuf; ///< new curbuf
- char *globaldir; ///< saved value of globaldir
- bool save_VIsual_active; ///< saved VIsual_active
- int save_State; ///< saved State
-} aco_save_T;
-
-typedef struct {
- size_t refcount; ///< Reference count (freed when reaches zero)
- char *pat; ///< Pattern as typed
- regprog_T *reg_prog; ///< Compiled regprog for pattern
- int group; ///< Group ID
- int patlen; ///< strlen() of pat
- int buflocal_nr; ///< !=0 for buffer-local AutoPat
- char allow_dirs; ///< Pattern may match whole path
-} AutoPat;
-
-typedef struct {
- AucmdExecutable exec; ///< Command or callback function
- AutoPat *pat; ///< Pattern reference (NULL when autocmd was removed)
- int64_t id; ///< ID used for uniquely tracking an autocmd
- char *desc; ///< Description for the autocmd
- sctx_T script_ctx; ///< Script context where it is defined
- bool once; ///< "One shot": removed after execution
- bool nested; ///< If autocommands nest here
-} AutoCmd;
-
-/// Struct used to keep status while executing autocommands for an event.
-typedef struct AutoPatCmd_S AutoPatCmd;
-struct AutoPatCmd_S {
- AutoPat *lastpat; ///< Last matched AutoPat
- size_t auidx; ///< Current autocmd index to execute
- size_t ausize; ///< Saved AutoCmd vector size
- char *fname; ///< Fname to match with
- char *sfname; ///< Sfname to match with
- char *tail; ///< Tail of fname
- int group; ///< Group being used
- event_T event; ///< Current event
- sctx_T script_ctx; ///< Script context where it is defined
- int arg_bufnr; ///< Initially equal to <abuf>, set to zero when buf is deleted
- Object *data; ///< Arbitrary data
- AutoPatCmd *next; ///< Chain of active apc-s for auto-invalidation
-};
-
-typedef kvec_t(AutoCmd) AutoCmdVec;
-
// Set by the apply_autocmds_group function if the given event is equal to
// EVENT_FILETYPE. Used by the readfile function in order to determine if
// EVENT_BUFREADPOST triggered the EVENT_FILETYPE.
diff --git a/src/nvim/autocmd_defs.h b/src/nvim/autocmd_defs.h
new file mode 100644
index 0000000000..2979c49b67
--- /dev/null
+++ b/src/nvim/autocmd_defs.h
@@ -0,0 +1,71 @@
+#pragma once
+
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdint.h>
+
+#include "klib/kvec.h"
+#include "nvim/api/private/defs.h"
+#include "nvim/buffer_defs.h"
+#include "nvim/eval/typval_defs.h"
+#include "nvim/ex_cmds_defs.h"
+#include "nvim/regexp_defs.h"
+#include "nvim/types.h"
+
+// event_T definition
+#ifdef INCLUDE_GENERATED_DECLARATIONS
+# include "auevents_enum.generated.h"
+#endif
+
+/// Struct to save values in before executing autocommands for a buffer that is
+/// not the current buffer.
+typedef struct {
+ buf_T *save_curbuf; ///< saved curbuf
+ int use_aucmd_win_idx; ///< index in aucmd_win[] if >= 0
+ handle_T save_curwin_handle; ///< ID of saved curwin
+ handle_T new_curwin_handle; ///< ID of new curwin
+ handle_T save_prevwin_handle; ///< ID of saved prevwin
+ bufref_T new_curbuf; ///< new curbuf
+ char *globaldir; ///< saved value of globaldir
+ bool save_VIsual_active; ///< saved VIsual_active
+ int save_State; ///< saved State
+} aco_save_T;
+
+typedef struct {
+ size_t refcount; ///< Reference count (freed when reaches zero)
+ char *pat; ///< Pattern as typed
+ regprog_T *reg_prog; ///< Compiled regprog for pattern
+ int group; ///< Group ID
+ int patlen; ///< strlen() of pat
+ int buflocal_nr; ///< !=0 for buffer-local AutoPat
+ char allow_dirs; ///< Pattern may match whole path
+} AutoPat;
+
+typedef struct {
+ AucmdExecutable exec; ///< Command or callback function
+ AutoPat *pat; ///< Pattern reference (NULL when autocmd was removed)
+ int64_t id; ///< ID used for uniquely tracking an autocmd
+ char *desc; ///< Description for the autocmd
+ sctx_T script_ctx; ///< Script context where it is defined
+ bool once; ///< "One shot": removed after execution
+ bool nested; ///< If autocommands nest here
+} AutoCmd;
+
+/// Struct used to keep status while executing autocommands for an event.
+typedef struct AutoPatCmd_S AutoPatCmd;
+struct AutoPatCmd_S {
+ AutoPat *lastpat; ///< Last matched AutoPat
+ size_t auidx; ///< Current autocmd index to execute
+ size_t ausize; ///< Saved AutoCmd vector size
+ char *fname; ///< Fname to match with
+ char *sfname; ///< Sfname to match with
+ char *tail; ///< Tail of fname
+ int group; ///< Group being used
+ event_T event; ///< Current event
+ sctx_T script_ctx; ///< Script context where it is defined
+ int arg_bufnr; ///< Initially equal to <abuf>, set to zero when buf is deleted
+ Object *data; ///< Arbitrary data
+ AutoPatCmd *next; ///< Chain of active apc-s for auto-invalidation
+};
+
+typedef kvec_t(AutoCmd) AutoCmdVec;
diff --git a/src/nvim/edit.h b/src/nvim/edit.h
index e64e45bec1..c50b3bb0fb 100644
--- a/src/nvim/edit.h
+++ b/src/nvim/edit.h
@@ -1,6 +1,6 @@
#pragma once
-#include "nvim/autocmd.h"
+#include "nvim/autocmd_defs.h"
#include "nvim/vim.h"
// Values for in_cinkeys()
diff --git a/src/nvim/generators/gen_events.lua b/src/nvim/generators/gen_events.lua
index 0eb231f012..4763a2f463 100644
--- a/src/nvim/generators/gen_events.lua
+++ b/src/nvim/generators/gen_events.lua
@@ -8,7 +8,10 @@ local aliases = auevents.aliases
local enum_tgt = io.open(fileio_enum_file, 'w')
local names_tgt = io.open(names_file, 'w')
-enum_tgt:write('typedef enum auto_event {')
+enum_tgt:write([[
+// IWYU pragma: private, include "nvim/autocmd_defs.h"
+
+typedef enum auto_event {]])
names_tgt:write([[
static const struct event_name {
size_t len;
diff --git a/src/nvim/generators/gen_ex_cmds.lua b/src/nvim/generators/gen_ex_cmds.lua
index 61767583ec..ae8c952648 100644
--- a/src/nvim/generators/gen_ex_cmds.lua
+++ b/src/nvim/generators/gen_ex_cmds.lua
@@ -34,6 +34,8 @@ static const uint8_t cmdidxs2[%u][%u] = {
]], a_to_z, a_to_z)
enumfile:write([[
+// IWYU pragma: private, include "nvim/ex_cmds_defs.h"
+
typedef enum CMD_index {
]])
defsfile:write(string.format([[
diff --git a/src/nvim/runtime.h b/src/nvim/runtime.h
index 6f77f7fcd4..f4b8897c3e 100644
--- a/src/nvim/runtime.h
+++ b/src/nvim/runtime.h
@@ -3,7 +3,7 @@
#include <stdbool.h>
#include "klib/kvec.h"
-#include "nvim/autocmd.h"
+#include "nvim/autocmd_defs.h"
#include "nvim/cmdexpand_defs.h"
#include "nvim/eval/typval_defs.h"
#include "nvim/ex_cmds_defs.h"