diff options
author | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2010-05-24 00:03:30 +0200 |
---|---|---|
committer | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2010-05-24 00:03:30 +0200 |
commit | 0cd8e3f82b0ed93d608f1d3e27b9f2ded7817953 (patch) | |
tree | 997d6b53aac5ff3f435294c1bc207ccbd619ed2d | |
parent | caae6958392c49c959c2f7fb2c86aa18950fc79a (diff) | |
download | geiser-0cd8e3f82b0ed93d608f1d3e27b9f2ded7817953.tar.gz geiser-0cd8e3f82b0ed93d608f1d3e27b9f2ded7817953.tar.bz2 |
Racket: PLT implementation renamed to Racket.
-rw-r--r-- | elisp/geiser-impl.el | 2 | ||||
-rw-r--r-- | elisp/geiser-plt.el | 208 | ||||
-rw-r--r-- | elisp/geiser.el | 10 |
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)) |