Taylor Hedberg:
> Bastien Dejean, Fri 2012-03-09 @ 11:30:17+0100:
> > I'd like vim to reload its configuration after receiving SIGUSR1.
> > It that possible?
>
> Pretty sure you'd have to patch Vim's source code for this. There's no
> way that I know of to install a POSIX signal handler from within a Vim
> script.
I made a patch (attached) and it fails.
Any hints?
Greetings,
--
b.d
(| |)
^ ^
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
diff -ru vim-7.3.434/src/os_unix.c vim_usr1_reload/src/os_unix.c
--- vim-7.3.434/src/os_unix.c 2012-02-09 22:09:00.000000000 +0100
+++ vim_usr1_reload/src/os_unix.c 2012-03-10 14:23:02.774469698 +0100
@@ -305,7 +305,7 @@
{SIGXFSZ, "XFSZ", TRUE},
#endif
#ifdef SIGUSR1
- {SIGUSR1, "USR1", TRUE},
+ {SIGUSR1, "USR1", FALSE},
#endif
#if defined(SIGUSR2) && !defined(FEAT_SYSMOUSE)
/* Used for sysmouse handling */
@@ -1105,6 +1105,17 @@
SIGRETURN;
}
+#if defined(SIGUSR1)
+ static RETSIGTYPE
+reload_config SIGDEFARG(sigarg)
+{
+#ifdef USR_VIMRC_FILE
+ (void)do_source((char_u *)USR_VIMRC_FILE, FALSE, DOSO_NONE);
+#endif
+ SIGRETURN;
+}
+#endif
+
#if defined(_REENTRANT) && defined(SIGCONT)
/*
* On Solaris with multi-threading, suspending might not work immediately.
@@ -1264,6 +1275,13 @@
#endif
/*
+ * Reload configuration on SIGUSR1
+ */
+#ifdef SIGUSR1
+ signal(SIGUSR1, reload_config);
+#endif
+
+ /*
* Catch SIGPWR (power failure?) to preserve the swap files, so that no
* work will be lost.
*/