Mercurial > emacs
changeset 49410:798119a6859c
* ibuffer.el (ibuffer-window-list): Remove.
(ibuffer-confirm-operation-on): Use `window-list' instead.
(ibuffer-load-hook): New customizable variable.
(toplevel): Run it.
(ibuffer-customize): New command.
(ibuffer-mode-map): Bind it.
(ibuffer-mode-map): Add menu seperator in View>Sort menu.
(ibuffer-mode): Tidy.
(ibuffer-fontification-alist, ibuffer-always-show-last-buffer)
(ibuffer-default-directory, ibuffer-default-sorting-mode)
(ibuffer-maybe-show-predicates, ibuffer-hook, ibuffer-mode-hook)
(ibuffer-map-lines): Doc fixes.
Update mail address.
* ibuf-ext.el (ibuffer-copy-filename-as-kill): C-u means relative
filenames. Use `kill-new'.
Update mail address.
* ibuf-macs.el
Update mail address.
author | John Paul Wallington <jpw@pobox.com> |
---|---|
date | Fri, 24 Jan 2003 04:53:31 +0000 |
parents | 2f429f327ba1 |
children | bf2edead9a8f |
files | lisp/ibuf-ext.el lisp/ibuf-macs.el lisp/ibuffer.el |
diffstat | 3 files changed, 174 insertions(+), 165 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ibuf-ext.el Fri Jan 24 02:31:24 2003 +0000 +++ b/lisp/ibuf-ext.el Fri Jan 24 04:53:31 2003 +0000 @@ -1,9 +1,9 @@ -;;; ibuf-ext.el --- extensions for ibuffer +;;; ibuf-ext.el --- extensions for ibuffer ;; Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. ;; Author: Colin Walters <walters@verbum.org> -;; Maintainer: John Paul Wallington <jpw@shootybangbang.com> +;; Maintainer: John Paul Wallington <jpw@gnu.org> ;; Created: 2 Dec 2001 ;; Keywords: buffer, convenience @@ -62,7 +62,7 @@ (let ((hip-crowd nil) (lamers nil)) (dolist (ibuffer-split-list-elt ibuffer-split-list-elts) - (if (funcall ibuffer-split-list-fn ibuffer-split-list-elt) + (if (funcall ibuffer-split-list-fn ibuffer-split-list-elt) (push ibuffer-split-list-elt hip-crowd) (push ibuffer-split-list-elt lamers))) ;; Too bad Emacs Lisp doesn't have multiple values. @@ -103,13 +103,13 @@ ((or (mode . message-mode) (mode . mail-mode) (mode . gnus-group-mode) - (mode . gnus-summary-mode) + (mode . gnus-summary-mode) (mode . gnus-article-mode)))) ("programming" ((or (mode . emacs-lisp-mode) (mode . cperl-mode) (mode . c-mode) - (mode . java-mode) + (mode . java-mode) (mode . idl-mode) (mode . lisp-mode))))) @@ -156,7 +156,7 @@ :group 'ibuffer) (defvar ibuffer-cached-filter-formats nil) -(defvar ibuffer-compiled-filter-formats nil) +(defvar ibuffer-compiled-filter-formats nil) (defvar ibuffer-filter-groups nil "A list like ((\"NAME\" ((SYMBOL . QUALIFIER) ...) ...) which groups buffers. @@ -216,7 +216,7 @@ (not (ibuffer-buf-matches-predicates buf ibuffer-maybe-show-predicates))) (or ibuffer-view-ibuffer - (and ibuffer-buf + (and ibuffer-buf (not (eq ibuffer-buf buf)))) (or (ibuffer-included-in-filters-p buf ibuffer-filtering-qualifiers) @@ -268,7 +268,7 @@ (if (assq 'mode ibuffer-filtering-qualifiers) (setq ibuffer-filtering-qualifiers (ibuffer-delete-alist 'mode ibuffer-filtering-qualifiers)) - (ibuffer-push-filter (cons 'mode + (ibuffer-push-filter (cons 'mode (with-current-buffer buf major-mode))))) (ibuffer-update nil t)) @@ -284,10 +284,10 @@ ;;;###autoload (defun ibuffer-toggle-filter-group () "Toggle the display status of the filter group on this line." - (interactive) + (interactive) (ibuffer-toggle-filter-group-1 (point))) -(defun ibuffer-toggle-filter-group-1 (posn) +(defun ibuffer-toggle-filter-group-1 (posn) (let ((name (get-text-property posn 'ibuffer-filter-group-name))) (unless (stringp name) (error "No filtering group name present")) @@ -700,7 +700,7 @@ (ibuffer-update nil t)) ;;;###autoload -(defun ibuffer-save-filter-groups (name groups) +(defun ibuffer-save-filter-groups (name groups) "Save all active filter groups GROUPS as NAME. They are added to `ibuffer-saved-filter-groups'. Interactively, prompt for NAME, and use the current filters." @@ -776,7 +776,7 @@ turned into two separate filters [name: foo] and [mode: bar-mode]." (interactive) (when (null ibuffer-filtering-qualifiers) - (error "No filters in effect")) + (error "No filters in effect")) (let ((lim (pop ibuffer-filtering-qualifiers))) (case (car lim) (or @@ -949,22 +949,22 @@ (modes) (this-mode)) (while bufs - (setq this-mode - (with-current-buffer + (setq this-mode + (with-current-buffer (car bufs) major-mode) bufs (cdr bufs)) - (add-to-list + (add-to-list 'modes - `(,(symbol-name this-mode) . + `(,(symbol-name this-mode) . ,this-mode))) - modes)) + modes)) ;;; Extra operation definitions ;;;###autoload (autoload 'ibuffer-filter-by-mode "ibuf-ext.el") -(define-ibuffer-filter mode +(define-ibuffer-filter mode "Toggle current view to buffers with major mode QUALIFIER." (:description "major mode" :reader @@ -982,14 +982,14 @@ (eq qualifier (with-current-buffer buf major-mode))) ;;;###autoload (autoload 'ibuffer-filter-by-used-mode "ibuf-ext.el") -(define-ibuffer-filter used-mode +(define-ibuffer-filter used-mode "Toggle current view to buffers with major mode QUALIFIER. Called interactively, this function allows selection of modes currently used by buffers." (:description "major mode in use" :reader - (intern - (completing-read "Filter by major mode: " + (intern + (completing-read "Filter by major mode: " (ibuffer-list-buffer-modes) nil t @@ -1001,7 +1001,7 @@ (eq qualifier (with-current-buffer buf major-mode))) ;;;###autoload (autoload 'ibuffer-filter-by-name "ibuf-ext.el") -(define-ibuffer-filter name +(define-ibuffer-filter name "Toggle current view to buffers with name matching QUALIFIER." (:description "buffer name" :reader (read-from-minibuffer "Filter by name (regexp): ")) @@ -1016,7 +1016,7 @@ (string-match qualifier it))) ;;;###autoload (autoload 'ibuffer-filter-by-size-gt "ibuf-ext.el") -(define-ibuffer-filter size-gt +(define-ibuffer-filter size-gt "Toggle current view to buffers with size greater than QUALIFIER." (:description "size greater than" :reader @@ -1025,7 +1025,7 @@ qualifier)) ;;;###autoload (autoload 'ibuffer-filter-by-size-lt "ibuf-ext.el") -(define-ibuffer-filter size-lt +(define-ibuffer-filter size-lt "Toggle current view to buffers with size less than QUALIFIER." (:description "size less than" :reader @@ -1248,24 +1248,24 @@ ;;;###autoload (defun ibuffer-copy-filename-as-kill (&optional arg) "Copy filenames of marked buffers into the kill ring. + The names are separated by a space. If a buffer has no filename, it is ignored. -With a zero prefix arg, use the complete pathname of each marked file. - -You can then feed the file name(s) to other commands with C-y. - [ This docstring shamelessly stolen from the - `dired-copy-filename-as-kill' in \"dired-x\". ]" - ;; Add to docstring later: - ;; With C-u, use the relative pathname of each marked file. - (interactive "P") - (if (= (ibuffer-count-marked-lines) 0) +With no prefix arg, use the filename sans its directory of each marked file. +With a zero prefix arg, use the complete filename of each marked file. +With \\[universal-argument], use the filename of each marked file relative +to `ibuffer-default-directory' iff non-nil, otherwise `default-directory'. + +You can then feed the file name(s) to other commands with \\[yank]." + (interactive "p") + (if (zerop (ibuffer-count-marked-lines)) (message "No buffers marked; use 'm' to mark a buffer") (let ((ibuffer-copy-filename-as-kill-result "") - (type (cond ((eql arg 0) + (type (cond ((zerop arg) 'full) - ;; ((eql arg 4) - ;; 'relative) + ((= arg 4) + 'relative) (t 'name)))) (ibuffer-map-marked-lines @@ -1277,11 +1277,15 @@ (case type (full name) + (relative + (file-relative-name + name (or ibuffer-default-directory + default-directory))) (t (file-name-nondirectory name))) "")) " ")))) - (push ibuffer-copy-filename-as-kill-result kill-ring)))) + (kill-new ibuffer-copy-filename-as-kill-result)))) (defun ibuffer-mark-on-buffer (func &optional ibuffer-mark-on-buffer-mark group) (let ((count
--- a/lisp/ibuf-macs.el Fri Jan 24 02:31:24 2003 +0000 +++ b/lisp/ibuf-macs.el Fri Jan 24 04:53:31 2003 +0000 @@ -3,7 +3,7 @@ ;; Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. ;; Author: Colin Walters <walters@verbum.org> -;; Maintainer: John Paul Wallington <jpw@shootybangbang.com> +;; Maintainer: John Paul Wallington <jpw@gnu.org> ;; Created: 6 Dec 2001 ;; Keywords: buffer, convenience
--- a/lisp/ibuffer.el Fri Jan 24 02:31:24 2003 +0000 +++ b/lisp/ibuffer.el Fri Jan 24 04:53:31 2003 +0000 @@ -3,7 +3,7 @@ ;; Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. ;; Author: Colin Walters <walters@verbum.org> -;; Maintainer: John Paul Wallington <jpw@shootybangbang.com> +;; Maintainer: John Paul Wallington <jpw@gnu.org> ;; Created: 8 Sep 2000 ;; Keywords: buffer, convenience @@ -39,16 +39,6 @@ (require 'font-lock) -;;; Compatibility -(eval-and-compile - (if (fboundp 'window-list) - (defun ibuffer-window-list () - (window-list nil 'nomini)) - (defun ibuffer-window-list () - (let ((ibuffer-window-list-result nil)) - (walk-windows #'(lambda (win) (push win ibuffer-window-list-result)) 'nomini) - (nreverse ibuffer-window-list-result))))) - (defgroup ibuffer nil "An advanced replacement for `buffer-menu'. @@ -148,7 +138,7 @@ evaluates to non-nil, then FACE will be put on the buffer name. The element with the highest PRIORITY takes precedence. -If you change this variable, you must kill the ibuffer buffer and +If you change this variable, you must kill the Ibuffer buffer and recreate it for the change to take effect." :type '(repeat (list (integer :tag "Priority") @@ -180,8 +170,8 @@ (defcustom ibuffer-default-sorting-mode 'recency "The criteria by which to sort the buffers. -Note that this variable is local to each ibuffer buffer. Thus, you -can have multiple ibuffer buffers open, each with a different sorted +Note that this variable is local to each Ibuffer buffer. Thus, you +can have multiple Ibuffer buffers open, each with a different sorted view of the buffers." :type '(choice (const :tag "Last view time" :value recency) (const :tag "Lexicographic" :value alphabetic) @@ -211,7 +201,9 @@ (defcustom ibuffer-maybe-show-predicates `(,(lambda (buf) (and (string-match "^ " (buffer-name buf)) (null buffer-file-name)))) - "A list of predicates (a regexp or function) for buffers to display conditionally. + "A list of predicates for buffers to display conditionally. + +A predicate can be a regexp or a function. If a regexp, then it will be matched against the buffer's name. If a function, it will be called with the buffer as an argument, and should return non-nil if this buffer should be shown. @@ -263,8 +255,8 @@ :group 'ibuffer) (defcustom ibuffer-always-show-last-buffer nil - "If non-nil, always display the previous buffer. This variable -takes precedence over filtering, and even + "If non-nil, always display the previous buffer. +This variable takes precedence over filtering, and even `ibuffer-never-show-predicates'." :type '(choice (const :tag "Always" :value t) (const :tag "Never" :value nil) @@ -277,7 +269,7 @@ :group 'ibuffer) (defcustom ibuffer-default-directory nil - "The default directory to use for a new ibuffer buffer. + "The default directory to use for a new Ibuffer buffer. If nil, inherit the directory of the buffer in which `ibuffer' was called. Otherwise, this variable should be a string naming a directory, like `default-directory'." @@ -285,24 +277,29 @@ string) :group 'ibuffer) -(defcustom ibuffer-help-buffer-modes '(help-mode apropos-mode - Info-mode Info-edit-mode) +(defcustom ibuffer-help-buffer-modes + '(help-mode apropos-mode Info-mode Info-edit-mode) "List of \"Help\" major modes." :type '(repeat function) :group 'ibuffer) (defcustom ibuffer-hook nil - "Hooks run when `ibuffer' is called." + "Hook run when `ibuffer' is called." :type 'hook :group 'ibuffer) (defvaralias 'ibuffer-hooks 'ibuffer-hook) (defcustom ibuffer-mode-hook nil - "Hooks run upon entry into `ibuffer-mode'." + "Hook run upon entry into `ibuffer-mode'." :type 'hook :group 'ibuffer) (defvaralias 'ibuffer-mode-hooks 'ibuffer-mode-hook) +(defcustom ibuffer-load-hook nil + "Hook run when Ibuffer is loaded." + :type 'hook + :group 'ibuffer) + (defcustom ibuffer-marked-face 'font-lock-warning-face "Face used for displaying marked buffers." :type 'face @@ -331,6 +328,7 @@ (regexp :tag "To"))) :group 'ibuffer) + (defvar ibuffer-mode-map nil) (defvar ibuffer-mode-operate-map nil) (defvar ibuffer-mode-groups-popup nil) @@ -509,6 +507,8 @@ (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 dashes] + '("--")) (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] @@ -558,7 +558,7 @@ (cdr ibuffer-filtering-qualifiers)))) (define-key-after map [menu-bar view filter save-filters] '(menu-item "Save current filters permanently..." ibuffer-save-filters - :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers) + :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers) :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 @@ -581,7 +581,7 @@ :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers))) (define-key-after groups-map [forward-filter-group] '(menu-item "Move point to the next filter group" - ibuffer-forward-filter-group)) + ibuffer-forward-filter-group)) (define-key-after groups-map [backward-filter-group] '(menu-item "Move point to the previous filter group" ibuffer-backward-filter-group)) @@ -618,7 +618,7 @@ '(menu-item "Restore permanently saved filters..." ibuffer-switch-to-saved-filter-groups :enable (and (featurep 'ibuf-ext) ibuffer-saved-filter-groups) - :help "Replace current filters with a saved stack")) + :help "Replace current filters with a saved stack")) (define-key-after groups-map [delete-saved-filter-groups] '(menu-item "Delete permanently saved filter groups..." ibuffer-delete-saved-filter-groups @@ -639,8 +639,7 @@ '(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)) + '(menu-item "Customize Ibuffer" ibuffer-customize :help "Use Custom to customize Ibuffer")) (define-key-after map [menu-bar mark] @@ -751,14 +750,14 @@ ibuffer-mode-groups-popup (copy-keymap groups-map)))) (define-key ibuffer-mode-groups-popup [kill-filter-group] - '(menu-item "Kill filter group" - ibuffer-kill-line - :enable (and (featurep 'ibuf-ext) ibuffer-filter-groups))) + '(menu-item "Kill filter group" + ibuffer-kill-line + :enable (and (featurep 'ibuf-ext) ibuffer-filter-groups))) (define-key ibuffer-mode-groups-popup [yank-filter-group] - '(menu-item "Yank last killed filter group" - ibuffer-yank - :enable (and (featurep 'ibuf-ext) ibuffer-filter-group-kill-ring))) - + '(menu-item "Yank last killed filter group" + ibuffer-yank + :enable (and (featurep 'ibuf-ext) ibuffer-filter-group-kill-ring))) + (defvar ibuffer-name-map nil) (unless ibuffer-name-map (let ((map (make-sparse-keymap))) @@ -875,13 +874,13 @@ (popup-menu ibuffer-mode-groups-popup)) (let ((inhibit-read-only t)) (ibuffer-save-marks - ;; hm. we could probably do this in a better fashion - (ibuffer-unmark-all ?\r) - (save-excursion - (goto-char eventpt) - (ibuffer-set-mark ibuffer-marked-char)) - (save-excursion - (popup-menu ibuffer-mode-operate-map))))) + ;; hm. we could probably do this in a better fashion + (ibuffer-unmark-all ?\r) + (save-excursion + (goto-char eventpt) + (ibuffer-set-mark ibuffer-marked-char)) + (save-excursion + (popup-menu ibuffer-mode-operate-map))))) (setq buffer-read-only t) (if (= eventpt (point)) (goto-char origpt))))) @@ -895,6 +894,11 @@ (forward-line direction) (beginning-of-line))) +(defun ibuffer-customize () + "Begin customizing Ibuffer interactively." + (interactive) + (customize-group 'ibuffer)) + (defun ibuffer-backward-line (&optional arg skip-group-names) "Move backwards ARG lines, wrapping around the list if necessary." (interactive "P") @@ -1030,11 +1034,11 @@ (> (length marked-bufs) 3) (not (y-or-n-p (format "Really create a new frame for %s buffers? " (length marked-bufs))))) - (set-buffer-modified-p nil) + (set-buffer-modified-p nil) (delete-other-windows) (switch-to-buffer (pop marked-bufs)) (let ((height (/ (1- (if (eq type 'horizontally) (frame-width) - (frame-height))) + (frame-height))) (1+ (length marked-bufs))))) (mapcar (if (eq type 'other-frame) #'(lambda (buf) @@ -1073,7 +1077,7 @@ (ibuffer-columnize-and-insert-list names) (goto-char (point-min)) (setq buffer-read-only t)) - (let ((lastwin (car (last (ibuffer-window-list))))) + (let ((lastwin (car (last (window-list nil 'nomini))))) ;; Now attempt to display the buffer... (save-window-excursion (select-window lastwin) @@ -1090,11 +1094,11 @@ ;; Handle a failure (if (or (> (incf attempts) 4) (and (stringp (cadr err)) - ;; This definitely falls in the ghetto hack category... + ;; This definitely falls in the + ;; ghetto hack category... (not (string-match "too small" (cadr err))))) (apply #'signal err) (enlarge-window 3)))))) - ;; This part doesn't work correctly sometimes under XEmacs. (select-window (next-window)) (switch-to-buffer buf) (unwind-protect @@ -1111,7 +1115,7 @@ (defun ibuffer-buffer-names-with-mark (mark) (let ((ibuffer-buffer-names-with-mark-result nil)) (ibuffer-map-lines-nomodify - #'(lambda (buf mk) + #'(lambda (buf mk) (when (char-equal mark mk) (push (buffer-name buf) ibuffer-buffer-names-with-mark-result)))) @@ -1267,7 +1271,7 @@ (progn (require 'ibuf-ext) (ibuffer-mark-on-buffer #'identity mark it)) - (ibuffer-forward-line 0 t) + (ibuffer-forward-line 0 t) (let ((inhibit-read-only t)) (while (> arg 0) (ibuffer-set-mark mark) @@ -1338,29 +1342,29 @@ (defun ibuffer-current-format (&optional uncompiledp) (or ibuffer-current-format (setq ibuffer-current-format 0)) - (nth ibuffer-current-format (ibuffer-current-formats uncompiledp))) + (nth ibuffer-current-format (ibuffer-current-formats uncompiledp))) (defun ibuffer-expand-format-entry (form) (if (or (consp form) (symbolp form)) - (let ((sym (intern (concat "ibuffer-make-column-" - (symbol-name (if (consp form) - (car form) - form)))))) - (unless (or (fboundp sym) - (assq sym ibuffer-inline-columns)) - (error "Unknown column %s in ibuffer-formats" form)) - (let (min max align elide) - (if (consp form) - (setq min (or (nth 1 form) 0) - max (or (nth 2 form) -1) - align (or (nth 3 form) :left) - elide (or (nth 4 form) nil)) - (setq min 0 - max -1 - align :left - elide nil)) - (list sym min max align elide))) + (let ((sym (intern (concat "ibuffer-make-column-" + (symbol-name (if (consp form) + (car form) + form)))))) + (unless (or (fboundp sym) + (assq sym ibuffer-inline-columns)) + (error "Unknown column %s in ibuffer-formats" form)) + (let (min max align elide) + (if (consp form) + (setq min (or (nth 1 form) 0) + max (or (nth 2 form) -1) + align (or (nth 3 form) :left) + elide (or (nth 4 form) nil)) + (setq min 0 + max -1 + align :left + elide nil)) + (list sym min max align elide))) form)) (defun ibuffer-compile-make-eliding-form (strvar elide from-end-p) @@ -1462,19 +1466,19 @@ ;; into our generated code. Otherwise, we just ;; generate a call to the column function. (ibuffer-aif (assq sym ibuffer-inline-columns) - (nth 1 it) - `(,sym buffer mark))) + (nth 1 it) + `(,sym buffer mark))) ;; You're not expected to understand this. Hell, I ;; don't even understand it, and I wrote it five ;; minutes ago. (insertgenfn (ibuffer-aif (get sym 'ibuffer-column-summarizer) - ;; I really, really wish Emacs Lisp had closures. - (lambda (arg sym) - `(insert - (let ((ret ,arg)) - (put ',sym 'ibuffer-column-summary - (cons ret (get ',sym 'ibuffer-column-summary))) - ret))) + ;; I really, really wish Emacs Lisp had closures. + (lambda (arg sym) + `(insert + (let ((ret ,arg)) + (put ',sym 'ibuffer-column-summary + (cons ret (get ',sym 'ibuffer-column-summary))) + ret))) (lambda (arg sym) `(insert ,arg)))) (mincompform `(< strlen ,(if (integerp min) @@ -1483,40 +1487,40 @@ (maxcompform `(> strlen ,(if (integerp max) max 'max)))) - (if (or min-used max-used) - ;; The complex case, where we have to limit the - ;; form to a maximum or minimum size. - (progn - (when (and min-used (not (integerp min))) - (push `(min ,min) letbindings)) - (when (and max-used (not (integerp max))) - (push `(max ,max) letbindings)) - (push - (if (and min-used max-used) - `(if ,mincompform - ,minform - (if ,maxcompform - ,maxform)) - (if min-used - `(when ,mincompform - ,minform) - `(when ,maxcompform - ,maxform))) - outforms) - (push (append - `(setq str ,callform) - (when strlen-used - `(strlen (length str)))) - outforms) - (setq outforms - (append outforms (list (funcall insertgenfn 'str sym))))) - ;; The simple case; just insert the string. - (push (funcall insertgenfn callform sym) outforms)) - ;; Finally, return a `let' form which binds the - ;; variables in `letbindings', and contains all the - ;; code in `outforms'. - `(let ,letbindings - ,@outforms))))) + (if (or min-used max-used) + ;; The complex case, where we have to limit the + ;; form to a maximum or minimum size. + (progn + (when (and min-used (not (integerp min))) + (push `(min ,min) letbindings)) + (when (and max-used (not (integerp max))) + (push `(max ,max) letbindings)) + (push + (if (and min-used max-used) + `(if ,mincompform + ,minform + (if ,maxcompform + ,maxform)) + (if min-used + `(when ,mincompform + ,minform) + `(when ,maxcompform + ,maxform))) + outforms) + (push (append + `(setq str ,callform) + (when strlen-used + `(strlen (length str)))) + outforms) + (setq outforms + (append outforms (list (funcall insertgenfn 'str sym))))) + ;; The simple case; just insert the string. + (push (funcall insertgenfn callform sym) outforms)) + ;; Finally, return a `let' form which binds the + ;; variables in `letbindings', and contains all the + ;; code in `outforms'. + `(let ,letbindings + ,@outforms))))) result)) (setq result ;; We don't want to unconditionally load the byte-compiler. @@ -1547,7 +1551,7 @@ "Recompile `ibuffer-formats'." (interactive) (setq ibuffer-compiled-formats - (mapcar #'ibuffer-compile-format ibuffer-formats)) + (mapcar #'ibuffer-compile-format ibuffer-formats)) (when (boundp 'ibuffer-filter-format-alist) (setq ibuffer-compiled-filter-formats (mapcar #'(lambda (entry) @@ -1607,8 +1611,8 @@ (define-ibuffer-column name (:inline t :props ('mouse-face 'highlight 'keymap ibuffer-name-map - 'ibuffer-name-column t - 'help-echo "mouse-1: mark this buffer\nmouse-2: select this buffer\nmouse-3: operate on this buffer")) + 'ibuffer-name-column t + 'help-echo "mouse-1: mark this buffer\nmouse-2: select this buffer\nmouse-3: operate on this buffer")) (propertize (buffer-name) 'font-lock-face (ibuffer-buffer-name-face buffer mark))) (define-ibuffer-column size (:inline t) @@ -1617,7 +1621,7 @@ (define-ibuffer-column mode (:inline t :props ('mouse-face 'highlight - 'keymap ibuffer-mode-name-map + 'keymap ibuffer-mode-name-map 'help-echo "mouse-2: filter by this mode")) (format "%s" mode-name)) @@ -1709,8 +1713,8 @@ If optional argument GROUP is non-nil, then only call FUNCTION on buffers in filtering group GROUP. - FUNCTION is called with four arguments: the buffer object itself, the -current mark symbol, and the beginning and ending line positions." +FUNCTION is called with two arguments: +the buffer object itself and the current mark symbol." (assert (eq major-mode 'ibuffer-mode)) (ibuffer-forward-line 0) (let* ((orig-target-line (1+ (count-lines (save-excursion @@ -1725,7 +1729,7 @@ (progn (setq buffer-read-only nil) (goto-char (point-min)) - (ibuffer-forward-line 0 t) + (ibuffer-forward-line 0 t) (while (and (not (eobp)) (not (get-text-property (point) 'ibuffer-summary)) (progn @@ -1755,7 +1759,7 @@ (1+ (line-end-position))) (incf ibuffer-map-lines-count) (when (< ibuffer-map-lines-total - orig-target-line) + orig-target-line) (decf target-line-offset))) (t (incf ibuffer-map-lines-count) @@ -1824,11 +1828,11 @@ (when ;; This takes precedence over anything else (or (and ibuffer-always-show-last-buffer - (eq last buf)) - (funcall (if ext-loaded - #'ibuffer-ext-visible-p - #'ibuffer-visible-p) - buf all ibuffer-buf)) + (eq last buf)) + (funcall (if ext-loaded + #'ibuffer-ext-visible-p + #'ibuffer-visible-p) + buf all ibuffer-buf)) e))) bmarklist)))) @@ -1837,7 +1841,7 @@ (not (ibuffer-buf-matches-predicates buf ibuffer-maybe-show-predicates))) (or ibuffer-view-ibuffer - (and ibuffer-buf + (and ibuffer-buf (not (eq ibuffer-buf buf)))))) ;; This function is a special case; it's not defined by @@ -1889,7 +1893,7 @@ (min (cadr element)) ;; (max (caddr element)) (align (cadddr element))) - ;; Ignore a negative min when we're inserting the title + ;; Ignore a negative min when we're inserting the title (when (minusp min) (setq min (- min))) (let* ((name (or (get sym 'ibuffer-column-name) @@ -2000,7 +2004,7 @@ (defun ibuffer-update (arg &optional silent) "Regenerate the list of all buffers. Display buffers whose name matches one of `ibuffer-maybe-show-predicates' -iff arg ARG is non-nil. +iff arg ARG is non-nil. If optional arg SILENT is non-nil, do not display progress messages." (interactive "P") @@ -2407,7 +2411,6 @@ (set (make-local-variable 'ibuffer-cached-eliding-string) nil) (set (make-local-variable 'ibuffer-cached-elide-long-columns) nil) (set (make-local-variable 'ibuffer-current-format) nil) - (set (make-local-variable 'ibuffer-did-modifiction) nil) (set (make-local-variable 'ibuffer-delete-window-on-quit) nil) (set (make-local-variable 'ibuffer-did-modification) nil) (set (make-local-variable 'ibuffer-tmp-hide-regexps) nil) @@ -2424,6 +2427,8 @@ (provide 'ibuffer) +(run-hooks 'ibuffer-load-hook) + ;; Local Variables: ;; coding: iso-8859-1 ;; End: