;;; -*- Mode:Lisp; Readtable:ZL; Package:USER; Base:8; Patch-File:T -*-
;;; Patch file for System version 123.164
;;; Reason:
;;;  If displaying full help for the rubout handler directly onto the stream, redisplay
;;;  the input after the help info.
;;; Written 21-Dec-87 14:24:35 by pld at site Gigamos Cambridge
;;; while running on Jack Flanders from band 2
;;; with Experimental System 123.163, Experimental Local-File 73.3, Experimental FILE-Server 22.1, Experimental Unix-Interface 11.0, Experimental Tape 18.0, Experimental KERMIT 34.3, Experimental ZMail 71.0, Experimental Lambda-Diag 15.0, microcode 1754, SDU Boot Tape 3.12, SDU ROM 8.



; From file DJ: L.SYS2; LMMAC.LISP#459 at 21-Dec-87 14:32:05
#10R SYSTEM-INTERNALS#: 
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: SYS2; LMMAC  "

(defun with-help-stream-1 (label superior continuation &aux input-p)
  (cond ((send-if-handles superior :no-inferior-windows-p)
	 (funcall continuation superior))
	((typep superior 'tv:sheet)
	 (using-resource (stream tv::pop-up-finger-window)
	   (lexpr-send stream :set-edges (multiple-value-list (send superior :edges)))
	   (send stream :set-label label)
	   (tv::window-call (stream :deactivate)
	     (send stream :clear-window)
	     (funcall continuation stream)
	     (format stream "~2&Type any character to continue: ")
	     (send stream :wait-for-input-or-deexposure)
	     ;; This hair is so that if we woke up due to deexposure
	     ;; we do not try to read anything;
	     ;; if we woke up due to input, we do not read until after
	     ;; we deactivate the help window, so that if the input is Break
	     ;; the break-loop is not entered until our normal window is usable again.
	     (if (and (send stream :exposed-p)
		      (send stream :listen))
		 (setq input-p t)))
	   (if input-p
	       (send (if (operation-handled-p superior :tyi-no-hang)
			 superior
		         *terminal-io*)
		     :tyi-no-hang))))
	(t (funcall continuation superior))))

))

; From modified file DJ: L.WINDOW; RH.LISP#182 at 21-Dec-87 14:32:13
#8R TV#: 
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "TV")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: WINDOW; RH  "

(DEFINE-RH-COMMAND RH-COM-LIST-COMMANDS (#/CONTROL-HELP) (IGNORE)
  (if (send-if-handles self :no-inferior-windows-p)
      (rh-display-info
	(rh-print-full-help self))
    (LET ((RUBOUT-HANDLER NIL))
      (SI:WITH-HELP-STREAM (HELP-WINDOW :LABEL "Input Editor Commands" :WIDTH *WIDTH
					:SUPERIOR
					(IF (TYPEP SELF 'SHEET)
					    (SHEET-GET-SCREEN SELF)
					  SELF)
					:width width)
	(rh-print-full-help help-window width)))))

))

; From modified file DJ: L.WINDOW; RH.LISP#182 at 21-Dec-87 14:32:19
#8R TV#: 
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "TV")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: WINDOW; RH  "

(defun rh-print-full-help (help-window &optional width)
  (cond (width)
	((operation-handled-p help-window :size-in-characters)
	 (setq width (send help-window :size-in-characters)))
	(t
	 (setq width 85.)))
  (LET* ((EDITING-COMMAND (CDR (ASSQ ':EDITING-COMMAND RUBOUT-HANDLER-OPTIONS))))
    (FORMAT HELP-WINDOW "Input Editor Commands:~@
		    Control-number and Control-U provide numeric argument.~2%")
    ;; Print double column list of commands.
    (RH-PRINT-HELP-DOUBLE-COLUMNS RH-COMMAND-ALIST HELP-WINDOW WIDTH
				  (APPEND (CDR (ASSQ ':PASS-THROUGH RUBOUT-HANDLER-OPTIONS))
					  EDITING-COMMAND))
    (WHEN EDITING-COMMAND
      (FORMAT HELP-WINDOW "~%Additional commands available right now:~2%")
      (RH-PRINT-HELP-DOUBLE-COLUMNS EDITING-COMMAND HELP-WINDOW WIDTH)))
  (TERPRI HELP-WINDOW))

))
