Add scheme module
Adds scheme module with geiser.
This commit is contained in:
parent
8b27d19e0b
commit
db8d541fbe
3 changed files with 58 additions and 0 deletions
8
modules/lang/scheme/autoload.el
Normal file
8
modules/lang/scheme/autoload.el
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
;;; lang/scheme/autoload.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun +scheme/repl (&optional arg)
|
||||||
|
"Open the Scheme REPL."
|
||||||
|
(interactive "P")
|
||||||
|
(switch-to-geiser arg)
|
||||||
|
(current-buffer))
|
46
modules/lang/scheme/config.el
Normal file
46
modules/lang/scheme/config.el
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
;;; lang/scheme/config.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
(add-hook 'scheme-mode-hook #'rainbow-delimiters-mode)
|
||||||
|
|
||||||
|
(defun +scheme/impls ()
|
||||||
|
`( ,@(when (featurep! +racket) '(racket))
|
||||||
|
,@(when (featurep! +guile) '(guile))
|
||||||
|
,@(when (featurep! +chicken) '(chicken))
|
||||||
|
,@(when (featurep! +mit) '(mit))
|
||||||
|
,@(when (featurep! +chibi) '(chibi))
|
||||||
|
,@(when (featurep! +chez) '(chez)) ()))
|
||||||
|
|
||||||
|
(def-package! geiser
|
||||||
|
:mode ("\\.scm\\'" . scheme-mode)
|
||||||
|
:mode ("\\.ss\\'" . scheme-mode)
|
||||||
|
:commands (geiser)
|
||||||
|
:init
|
||||||
|
(setq geiser-active-implementations #'+scheme/impls)
|
||||||
|
(set-repl-handler! 'scheme-mode '+scheme/repl)
|
||||||
|
(set-eval-handler! 'scheme-mode #'geiser-eval-region)
|
||||||
|
(set-lookup-handlers! 'scheme-mode
|
||||||
|
:definition #'geiser-edit-symbol-at-point
|
||||||
|
:documentation #'geiser-doc-symbol-at-point)
|
||||||
|
:config
|
||||||
|
(map! (:localleader
|
||||||
|
(:map scheme-mode-map
|
||||||
|
"'" #'geiser-mode-switch-to-repl
|
||||||
|
"s" #'geiser-set-scheme
|
||||||
|
|
||||||
|
(:prefix ("e" . "eval")
|
||||||
|
"b" #'geiser-eval-buffer
|
||||||
|
"B" #'geiser-eval-buffer-and-go
|
||||||
|
"e" #'geiser-eval-definition
|
||||||
|
"E" #'geiser-eval-definition-and-go
|
||||||
|
"r" #'geiser-eval-region
|
||||||
|
"R" #'geiser-eval-region-and-go)
|
||||||
|
|
||||||
|
(:prefix ("h" . "help")
|
||||||
|
"d" 'geiser-autodoc)
|
||||||
|
|
||||||
|
(:prefix ("r" . "repl")
|
||||||
|
"b" #'geiser-switch-to-repl
|
||||||
|
"q" #'geiser-repl-exit
|
||||||
|
"r" #'geiser-restart-repl
|
||||||
|
"R" #'geiser-reload
|
||||||
|
"c" #'geiser-repl-clear-buffer)))))
|
4
modules/lang/scheme/packages.el
Normal file
4
modules/lang/scheme/packages.el
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
;; -*- no-byte-compile: t; -*-
|
||||||
|
;;; lang/scheme/packages.el
|
||||||
|
|
||||||
|
(package! geiser)
|
Loading…
Add table
Add a link
Reference in a new issue