2019-07-20 23:59:29 -05:00
|
|
|
;;; lang/scheme/config.el -*- lexical-binding: t; -*-
|
|
|
|
|
2020-04-23 22:00:27 -06:00
|
|
|
(use-package! scheme
|
2020-04-24 00:34:28 -04:00
|
|
|
:hook (scheme-mode . rainbow-delimiters-mode)
|
|
|
|
:config (advice-add #'scheme-indent-function :override #'+scheme-scheme-indent-function-a))
|
2020-04-24 00:33:54 -04:00
|
|
|
|
2021-04-19 21:08:02 -03:00
|
|
|
|
2019-09-13 13:56:23 -04:00
|
|
|
(use-package! geiser
|
2020-06-19 14:37:57 +10:00
|
|
|
:defer t
|
2019-07-20 23:59:29 -05:00
|
|
|
:init
|
2021-04-13 22:41:31 -04:00
|
|
|
(setq geiser-autodoc-identifier-format "%s → %s"
|
|
|
|
geiser-repl-current-project-function #'doom-project-root)
|
2021-04-19 21:08:02 -03:00
|
|
|
|
2021-04-13 22:41:31 -04:00
|
|
|
(after! scheme ; built-in
|
2020-04-24 00:33:54 -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)
|
2021-02-23 08:48:40 +10:00
|
|
|
(set-lookup-handlers! '(scheme-mode geiser-repl-mode)
|
2019-09-13 13:56:23 -04:00
|
|
|
: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:19:30 +07:00
|
|
|
(set-popup-rules!
|
2021-04-13 22:41:31 -04:00
|
|
|
'(("^\\*[gG]eiser \\(dbg\\|xref\\|messages\\)\\*$" :slot 1 :vslot -1)
|
2020-06-10 00:17:03 +10:00
|
|
|
("^\\*Geiser documentation\\*$" :slot 2 :vslot 2 :select t :size 0.35)
|
2020-06-19 14:40:34 +10:00
|
|
|
("^\\* [A-Za-z0-9_-]+ REPL \\*" :size 0.3 :quit nil :ttl nil)))
|
2021-04-19 21:08:02 -03:00
|
|
|
|
|
|
|
(map! :localleader
|
|
|
|
(:map (scheme-mode-map geiser-repl-mode-map)
|
|
|
|
:desc "Toggle REPL" "'" #'switch-to-geiser
|
|
|
|
:desc "Connect to external Scheme" "\"" #'geiser-connect
|
|
|
|
:desc "Toggle type of brackets" "[" #'geiser-squarify
|
|
|
|
:desc "Insert lambda" "\\" #'geiser-insert-lambda
|
|
|
|
:desc "Set Scheme implementation" "s" #'geiser-set-scheme
|
|
|
|
:desc "Reload Geiser buffers+REPLs" "R" #'geiser-reload
|
|
|
|
(:prefix ("h" . "help")
|
|
|
|
:desc "Show callers of <point>" "<" #'geiser-xref-callers
|
|
|
|
:desc "Show callees of <point>" ">" #'geiser-xref-callees
|
|
|
|
:desc "Toggle autodoc mode" "a" #'geiser-autodoc-mode
|
|
|
|
:desc "Show autodoc of <point>" "s" #'geiser-autodoc-show
|
|
|
|
:desc "Search manual for <point>" "m" #'geiser-doc-look-up-manual
|
|
|
|
:desc "Show docstring of <point>" "." #'geiser-doc-symbol-at-point)
|
|
|
|
(:prefix ("r" . "repl")
|
|
|
|
:desc "Load file into REPL" "f" #'geiser-load-file
|
|
|
|
:desc "Restart REPL" "r" #'geiser-restart-repl))
|
|
|
|
(:map scheme-mode-map
|
|
|
|
(:prefix ("e" . "eval")
|
|
|
|
:desc "Eval buffer" "b" #'geiser-eval-buffer
|
|
|
|
:desc "Eval buffer and go to REPL" "B" #'geiser-eval-buffer-and-go
|
|
|
|
:desc "Eval last sexp" "e" #'geiser-eval-last-sexp
|
|
|
|
:desc "Eval definition" "d" #'geiser-eval-definition
|
|
|
|
:desc "Eval defn. and go to REPL" "D" #'geiser-eval-definition-and-go
|
|
|
|
:desc "Eval region" "r" #'geiser-eval-region
|
|
|
|
:desc "Eval region and go to REPL" "R" #'geiser-eval-region-and-go)
|
|
|
|
(:prefix ("r" . "repl")
|
|
|
|
:desc "Load current buffer in REPL" "b" #'geiser-load-current-buffer))
|
|
|
|
(:map geiser-repl-mode-map
|
|
|
|
:desc "Clear REPL buffer" "c" #'geiser-repl-clear-buffer
|
|
|
|
:desc "Quit REPL" "q" #'geiser-repl-exit)))
|
|
|
|
|
2021-04-13 22:41:31 -04:00
|
|
|
|
|
|
|
(use-package! macrostep-geiser
|
|
|
|
:hook (geiser-mode . macrostep-geiser-setup)
|
|
|
|
:hook (geiser-repl-mode . macrostep-geiser-setup)
|
|
|
|
:init
|
|
|
|
(map! :after geiser
|
|
|
|
:localleader
|
2021-04-18 22:01:17 -03:00
|
|
|
:map (scheme-mode-map geiser-repl-mode-map)
|
2021-04-19 21:08:02 -03:00
|
|
|
:desc "Expand macro by one step" "m" #'macrostep-expand
|
|
|
|
:desc "Recursively expand macro" "M" #'macrostep-geiser-expand-all))
|
|
|
|
|
2021-04-13 22:41:31 -04:00
|
|
|
|
2020-06-11 13:16:33 +10:00
|
|
|
(use-package! flycheck-guile
|
2021-04-13 22:41:31 -04:00
|
|
|
:when (featurep! +guile)
|
2020-06-11 13:16:33 +10:00
|
|
|
:when (featurep! :checkers syntax)
|
|
|
|
:after geiser)
|