diff options
author | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2009-10-10 01:49:49 +0200 |
---|---|---|
committer | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2009-10-10 01:49:49 +0200 |
commit | 35b197790ab8fccde81c54c9cfd01aea5db36e87 (patch) | |
tree | c052bfe475d41856cfea58f41b7aaed72d1dbcf3 /elisp/geiser-r6rs.el | |
parent | c52f6e93bd6b506d6c445909c691d8104624b496 (diff) | |
download | geiser-35b197790ab8fccde81c54c9cfd01aea5db36e87.tar.gz geiser-35b197790ab8fccde81c54c9cfd01aea5db36e87.tar.bz2 |
Base R6RS elisp implementation.
Diffstat (limited to 'elisp/geiser-r6rs.el')
-rw-r--r-- | elisp/geiser-r6rs.el | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/elisp/geiser-r6rs.el b/elisp/geiser-r6rs.el new file mode 100644 index 0000000..48c33d9 --- /dev/null +++ b/elisp/geiser-r6rs.el @@ -0,0 +1,50 @@ +;;; geiser-r6rs.el -- Generic support for R6RS implementations + +;; Copyright (C) 2009 Jose Antonio Ortega Ruiz + +;; This program is free software; you can redistribute it and/or +;; modify it under the terms of the Modified BSD License. You should +;; have received a copy of the license along with this program. If +;; not, see <http://www.xfree86.org/3.3.6/COPYRIGHT2.html#5>. + +;; Start date: Thu Sep 24, 2009 15:06 + + +(require 'geiser-impl) +(require 'geiser-base) + + + +(defun geiser-r6rs--marshall-procedure (proc) + `(eval ,proc '(geiser))) + +(defun geiser-r6rs--find-library (&optional name) + (cond ((null name) + (save-excursion + (while (not (zerop (geiser-syntax--nesting-level))) + (backward-up-list)) + (when (re-search-forward "\\=(library +(" nil t) + (backward-char) + (geiser-syntax--read/list)))) + ((listp name) name) + ((stringp name) + (let ((name (car (geiser-syntax--read-from-string name)))) + (and (listp name) name))))) + +(defun geiser-r6rs--check () + (save-excursion + (goto-char (point-min)) + (re-search-forward "^(library[ \t]" nil t))) + + +;;; Base class for R6RS implementations: + +(geiser-impl--define load-file-name 'r6rs nil + '(marshall-procedure geiser-r6rs--marshall-procedure) + '(find-module geiser-r6rs--find-library) + '(check-buffer geiser-r6rs--check)) + + +(provide 'geiser-r6rs) +;;; geiser-r6rs.el ends here + |