# HG changeset patch # User Simon Marshall # Date 793728601 0 # Node ID 94811e4b2a062cb33c2f188aad3cf92468c44fcb # Parent a774e92de39cfdc83fba82f463037318925b232d Added shell-truncate-buffer function to restrict buffer size to at most shell-buffer-maximum-size lines in length. diff -r a774e92de39c -r 94811e4b2a06 lisp/shell.el --- 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'."