           "D" #'geiser-eval-definition-and-go
           "r" #'geiser-eval-region
           "R" #'geiser-eval-region-and-go)
-
         (:prefix ("h" . "help")
           "d" #'geiser-autodoc
           "<" #'geiser-xref-callers

;;; lang/scheme/config.el -*- lexical-binding: t; -*-

(use-package! scheme
  :defer t
  :hook ((scheme-mode . rainbow-delimiters-mode)
         (scheme-mode . geiser-mode)))

(use-package! geiser
  :defer t
  :init
  (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)
    (push 'racket geiser-active-implementations))
  (after! scheme                        ; built-in
    (set-repl-handler! 'scheme-mode '+scheme/open-repl)
    (set-eval-handler! 'scheme-mode #'geiser-eval-region)
    (set-lookup-handlers! 'scheme-mode
      :definition #'geiser-edit-symbol-at-point

        "["  #'geiser-squarify
        "\\" #'geiser-insert-lambda
        "s"  #'geiser-set-scheme
        (:prefix ("e" . "eval")
          "b" #'geiser-eval-buffer
          "B" #'geiser-eval-buffer-and-go
