;;; -*- Mode:Lisp; Readtable:ZL; Package:USER; Base:8; Patch-File:T -*-
;;; Patch file for System version 124.109
;;; Reason:
;;;  Added ZMacs command List-Tag-Buffers.  Displays the associated buffers
;;;  for a tag table that have been read in.  Display is mouse-sensitive like
;;;  List-All-Buffers.  Also displays the buffer that is the :CURRENT-PATHNAME
;;;  in the search path.
;;;  
;;;  To do this, I added a parameter to the utility function TAG-TABLE-BUFFERS, so
;;;  that it can pass a DEFAULT-P argument to SELECT-TAG-TABLE.  I used this
;;;  so that by default LIST-TAG-BUFFERS asks the user to select a tag table
;;;  for the command.  Control-U (or any numeric arg) is an escape hatch;
;;;  the currently selected tag table, if there is one, will be displayed.
;;; Written 26-Jun-88 05:14:04 by keith (Keith Corbett) at site Gigamos Cambridge
;;; while running on Breaking Glass from band 1
;;; with Experimental System 124.107, Experimental Local-File 74.3, Experimental File-Server 23.1, Experimental Unix-Interface 12.0, Experimental ZMail 72.1, Experimental Tape 23.6, Experimental Lambda-Diag 16.2, Tiger 28.0, microcode 1761, SDU Boot Tape 3.14, SDU ROM 103, Beta 3 for in-house.

; From modified file DJ: L.ZWEI; SECTIO.LISP#304 at 26-Jun-88 05:22:07
#8R ZWEI#: 
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "ZWEI")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: ZWEI; SECTIO  "


(DEFUN TAG-TABLE-BUFFERS (READ-IN-ALL-FILES &optional (default-p t)
			  &AUX BUFFER-LIST FILE-LIST tag-table)
  "Return a list of all buffers in the selected tag table.
Also return the tag table that was selected.
READ-IN-ALL-FILES means visit all the files;
otherwise, we return only the buffers for files already read in.
When DEFAULT-P is NIL, offer to select a tag table."
  (declare (values buffer-list tag-table))
  (SETQ FILE-LIST (SEND (or (setq tag-table (SELECT-TAG-TABLE default-p))
			    (return-from tag-table-buffers))
			:GET 'ZMACS-TAG-TABLE-FILE-SYMBOLS))
  (DOLIST (FILE FILE-LIST)
    (LET ((BUFFER (FIND-FILE-BUFFER FILE)))
      (IF BUFFER (PUSH BUFFER BUFFER-LIST))
      (IF READ-IN-ALL-FILES (PUSH (FIND-FILE FILE NIL) BUFFER-LIST))))
  (values (NREVERSE BUFFER-LIST) tag-table))

(defcom com-list-tag-buffers "Display buffers and search point associated with a tag table." ()
  ;;;If there is numeric (or universal) arg, use current tag table.
  ;;;Else, ask to select tag table.
  ;;;Display item-list of buffer names.
  (let ((output *standard-output*)
	buffers current-buffer
	tag-table  tag-table-name)
    (multiple-value (buffers tag-table) (tag-table-buffers nil *numeric-arg-p*))
    (if (null buffers)
	(barf "No buffers."))
    (setq tag-table-name (or (car (rassq tag-table *zmacs-tag-table-alist*))
			     (format nil "~S" tag-table)))
    (setq current-buffer (send tag-table :get 'current-pathname))
    (let ((MAX-SIZE (- (SEND *STANDARD-OUTPUT* :SIZE-IN-CHARACTERS) 5.))
	  (mark-search-char  #/+))
	(FORMAT output "~&Buffers read in for tag table~@[ ~A~]~@[ (current tag table)~]:~2&"
		tag-table-name
		(eq tag-table *zmacs-current-tag-table*))
	(dolist (buffer buffers)
	  (SEND output :ITEM 'zmacs-buffer buffer
		"~2T~c ~A"
		(if (eq buffer current-buffer) mark-search-char #/space)
		(name-for-display buffer max-size))
	  (terpri output))
	(when current-buffer (format output "~2%~2T~c means current search buffer." mark-search-char))
	(terpri output)))
  DIS-NONE)

))

; From modified file DJ: L.ZWEI; ZMACS.LISP#575 at 26-Jun-88 05:22:50
#8R ZWEI#: 
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "ZWEI")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: ZWEI; ZMACS  "

(DEFUN INITIALIZE-ZMACS-COMTABS ()
  (SETQ *ZMACS-CONTROL-X-COMTAB*
	(SET-COMTAB 'ZMACS-CONTROL-X-COMTAB
		    '(#/C-F COM-FIND-FILE
		      #/C-V COM-FIND-ALTERNATE-FILE
		      #/B COM-SELECT-BUFFER
		      #/C-W COM-WRITE-FILE
		      #/C-S COM-SAVE-FILE
		      #/C-Q COM-TOGGLE-READ-ONLY
		      #/C-B COM-LIST-BUFFERS
		      #/K COM-KILL-BUFFER
		      #/A COM-APPEND-TO-BUFFER
		      #/1 COM-ONE-WINDOW
		      #/2 COM-TWO-WINDOWS
		      #/3 COM-VIEW-TWO-WINDOWS
		      #/4 COM-MODIFIED-TWO-WINDOWS
		      #/^ COM-GROW-WINDOW
		      #/O COM-OTHER-WINDOW
		      #/M COM-MAIL
		      #/D COM-R-DIRED
		      #/V COM-VIEW-FILE
		      #/8 COM-TWO-WINDOWS-SHOWING-REGION
		      #/C-M-L COM-SELECT-DEFAULT-PREVIOUS-BUFFER)))
  (SET-COMTAB-INDIRECTION *ZMACS-CONTROL-X-COMTAB* *STANDARD-CONTROL-X-COMTAB*)
  (SETQ *ZMACS-COMTAB*
	(SET-COMTAB 'ZMACS-COMTAB
		    '(#/C-M-V COM-SCROLL-OTHER-WINDOW
		      #/C-SH-P COM-GO-TO-NEXT-POSSIBILITY
		      #/C-SH-W COM-EDIT-NEXT-WARNING
		      #/M-SH-W COM-EDIT-PREVIOUS-WARNING
		      #/M-~ COM-NOT-MODIFIED
		      #/M-/. COM-EDIT-DEFINITION
		      #/C-M-/. COM-EDIT-ZMACS-COMMAND
		      #/C-M-L COM-SELECT-PREVIOUS-BUFFER)
		    (MAKE-COMMAND-ALIST
		     '(COM-REVERT-BUFFER COM-NOT-MODIFIED COM-VISIT-TAG-TABLE
		       COM-LIST-BUFFERS COM-SAVE-ALL-FILES COM-KILL-SOME-BUFFERS
		       COM-KILL-OR-SAVE-BUFFERS COM-EDIT-BUFFERS COM-BUFFER-EDIT
		       com-create-one-buffer-to-go
		       COM-SPLIT-SCREEN COM-LIST-SECTIONS
		       COM-LIST-TAG-TABLES com-list-tag-buffers COM-SELECT-TAG-TABLE com-current-tag-table
		       COM-SET-DEFAULT-FILE-NAME COM-RENAME-BUFFER
		       COM-SET-VISITED-FILE-NAME
		       COM-TAGS-SEARCH COM-TAGS-QUERY-REPLACE COM-NEXT-FILE
		       COM-TAGS-SEARCH-LIST-SECTIONS
		       COM-EDIT-CALLERS COM-LIST-CALLERS
		       COM-LIST-OBJECT-USERS COM-MULTIPLE-LIST-OBJECT-USERS
		       COM-MULTIPLE-EDIT-CALLERS COM-MULTIPLE-LIST-CALLERS
		       COM-EDIT-OBJECT-USERS COM-MULTIPLE-EDIT-OBJECT-USERS
		       COM-LIST-MATCHING-SYMBOLS COM-FUNCTION-APROPOS COM-SECTIONIZE-BUFFER
		       COM-DESCRIBE-FLAVOR
		       COM-LIST-FLAVOR-COMPONENTS COM-EDIT-FLAVOR-COMPONENTS
		       COM-LIST-FLAVOR-DEPENDENTS COM-EDIT-FLAVOR-DEPENDENTS
		       COM-LIST-FLAVOR-DIRECT-DEPENDENTS COM-EDIT-FLAVOR-DIRECT-DEPENDENTS
		       COM-LIST-FLAVOR-METHODS COM-EDIT-FLAVOR-METHODS
		       COM-LIST-METHODS COM-EDIT-METHODS
		       COM-LIST-COMBINED-METHODS COM-EDIT-COMBINED-METHODS
		       COM-FASL-UPDATE COM-EDIT-ZMACS-COMMAND
		       COM-COMPILE-FILE COM-COMPILE-AND-LOAD-FILE
		       COM-REPARSE-ATTRIBUTE-LIST COM-UPDATE-ATTRIBUTE-LIST
		       COM-LIST-FONTS COM-DISPLAY-FONT
		       COM-DIRED COM-BDIRED
		       COM-REAP-FILE COM-CLEAN-DIRECTORY COM-CHANGE-FILE-PROPERTIES
		       COM-EXPUNGE-DIRECTORY COM-CREATE-DIRECTORY COM-CREATE-LINK
		       COM-REMOTE-CONNECT COM-REMOTE-ACCESS
		       COM-MAIL COM-BUG
		       COM-EDIT-WARNINGS COM-EDIT-FILE-WARNINGS COM-EDIT-SYSTEM-WARNINGS
		       COM-INSERT-FILE-WARNINGS COM-INSERT-WARNINGS
		       COM-FIND-SYSTEM-FILES COM-FIND-FILE-NO-SECTIONIZE
		       COM-FIND-FILE-BACKGROUND
		       COM-SELECT-SYSTEM-AS-TAG-TABLE COM-SELECT-ALL-BUFFERS-AS-TAG-TABLE
		       COM-SELECT-SOME-BUFFERS-AS-TAG-TABLE
		       COM-TAGS-MULTIPLE-QUERY-REPLACE
		       COM-TAGS-MULTIPLE-QUERY-REPLACE-FROM-BUFFER COM-WHERE-IS-SYMBOL
		       COM-ZTOP-MODE COM-SELECT-LAST-ZTOP-BUFFER
		       COM-SET-BACKSPACE COM-SET-BASE COM-SET-PACKAGE
		       COM-SET-LOWERCASE COM-SET-NOFILL COM-SET-PATCH-FILE
		       COM-SET-TAB-WIDTH COM-SET-VSP
		       COM-SET-COMMON-LISP COM-SET-READTABLE
		       COM-INDENT-RIGIDLY
		       COM-VIEW-BUFFER COM-INSERT-BUFFER COM-PRINT-MODIFICATIONS
		       COM-COMPILE-CHANGED-SECTIONS COM-COMPILE-BUFFER-CHANGED-SECTIONS
		       COM-EVALUATE-CHANGED-SECTIONS COM-EVALUATE-BUFFER-CHANGED-SECTIONS
		       COM-LIST-CHANGED-SECTIONS COM-EDIT-CHANGED-SECTIONS
		       COM-LIST-BUFFER-CHANGED-SECTIONS COM-EDIT-BUFFER-CHANGED-SECTIONS
		       COM-TAGS-LIST-CHANGED-SECTIONS COM-TAGS-EDIT-CHANGED-SECTIONS
		       COM-TAGS-COMPILE-CHANGED-SECTIONS COM-TAGS-EVALUATE-CHANGED-SECTIONS
		       COM-SOURCE-COMPARE COM-SOURCE-COMPARE-MERGE COM-SOURCE-COMPARE-CHANGES
		       COM-START-PATCH COM-ADD-PATCH COM-FINISH-PATCH COM-CANCEL-PATCH
		       COM-RESUME-PATCH COM-FINISH-PATCH-UNRELEASED COM-RELEASE-PATCH
		       COM-START-PRIVATE-PATCH
		       COM-ADD-PATCH-CHANGED-SECTIONS COM-ADD-PATCH-BUFFER-CHANGED-SECTIONS
		       COM-TEACH-ZMACS
		       ))))
  (SET-COMTAB-INDIRECTION *ZMACS-COMTAB* *STANDARD-COMTAB*)
  (SET-COMTAB *ZMACS-COMTAB*
	      (LIST #/C-X (MAKE-EXTENDED-COMMAND *ZMACS-CONTROL-X-COMTAB*)))
  (SET-COMTAB *ZMACS-COMTAB*
	      (LIST #/MOUSE-3-1
	       (MAKE-MENU-COMMAND '(COM-ARGLIST COM-EDIT-DEFINITION
				    COM-LIST-CALLERS COM-LIST-SECTIONS COM-LIST-BUFFERS
				    COM-KILL-OR-SAVE-BUFFERS COM-SPLIT-SCREEN
				    COM-COMPILE-REGION COM-INDENT-REGION
				    COM-CHANGE-DEFAULT-FONT COM-CHANGE-FONT-REGION
				    COM-UPPERCASE-REGION COM-LOWERCASE-REGION
				    COM-MOUSE-INDENT-RIGIDLY COM-MOUSE-INDENT-UNDER)))))

))
  
; From modified file DJ: L.ZWEI; ZMACS.LISP#575 at 26-Jun-88 05:25:08
#8R ZWEI#: 
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "ZWEI")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: ZWEI; ZMACS  "

(setq *zmacs-comtab* (set-comtab *zmacs-comtab* nil (make-command-alist '(com-list-tag-buffers))))
))
