forked from syl20bnr/spacemacs
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Initial support for Geiser. Resolves Issue syl20bnr#1002.
- Loading branch information
Showing
4 changed files
with
205 additions
and
29 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
#+TITLE: Scheme contribution layer for Spacemacs | ||
|
||
* Table of Contents | ||
- [[#description][Description]] | ||
- [[#install][Install]] | ||
- [[#key-bindings][Key Bindings]] | ||
* Description | ||
|
||
A spacemacs contribution layer providing Scheme support via [[http://www.nongnu.org/geiser/][Geiser]]. | ||
|
||
* Install | ||
|
||
The scheme layer currently supports: Chicken and Guile. Combined usage of racket-mode | ||
and geiser has not been tested. | ||
|
||
To use this layer, simply add it to =~/.spacemacs=: | ||
|
||
#+BEGIN_SRC emacs-lisp | ||
(setq-default dotspacemacs-configuration-layers '(scheme)) | ||
#+END_SRC | ||
|
||
For full Chicken support, the following commands should be run: | ||
|
||
#+BEGIN_SRC shell | ||
$ chicken-install -s apropos chicken-doc | ||
$ cd `csi -p '(chicken-home)'` | ||
$ curl http://3e8.org/pub/chicken-doc/chicken-doc-repo.tgz | sudo tar zx | ||
#+END_SRC | ||
|
||
* Key Bindings | ||
|
||
** Compiling | ||
|
||
| Key Binding | Description | | ||
|-------------+----------------------------| | ||
| ~SPC m c c~ | Compile current buffer | | ||
| ~SPC m c p~ | Add directory to load path | | ||
|
||
** Navigation | ||
|
||
| Key Binding | Description | | ||
|-------------+---------------------| | ||
| ~SPC m g g~ | Goto Definition | | ||
| ~SPC m g b~ | Go Back | | ||
| ~SPC m g m~ | Goto Module | | ||
| ~SPC m g n~ | Goto next error | | ||
| ~SPC m g N~ | Goto previous error | | ||
|
||
** Documentation | ||
|
||
| Key Binding | Description | | ||
|-------------+------------------------------------------| | ||
| ~SPC m h h~ | Docs for symbol at point | | ||
| ~SPC m h d~ | Look up manual entry for symbol at point | | ||
| ~SPC m h m~ | Display exports for module | | ||
| ~SPC m h <~ | Display callers | | ||
| ~SPC m h >~ | Display callees | | ||
|
||
** Insertion | ||
|
||
| Key Binding | Description | | ||
|-------------+---------------| | ||
| ~SPC m i l~ | Insert Lambda | | ||
|
||
** Macroexpansion | ||
|
||
| Key Binding | Description | | ||
|-------------+------------------------------| | ||
| ~SPC m m e~ | Macroexpand last sexp | | ||
| ~SPC m m f~ | Macroexpand surrounding sexp | | ||
| ~SPC m m r~ | Macroexpand region | | ||
|
||
** REPL | ||
|
||
| Key Binding | Description | | ||
|-------------+------------------------------------------| | ||
| ~SPC m s i~ | Start or switch to the REPL | | ||
| ~SPC m s b~ | Send buffer to the REPL | | ||
| ~SPC m s B~ | Send buffer to the REPL and focus it | | ||
| ~SPC m s f~ | Send definition to the REPL | | ||
| ~SPC m s F~ | Send definition to the REPL and focus it | | ||
| ~SPC m s e~ | Send last sexp to the REPL | | ||
| ~SPC m s r~ | Send region to the REPL | | ||
| ~SPC m s R~ | Send region to the REPL and focus it | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
;;; packages.el --- Scheme Layer packages File for Spacemacs | ||
;; | ||
;; Copyright (c) 2012-2014 Sylvain Benner | ||
;; Copyright (c) 2014-2015 Sylvain Benner & Contributors | ||
;; | ||
;; Author: Sylvain Benner <sylvain.benner@gmail.com> | ||
;; URL: https://github.com/syl20bnr/spacemacs | ||
;; | ||
;; This file is not part of GNU Emacs. | ||
;; | ||
;;; License: GPLv3 | ||
|
||
(setq scheme-packages | ||
'(geiser)) | ||
|
||
(defun scheme/init-geiser () | ||
(use-package geiser | ||
:commands run-geiser | ||
:config | ||
(progn | ||
(evil-leader/set-key-for-mode 'scheme-mode | ||
"mcc" 'geiser-compile-current-buffer | ||
"mcp" 'geiser-add-to-load-path | ||
|
||
"mgg" 'geiser-edit-symbol-at-point | ||
"mgb" 'geiser-pop-symbol-stack | ||
"mgm" 'geiser-edit-module | ||
"mgn" 'next-error | ||
"mgN" 'previous-error | ||
|
||
"mhh" 'geiser-doc-symbol-at-point | ||
"mhd" 'geiser-doc-look-up-manual | ||
"mhm" 'geiser-doc-module | ||
"mh<" 'geiser-xref-callers | ||
"mh>" 'geiser-xref-callees | ||
|
||
"mil" 'geiser-insert-lambda | ||
|
||
"mme" 'geiser-expand-last-sexp | ||
"mmf" 'geiser-expand-definition | ||
"mmx" 'geiser-expand-region | ||
|
||
"msi" 'geiser-mode-switch-to-repl | ||
"msb" 'geiser-eval-buffer | ||
"msB" 'geiser-eval-buffer-and-go | ||
"msf" 'geiser-eval-definition | ||
"msF" 'geiser-eval-definition-and-go | ||
"mse" 'geiser-eval-last-sexp | ||
"msr" 'geiser-eval-region | ||
"msR" 'geiser-eval-region-and-go)))) | ||
|
||
(when (configuration-layer/layer-usedp 'auto-completion) | ||
|
||
(defun scheme/post-init-company () | ||
;; Geiser provides completion as long as company mode is loaded. | ||
(spacemacs|add-company-hook scheme-mode))) |