From 0999ad254fedc5778f237dff4ef52702182e94b8 Mon Sep 17 00:00:00 2001 From: Dimitri Lozeve Date: Fri, 19 Mar 2021 10:21:51 +0100 Subject: [PATCH] Add support for Gerbil scheme development --- init.el | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 54 insertions(+), 3 deletions(-) diff --git a/init.el b/init.el index 730cfb6..6060bbe 100644 --- a/init.el +++ b/init.el @@ -122,9 +122,13 @@ (use-package exec-path-from-shell :ensure t :config - (when (memq window-system '(mac ns)) + (when (memq window-system '(mac ns x)) (exec-path-from-shell-initialize) - (exec-path-from-shell-copy-env "LD_LIBRARY_PATH"))) + (exec-path-from-shell-copy-env "LD_LIBRARY_PATH") + (exec-path-from-shell-copy-env "PYENV_ROOT") + (exec-path-from-shell-copy-env "PYENV_ROOT") + (exec-path-from-shell-copy-env "GAMBIT") + (exec-path-from-shell-copy-env "GERBIL_HOME"))) (use-package ivy :ensure t @@ -310,7 +314,17 @@ (use-package lispy :ensure t - :hook ((emacs-lisp-mode eval-expression-minibuffer-setup ielm-mode lisp-mode lisp-interaction-mode scheme-mode slime-repl-mode racket-mode racket-repl-mode) . lispy-mode)) + :hook ((emacs-lisp-mode + eval-expression-minibuffer-setup + ielm-mode + lisp-mode + lisp-interaction-mode + scheme-mode + inferior-scheme-mode + slime-repl-mode + racket-mode + racket-repl-mode + gerbil-mode) . lispy-mode)) (use-package slime :ensure t @@ -334,6 +348,43 @@ (use-package racket-mode :ensure t) +(use-package gerbil-mode + :when (getenv "GERBIL_HOME") + :ensure nil + :defer t + :mode (("\\.ss\\'" . gerbil-mode) + ("\\.pkg\\'" . gerbil-mode)) + :bind (:map comint-mode-map + (("C-S-n" . comint-next-input) + ("C-S-p" . comint-previous-input) + ("C-S-l" . clear-comint-buffer)) + :map gerbil-mode-map + (("C-S-l" . clear-comint-buffer))) + :init + (setf gambit (getenv "GAMBIT")) + (setf gerbil (getenv "GERBIL_HOME")) + (autoload 'gerbil-mode + (concat gerbil "/etc/gerbil-mode.el") "Gerbil editing mode." t) + :hook + ((inferior-scheme-mode-hook . gambit-inferior-mode)) + :config + (require 'gambit (concat gambit "/share/emacs/site-lisp/gambit.el")) + (setf scheme-program-name (concat gerbil "/bin/gxi")) + + (let ((tags (locate-dominating-file default-directory "TAGS"))) + (when tags (visit-tags-table tags))) + (visit-tags-table (concat gerbil "/src/TAGS")) + + (when (package-installed-p 'smartparens) + (sp-pair "'" nil :actions :rem) + (sp-pair "`" nil :actions :rem)) + + (defun clear-comint-buffer () + (interactive) + (with-current-buffer "*scheme*" + (let ((comint-buffer-maximum-size 0)) + (comint-truncate-buffer))))) + (use-package rust-mode :ensure t)