diff options
| author | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2010-11-01 01:45:58 +0100 | 
|---|---|---|
| committer | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2010-11-01 01:45:58 +0100 | 
| commit | cd2cfae323665c99f56528a9d67fd8c386fac541 (patch) | |
| tree | abdf9eab57e179e28e809c1573fc0e775083c72c | |
| parent | d5252a159bb218181f440e04b159f1b08fda398a (diff) | |
| download | geiser-guile-cd2cfae323665c99f56528a9d67fd8c386fac541.tar.gz geiser-guile-cd2cfae323665c99f56528a9d67fd8c386fac541.tar.bz2 | |
Guile: better meta-command args handling
| -rw-r--r-- | elisp/geiser-guile.el | 26 | 
1 files changed, 5 insertions, 21 deletions
| diff --git a/elisp/geiser-guile.el b/elisp/geiser-guile.el index f0d090d..93d1237 100644 --- a/elisp/geiser-guile.el +++ b/elisp/geiser-guile.el @@ -113,34 +113,18 @@ This function uses `geiser-guile-init-file' if it exists."  ;;; Evaluation support: -(defun geiser-guile--linearize (str) -  (if (string-match "\n" str) -      (with-temp-buffer -        (set-syntax-table scheme-mode-syntax-table) -        (insert str) -        (goto-char (point-min)) -        (let ((kill-whole-line nil)) -          (while (> (skip-syntax-forward "^<") 0) -            (let ((p (point))) -              (end-of-line) -              (kill-region p (point))))) -        (goto-char (point-min)) -        (while (search-forward-regexp "\n[ \t\r\n]*" nil t) -          (replace-match " ")) -        (buffer-string)) -    str)) -  (defsubst geiser-guile--linearize-args (args) -  (mapconcat 'geiser-guile--linearize args " ")) +  (mapconcat 'identity args " "))  (defun geiser-guile--geiser-procedure (proc &rest args)    (case proc -    ((eval compile) (format ",geiser-eval %s %s" +    ((eval compile) (format ",geiser-eval %s %s%s"                              (or (car args) "#f") -                            (geiser-guile--linearize-args (cdr args)))) +                            (geiser-guile--linearize-args (cdr args)) +                            (if (cddr args) "" " ()")))      ((load-file compile-file) (format ",geiser-load-file %s" (car args)))      ((no-values) ",geiser-no-values") -    (t (format "ge:%s %s" proc (geiser-guile--linearize-args args))))) +    (t (format "ge:%s (%s)" proc (geiser-guile--linearize-args args)))))  (defconst geiser-guile--module-re    "(define-module +\\(([^)]+)\\)") | 
