diff lisp/shell.el @ 10831:94811e4b2a06

Added shell-truncate-buffer function to restrict buffer size to at most shell-buffer-maximum-size lines in length.
author Simon Marshall <simon@gnu.org>
date Sat, 25 Feb 1995 16:10:01 +0000
parents 1d1db37a4bb7
children 32d4c4ca1ff8
line wrap: on
line diff
--- a/lisp/shell.el	Sat Feb 25 15:22:57 1995 +0000
+++ b/lisp/shell.el	Sat Feb 25 16:10:01 1995 +0000
@@ -156,6 +156,10 @@
 
 Detecting executability of files may slow command completion considerably.")
 
+(defvar shell-buffer-maximum-size 1024
+  "*The maximum size in lines for shell buffers.
+Shell buffers are truncated from the top to be no greater than this number.")
+
 (defvar shell-popd-regexp "popd"
   "*Regexp to match subshell commands equivalent to popd.")
 
@@ -249,10 +253,10 @@
 
 (defun shell-mode ()
   "Major mode for interacting with an inferior shell.
-Return after the end of the process' output sends the text from the 
-    end of process to the end of the current line.
-Return before end of process output copies the current line (except
-    for the prompt) to the end of the buffer and sends it.
+\\[comint-send-input] after the end of the process' output sends the text from
+    the end of process to the end of the current line.
+\\[comint-send-input] before end of process output copies the current line minus the prompt to
+    the end of the buffer and sends it (\\[comint-copy-old-input] just copies the current line).
 \\[send-invisible] reads a line of text without echoing it, and sends it to
     the shell.  This is useful for entering passwords.  Or, add the function
     `comint-watch-for-password-prompt' to `comint-output-filter-functions'.
@@ -260,6 +264,9 @@
 If you want to make multiple shell buffers, rename the `*shell*' buffer
 using \\[rename-buffer] or \\[rename-uniquely] and start a new shell.
 
+If you want to make shell buffers limited in length, add the function
+`shell-truncate-buffer' to `comint-output-filter-functions'.
+
 If you accidentally suspend your process, use \\[comint-continue-subjob]
 to continue it.
 
@@ -624,6 +631,14 @@
 	(setq ds (cdr ds))))
     (message msg)))
 
+(defun shell-truncate-buffer (string)
+  "Truncate the buffer to `shell-buffer-maximum-size'."
+  (save-excursion
+    (goto-char (point-max))
+    (forward-line (- shell-buffer-maximum-size))
+    (beginning-of-line)
+    (delete-region (point-min) (point))))
+
 (defun shell-forward-command (&optional arg)
   "Move forward across ARG shell command(s).  Does not cross lines.
 See `shell-command-regexp'."