ambevar-dotfiles/.emacs.d/lisp/init-scheme.el

48 lines
1.8 KiB
EmacsLisp

;;; Scheme
(require 'init-lispy)
(require 'init-rainbow)
(add-hook 'scheme-mode-hook 'ambrevar/turn-on-complete-filename)
(add-hook 'scheme-mode-hook 'ambrevar/turn-on-tab-width-to-8) ; Because some existing code uses tabs.
(add-hook 'scheme-mode-hook 'ambrevar/turn-off-indent-tabs) ; Should not use tabs.
(add-hook 'scheme-mode-hook 'ambrevar/init-lispy)
(when (fboundp 'rainbow-delimiters-mode)
(add-hook 'scheme-mode-hook #'rainbow-delimiters-mode))
(with-eval-after-load 'scheme
(when (require 'patch-scheme nil t)
(setq scheme-imenu-generic-expression
al/scheme-imenu-generic-expression)
(advice-add 'scheme-indent-function
:override 'al/scheme-indent-function)
(add-hook 'scheme-mode-hook 'al/scheme-fix-docstring-font-lock)))
(with-eval-after-load 'geiser-impl
(helm-defswitcher
"Geiser-REPL"
(lambda (b)
(with-current-buffer b
(derived-mode-p 'geiser-repl-mode)))
(lambda (&optional candidate)
(defun ambrevar/geiser-repl-buffer-name (impl)
(format "* %s%s *" (geiser-repl--repl-name impl)
(if candidate (format "-%s" candidate) "")))
(advice-add 'geiser-repl-buffer-name :override 'ambrevar/geiser-repl-buffer-name)
(call-interactively 'run-geiser)
(advice-remove 'geiser-repl-buffer-name 'ambrevar/geiser-repl-buffer-name)))
;; (setq geiser-repl-skip-version-check-p t
;; geiser-mode-start-repl-p t)
(setq geiser-active-implementations (delq 'chicken geiser-active-implementations)
geiser-default-implementation 'guile
;; geiser-repl-save-debugging-history-p t
geiser-repl-history-size 5000)
(add-hook 'geiser-repl-mode-hook 'lispyville-mode)
(add-hook 'geiser-repl-mode-hook 'rainbow-delimiters-mode))
(with-eval-after-load 'geiser-guile
(require 'patch-geiser nil 'noerror))
(provide 'init-scheme)