diff options
| -rw-r--r-- | geiser-chez.el | 44 | 
1 files changed, 38 insertions, 6 deletions
| diff --git a/geiser-chez.el b/geiser-chez.el index 8c1c178..622acfe 100644 --- a/geiser-chez.el +++ b/geiser-chez.el @@ -46,7 +46,10 @@    :group 'geiser-chez)  (geiser-custom--defcustom geiser-chez-init-file "~/.chez-geiser" -  "Initialization file with user code for the Chez REPL." +  "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."    :type 'string    :group 'geiser-chez) @@ -81,11 +84,40 @@  (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." -  (let ((init-file (and (stringp geiser-chez-init-file) -                        (expand-file-name geiser-chez-init-file)))) -    `(,@(and init-file (file-readable-p init-file) (list init-file)) -      ,(expand-file-name "geiser/geiser.ss" geiser-chez-scheme-dir) -      ,@geiser-chez-extra-command-line-parameters))) +  (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))  (defconst geiser-chez--prompt-regexp "> ") | 
