Add useful defaults and bindings to scheme mode (#2947)
* Add useful defaults and bindings to scheme mode Scheme mode was pretty bare for a long time now and lacked many of geiser's useful features like `geiser-smart-tab` and starting the geiser repl on entering a file. This turns them on by default for the productive schemer. Besides that the following key bindings were remapped + `SPC m e e` -> `geiser-eval-last-sexp` + `SPC m e d` -> `geiser-eval-definition` + `SPC m e D` -> `geiser-eval-definition-and-go` This brings the geiser keymaps in line with other lisp modes in doom. Another change involves adding macro expand commands under `SPC m m` so schemers can see what evil lurks beneath their commands. Geiser autodoc commands have also been added under `SPC m h` for schemers to read the docs, though they can still use `SPC c k` to do the same thing. * Remove package cookie Its only necessary when not using (use-package!) * Use setq instead of custom * Add `defer t` back * Add defer flag for scheme package If a user went directly to a scheme file after load they would get an error concerning rainbow-delimiters not being loaded. Deferring scheme mode stops that error from happening * Fix typo Co-authored-by: Elais Player <elais@samus.hsd1.nm.comcast.net>
This commit is contained in:
parent
f78cc7ed38
commit
5205fde619
1 changed files with 24 additions and 11 deletions
|
@ -1,13 +1,16 @@
|
||||||
;;; lang/scheme/config.el -*- lexical-binding: t; -*-
|
;;; lang/scheme/config.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
;;;###package scheme
|
(use-package! scheme
|
||||||
(add-hook 'scheme-mode-hook #'rainbow-delimiters-mode)
|
:defer t
|
||||||
|
:hook ((scheme-mode . rainbow-delimiters-mode)
|
||||||
|
(scheme-mode . geiser-mode)))
|
||||||
|
|
||||||
(use-package! geiser
|
(use-package! geiser
|
||||||
:defer t
|
:defer t
|
||||||
:init
|
:init
|
||||||
(setq geiser-active-implementations '(guile chicken mit chibi chez))
|
(setq geiser-active-implementations '(guile chicken mit chibi chez))
|
||||||
|
(setq geiser-mode-start-repl-p t)
|
||||||
|
(setq geiser-smart-tab-p t)
|
||||||
(unless (featurep! :lang racket)
|
(unless (featurep! :lang racket)
|
||||||
(push 'racket geiser-active-implementations))
|
(push 'racket geiser-active-implementations))
|
||||||
(after! scheme ; built-in
|
(after! scheme ; built-in
|
||||||
|
@ -23,23 +26,33 @@
|
||||||
(map! :localleader
|
(map! :localleader
|
||||||
:map scheme-mode-map
|
:map scheme-mode-map
|
||||||
"'" #'geiser-mode-switch-to-repl
|
"'" #'geiser-mode-switch-to-repl
|
||||||
|
"\"" #'geiser-connect
|
||||||
|
"[" #'geiser-squarify
|
||||||
|
"\\" #'geiser-insert-lambda
|
||||||
"s" #'geiser-set-scheme
|
"s" #'geiser-set-scheme
|
||||||
|
|
||||||
(:prefix ("e" . "eval")
|
(:prefix ("e" . "eval")
|
||||||
"b" #'geiser-eval-buffer
|
"b" #'geiser-eval-buffer
|
||||||
"B" #'geiser-eval-buffer-and-go
|
"B" #'geiser-eval-buffer-and-go
|
||||||
"e" #'geiser-eval-definition
|
"e" #'geiser-eval-last-sexp
|
||||||
"E" #'geiser-eval-definition-and-go
|
"d" #'geiser-eval-definition
|
||||||
|
"D" #'geiser-eval-definition-and-go
|
||||||
"r" #'geiser-eval-region
|
"r" #'geiser-eval-region
|
||||||
"R" #'geiser-eval-region-and-go)
|
"R" #'geiser-eval-region-and-go)
|
||||||
|
|
||||||
(:prefix ("h" . "help")
|
(:prefix ("h" . "help")
|
||||||
"d" 'geiser-autodoc)
|
"d" #'geiser-autodoc
|
||||||
;; TODO add more help keybindings
|
"<" #'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")
|
(:prefix ("r" . "repl")
|
||||||
"b" #'geiser-switch-to-repl
|
"b" #'geiser-switch-to-repl
|
||||||
"q" #'geiser-repl-exit
|
"q" #'geiser-repl-exit
|
||||||
|
"l" #'geiser-load-current-buffer
|
||||||
"r" #'geiser-restart-repl
|
"r" #'geiser-restart-repl
|
||||||
"R" #'geiser-reload
|
"R" #'geiser-reload
|
||||||
"c" #'geiser-repl-clear-buffer)))
|
"c" #'geiser-repl-clear-buffer)))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue