[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/geiser-racket 1996cca 187/191: Ready for MELPA
From: |
Philip Kaludercic |
Subject: |
[nongnu] elpa/geiser-racket 1996cca 187/191: Ready for MELPA |
Date: |
Sun, 1 Aug 2021 18:32:26 -0400 (EDT) |
branch: elpa/geiser-racket
commit 1996cca9e9aafbdf27c1014b13287c9d3cd22f84
Author: jao <jao@gnu.org>
Commit: jao <jao@gnu.org>
Ready for MELPA
---
README.md | 11 ---------
geiser-racket.el | 74 ++++++++++++++++++++++++++++++++------------------------
readme.org | 9 +++++++
3 files changed, 52 insertions(+), 42 deletions(-)
diff --git a/README.md b/README.md
deleted file mode 100644
index 41dbd1f..0000000
--- a/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# Racket and Geiser talk to each other
-
-This package provides support for using
-[Racket](http://racket-lang.org) in Emacs with
-[Geiser](http://geiser.nongnu.org).
-
-Provided geiser-core is installed in your system, if this package's
-directory is in your load path, just add `(require 'geiser-racket)` to
-your initialisation files and then `M-x run-racket` to start a REPL.
-Files with the `.rkt` and `.ssl` extensions should be automatically
-recognized as racket-flavoured geiser buffers.
diff --git a/geiser-racket.el b/geiser-racket.el
index b620995..7a1fb57 100644
--- a/geiser-racket.el
+++ b/geiser-racket.el
@@ -1,19 +1,19 @@
-;;; geiser-racket.el -- geiser support for Racket scheme
-
-;; Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2020 Jose
Antonio Ortega Ruiz
+;;; geiser-racket.el --- Spport for Racket in Geiser -*- lexical-binding: t;
-*-
;; Author: Jose Antonio Ortega Ruiz (jao@gnu.org)
;; Maintainer: Jose Antonio Ortega Ruiz (jao@gnu.org)
;; Keywords: languages, racket, scheme, geiser
;; Homepage: https://gitlab.com/emacs-geiser/racket
-;; Package-Requires: ((emacs "26.1") (geiser-core "1.0"))
+;; Package-Requires: ((emacs "26.1") (geiser "0.12"))
;; SPDX-License-Identifier: BSD-3-Clause
;; Version: 1.0
-;; This file is NOT part of GNU Emacs.
+;; Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2020, 2021
Jose Antonio Ortega Ruiz
+
;;; Commentary:
-;; geiser-racket extends the `geiser' core package to support the
+
+;; This package extends the `geiser' core package to support the
;; Racket "scheme" implementation.
@@ -84,17 +84,20 @@ This executable is used by `run-gracket', and, if
;;; REPL support:
-(defsubst geiser-racket--real-binary ()
+(defun geiser-racket--real-binary ()
+ "Decide what racket binary to use."
(if geiser-racket-use-gracket-p
geiser-racket-gracket-binary
geiser-racket-binary))
(defun geiser-racket--binary ()
+ "Combine real binary with any given flags."
(let ((binary (geiser-racket--real-binary)))
(if (listp binary) (car binary) binary)))
(defvar geiser-racket-scheme-dir
- (expand-file-name "src/" (file-name-directory load-file-name)))
+ (expand-file-name "src" (file-name-directory load-file-name))
+ "Directory where the Racket geiser package is installed.")
(defun geiser-racket--parameters ()
"Return a list with all parameters needed to start racket.
@@ -116,7 +119,7 @@ This function uses `geiser-racket-init-file' if it exists."
;;; Remote REPLs
;;;###autoload
-(defun connect-to-racket ()
+(defun geiser-racket-connect ()
"Start a Racket REPL connected to a remote process.
The remote process needs to be running a REPL server started
@@ -132,6 +135,7 @@ using start-geiser, a procedure in the geiser/server
module."
"^(module[+*]? +\\([^ ]+\\)\\W+\\([^ ]+\\)?")
(defun geiser-racket--explicit-module ()
+ "Detect an explicit racket module declaration, if any."
(save-excursion
(geiser-syntax--pop-to-top)
(and (looking-at geiser-racket--module-re)
@@ -141,6 +145,7 @@ using start-geiser, a procedure in the geiser/server
module."
(geiser-syntax--form-from-string lang))))))
(defun geiser-racket--language ()
+ "Detect a #lang stanza, if any."
(or (cdr (geiser-racket--explicit-module))
(save-excursion
(goto-char (point-min))
@@ -149,15 +154,18 @@ using start-geiser, a procedure in the geiser/server
module."
"#f"))
(defun geiser-racket--implicit-module (&optional pos)
+ "Detect the module of a #lang stanza, if any, returning position if POS is
t."
(save-excursion
(goto-char (point-min))
(when (re-search-forward "^#lang " nil t)
(if pos (progn (end-of-line) (list (point))) (buffer-file-name)))))
(defun geiser-racket--eval-bounds ()
+ "Look for a module and return its end position."
(geiser-racket--implicit-module t))
(defun geiser-racket--find-module ()
+ "Try to find the module declared in a visited racket file."
(let ((bf (geiser-racket--implicit-module))
(sub (car (geiser-racket--explicit-module))))
(cond ((and (not bf) (not sub)) nil)
@@ -166,13 +174,16 @@ using start-geiser, a procedure in the geiser/server
module."
(t bf))))
(defun geiser-racket--enter-command (module)
+ "Format an ,enter command for entering the given MODULE."
(when (or (stringp module) (listp module))
(cond ((zerop (length module)) ",enter #f")
((or (listp module)
- (file-name-absolute-p module)) (format ",enter %S" module))
+ (file-name-absolute-p module))
+ (format ",enter %S" module))
(t (format ",enter %s" module)))))
(defun geiser-racket--geiser-procedure (proc &rest args)
+ "Format an eval procedure command for PROC with ARGS."
(cl-case proc
((eval compile)
(format ",geiser-eval %s %s %s"
@@ -185,6 +196,7 @@ using start-geiser, a procedure in the geiser/server
module."
(t (format ",apply geiser:%s (%s)" proc (mapconcat 'identity args " ")))))
(defun geiser-racket--get-module (&optional module)
+ "Return the current module symbol, using MODULE as a hint."
(cond ((null module) (or (geiser-racket--find-module) :f))
((symbolp module) module)
((and (stringp module) (file-name-absolute-p module)) module)
@@ -192,14 +204,17 @@ using start-geiser, a procedure in the geiser/server
module."
(t nil)))
(defun geiser-racket--symbol-begin (module)
+ "Position of the beginning of MODULE's declaration."
(save-excursion (skip-syntax-backward "^'-()>") (point)))
(defun geiser-racket--import-command (module)
+ "Format a require statement for MODULE."
(and (stringp module)
(not (zerop (length module)))
(format "(require %s)" module)))
(defun geiser-racket--exit-command ()
+ "Send a REPL exit command, return current process."
(comint-send-eof)
(get-buffer-process (current-buffer)))
@@ -219,9 +234,11 @@ using start-geiser, a procedure in the geiser/server
module."
;;; External help
(defsubst geiser-racket--get-help (symbol module)
+ "Ask the Racket REPL for help on SYMBOL for the given MODULE."
(geiser-eval--send/wait `(:scm ,(format ",help %s %s" symbol module))))
(defun geiser-racket--external-help (id module)
+ "Display help for identifier ID in module MODULE."
(message "Looking up manual for '%s'..." id)
(let* ((ret (geiser-racket--get-help id (format "%S" module)))
(out (geiser-eval--retort-output ret))
@@ -245,11 +262,13 @@ using start-geiser, a procedure in the geiser/server
module."
(format "^ *%s/geiser" (regexp-quote geiser-racket-scheme-dir)))
(defun geiser-racket--purge-trace ()
+ "Clean up displayed stack trace."
(save-excursion
(while (re-search-forward geiser-racket--geiser-file-rx nil t)
(kill-whole-line))))
(defun geiser-racket--display-error (module key msg)
+ "Display an error returned from an evaluation with the given MODULE, KEY and
MSG."
(when key
(insert "Error: ")
(geiser-doc--insert-button key nil 'racket)
@@ -266,9 +285,9 @@ using start-geiser, a procedure in the geiser/server
module."
(if (and msg (string-match "\\(.+\\)$" msg)) (match-string 1 msg) key))
-;;; Trying to ascertain whether a buffer is racket code:
(defun geiser-racket--guess ()
+ "Try to ascertain whether a buffer is racket code."
(or (save-excursion
(goto-char (point-min))
(re-search-forward "#lang " nil t))
@@ -282,9 +301,11 @@ using start-geiser, a procedure in the geiser/server
module."
("\\[\\(else\\)\\>" . 1)
("(\\(define/match\\)\\W+[[(]?\\(\\w+\\)+\\b"
(1 font-lock-keyword-face)
- (2 font-lock-function-name-face))))
+ (2 font-lock-function-name-face)))
+ "Additional font lock for Racket.")
(defun geiser-racket--keywords ()
+ "Return a list of non-scheme Racket keywords."
(append geiser-racket-font-lock-forms
(geiser-syntax--simple-keywords geiser-racket-extra-keywords)))
@@ -376,11 +397,13 @@ using start-geiser, a procedure in the geiser/server
module."
(defvar geiser-racket-minimum-version "5.3")
(defun geiser-racket--version (binary)
+ "Use BINARY path to retrieve Racket's version."
(car (process-lines binary "-e" "(display (version))")))
(defvar geiser-racket--image-cache-dir nil)
(defun geiser-racket--startup (remote)
+ "Start the Racket REPL, which is perhaps REMOTE."
(set (make-local-variable 'compilation-error-regexp-alist)
`(("^ *\\([^:(\t\n]+\\):\\([0-9]+\\):\\([0-9]+\\):" 1 2 3)))
(compilation-setup t)
@@ -391,6 +414,7 @@ using start-geiser, a procedure in the geiser/server
module."
(geiser-eval--send/result '(:eval (image-cache) geiser/user)))))
(defun geiser-racket--image-cache-dir ()
+ "Return the directory to use to cache images."
(or geiser-image-cache-dir geiser-racket--image-cache-dir))
@@ -399,6 +423,7 @@ using start-geiser, a procedure in the geiser/server
module."
(defvar geiser-racket--submodule-history ())
(defun geiser-racket--submodule-form (name)
+ "Format a string denoting a submodule with the given NAME."
(format "module[+*]? %s"
(cond ((eq 1 name) "")
((numberp name)
@@ -410,14 +435,14 @@ using start-geiser, a procedure in the geiser/server
module."
(defun geiser-racket-toggle-submodules (&optional name)
"Toggle visibility of submodule forms.
-Use a prefix to be asked for a submodule name."
+Use a prefix to be asked for a submodule NAME."
(interactive "p")
(geiser-edit--toggle-visibility (geiser-racket--submodule-form name)))
(defun geiser-racket-show-submodules (&optional name)
- "Unconditionally shows all submodule forms.
+ "Unconditionally show all submodule forms.
-Use a prefix to be asked for a submodule name."
+Use a prefix to be asked for a submodule NAME."
(interactive "p")
(cond ((eq 1 name) (geiser-edit--show-all))
(t (geiser-edit--show (geiser-racket--submodule-form name)))))
@@ -425,7 +450,7 @@ Use a prefix to be asked for a submodule name."
(defun geiser-racket-hide-submodules (&optional name)
"Unconditionally hides all visible submodules.
-Use a prefix to be asked for a submodule name."
+Use a prefix to be asked for a submodule NAME."
(interactive "p")
(geiser-edit--hide (geiser-racket--submodule-form name)))
@@ -458,20 +483,7 @@ Use a prefix to be asked for a submodule name."
(geiser-impl--add-to-alist 'regexp "\\.ss\\'" 'racket t)
(geiser-impl--add-to-alist 'regexp "\\.rkt[dl]?\\'" 'racket t)
+(add-to-list 'auto-mode-alist '("\\.rkt\\'" . scheme-mode))
-;;;###autoload
-(defun run-gracket ()
- "Start the Racket REPL using gracket instead of plain racket."
- (interactive)
- (let ((geiser-racket-use-gracket-p t))
- (run-racket)))
-
-;;;###autoload
-(autoload 'run-racket "geiser-racket" "Start a Geiser Racket REPL." t)
-
-;;;###autoload
-(autoload 'switch-to-racket "geiser-racket"
- "Start a Geiser Racket REPL, or switch to a running one." t)
-
-
(provide 'geiser-racket)
+;;; geiser-racket.el ends here
diff --git a/readme.org b/readme.org
new file mode 100644
index 0000000..440e0d0
--- /dev/null
+++ b/readme.org
@@ -0,0 +1,9 @@
+* Racket and Geiser talk to each other
+
+This package provides support for using [[http://racket-lang.org][Racket]] in
Emacs with [[http://geiser.nongnu.org][Geiser]].
+
+The easiest way to install ~geiser-racket~ is from MELPA, using ~M-x
+package-install RET geiser-racket~.
+
+Files with the `.rkt` and `.ssl` extensions should be automatically
+recognized as racket-flavoured geiser buffers.
- [nongnu] elpa/geiser-racket 65447c4 138/191: racket: handling correctly submodules in load handler during , enter, (continued)
- [nongnu] elpa/geiser-racket 65447c4 138/191: racket: handling correctly submodules in load handler during , enter, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket e1474f1 141/191: Nits, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket eafee8d 142/191: racket: new , geiser-load command in REPL, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket e311818 154/191: Racket: duplicate version check removed, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket c6b4c09 155/191: Racket: fix for evaluations inside typed/racket modules, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 7f89d8f 170/191: Use (car (process-lines ...)) instead of (shell-command ...), Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket a0532bc 169/191: Quoting binary on version checks (issue #117), Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 5a7b12c 179/191: Fix typos, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 0cb58c8 183/191: racket server to access via geiser-connect, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 18cb3b3 185/191: README.md, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-racket 1996cca 187/191: Ready for MELPA,
Philip Kaludercic <=