Skip to content

Instantly share code, notes, and snippets.

@drhodes
Created January 7, 2020 16:30
Show Gist options
  • Save drhodes/c14976b71461f1c480594a0bbe25db19 to your computer and use it in GitHub Desktop.
Save drhodes/c14976b71461f1c480594a0bbe25db19 to your computer and use it in GitHub Desktop.
a scheme config
(defun xscheme ()
"Loads xscheme and runs a scheme process in the current buffer."
(interactive)
(load-library "xscheme")
(xscheme-start "scheme -emacs"
(buffer-name)
(buffer-name))
;;
)
;; https://www.emacswiki.org/emacs/BuildTags
(defun sicp-create-tags (dir-name)
"Create tags file."
(interactive "DDirectory: ")
(eshell-command
(format "find %s -type f -name \"*.scm\" | etags -" dir-name)))
(defun sicp ()
"Create a *scheme* buffer and use that for interactive evaluation"
(interactive)
(let ((cur-buf (current-buffer))
(interactive-buf (get-buffer-create "*scheme*")))
(switch-to-buffer interactive-buf)
(xscheme)
(switch-to-buffer cur-buf)
))
(defun sicp-send-and-interact ()
(interactive)
(xscheme-send-buffer)
(switch-to-buffer-other-window "*scheme*"))
(defun sicp-switch-to-interact ()
(interactive)
(split-window-below)
(switch-to-buffer-other-window "*scheme*")
)
(defun sicp-send-and-see ()
(interactive)
(xscheme-send-buffer)
(let ((buf (current-buffer)))
(switch-to-buffer-other-window "*scheme*")
(goto-char (point-max))
(switch-to-buffer-other-window buf)))
(defun sicp-debug ()
"send (debug) to the scheme process and switch to the debug buffer"
(interactive)
(process-send-string xscheme-process-name "(debug)")
(switch-to-buffer-other-window "*scheme*"))
(add-hook 'scheme-mode-hook #'enable-paredit-mode)
(add-hook 'scheme-mode-hook
(lambda ()
;; set some keys.
(local-set-key (kbd "C-c C-l") #'sicp-send-and-interact)
;;(local-set-key (kbd "C-c C-b") #'xscheme-send-buffer)
(local-set-key (kbd "C-c C-z") #'sicp-switch-to-interact)
(local-set-key (kbd "C-c C-o") #'sicp-send-and-see)
(local-set-key (kbd "C-c C-d") #'sicp-debug)
(local-set-key (kbd "C-c C-t") #'sicp-create-tags)
))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment