aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/autocmd.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/autocmd.h')
-rw-r--r--src/nvim/autocmd.h81
1 files changed, 81 insertions, 0 deletions
diff --git a/src/nvim/autocmd.h b/src/nvim/autocmd.h
new file mode 100644
index 0000000000..af1eeb0fc4
--- /dev/null
+++ b/src/nvim/autocmd.h
@@ -0,0 +1,81 @@
+#ifndef NVIM_AUTOCMD_H
+#define NVIM_AUTOCMD_H
+
+#include "nvim/buffer_defs.h"
+#include "nvim/ex_cmds_defs.h"
+
+// 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; ///< using aucmd_win
+ win_T *save_curwin; ///< saved curwin
+ win_T *save_prevwin; ///< saved prevwin
+ win_T *new_curwin; ///< new curwin
+ bufref_T new_curbuf; ///< new curbuf
+ char_u *globaldir; ///< saved value of globaldir
+} aco_save_T;
+
+typedef struct AutoCmd {
+ char_u *cmd; // Command to be executed (NULL when
+ // command has been removed)
+ bool once; // "One shot": removed after execution
+ bool nested; // If autocommands nest here
+ bool last; // last command in list
+ sctx_T script_ctx; // script context where defined
+ struct AutoCmd *next; // Next AutoCmd in list
+} AutoCmd;
+
+typedef struct AutoPat {
+ struct AutoPat *next; // next AutoPat in AutoPat list; MUST
+ // be the first entry
+ char_u *pat; // pattern as typed (NULL when pattern
+ // has been removed)
+ regprog_T *reg_prog; // compiled regprog for pattern
+ AutoCmd *cmds; // list of commands to do
+ 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
+ char last; // last pattern for apply_autocmds()
+} AutoPat;
+
+#ifdef INCLUDE_GENERATED_DECLARATIONS
+# include "auevents_enum.generated.h"
+#endif
+
+///
+/// Struct used to keep status while executing autocommands for an event.
+///
+typedef struct AutoPatCmd {
+ AutoPat *curpat; // next AutoPat to examine
+ AutoCmd *nextcmd; // next AutoCmd to execute
+ int group; // group being used
+ char_u *fname; // fname to match with
+ char_u *sfname; // sfname to match with
+ char_u *tail; // tail of fname
+ event_T event; // current event
+ int arg_bufnr; // initially equal to <abuf>, set to zero when
+ // buf is deleted
+ struct AutoPatCmd *next; // chain of active apc-s for auto-invalidation
+} AutoPatCmd;
+
+
+// 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.
+//
+// Relying on this value requires one to reset it prior calling
+// apply_autocmds_group.
+EXTERN bool au_did_filetype INIT(= false);
+
+
+#ifdef INCLUDE_GENERATED_DECLARATIONS
+# include "autocmd.h.generated.h"
+#endif
+
+#define AUGROUP_DEFAULT -1 // default autocmd group
+#define AUGROUP_ERROR -2 // erroneous autocmd group
+#define AUGROUP_ALL -3 // all autocmd groups
+
+#endif // NVIM_AUTOCMD_H