summaryrefslogtreecommitdiff
path: root/geiser-chez.el
diff options
context:
space:
mode:
Diffstat (limited to 'geiser-chez.el')
-rw-r--r--geiser-chez.el43
1 files changed, 32 insertions, 11 deletions
diff --git a/geiser-chez.el b/geiser-chez.el
index 3c72cbf..0b10304 100644
--- a/geiser-chez.el
+++ b/geiser-chez.el
@@ -1,21 +1,22 @@
-;;; geiser-chez.el -- Chez Scheme's implementation of the geiser protocols
+;;; geiser-chez.el --- Chez Scheme's implementation of the geiser protocols -*- lexical-binding: t; -*-
;; Author: Peter <craven@gmx.net>
-;; Maintainer:
+;; Maintainer: Jose A Ortega Ruiz <jao@gnu.org>
;; Keywords: languages, chez, scheme, geiser
;; Homepage: https://gitlab.com/emacs-geiser/chez
-;; Package-Requires: ((emacs "24.4") (geiser-core "1.0"))
+;; Package-Requires: ((emacs "24.4") (geiser "0.12"))
;; SPDX-License-Identifier: BSD-3-Clause
-;; Version: 0.1
+;; Version: 0.13
-;; 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>.
+;;; Commentary:
+
+;; This package provides support for Chez scheme in geiser.
;;; Code:
+(require 'geiser)
+
(require 'geiser-connection)
(require 'geiser-syntax)
(require 'geiser-custom)
@@ -23,7 +24,6 @@
(require 'geiser-eval)
(require 'geiser-edit)
(require 'geiser-log)
-(require 'geiser)
(require 'compile)
(require 'info-look)
@@ -62,6 +62,7 @@
;;; REPL support:
(defun geiser-chez--binary ()
+ "Return path to Chez scheme binary."
(if (listp geiser-chez-binary)
(car geiser-chez-binary)
geiser-chez-binary))
@@ -85,6 +86,7 @@ This function uses `geiser-chez-init-file' if it exists."
;;; Evaluation support:
(defun geiser-chez--geiser-procedure (proc &rest args)
+ "Transform PROC in string for a scheme procedure using ARGS."
(cl-case proc
((eval compile)
(let ((form (mapconcat 'identity (cdr args) " "))
@@ -104,6 +106,7 @@ This function uses `geiser-chez-init-file' if it exists."
(format "(geiser:%s %s)" proc form)))))
(defun geiser-chez--get-module (&optional module)
+ "Find current module, or normalize MODULE."
(cond ((null module)
:f)
((listp module) module)
@@ -114,24 +117,31 @@ This function uses `geiser-chez-init-file' if it exists."
(t :f)))
(defun geiser-chez--symbol-begin (module)
+ "Return beginning of current symbol while in MODULE."
(if module
(max (save-excursion (beginning-of-line) (point))
(save-excursion (skip-syntax-backward "^(>") (1- (point))))
(save-excursion (skip-syntax-backward "^'-()>") (point))))
(defun geiser-chez--import-command (module)
+ "Return string representing an sexp importing MODULE."
(format "(import %s)" module))
-(defun geiser-chez--exit-command () "(exit 0)")
+(defun geiser-chez--exit-command ()
+ "Retrun string representing a REPL exit sexp."
+ "(exit 0)")
+
;;
;; ;;; REPL startup
(defconst geiser-chez-minimum-version "9.4")
(defun geiser-chez--version (binary)
+ "Use BINARY to find Chez scheme version."
(car (process-lines binary "--version")))
-(defun geiser-chez--startup (remote)
+(defun geiser-chez--startup (_remote)
+ "Startup function."
(let ((geiser-log-verbose-p t))
(compilation-setup t)
(geiser-eval--send/wait "(begin (import (geiser)) (write `((result ) (output . \"\"))) (newline))")))
@@ -140,6 +150,7 @@ This function uses `geiser-chez-init-file' if it exists."
;;; Error display:
(defun geiser-chez--display-error (module key msg)
+ "Display an error found in MODULE with the given KEY and message MSG."
(when (stringp msg)
(save-excursion (insert msg))
(geiser-edit--buttonize-files))
@@ -179,6 +190,7 @@ This function uses `geiser-chez-init-file' if it exists."
"with-output-to-string"))
(defun geiser-chez--keywords ()
+ "Return list of Chez-specific keywords."
(append
(geiser-syntax--simple-keywords geiser-chez-extra-keywords)
(geiser-syntax--simple-keywords geiser-chez--builtin-keywords)))
@@ -240,5 +252,14 @@ This function uses `geiser-chez-init-file' if it exists."
(geiser-impl--add-to-alist 'regexp "\\.ss$" 'chez t)
(geiser-impl--add-to-alist 'regexp "\\.def$" 'chez t)
+
+;;;###autoload
+(autoload 'run-chez "geiser-chez" "Start a Geiser Chez REPL." t)
+
+;;;###autoload
+(autoload 'switch-to-chez "geiser-chez"
+ "Start a Geiser Chez REPL, or switch to a running one." t)
+
(provide 'geiser-chez)
+;;; geiser-chez.el ends here