aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/aucmd.c
diff options
context:
space:
mode:
authorckelsel <ckelsel@hotmail.com>2017-09-10 16:43:01 +0800
committerckelsel <ckelsel@hotmail.com>2017-09-10 16:43:01 +0800
commitaf2dd6827299070d81218e9ba54646bfaf53607c (patch)
tree56345be9219a808efc0f34304f8e873b866a357c /src/nvim/aucmd.c
parent70c62d58d53f8d7d213e025f3f432e6521be8680 (diff)
parentd173d48177fd55928a9acd64a06d47371bbb6b09 (diff)
downloadrneovim-af2dd6827299070d81218e9ba54646bfaf53607c.tar.gz
rneovim-af2dd6827299070d81218e9ba54646bfaf53607c.tar.bz2
rneovim-af2dd6827299070d81218e9ba54646bfaf53607c.zip
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'src/nvim/aucmd.c')
-rw-r--r--src/nvim/aucmd.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/nvim/aucmd.c b/src/nvim/aucmd.c
new file mode 100644
index 0000000000..fc421116ea
--- /dev/null
+++ b/src/nvim/aucmd.c
@@ -0,0 +1,41 @@
+// This is an open source non-commercial project. Dear PVS-Studio, please check
+// it. PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+
+#include "nvim/os/os.h"
+#include "nvim/fileio.h"
+#include "nvim/vim.h"
+#include "nvim/main.h"
+#include "nvim/ui.h"
+
+#ifdef INCLUDE_GENERATED_DECLARATIONS
+# include "aucmd.c.generated.h"
+#endif
+
+static void focusgained_event(void **argv)
+{
+ bool *gainedp = argv[0];
+ do_autocmd_focusgained(*gainedp);
+ xfree(gainedp);
+}
+void aucmd_schedule_focusgained(bool gained)
+{
+ bool *gainedp = xmalloc(sizeof(*gainedp));
+ *gainedp = gained;
+ loop_schedule_deferred(&main_loop,
+ event_create(focusgained_event, 1, gainedp));
+}
+
+static void do_autocmd_focusgained(bool gained)
+ FUNC_ATTR_NONNULL_ALL
+{
+ static bool recursive = false;
+
+ if (recursive) {
+ return; // disallow recursion
+ }
+ recursive = true;
+ apply_autocmds((gained ? EVENT_FOCUSGAINED : EVENT_FOCUSLOST),
+ NULL, NULL, false, curbuf);
+ recursive = false;
+}
+