Scheme编程环境搭建
1.1 安装Chez Scheme
git clone https://github.com/cisco/ChezScheme.git cd ChezScheme ./configure make sudo make install
1.2 使用Emacs geiser
Plugin: geiser (setq geiser-active-implementations '(chez)) ;;; Otherwise, use C+c C+s to select M+x run-geiser Use C+x C+e to exec codes.
链接:https://gitlab.com/jaor/geiser
1.2.1 效果
1.3 使用Emacs paredit+cmuscheme
参考王垠的配置:
(autoload 'paredit-mode "paredit" "Minor mode for pseudo-structurally editing Lisp code." t) (require 'cmuscheme) (setq scheme-program-name "scheme") (defun scheme-proc () "Return the current Scheme process, starting one if necessary." (unless (and scheme-buffer (get-buffer scheme-buffer) (comint-check-proc scheme-buffer)) (save-window-excursion (run-scheme scheme-program-name))) (or (scheme-get-process) (error "No current process. See variable `scheme-buffer'"))) (defun scheme-split-window () (cond ((= 1 (count-windows)) (delete-other-windows) (split-window-vertically (floor (* 0.68 (window-height)))) (other-window 1) (switch-to-buffer "*scheme*") (other-window 1)) ((not (find "*scheme*" (mapcar (lambda (w) (buffer-name (window-buffer w))) (window-list)) :test 'equal)) (other-window 1) (switch-to-buffer "*scheme*") (other-window -1)))) (defun scheme-send-last-sexp-split-window () (interactive) (scheme-split-window) (scheme-send-last-sexp)) (defun scheme-send-definition-split-window () (interactive) (scheme-split-window) (scheme-send-definition)) (add-hook 'scheme-mode-hook (lambda () (paredit-mode 1) (define-key scheme-mode-map (kbd "<f5>") 'scheme-send-last-sexp-split-window) (define-key scheme-mode-map (kbd "<f6>") 'scheme-send-definition-split-window)))
具体paredit的快捷键通过which-key去查就好:
M+x which-key-show-keymap RET paredit-mode-map RET
1.3.1 效果
个人更倾向于1.3的做法,HAHAHA......