From 3655a742863cf260c182d7f707f95b643e9e4d9b Mon Sep 17 00:00:00 2001 From: Jose Antonio Ortega Ruiz Date: Wed, 18 Feb 2009 12:59:41 +0100 Subject: (geiser eval) functionality moved to (geiser emacs). --- geiser/eval.scm | 102 -------------------------------------------------------- 1 file changed, 102 deletions(-) delete mode 100644 geiser/eval.scm (limited to 'geiser/eval.scm') diff --git a/geiser/eval.scm b/geiser/eval.scm deleted file mode 100644 index fc5d7bd..0000000 --- a/geiser/eval.scm +++ /dev/null @@ -1,102 +0,0 @@ -;; eval.scm -- evaluation procedures - -;; Copyright (C) 2009 Jose Antonio Ortega Ruiz - -;; Author: Jose Antonio Ortega Ruiz -;; Start date: Fri Feb 06, 2009 22:54 - -;; This file is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 3 of the License, or -;; (at your option) any later version. - -;; This file is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . - -;;; Comentary: - -;; Module defining evaluation procedures called from the Emacs side. - -;;; Code: - -(define-module (geiser eval) - #:export (eval-in compile-in comp-file load-file) - #:use-module (srfi srfi-1) - #:no-backtrace) - -(define (eval-in form module-name) - "Evals @var{form} in the module designated by @var{module-name}. -If @var{module-name} is @var{#f} or resolution fails, the current module is used instead. -The result is a list of the form ((RESULT . ) (OUTPUT . )) -if no evaluation error happens, or ((ERROR (KEY . ) ...)) -in case of errors. Each error arg is a cons (NAME . VALUE), where NAME includes -SUBR, MSG and REST." - (let ((module (or (and (list? module-name) - (resolve-module module-name)) - (current-module)))) - (catch #t - (lambda () - (let* ((result #f) - (output - (with-output-to-string - (lambda () - (set! result (eval form module)))))) - (make-result result output))) - error-handler))) - -(define (compile-in form module-name) - "Compiles @var{form} in the module designated by @var{module-name}. -If @var{module-name} is @var{#f} or resolution fails, the current module is used instead. -The result is a list of the form ((RESULT . ) (OUTPUT . )) -if no evaluation error happens, or ((ERROR (KEY . ) ...)) -in case of errors. Each error arg is a cons (NAME . VALUE), where NAME includes -SUBR, MSG and REST." - (let ((module (or (and (list? module-name) - (resolve-module module-name)) - (current-module)))) - (catch #t - (lambda () - (let* ((result #f) - (output - (with-output-to-string - (lambda () - (save-module-excursion - (lambda () - (set-current-module module) - (set! result (compile form)))))))) - (make-result result output))) - error-handler))) - -(define (make-result result output) - (list (cons 'result result) (cons 'output output))) - -(define (error-handler key . args) - (list (cons 'error (apply parse-error (cons key args))))) - -(define (parse-error key . args) - (let* ((len (length args)) - (subr (and (> len 0) (first args))) - (msg (and (> len 1) (second args))) - (margs (and (> len 2) (third args))) - (rest (and (> len 3) (fourth args)))) - (list (cons 'key key) - (cons 'subr (or subr '())) - (cons 'msg (if msg (apply format (cons #f (cons msg margs))) '())) - (cons 'rest (or rest '()))))) - -(define (comp-file path) - "Compile and load file, given its full @var{path}." - (and (compile-file path) - (load-compiled (compiled-file-name path)))) - -(define (load-file path) - "Load file, given its full @var{path}." - (compile-and-load path)) - - -;;; eval.scm ends here -- cgit v1.2.3