]> git.neil.brown.name Git - edlib.git/commitdiff
server: allow auto-startup to be configurable.
authorNeilBrown <neil@brown.name>
Sun, 18 Jun 2023 22:08:52 +0000 (08:08 +1000)
committerNeilBrown <neil@brown.name>
Wed, 28 Jun 2023 07:51:41 +0000 (17:51 +1000)
Use a "startup-" command for starting, and check a config variable to
decide whether to actually start.

Signed-off-by: NeilBrown <neil@brown.name>
edlib.ini
lib-autosave.c
python/lib-server.py

index 63de08ab8f06eac3c82a859971a37dc394f7f7be..744a2f0e5f224bd1f5fe9b8b0c7746f121ebb21f 100644 (file)
--- a/edlib.ini
+++ b/edlib.ini
@@ -67,7 +67,9 @@ lib-make =
        interactive-cmd-grep
        interactive-cmd-git-grep
        interactive-cmd-next-match
-lib-server = ALWAYS
+lib-server = 
+       startup-server
+       interactive-cmd-server-start
 lib-macro = macro:capture
 lib-aspell =
        Spell:Check
index 176ea699c4ce747b916c24df5bd94463f9fcf700..bdf0132bbe24d4001e37a7de2360993fdb34c4ec 100644 (file)
@@ -330,7 +330,7 @@ DEF_CMD(check_autosave_dir)
                dirname = strconcat(ci->focus, home ?: "", "/.edlib_autosave");
        dir = opendir(dirname);
        if (!dir)
-               return 1;
+               return Efallthrough;
        while ((de = readdir(dir)) != NULL) {
                if (de->d_name[0] == '.')
                        continue;
@@ -345,7 +345,7 @@ DEF_CMD(check_autosave_dir)
        if (de)
                call("editor:notify:Message:broadcast", ci->focus, 0, NULL,
                     "Autosave files exist - use \"recover\" command to view them.");
-       return 1;
+       return Efallthrough;
 }
 
 void edlib_init(struct pane *ed safe)
index 5b3c93bbb3b1c45dd2a34d099abb2cedea1ed4b2..821d0714c878a3c132526b62529202c7bf522b55 100755 (executable)
@@ -373,11 +373,16 @@ else:
     def server_rebind(key, focus, **a):
         global server_sock
 
+        msg = ""
+        if key.startswith("interactive-cmd"):
+            msg = "Server started"
         if server_sock:
             # stop reading this file
             focus.call("event:free", server_accept)
             server_sock.close()
             server_sock = None
+            msg="Server restarted"
+
         try:
             os.unlink(sockpath)
         except OSError:
@@ -394,9 +399,12 @@ else:
         focus.root.call("event:read", s.fileno(), server_accept)
         server_sock = s
         if key != "key":
-            focus.call("Message", "Server restarted")
+            focus.call("Message", msg)
         return 1
-    server_rebind("key", edlib.editor)
+    def server_autostart(key, focus, **a):
+        if focus["server:autostart"] == 'yes':
+            server_rebind(key, focus)
+    edlib.editor.call("global-set-command", "startup-server", server_autostart)
     edlib.editor.call("global-set-command", "lib-server:done", server_done)
     edlib.editor.call("global-set-command", "interactive-cmd-server-start",
                 server_rebind)