Emacs下scheme編程環境的設置

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/geisergit

1.2.1 效果

       

1.3 使用Emacs paredit+cmuscheme

       參考王垠的配置:github

(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......windows

相關文章
相關標籤/搜索