Mercurial > emacs
changeset 64682:ddfb3e6e7046
Avoid end-of-buffer. Clean up.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Fri, 29 Jul 2005 20:14:37 +0000 |
parents | 12ea7ab25f7c |
children | d8a052666f20 |
files | lisp/vmsproc.el |
diffstat | 1 files changed, 34 insertions(+), 38 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/vmsproc.el Fri Jul 29 19:54:18 2005 +0000 +++ b/lisp/vmsproc.el Fri Jul 29 20:14:37 2005 +0000 @@ -1,6 +1,6 @@ ;;; vmsproc.el --- run asynchronous VMS subprocesses under Emacs -;; Copyright (C) 1986 Free Software Foundation, Inc. +;; Copyright (C) 1986, 2005 Free Software Foundation, Inc. ;; Author: Mukesh Prasad ;; Maintainer: FSF @@ -34,13 +34,11 @@ "String to insert to distinguish commands entered by user.") (defvar subprocess-running nil) -(defvar command-mode-map nil) - -(if command-mode-map - nil - (setq command-mode-map (make-sparse-keymap)) - (define-key command-mode-map "\C-m" 'command-send-input) - (define-key command-mode-map "\C-u" 'command-kill-line)) +(defvar command-mode-map + (let ((map (make-sparse-keymap))) + (define-key map "\C-m" 'command-send-input) + (define-key map "\C-u" 'command-kill-line) + map)) (defun subprocess-input (name str) "Handles input from a subprocess. Called by Emacs." @@ -65,8 +63,7 @@ (if subprocess-running (return t)) (setq subprocess-buf (get-buffer-create "*COMMAND*")) - (save-excursion - (set-buffer subprocess-buf) + (with-current-buffer subprocess-buf (use-local-map command-mode-map)) (setq subprocess-running (spawn-subprocess 1 'subprocess-input 'subprocess-exit)) @@ -81,25 +78,24 @@ (setq cmd (substring command 0 (string-match " " command))) (setq args (substring command (string-match " " command))) (call-process cmd nil buffer nil "*dcl*" args))) -;BUGS: only the output up to the end of the first image activation is trapped. -; (if (not subprocess-running) -; (start-subprocess)) -; (save-excursion -; (set-buffer buffer) -; (let ((output-filename (concat "SYS$SCRATCH:OUTPUT-FOR-" -; (getenv "USER") ".LISTING"))) -; (while (file-exists-p output-filename) -; (delete-file output-filename)) -; (define-logical-name "SYS$OUTPUT" (concat output-filename "-NEW")) -; (send-command-to-subprocess 1 command) -; (send-command-to-subprocess 1 (concat -; "RENAME " output-filename -; "-NEW " output-filename)) -; (while (not (file-exists-p output-filename)) -; (sleep-for 1)) -; (define-logical-name "SYS$OUTPUT" nil) -; (insert-file output-filename) -; (delete-file output-filename)))) + ;; BUGS: only the output up to the end of the first image activation is trapped. + ;; (if (not subprocess-running) + ;; (start-subprocess)) + ;; (with-current-buffer buffer + ;; (let ((output-filename (concat "SYS$SCRATCH:OUTPUT-FOR-" + ;; (getenv "USER") ".LISTING"))) + ;; (while (file-exists-p output-filename) + ;; (delete-file output-filename)) + ;; (define-logical-name "SYS$OUTPUT" (concat output-filename "-NEW")) + ;; (send-command-to-subprocess 1 command) + ;; (send-command-to-subprocess 1 (concat + ;; "RENAME " output-filename + ;; "-NEW " output-filename)) + ;; (while (not (file-exists-p output-filename)) + ;; (sleep-for 1)) + ;; (define-logical-name "SYS$OUTPUT" nil) + ;; (insert-file output-filename) + ;; (delete-file output-filename)))) (defun subprocess-command () "Starts asynchronous subprocess if not running and switches to its window." @@ -115,8 +111,7 @@ line to the last line for resubmission." (interactive) (beginning-of-line) - (let ((current-line (buffer-substring (point) - (progn (end-of-line) (point))))) + (let ((current-line (buffer-substring (point) (line-end-position)))) (if (eobp) (progn (if (not subprocess-running) @@ -129,15 +124,16 @@ (progn (beginning-of-line) (insert command-prefix-string))) (next-line 1)))) ;; else -- if not at last line in buffer - (end-of-buffer) + (goto-char (point-max)) (backward-char) (next-line 1) - (if (string-equal command-prefix-string - (substring current-line 0 (length command-prefix-string))) - (insert (substring current-line (length command-prefix-string))) - (insert current-line))))) + (insert + (if (compare-strings command-prefix-string nil nil + current-line 0 (length command-prefix-string)) + (substring current-line (length command-prefix-string)) + current-line))))) -(defun command-kill-line() +(defun command-kill-line () "Kills the current line. Used in command mode." (interactive) (beginning-of-line) @@ -145,5 +141,5 @@ (define-key esc-map "$" 'subprocess-command) -;;; arch-tag: 600b2512-f903-4887-bcd2-e76b306f5b66 +;; arch-tag: 600b2512-f903-4887-bcd2-e76b306f5b66 ;;; vmsproc.el ends here