# HG changeset patch # User Richard M. Stallman # Date 935960130 0 # Node ID a4be8e9452ef0a32973cbc629ed4eeb1405f357a # Parent b12e672a1edddd261ed707fe5b96858f2cae4685 (comint-input-ring-separator): New variable. (comint-read-input-ring): Doc change; use comint-input-ring-separator when reading file. (comint-write-input-ring): Use comint-input-ring-separator when writing file. diff -r b12e672a1edd -r a4be8e9452ef lisp/comint.el --- a/lisp/comint.el Sun Aug 29 20:48:15 1999 +0000 +++ b/lisp/comint.el Sun Aug 29 20:55:30 1999 +0000 @@ -268,6 +268,9 @@ (defvar comint-input-ring-size 32 "Size of input history ring.") +(defvar comint-input-ring-separator "\n" + "Separator between commands in the history file.") + (defcustom comint-process-echoes nil "*If non-nil, assume that the subprocess echoes any input. If so, delete one copy of the input so that only one copy eventually @@ -744,8 +747,9 @@ This function is useful for major mode commands and mode hooks. -The structure of the history file should be one input command per line, -with the most recent command last. +The commands stored in the history file are separated by the +`comint-input-ring-separator'. The most recent command comes last. + See also `comint-input-ignoredups' and `comint-write-input-ring'." (cond ((or (null comint-input-ring-file-name) (equal comint-input-ring-file-name "")) @@ -771,13 +775,19 @@ (while (and (< count comint-input-ring-size) (re-search-backward "^[ \t]*\\([^#\n].*\\)[ \t]*$" nil t)) - (let ((history (buffer-substring (match-beginning 1) - (match-end 1)))) - (if (or (null comint-input-ignoredups) - (ring-empty-p ring) - (not (string-equal (ring-ref ring 0) history))) - (ring-insert-at-beginning ring history))) - (setq count (1+ count)))) + (let (start end history) + (while (and (< count comint-input-ring-size) + (re-search-backward comint-input-ring-separator nil t) + (setq end (match-beginning 0)) + (re-search-backward comint-input-ring-separator nil t) + (setq start (match-end 0)) + (setq history (buffer-substring start end)) + (goto-char start)) + (if (or (null comint-input-ignoredups) + (ring-empty-p ring) + (not (string-equal (ring-ref ring 0) history))) + (ring-insert-at-beginning ring history))) + (setq count (1+ count))))) (kill-buffer history-buf)) (setq comint-input-ring ring comint-input-ring-index nil))))) @@ -809,7 +819,7 @@ (erase-buffer) (while (> index 0) (setq index (1- index)) - (insert (ring-ref ring index) ?\n)) + (insert (ring-ref ring index) comint-input-ring-separator)) (write-region (buffer-string) nil file nil 'no-message) (kill-buffer nil))))))