summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--elisp/geiser-impl.el2
-rw-r--r--elisp/geiser-plt.el208
-rw-r--r--elisp/geiser.el10
3 files changed, 6 insertions, 214 deletions
diff --git a/elisp/geiser-impl.el b/elisp/geiser-impl.el
index e5bff0a..1c3347c 100644
--- a/elisp/geiser-impl.el
+++ b/elisp/geiser-impl.el
@@ -26,7 +26,7 @@
:type 'symbol
:group 'geiser-implementation)
-(geiser-custom--defcustom geiser-active-implementations '(guile plt)
+(geiser-custom--defcustom geiser-active-implementations '(guile racket)
"List of active installed Scheme implementations."
:type '(repeat symbol)
:group 'geiser-implementation)
diff --git a/elisp/geiser-plt.el b/elisp/geiser-plt.el
deleted file mode 100644
index 64b770d..0000000
--- a/elisp/geiser-plt.el
+++ /dev/null
@@ -1,208 +0,0 @@
-;; geiser-plt.el -- geiser support for PLT scheme
-
-;; Copyright (C) 2009, 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: Sat Apr 25, 2009 21:13
-
-
-
-(require 'geiser-edit)
-(require 'geiser-doc)
-(require 'geiser-eval)
-(require 'geiser-syntax)
-(require 'geiser-custom)
-(require 'geiser-base)
-
-
-;;; Customization:
-
-(defgroup geiser-plt nil
- "Customization for Geiser's PLT flavour."
- :group 'geiser)
-
-(geiser-custom--defcustom geiser-plt-binary
- (cond ((eq system-type 'windows-nt) "Racket.exe")
- ((eq system-type 'darwin) "racket")
- (t "racket"))
- "Name to use to call the mzscheme executable when starting a REPL."
- :type '(choice string (repeat string))
- :group 'geiser-plt)
-
-(geiser-custom--defcustom geiser-plt-collects nil
- "A list of paths to be added to mzscheme's collection directories."
- :type '(repeat file)
- :group 'geiser-plt)
-
-(geiser-custom--defcustom geiser-plt-init-file "~/.plt-geiser"
- "Initialization file with user code for the mzscheme REPL."
- :type 'string
- :group 'geiser-plt)
-
-
-
-;;; REPL support:
-
-(defun geiser-plt--binary ()
- (if (listp geiser-plt-binary) (car geiser-plt-binary) geiser-plt-binary))
-
-(defun geiser-plt--parameters ()
- "Return a list with all parameters needed to start mzscheme.
-This function uses `geiser-plt-init-file' if it exists."
- (let ((init-file (and (stringp geiser-plt-init-file)
- (expand-file-name geiser-plt-init-file))))
- `("-i" "-q"
- "-S" ,(expand-file-name "plt/" geiser-scheme-dir)
- ,@(apply 'append (mapcar (lambda (p) (list "-S" p)) geiser-plt-collects))
- ,@(and (listp geiser-plt-binary) (cdr geiser-plt-binary))
- ,@(and init-file (file-readable-p init-file) (list "-f" init-file))
- "-f" ,(expand-file-name "plt/geiser.rkt" geiser-scheme-dir))))
-
-(defconst geiser-plt--prompt-regexp "^=?\\(mzscheme\\|racket\\)@[^ ]*?> ")
-
-
-;;; Evaluation support:
-
-(defun geiser-plt--language ()
- (save-excursion
- (goto-char (point-min))
- (if (re-search-forward
- "^\\(?:#lang\\|(module +[^ ]+?\\) +\\([^ ]+?\\|([^)]+)\\) *$" nil t)
- (car (geiser-syntax--read-from-string (match-string-no-properties 1)))
- :f)))
-
-(defun geiser-plt--geiser-procedure (proc)
- (if (memq proc '(eval compile))
- `((dynamic-require 'geiser 'geiser:eval) ',(geiser-plt--language))
- `(dynamic-require 'geiser ',(intern (format "geiser:%s" proc)))))
-
-(defconst geiser-plt--module-re
- "^(module +\\([^ ]+\\)")
-
-(defun geiser-plt--explicit-module ()
- (save-excursion
- (goto-char (point-min))
- (and (re-search-forward geiser-plt--module-re nil t)
- (ignore-errors
- (car (geiser-syntax--read-from-string
- (match-string-no-properties 1)))))))
-
-(defsubst geiser-plt--implicit-module ()
- (save-excursion
- (goto-char (point-min))
- (if (re-search-forward "^#lang " nil t)
- (buffer-file-name)
- :f)))
-
-(defun geiser-plt--get-module (&optional module)
- (cond ((and (null module) (buffer-file-name)))
- ;; (geiser-plt--explicit-module)
- ((null module) (geiser-plt--implicit-module))
- ((symbolp module) module)
- ((and (stringp module) (file-name-absolute-p module)) module)
- ((stringp module) (intern module))
- (t nil)))
-
-(defun geiser-plt--symbol-begin (module)
- (save-excursion (skip-syntax-backward "^-()>") (point)))
-
-(defun geiser-plt--enter-command (module)
- (and (stringp module) (format "(enter! (file %S))" module)))
-
-(defconst geiser-plt--binding-forms
- '(for for/list for/hash for/hasheq for/and for/or
- for/lists for/first for/last for/fold))
-
-(defconst geiser-plt--binding-forms*
- '(for* for*/list for*/lists for*/hash for*/hasheq for*/and
- for*/or for*/first for*/last for*/fold))
-
-;;; External help
-
-(defsubst geiser-plt--get-help (symbol module)
- (geiser-eval--send/wait
- `(:eval (get-help ',symbol (:module ,module)) geiser/autodoc)))
-
-(defun geiser-plt--external-help (id module)
- (message "Requesting help for '%s'..." id)
- (let ((out (geiser-eval--retort-output (geiser-plt--get-help id module))))
- (when (and out (string-match " but provided by:\n +\\(.+\\)\n" out))
- (geiser-plt--get-help symbol (match-string 1 out))))
- (minibuffer-message "%s done" (current-message))
- t)
-
-
-;;; Error display
-
-(defconst geiser-plt--file-rxs '("^\\([^:\n\"]+\\):\\([0-9]+\\):\\([0-9]+\\)"
- "path:\"?\\([^>\"\n]+\\)\"?>"
- "module: \"\\([^>\"\n]+\\)\""))
-
-(defun geiser-plt--find-files (rx)
- (save-excursion
- (while (re-search-forward rx nil t)
- (geiser-edit--make-link (match-beginning 1)
- (match-end 1)
- (match-string 1)
- (match-string 2)
- (match-string 3)))))
-
-(defun geiser-plt--display-error (module key msg)
- (when key
- (insert "Error: ")
- (geiser-doc--insert-button key nil 'plt)
- (newline 2))
- (when msg
- (let ((p (point)))
- (insert msg)
- (when key
- (let ((end (point)))
- (goto-char p)
- (mapc 'geiser-plt--find-files geiser-plt--file-rxs)
- (goto-char end)
- (newline)))))
- t)
-
-
-;;; Trying to ascertain whether a buffer is mzscheme scheme:
-
-(defun geiser-plt--guess ()
- (or (save-excursion
- (goto-char (point-min))
- (re-search-forward "#lang " nil t))
- (geiser-plt--explicit-module)))
-
-
-;;; Implementation definition:
-
-(define-geiser-implementation plt
- (unsupported-procedures '(callers callees generic-methods))
- (binary geiser-plt--binary)
- (arglist geiser-plt--parameters)
- (startup)
- (prompt-regexp geiser-plt--prompt-regexp)
- (marshall-procedure geiser-plt--geiser-procedure)
- (find-module geiser-plt--get-module)
- (enter-command geiser-plt--enter-command)
- (find-symbol-begin geiser-plt--symbol-begin)
- (display-error geiser-plt--display-error)
- (display-help geiser-plt--external-help)
- (check-buffer geiser-plt--guess)
- (binding-forms geiser-plt--binding-forms)
- (binding-forms* geiser-plt--binding-forms*))
-
-(geiser-impl--add-to-alist 'regexp
- "\\.\\(mzscheme\\|racket\\)\\.sl?s$" 'plt t)
-(geiser-impl--add-to-alist 'regexp "\\.ss$" 'plt t)
-(geiser-impl--add-to-alist 'regexp "\\.rkt$" 'plt t)
-
-(defalias 'run-racket 'run-plt)
-(defalias 'switch-to-racket 'switch-to-plt)
-
-
-(provide 'geiser-plt)
-;;; geiser-plt.el ends here
diff --git a/elisp/geiser.el b/elisp/geiser.el
index 4389652..b241b78 100644
--- a/elisp/geiser.el
+++ b/elisp/geiser.el
@@ -47,11 +47,11 @@
(autoload 'switch-to-guile "geiser-guile.el"
"Start a Geiser Guile REPL, or switch to a running one." t)
-(autoload 'run-plt "geiser-plt.el"
- "Start a Geiser MzScheme REPL, or switch to a running one." t)
+(autoload 'run-racket "geiser-racket.el"
+ "Start a Geiser Racket REPL, or switch to a running one." t)
-(autoload 'switch-to-plt "geiser-guile.el"
- "Start a Geiser MzScheme REPL, or switch to a running one." t)
+(autoload 'switch-to-racket "geiser-guile.el"
+ "Start a Geiser Racket REPL, or switch to a running one." t)
(autoload 'geiser-mode "geiser-mode.el"
"Minor mode adding Geiser REPL interaction to Scheme buffers." t)
@@ -72,7 +72,7 @@
geiser-faces
geiser-mode
geiser-guile
- geiser-plt
+ geiser-racket
geiser-implementation
geiser-xref))