# HG changeset patch # User Gerd Moellmann # Date 940164604 0 # Node ID 967019d3cb9315b54c2a2026c8586fa72dce566a # Parent d3f55e596e63159f98a5c365e885484d48d70947 Doc fixes. (previous-matching-history-element, next-history-element): Change to work correctly even if the point is in the prompt. (choose-completion-string): Likewise. (minibuffer-prompt-width): New function (compatibility with old subr). (line-move): Supply new ESCAPE-FROM-EDGE argument to constrain-to-field. (line-move): Use constrain-to-field to avoid moving into a prompt. (previous-complete-history-element): Clarify doc string. (next-complete-history-element): Likewise. Use field-beginning instead of point-min. (next-matching-history-element): Use field-beginning and erase-field instead of point-min and erase-buffer. (previous-matching-history-element): Get the minibuffer input with field-string instead of buffer-string. (choose-completion-string): Likewise. (next-history-element): Likewise. Erase the minibuffer input with erase-field, not erase-buffer. Use field-beginning to find the beginning of the input. diff -r d3f55e596e63 -r 967019d3cb93 lisp/simple.el --- a/lisp/simple.el Sun Oct 17 10:48:08 1999 +0000 +++ b/lisp/simple.el Sun Oct 17 12:50:04 1999 +0000 @@ -723,7 +723,7 @@ (prefix-numeric-value current-prefix-arg)))) (if (and (zerop minibuffer-history-position) (null minibuffer-text-before-history)) - (setq minibuffer-text-before-history (buffer-string))) + (setq minibuffer-text-before-history (field-string (point-max)))) (let ((history (symbol-value minibuffer-history-variable)) (case-fold-search (if (isearch-no-upper-case-p regexp t) ; assume isearch.el is dumped @@ -751,13 +751,14 @@ (nth (1- pos) history))) (setq n (+ n (if (< n 0) 1 -1))))) (setq minibuffer-history-position pos) - (erase-buffer) + (goto-char (point-max)) + (erase-field) (let ((elt (nth (1- pos) history))) (insert (if (eq minibuffer-history-sexp-flag (minibuffer-depth)) (let ((print-level nil)) (prin1-to-string elt)) elt))) - (goto-char (point-min))) + (goto-char (field-beginning))) (if (or (eq (car (car command-history)) 'previous-matching-history-element) (eq (car (car command-history)) 'next-matching-history-element)) (setq command-history (cdr command-history)))) @@ -792,14 +793,15 @@ elt minibuffer-returned-to-present) (if (and (zerop minibuffer-history-position) (null minibuffer-text-before-history)) - (setq minibuffer-text-before-history (buffer-string))) + (setq minibuffer-text-before-history (field-string (point-max)))) (if (< narg minimum) (if minibuffer-default (error "End of history; no next item") (error "End of history; no default available"))) (if (> narg (length (symbol-value minibuffer-history-variable))) (error "Beginning of history; no preceding item")) - (erase-buffer) + (goto-char (point-max)) + (erase-field) (setq minibuffer-history-position narg) (cond ((= narg -1) (setq elt minibuffer-default)) @@ -815,7 +817,7 @@ (let ((print-level nil)) (prin1-to-string elt)) elt)) - (goto-char (minibuffer-prompt-end))))) + (goto-char (field-beginning))))) (defun previous-history-element (n) "Inserts the previous element of the minibuffer history into the minibuffer." @@ -823,11 +825,15 @@ (next-history-element (- n))) (defun next-complete-history-element (n) - "Get next element of history which is a completion of minibuffer contents." + "Get next history element which completes the minibuffer before the point. +The contents of the minibuffer after the point are deleted, and replaced +by the new completion." (interactive "p") (let ((point-at-start (point))) (next-matching-history-element - (concat "^" (regexp-quote (buffer-substring (point-min) (point)))) n) + (concat + "^" (regexp-quote (buffer-substring (field-beginning) (point)))) + n) ;; next-matching-history-element always puts us at (point-min). ;; Move to the position we were at before changing the buffer contents. ;; This is still sensical, because the text before point has not changed. @@ -835,9 +841,31 @@ (defun previous-complete-history-element (n) "\ -Get previous element of history which is a completion of minibuffer contents." +Get previous history element which completes the minibuffer before the point. +The contents of the minibuffer after the point are deleted, and replaced +by the new completion." (interactive "p") (next-complete-history-element (- n))) + +;; These two functions are for compatibility with the old subrs of the +;; same name. + +(defun minibuffer-prompt-width () + "Return the display width of the minibuffer prompt. +Return 0 if current buffer is not a mini-buffer." + ;; Return the width of everything before the field at the end of + ;; the buffer; this should be 0 for normal buffers. + (1- (field-beginning (point-max)))) + +(defun minibuffer-prompt-end () + "Return the buffer position of the end of the minibuffer prompt. +Return 0 if current buffer is not a mini-buffer." + ;; Return the width of everything before the field at the end of + ;; the buffer; this should be 0 for normal buffers. + ;; XXX This definition doesn't seem very useful; why does one care + ;; about the last character of the prompt? The beginning of the + ;; user-text seems more useful (e.g., this value + 1). + (1- (field-beginning (point-max)))) ;Put this on C-x u, so we can force that rather than C-_ into startup msg (defalias 'advertised-undo 'undo) @@ -2403,7 +2431,7 @@ ;; with intangibility and point-motion hooks enabled this time. (goto-char opoint) (setq inhibit-point-motion-hooks nil) - (goto-char new) + (goto-char (constrain-to-field new opoint t t)) ;; If intangibility processing moved us to a different line, ;; readjust the horizontal position within the line we ended up at. (when (or (< (point) line-beg) (> (point) line-end)) @@ -2418,7 +2446,7 @@ (setq new (point))) (goto-char (point-min)) (setq inhibit-point-motion-hooks nil) - (goto-char new) + (goto-char (constrain-to-field new opoint t t)) ))) nil) @@ -3816,7 +3844,7 @@ ;; If this is reading a file name, and the file name chosen ;; is a directory, don't exit the minibuffer. (if (and (eq minibuffer-completion-table 'read-file-name-internal) - (file-directory-p (buffer-string))) + (file-directory-p (field-string (point-max)))) (select-window (active-minibuffer-window)) (exit-minibuffer))))))