X-Git-Url: https://git.hcoop.net/bpt/emacs.git/blobdiff_plain/c194970e15b6d6efa07697679a25dfab3aa76442..64c4b6844f15f2b1256e0a94d4bf449a3d4b8a5a:/lisp/ibuffer.el diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el index c9dcff4161..7bf0858aac 100644 --- a/lisp/ibuffer.el +++ b/lisp/ibuffer.el @@ -1,6 +1,6 @@ ;;; ibuffer.el --- operate on buffers like dired -;; Copyright (C) 2000-2012 Free Software Foundation, Inc. +;; Copyright (C) 2000-2014 Free Software Foundation, Inc. ;; Author: Colin Walters ;; Maintainer: John Paul Wallington @@ -53,6 +53,8 @@ (defvar ibuffer-tmp-hide-regexps) (defvar ibuffer-tmp-show-regexps) +(declare-function ibuffer-ext-visible-p "ibuf-ext" + (buf all &optional ibuffer-buf)) (declare-function ibuffer-mark-on-buffer "ibuf-ext" (func &optional ibuffer-mark-on-buffer-mark group)) (declare-function ibuffer-generate-filter-groups "ibuf-ext" @@ -154,7 +156,7 @@ elisp byte-compiler." (null buffer-file-name)) italic) (30 (memq major-mode ibuffer-help-buffer-modes) font-lock-comment-face) - (35 (eq major-mode 'dired-mode) font-lock-function-name-face)) + (35 (derived-mode-p 'dired-mode) font-lock-function-name-face)) "An alist describing how to fontify buffers. Each element should be of the form (PRIORITY FORM FACE), where PRIORITY is an integer, FORM is an arbitrary form to evaluate in the @@ -462,6 +464,7 @@ directory, like `default-directory'." (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 "M-s a C-o") 'ibuffer-do-occur) (define-key map (kbd "DEL") 'ibuffer-unmark-backward) (define-key map (kbd "M-DEL") 'ibuffer-unmark-all) (define-key map (kbd "* *") 'ibuffer-unmark-all) @@ -632,10 +635,13 @@ directory, like `default-directory'." '(menu-item "Disable all filtering" ibuffer-filter-disable :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers))) (define-key-after map [menu-bar view filter filter-by-mode] - '(menu-item "Add filter by major mode..." ibuffer-filter-by-mode)) - (define-key-after map [menu-bar view filter filter-by-mode] - '(menu-item "Add filter by major mode in use..." + '(menu-item "Add filter by any major mode..." ibuffer-filter-by-mode)) + (define-key-after map [menu-bar view filter filter-by-used-mode] + '(menu-item "Add filter by a major mode in use..." ibuffer-filter-by-used-mode)) + (define-key-after map [menu-bar view filter filter-by-derived-mode] + '(menu-item "Add filter by derived mode..." + ibuffer-filter-by-derived-mode)) (define-key-after map [menu-bar view filter filter-by-name] '(menu-item "Add filter by buffer name..." ibuffer-filter-by-name)) (define-key-after map [menu-bar view filter filter-by-filename] @@ -1194,7 +1200,7 @@ a new window in the current frame, splitting vertically." (and (stringp (cadr err)) ;; This definitely falls in the ;; ghetto hack category... - (not (string-match "too small" (cadr err))))) + (not (string-match-p "too small" (cadr err))))) (signal (car err) (cdr err)) (enlarge-window 3)))))) (select-window (next-window)) @@ -1359,24 +1365,27 @@ group." (defun ibuffer-mark-forward (arg) "Mark the buffer on this line, and move forward ARG lines. If point is on a group name, this function operates on that group." - (interactive "P") - (ibuffer-mark-interactive arg ibuffer-marked-char 1)) + (interactive "p") + (ibuffer-mark-interactive arg ibuffer-marked-char)) (defun ibuffer-unmark-forward (arg) "Unmark the buffer on this line, and move forward ARG lines. If point is on a group name, this function operates on that group." - (interactive "P") - (ibuffer-mark-interactive arg ?\s 1)) + (interactive "p") + (ibuffer-mark-interactive arg ?\s)) (defun ibuffer-unmark-backward (arg) "Unmark the buffer on this line, and move backward ARG lines. If point is on a group name, this function operates on that group." - (interactive "P") - (ibuffer-mark-interactive arg ?\s -1)) + (interactive "p") + (ibuffer-unmark-forward (- arg))) -(defun ibuffer-mark-interactive (arg mark movement) +(defun ibuffer-mark-interactive (arg mark &optional movement) (ibuffer-assert-ibuffer-mode) (or arg (setq arg 1)) + ;; deprecated movement argument + (when (and movement (< movement 0)) + (setq arg (- arg))) (ibuffer-forward-line 0) (ibuffer-aif (get-text-property (point) 'ibuffer-filter-group-name) (progn @@ -1386,8 +1395,12 @@ If point is on a group name, this function operates on that group." (let ((inhibit-read-only t)) (while (> arg 0) (ibuffer-set-mark mark) - (ibuffer-forward-line movement t) - (setq arg (1- arg)))))) + (ibuffer-forward-line 1 t) + (setq arg (1- arg))) + (while (< arg 0) + (ibuffer-forward-line -1 t) + (ibuffer-set-mark mark) + (setq arg (1+ arg)))))) (defun ibuffer-set-mark (mark) (ibuffer-assert-ibuffer-mode) @@ -2345,7 +2358,7 @@ FORMATS is the value to use for `ibuffer-formats'. ;; We switch to the buffer's window in order to be able ;; to modify the value of point (select-window (get-buffer-window buf 0)) - (or (eq major-mode 'ibuffer-mode) + (or (derived-mode-p 'ibuffer-mode) (ibuffer-mode)) (setq ibuffer-restore-window-config-on-quit other-window-p) (when shrink @@ -2370,7 +2383,7 @@ FORMATS is the value to use for `ibuffer-formats'. (message "Commands: m, u, t, RET, g, k, S, D, Q; q to quit; h for help")))))) (put 'ibuffer-mode 'mode-class 'special) -(defun ibuffer-mode () +(define-derived-mode ibuffer-mode special-mode "IBuffer" "A major mode for viewing a list of buffers. In Ibuffer, you can conveniently perform many operations on the currently open buffers, in addition to filtering your view to a @@ -2438,8 +2451,9 @@ Marking commands: Filtering commands: - '\\[ibuffer-filter-by-mode]' - Add a filter by major mode. - '\\[ibuffer-filter-by-used-mode]' - Add a filter by major mode now in use. + '\\[ibuffer-filter-by-mode]' - Add a filter by any major mode. + '\\[ibuffer-filter-by-used-mode]' - Add a filter by a major mode now in use. + '\\[ibuffer-filter-by-derived-mode]' - Add a filter by derived mode. '\\[ibuffer-filter-by-name]' - Add a filter by buffer name. '\\[ibuffer-filter-by-content]' - Add a filter by buffer content. '\\[ibuffer-filter-by-filename]' - Add a filter by filename. @@ -2550,10 +2564,6 @@ filter groups are displayed in this order of precedence. You may rearrange filter groups by using the regular '\\[ibuffer-kill-line]' and '\\[ibuffer-yank]' pair. Yanked groups will be inserted before the group at point." - (kill-all-local-variables) - (use-local-map ibuffer-mode-map) - (setq major-mode 'ibuffer-mode) - (setq mode-name "Ibuffer") ;; Include state info next to the mode name. (set (make-local-variable 'mode-line-process) '(" by " @@ -2613,35 +2623,12 @@ will be inserted before the group at point." (ibuffer-update-format) (when ibuffer-default-directory (setq default-directory ibuffer-default-directory)) - (add-hook 'change-major-mode-hook 'font-lock-defontify nil t) - (run-mode-hooks 'ibuffer-mode-hook)) + (add-hook 'change-major-mode-hook 'font-lock-defontify nil t)) ;;; Start of automatically extracted autoloads. -;;;### (autoloads (ibuffer-do-occur ibuffer-mark-dired-buffers ibuffer-mark-read-only-buffers -;;;;;; ibuffer-mark-special-buffers ibuffer-mark-old-buffers ibuffer-mark-compressed-file-buffers -;;;;;; ibuffer-mark-help-buffers ibuffer-mark-dissociated-buffers -;;;;;; ibuffer-mark-unsaved-buffers ibuffer-mark-modified-buffers -;;;;;; ibuffer-mark-by-mode ibuffer-mark-by-file-name-regexp ibuffer-mark-by-mode-regexp -;;;;;; ibuffer-mark-by-name-regexp ibuffer-copy-filename-as-kill -;;;;;; ibuffer-diff-with-file ibuffer-jump-to-buffer ibuffer-do-kill-lines -;;;;;; ibuffer-backwards-next-marked ibuffer-forward-next-marked -;;;;;; ibuffer-add-to-tmp-show ibuffer-add-to-tmp-hide ibuffer-bs-show -;;;;;; ibuffer-invert-sorting ibuffer-toggle-sorting-mode ibuffer-switch-to-saved-filters -;;;;;; ibuffer-add-saved-filters ibuffer-delete-saved-filters ibuffer-save-filters -;;;;;; ibuffer-or-filter ibuffer-negate-filter ibuffer-exchange-filters -;;;;;; ibuffer-decompose-filter ibuffer-pop-filter ibuffer-filter-disable -;;;;;; ibuffer-switch-to-saved-filter-groups ibuffer-delete-saved-filter-groups -;;;;;; ibuffer-save-filter-groups ibuffer-yank-filter-group ibuffer-yank -;;;;;; ibuffer-kill-line ibuffer-kill-filter-group ibuffer-jump-to-filter-group -;;;;;; ibuffer-clear-filter-groups ibuffer-decompose-filter-group -;;;;;; ibuffer-pop-filter-group ibuffer-set-filter-groups-by-mode -;;;;;; ibuffer-filters-to-filter-group ibuffer-included-in-filters-p -;;;;;; ibuffer-backward-filter-group ibuffer-forward-filter-group -;;;;;; ibuffer-toggle-filter-group ibuffer-mouse-toggle-filter-group -;;;;;; ibuffer-interactive-filter-by-mode ibuffer-mouse-filter-by-mode -;;;;;; ibuffer-auto-mode) "ibuf-ext" "ibuf-ext.el" "f03bae226325c7320d41ddb78896665a") +;;;### (autoloads nil "ibuf-ext" "ibuf-ext.el" "e8ce929c4c76419f8d355b444f722c3a") ;;; Generated autoloads from ibuf-ext.el (autoload 'ibuffer-auto-mode "ibuf-ext" "\ @@ -2973,7 +2960,7 @@ Mark all buffers whose associated file does not exist. \(fn)" t nil) (autoload 'ibuffer-mark-help-buffers "ibuf-ext" "\ -Mark buffers like *Help*, *Apropos*, *Info*. +Mark buffers whose major mode is in variable `ibuffer-help-buffer-modes'. \(fn)" t nil) @@ -3019,7 +3006,7 @@ defaults to one. (run-hooks 'ibuffer-load-hook) ;; Local Variables: -;; coding: iso-8859-1 +;; coding: utf-8 ;; End: ;;; ibuffer.el ends here