~ruther/guix-local

f80a7a6c58539bfdc73a45677fb414e0cae0faef — Alex Kost 10 years ago f029f8a
emacs: Add code to call guile procedures.

* emacs/guix-guile.el (guix-guile-make-call-expression): New function.
* emacs/guix-geiser.el: Require 'guix-guile'.
  (guix-geiser-call, guix-geiser-call-in-repl): New functions.
2 files changed, 20 insertions(+), 0 deletions(-)

M emacs/guix-geiser.el
M emacs/guix-guile.el
M emacs/guix-geiser.el => emacs/guix-geiser.el +13 -0
@@ 24,6 24,7 @@
;;; Code:

(require 'geiser-mode)
(require 'guix-guile)

(defun guix-geiser-repl ()
  "Return the current Geiser REPL."


@@ 79,6 80,18 @@ If NO-DISPLAY is non-nil, do not switch to the REPL buffer."
    (unless no-display
      (geiser-repl--switch-to-buffer repl))))

(defun guix-geiser-call (proc &rest args)
  "Call (PROC ARGS ...) synchronously using the current Geiser REPL.
PROC and ARGS should be strings."
  (guix-geiser-eval
   (apply #'guix-guile-make-call-expression proc args)))

(defun guix-geiser-call-in-repl (proc &rest args)
  "Call (PROC ARGS ...) in the current Geiser REPL.
PROC and ARGS should be strings."
  (guix-geiser-eval-in-repl
   (apply #'guix-guile-make-call-expression proc args)))

(provide 'guix-geiser)

;;; guix-geiser.el ends here

M emacs/guix-guile.el => emacs/guix-guile.el +7 -0
@@ 24,6 24,13 @@

;;; Code:

(defun guix-guile-make-call-expression (proc &rest args)
  "Return \"(PROC ARGS ...)\" string.
PROC and ARGS should be strings."
  (format "(%s %s)"
          proc
          (mapconcat #'identity args " ")))

(defun guix-make-guile-expression (fun &rest args)
  "Return string containing a guile expression for calling FUN with ARGS."
  (format "(%S %s)" fun