;;; -*- Mode:Lisp; Readtable:ZL; Package:USER; Base:10; Patch-File:T -*-
;;; Patch file for System version 123.255
;;; Reason:
;;;  ZWEI enhancements:
;;;    - When you do Meta-., the left mouse button can be used to select a function
;;;      from the screen.  Now, the right mouse button can be used to pull a function
;;;      name from the screen into the mini-buffer for editing.
;;;    - Meta-X Tags Search now has similar mouse capability, except that any atom can
;;;      be selected, rather than just defined functions.
;;; Written 5-May-88 13:01:50 by pld at site Gigamos Cambridge
;;; while running on Azathoth from band 3
;;; with Experimental System 123.253, Experimental Local-File 73.5, Experimental FILE-Server 22.4, Experimental Unix-Interface 11.0, Experimental KERMIT 34.3, Experimental ZMail 71.0, Experimental Lambda-Diag 15.0, Experimental Tape 22.4, microcode 1756, SDU Boot Tape 3.14, SDU ROM 8, the old ones.



; From file DJ: L.ZWEI; MOUSE.LISP#104 at 5-May-88 13:08:28
#8R ZWEI#: 
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "ZWEI")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: ZWEI; MOUSE  "

(defun read-function-name-or-string (&optional reverse-p prompt comtab)
  (declare (values search-function key))
  (let ((*mini-buffer-default-string* nil)
	(read-function-name-must-be-defined nil)
	(read-function-name-old-global-mouse-char-blinker-handler
	  *global-mouse-char-blinker-handler*)
	(read-function-name-old-global-mouse-char-blinker-documentation-string
	  *global-mouse-char-blinker-documentation-string*)
	(read-function-name-old-mouse-font-char
	  *mouse-font-char*)
	(read-function-name-old-mouse-x-offset
	  *mouse-x-offset*)
	(read-function-name-old-mouse-y-offset
	  *mouse-y-offset*))
    (declare (special read-function-name-must-be-defined
		      read-function-name-old-global-mouse-char-blinker-handler
		      read-function-name-old-global-mouse-char-blinker-documentation-string
		      read-function-name-old-mouse-font-char
		      read-function-name-old-mouse-x-offset
		      read-function-name-old-mouse-y-offset))
    (let ((*post-command-hook*
	    (append *post-command-hook* '(read-function-name-command-hook)))
	  (*mini-buffer-value-history*
	    *definition-name-history*))
      (let ((*batch-undo-save* t))
	(delete-interval (window-interval *mini-buffer-window*)))
      (unwind-protect
	  (progn (read-function-name-command-hook nil)
		 (get-extended-string-search-strings reverse-p prompt comtab))
	(read-function-name-command-hook t)))))

))

; From file DJ: L.ZWEI; MOUSE.LISP#104 at 5-May-88 13:08:41
#8R ZWEI#: 
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "ZWEI")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: ZWEI; MOUSE  "

(DEFUN READ-FUNCTION-NAME-COMMAND-HOOK (CHAR-OR-T)
  (DECLARE (SPECIAL READ-FUNCTION-NAME-MUST-BE-DEFINED
		    READ-FUNCTION-NAME-OLD-GLOBAL-MOUSE-CHAR-BLINKER-HANDLER
		    READ-FUNCTION-NAME-OLD-GLOBAL-MOUSE-CHAR-BLINKER-DOCUMENTATION-STRING
		    READ-FUNCTION-NAME-OLD-MOUSE-FONT-CHAR
		    READ-FUNCTION-NAME-OLD-MOUSE-X-OFFSET
		    READ-FUNCTION-NAME-OLD-MOUSE-Y-OFFSET))
  (flet ((revert-blinker ()
	  (SEND *GLOBAL-MOUSE-CHAR-BLINKER* ':SET-VISIBILITY NIL)
	  (SETQ *GLOBAL-MOUSE-CHAR-BLINKER-HANDLER*
		READ-FUNCTION-NAME-OLD-GLOBAL-MOUSE-CHAR-BLINKER-HANDLER
		*GLOBAL-MOUSE-CHAR-BLINKER-DOCUMENTATION-STRING*
		READ-FUNCTION-NAME-OLD-GLOBAL-MOUSE-CHAR-BLINKER-DOCUMENTATION-STRING
		*MOUSE-HOOK* NIL
		*MOUSE-FONT-CHAR*
		READ-FUNCTION-NAME-OLD-MOUSE-FONT-CHAR
		*MOUSE-X-OFFSET*
		READ-FUNCTION-NAME-OLD-MOUSE-X-OFFSET
		*MOUSE-Y-OFFSET*
		READ-FUNCTION-NAME-OLD-MOUSE-Y-OFFSET)
	   (TV:MOUSE-SET-BLINKER-DEFINITION ':CHARACTER *MOUSE-X-OFFSET* *MOUSE-Y-OFFSET*
					    ':ON ':SET-CHARACTER *MOUSE-FONT-CHAR*)))
    (COND ((AND (NEQ CHAR-OR-T T)
		(BP-= (INTERVAL-FIRST-BP (WINDOW-INTERVAL *MINI-BUFFER-WINDOW*))
		      (INTERVAL-LAST-BP (WINDOW-INTERVAL *MINI-BUFFER-WINDOW*))))
	   (SETQ *GLOBAL-MOUSE-CHAR-BLINKER-HANDLER*
		 (IF READ-FUNCTION-NAME-MUST-BE-DEFINED
		     'BLINK-FUNCTION
		   'BLINK-ATOM)
		 *GLOBAL-MOUSE-CHAR-BLINKER-DOCUMENTATION-STRING*
		 "Click left on highlighted name to select it, right to pull into mini-buffer"
		 *MOUSE-HOOK*
		 #'(LAMBDA (WINDOW CHAR IGNORE IGNORE &AUX TEM)
		     (case CHAR
		       (#/MOUSE-1-1
			(MULTIPLE-VALUE-BIND (FCTN LINE START END)
			    (ATOM-UNDER-MOUSE WINDOW)
			  (WHEN (AND LINE
				     (OR (FBOUNDP (SETQ TEM FCTN))
					 (GET TEM ':SOURCE-FILE-NAME)
					 (GET TEM 'ZMACS-BUFFERS)
					 (STRING-IN-AARRAY-P TEM *ZMACS-COMPLETION-AARRAY*)
					 (AND (NOT READ-FUNCTION-NAME-MUST-BE-DEFINED) TEM)))
			    (LET ((INT (WINDOW-INTERVAL *MINI-BUFFER-WINDOW*)))
			      (DELETE-INTERVAL INT)
			      (INSERT (INTERVAL-FIRST-BP INT) LINE START END))
			    (*THROW 'RETURN-FROM-COMMAND-LOOP
				    (SUBSTRING LINE START END)))))
		       (#/MOUSE-3-1
			(MULTIPLE-VALUE-BIND (FCTN LINE START END)
			    (ATOM-UNDER-MOUSE WINDOW)
			  (WHEN (AND LINE
				     (OR (FBOUNDP (SETQ TEM FCTN))
					 (GET TEM ':SOURCE-FILE-NAME)
					 (GET TEM 'ZMACS-BUFFERS)
					 (STRING-IN-AARRAY-P TEM *ZMACS-COMPLETION-AARRAY*)
					 (AND (NOT READ-FUNCTION-NAME-MUST-BE-DEFINED) TEM)))
			    (LET ((INT (WINDOW-INTERVAL *MINI-BUFFER-WINDOW*)))
			      (DELETE-INTERVAL INT)
			      (move-bp (window-point *mini-buffer-window*)
				       (INSERT (INTERVAL-FIRST-BP INT) LINE START END)))
			    (must-redisplay *mini-buffer-window* dis-text)
			    (revert-blinker)
			    (throw 'zwei-command-loop nil))))))
		 *MOUSE-FONT-CHAR* 0
		 *MOUSE-X-OFFSET* 4
		 *MOUSE-Y-OFFSET* 0)
	   (TV:MOUSE-SET-BLINKER-DEFINITION ':CHARACTER *MOUSE-X-OFFSET* *MOUSE-Y-OFFSET*
					    ':ON ':SET-CHARACTER *MOUSE-FONT-CHAR*))
	  (T (revert-blinker)))
    (TV:MOUSE-WAKEUP)))

))

; From file DJ: L.ZWEI; SECTIO.LISP#290 at 5-May-88 13:09:50
#8R ZWEI#: 
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "ZWEI")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: ZWEI; SECTIO  "

(DEFCOM COM-TAGS-SEARCH "Search for the specified string within files of the tags table" ()
  (LET ((*MINI-BUFFER-DEFAULT-STRING* *ZMACS-TAGS-SEARCH-KEY-STRING*))
    (MULTIPLE-VALUE-SETQ (*ZMACS-TAGS-SEARCH-FUNCTION* *ZMACS-TAGS-SEARCH-KEY*)
      (read-function-name-or-string  NIL "Tags search:" *SEARCH-MINI-BUFFER-COMTAB*)))
  (SETQ *ZMACS-TAGS-SEARCH-KEY-STRING*
	(STRING-INTERVAL (WINDOW-INTERVAL (GET-SEARCH-MINI-BUFFER-WINDOW))))
  (COMMAND-STORE 'COM-TAGS-SEARCH-NEXT-OCCURRENCE #/c-. *ZMACS-COMTAB*)
  (MUST-REDISPLAY *WINDOW* DIS-TEXT)
  (TAGS-SEARCH-NEXT-OCCURRENCE T))

))
