■
- scheme-modeを取得。http://fun.sci.fukuoka-u.ac.jp/wiki/index.php?xyzzy
- site-init.lか.xyzzyに以下を記述
;;; SCHEME-MODE.L SETTING (load-library "scheme-mode") (push '("\\.scm$" . scheme-mode) *auto-mode-alist*) (setf *scheme-process-open-hook* #'(lambda (buffer) (if (buffer-process) (buffer-process) (progn (set-buffer buffer) (make-process (format ; nil "\"~A\"" nil "~A" (map-slash-to-backslash "gosh -i")))))))
- 以上でいいのだけど、同じバッファに出力されるのは苦手なので、scheme-mode.lに以下の修正
(defvar *scheme-run-buffer-name* "*run-scheme*") (defun scheme-default-read-filter (proc text) ; (insert text) (refresh-screen)) (let ((prev-buf (selected-buffer)) (prev-win (selected-window))) (set-window (get-buffer-window *scheme-run-buffer-name*)) (set-buffer *scheme-run-buffer-name*) (end-of-buffer)(insert text)(end-of-buffer) (set-buffer-modified-p nil *scheme-run-buffer-name*) (set-window prev-win) (set-buffer prev-buf) (refresh-screen))) (defun scheme-open-process () (interactive) (when (null *scheme-process*) ;(let* ((process (funcall *scheme-process-open-hook* (selected-buffer)))) (let* ((process (funcall *scheme-process-open-hook* (switch-to-buffer *scheme-run-buffer-name*)))) (setf *scheme-process* process) (when *scheme-process* (set-process-sentinel *scheme-process* #'(lambda (proc) (when *scheme-process-close-hook* (funcall *scheme-process-close-hook* proc)) (setf *scheme-process* nil))) (set-process-filter *scheme-process* *scheme-process-read-filter*)))) *scheme-process*)
.scmファイルを開くか、任意のバッファでM-x scheme-modeでscheme-modeを起動。
C-jで、式を評価できる。