;;; ibuffer.el --- operate on buffers like dired
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+;; 2009 Free Software Foundation, Inc.
;; Author: Colin Walters <walters@verbum.org>
;; Maintainer: John Paul Wallington <jpw@gnu.org>
(defvar ibuffer-tmp-hide-regexps)
(defvar ibuffer-tmp-show-regexps)
-(declare-function ibuffer-mark-on-buffer "ibuf-ext"
+(declare-function ibuffer-mark-on-buffer "ibuf-ext"
(func &optional ibuffer-mark-on-buffer-mark group))
(declare-function ibuffer-format-qualifier "ibuf-ext" (qualifier))
-(declare-function ibuffer-generate-filter-groups "ibuf-ext"
+(declare-function ibuffer-generate-filter-groups "ibuf-ext"
(bmarklist &optional noempty nodefault))
(declare-function ibuffer-format-filter-group-data "ibuf-ext" (filter))
(define-key map (kbd "=") 'ibuffer-diff-with-file)
(define-key map (kbd "j") 'ibuffer-jump-to-buffer)
(define-key map (kbd "M-g") 'ibuffer-jump-to-buffer)
+ (define-key map (kbd "M-s a C-s") 'ibuffer-do-isearch)
+ (define-key map (kbd "M-s a M-C-s") 'ibuffer-do-isearch-regexp)
(define-key map (kbd "DEL") 'ibuffer-unmark-backward)
(define-key map (kbd "M-DEL") 'ibuffer-unmark-all)
(define-key map (kbd "* *") 'ibuffer-unmark-all)
(line (+ 1 (count-lines 1 (point)))))
(bury-buffer buf)
(ibuffer-update nil t)
- (goto-line line)))
+ (goto-char (point-min))
+ (forward-line (1- line))))
(defun ibuffer-visit-tags-table ()
"Visit the tags table in the buffer on this line. See `visit-tags-table'."
(ibuffer-redisplay t)))
(defun ibuffer-shrink-to-fit (&optional owin)
+ ;; Make sure that redisplay is performed, otherwise there can be a
+ ;; bad interaction with code in the window-scroll-functions hook
+ (redisplay t)
(fit-window-to-buffer nil (when owin (/ (frame-height)
(length (window-list (selected-frame)))))))
(ibuffer-map-on-mark ibuffer-deletion-char func))
(defsubst ibuffer-assert-ibuffer-mode ()
- (assert (derived-mode-p 'ibuffer-mode)))
+ (assert (derived-mode-p 'ibuffer-mode)))
(defun ibuffer-buffer-file-name ()
(or buffer-file-name
(if (stringp dired-directory)
dired-directory
(car dired-directory)))
- (and (memq major-mode '(cvs-mode vc-dir-mode))
- (bound-and-true-p default-directory)))))
- (and dirname (expand-file-name dirname)))
- ""))
+ (bound-and-true-p list-buffers-directory))))
+ (and dirname (expand-file-name dirname)))))
(define-ibuffer-op ibuffer-do-save ()
"Save marked buffers as with `save-buffer'."
(t (format "%d files" total))))))
(let ((directory-abbrev-alist ibuffer-directory-abbrev-alist))
(abbreviate-file-name
- (ibuffer-buffer-file-name))))
+ (or (ibuffer-buffer-file-name) ""))))
(define-ibuffer-column filename-and-process
(:name "Filename/Process"
name)))
(when hmap
(setq
- strname
+ strname
(propertize strname 'mouse-face 'highlight 'keymap hmap)))
strname)))))
(add-text-properties opos (point) `(ibuffer-title-header t))
ibuffer-header-line-format)))
(defun ibuffer-sort-bufferlist (bmarklist)
+ (unless ibuffer-sorting-functions-alist
+ ;; make sure the sorting functions are loaded
+ (require 'ibuf-ext))
(let* ((sortdat (assq ibuffer-sorting-mode
ibuffer-sorting-functions-alist))
(func (caddr sortdat)))
(setq buffer-read-only t)
(set-buffer-modified-p ibuffer-did-modification)
(setq ibuffer-did-modification nil)
- (goto-line (1+ orig)))))
+ (goto-char (point-min))
+ (forward-line orig))))
(defun ibuffer-quit ()
"Quit this `ibuffer' session.
'\\[ibuffer-do-revert]' - Revert the marked buffers.
'\\[ibuffer-do-toggle-read-only]' - Toggle read-only state of marked buffers.
'\\[ibuffer-do-delete]' - Kill the marked buffers.
+ '\\[ibuffer-do-isearch]' - Do incremental search in the marked buffers.
+ '\\[ibuffer-do-isearch-regexp]' - Isearch for regexp in the marked buffers.
'\\[ibuffer-do-replace-regexp]' - Replace by regexp in each of the marked
buffers.
'\\[ibuffer-do-query-replace]' - Query replace in each of the marked buffers.