;;; xscheme.el --- run MIT Scheme under Emacs
-;; Copyright (C) 1986, 1987, 1989, 1990, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1986, 1987, 1989, 1990, 2001, 2002, 2003, 2004, 2005,
+;; 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: languages, lisp
;; This file is part of GNU Emacs.
-;; GNU Emacs is free software; you can redistribute it and/or modify
+;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
(defcustom xscheme-startup-message
"This is the Scheme process buffer.
-Type \\[advertised-xscheme-send-previous-expression] to evaluate the expression before point.
+Type \\[xscheme-send-previous-expression] to evaluate the expression before point.
Type \\[xscheme-send-control-g-interrupt] to abort evaluation.
Type \\[describe-mode] for more information.
(defun xscheme-evaluation-commands (keymap)
(define-key keymap "\e\C-x" 'xscheme-send-definition)
- (define-key keymap "\C-x\C-e" 'advertised-xscheme-send-previous-expression)
+ (define-key keymap "\C-x\C-e" 'xscheme-send-previous-expression)
+ (put 'xscheme-send-previous-expression :advertised-binding "\C-x\C-e")
(define-key keymap "\eo" 'xscheme-send-buffer)
(define-key keymap "\ez" 'xscheme-send-definition)
(define-key keymap "\e\C-m" 'xscheme-send-previous-expression)
(setq-default xscheme-buffer-name buffer-name)
(setq-default xscheme-process-name process-name)
(setq-default xscheme-runlight-string
- (save-excursion (set-buffer buffer-name)
- xscheme-runlight-string))
+ (with-current-buffer buffer-name
+ xscheme-runlight-string))
(setq-default xscheme-runlight
(if (eq (process-status process-name) 'run)
default-xscheme-runlight
(make-local-variable 'xscheme-process-name)
(setq xscheme-process-name process-name)
(make-local-variable 'xscheme-runlight)
- (setq xscheme-runlight (save-excursion (set-buffer buffer-name)
- xscheme-runlight))))
+ (setq xscheme-runlight (with-current-buffer buffer-name
+ xscheme-runlight))))
(defun local-clear-scheme-interaction-buffer ()
"Make the current buffer use the default scheme interaction buffer."
((not process)
(error "Buffer `%s' is not a scheme interaction buffer" buffer-name))
(t
- (save-excursion
- (set-buffer buffer)
+ (with-current-buffer buffer
(if (not (xscheme-process-buffer-current-p))
(error "Buffer `%s' is not a scheme interaction buffer"
buffer-name)))
"Major mode for interacting with an inferior MIT Scheme process.
Like scheme-mode except that:
-\\[advertised-xscheme-send-previous-expression] sends the expression before point to the Scheme process as input
+\\[xscheme-send-previous-expression] sends the expression before point to the Scheme process as input
\\[xscheme-yank-pop] yanks an expression previously sent to Scheme
\\[xscheme-yank-push] yanks an expression more recently sent to Scheme
(scheme-interaction-mode-commands scheme-interaction-mode-map)))
(defun xscheme-enter-interaction-mode ()
- (save-excursion
- (set-buffer (xscheme-process-buffer))
+ (with-current-buffer (xscheme-process-buffer)
(if (not (eq major-mode 'scheme-interaction-mode))
(if (eq major-mode 'scheme-debugger-mode)
(scheme-interaction-mode-initialize)
(scheme-interaction-mode t)))))
-(fset 'advertised-xscheme-send-previous-expression
- 'xscheme-send-previous-expression)
+(define-obsolete-function-alias 'advertised-xscheme-send-previous-expression
+ 'xscheme-send-previous-expression "23.2")
\f
;;;; Debugger Mode
(defun scheme-debugger-self-insert ()
"Transmit this character to the Scheme process."
(interactive)
- (xscheme-send-char last-command-char))
+ (xscheme-send-char last-command-event))
(defun xscheme-enter-debugger-mode (prompt-string)
- (save-excursion
- (set-buffer (xscheme-process-buffer))
+ (with-current-buffer (xscheme-process-buffer)
(if (not (eq major-mode 'scheme-debugger-mode))
(progn
(if (not (eq major-mode 'scheme-interaction-mode))
(defun xscheme-debugger-mode-p ()
(let ((buffer (xscheme-process-buffer)))
(and buffer
- (save-excursion
- (set-buffer buffer)
+ (with-current-buffer buffer
(eq major-mode 'scheme-debugger-mode)))))
\f
;;;; Evaluation Commands
(let ((inhibit-quit t))
(cond ((not xscheme-control-g-synchronization-p)
(interrupt-process xscheme-process-name))
- ((save-excursion
- (set-buffer xscheme-buffer-name)
+ ((with-current-buffer xscheme-buffer-name
xscheme-control-g-disabled-p)
(message "Relax..."))
(t
- (save-excursion
- (set-buffer xscheme-buffer-name)
+ (with-current-buffer xscheme-buffer-name
(setq xscheme-control-g-disabled-p t))
(message xscheme-control-g-message-string)
(interrupt-process xscheme-process-name)
(defun xscheme-start-process (command-line the-process the-buffer)
(let ((buffer (get-buffer-create the-buffer)))
(let ((process (get-buffer-process buffer)))
- (save-excursion
- (set-buffer buffer)
+ (with-current-buffer buffer
(if (and process (memq (process-status process) '(run stop)))
(set-marker (process-mark process) (point-max))
(progn (if process (delete-process process))
(defun xscheme-process-sentinel (proc reason)
(let* ((buffer (process-buffer proc))
(name (buffer-name buffer)))
- (save-excursion
- (set-buffer buffer)
+ (with-current-buffer buffer
(xscheme-process-filter-initialize (eq reason 'run))
(if (not (eq reason 'run))
(progn
(call-noexcursion nil))
(while xscheme-filter-input
(setq call-noexcursion nil)
- (save-excursion
- (set-buffer (process-buffer proc))
+ (with-current-buffer (process-buffer proc)
(cond ((eq xscheme-process-filter-state 'idle)
(let ((start (string-match "\e" xscheme-filter-input)))
(if start
string))
(defun xscheme-cd (directory-string)
- (save-excursion
- (set-buffer (xscheme-process-buffer))
+ (with-current-buffer (xscheme-process-buffer)
(cd directory-string)))
\f
(defun xscheme-prompt-for-confirmation (prompt-string)