summaryrefslogtreecommitdiff
path: root/geiser-chez.el
diff options
context:
space:
mode:
authorjao <jao@gnu.org>2022-10-09 20:05:40 +0100
committerjao <jao@gnu.org>2022-10-09 20:05:40 +0100
commit39b7e9357d0be4ae80268e073c8e077ecd7c1387 (patch)
tree6318485cfd6e4e2eaa8067fe8d2a67fe6ccb35dd /geiser-chez.el
parent2d8cd83c646272c7c4d8f27af0155424d8f183fb (diff)
downloadgeiser-chez-39b7e9357d0be4ae80268e073c8e077ecd7c1387.tar.gz
geiser-chez-39b7e9357d0be4ae80268e073c8e077ecd7c1387.tar.bz2
remote connections: wee refactoring
Diffstat (limited to 'geiser-chez.el')
-rw-r--r--geiser-chez.el67
1 files changed, 30 insertions, 37 deletions
diff --git a/geiser-chez.el b/geiser-chez.el
index cb6ad00..ccaf356 100644
--- a/geiser-chez.el
+++ b/geiser-chez.el
@@ -48,8 +48,9 @@
(geiser-custom--defcustom geiser-chez-init-file "~/.chez-geiser"
"Initialization file with user code for the Chez REPL.
-Do mind that this file is local to running process, so remote process will use
-init file at this location in remote host."
+Do mind that this file is local to running process, so remote
+process will use an init file at this location in the remote
+host."
:type 'string
:group 'geiser-chez)
@@ -84,46 +85,38 @@ init file at this location in remote host."
(expand-file-name "src" (file-name-directory load-file-name))
"Directory where the Chez scheme geiser modules are installed.")
+(defun geiser-chez--init-file ()
+ "Possibly remote init file, when it exists, as a list."
+ (let* ((file (and (stringp geiser-chez-init-file)
+ (expand-file-name geiser-chez-init-file)))
+ (file (and file (concat (file-remote-p default-directory) file))))
+ (if (and file (file-exists-p file))
+ (list file)
+ (geiser-log--info "Init file not readable (%s)" file)
+ nil)))
+
+(defun geiser-chez--module-files ()
+ "Possibly remote list of scheme files used by chez."
+ (let ((local-file (expand-file-name "geiser/geiser.ss" geiser-chez-scheme-dir)))
+ (if (file-remote-p default-directory)
+ (let* ((temporary-file-directory (temporary-file-directory))
+ (temp-dir (make-temp-file "geiser" t))
+ (remote (concat (file-name-as-directory temp-dir) "geiser.ss")))
+ (with-temp-buffer
+ (insert-file-contents local-file)
+ (write-file remote))
+ (list (file-local-name remote)))
+ (list local-file))))
+
(defun geiser-chez--parameters ()
"Return a list with all parameters needed to start Chez Scheme.
+
This function uses `geiser-chez-init-file' if it exists."
- (append
- (when-let ((init-file (and (stringp geiser-chez-init-file)
- (expand-file-name geiser-chez-init-file))))
- (if (file-exists-p
- (concat
- (file-remote-p default-directory)
- init-file))
- (list init-file)
- (geiser-log--warn
- "File %s does not exist, so it's not added to CLI args"
- init-file)))
- (let* ((local-geiser-module-file
- (expand-file-name "geiser/geiser.ss" geiser-chez-scheme-dir))
- (geiser-module-file
- (if (file-remote-p default-directory)
- ;; copy the content to remote file
- (let* ((temporary-file-directory (temporary-file-directory))
- (temp-dir
- (make-temp-file "geiser" t))
- (remote-geiser-module-file
- (concat
- (file-name-as-directory
- temp-dir)
- "geiser.ss")))
- ;; write to file
- (with-temp-buffer
- (insert-file-contents local-geiser-module-file)
- (write-file remote-geiser-module-file))
- (file-local-name
- remote-geiser-module-file))
- ;; else, process and file are local
- local-geiser-module-file)))
- (list geiser-module-file))
- geiser-chez-extra-command-line-parameters))
+ (append (geiser-chez--init-file)
+ (geiser-chez--module-files)
+ geiser-chez-extra-command-line-parameters))
(defconst geiser-chez--prompt-regexp "> ")
-
(defconst geiser-chez--debugger-prompt-regexp "debug> $\\|break> $\\|.+: $")