diff options
author | jao <jao@gnu.org> | 2022-10-09 20:05:40 +0100 |
---|---|---|
committer | jao <jao@gnu.org> | 2022-10-09 20:05:40 +0100 |
commit | 39b7e9357d0be4ae80268e073c8e077ecd7c1387 (patch) | |
tree | 6318485cfd6e4e2eaa8067fe8d2a67fe6ccb35dd | |
parent | 2d8cd83c646272c7c4d8f27af0155424d8f183fb (diff) | |
download | geiser-chez-39b7e9357d0be4ae80268e073c8e077ecd7c1387.tar.gz geiser-chez-39b7e9357d0be4ae80268e073c8e077ecd7c1387.tar.bz2 |
remote connections: wee refactoring
-rw-r--r-- | geiser-chez.el | 67 |
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> $\\|.+: $") |