# HG changeset patch # User Miles Bader # Date 971921523 0 # Node ID ba88cc6434f3ace53bad56a1882541ff268c6fd2 # Parent da542331c8091b0e75f3215b5b8374e21d87cf38 (comint-write-output, comint-append-output-to-file): New functions. (comint-mode-map): Add them to the menu. diff -r da542331c809 -r ba88cc6434f3 lisp/comint.el --- a/lisp/comint.el Wed Oct 18 19:12:39 2000 +0000 +++ b/lisp/comint.el Thu Oct 19 02:12:03 2000 +0000 @@ -574,6 +574,10 @@ (cons "In/Out" (make-sparse-keymap "In/Out"))) (define-key comint-mode-map [menu-bar inout delete-output] '("Delete Current Output Group" . comint-delete-output)) + (define-key comint-mode-map [menu-bar inout write-output] + '("Write Current Output Group to File" . comint-write-output)) + (define-key comint-mode-map [menu-bar inout append-output-to-file] + '("Append Current Output Group to File" . comint-append-output-to-file)) (define-key comint-mode-map [menu-bar inout next-prompt] '("Forward Output Group" . comint-next-prompt)) (define-key comint-mode-map [menu-bar inout previous-prompt] @@ -1870,7 +1874,7 @@ ;; Random input hackage (defun comint-delete-output () - "Kill all output from interpreter since last input. + "Delete all output from interpreter since last input. Does not delete the prompt." (interactive) (let ((proc (get-buffer-process (current-buffer))) @@ -1889,6 +1893,33 @@ (defalias 'comint-kill-output 'comint-delete-output) (make-obsolete 'comint-kill-output 'comint-delete-output "21.1") +(defun comint-write-output (filename &optional mustbenew) + "Write output from interpreter since last input to FILENAME. +Any prompt at the end of the output is not written. + +If the optional argument MUSTBENEW (the prefix argument when interactive), +is non-nil, check for an existing file with the same name. If MUSTBENEW +is `excl', that means to get an error if the file already exists; never +overwrite. If MUSTBENEW is neither nil nor `excl', that means ask for +confirmation before overwriting, but do go ahead and overwrite the file +if the user confirms." + (interactive "FWrite output to file: \np") + (save-excursion + (goto-char (process-mark (get-buffer-process (current-buffer)))) + (forward-line 0) + (write-region comint-last-input-end (point) + filename nil nil nil mustbenew))) + +(defun comint-append-output-to-file (filename) + "Append output from interpreter since last input to FILENAME. +Any prompt at the end of the output is not written." + (interactive "FAppend output to file: ") + (save-excursion + (goto-char (process-mark (get-buffer-process (current-buffer)))) + (forward-line 0) + (write-region comint-last-input-end (point) filename t))) + + (defun comint-show-output () "Display start of this batch of interpreter output at top of window. Sets mark to the value of point when this command is run."