lang/scheme: fix support for scheme implementations
Adds the following flags: +chez +chibi +chicken +gambit +gauche +guile +kawa +mit +racket Fixes #4863
This commit is contained in:
parent
5ee8080ca7
commit
32cf114dc7
6 changed files with 80 additions and 26 deletions
|
@ -144,7 +144,7 @@ Modules that bring support for a language or group of languages to Emacs.
|
|||
+ [[file:../modules/lang/ruby/README.org][ruby]] =+lsp +rvm +rbenv +rails +chruby=
|
||||
+ [[file:../modules/lang/rust/README.org][rust]] =+lsp= - TODO
|
||||
+ scala =+lsp= - TODO
|
||||
+ [[file:../modules/lang/scheme/README.org][scheme]] - TODO
|
||||
+ [[file:../modules/lang/scheme/README.org][scheme]] =+chez +chibi +chicken +gambit +gauche +guile +kawa +mit +racket= - TODO
|
||||
+ [[file:../modules/lang/sh/README.org][sh]] =+fish +lsp +powershell= - TODO
|
||||
+ [[file:../modules/lang/sml/README.org][sml]] - TODO
|
||||
+ [[file:../modules/lang/solidity/README.org][solidity]] - TODO
|
||||
|
|
|
@ -160,7 +160,7 @@
|
|||
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
|
||||
;;rust ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
|
||||
;;scala ; java, but good
|
||||
;;scheme ; a fully conniving family of lisps
|
||||
;;(scheme +guile) ; a fully conniving family of lisps
|
||||
sh ; she sells {ba,z,fi}sh shells on the C xor
|
||||
;;sml
|
||||
;;solidity ; do you need a blockchain? No.
|
||||
|
|
|
@ -17,10 +17,29 @@ This module provides an environment for hacking and having fun in scheme. It is
|
|||
powered by [[https://www.nongnu.org/geiser/geiser_1.html#introduction][geiser]].
|
||||
|
||||
** Module Flags
|
||||
This module provides no flags.
|
||||
+ =+chez=
|
||||
+ =+chibi=
|
||||
+ =+chicken=
|
||||
+ =+gambit=
|
||||
+ =+gauche=
|
||||
+ =+guile=
|
||||
+ =+kawa=
|
||||
+ =+mit=
|
||||
+ =+racket=
|
||||
|
||||
** Plugins
|
||||
+ [[https://gitlab.com/jaor/geiser][geiser]]
|
||||
+ [[https://github.com/nbfalcon/macrostep-geiser][macrostep-geiser]]
|
||||
+ [[https://gitlab.com/emacs-geiser/chez][geiser-chez]] (if =+chez=)
|
||||
+ [[https://gitlab.com/emacs-geiser/chez][geiser-chibi]] (if =+chibi=)
|
||||
+ [[https://gitlab.com/emacs-geiser/chicken][geiser-chicken]] (if =+chicken=)
|
||||
+ [[https://gitlab.com/emacs-geiser/gambit][geiser-gambit]] (if =+gambit=)
|
||||
+ [[https://gitlab.com/emacs-geiser/gauche][geiser-gauche]] (if =+gauche=)
|
||||
+ [[https://gitlab.com/emacs-geiser/guile][geiser-guile]] (if =+guile=)
|
||||
+ [[https://github.com/flatwhatson/flycheck-guile][flycheck-guile]] (if =+guile= and =:checkers syntax=)
|
||||
+ [[https://gitlab.com/emacs-geiser/kawa][geiser-kawa]] (if =+kawa=)
|
||||
+ [[https://gitlab.com/emacs-geiser/mit][geiser-mit]] (if =+mit=)
|
||||
+ [[https://gitlab.com/emacs-geiser/racket][geiser-racket]] (if =+racket=)
|
||||
|
||||
* Prerequisites
|
||||
This module requires you to have at least one of the supported schemes, namely:
|
||||
|
|
|
@ -1,5 +1,20 @@
|
|||
;;; lang/scheme/autoload.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; HACK geiser-* plugins will try to add to `geiser-active-implementations', so
|
||||
;; it must be defined before their autoloads are evaluated. Fortunately,
|
||||
;; Doom modules' autoloads run earlier than package autoloads.
|
||||
;;;###autoload
|
||||
(defvar geiser-active-implementations ())
|
||||
|
||||
;; HACK `geiser-impl--add-to-alist' isn't autoloaded or inlined, so you get
|
||||
;; void-function errors when it is called in the autoloads files of other
|
||||
;; geiser-* packages.
|
||||
;;;###autoload
|
||||
(defun geiser-impl--add-to-alist (kind what impl &optional append)
|
||||
(add-to-list 'geiser-implementations-alist
|
||||
(list (list kind what) impl) append))
|
||||
|
||||
|
||||
(defvar calculate-lisp-indent-last-sexp)
|
||||
|
||||
;; Adapted from https://github.com/alezost/emacs-config/blob/master/utils/al-scheme.el#L76-L123
|
||||
|
|
|
@ -8,13 +8,9 @@
|
|||
(use-package! geiser
|
||||
:defer t
|
||||
:init
|
||||
(setq geiser-active-implementations '(guile chicken mit chibi chez)
|
||||
geiser-autodoc-identifier-format "%s → %s"
|
||||
geiser-repl-current-project-function 'doom-project-root)
|
||||
(if (featurep! :lang racket)
|
||||
(setq auto-mode-alist
|
||||
(remove '("\\.rkt\\'" . scheme-mode) auto-mode-alist))
|
||||
(push 'racket geiser-active-implementations))
|
||||
(setq geiser-autodoc-identifier-format "%s → %s"
|
||||
geiser-repl-current-project-function #'doom-project-root)
|
||||
|
||||
(after! scheme ; built-in
|
||||
(set-repl-handler! 'scheme-mode #'+scheme/open-repl)
|
||||
(set-eval-handler! 'scheme-mode #'geiser-eval-region)
|
||||
|
@ -23,11 +19,10 @@
|
|||
:documentation #'geiser-doc-symbol-at-point))
|
||||
:config
|
||||
(set-popup-rules!
|
||||
'(("^\\*geiser messages\\*$" :slot 1 :vslot -1)
|
||||
("^\\*Geiser dbg\\*$" :slot 1 :vslot -1)
|
||||
("^\\*Geiser xref\\*$" :slot 1 :vslot -1)
|
||||
'(("^\\*[gG]eiser \\(dbg\\|xref\\|messages\\)\\*$" :slot 1 :vslot -1)
|
||||
("^\\*Geiser documentation\\*$" :slot 2 :vslot 2 :select t :size 0.35)
|
||||
("^\\* [A-Za-z0-9_-]+ REPL \\*" :size 0.3 :quit nil :ttl nil)))
|
||||
|
||||
(map! :localleader
|
||||
:map scheme-mode-map
|
||||
"'" #'geiser-mode-switch-to-repl
|
||||
|
@ -48,10 +43,6 @@
|
|||
"<" #'geiser-xref-callers
|
||||
">" #'geiser-xref-callees
|
||||
"i" #'geiser-doc-look-up-manual)
|
||||
(:prefix ("m" . "macro")
|
||||
"r" #'geiser-expand-region
|
||||
"d" #'geiser-expand-definition
|
||||
"e" #'geiser-expand-last-sexp)
|
||||
(:prefix ("r" . "repl")
|
||||
"b" #'geiser-switch-to-repl
|
||||
"q" #'geiser-repl-exit
|
||||
|
@ -60,6 +51,19 @@
|
|||
"R" #'geiser-reload
|
||||
"c" #'geiser-repl-clear-buffer)))
|
||||
|
||||
|
||||
(use-package! macrostep-geiser
|
||||
:hook (geiser-mode . macrostep-geiser-setup)
|
||||
:hook (geiser-repl-mode . macrostep-geiser-setup)
|
||||
:init
|
||||
(map! :after geiser
|
||||
:localleader
|
||||
:map scheme-mode-map
|
||||
:desc "Expand macro" "m" #'macrostep-geiser
|
||||
:desc "Expand all macros recursively" "M" #'macrostep-geiser-all))
|
||||
|
||||
|
||||
(use-package! flycheck-guile
|
||||
:when (featurep! +guile)
|
||||
:when (featurep! :checkers syntax)
|
||||
:after geiser)
|
||||
|
|
|
@ -1,11 +1,27 @@
|
|||
;; -*- no-byte-compile: t; -*-
|
||||
;;; lang/scheme/packages.el
|
||||
|
||||
(package! geiser
|
||||
:recipe (:host gitlab :repo "emacs-geiser/geiser")
|
||||
:pin "aa26163aa81b5af3bc5bbf23bec8b5776de3a8bc")
|
||||
|
||||
(when (featurep! :checkers syntax)
|
||||
(when (package! geiser :pin "aa26163aa81b5af3bc5bbf23bec8b5776de3a8bc")
|
||||
(package! macrostep-geiser :pin "8600fca05fd12a2e0ffe63238ddbfcb37c285dac")
|
||||
(when (featurep! +chez)
|
||||
(package! geiser-chez :pin "4cb7f2667ea1c53da53f0144910fbbd67bccbf4d"))
|
||||
(when (featurep! +chibi)
|
||||
(package! geiser-chibi :pin "54e7f384618c73d8fb675b5289d443a8ee3e4dc8"))
|
||||
(when (featurep! +chicken)
|
||||
(package! geiser-chicken :pin "47be5b43b35d3bf35b0f668b4c08715ea41fb97d"))
|
||||
(when (featurep! +gambit)
|
||||
(package! geiser-gambit :pin "0ee4156640988497779345452c3aa0417356e606"))
|
||||
(when (featurep! +gauche)
|
||||
(package! geiser-gauche :pin "66e51430bded0f0e2037f474818a7bbaafb2906c"))
|
||||
(when (featurep! +guile)
|
||||
(package! geiser-guile :pin "93ef7101fdfcc7eac6f465b4b9788c384a323c14")
|
||||
(when (featurep! :checkers syntax)
|
||||
(package! flycheck-guile
|
||||
:recipe (:host github :repo "flatwhatson/flycheck-guile")
|
||||
:pin "e46d6e5453dd7471309fae6549445c48e6d8f340"))
|
||||
:pin "e46d6e5453dd7471309fae6549445c48e6d8f340")))
|
||||
(when (featurep! +kawa)
|
||||
(package! geiser-kawa :pin "b96c008e9c3b8dc210d8b536ee7b76b8690c8af6"))
|
||||
(when (featurep! +mit)
|
||||
(package! geiser-mit :pin "d17394f577aaa2854a74a1a0039cb8f73378b400"))
|
||||
(when (featurep! +racket)
|
||||
(package! geiser-racket :pin "a87fd449cc6c7b0b17a0b08268e78d3f038f3351")))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue