2019-07-20 23:59:29 -05:00
|
|
|
;;; lang/scheme/config.el -*- lexical-binding: t; -*-
|
|
|
|
|
2019-09-13 13:56:23 -04:00
|
|
|
;;;###package scheme
|
2019-07-20 23:59:29 -05:00
|
|
|
(add-hook 'scheme-mode-hook #'rainbow-delimiters-mode)
|
|
|
|
|
2019-09-13 13:56:23 -04:00
|
|
|
|
|
|
|
(use-package! geiser
|
|
|
|
:defer t
|
2019-07-20 23:59:29 -05:00
|
|
|
:init
|
2019-07-23 11:04:26 -05:00
|
|
|
(setq geiser-active-implementations '(guile chicken mit chibi chez))
|
2019-09-13 13:56:23 -04:00
|
|
|
(unless (featurep! :lang racket)
|
|
|
|
(push 'racket geiser-active-implementations))
|
|
|
|
(after! scheme ; built-in
|
2019-10-07 14:08:58 -04:00
|
|
|
(set-repl-handler! 'scheme-mode '+scheme/open-repl)
|
2019-09-13 13:56:23 -04:00
|
|
|
(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))
|
2019-07-20 23:59:29 -05:00
|
|
|
:config
|
2019-12-08 21:17:01 +07:00
|
|
|
(set-popup-rule!
|
|
|
|
'(("\\*[Gg]eiser \\(?:[Mm]essages\\|DBG\\|Xref\\)\\*" :quit nil)
|
|
|
|
( "\\* [A-Za-z0-9_-]+ REPL \\*" :quit nil)))
|
2019-09-13 13:56:23 -04:00
|
|
|
(map! :localleader
|
|
|
|
:map scheme-mode-map
|
|
|
|
"'" #'geiser-mode-switch-to-repl
|
|
|
|
"s" #'geiser-set-scheme
|
2019-07-20 23:59:29 -05:00
|
|
|
|
2019-09-13 13:56:23 -04:00
|
|
|
(: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)
|
2019-07-20 23:59:29 -05:00
|
|
|
|
2019-09-13 13:56:23 -04:00
|
|
|
(:prefix ("h" . "help")
|
|
|
|
"d" 'geiser-autodoc)
|
|
|
|
;; TODO add more help keybindings
|
2019-07-20 23:59:29 -05:00
|
|
|
|
2019-09-13 13:56:23 -04:00
|
|
|
(:prefix ("r" . "repl")
|
|
|
|
"b" #'geiser-switch-to-repl
|
|
|
|
"q" #'geiser-repl-exit
|
|
|
|
"r" #'geiser-restart-repl
|
|
|
|
"R" #'geiser-reload
|
2019-12-08 21:17:01 +07:00
|
|
|
"c" #'geiser-repl-clear-buffer)))
|