Moving to Doom Emacs!

This commit is contained in:
Derek Taylor
2019-12-16 20:21:19 -06:00
parent d9f2f456f1
commit d4b4c33550
683 changed files with 51877 additions and 100 deletions

View File

@@ -0,0 +1,41 @@
#+TITLE: lang/scheme
#+DATE: July 23, 2019
#+SINCE: v2.0.9
#+STARTUP: inlineimages
* Table of Contents :TOC_3:noexport:
- [[#description][Description]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#commands][Commands]]
- [[#geiser][Geiser]]
* Description
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.
** Plugins
+ [[https://gitlab.com/jaor/geiser][geiser]]
* Prerequisites
This module requires you to have at least one of the supported schemes, namely:
- [[https://www.gnu.org/software/guile][Guile]] 2.2.0 or better
- [[https://call-cc.org][Chicken]] 4.8.0 or better
- [[https://www.gnu.org/software/mit-scheme][MIT/GNU Scheme]] 9.1.1 or better
- [[https://synthcode.com/scheme/chibi][Chibi Scheme]] 0.7.3 or better
- [[https://www.scheme.com][Chez Scheme]] 9.4 or better
Their executables must be present in your path for geiser to work properly.
* Features
** Commands
*** Geiser
| command | key / ex command | description |
|---------------------+------------------+----------------------|
| ~+scheme/open-repl~ | =:repl= | Open the Scheme Repl |
| | | |

View File

@@ -0,0 +1,8 @@
;;; lang/scheme/autoload.el -*- lexical-binding: t; -*-
;;;###autoload
(defun +scheme/open-repl (&optional arg)
"Open the Scheme REPL."
(interactive "P")
(switch-to-geiser arg)
(current-buffer))

View File

@@ -0,0 +1,45 @@
;;; lang/scheme/config.el -*- lexical-binding: t; -*-
;;;###package scheme
(add-hook 'scheme-mode-hook #'rainbow-delimiters-mode)
(use-package! geiser
:defer t
:init
(setq geiser-active-implementations '(guile chicken mit chibi chez))
(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
:documentation #'geiser-doc-symbol-at-point))
:config
(set-popup-rules!
'(("\\*[Gg]eiser \\(?:[Mm]essages\\|DBG\\|Xref\\)\\*" :quit nil)
( "\\* [A-Za-z0-9_-]+ REPL \\*" :quit nil)))
(map! :localleader
:map scheme-mode-map
"'" #'geiser-mode-switch-to-repl
"s" #'geiser-set-scheme
(: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)
(:prefix ("h" . "help")
"d" 'geiser-autodoc)
;; TODO add more help keybindings
(:prefix ("r" . "repl")
"b" #'geiser-switch-to-repl
"q" #'geiser-repl-exit
"r" #'geiser-restart-repl
"R" #'geiser-reload
"c" #'geiser-repl-clear-buffer)))

View File

@@ -0,0 +1,4 @@
;; -*- no-byte-compile: t; -*-
;;; lang/scheme/packages.el
(package! geiser)