我给 cmuscheme.el 加入了执行命令时,自动起动 scheme 解释器, 自动显示 scheme buffer 在另一个窗口的功能。加入了 scheme-send-line 函数,并且绑定到 C-c C-c。只需要把下面这些 加入 .emacs:
(defun wy-scheme-mode-hook () (defun scheme-send-region (start end) "Send the current region to the inferior Scheme process." (interactive "r") (let ((origbuffer (current-buffer)) (proc (get-buffer-process (if (eq major-mode 'inferior-scheme-mode) (current-buffer) scheme-buffer)))) (or proc (progn (run-scheme scheme-program-name) (pop-to-buffer (process-buffer (scheme-proc)) t) (goto-char (point-max)) (pop-to-buffer origbuffer)))) (comint-send-region (scheme-proc) start end) (comint-send-string (scheme-proc) "\n") (scheme-display-buffer)) ) (add-hook 'scheme-mode-hook 'wy-scheme-mode-hook) (defun scheme-display-buffer () "Display the inferior-maxima-process buffer so the recent output is visible." (interactive) (let ((origbuffer (current-buffer))) (pop-to-buffer (process-buffer (scheme-proc)) t) (goto-char (point-max)) (pop-to-buffer origbuffer))) (defun scheme-send-line () "Send the line to the inferior Scheme process." (interactive) (scheme-send-region (save-excursion (beginning-of-line) (point)) (save-excursion (progn (end-of-line) (point))))) (define-key scheme-mode-map (kbd "C-c C-c") 'scheme-send-line)
每次 C-c e 送出一行的时候,会向 scheme 进程输出两个换行符号。 不过这个问题暂时可以忍受 :P