diff options
Diffstat (limited to 'emacs')
-rw-r--r-- | emacs/gds-server.el | 19 | ||||
-rw-r--r-- | emacs/gds.el | 21 |
2 files changed, 22 insertions, 18 deletions
diff --git a/emacs/gds-server.el b/emacs/gds-server.el index 86defc07b..2a11a1a93 100644 --- a/emacs/gds-server.el +++ b/emacs/gds-server.el @@ -44,25 +44,24 @@ :group 'gds :type '(choice (const :tag "nil" nil) directory)) -(defun gds-start-server (procname port-or-path protocol-handler &optional bufname) - "Start a GDS server process called PROCNAME, listening on TCP port -or Unix domain socket PORT-OR-PATH. PROTOCOL-HANDLER should be a -function that accepts and processes one protocol form. Optional arg -BUFNAME specifies the name of the buffer that is used for process -output; if not specified the buffer name is the same as the process -name." - (with-current-buffer (get-buffer-create (or bufname procname)) +(defun gds-start-server (procname unix-socket-name tcp-port protocol-handler) + "Start a GDS server process called PROCNAME, listening on Unix +domain socket UNIX-SOCKET-NAME and TCP port number TCP-PORT. +PROTOCOL-HANDLER should be a function that accepts and processes +one protocol form." + (with-current-buffer (get-buffer-create procname) (erase-buffer) (let* ((code (format "(begin %s (use-modules (ice-9 gds-server)) - (run-server %S))" + (run-server %S %S))" (if gds-scheme-directory (concat "(set! %load-path (cons " (format "%S" gds-scheme-directory) " %load-path))") "") - port-or-path)) + unix-socket-name + tcp-port)) (process-connection-type nil) ; use a pipe (proc (start-process procname (current-buffer) diff --git a/emacs/gds.el b/emacs/gds.el index 1275d778b..01c9d97fe 100644 --- a/emacs/gds.el +++ b/emacs/gds.el @@ -37,10 +37,11 @@ ;; The subprocess object for the debug server. (defvar gds-debug-server nil) -(defvar gds-socket-type-alist '((tcp . 8333) - (unix . "/tmp/.gds_socket")) - "Maps each of the possible socket types that the GDS server can -listen on to the path that it should bind to for each one.") +(defvar gds-unix-socket-name (format "/tmp/.gds-socket-%d" (emacs-pid)) + "Name of the Unix domain socket that GDS will listen on.") + +(defvar gds-tcp-port 8333 + "The TCP port number that GDS will listen on.") (defun gds-run-debug-server () "Start (or restart, if already running) the GDS debug server process." @@ -48,10 +49,14 @@ listen on to the path that it should bind to for each one.") (if gds-debug-server (gds-kill-debug-server)) (setq gds-debug-server (gds-start-server "gds-debug" - (cdr (assq gds-server-socket-type - gds-socket-type-alist)) + gds-unix-socket-name + gds-tcp-port 'gds-debug-protocol)) - (process-kill-without-query gds-debug-server)) + (process-kill-without-query gds-debug-server) + ;; Add the Unix socket name to the environment, so that Guile + ;; clients started from within this Emacs will be able to use it, + ;; and thereby ensure that they connect to the GDS in this Emacs. + (setenv "GDS_UNIX_SOCKET_NAME" gds-unix-socket-name)) (defun gds-kill-debug-server () "Kill the GDS debug server process." @@ -617,7 +622,7 @@ you would add an element to this alist to transform :group 'gds) (defcustom gds-server-socket-type 'tcp - "What kind of socket the GDS server should listen on." + "This option is now obsolete and has no effect." :group 'gds :type '(choice (const :tag "TCP" tcp) (const :tag "Unix" unix))) |