summaryrefslogtreecommitdiff
path: root/elisp/geiser-inf.el
diff options
context:
space:
mode:
authorJose Antonio Ortega Ruiz <jao@gnu.org>2010-11-13 02:07:19 +0100
committerJose Antonio Ortega Ruiz <jao@gnu.org>2010-11-13 02:07:19 +0100
commit33d9ce47c90674acfe8b60afdb4dfc9657c4e2be (patch)
tree1478effd3ac940c4c9de057d1059f8bb6e19e779 /elisp/geiser-inf.el
parent31e4a41aa1ddca185f1e20ac6262e540329ea90b (diff)
downloadgeiser-33d9ce47c90674acfe8b60afdb4dfc9657c4e2be.tar.gz
geiser-33d9ce47c90674acfe8b60afdb4dfc9657c4e2be.tar.bz2
Superior schemes
Inferior schemes weren't really a good idea, were they? With remote connections one can launch an external scheme to debug Geiser anyway. And everything is (ahem, will be) simpler when we add new implementations.
Diffstat (limited to 'elisp/geiser-inf.el')
-rw-r--r--elisp/geiser-inf.el89
1 files changed, 0 insertions, 89 deletions
diff --git a/elisp/geiser-inf.el b/elisp/geiser-inf.el
deleted file mode 100644
index 329beea..0000000
--- a/elisp/geiser-inf.el
+++ /dev/null
@@ -1,89 +0,0 @@
-;;; geiser-inf.el -- inferior scheme processes
-
-;; Copyright (c) 2010 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 Nov 11, 2010 01:04
-
-
-(require 'geiser-impl)
-(require 'geiser-base)
-
-(require 'cmuscheme)
-
-
-;; Implementation-dependent parameters
-
-(geiser-impl--define-caller geiser-inf--binary binary ()
- "A variable or function returning the path to the scheme binary
-for this implementation.")
-
-(geiser-impl--define-caller geiser-inf--arglist arglist ()
- "A function taking no arguments and returning a list of
-arguments to be used when invoking the scheme binary.")
-
-(geiser-impl--define-caller geiser-inf--prompt-re inferior-prompt-regexp ()
- "A variable (or thunk returning a value) giving the regular
-expression for this implementation's inferior scheme prompt. By default,
-cmuscheme's prompt regexp will be used.")
-
-(geiser-impl--define-caller geiser-inf--init-server-cmd init-server-command ()
- "A variable (or thunk returning a value) giving the REPL server
-initialization command for local processes. The command must return a
-list of the form (server PORT).")
-
-
-;; Auxiliary functions
-
-(defun geiser-inf--wait-for-prompt (timeout)
- (let ((p (point)) (seen) (buffer (current-buffer)))
- (while (and (not seen)
- (> timeout 0)
- (get-buffer-process buffer))
- (sleep-for 0.1)
- (setq timeout (- timeout 100))
- (goto-char p)
- (setq seen (re-search-forward comint-prompt-regexp nil t)))
- (goto-char (point-max))
- (unless seen (error "%s" "No prompt found!"))))
-
-(defun geiser-inf--make-buffer (impl)
- (with-current-buffer (generate-new-buffer (format " * inferior %s *" impl))
- (inferior-scheme-mode)
- (current-buffer)))
-
-(defun geiser-inf--sentinel (proc evnt)
- (let ((buff (process-buffer proc)))
- (when (buffer-live-p buff) (kill-buffer buff))))
-
-
-;; Starting an inferior REPL
-
-(defun geiser-inf--run-scheme (impl)
- (let ((bin (geiser-inf--binary impl))
- (args (geiser-inf--arglist impl))
- (prompt-rx (geiser-inf--prompt-re impl)))
- (unless (and bin args)
- (error "Sorry, I don't know how to start %s" impl))
- (with-current-buffer (geiser-inf--make-buffer impl)
- (when prompt-rx comint-prompt-regexp prompt-rx)
- (condition-case err
- (apply 'make-comint-in-buffer
- `(,(buffer-name) ,(current-buffer) ,bin nil ,@args))
- (error (error "Error starting inferior %s REPL: %s"
- impl (error-message-string err))))
- (geiser-inf--wait-for-prompt 10000)
- (set-process-sentinel (get-buffer-process (current-buffer))
- 'geiser-inf--sentinel)
- (cons (current-buffer)
- (comint-redirect-results-list (geiser-inf--init-server-cmd impl)
- "(port \\([0-9]+\\))"
- 1)))))
-
-
-(provide 'geiser-inf)
-