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.
      */

Reply via email to