From cf8fbd078da45b8f796f33c3d0dea2ba5c6248ec Mon Sep 17 00:00:00 2001 From: jao Date: Fri, 17 Dec 2021 20:55:46 +0000 Subject: Support for connection-address --- geiser-guile.el | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/geiser-guile.el b/geiser-guile.el index dcf872e..597e6b9 100644 --- a/geiser-guile.el +++ b/geiser-guile.el @@ -78,7 +78,7 @@ exported modules." :type 'boolean :link '(info-link "(guile) Declarative Modules")) -(geiser-custom--defcustom geiser-guile-debug-show-bt-p nil +(geiser-custom--defcustom geiser-guile-debug-show-bt-p t "Whether to automatically show a full backtrace when entering the debugger. If nil, only the last frame is shown." :type 'boolean) @@ -144,14 +144,23 @@ effect on new REPLs. For existing ones, use the command (expand-file-name "src" (file-name-directory load-file-name)) "Directory where the Guile scheme geiser modules are installed.") +(defvar geiser-guile--conn-address nil) + +(defun geiser-guile--get-connection-address (&optional new) + "The path to the UNIX socket to talk to Guile in a connection." + (when new + (setq geiser-guile--conn-address (make-temp-name "/tmp/geiser-guile-"))) + geiser-guile--conn-address) + (defun geiser-guile--parameters () "Return a list with all parameters needed to start Guile. This function uses `geiser-guile-init-file' if it exists." (let ((init-file (and (stringp geiser-guile-init-file) (expand-file-name geiser-guile-init-file))) - (q-flags (and (not geiser-guile-load-init-file-p) '("-q")))) + (q-flags (and (not geiser-guile-load-init-file-p) '("-q"))) + (cflag (format "--listen=%s" (geiser-guile--get-connection-address t)))) `(,@(and (listp geiser-guile-binary) (cdr geiser-guile-binary)) - ,@q-flags "-L" ,geiser-guile-scheme-dir + ,@q-flags "-L" ,geiser-guile-scheme-dir ,cflag ,@(apply 'append (mapcar (lambda (p) (list "-L" p)) geiser-guile-load-path)) ,@(and init-file (file-readable-p init-file) (list "-l" init-file))))) @@ -413,7 +422,8 @@ See `geiser-guile-use-declarative-modules-p'." (g-load-path (buffer-local-value 'geiser-guile-load-path (or geiser-repl--last-scm-buffer (current-buffer))))) - (when remote (geiser-guile--set-geiser-load-path)) + (when (or geiser-guile--connection-address remote) + (geiser-guile--set-geiser-load-path)) (geiser-guile--set-up-declarative-modules) (geiser-eval--send/wait ",use (geiser emacs)\n'done") (dolist (dir g-load-path) @@ -461,6 +471,7 @@ See `geiser-guile-use-declarative-modules-p'." (version-command geiser-guile--version) (minimum-version geiser-guile-minimum-version) (repl-startup geiser-guile--startup) + (connection-address geiser-guile--get-connection-address) (prompt-regexp geiser-guile--prompt-regexp) (debugger-prompt-regexp geiser-guile--debugger-prompt-regexp) (enter-debugger geiser-guile--enter-debugger) -- cgit v1.2.3