# HG changeset patch # User Richard M. Stallman # Date 1010896992 0 # Node ID 13a21b2786c0e192709f5871e3e0b0a07f879b92 # Parent 0dc314cafc7a137a7d8226dd9dfd463cf687429c (comint-input-sender): Doc fix. (comint-input-sender-no-newline): New variable. (comint-simple-send): If comint-input-sender-no-newline, don't output newline, but maybe send eof. (comint-send-input): New arg NO-NEWLINE. (comint-send-eof): Call comint-send-eof with NO-NEWLINE. diff -r 0dc314cafc7a -r 13a21b2786c0 lisp/comint.el --- a/lisp/comint.el Sun Jan 13 04:02:49 2002 +0000 +++ b/lisp/comint.el Sun Jan 13 04:43:12 2002 +0000 @@ -364,11 +364,15 @@ This variable is buffer-local.") +(defvar comint-input-sender-no-newline nil + "Non-nil directs the `comint-input-sender' function not to send a newline.") + (defvar comint-input-sender (function comint-simple-send) "Function to actually send to PROCESS the STRING submitted by user. Usually this is just `comint-simple-send', but if your mode needs to massage the input string, put a different function here. `comint-simple-send' just sends the string plus a newline. +\(If `comint-input-sender-no-newline' is non-nil, it omits the newline.) This is called from the user command `comint-send-input'.") (defcustom comint-eol-on-send t @@ -1365,7 +1369,7 @@ cmd)))) (ring-insert comint-input-ring cmd))) -(defun comint-send-input () +(defun comint-send-input (&optional no-newline) "Send input to process. After the process output mark, sends all text from the process mark to point as input to the process. Before the process output mark, calls @@ -1440,15 +1444,17 @@ (delete-region pmark start) copy)))) - (insert ?\n) + (unless no-newline + (insert ?\n)) (comint-add-to-input-history history) (run-hook-with-args 'comint-input-filter-functions - (concat input "\n")) + (if no-newline input + (concat input "\n"))) (let ((beg (marker-position pmark)) - (end (1- (point)))) + (end (if no-newline (point) (1- (point))))) (when (not (> beg end)) ; handle a special case ;; Make an overlay for the input field (let ((over (make-overlay beg end nil nil t))) @@ -1484,7 +1490,8 @@ (set-marker (process-mark proc) (point)) ;; clear the "accumulation" marker (set-marker comint-accum-marker nil) - (funcall comint-input-sender proc input) + (let ((comint-input-sender-no-newline no-newline)) + (funcall comint-input-sender proc input)) ;; Optionally delete echoed input (after checking it). (when comint-process-echoes @@ -1842,7 +1849,10 @@ This just sends STRING plus a newline. To override this, set the hook `comint-input-sender'." (comint-send-string proc string) - (comint-send-string proc "\n")) + (if comint-input-sender-no-newline + (if (not (string-equal input "")) + (process-send-eof)) + (comint-send-string proc "\n"))) (defun comint-line-beginning-position () "Returns the buffer position of the beginning of the line, after any prompt. @@ -2125,7 +2135,7 @@ (defun comint-send-eof () "Send an EOF to the current buffer's process." (interactive) - (comint-snapshot-last-prompt) + (comint-send-input t) (process-send-eof))