changeset 858:b11800dc877d

*** empty log message ***
author Richard M. Stallman <rms@gnu.org>
date Fri, 24 Jul 1992 03:42:21 +0000
parents cc52c6087403
children 5f325fbc093d
files lisp/simple.el
diffstat 1 files changed, 38 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/simple.el	Fri Jul 24 02:38:52 1992 +0000
+++ b/lisp/simple.el	Fri Jul 24 03:42:21 1992 +0000
@@ -352,10 +352,25 @@
 
 ;; (defvar repeat-complex-command nil)
 
-(defvar repeat-complex-command-map (copy-keymap minibuffer-local-map))
-(define-key repeat-complex-command-map "\ep" 'previous-complex-command)
-(define-key repeat-complex-command-map "\en" 'next-complex-command)
-(defun repeat-complex-command (repeat-complex-command-arg)
+(defvar minibuffer-history nil)
+(defvar minibuffer-history-variable 'minibuffer-history)
+(defvar minibuffer-history-position nil)
+
+(define-key minibuffer-local-map "\en" 'next-history-element)
+(define-key minibuffer-local-ns-map "\en" 'next-history-element)
+(define-key minibuffer-local-ns-map "\en" 'next-history-element)
+(define-key minibuffer-local-completion-map "\en" 'next-history-element)
+(define-key minibuffer-local-completion-map "\en" 'next-history-element)
+(define-key minibuffer-local-must-match-map "\en" 'next-history-element)
+
+(define-key minibuffer-local-map "\ep" 'previous-history-element)
+(define-key minibuffer-local-ns-map "\ep" 'previous-history-element)
+(define-key minibuffer-local-ns-map "\ep" 'previous-history-element)
+(define-key minibuffer-local-completion-map "\ep" 'previous-history-element)
+(define-key minibuffer-local-completion-map "\ep" 'previous-history-element)
+(define-key minibuffer-local-must-match-map "\ep" 'previous-history-element)
+
+(defun repeat-complex-command (arg)
   "Edit and re-evaluate last complex command, or ARGth from last.
 A complex command is one which used the minibuffer.
 The command is placed in the minibuffer as a Lisp form for editing.
@@ -366,13 +381,14 @@
 \\{repeat-complex-command-map}"
   (interactive "p")
   (let ((elt (nth (1- repeat-complex-command-arg) command-history))
+	(minibuffer-history-position arg)
 	(repeat-complex-command-flag t)
 	newcmd)
     (if elt
-	(progn
+	(let ((minibuffer-history-variable ' command-history))
 	  (setq newcmd (read-from-minibuffer "Redo: "
 					     (prin1-to-string elt)
-					     repeat-complex-command-map
+					     minibuffer-local-map
 					     t))
 	  ;; If command to be redone does not match front of history,
 	  ;; add it to the history.
@@ -381,22 +397,22 @@
 	  (eval newcmd))
       (ding))))
 
-(defun next-complex-command (n)
-  "Inserts the next element of `command-history' into the minibuffer."
+(defun next-history-element (n)
+  "Insert the next element of the minibuffer history into the minibuffer."
   (interactive "p")
-  (let ((narg (min (max 1 (- repeat-complex-command-arg n))
-		   (length command-history))))
-    (if (= repeat-complex-command-arg narg)
-	(error (if (= repeat-complex-command-arg 1)
-		   "No following item in command history"
-		 "No preceding item in command history"))
+  (let ((narg (min (max 1 (- minibuffer-history-position n))
+		   (length (symbol-value minibuffer-history-variable)))))
+    (if (= minibuffer-history-position narg)
+	(error (if (= minibuffer-history-position 1)
+		   "No following item in minibuffer history"
+		 "No preceding item in minibuffer history"))
       (erase-buffer)
-      (setq repeat-complex-command-arg narg)
-      (insert (prin1-to-string (nth (1- repeat-complex-command-arg)
-				    command-history)))
+      (setq minibuffer-history-position narg)
+      (insert (prin1-to-string (nth (1- minibuffer-history-position)
+				    (symbol-value minibuffer-history-variable))))
       (goto-char (point-min)))))
 
-(defun previous-complex-command (n)
+(defun previous-history-element (n)
   "Inserts the previous element of `command-history' into the minibuffer."
   (interactive "p")
   (if repeat-complex-command-flag
@@ -794,6 +810,10 @@
   (let ((interprogram-paste (and (= n 0)
 				 interprogram-paste-function
 				 (funcall interprogram-paste-function))))
+;;; RMS: Turn off the interprogram paste feature 
+;;; because currently it is wedged: it is always
+;;; giving a null string.
+    (setq interprogram-paste nil)
     (if interprogram-paste
 	(progn
 	  ;; Disable the interprogram cut function when we add the new