Steve Youngs <youngs(a)xemacs.org> wrote:
 APPROVE COMMIT
 This makes it possible to build the new 'ibuffer' package.  It's
 probably not the right thing to do (the define-key-after thing), but
 at least the package builds now.
 John, yell at me if this is totally bogus.  I've committed this, hope
 you don't mind. 
Yell!:-)  At least the package builds.  I've redone the menus with
easymenu though.  
diff ibuffer-cvs/ibuffer.el x-ibuffer/ibuffer.el |wc -l
gives 767, or just under 300 lines changed. ibuf-macs.el and
ibuf-ext.el have required less attention.
I think it is best if I get it in a stable state before committing.  
Presently, it mostly works bar fontification.
 Index: xemacs-packages/ibuffer/ChangeLog
 ===================================================================
 RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/ibuffer/ChangeLog,v
 retrieving revision 1.1
 diff -u -w -U0 -r1.1 ChangeLog
 --- xemacs-packages/ibuffer/ChangeLog	2002/02/14 22:25:46	1.1
 +++ xemacs-packages/ibuffer/ChangeLog	2002/02/15 11:02:53
 @@ -2,0 +3,7 @@
 +	* ibuffer.el (ibuffer-mode-map): Comment out all the
 +	'define-key-after' stuff.
 +
 +	* Makefile (REQUIRES): Add xemacs-base.
 +
 +2002-02-15  Steve Youngs  <youngs(a)xemacs.org>
 +
 Index: xemacs-packages/ibuffer/Makefile
 ===================================================================
 RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/ibuffer/Makefile,v
 retrieving revision 1.1
 diff -u -w -r1.1 Makefile
 --- xemacs-packages/ibuffer/Makefile	2002/02/14 22:25:46	1.1
 +++ xemacs-packages/ibuffer/Makefile	2002/02/15 11:03:06
 @@ -22,7 +22,7 @@
  MAINTAINER = John Paul Wallington <jpw(a)shootybangbang.com>
  PACKAGE = ibuffer
  PKG_TYPE = regular
 -REQUIRES = ibuffer dired
 +REQUIRES = ibuffer dired xemacs-base
  CATEGORY = standard
  
  ELCS = ibuf-macs.elc ibuffer.elc ibuf-ext.elc 
 Index: xemacs-packages/ibuffer/ibuffer.el
 ===================================================================
 RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/ibuffer/ibuffer.el,v
 retrieving revision 1.1
 diff -u -w -r1.1 ibuffer.el
 --- xemacs-packages/ibuffer/ibuffer.el	2002/02/14 22:25:47	1.1
 +++ xemacs-packages/ibuffer/ibuffer.el	2002/02/15 11:03:10
 @@ -438,211 +438,212 @@
      (define-key map (kbd "C-x 4 RET") 'ibuffer-visit-buffer-other-window)
      (define-key map (kbd "C-x 5 RET") 'ibuffer-visit-buffer-other-frame)
  
 -    (define-key map [menu-bar view]
 -      (cons "View" (make-sparse-keymap "View")))
 -
 -    (define-key-after map [menu-bar view visit-buffer]
 -      '(menu-item "View this buffer" ibuffer-visit-buffer))
 -    (define-key-after map [menu-bar view visit-buffer-other-window]
 -      '(menu-item "View (other window)"
ibuffer-visit-buffer-other-window))
 -    (define-key-after map [menu-bar view visit-buffer-other-frame]
 -      '(menu-item "View (other frame)" ibuffer-visit-buffer-other-frame))
 -    (define-key-after map [menu-bar view ibuffer-update]
 -      '(menu-item "Update" ibuffer-update
 -		  :help "Regenerate the list of buffers"))
 -    (define-key-after map [menu-bar view switch-format]
 -      '(menu-item "Switch display format" ibuffer-switch-format
 -		  :help "Toggle between available values of `ibuffer-formats'"))
 -
 -    (define-key-after map [menu-bar view dashes]
 -      '("--"))
 -
 -    (define-key-after map [menu-bar view sort]
 -      (cons "Sort" (make-sparse-keymap "Sort")))
 -
 -    (define-key-after map [menu-bar view sort do-sort-by-major-mode]
 -      '(menu-item "Sort by major mode" ibuffer-do-sort-by-major-mode
 -		  :help "Sort by the alphabetic order of the buffer's major mode"))
 -    (define-key-after map [menu-bar view sort do-sort-by-size]
 -      '(menu-item "Sort by buffer size" ibuffer-do-sort-by-size
 -		  :help "Sort by the size of the buffer"))
 -    (define-key-after map [menu-bar view sort do-sort-by-alphabetic]
 -      '(menu-item "Sort lexicographically" ibuffer-do-sort-by-alphabetic
 -		  :help "Sort by the alphabetic order of buffer name"))
 -    (define-key-after map [menu-bar view sort do-sort-by-recency]
 -      '(menu-item "Sort by view time" ibuffer-do-sort-by-recency
 -		  :help "Sort by the last time the buffer was displayed"))
 -    (define-key-after map [menu-bar view sort invert-sorting]
 -      '(menu-item "Reverse sorting order" ibuffer-invert-sorting))
 -    (define-key-after map [menu-bar view sort toggle-sorting-mode]
 -      '(menu-item "Switch sorting mode" ibuffer-toggle-sorting-mode
 -		  :help "Switch between the various sorting criteria"))
 -
 -    (define-key-after map [menu-bar view filter]
 -      (cons "Filter" (make-sparse-keymap "Filter")))
 -
 -    (define-key-after map [menu-bar view filter filter-disable]
 -      '(menu-item "Disable all filtering" ibuffer-filter-disable))
 -    (define-key-after map [menu-bar view filter filter-by-mode]
 -      '(menu-item "Add filter by major mode..." ibuffer-filter-by-mode
 -		  :help "Show only buffers in a major mode"))
 -    (define-key-after map [menu-bar view filter filter-by-name]
 -      '(menu-item "Add filter by buffer name..." ibuffer-filter-by-name
 -		  :help "Show only buffers whose name matches a regexp"))
 -    (define-key-after map [menu-bar view filter filter-by-filename]
 -      '(menu-item "Add filter by filename..." ibuffer-filter-by-filename
 -		  :help "Show only buffers whose filename matches a regexp"))
 -    (define-key-after map [menu-bar view filter filter-by-size-lt]
 -      '(menu-item "Add filter by size less than..."
ibuffer-filter-by-size-lt
 -		  :help "Show only buffers of size less than..."))
 -    (define-key-after map [menu-bar view filter filter-by-size-gt]
 -      '(menu-item "Add filter by size greater than..."
ibuffer-filter-by-size-gt
 -		  :help "Show only buffers of size greater than..."))
 -    (define-key-after map [menu-bar view filter filter-by-content]
 -      '(menu-item "Add filter by content (regexp)..."
ibuffer-filter-by-content
 -		  :help "Show only buffers containing a regexp"))
 -    (define-key-after map [menu-bar view filter filter-by-predicate]
 -      '(menu-item "Add filter by Lisp predicate..."
ibuffer-filter-by-predicate
 -		  :help "Show only buffers for which a predicate is true"))
 -    (define-key-after map [menu-bar view filter pop-filter]
 -      '(menu-item "Remove top filter" ibuffer-pop-filter))
 -    (define-key-after map [menu-bar view filter or-filter]
 -      '(menu-item "OR top two filters" ibuffer-or-filter
 -		  :help "Create a new filter which is the logical OR of the top two
filters"))
 -    (define-key-after map [menu-bar view filter negate-filter]
 -      '(menu-item "Negate top filter" ibuffer-negate-filter))
 -    (define-key-after map [menu-bar view filter decompose-filter]
 -      '(menu-item "Decompose top filter" ibuffer-decompose-filter
 -		  :help "Break down a complex filter like OR or NOT"))
 -    (define-key-after map [menu-bar view filter exchange-filters]
 -      '(menu-item "Swap top two filters" ibuffer-exchange-filters))
 -    (define-key-after map [menu-bar view filter save-filters]
 -      '(menu-item "Save current filters permanently..."
ibuffer-save-filters
 -		  :help "Use a mnemnonic name to store current filter stack"))
 -    (define-key-after map [menu-bar view filter switch-to-saved-filters]
 -      '(menu-item "Restore permanently saved filters..."
ibuffer-switch-to-saved-filters
 -		  :help "Replace current filters with a saved stack"))
 -    (define-key-after map [menu-bar view filter add-saved-filters]
 -      '(menu-item "Add to permanently saved filters..."
ibuffer-add-saved-filters
 -		  :help "Include current filters in an already saved stack"))
 -    (define-key-after map [menu-bar view filter delete-saved-filters]
 -      '(menu-item "Delete permanently saved filters..."
ibuffer-delete-saved-filters
 -		  :help "Remove stack of filters from saved list"))
 -    (define-key-after map [menu-bar view dashes2]
 -      '("--"))
 -    (define-key-after map [menu-bar view diff-with-file]
 -      '(menu-item "Diff with file" ibuffer-diff-with-file
 -		  :help "View the differences between this buffer and its file"))
 -    (define-key-after map [menu-bar view auto-mode]
 -      '(menu-item "Toggle Auto Mode" ibuffer-auto-mode
 -		  :help "Attempt to automatically update the Ibuffer buffer"))
 -    (define-key-after map [menu-bar view customize]
 -      '(menu-item "Customize Ibuffer" (lambda () (interactive)
 -					(customize-group 'ibuffer))
 -		  :help "Use Custom to customize Ibuffer"))
 -
 -    (define-key-after map [menu-bar mark]
 -      (cons "Mark" (make-sparse-keymap "Mark")))
 -
 -    (define-key-after map [menu-bar mark toggle-marks]
 -      '(menu-item "Toggle marks" ibuffer-toggle-marks
 -		  :help "Unmark marked buffers, and mark unmarked buffers"))
 -    (define-key-after map [menu-bar mark mark-forward]
 -      '(menu-item "Mark" ibuffer-mark-forward
 -		  :help "Mark the buffer at point"))
 -    (define-key-after map [menu-bar mark unmark-forward]
 -      '(menu-item "Unmark" ibuffer-unmark-forward
 -		  :help "Unmark the buffer at point"))
 -    (define-key-after map [menu-bar mark mark-by-mode]
 -      '(menu-item "Mark by mode..." ibuffer-mark-by-mode
 -		  :help "Mark all buffers in a particular major mode"))
 -    (define-key-after map [menu-bar mark mark-modified-buffers]
 -      '(menu-item "Mark modified buffers" ibuffer-mark-modified-buffers
 -		  :help "Mark all buffers which have been modified"))
 -    (define-key-after map [menu-bar mark mark-unsaved-buffers]
 -      '(menu-item "Mark unsaved buffers" ibuffer-mark-unsaved-buffers
 -		  :help "Mark all buffers which have a file and are modified"))
 -    (define-key-after map [menu-bar mark mark-read-only-buffers]
 -      '(menu-item "Mark read-only buffers" ibuffer-mark-read-only-buffers
 -		  :help "Mark all buffers which are read-only"))
 -    (define-key-after map [menu-bar mark mark-special-buffers]
 -      '(menu-item "Mark special buffers" ibuffer-mark-special-buffers
 -		  :help "Mark all buffers whose name begins with a *"))
 -    (define-key-after map [menu-bar mark mark-dired-buffers]
 -      '(menu-item "Mark dired buffers" ibuffer-mark-dired-buffers
 -		  :help "Mark buffers in dired-mode"))
 -    (define-key-after map [menu-bar mark mark-dissociated-buffers]
 -      '(menu-item "Mark dissociated buffers"
ibuffer-mark-dissociated-buffers
 -		  :help "Mark buffers with a non-existent associated file"))
 -    (define-key-after map [menu-bar mark mark-help-buffers]
 -      '(menu-item "Mark help buffers" ibuffer-mark-help-buffers
 -		  :help "Mark buffers in help-mode"))
 -    (define-key-after map [menu-bar mark mark-old-buffers]
 -      '(menu-item "Mark old buffers" ibuffer-mark-old-buffers
 -		  :help "Mark buffers which have not been viewed recently"))
 -    (define-key-after map [menu-bar mark unmark-all]
 -      '(menu-item "Unmark All" ibuffer-unmark-all))
 -    
 -    (define-key-after map [menu-bar mark dashes]
 -      '("--"))
 -      
 -    (define-key-after map [menu-bar mark mark-by-name-regexp]
 -      '(menu-item "Mark by buffer name (regexp)..."
ibuffer-mark-by-name-regexp
 -		  :help "Mark buffers whose name matches a regexp"))
 -    (define-key-after map [menu-bar mark mark-by-mode-regexp]
 -      '(menu-item "Mark by major mode (regexp)..."
ibuffer-mark-by-mode-regexp
 -		  :help "Mark buffers whose major mode name matches a regexp"))
 -    (define-key-after map [menu-bar mark mark-by-file-name-regexp]
 -      '(menu-item "Mark by file name (regexp)..."
ibuffer-mark-by-file-name-regexp
 -		  :help "Mark buffers whose file name matches a regexp"))
 -
 -    ;; Operate map is added later
 -
 -    (define-key-after operate-map [do-view]
 -      '(menu-item "View" ibuffer-do-view))
 -    (define-key-after operate-map [do-view-other-frame]
 -      '(menu-item "View (separate frame)" ibuffer-do-view-other-frame))
 -    (define-key-after operate-map [do-save]
 -      '(menu-item "Save" ibuffer-do-save))
 -    (define-key-after operate-map [do-replace-regexp]
 -      '(menu-item "Replace (regexp)..." ibuffer-do-replace-regexp
 -		  :help "Replace text inside marked buffers"))
 -    (define-key-after operate-map [do-query-replace]
 -      '(menu-item "Query Replace..." ibuffer-do-query-replace
 -		  :help "Replace text in marked buffers, asking each time"))
 -    (define-key-after operate-map [do-query-replace-regexp]
 -      '(menu-item "Query Replace (regexp)..."
ibuffer-do-query-replace-regexp
 -		  :help "Replace text in marked buffers by regexp, asking each time"))
 -    (define-key-after operate-map [do-print]
 -      '(menu-item "Print" ibuffer-do-print))
 -    (define-key-after operate-map [do-toggle-modified]
 -      '(menu-item "Toggle modification flag" ibuffer-do-toggle-modified))
 -    (define-key-after operate-map [do-revert]
 -      '(menu-item "Revert" ibuffer-do-revert
 -		  :help "Revert marked buffers to their associated file"))
 -    (define-key-after operate-map [do-rename-uniquely]
 -      '(menu-item "Rename Uniquely" ibuffer-do-rename-uniquely
 -		  :help "Rename marked buffers to a new, unique name"))
 -    (define-key-after operate-map [do-delete]
 -      '(menu-item "Kill" ibuffer-do-delete))
 -    (define-key-after operate-map [do-occur]
 -      '(menu-item "List lines matching..." ibuffer-do-occur
 -		  :help "View all lines in marked buffers matching a regexp"))
 -    (define-key-after operate-map [do-shell-command-pipe]
 -      '(menu-item "Pipe to shell command..."
ibuffer-do-shell-command-pipe
 -		  :help "For each marked buffer, send its contents to a shell command"))
 -    (define-key-after operate-map [do-shell-command-pipe-replace]
 -      '(menu-item "Pipe to shell command (replace)..."
ibuffer-do-shell-command-pipe-replace
 -		  :help "For each marked buffer, replace its contents with output of shell
command"))
 -    (define-key-after operate-map [do-shell-command-file]
 -      '(menu-item "Shell command on buffer's file..."
ibuffer-do-shell-command-file
 -		  :help "For each marked buffer, run a shell command with its file as
argument"))
 -    (define-key-after operate-map [do-eval]
 -      '(menu-item "Eval..." ibuffer-do-eval
 -		  :help "Evaluate a Lisp form in each marked buffer"))
 -    (define-key-after operate-map [do-view-and-eval]
 -      '(menu-item "Eval (viewing buffer)..." ibuffer-do-view-and-eval
 -		  :help "Evaluate a Lisp form in each marked buffer while viewing it"))
 +;; XEmacs change: XEmacs doesn't have 'define-key-after'
 +;;     (define-key map [menu-bar view]
 +;;       (cons "View" (make-sparse-keymap "View")))
 +
 +;;     (define-key-after map [menu-bar view visit-buffer]
 +;;       '(menu-item "View this buffer" ibuffer-visit-buffer))
 +;;     (define-key-after map [menu-bar view visit-buffer-other-window]
 +;;       '(menu-item "View (other window)"
ibuffer-visit-buffer-other-window))
 +;;     (define-key-after map [menu-bar view visit-buffer-other-frame]
 +;;       '(menu-item "View (other frame)"
ibuffer-visit-buffer-other-frame))
 +;;     (define-key-after map [menu-bar view ibuffer-update]
 +;;       '(menu-item "Update" ibuffer-update
 +;; 		  :help "Regenerate the list of buffers"))
 +;;     (define-key-after map [menu-bar view switch-format]
 +;;       '(menu-item "Switch display format" ibuffer-switch-format
 +;; 		  :help "Toggle between available values of `ibuffer-formats'"))
 +
 +;;     (define-key-after map [menu-bar view dashes]
 +;;       '("--"))
 +
 +;;     (define-key-after map [menu-bar view sort]
 +;;       (cons "Sort" (make-sparse-keymap "Sort")))
 +
 +;;     (define-key-after map [menu-bar view sort do-sort-by-major-mode]
 +;;       '(menu-item "Sort by major mode" ibuffer-do-sort-by-major-mode
 +;; 		  :help "Sort by the alphabetic order of the buffer's major mode"))
 +;;     (define-key-after map [menu-bar view sort do-sort-by-size]
 +;;       '(menu-item "Sort by buffer size" ibuffer-do-sort-by-size
 +;; 		  :help "Sort by the size of the buffer"))
 +;;     (define-key-after map [menu-bar view sort do-sort-by-alphabetic]
 +;;       '(menu-item "Sort lexicographically"
ibuffer-do-sort-by-alphabetic
 +;; 		  :help "Sort by the alphabetic order of buffer name"))
 +;;     (define-key-after map [menu-bar view sort do-sort-by-recency]
 +;;       '(menu-item "Sort by view time" ibuffer-do-sort-by-recency
 +;; 		  :help "Sort by the last time the buffer was displayed"))
 +;;     (define-key-after map [menu-bar view sort invert-sorting]
 +;;       '(menu-item "Reverse sorting order" ibuffer-invert-sorting))
 +;;     (define-key-after map [menu-bar view sort toggle-sorting-mode]
 +;;       '(menu-item "Switch sorting mode" ibuffer-toggle-sorting-mode
 +;; 		  :help "Switch between the various sorting criteria"))
 +
 +;;     (define-key-after map [menu-bar view filter]
 +;;       (cons "Filter" (make-sparse-keymap "Filter")))
 +
 +;;     (define-key-after map [menu-bar view filter filter-disable]
 +;;       '(menu-item "Disable all filtering" ibuffer-filter-disable))
 +;;     (define-key-after map [menu-bar view filter filter-by-mode]
 +;;       '(menu-item "Add filter by major mode..." ibuffer-filter-by-mode
 +;; 		  :help "Show only buffers in a major mode"))
 +;;     (define-key-after map [menu-bar view filter filter-by-name]
 +;;       '(menu-item "Add filter by buffer name..."
ibuffer-filter-by-name
 +;; 		  :help "Show only buffers whose name matches a regexp"))
 +;;     (define-key-after map [menu-bar view filter filter-by-filename]
 +;;       '(menu-item "Add filter by filename..."
ibuffer-filter-by-filename
 +;; 		  :help "Show only buffers whose filename matches a regexp"))
 +;;     (define-key-after map [menu-bar view filter filter-by-size-lt]
 +;;       '(menu-item "Add filter by size less than..."
ibuffer-filter-by-size-lt
 +;; 		  :help "Show only buffers of size less than..."))
 +;;     (define-key-after map [menu-bar view filter filter-by-size-gt]
 +;;       '(menu-item "Add filter by size greater than..."
ibuffer-filter-by-size-gt
 +;; 		  :help "Show only buffers of size greater than..."))
 +;;     (define-key-after map [menu-bar view filter filter-by-content]
 +;;       '(menu-item "Add filter by content (regexp)..."
ibuffer-filter-by-content
 +;; 		  :help "Show only buffers containing a regexp"))
 +;;     (define-key-after map [menu-bar view filter filter-by-predicate]
 +;;       '(menu-item "Add filter by Lisp predicate..."
ibuffer-filter-by-predicate
 +;; 		  :help "Show only buffers for which a predicate is true"))
 +;;     (define-key-after map [menu-bar view filter pop-filter]
 +;;       '(menu-item "Remove top filter" ibuffer-pop-filter))
 +;;     (define-key-after map [menu-bar view filter or-filter]
 +;;       '(menu-item "OR top two filters" ibuffer-or-filter
 +;; 		  :help "Create a new filter which is the logical OR of the top two
filters"))
 +;;     (define-key-after map [menu-bar view filter negate-filter]
 +;;       '(menu-item "Negate top filter" ibuffer-negate-filter))
 +;;     (define-key-after map [menu-bar view filter decompose-filter]
 +;;       '(menu-item "Decompose top filter" ibuffer-decompose-filter
 +;; 		  :help "Break down a complex filter like OR or NOT"))
 +;;     (define-key-after map [menu-bar view filter exchange-filters]
 +;;       '(menu-item "Swap top two filters" ibuffer-exchange-filters))
 +;;     (define-key-after map [menu-bar view filter save-filters]
 +;;       '(menu-item "Save current filters permanently..."
ibuffer-save-filters
 +;; 		  :help "Use a mnemnonic name to store current filter stack"))
 +;;     (define-key-after map [menu-bar view filter switch-to-saved-filters]
 +;;       '(menu-item "Restore permanently saved filters..."
ibuffer-switch-to-saved-filters
 +;; 		  :help "Replace current filters with a saved stack"))
 +;;     (define-key-after map [menu-bar view filter add-saved-filters]
 +;;       '(menu-item "Add to permanently saved filters..."
ibuffer-add-saved-filters
 +;; 		  :help "Include current filters in an already saved stack"))
 +;;     (define-key-after map [menu-bar view filter delete-saved-filters]
 +;;       '(menu-item "Delete permanently saved filters..."
ibuffer-delete-saved-filters
 +;; 		  :help "Remove stack of filters from saved list"))
 +;;     (define-key-after map [menu-bar view dashes2]
 +;;       '("--"))
 +;;     (define-key-after map [menu-bar view diff-with-file]
 +;;       '(menu-item "Diff with file" ibuffer-diff-with-file
 +;; 		  :help "View the differences between this buffer and its file"))
 +;;     (define-key-after map [menu-bar view auto-mode]
 +;;       '(menu-item "Toggle Auto Mode" ibuffer-auto-mode
 +;; 		  :help "Attempt to automatically update the Ibuffer buffer"))
 +;;     (define-key-after map [menu-bar view customize]
 +;;       '(menu-item "Customize Ibuffer" (lambda () (interactive)
 +;; 					(customize-group 'ibuffer))
 +;; 		  :help "Use Custom to customize Ibuffer"))
 +
 +;;     (define-key-after map [menu-bar mark]
 +;;       (cons "Mark" (make-sparse-keymap "Mark")))
 +
 +;;     (define-key-after map [menu-bar mark toggle-marks]
 +;;       '(menu-item "Toggle marks" ibuffer-toggle-marks
 +;; 		  :help "Unmark marked buffers, and mark unmarked buffers"))
 +;;     (define-key-after map [menu-bar mark mark-forward]
 +;;       '(menu-item "Mark" ibuffer-mark-forward
 +;; 		  :help "Mark the buffer at point"))
 +;;     (define-key-after map [menu-bar mark unmark-forward]
 +;;       '(menu-item "Unmark" ibuffer-unmark-forward
 +;; 		  :help "Unmark the buffer at point"))
 +;;     (define-key-after map [menu-bar mark mark-by-mode]
 +;;       '(menu-item "Mark by mode..." ibuffer-mark-by-mode
 +;; 		  :help "Mark all buffers in a particular major mode"))
 +;;     (define-key-after map [menu-bar mark mark-modified-buffers]
 +;;       '(menu-item "Mark modified buffers"
ibuffer-mark-modified-buffers
 +;; 		  :help "Mark all buffers which have been modified"))
 +;;     (define-key-after map [menu-bar mark mark-unsaved-buffers]
 +;;       '(menu-item "Mark unsaved buffers" ibuffer-mark-unsaved-buffers
 +;; 		  :help "Mark all buffers which have a file and are modified"))
 +;;     (define-key-after map [menu-bar mark mark-read-only-buffers]
 +;;       '(menu-item "Mark read-only buffers"
ibuffer-mark-read-only-buffers
 +;; 		  :help "Mark all buffers which are read-only"))
 +;;     (define-key-after map [menu-bar mark mark-special-buffers]
 +;;       '(menu-item "Mark special buffers" ibuffer-mark-special-buffers
 +;; 		  :help "Mark all buffers whose name begins with a *"))
 +;;     (define-key-after map [menu-bar mark mark-dired-buffers]
 +;;       '(menu-item "Mark dired buffers" ibuffer-mark-dired-buffers
 +;; 		  :help "Mark buffers in dired-mode"))
 +;;     (define-key-after map [menu-bar mark mark-dissociated-buffers]
 +;;       '(menu-item "Mark dissociated buffers"
ibuffer-mark-dissociated-buffers
 +;; 		  :help "Mark buffers with a non-existent associated file"))
 +;;     (define-key-after map [menu-bar mark mark-help-buffers]
 +;;       '(menu-item "Mark help buffers" ibuffer-mark-help-buffers
 +;; 		  :help "Mark buffers in help-mode"))
 +;;     (define-key-after map [menu-bar mark mark-old-buffers]
 +;;       '(menu-item "Mark old buffers" ibuffer-mark-old-buffers
 +;; 		  :help "Mark buffers which have not been viewed recently"))
 +;;     (define-key-after map [menu-bar mark unmark-all]
 +;;       '(menu-item "Unmark All" ibuffer-unmark-all))
 +    
 +;;     (define-key-after map [menu-bar mark dashes]
 +;;       '("--"))
 +      
 +;;     (define-key-after map [menu-bar mark mark-by-name-regexp]
 +;;       '(menu-item "Mark by buffer name (regexp)..."
ibuffer-mark-by-name-regexp
 +;; 		  :help "Mark buffers whose name matches a regexp"))
 +;;     (define-key-after map [menu-bar mark mark-by-mode-regexp]
 +;;       '(menu-item "Mark by major mode (regexp)..."
ibuffer-mark-by-mode-regexp
 +;; 		  :help "Mark buffers whose major mode name matches a regexp"))
 +;;     (define-key-after map [menu-bar mark mark-by-file-name-regexp]
 +;;       '(menu-item "Mark by file name (regexp)..."
ibuffer-mark-by-file-name-regexp
 +;; 		  :help "Mark buffers whose file name matches a regexp"))
 +
 +;;     ;; Operate map is added later
 +
 +;;     (define-key-after operate-map [do-view]
 +;;       '(menu-item "View" ibuffer-do-view))
 +;;     (define-key-after operate-map [do-view-other-frame]
 +;;       '(menu-item "View (separate frame)"
ibuffer-do-view-other-frame))
 +;;     (define-key-after operate-map [do-save]
 +;;       '(menu-item "Save" ibuffer-do-save))
 +;;     (define-key-after operate-map [do-replace-regexp]
 +;;       '(menu-item "Replace (regexp)..." ibuffer-do-replace-regexp
 +;; 		  :help "Replace text inside marked buffers"))
 +;;     (define-key-after operate-map [do-query-replace]
 +;;       '(menu-item "Query Replace..." ibuffer-do-query-replace
 +;; 		  :help "Replace text in marked buffers, asking each time"))
 +;;     (define-key-after operate-map [do-query-replace-regexp]
 +;;       '(menu-item "Query Replace (regexp)..."
ibuffer-do-query-replace-regexp
 +;; 		  :help "Replace text in marked buffers by regexp, asking each time"))
 +;;     (define-key-after operate-map [do-print]
 +;;       '(menu-item "Print" ibuffer-do-print))
 +;;     (define-key-after operate-map [do-toggle-modified]
 +;;       '(menu-item "Toggle modification flag"
ibuffer-do-toggle-modified))
 +;;     (define-key-after operate-map [do-revert]
 +;;       '(menu-item "Revert" ibuffer-do-revert
 +;; 		  :help "Revert marked buffers to their associated file"))
 +;;     (define-key-after operate-map [do-rename-uniquely]
 +;;       '(menu-item "Rename Uniquely" ibuffer-do-rename-uniquely
 +;; 		  :help "Rename marked buffers to a new, unique name"))
 +;;     (define-key-after operate-map [do-delete]
 +;;       '(menu-item "Kill" ibuffer-do-delete))
 +;;     (define-key-after operate-map [do-occur]
 +;;       '(menu-item "List lines matching..." ibuffer-do-occur
 +;; 		  :help "View all lines in marked buffers matching a regexp"))
 +;;     (define-key-after operate-map [do-shell-command-pipe]
 +;;       '(menu-item "Pipe to shell command..."
ibuffer-do-shell-command-pipe
 +;; 		  :help "For each marked buffer, send its contents to a shell command"))
 +;;     (define-key-after operate-map [do-shell-command-pipe-replace]
 +;;       '(menu-item "Pipe to shell command (replace)..."
ibuffer-do-shell-command-pipe-replace
 +;; 		  :help "For each marked buffer, replace its contents with output of shell
command"))
 +;;     (define-key-after operate-map [do-shell-command-file]
 +;;       '(menu-item "Shell command on buffer's file..."
ibuffer-do-shell-command-file
 +;; 		  :help "For each marked buffer, run a shell command with its file as
argument"))
 +;;     (define-key-after operate-map [do-eval]
 +;;       '(menu-item "Eval..." ibuffer-do-eval
 +;; 		  :help "Evaluate a Lisp form in each marked buffer"))
 +;;     (define-key-after operate-map [do-view-and-eval]
 +;;       '(menu-item "Eval (viewing buffer)..." ibuffer-do-view-and-eval
 +;; 		  :help "Evaluate a Lisp form in each marked buffer while viewing it"))
      
      (setq ibuffer-mode-map map
  	  ibuffer-mode-operate-map operate-map))) 
-- 
John Paul Wallington