;ELC   
;;; Compiled
;;; in Emacs version 29.4
;;; with all optimizations.



(byte-code "\300\301!\210\300\302!\210\303\304\305\306\307\310\311\312&\210\313\314\315\316\317DD\320\307\321\322\323&\210\313\324\315\316\325DD\326\322\327%\210\313\330\315\316\331DD\332\322\333%\210\313\334\315\316\335DD\336\322\327%\210\313\337\315\316\340DD\341\322\327%\207" [require seq ibuffer-loaddefs custom-declare-group ibuffer nil "Advanced replacement for `buffer-menu'.\nIbuffer lets you operate on buffers in a Dired-like way,\nwith the ability to sort, mark by regular expression,\nand filter displayed buffers by various criteria." :version "22.1" :group convenience custom-declare-variable ibuffer-formats funcall function #[0 "\300\207" [((mark modified read-only locked " " (name 18 18 :left :elide) " " (size 9 -1 :right) " " (mode 16 16 :left :elide) " " filename-and-process) (mark " " (name 16 -1) " " filename))] 1 #1=""] "A list of ways to display buffer lines.\n\nWith Ibuffer, you are not limited to displaying just certain\nattributes of a buffer such as size, name, and mode in a particular\norder.  Through this variable, you can completely customize and\ncontrol the appearance of an Ibuffer buffer.  See also\n`define-ibuffer-column', which allows you to define your own columns\nfor display.\n\nThis variable has the form\n ((COLUMN COLUMN ...) (COLUMN COLUMN ...) ...)\nEach element in `ibuffer-formats' should be a list containing COLUMN\nspecifiers.  A COLUMN can be any of the following:\n\n  SYMBOL - A symbol naming the column.  Predefined columns are:\n       mark modified read-only locked name size mode process filename\n   When you define your own columns using `define-ibuffer-column', just\n   use their name like the predefined columns here.  This entry can\n   also be a function of two arguments, which should return a string.\n   The first argument is the buffer object, and the second is the mark\n   on that buffer.\n or\n  \"STRING\" - A literal string to display.\n or\n  (SYMBOL MIN-SIZE MAX-SIZE &optional ALIGN ELIDE) - SYMBOL is a\n   symbol naming the column, and MIN-SIZE and MAX-SIZE are integers (or\n   functions of no arguments returning an integer) which constrict the\n   size of a column.  If MAX-SIZE is -1, there is no upper bound.  The\n   default values are 0 and -1, respectively.  If MIN-SIZE is negative,\n   use the end of the string.  The optional element ALIGN describes the\n   alignment of the column; it can be :left, :center or :right.  The\n   optional element ELIDE describes whether or not to elide the column\n   if it is too long; valid values are :elide and nil.  The default is\n   nil (don't elide).\n\nSome example of valid entries in `ibuffer-formats', with\ndescription (also, feel free to try them out, and experiment with your\nown!):\n\n (mark \" \" name)\n  This format just displays the current mark (if any) and the name of\n  the buffer, separated by a space.\n (mark modified read-only \" \" (name 16 16 :left) \" \" (size 6 -1 :right))\n  This format displays the current mark (if any), its modification and\n  read-only status, as well as the name of the buffer and its size.  In\n  this format, the name is restricted to 16 characters (longer names\n  will be truncated, and shorter names will be padded with spaces), and\n  the name is also aligned to the left.  The size of the buffer will\n  be padded with spaces up to a minimum of six characters, but there is\n  no upper limit on its size.  The size will also be aligned to the\n  right.\n\nThus, if you wanted to use these two formats, the appropriate\nvalue for this variable would be\n\n  \\='((mark \" \" name)\n    (mark modified read-only\n          (name 16 16 :left)\n          (size 6 -1 :right)))\n\nUsing \\[ibuffer-switch-format], you can rotate the display between\nthe specified formats in the list." "26.1" :type (repeat sexp) ibuffer-always-compile-formats #[0 "\300\301!\207" [featurep bytecomp] 2 #1#] "If non-nil, then use the byte-compiler to optimize `ibuffer-formats'.\nThis will increase the redisplay speed, at the cost of loading the\nelisp byte-compiler." boolean ibuffer-fontification-alist #[0 "\300\207" [((10 buffer-read-only font-lock-constant-face) (15 (and buffer-file-name (string-match ibuffer-compressed-file-name-regexp buffer-file-name)) font-lock-doc-face) (20 (string-match "^\\*" (buffer-name)) font-lock-keyword-face) (25 (and (string-match "^ " (buffer-name)) (null buffer-file-name)) italic) (30 (memq major-mode ibuffer-help-buffer-modes) font-lock-comment-face) (35 (derived-mode-p 'dired-mode) font-lock-function-name-face) (40 (and (boundp 'emacs-lock-mode) emacs-lock-mode) ibuffer-locked-buffer))] 1 #1#] "An alist describing how to fontify buffers.\nEach element should be of the form (PRIORITY FORM FACE), where\nPRIORITY is an integer, FORM is an arbitrary form to evaluate in the\nbuffer, and FACE is the face to use for fontification.  If the FORM\nevaluates to non-nil, then FACE will be put on the buffer name.  The\nelement with the highest PRIORITY takes precedence.\n\nIf you change this variable, you must kill the Ibuffer buffer and\nrecreate it for the change to take effect." (repeat (list (integer :tag "Priority") (sexp :tag "Test Form") face)) ibuffer-use-other-window #[0 "\300\207" [nil] 1 #1#] "If non-nil, display Ibuffer in another window by default." ibuffer-default-shrink-to-minimum-size #[0 "\300\207" [nil] 1 #1#] "If non-nil, minimize the size of the Ibuffer window by default."] 8)
(defvar ibuffer-shrink-to-minimum-size nil)
(byte-code "\300\301\302\303\304DD\305\306\307%\210\300\310\302\303\311DD\312\306\307%\210\300\313\302\303\314DD\315\306\307%\210\300\316\302\303\317DD\320\306\321%\207" [custom-declare-variable ibuffer-display-summary funcall function #[0 "\300\207" [t] 1 #1=""] "If non-nil, summarize Ibuffer columns." :type boolean ibuffer-truncate-lines #[0 "\300\207" [t] 1 #1#] "If non-nil, do not display continuation lines." ibuffer-case-fold-search #[0 "\207" [case-fold-search] 1 #1#] "If non-nil, ignore case when searching." ibuffer-default-sorting-mode #[0 "\300\207" [recency] 1 #1#] "The criteria by which to sort the buffers.\n\nNote that this variable is local to each Ibuffer buffer.  Thus, you\ncan have multiple Ibuffer buffers open, each with a different sorted\nview of the buffers." (choice (const :tag "Last view time" :value recency) (const :tag "Lexicographic" :value alphabetic) (const :tag "Buffer size" :value size) (const :tag "File name" :value filename/process) (const :tag "Major mode" :value major-mode))] 6)
(defvar ibuffer-sorting-mode nil)
(defvar ibuffer-last-sorting-mode nil)
(byte-code "\300\301\302\303\304DD\305\306\307%\207" [custom-declare-variable ibuffer-default-sorting-reversep funcall function #[0 "\300\207" [nil] 1 ""] "If non-nil, reverse the default sorting order." :type boolean] 6)
(defvar ibuffer-sorting-reversep nil)
(byte-code "\300\301\302\303\304DD\305\306\307%\210\300\310\302\303\311DD\312\306\313%\210\300\314\302\303\315DD\316\306\317%\207" [custom-declare-variable ibuffer-eliding-string funcall function #[0 "\300\207" ["..."] 1 #1=""] "The string to use for eliding long columns." :type string ibuffer-maybe-show-predicates #[0 "\300C\207" [#[257 "\301\302\303!\"\205 ?\207" [buffer-file-name string-match "^ " buffer-name] 5 "\n\n(fn BUF)"]] 1 #1#] "A list of predicates for buffers to display conditionally.\n\nA predicate can be a regexp or a function.\nIf a regexp, then it will be matched against the buffer's name.\nIf a function, it will be called with the buffer as an argument, and\nshould return non-nil if this buffer should be shown.\n\nViewing of buffers hidden because of these predicates may be customized\nvia `ibuffer-default-display-maybe-show-predicates' and is toggled by\ngiving a non-nil prefix argument to `ibuffer-update'.\nNote that this specialized filtering occurs before real filtering." (repeat (choice regexp function)) ibuffer-default-display-maybe-show-predicates #[0 "\300\207" [nil] 1 #1#] "Non-nil means show buffers that match `ibuffer-maybe-show-predicates'." boolean] 6)
(defvar ibuffer-display-maybe-show-predicates nil)
(defvar ibuffer-current-format nil)
(byte-code "\300\301\302\303\304DD\305\306\307%\210\300\310\302\303\311DD\312\306\313%\210\300\314\302\303\315DD\316\306\313%\210\300\317\302\303\320DD\321\306\313%\210\300\322\302\303\323DD\324\325\326\306\313&\210\300\327\302\303\330DD\331\306\313%\210\300\332\302\303\333DD\334\306\307%\210\300\335\302\303\336DD\337\306\307%\210\300\340\302\303\341DD\342\306\343%\210\300\344\302\303\345DD\346\306\307%\210\300\347\302\303\350DD\351\306\307%\210\300\352\302\303\353DD\354\306\355%\210\300\356\302\303\357DD\360\306\361%\210\300\362\302\303\363DD\364\325\365\306\366&\210\300\367\302\303\370DD\371\306\372%\210\300\373\302\303\374DD\375\306\372\376\377&\210\300\201@ \302\303\201A DD\201B \306\372%\210\201C \201@ \201D \201E #\210\300\201F \302\303\201G DD\201H \306\201I %\210\300\201J \302\303\201K DD\201L \306\201I %\210\300\201M \302\303\201N DD\201O \306\201I %\210\300\201P \302\303\201Q DD\201R \306\201I %\210\300\201S \302\303\201T DD\201U \306\201V %\207" [custom-declare-variable ibuffer-movement-cycle funcall function #[0 "\300\207" [t] 1 #1=""] "If non-nil, then forward and backwards movement commands cycle." :type boolean ibuffer-modified-char #[0 "\300\207" [42] 1 #1#] "The character to display for modified buffers." character ibuffer-read-only-char #[0 "\300\207" [37] 1 #1#] "The character to display for read-only buffers." ibuffer-marked-char #[0 "\300\207" [62] 1 #1#] "The character to display for marked buffers." ibuffer-locked-char #[0 "\300\207" [76] 1 #1#] "The character to display for locked buffers." :version "26.1" ibuffer-deletion-char #[0 "\300\207" [68] 1 #1#] "The character to display for buffers marked for deletion." ibuffer-expert #[0 "\300\207" [nil] 1 #1#] "If non-nil, don't ask for confirmation of \"dangerous\" operations." ibuffer-view-ibuffer #[0 "\300\207" [nil] 1 #1#] "If non-nil, display the current Ibuffer buffer itself.\nNote that this has a drawback - the data about the current Ibuffer\nbuffer will most likely be inaccurate.  This includes modification\nstate, size, etc." ibuffer-always-show-last-buffer #[0 "\300\207" [nil] 1 #1#] "If non-nil, always display the previous buffer.\nThis variable takes precedence over filtering, and even\n`ibuffer-never-show-predicates'." (choice (const :tag "Always" :value t) (const :tag "Never" :value nil) (const :tag "Always except minibuffer" :value :nomini)) ibuffer-jump-offer-only-visible-buffers #[0 "\300\207" [nil] 1 #1#] "If non-nil, only offer buffers visible in the Ibuffer buffer\nin completion lists of the `ibuffer-jump-to-buffer' command." ibuffer-use-header-line #[0 "\300\207" [t] 1 #1#] "If non-nil, display a header line containing current filters." ibuffer-default-directory #[0 "\300\207" [nil] 1 #1#] "The default directory to use for a new Ibuffer buffer.\nIf nil, inherit the directory of the buffer in which `ibuffer' was\ncalled.  Otherwise, this variable should be a string naming a\ndirectory, like `default-directory'." (choice (const :tag "Inherit" :value nil) string) ibuffer-help-buffer-modes #[0 "\300\207" [(help-mode apropos-mode Info-mode)] 1 #1#] "List of \"Help\" major modes." (repeat function) ibuffer-compressed-file-name-regexp #[0 "\300\207" ["\\.\\(arj\\|bgz\\|bz2\\|gz\\|lzh\\|taz\\|tgz\\|xz\\|zip\\|z\\)$"] 1 #1#] "Regexp to match compressed file names." "24.1" regexp ibuffer-hook #[0 "\300\207" [nil] 1 #1#] "Hook run when `ibuffer' is called." hook ibuffer-mode-hook #[0 "\300\207" [nil] 1 #1#] "Hook run upon entry into `ibuffer-mode'." :options (ibuffer-auto-mode) ibuffer-load-hook #[0 "\300\207" [nil] 1 #1#] "Hook run when Ibuffer is loaded." make-obsolete-variable "use `with-eval-after-load' instead." "28.1" ibuffer-marked-face #[0 "\300\207" [warning] 1 #1#] "Face used for displaying marked buffers." face ibuffer-deletion-face #[0 "\300\207" [error] 1 #1#] "Face used for displaying buffers marked for deletion." ibuffer-title-face #[0 "\300\207" [font-lock-type-face] 1 #1#] "Face used for the title string." ibuffer-filter-group-name-face #[0 "\300\207" [bold] 1 #1#] "Face used for displaying filtering group names." ibuffer-directory-abbrev-alist #[0 "\300\207" [nil] 1 #1#] "An alist of file name abbreviations like `directory-abbrev-alist'." (repeat (cons :format "%v" :value (#1# . #1#) (regexp :tag "From") (regexp :tag "To")))] 8)
(defvar ibuffer--filter-map (byte-code "\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\356\360\361\362\363\364\363\365\366\367\366\370\371\372\373\374\375\376\375\377\201@ \201A \201B \201C \201D \201E \201F \201G \201H \201I \201J &N\207" [define-keymap "RET" ibuffer-filter-by-mode "SPC" ibuffer-filter-chosen-by-completion "m" ibuffer-filter-by-used-mode "M" ibuffer-filter-by-derived-mode "n" ibuffer-filter-by-name "E" ibuffer-filter-by-process "*" ibuffer-filter-by-starred-name "f" ibuffer-filter-by-filename "F" ibuffer-filter-by-directory "b" ibuffer-filter-by-basename "." ibuffer-filter-by-file-extension "<" ibuffer-filter-by-size-lt ">" ibuffer-filter-by-size-gt "i" ibuffer-filter-by-modified "v" ibuffer-filter-by-visiting-file "c" ibuffer-filter-by-content "e" ibuffer-filter-by-predicate "r" ibuffer-switch-to-saved-filters "a" ibuffer-add-saved-filters "x" ibuffer-delete-saved-filters "d" ibuffer-decompose-filter "s" ibuffer-save-filters "p" ibuffer-pop-filter "<up>" "!" ibuffer-negate-filter "t" ibuffer-exchange-filters "TAB" "o" ibuffer-or-filter "|" "&" ibuffer-and-filter "g" ibuffer-filters-to-filter-group "P" ibuffer-pop-filter-group "S-<up>" "D" ibuffer-decompose-filter-group "/" ibuffer-filter-disable "S" ibuffer-save-filter-groups "R" ibuffer-switch-to-saved-filter-groups "X" ibuffer-delete-saved-filter-groups "\\" ibuffer-clear-filter-groups] 79))
(defvar ibuffer-mode-map (byte-code "\301\302\303\304\305\306\305\307\305\310\305\311\305\312\305\313\305\314\305\315\305\316\305\317\320\321\322\323\324\325\326\327\330\331\330\332\333\334\335\336\337\340\341\342\343\344\343\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377\201@ \201A \201B \201C \201D \201E \201F \201G \201H \201I \201J \201K \201L \201M \201N \201O \201P \201Q \201R \201S \201T \201U \201V \201W \201X \201Y \201Z \201[ \201\\ \201] \201^ \201_ \201` \201a \201b \201c \201d \201e \201f \201g \201h \201i \201h \201j \201k \201l \201k \201m \201n \201o \201p \201q \201r \201s \201t \201u \201v \201w \201x \201y \201z \201{ \201| \201} \201~ \201 \201\200 \201\201 \201\202 \201\203 \201\204 \201\205 \201\206 \201\207 \201\210 \201\211 \201\212 \201\213 \201\202 \201\214 \201\215 \201\216 \201\217 \201\220 \201\221 \201\222 \201\204 \201\223 \337\201\224 \201\225 \201\226 \201\227 \201\230 \201\231 \201\232 \201\233 \201\234 \201\235 \201\236 \201\237 \201\240 \201\241 \201\242 \201\243 \201\244 \201\245 \201\246 \201\200 \201\247 \201\250 \201\251 \201\252 \201\253 \201\254 \201\255 \201\256 \201\257 \201\256 \201\260 \201\256 \201\261 \201\262 \201\263 \201\264 \201\265 \201\266 \201\267 \201\270 \201\271 \201\206 \201\272 \201\273 \201\274 \201\275 \201\276 \201\264 \201\277 \201\300 \201\301 &\326\207" [ibuffer--filter-map define-keymap :full t "0" digit-argument "1" "2" "3" "4" "5" "6" "7" "8" "9" "m" ibuffer-mark-forward "t" ibuffer-toggle-marks "u" ibuffer-unmark-forward "=" ibuffer-diff-with-file "j" ibuffer-jump-to-buffer "M-g" "M-s a C-s" ibuffer-do-isearch "M-s a C-M-s" ibuffer-do-isearch-regexp "M-s a C-o" ibuffer-do-occur "DEL" ibuffer-unmark-backward "M-DEL" ibuffer-unmark-all "* *" "* c" ibuffer-change-marks "U" ibuffer-unmark-all-marks "* M" ibuffer-mark-by-mode "* m" ibuffer-mark-modified-buffers "* u" ibuffer-mark-unsaved-buffers "* s" ibuffer-mark-special-buffers "* r" ibuffer-mark-read-only-buffers "* /" ibuffer-mark-dired-buffers "* e" ibuffer-mark-dissociated-buffers "* h" ibuffer-mark-help-buffers "* z" ibuffer-mark-compressed-file-buffers "." ibuffer-mark-old-buffers "d" ibuffer-mark-for-delete "C-d" ibuffer-mark-for-delete-backwards "x" ibuffer-do-kill-on-deletion-marks "n" ibuffer-forward-line "SPC" forward-line "p" ibuffer-backward-line "M-}" ibuffer-forward-next-marked "M-{" ibuffer-backwards-next-marked "l" ibuffer-redisplay "g" ibuffer-update "`" ibuffer-switch-format "-" ibuffer-add-to-tmp-hide "+" ibuffer-add-to-tmp-show "b" ibuffer-bury-buffer "," ibuffer-toggle-sorting-mode "s i" ibuffer-invert-sorting "s a" ibuffer-do-sort-by-alphabetic "s v" ibuffer-do-sort-by-recency "s s" ibuffer-do-sort-by-size "s f" ibuffer-do-sort-by-filename/process "s m" ibuffer-do-sort-by-major-mode "M-n" ibuffer-forward-filter-group "TAB" "M-p" ibuffer-backward-filter-group "<backtab>" "M-j" ibuffer-jump-to-filter-group "C-k" ibuffer-kill-line "C-y" ibuffer-yank "% n" ibuffer-mark-by-name-regexp "% m" ibuffer-mark-by-mode-regexp "% f" ibuffer-mark-by-file-name-regexp "% g" ibuffer-mark-by-content-regexp "% L" ibuffer-mark-by-locked "C-t" ibuffer-visit-tags-table "|" ibuffer-do-shell-command-pipe "!" ibuffer-do-shell-command-file "~" ibuffer-do-toggle-modified "A" ibuffer-do-view "D" ibuffer-do-delete "E" ibuffer-do-eval "F" "I" ibuffer-do-query-replace-regexp "H" ibuffer-do-view-other-frame "N" ibuffer-do-shell-command-pipe-replace "M" "O" "P" ibuffer-do-print "Q" ibuffer-do-query-replace "R" ibuffer-do-rename-uniquely "S" ibuffer-do-save "T" ibuffer-do-toggle-read-only "L" ibuffer-do-toggle-lock "r" ibuffer-do-replace-regexp "V" ibuffer-do-revert "W" ibuffer-do-view-and-eval "X" "k" ibuffer-do-kill-lines "w" ibuffer-copy-filename-as-kill "B" ibuffer-copy-buffername-as-kill "RET" ibuffer-visit-buffer "e" "f" "C-x C-f" ibuffer-find-file "o" ibuffer-visit-buffer-other-window "C-o" ibuffer-visit-buffer-other-window-noselect "M-o" ibuffer-visit-buffer-1-window "v" "C-x v" ibuffer-do-view-horizontally "C-c C-a" ibuffer-auto-mode "C-x 4 RET" "C-x 5 RET" ibuffer-visit-buffer-other-frame "/"] 215))#@72 Build the `ibuffer' "Filter" menu.  Internal.

(fn &optional IS-POPUP)
(defalias 'ibuffer-mode--groups-menu-definition #[256 "\300\301\302\303\304\305\203 \306\202 \307\310\"BBBBB\207" ["Filter Groups" ["Create filter group from current filters..." ibuffer-filters-to-filter-group :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers)] ["Move point to the next filter group" ibuffer-forward-filter-group] ["Move point to the previous filter group" ibuffer-backward-filter-group] ["Move point to a specific filter group..." ibuffer-jump-to-filter-group] append (["Kill filter group" ibuffer-kill-line :enable (and (featurep 'ibuf-ext) ibuffer-filter-groups)] ["Yank last killed filter group" ibuffer-yank :enable (and (featurep 'ibuf-ext) ibuffer-filter-group-kill-ring)]) (["Kill filter group named..." ibuffer-kill-filter-group :enable (and (featurep 'ibuf-ext) ibuffer-filter-groups)] ["Yank last killed filter group before..." ibuffer-yank-filter-group :enable (and (featurep 'ibuf-ext) ibuffer-filter-group-kill-ring)]) (["Remove top filter group" ibuffer-pop-filter-group :enable (and (featurep 'ibuf-ext) ibuffer-filter-groups)] ["Remove all filter groups" ibuffer-clear-filter-groups :enable (and (featurep 'ibuf-ext) ibuffer-filter-groups)] ["Decompose filter group..." ibuffer-pop-filter-group :help "\"Unmake\" a filter group" :enable (and (featurep 'ibuf-ext) ibuffer-filter-groups)] ["Save current filter groups permanently..." ibuffer-save-filter-groups :enable (and (featurep 'ibuf-ext) ibuffer-filter-groups) :help "Use a mnemonic name to store current filter groups"] ["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"] ["Delete permanently saved filter groups..." ibuffer-delete-saved-filter-groups :enable (and (featurep 'ibuf-ext) ibuffer-saved-filter-groups)] ["Set current filter groups to filter by mode" ibuffer-set-filter-groups-by-mode])] 9 (#$ . 18194)])#@21 Menu for `ibuffer'.
(defvar ibuffer-mode-groups-popup nil (#$ . 20235))
(byte-code "\300\301\302\303\304\305!$\207" [easy-menu-do-define ibuffer-mode-groups-popup nil "Menu for `ibuffer'." ibuffer-mode--groups-menu-definition is-popup] 6)#@26 Mark menu for `ibuffer'.
(defvar ibuffer-mode-mark-menu nil (#$ . 20479))
(easy-menu-do-define 'ibuffer-mode-mark-menu ibuffer-mode-map "Mark menu for `ibuffer'." '("Mark" ["Toggle marks" ibuffer-toggle-marks :help "Unmark marked buffers, and mark unmarked buffers"] ["Change marks" ibuffer-change-marks :help "Change OLD mark for marked buffers with NEW"] ["Mark" ibuffer-mark-forward :help "Mark the buffer at point"] ["Unmark" ibuffer-unmark-forward :help "Unmark the buffer at point"] ["Mark by mode..." ibuffer-mark-by-mode :help "Mark all buffers in a particular major mode"] ["Mark modified buffers" ibuffer-mark-modified-buffers :help "Mark all buffers which have been modified"] ["Mark unsaved buffers" ibuffer-mark-unsaved-buffers :help "Mark all buffers which have a file and are modified"] ["Mark read-only buffers" ibuffer-mark-read-only-buffers :help "Mark all buffers which are read-only"] ["Mark special buffers" ibuffer-mark-special-buffers :help "Mark all buffers whose name begins with a *"] ["Mark dired buffers" ibuffer-mark-dired-buffers :help "Mark buffers in dired-mode"] ["Mark dissociated buffers" ibuffer-mark-dissociated-buffers :help "Mark buffers with a non-existent associated file"] ["Mark help buffers" ibuffer-mark-help-buffers :help "Mark buffers in help-mode"] ["Mark compressed file buffers" ibuffer-mark-compressed-file-buffers :help "Mark buffers which have a file that is compressed"] ["Mark old buffers" ibuffer-mark-old-buffers :help "Mark buffers which have not been viewed recently"] ["Unmark All" ibuffer-unmark-all] ["Unmark All buffers" ibuffer-unmark-all-marks] "---" ["Mark by buffer name (regexp)..." ibuffer-mark-by-name-regexp :help "Mark buffers whose name matches a regexp"] ["Mark by major mode (regexp)..." ibuffer-mark-by-mode-regexp :help "Mark buffers whose major mode name matches a regexp"] ["Mark by file name (regexp)..." ibuffer-mark-by-file-name-regexp :help "Mark buffers whose file name matches a regexp"] ["Mark by content (regexp)..." ibuffer-mark-by-content-regexp :help "Mark buffers whose content matches a regexp"] ["Mark by locked buffers..." ibuffer-mark-by-locked :help "Mark all locked buffers"]))#@26 View menu for `ibuffer'.
(defvar ibuffer-mode-view-menu nil (#$ . 22659))
(byte-code "\301\302\303\304\305\306\307\310\311\312\313\314\315 \316BBBBBBBBBB$\210\317\320\321\322#\210\323\211\203D \211@\320N\203= \321N\204= \324\321\320N#\210A\266\202\202# \210\325\320\321\326#\207" [ibuffer-mode-map easy-menu-do-define ibuffer-mode-view-menu "View menu for `ibuffer'." "View" ["View this buffer" ibuffer-visit-buffer] ["View (other window)" ibuffer-visit-buffer-other-window] ["View (other frame)" ibuffer-visit-buffer-other-frame] ["Update" ibuffer-update :help "Regenerate the list of buffers"] ["Switch display format" ibuffer-switch-format :help "Toggle between available values of `ibuffer-formats'"] "---" ("Sort" ["Sort by major mode" ibuffer-do-sort-by-major-mode] ["Sort by buffer size" ibuffer-do-sort-by-size] ["Sort lexicographically" ibuffer-do-sort-by-alphabetic :help "Sort by the alphabetic order of buffer name"] ["Sort by view time" ibuffer-do-sort-by-recency :help "Sort by the last time the buffer was displayed"] "---" ["Reverse sorting order" ibuffer-invert-sorting] ["Switch sorting mode" ibuffer-toggle-sorting-mode :help "Switch between the various sorting criteria"]) ("Filter" ["Disable all filtering" ibuffer-filter-disable :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers)] ["Add filter by any major mode..." ibuffer-filter-by-mode] ["Add filter by a major mode in use..." ibuffer-filter-by-used-mode] ["Add filter by derived mode..." ibuffer-filter-by-derived-mode] ["Add filter by buffer name..." ibuffer-filter-by-name] ["Add filter by starred buffer name..." ibuffer-filter-by-starred-name :help "List buffers whose names begin with a star"] ["Add filter by full filename..." ibuffer-filter-by-filename :help (concat "For a buffer associated with file `/a/b/c.d', " "list buffer if a given pattern matches `/a/b/c.d'")] ["Add filter by file basename..." ibuffer-filter-by-basename :help (concat "For a buffer associated with file `/a/b/c.d', " "list buffer if a given pattern matches `c.d'")] ["Add filter by file name extension..." ibuffer-filter-by-file-extension :help (concat "For a buffer associated with file `/a/b/c.d', " "list buffer if a given pattern matches `d'")] ["Add filter by filename's directory..." ibuffer-filter-by-directory :help (concat "For a buffer associated with file `/a/b/c.d', " "list buffer if a given pattern matches `/a/b'")] ["Add filter by size less than..." ibuffer-filter-by-size-lt] ["Add filter by size greater than..." ibuffer-filter-by-size-gt] ["Add filter by modified buffer" ibuffer-filter-by-modified :help "List buffers that are marked as modified"] ["Add filter by buffer visiting a file" ibuffer-filter-by-visiting-file :help "List buffers that are visiting files"] ["Add filter by content (regexp)..." ibuffer-filter-by-content] ["Add filter by Lisp predicate..." ibuffer-filter-by-predicate] ["Remove top filter" ibuffer-pop-filter :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers)] ["AND top two filters" ibuffer-and-filter :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers (cdr ibuffer-filtering-qualifiers)) :help "Create a new filter which is the logical AND of the top two filters"] ["OR top two filters" ibuffer-or-filter :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers (cdr ibuffer-filtering-qualifiers)) :help "Create a new filter which is the logical OR of the top two filters"] ["Negate top filter" ibuffer-negate-filter :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers)] ["Decompose top filter" ibuffer-decompose-filter :enable (and (featurep 'ibuf-ext) (memq (car ibuffer-filtering-qualifiers) '(or saved not))) :help "Break down a complex filter like OR or NOT"] ["Swap top two filters" ibuffer-exchange-filters :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers (cdr ibuffer-filtering-qualifiers))] ["Save current filters permanently..." ibuffer-save-filters :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers) :help "Use a mnemonic name to store current filter stack"] ["Restore permanently saved filters..." ibuffer-switch-to-saved-filters :enable (and (featurep 'ibuf-ext) ibuffer-saved-filters) :help "Replace current filters with a saved stack"] ["Add to permanently saved filters..." ibuffer-add-saved-filters :enable (and (featurep 'ibuf-ext) ibuffer-filtering-qualifiers) :help "Include already saved stack with current filters"] ["Delete permanently saved filters..." ibuffer-delete-saved-filters :enable (and (featurep 'ibuf-ext) ibuffer-saved-filters)]) ibuffer-mode--groups-menu-definition ("---" ["Auto Mode" ibuffer-auto-mode :style toggle :selected ibuffer-auto-mode :help "Attempt to automatically update the Ibuffer buffer"]) defvaralias ibuffer-mode-operate-map ibuffer-mode-operate-menu nil (saved-value saved-variable-comment) put make-obsolete-variable "28.1"] 15)#@29 Operate menu for `ibuffer'.
(defvar ibuffer-mode-operate-menu nil (#$ . 27545))
(easy-menu-do-define 'ibuffer-mode-operate-menu ibuffer-mode-map "Operate menu for `ibuffer'." '("Operate" ["View" ibuffer-do-view] ["View (separate frame)" ibuffer-do-view-other-frame] ["Save" ibuffer-do-save] ["Replace (regexp)..." ibuffer-do-replace-regexp :help "Replace text inside marked buffers"] ["Query Replace..." ibuffer-do-query-replace :help "Replace text in marked buffers, asking each time"] ["Query Replace (regexp)..." ibuffer-do-query-replace-regexp :help "Replace text in marked buffers by regexp, asking each time"] ["Print" ibuffer-do-print] ["Toggle modification flag" ibuffer-do-toggle-modified] ["Toggle read-only flag" ibuffer-do-toggle-read-only] ["Toggle lock flag" ibuffer-do-toggle-lock] ["Revert" ibuffer-do-revert :help "Revert marked buffers to their associated file"] ["Rename Uniquely" ibuffer-do-rename-uniquely :help "Rename marked buffers to a new, unique name"] ["Kill" ibuffer-do-delete] ["List lines matching..." ibuffer-do-occur :help "View all lines in marked buffers matching a regexp"] ["Pipe to shell command..." ibuffer-do-shell-command-pipe :help "For each marked buffer, send its contents to a shell command"] ["Pipe to shell command (replace)..." ibuffer-do-shell-command-pipe-replace :help "For each marked buffer, replace its contents with output of shell command"] ["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"] ["Eval..." ibuffer-do-eval :help "Evaluate a Lisp form in each marked buffer"] ["Eval (viewing buffer)..." ibuffer-do-view-and-eval :help "Evaluate a Lisp form in each marked buffer while viewing it"] ["Diff with file" ibuffer-diff-with-file :help "View the differences between this buffer and its file"]))
(defvar ibuffer-name-map (define-keymap "<mouse-1>" 'ibuffer-mouse-toggle-mark "<mouse-2>" 'ibuffer-mouse-visit-buffer "<down-mouse-3>" 'ibuffer-mouse-popup-menu))
(defvar ibuffer-filename/process-header-map (define-keymap "<mouse-1>" 'ibuffer-do-sort-by-filename/process))
(defvar ibuffer-mode-name-map (define-keymap "<mouse-2>" 'ibuffer-mouse-filter-by-mode "RET" 'ibuffer-interactive-filter-by-mode))
(defvar ibuffer-name-header-map (define-keymap "<mouse-1>" 'ibuffer-do-sort-by-alphabetic))
(defvar ibuffer-size-header-map (define-keymap "<mouse-1>" 'ibuffer-do-sort-by-size))
(defvar ibuffer-mode-header-map (define-keymap "<mouse-1>" 'ibuffer-do-sort-by-major-mode))
(defvar ibuffer-mode-filter-group-map (define-keymap "<mouse-1>" 'ibuffer-mouse-toggle-mark "<mouse-2>" 'ibuffer-mouse-toggle-filter-group "RET" 'ibuffer-toggle-filter-group "<down-mouse-3>" 'ibuffer-mouse-popup-menu))
(defvar ibuffer-did-modification nil)
(defvar ibuffer-compiled-formats nil)
(defvar ibuffer-cached-formats nil)
(defvar ibuffer-cached-eliding-string nil)#@453 An alist of functions which describe how to sort buffers.

Note: You most likely do not want to modify this variable directly;
use `define-ibuffer-sorter' instead.

The alist elements are constructed like (NAME DESCRIPTION FUNCTION)
Where NAME is a symbol describing the sorting method, DESCRIPTION is a
short string which will be displayed in the minibuffer and menu, and
FUNCTION is a function of two arguments, which will be the buffers to
compare.
(defvar ibuffer-sorting-functions-alist nil (#$ . 30450))#@204 Insert LIST into the current buffer in as many columns as possible.
The maximum number of columns is determined by the current window
width and the longest string in LIST.

(fn LIST &optional PAD-WIDTH)
(defalias 'ibuffer-columnize-and-insert-list #[513 "\211\204 \300\262\301 \302\303\304\305\"\"\\\245\211\306U\203 \307\262\205^ \211S\306\211W\203J \310@\311\n@GZ\312\"Pc\210A\262\210\211T\262\202& \266\203X \211A\262\242c\210\313c\210\202 \207" [3 window-width apply max mapcar length 0 1 nil make-string 32 "\n"] 12 (#$ . 30966)])
(defalias 'ibuffer-current-mark #[0 "\300\301 \302\"A@\207" [get-text-property line-beginning-position ibuffer-properties] 3])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put ibuffer-current-mark speed -1 put byte-optimizer byte-compile-inline-expand] 5)#@75 Toggle the marked status of the buffer chosen with the mouse.

(fn EVENT)
(defalias 'ibuffer-mouse-toggle-mark #[257 "\302\216\212\303!\210`)\304`\305\"\211\203 \306!\2024 b\210\304\307 \310\"A@\311\211	=\203/ \312\313!\2022 \312	!\262)\207" [buffer-read-only ibuffer-marked-char #[0 "\301\211\207" [buffer-read-only t] 2] mouse-set-point get-text-property ibuffer-filter-group-name ibuffer-toggle-marks line-beginning-position ibuffer-properties nil ibuffer-set-mark 32] 6 (#$ . 31805) "e"])#@103 Like `find-file', but default to the directory of the buffer at point.

(fn FILE &optional WILDCARDS)
(defalias 'ibuffer-find-file #[513 "\300\"\207" [find-file] 5 (#$ . 32311) (byte-code "\301 \302!\203 r\211q\210)\202 \262\303\304\")\305D\207" [default-directory ibuffer-current-buffer buffer-live-p read-file-name "Find file: " t] 3)])#@53 Visit the buffer chosen with the mouse.

(fn EVENT)
(defalias 'ibuffer-mouse-visit-buffer #[257 "\300\212\301!\210\302\303!)!\207" [switch-to-buffer mouse-set-point ibuffer-current-buffer t] 4 (#$ . 32665) "e"])#@43 Display a menu of operations.

(fn EVENT)
(defalias 'ibuffer-mouse-popup-menu #[257 "\304\305!!`\306\307#\216\310\311\"\203 b\210\312!\202< \313p\314 \306\315#\216\212\316 \210\212b\210\317\n!)\210\212\312!+\266\202))\207" [ibuffer-mode-groups-popup inhibit-read-only ibuffer-marked-char ibuffer-mode-operate-menu posn-point event-end make-closure #[0 "\303\301`U\205\n \300b\207" [V0 V1 buffer-read-only t] 2] get-text-property ibuffer-filter-group-name popup-menu t ibuffer-current-state-list #[0 "r\301q\210\302\303\304\305\306\300\"\"!\210\307\310!)\207" [V0 V1 ibuffer-redisplay-engine delq nil mapcar #[257 "\300@!\205 \211\207" [buffer-live-p] 3 "\n\n(fn E)"] ibuffer-redisplay t] 6] ibuffer-unmark-all-marks ibuffer-set-mark] 9 (#$ . 32883) "e"])#@24 

(fn PROPS DIRECTION)
(defalias 'ibuffer-skip-properties #[514 "m?\205/ \300\211\203 \211@\301`\"\203 \302\262A\266\202\202 \262\262\205/ \211y\210\303 \210\202  \207" [nil get-text-property t beginning-of-line] 8 (#$ . 33658)])#@42 Begin customizing Ibuffer interactively.
(defalias 'ibuffer-customize #[0 "\300\301!\207" [customize-group ibuffer] 2 (#$ . 33903) nil])#@103 Move backwards ARG lines, wrapping around the list if necessary.

(fn &optional ARG SKIP-GROUP-NAMES)
(defalias 'ibuffer-backward-line #[512 "\204 \301\262\302 \210\303V\205N \304y\210\203/ \305`\306\"\204) \211\203/ \305`\307\"\203/ db\210\302 \210\310\311\2056 \312B\304\"\210\305`\306\"\203G \301y\210\301\262S\262\202\n \207" [ibuffer-movement-cycle 1 beginning-of-line 0 -1 get-text-property ibuffer-title ibuffer-filter-group-name ibuffer-skip-properties ibuffer-summary (ibuffer-filter-group-name)] 5 (#$ . 34046) "P"])#@101 Move forward ARG lines, wrapping around the list if necessary.

(fn &optional ARG SKIP-GROUP-NAMES)
(defalias 'ibuffer-forward-line #[512 "\204 \301\262\302 \210\203 m\204 \303`\304\"\203 eb\210\303`\305\"\204. \211\203C \303`\306\"\203C \307V\2038 S\262\310\305\205? \311B\301\"\210\307W\203N \312[!\207\307V\205{ \301y\210\203i m\204f \303`\304\"\203i eb\210S\262\310\305\205t \313B\301\"\210\202N \207" [ibuffer-movement-cycle 1 beginning-of-line get-text-property ibuffer-summary ibuffer-title ibuffer-filter-group-name 0 ibuffer-skip-properties (ibuffer-filter-group-name) ibuffer-backward-line (ibuffer-filter-group-name)] 5 (#$ . 34588) "P"])#@138 Visit the buffer on this line.
If optional argument SINGLE is non-nil, then also ensure there is only
one window.

(fn &optional SINGLE)
(defalias 'ibuffer-visit-buffer #[256 "\300\301!\302!\210\205 \303 \207" [ibuffer-current-buffer t switch-to-buffer delete-other-windows] 4 (#$ . 35262) "P"])#@75 Visit the buffer on this line in another window.

(fn &optional NOSELECT)
(defalias 'ibuffer-visit-buffer-other-window #[256 "\300\301!\302p!\210\203 \303!\207\304!\207" [ibuffer-current-buffer t bury-buffer display-buffer switch-to-buffer-other-window] 4 (#$ . 35566) nil])#@71 Visit the buffer on this line in another window, but don't select it.
(defalias 'ibuffer-visit-buffer-other-window-noselect #[0 "\300\301!\207" [ibuffer-visit-buffer-other-window t] 2 (#$ . 35850) nil])#@49 Visit the buffer on this line in another frame.
(defalias 'ibuffer-visit-buffer-other-frame #[0 "\300\301!\302p!\210\303!\207" [ibuffer-current-buffer t bury-buffer switch-to-buffer-other-frame] 3 (#$ . 36058) nil])#@58 Visit the buffer on this line, and delete other windows.
(defalias 'ibuffer-visit-buffer-1-window #[0 "\300\301!\207" [ibuffer-visit-buffer t] 2 (#$ . 36280) nil])#@31 Bury the buffer on this line.
(defalias 'ibuffer-bury-buffer #[0 "\300\301!\302\303`\"T\304!\210\305\306\301\"\210eb\210\211Sy\207" [ibuffer-current-buffer t count-lines 1 bury-buffer ibuffer-update nil] 5 (#$ . 36449) nil])#@75 Visit the tags table in the buffer on this line.  See `visit-tags-table'.
(defalias 'ibuffer-visit-tags-table #[0 "\300\301\302!!\211\203 \303!\207\304\305!\207" [buffer-file-name ibuffer-current-buffer t visit-tags-table error "Specified buffer has no file"] 3 (#$ . 36680) nil])#@270 View marked buffers, or the buffer on the current line.
If optional argument OTHER-FRAME is non-nil, then display each
marked buffer in a new frame.  Otherwise, display each buffer as
a new window in the current frame, splitting vertically.

(fn &optional OTHER-FRAME)
(defalias 'ibuffer-do-view #[256 "\300\203	 \301\202\n \302!\207" [ibuffer-do-view-1 other-frame vertically] 3 (#$ . 36969) nil])#@83 As `ibuffer-do-view', but split windows horizontally.

(fn &optional OTHER-FRAME)
(defalias 'ibuffer-do-view-horizontally #[256 "\300\203	 \301\202\n \302!\207" [ibuffer-do-view-1 other-frame horizontally] 3 (#$ . 37374) nil])#@13 

(fn TYPE)
(defalias 'ibuffer-do-view-1 #[257 "\301 \206	 \302\303!C\304=\205# ?\205# \211G\305V\205# \306\307\310G\"!??\205d \304=\204= \311\312!\210\313 \210\314\211A\262\242!\210\315=\203H \316 \202J \317 SGT\245\320\304=\203Z \321\202` \322\323#\"\262\207" [ibuffer-expert ibuffer-get-marked-buffers ibuffer-current-buffer t other-frame 3 y-or-n-p format "Really create a new frame for %s buffers? " set-buffer-modified-p nil delete-other-windows switch-to-buffer horizontally frame-width frame-height mapcar #[257 "\300 \301\302 !\210\303!\210\301!\207" [selected-frame select-frame make-frame switch-to-buffer] 4 "\n\n(fn BUF)"] make-closure #[257 "\302\303\300\301\304=#\210\305\306!\210\307!\207" [V0 V1 split-window nil horizontally other-window 1 switch-to-buffer] 6 "\n\n(fn BUF)"]] 8 (#$ . 37607)])#@54 View each of the marked buffers in a separate frame.
(defalias 'ibuffer-do-view-other-frame #[0 "\300\301!\207" [ibuffer-do-view t] 2 (#$ . 38441) nil])#@13 

(fn FUNC)
(defalias 'ibuffer-map-marked-lines #[257 "\301\"\302\303!\210\207" [ibuffer-marked-char ibuffer-map-on-mark ibuffer-redisplay t] 4 (#$ . 38599)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put ibuffer-map-marked-lines speed -1 put byte-optimizer byte-compile-inline-expand] 5)#@23 

(fn &optional OWIN)
(defalias 'ibuffer-shrink-to-fit #[256 "\301\302!\210r\303 q\210)\304=\205 \305\306\205 \307 \310\311 !G\245\"\207" [major-mode redisplay t window-buffer ibuffer-mode fit-window-to-buffer nil frame-height window-list selected-frame] 6 (#$ . 38915)])#@86 Display a buffer asking whether to perform OPERATION on NAMES.

(fn OPERATION NAMES)
(defalias 'ibuffer-confirm-operation-on #[514 "\206\274 \211G\302U\203 \303\304\305@#!\207\306\307!r\211q\210\310\311 \210\312!\210eb\210\313)\314\310\315\"\237\310\316@\317\"\203? A\262\2020 @\262\320 \321\322\"\216\323!\210\324\313\211\203\230 \3251d \326 \210\310\211\2620\210\202P T\211\262\327V\204\205 \211A@;\203\220 \330A@\310\331\313$\266\203\204\220 \332@A\"\266\202P \333\334!\266\202P \266\323\335 !\210\336!\210\321\337\"\216\340 \210\303\304\341G#!*\262\266\202\262\207" [ibuffer-expert buffer-read-only 1 y-or-n-p format "Really %s buffer %s? " get-buffer-create "*Ibuffer confirmation*" nil erase-buffer ibuffer-columnize-and-insert-list t window-list nomini window-parameter window-side current-window-configuration make-closure #[0 "\301\300!\207" [V0 set-window-configuration] 2] select-window 0 (error) split-window 4 "too small" string-match signal enlarge-window 3 next-window switch-to-buffer #[0 "\301\300!\207" [V0 kill-buffer] 2] fit-window-to-buffer "Really %s %d buffers? "] 17 (#$ . 39196)])#@77 As `ibuffer-map-lines', but don't set the modification flag.

(fn FUNCTION)
(defalias 'ibuffer-map-lines-nomodify #[257 "\300\301\"\207" [ibuffer-map-lines t] 4 (#$ . 40341)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put ibuffer-map-lines-nomodify speed -1 put byte-optimizer byte-compile-inline-expand] 5)#@13 

(fn MARK)
(defalias 'ibuffer-buffer-names-with-mark #[257 "\300C\301\302#\303\304\"\266\211\242\207" [nil make-closure #[514 "\301=\205 \300\302!\300\242B\240\207" [V0 V1 buffer-name] 5 "\n\n(fn BUF MK)"] ibuffer-map-lines t] 6 (#$ . 40675)])
(defalias 'ibuffer-marked-buffer-names #[0 "\301!\207" [ibuffer-marked-char ibuffer-buffer-names-with-mark] 2])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put ibuffer-marked-buffer-names speed -1 put byte-optimizer byte-compile-inline-expand] 5)
(defalias 'ibuffer-deletion-marked-buffer-names #[0 "\301!\207" [ibuffer-deletion-char ibuffer-buffer-names-with-mark] 2])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put ibuffer-deletion-marked-buffer-names speed -1 put byte-optimizer byte-compile-inline-expand] 5)#@22 

(fn &optional ALL)
(defalias 'ibuffer-count-marked-lines #[256 "\211\203\n \300\301\302\"\207\303\301\302\"\207" [#[514 "\211\300=?\207" [32] 4 "\n\n(fn BUF MARK)"] ibuffer-map-lines t #[514 "\211=\207" [ibuffer-marked-char] 4 "\n\n(fn BUF MARK)"]] 5 (#$ . 41484)])
(defalias 'ibuffer-count-deletion-lines #[0 "\300\301\302\"\207" [#[514 "\211=\207" [ibuffer-deletion-char] 4 "\n\n(fn BUF MARK)"] ibuffer-map-lines t] 4])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put ibuffer-count-deletion-lines speed -1 put byte-optimizer byte-compile-inline-expand] 5)#@13 

(fn FUNC)
(defalias 'ibuffer-map-deletion-lines #[257 "\301\"\207" [ibuffer-deletion-char ibuffer-map-on-mark] 4 (#$ . 42072)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put ibuffer-map-deletion-lines speed -1 put byte-optimizer byte-compile-inline-expand] 5)
(defalias 'ibuffer-assert-ibuffer-mode #[0 "\300\301!\204\n \302\303!\210\304\207" [derived-mode-p ibuffer-mode cl--assertion-failed (derived-mode-p 'ibuffer-mode) nil] 2])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put ibuffer-assert-ibuffer-mode speed -1 put byte-optimizer byte-compile-inline-expand] 5)
(defalias 'ibuffer-buffer-file-name #[0 "\302 \206) \303\300!\203 \206) \303\301!\205  	;\203 	\202  	@\211\205' \304!\262\207" [list-buffers-directory dired-directory buffer-file-name boundp expand-file-name] 3])#@76 Abbreviate FILENAME using `ibuffer-directory-abbrev-alist'.

(fn FILENAME)
(defalias 'ibuffer--abbreviate-file-name #[257 "\302!)\207" [ibuffer-directory-abbrev-alist directory-abbrev-alist abbreviate-file-name] 3 (#$ . 42906)])#@44 Save marked buffers as with `save-buffer'.
(defalias 'ibuffer-do-save #[0 "\302\303!\204\n \304\305!\210\306\307	!\211\204 \310\311 !C\262\312	!\210\313\314	\"\315\316!\210\262\315\316!\210\317\320\"\207" [ibuffer-did-modification ibuffer-marked-char derived-mode-p ibuffer-mode cl--assertion-failed (derived-mode-p 'ibuffer-mode) nil ibuffer-buffer-names-with-mark buffer-name ibuffer-current-buffer ibuffer-set-mark #[514 "\302!\302!\203- rq\210)\204% \303 \304\305\"\216\306!\210\307 )\266\202- rq\210\307 )\210\310\302!=\2048 \310\207" [buffer-file-name ibuffer-did-modification buffer-modified-p current-window-configuration make-closure #[0 "\301\300!\207" [V0 set-window-configuration] 2] switch-to-buffer save-buffer t] 7 "\n\n(fn BUF MARK)"] ibuffer-map-on-mark ibuffer-redisplay t message "Operation finished; saved %s buffers"] 5 (#$ . 43143) nil])#@45 Toggle modification flag of marked buffers.
(defalias 'ibuffer-do-toggle-modified #[0 "\302\303!\204\n \304\305!\210\306\307	!\211\204 \310\311 !C\262\312	!\210\313\314	\"\315\316!\210\262\316\315\316!\210\317\320\"\207" [ibuffer-did-modification ibuffer-marked-char derived-mode-p ibuffer-mode cl--assertion-failed (derived-mode-p 'ibuffer-mode) nil ibuffer-buffer-names-with-mark buffer-name ibuffer-current-buffer ibuffer-set-mark #[514 "rq\210\212\300\301 ?!*\210\302\207" [set-buffer-modified-p buffer-modified-p t] 4 "\n\n(fn BUF MARK)"] ibuffer-map-on-mark ibuffer-redisplay t message "Operation finished; (un)marked as modified %s buffers"] 5 (#$ . 44025) nil])#@225 Toggle read only status in marked buffers.
If optional ARG is a non-negative integer, make buffers read only.
If ARG is a negative integer or 0, make buffers writable.
Otherwise, toggle read only status.

(fn &optional ARG)
(defalias 'ibuffer-do-toggle-read-only #[256 "\302\303!\204\n \304\305!\210\306\307	!\211\204 \310\311 !C\262\312	!\210\313\314\"\315	\"\316\317!\210\262\317\316\317!\210\320\321\"\207" [ibuffer-did-modification ibuffer-marked-char derived-mode-p ibuffer-mode cl--assertion-failed (derived-mode-p 'ibuffer-mode) nil ibuffer-buffer-names-with-mark buffer-name ibuffer-current-buffer ibuffer-set-mark make-closure #[514 "rq\210\212\301\300\250\203 \300\202 \302!*\210\303\207" [V0 read-only-mode toggle t] 4 "\n\n(fn BUF MARK)"] ibuffer-map-on-mark ibuffer-redisplay t message "Operation finished; toggled read only status in %s buffers"] 6 (#$ . 44709) "P"])#@200 Toggle locked status in marked buffers.
If optional ARG is a non-negative integer, lock buffers.
If ARG is a negative integer or 0, unlock buffers.
Otherwise, toggle lock status.

(fn &optional ARG)
(defalias 'ibuffer-do-toggle-lock #[256 "\302\303!\204\n \304\305!\210\306\307	!\211\204 \310\311 !C\262\312	!\210\313\314\"\315	\"\316\317!\210\262\317\316\317!\210\320\321\"\207" [ibuffer-did-modification ibuffer-marked-char derived-mode-p ibuffer-mode cl--assertion-failed (derived-mode-p 'ibuffer-mode) nil ibuffer-buffer-names-with-mark buffer-name ibuffer-current-buffer ibuffer-set-mark make-closure #[514 "rq\210\212\301\300\250\203 \300\202 \302!*\210\303\207" [V0 emacs-lock-mode toggle t] 4 "\n\n(fn BUF MARK)"] ibuffer-map-on-mark ibuffer-redisplay t message "Operation finished; toggled lock status in %s buffers"] 6 (#$ . 45608) "P"])#@49 Kill marked buffers as with `kill-this-buffer'.
(defalias 'ibuffer-do-delete #[0 "\302\303!\204\n \304\305!\210\306\307	!\211\204 \310\311 !C\262\312	!\210\313\314\"\205< \315\316	\"\317\320!\210\262\320\317\320!\210\321\322\"\262\207" [ibuffer-did-modification ibuffer-marked-char derived-mode-p ibuffer-mode cl--assertion-failed (derived-mode-p 'ibuffer-mode) nil ibuffer-buffer-names-with-mark buffer-name ibuffer-current-buffer ibuffer-set-mark ibuffer-confirm-operation-on "kill" #[514 "\300!\205 \301\207" [kill-buffer kill] 4 "\n\n(fn BUF MARK)"] ibuffer-map-on-mark ibuffer-redisplay t message "Operation finished; killed %s buffers"] 5 (#$ . 46472) nil])#@62 Kill buffers marked for deletion as with `kill-this-buffer'.
(defalias 'ibuffer-do-kill-on-deletion-marks #[0 "\302\303!\204\n \304\305!\210\306\307	!\211\204 \310\311 !C\262\312	!\210\313\314\"\2058 \315\316	\"\262\317\320\317!\210\321\322\"\262\207" [ibuffer-did-modification ibuffer-deletion-char derived-mode-p ibuffer-mode cl--assertion-failed (derived-mode-p 'ibuffer-mode) nil ibuffer-buffer-names-with-mark buffer-name ibuffer-current-buffer ibuffer-set-mark ibuffer-confirm-operation-on "kill" #[514 "\300!\205 \301\207" [kill-buffer kill] 4 "\n\n(fn BUF MARK)"] ibuffer-map-on-mark t ibuffer-redisplay message "Operation finished; killed %s buffers"] 5 (#$ . 47152) nil])#@47 Unmark all buffers with mark MARK.

(fn MARK)
(defalias 'ibuffer-unmark-all #[257 "\300\301!\302U\203 \303\304\305!!\210\202& \306\307=\203  \310!\266\202& \311\"\266\312\301!\207" [ibuffer-count-marked-lines t 0 message substitute-command-keys "No buffers marked; use \\<ibuffer-mode-map>\\[ibuffer-mark-forward] to mark a buffer" #[514 "\211\300=\204\n \301\300!\210\302\207" [32 ibuffer-set-mark-1 t] 4 "\n\n(fn BUF MK)"] 13 ibuffer-map-lines ibuffer-map-on-mark ibuffer-redisplay] 5 (#$ . 47850) "cRemove marks (RET means all):"])#@54 Remove all marks from all marked buffers in Ibuffer.
(defalias 'ibuffer-unmark-all-marks #[0 "\300\301!\207" [ibuffer-unmark-all 13] 2 (#$ . 48397) nil])#@212 Toggle which buffers are marked.
In other words, unmarked buffers become marked, and marked buffers
become unmarked.
If point is on a group name, then this function operates on that
group.

(fn &optional GROUP)
(defalias 'ibuffer-toggle-marks #[256 "\300`\301\"\211\203 \211\262\210\302\303\304#\305\306\"\266\307\310!\207" [get-text-property ibuffer-filter-group-name ibuffer-map-lines #[514 "\211=\203\f \301\302!\210\303\207\211\302=\203 \301!\210\304\207\303\207" [ibuffer-marked-char ibuffer-set-mark-1 32 nil t] 4 "\n\n(fn BUF MARK)"] nil message "%s buffers marked" ibuffer-redisplay t] 5 (#$ . 48557) nil])#@114 Change all OLD marks to NEW marks.
OLD and NEW are both characters used to mark buffers.

(fn &optional OLD NEW)
(defalias 'ibuffer-change-marks #[512 "\300=\204\f \211\300=\203 \301 \207\302\303\304#!\305\306\"\207" [13 ding ibuffer-map-lines make-closure #[514 "\211\301=\205 \302\300!\210\303\207" [V0 V1 ibuffer-set-mark t] 4 "\n\n(fn BUF MARK)"] message "%s marks changed"] 7 (#$ . 49186) (byte-code "\301\302\303!\210\304 \302\305\"\210\304 )D\207" [cursor-in-echo-area t message "Change (old mark): " read-char "Change %c marks to (new mark): "] 4)])
(defalias 'ibuffer-get-region-and-prefix #[0 "\301!\302 \203 \303 \304 E\207\305\211E\207" [current-prefix-arg prefix-numeric-value use-region-p region-beginning region-end nil] 4])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put ibuffer-get-region-and-prefix speed -1 put byte-optimizer byte-compile-inline-expand] 5)#@136 Mark the buffers in the region, or ARG buffers.
If point is on a group name, this function operates on that group.

(fn START END ARG)
(defalias 'ibuffer-mark-forward #[771 "\301$\207" [ibuffer-marked-char ibuffer-mark-region-or-n-with-char] 8 (#$ . 50101) (byte-code "\301!\302 \203 \303 \304 E\207\305\211E\207" [current-prefix-arg prefix-numeric-value use-region-p region-beginning region-end nil] 4)])#@138 Unmark the buffers in the region, or ARG buffers.
If point is on a group name, this function operates on that group.

(fn START END ARG)
(defalias 'ibuffer-unmark-forward #[771 "\300\301$\207" [ibuffer-mark-region-or-n-with-char 32] 8 (#$ . 50521) (byte-code "\301!\302 \203 \303 \304 E\207\305\211E\207" [current-prefix-arg prefix-numeric-value use-region-p region-beginning region-end nil] 4)])#@147 Unmark the buffers in the region, or previous ARG buffers.
If point is on a group name, this function operates on that group.

(fn START END ARG)
(defalias 'ibuffer-unmark-backward #[771 "\300[#\207" [ibuffer-unmark-forward] 7 (#$ . 50931) (byte-code "\301!\302 \203 \303 \304 E\207\305\211E\207" [current-prefix-arg prefix-numeric-value use-region-p region-beginning region-end nil] 4)])#@32 

(fn START END ARG MARK-CHAR)
(defalias 'ibuffer-mark-region-or-n-with-char #[1028 "\300 \203 `\301\"b\210\302\"\210b\207\302\"\207" [use-region-p count-lines ibuffer-mark-interactive] 9 (#$ . 51332)])#@36 

(fn ARG MARK &optional MOVEMENT)
(defalias 'ibuffer-mark-interactive #[770 "\300\301!\204\n \302\303!\210\204 \304\262\211\203 \211\305W\203 [\262\306\305!\210\307`\310\"\211\2035 \311\312!\210\313\314#\207\306\305\315\"\210\305V\203P \316!\210\306\304\315\"\210S\262\202: \305W\205f \306\317\315\"\210\316!\210T\262\202P \207" [derived-mode-p ibuffer-mode cl--assertion-failed (derived-mode-p 'ibuffer-mode) 1 0 ibuffer-forward-line get-text-property ibuffer-filter-group-name require ibuf-ext ibuffer-mark-on-buffer identity t ibuffer-set-mark -1] 8 (#$ . 51549)])#@13 

(fn MARK)
(defalias 'ibuffer-set-mark #[257 "\302\303!\204\n \304\305!\210\306\307!\210\306\310 \210\311 )\207" [inhibit-read-only ibuffer-did-modification derived-mode-p ibuffer-mode cl--assertion-failed (derived-mode-p 'ibuffer-mode) t ibuffer-set-mark-1 ibuffer-redisplay-current beginning-of-line] 3 (#$ . 52140)])#@13 

(fn MARK)
(defalias 'ibuffer-set-mark-1 #[257 "\300 \301 \302\303\304 D$\207" [line-beginning-position line-end-position put-text-property ibuffer-properties ibuffer-current-buffer] 9 (#$ . 52469)])#@149 Mark for deletion the buffers in the region, or ARG buffers.
If point is on a group name, this function operates on that group.

(fn START END ARG)
(defalias 'ibuffer-mark-for-delete #[771 "\301$\207" [ibuffer-deletion-char ibuffer-mark-region-or-n-with-char] 8 (#$ . 52680) (byte-code "\301!\302 \203 \303 \304 E\207\305\211E\207" [current-prefix-arg prefix-numeric-value use-region-p region-beginning region-end nil] 4)])#@122 Mark for deletion the ARG previous buffers.
If point is on a group name, this function operates on that group.

(fn ARG)
(defalias 'ibuffer-mark-for-delete-backwards #[257 "\301\302#\207" [ibuffer-deletion-char ibuffer-mark-interactive -1] 5 (#$ . 53118) "p"])#@31 

(fn &optional MUST-BE-LIVE)
(defalias 'ibuffer-current-buffer #[256 "\300\301 \302\"@\203# \303!\203 \304!\204# \305\306\307\310!#\210\207\305\311!\210\207" [get-text-property line-beginning-position ibuffer-properties bufferp buffer-live-p error "Buffer %s has been killed; %s" substitute-command-keys "use `\\[ibuffer-update]' to update" "No buffer on this line"] 7 (#$ . 53386)])
(defalias 'ibuffer-active-formats-name #[0 "\302\301!\203) \303\211\203\" \211@\211@	\236\211\203 @\262\210A\266\202\202 \210\211\206( \304\207\304\207" [ibuffer-filtering-qualifiers ibuffer-filter-format-alist boundp nil :ibuffer-formats] 5])#@20 

(fn UNCOMPILEDP)
(defalias 'ibuffer-current-formats #[257 "\304 \305 \210\211\306=\203 \203 \207	\207\211\203 \n\202 \236A@\207" [ibuffer-formats ibuffer-compiled-formats ibuffer-filter-format-alist ibuffer-compiled-filter-formats ibuffer-active-formats-name ibuffer-check-formats :ibuffer-formats] 4 (#$ . 54031)])#@30 

(fn &optional UNCOMPILEDP)
(defalias 'ibuffer-current-format #[256 "\204 \301\302!8\207" [ibuffer-current-format 0 ibuffer-current-formats] 4 (#$ . 54362)])#@13 

(fn FORM)
(defalias 'ibuffer-expand-format-entry #[257 "\211:\204\n \2119\203o \301\302\303:\203 @\202 !P!\304!\204, \211\236\204, \305\306\"\210\307\211\211\211:\203[ A@\206< \310\262\3118\206F \312\262\3138\206P \314\262\3158\262\202g \310\262\312\262\314\262\307\262\257\207\207" [ibuffer-inline-columns intern "ibuffer-make-column-" symbol-name fboundp error "Unknown column %s in ibuffer-formats" nil 0 2 -1 3 :left 4] 11 (#$ . 54531)])#@32 

(fn STRVAR ELIDE FROM-END-P)
(defalias 'ibuffer-compile-make-eliding-form #[771 "\301\302\303#\2030 \304\305\203 \306\307\310BBE\202, \306\311\312\313\314DE\315BBBEF\207\207" [ibuffer-eliding-string propertize font-lock-face bold if (> strlen 5) concat substring ((string-width ibuffer-eliding-string)) truncate-string-to-width - strlen string-width (nil 46)] 13 (#$ . 55010)])#@33 

(fn STRVAR MAXVAR FROM-END-P)
(defalias 'ibuffer-compile-make-substring-form #[771 "\211\203 \300\301\302\303\302E\304BBBB\207\300\305BBB\207" [truncate-string-to-width str strlen - (32) (nil 32)] 9 (#$ . 55410)])#@35 

(fn STRVAR WIDTHFORM ALIGNMENT)
(defalias 'ibuffer-compile-make-format-form #[771 "\300\301\302\303\304\305BBB\306\267\202, \307	F\2021 \307F\2021 \307F\2021 \310\311\"E\207" [(make-string tmp2 32) (make-string (- tmp1 tmp2) 32) progn setq tmp1 (tmp2 (/ tmp1 2)) #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (:right 17 :center 26 :left 35)) concat error "Invalid alignment %s"] 11 (#$ . 55636)])#@15 

(fn FORMAT)
(defalias 'ibuffer-compile-format #[257 "\302\211\211\203\205\211@\211;\203 \303D\202z\304!\211@A@\3058\3068\3078\211\310W\262\2053 [\262\311\302\211\211\211\211\211\211\250\203G \310Y\203l \311\262\311\262\312\262\313\314\315\316\315\317\250\203a \202b \320\321BB#ED\262\n\250\203y \n\310V\203\254 \311\262\315>\204\211 \315B\262\313\314\315\322\315\250\203\231 \202\232 \323#E\324\314\315\325\315#EF\262\f\236\211\203\272 \211A@\202\302 \326\327B\330BB\262\331N\203\317 \332\202\320 \333\334\335\250\203\335 \202\336 \320E\336\335\250\203\354 \202\355 \323E\204\367 \203g\203	\250\204	\320DC\262\203\250\204\323DB\262\2032\2032\337\n\337\fEF\202D\203?\340\nE\202D\340	EC\262\n\314\315\205P\341BBB\nB\262\n\342\n\315\"C\"\262\n\202q\"\nB\262\n\343BB\266\222B\262A\266\202\202 \210	\204\220\344\345!\203\224\346\202\225\347\350\351\343\237BBE!\207" [ibuffer-inline-columns ibuffer-always-compile-formats nil insert ibuffer-expand-format-entry 2 3 4 0 t (str strlen tmp1 tmp2) progn setq str ibuffer-compile-make-format-form - min (strlen) ibuffer-compile-make-substring-form max (setq strlen (string-width str)) ibuffer-compile-make-eliding-form or (buffer mark) ("") ibuffer-column-summarizer #[514 "\300\301\302DC\303\304D\305\306\302\307\304\nD\310BBEF\311BBBD\207" [insert let ret put quote 'ibuffer-column-summary cons get ('ibuffer-column-summary) (ret)] 13 "\n\n(fn ARG SYM)"] #[514 "\300D\207" [insert] 4 "\n\n(fn ARG SYM)"] < strlen > if when (strlen (string-width str)) append let featurep bytecomp byte-compile identity lambda (buffer mark)] 29 (#$ . 56095)])#@30 Recompile `ibuffer-formats'.
(defalias 'ibuffer-recompile-formats #[0 "\304\305\"\306\302!\205 \304\307\n\"\211\207" [ibuffer-formats ibuffer-compiled-formats ibuffer-filter-format-alist ibuffer-compiled-filter-formats mapcar ibuffer-compile-format boundp #[257 "\211@\300\301A\"B\207" [mapcar #[257 "\300\301\"\207" [mapcar ibuffer-compile-format] 4 "\n\n(fn FORMATS)"]] 5 "\n\n(fn ENTRY)"]] 3 (#$ . 57823) nil])#@15 

(fn FORMAT)
(defalias 'ibuffer-clear-summary-columns #[257 "\211\211\205! \211@\211:\203 \211@\300N\203 \301@\302\303#\210A\266\202\202 \207" [ibuffer-column-summarizer put ibuffer-column-summary nil] 7 (#$ . 58248)])
(defalias 'ibuffer-check-formats #[0 "\204 \306\307!\210\310\311!	\203: \n\203: \n=\203: \203: \f\232\203: \211\205O =?\205O \205O ?\205O \312\313!\210\314 \210\f\211\203L \312\315!\207" [ibuffer-formats ibuffer-compiled-formats ibuffer-cached-formats ibuffer-cached-eliding-string ibuffer-eliding-string ibuffer-cached-filter-formats error "No formats!" featurep ibuf-ext message "Formats have changed, recompiling..." ibuffer-recompile-formats "Formats have changed, recompiling...done" ibuffer-filter-format-alist ibuffer-compiled-filter-formats] 3])
(defvar ibuffer-inline-columns nil)
(custom-declare-face 'ibuffer-locked-buffer '((((background dark)) (:foreground "RosyBrown")) (t (:foreground "brown4"))) "Face used for locked buffers in Ibuffer." :version "26.1" :group 'ibuffer :group 'font-lock-highlighting-faces)
(defvar ibuffer-locked-buffer 'ibuffer-locked-buffer)
(byte-code "\304B\305\306\307\310#\210\311B\305\312\307\313#\210\314B\305\315\307\316#\210\317B\305\320\307\321#\210\322B\305\323\307\324#\210\305\323\325	#\210\305\323\326\327#\210\305\323\330\331#\210\332B\305\333\307\334#\210\305\333\325\n#\210\305\333\326\335#\210\305\333\330\331#\210\336B\305\337\307\340#\210\305\337\325#\207" [ibuffer-inline-columns ibuffer-name-header-map ibuffer-size-header-map ibuffer-mode-header-map (ibuffer-make-column-mark (with-current-buffer buffer (string mark))) put ibuffer-make-column-mark ibuffer-column-name " " (ibuffer-make-column-read-only (with-current-buffer buffer (if buffer-read-only (string ibuffer-read-only-char) " "))) ibuffer-make-column-read-only "R" (ibuffer-make-column-locked (propertize (with-current-buffer buffer (if (and (boundp 'emacs-lock-mode) emacs-lock-mode) (string ibuffer-locked-char) " ")) 'font-lock-face 'ibuffer-locked-buffer)) ibuffer-make-column-locked "L" (ibuffer-make-column-modified (with-current-buffer buffer (if (buffer-modified-p) (string ibuffer-modified-char) " "))) ibuffer-make-column-modified "M" (ibuffer-make-column-name (propertize (with-current-buffer buffer (let ((string (propertize (buffer-name) 'font-lock-face (ibuffer-buffer-name-face buffer mark)))) (if (not (seq-position string 10)) string (string-replace "\n" (propertize "^J" 'font-lock-face 'escape-glyph) string)))) 'mouse-face 'highlight 'keymap ibuffer-name-map 'ibuffer-name-column t 'help-echo '(if tooltip-mode "mouse-1: mark this buffer\nmouse-2: select this buffer\nmouse-3: operate on this buffer" "mouse-1: mark buffer   mouse-2: select buffer   mouse-3: operate"))) ibuffer-make-column-name "Name" header-mouse-map ibuffer-column-summarizer (lambda (strings) (let ((bufs (length strings))) (cond ((zerop bufs) "No buffers") ((= 1 bufs) "1 buffer") (t (format "%s buffers" bufs))))) ibuffer-column-summary nil (ibuffer-make-column-size (with-current-buffer buffer (format "%s" (buffer-size)))) ibuffer-make-column-size "Size" (lambda (column-strings) (let ((total 0)) (dolist (string column-strings) (setq total (+ (float (string-to-number string)) total))) (format "%.0f" total))) (ibuffer-make-column-mode (propertize (with-current-buffer buffer (format-mode-line mode-name nil nil (current-buffer))) 'mouse-face 'highlight 'keymap ibuffer-mode-name-map 'help-echo "mouse-2: filter by this mode")) ibuffer-make-column-mode "Mode"] 4)#@20 

(fn BUFFER MARK)
(defalias 'ibuffer-make-column-process #[514 "rq\210\300!\211\203 \301\302\303!#\202 \304)\207" [get-buffer-process format "(%s %s)" process-status ""] 8 (#$ . 61791)])
(byte-code "\300\301\302\303#\210\300\301\304\305#\210\300\301\306\307#\207" [put ibuffer-make-column-process ibuffer-column-name "Process" ibuffer-column-summarizer (lambda (strings) (let ((total (length (delete "" strings)))) (cond ((zerop total) "No processes") ((= 1 total) "1 process") (t (format "%d processes" total))))) ibuffer-column-summary nil] 4)#@20 

(fn BUFFER MARK)
(defalias 'ibuffer-make-column-filename #[514 "rq\210\300\301 \206 \302!)\207" [ibuffer--abbreviate-file-name ibuffer-buffer-file-name ""] 4 (#$ . 62349)])
(byte-code "\300\301\302\303#\210\300\301\304\305#\210\300\301\306\307#\207" [put ibuffer-make-column-filename ibuffer-column-name "Filename" ibuffer-column-summarizer (lambda (strings) (let ((total (length (delete "" strings)))) (cond ((zerop total) "No files") ((= 1 total) "1 file") (t (format "%d files" total))))) ibuffer-column-summary nil] 4)#@20 

(fn BUFFER MARK)
(defalias 'ibuffer-make-column-filename-and-process #[514 "rq\210\300!\301\"\2033 \302\303\304\305!#\306\307\310%G\311V\203, \303\312\"\202- \313P\266\202\2026 \211\266\202)\207" [get-buffer-process ibuffer-make-column-filename propertize format "(%s %s)" process-status font-lock-face italic ibuffer-process 0 " %s" ""] 10 (#$ . 62881)])
(byte-code "\301\302\303\304#\210\301\302\305#\210\301\302\306\307#\210\301\302\310\311#\207" [ibuffer-filename/process-header-map put ibuffer-make-column-filename-and-process ibuffer-column-name "Filename/Process" header-mouse-map ibuffer-column-summarizer (lambda (strings) (setq strings (delete "" strings)) (let ((procs 0) (files 0)) (dolist (string strings) (when (get-text-property 1 'ibuffer-process string) (setq procs (1+ procs))) (setq files (1+ files))) (concat (cond ((zerop files) "No files") ((= 1 files) "1 file") (t (format "%d files" files))) ", " (cond ((zerop procs) "no processes") ((= 1 procs) "1 process") (t (format "%d processes" procs)))))) ibuffer-column-summary nil] 4)#@28 

(fn STR WIDTH ALIGNMENT)
(defalias 'ibuffer-format-column #[771 "\300\301\245\302\"\300\211\301\245Z\302\"\303\267\202 Q\207Q\207Q\207" [make-string 2 32 #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (:right 20 :center 26))] 8 (#$ . 63954)])#@17 

(fn BUF MARK)
(defalias 'ibuffer-buffer-name-face #[514 "\211=\203 	\207\211\n=\203 \207\305\306\f\211\203= \211@\211@V\2036 rq\210\307A@!)\2036 \211@\262\3108\262A\266\202\202 \207" [ibuffer-marked-char ibuffer-marked-face ibuffer-deletion-char ibuffer-deletion-face ibuffer-fontification-alist -1 nil eval 2] 8 (#$ . 64256)])#@81 Insert a line describing BUFFER and MARK using FORMAT.

(fn BUFFER MARK FORMAT)
(defalias 'ibuffer-insert-buffer-line #[771 "\300\301!\204\n \302\303!\210`\"\210\304`\305D$\266\306c\207" [derived-mode-p ibuffer-mode cl--assertion-failed (derived-mode-p 'ibuffer-mode) put-text-property ibuffer-properties "\n"] 10 (#$ . 64604)])
(defalias 'ibuffer-redisplay-current #[0 "\301\302!\204\n \303\304!\210m\203 \305y\210\306 \210\307\310\311\312!\"\313!\210\314 \211\205B \315\316 \317\"A@\212`\320 T|\210\321\311 #)\210\205@ \322 \262\207" [ibuffer-shrink-to-minimum-size derived-mode-p ibuffer-mode cl--assertion-failed (derived-mode-p 'ibuffer-mode) -1 beginning-of-line mapcar ibuffer-expand-format-entry ibuffer-current-format t ibuffer-clear-summary-columns ibuffer-current-buffer get-text-property line-beginning-position ibuffer-properties line-end-position ibuffer-insert-buffer-line ibuffer-shrink-to-fit] 7])#@18 

(fn MARK FUNC)
(defalias 'ibuffer-map-on-mark #[514 "\300\301\302#!\207" [ibuffer-map-lines make-closure #[514 "\301=\205\n \300\301\"\207" [V0 V1] 5 "\n\n(fn BUF MK)"]] 7 (#$ . 65539)])#@329 Call FUNCTION for each buffer.
Set the ibuffer modification flag unless NOMODIFY is non-nil.

If optional argument GROUP is non-nil, then only call FUNCTION on
buffers in filtering group GROUP.

FUNCTION is called with two arguments:
the buffer object itself and the current mark symbol.

(fn FUNCTION &optional NOMODIFY GROUP)
(defalias 'ibuffer-map-lines #[769 "\301\302!\204 \303\304!\210\202 \210\305\306!\210\307\212eb\210\305\306!\210`)`\"T\211C\306\211\310\311#\216\312eb\210\305\306\313\"\210m\204\264 \314`\315\"\204\264 \305\306\313\"\210m\204\264 \314`\315\"\204\264 \316\317 !\203| \203k \314`\320\"\211\205f \232\262\205} \212\317 \314\321 \322\"A@\")\202} \323T\262\211\324\267\202\251 \325y\266\2025 \321 \326 T|\210T\262W\203\260 \211\242S\240\266\2025 T\262\325y\210\210\2025 )\207" [buffer-read-only derived-mode-p ibuffer-mode cl--assertion-failed (derived-mode-p 'ibuffer-mode) ibuffer-forward-line 0 count-lines make-closure #[0 "\303\301\204\n \304\305!\210eb\210\306\307!\210\306\300\242S!\207" [V0 V1 buffer-read-only t set-buffer-modified-p nil ibuffer-forward-line 0] 2] nil t get-text-property ibuffer-summary buffer-live-p ibuffer-current-buffer ibuffer-filter-group line-beginning-position ibuffer-properties kill #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (nil 135 kill 142)) 1 line-end-position] 12 (#$ . 65738)])#@10 

(fn N)
(defalias 'ibuffer--near-buffers #[257 "\300\301\302\303\304\"\305\306\307!\"\"\"\207" [delq nil mapcar make-closure #[257 "\301\302\303\300!\203\f \202 S[!\304\"@\207" [V0 get-text-property line-beginning-position natnump ibuffer-properties] 5 "\n\n(fn X)"] number-sequence 1 abs] 9 (#$ . 67154)])#@51 Return a list of buffer objects currently marked.
(defalias 'ibuffer-get-marked-buffers #[0 "\300\301\302\303\304 \"\"\207" [delq nil mapcar #[257 "\211A=\205	 \211@\207" [ibuffer-marked-char] 3 "\n\n(fn E)"] ibuffer-current-state-list] 5 (#$ . 67473)])#@219 Return a list like (BUF . MARK) of all buffers in an ibuffer.
If POS is non-nil, return a list like (BUF MARK POINT), where POINT is
the value of point at the beginning of the line for that buffer.

(fn &optional POS)
(defalias 'ibuffer-current-state-list #[256 "\300C\203 \301\302\"\303\304\"\266\202 \301\305\"\303\304\"\266\211\242\237\207" [nil make-closure #[514 "\301!\205 \300`E\300\242B\240\207" [V0 buffer-live-p] 6 "\n\n(fn BUF MARK)"] ibuffer-map-lines t #[514 "\301!\205 \300B\300\242B\240\207" [V0 buffer-live-p] 5 "\n\n(fn BUF MARK)"]] 6 (#$ . 67734)])#@68 Return a list like (BUF . MARK) of all open buffers.

(fn CURBUFS)
(defalias 'ibuffer-current-buffers-with-marks #[257 "\300 \301\302\303\"\"\207" [ibuffer-current-state-list mapcar make-closure #[257 "\211\300\236\211\206\n \301B\207" [V0 32] 4 "\n\n(fn BUF)"]] 6 (#$ . 68323)])#@23 

(fn BUF PREDICATES)
(defalias 'ibuffer-buf-matches-predicates #[514 "\300\301!\211\203( \211@\211;\203 \302\"\202 \211!\203! \303\262A\266\202\202 \210\207" [nil buffer-name string-match t] 9 (#$ . 68611)])#@39 

(fn IBUFFER-BUF LAST BMARKLIST ALL)
(defalias 'ibuffer-filter-buffers #[1028 "\300\301!\302\303\304\305\306\n\f%\"\"\207" [featurep ibuf-ext delq nil mapcar make-closure #[257 "\211@\f\203\f \302=\204 \300\203 \305\202 \306\301\303#\205 \207" [V0 V1 V2 V3 ibuffer-always-show-last-buffer ibuffer-ext-visible-p ibuffer-visible-p] 6 "\n\n(fn E)"]] 14 (#$ . 68837)])#@38 

(fn BUF ALL &optional IBUFFER-BUF)
(defalias 'ibuffer-visible-p #[770 "\204\f \302\"?\205 	\206 \211\205 \211=?\207" [ibuffer-maybe-show-predicates ibuffer-view-ibuffer ibuffer-buf-matches-predicates] 6 (#$ . 69222)])#@53 Sort the buffers by how recently they've been used.
(defalias 'ibuffer-do-sort-by-recency #[0 "\303\211	=\203 \n?\304\305!\210\303\211\207" [ibuffer-sorting-mode ibuffer-last-sorting-mode ibuffer-sorting-reversep recency ibuffer-redisplay t] 3 (#$ . 69454) nil])
(byte-code "\301\302\303EB\301\207" [ibuffer-sorting-functions-alist recency "recency" #[514 "\301r@q\210\206 \302)r@q\210\206 \302)\"\207" [buffer-display-time time-less-p 0] 5 "\n\n(fn A B)"]] 3)
(defalias 'ibuffer-update-format #[0 "\204 \302	?\205 \303\304!\207" [ibuffer-current-format ibuffer-formats 0 error "Ibuffer error: no formats!"] 2])#@36 Switch the current display format.
(defalias 'ibuffer-switch-format #[0 "\302\303!\204\n \304\305!\210:\204 \306\307!\210	\310\311!GSY\203! \312\202# 	T\313 \210\314\315!\207" [ibuffer-formats ibuffer-current-format derived-mode-p ibuffer-mode cl--assertion-failed (derived-mode-p 'ibuffer-mode) error "Ibuffer error: No formats!" ibuffer-current-formats nil 0 ibuffer-update-format ibuffer-redisplay t] 3 (#$ . 70087) nil])#@15 

(fn FORMAT)
(defalias 'ibuffer-update-title-and-summary #[257 "\303\304!\204\n \305\306!\210\307\310e\311\"\203 e\312e\311\"|\210eb\210\313``\211\203\217 \211@\211;\2030 \211\202\206 \211\242\243\211\242\243\211\242\243\211\242\243\314\211\315W\262\203Q [\262	\316N\206] \317\320\"\211G\321NW\203u \322Z	#\202v \203\204 \323\324\325\326%\262\266\215c\210A\266\202\202! \210\313`\327#\210\330c\210\212\331y\210\332 \210`\333 {)\334\335\336\337\"\"\266\330c\266`\311\307\340	F#\210db\210\310dS\341\"\203\314 \342d\341\"d|\210\n\205J\313`\330c\210\211\203F\211@\211;\203\351 \343G\344\"\202=\211\242\243\211\242\243\211\242\243\211\242\243\314\211\315W\262\203\n[\262	\345N\203	\345N\n\346N!\202%\343\n\316NG\344\"\211G\211W\203:\322Z#\266\214\202=\266\214c\210A\266\202\202\326 \210`\347#)\207" [inhibit-modification-hooks ibuffer-title-face ibuffer-display-summary derived-mode-p ibuffer-mode cl--assertion-failed (derived-mode-p 'ibuffer-mode) t get-text-property ibuffer-title next-single-property-change add-text-properties nil 0 ibuffer-column-name error "Unknown column %s in ibuffer-formats" header-mouse-map ibuffer-format-column propertize mouse-face highlight keymap (ibuffer-title-header t) "\n" -1 beginning-of-line line-end-position apply insert mapcar #[257 "\211\300=\204 \211\301=\204 \302\207\300\207" [32 10 45] 3 "\n\n(fn C)"] font-lock-face ibuffer-summary previous-single-property-change make-string 32 ibuffer-column-summarizer ibuffer-column-summary (ibuffer-summary t)] 26 (#$ . 70520)])#@196 Redisplay the current list of buffers.
This does not show new buffers; use `ibuffer-update' for that.

If optional arg SILENT is non-nil, do not display progress messages.

(fn &optional SILENT)
(defalias 'ibuffer-redisplay #[256 "\302\303!\210\211\204\f \304\305!\210\306 \211\204$ \307\310!\203$ \204  	\203$ \304\311!\210\312\313\"\210\2041 \304\314!\210\302\303!\207" [ibuffer-filtering-qualifiers ibuffer-hidden-filter-groups ibuffer-forward-line 0 message "Redisplaying current buffer list..." ibuffer-current-state-list featurep ibuf-ext "No buffers! (note: filtering in effect)" ibuffer-redisplay-engine t "Redisplaying current buffer list...done"] 5 (#$ . 72111) nil])#@250 Regenerate the list of all buffers.

Prefix arg non-nil means to toggle whether buffers that match
`ibuffer-maybe-show-predicates' should be displayed.

If optional arg SILENT is non-nil, do not display progress messages.

(fn ARG &optional SILENT)
(defalias 'ibuffer-update #[513 "\203 ?\306\307!\210\310 \311pA@\203) 	\312=\203) \313A@!\203) \3148\202, A@\315!$\211\204C \316\317!\203C \n\203C \320\321!\210\204K \320\322!\210\323\"\210\204X \320\324!\210\266\325=\203g \326\327!\210\202n \203n \326 \210\306\307!\210\f\205{ \n\205{ \211\207" [ibuffer-display-maybe-show-predicates ibuffer-always-show-last-buffer ibuffer-filtering-qualifiers ibuffer-shrink-to-minimum-size ibuffer-use-header-line ibuffer-header-line-format ibuffer-forward-line 0 buffer-list ibuffer-filter-buffers :nomini minibufferp 2 ibuffer-current-buffers-with-marks featurep ibuf-ext message "No buffers! (note: filtering in effect)" "Updating buffer list..." ibuffer-redisplay-engine "Updating buffer list...done" onewindow ibuffer-shrink-to-fit t header-line-format] 8 (#$ . 72798) "P"])#@18 

(fn BMARKLIST)
(defalias 'ibuffer-sort-bufferlist #[257 "\204 \303\304!\210	\236\3058\203 \211\203 \306\"\202 \n\203% \211\237\207\207" [ibuffer-sorting-functions-alist ibuffer-sorting-mode ibuffer-sorting-reversep require ibuf-ext 2 sort] 6 (#$ . 73889)])#@57 

(fn NAME DISPLAY-NAME FILTER-STRING FORMAT BMARKLIST)
(defalias 'ibuffer-insert-filter-group #[1285 "\302`\303\304\261\210`\305\306\307	\310\311\312\313G\314V\203& \315\316F\202' \211\262\257\n#\210\317c\210\211\205S \320`\211\203M \211@\321@A#\210A\266\202\2027 \210`\322$\207" [ibuffer-filter-group-name-face ibuffer-mode-filter-group-map add-text-properties "[ " " ]" ibuffer-filter-group-name font-lock-face keymap mouse-face highlight help-echo (if tooltip-mode "mouse-1: toggle marks in this group\nmouse-2: hide/show this filtering group" "mouse-1: toggle marks  mouse-2: hide/show") 0 concat (if tooltip-mode "\n" " ") "\n" put-text-property ibuffer-insert-buffer-line ibuffer-filter-group] 22 (#$ . 74164)])#@35 

(fn BMARKLIST &optional IGNORE)
(defalias 'ibuffer-redisplay-engine #[513 "\304\305!\204\n \306\307!\210\310 \311\312\310\313!\"\314e`\"\313\315\316!\211\203& \317!\202+ \320BC\321!\210\322\323\"\216\324\325 \210\326 \210\211\237\211\203\221 \211@\211@\205M \211\n\235A\211\204` \204` \203` \203\210 \327\203l \330P\202m 	\203y \331!\202z \332?\205\206 \333!%\210\266A\266\202\202> \210\334!*\207" [inhibit-modification-hooks buffer-read-only ibuffer-hidden-filter-groups ibuffer-show-empty-filter-groups derived-mode-p ibuffer-mode cl--assertion-failed (derived-mode-p 'ibuffer-mode) ibuffer-current-format mapcar ibuffer-expand-format-entry t count-lines featurep ibuf-ext ibuffer-generate-filter-groups "Default" ibuffer-clear-summary-columns make-closure #[0 "\303\304\n!\210\305eb\210\300y\207" [V0 buffer-read-only ibuffer-did-modification t set-buffer-modified-p nil] 2] nil erase-buffer ibuffer-update-format ibuffer-insert-filter-group " ..." ibuffer-format-filter-group-data "" ibuffer-sort-bufferlist ibuffer-update-title-and-summary] 19 (#$ . 74908)])#@175 Display a list of buffers, in another window.
If optional argument FILES-ONLY is non-nil, then add a filter for
buffers which are visiting a file.

(fn &optional FILES-ONLY)
(defalias 'ibuffer-list-buffers #[256 "\300\301\302\205 \303\301$\207" [ibuffer t nil ((filename . ".*"))] 6 (#$ . 76012) "P"])#@189 Like `ibuffer', but displayed in another window by default.
If optional argument FILES-ONLY is non-nil, then add a filter for
buffers which are visiting a file.

(fn &optional FILES-ONLY)
(defalias 'ibuffer-other-window #[256 "\300\301\302\205 \303#\207" [ibuffer t nil ((filename . ".*"))] 5 (#$ . 76322) "P"])#@858 Begin using Ibuffer to edit a list of buffers.
Type \<ibuffer-mode-map>\[describe-mode] after entering ibuffer for more information.

All arguments are optional.
OTHER-WINDOW-P says to use another window.
NAME specifies the name of the buffer (defaults to "*Ibuffer*").
QUALIFIERS is an initial set of filtering qualifiers to use;
  see `ibuffer-filtering-qualifiers'.
NOSELECT means don't select the Ibuffer buffer.
SHRINK means shrink the buffer to minimal size.  The special
  value `onewindow' means always use another window.
FILTER-GROUPS is an initial set of filtering groups to use;
  see `ibuffer-filter-groups'.
FORMATS is the value to use for `ibuffer-formats'.
  If specified, then the variable `ibuffer-formats' will have
  that value locally in this buffer.

(fn &optional OTHER-WINDOW-P NAME QUALIFIERS NOSELECT SHRINK FILTER-GROUPS FORMATS)
(defalias 'ibuffer #[1792 "\203 \306\262\307\206 \310!\203' \203 \311\306\"\2043 \312\306\"\210\2023 \203/ \311\2020 \313!\210r\211q\210\314 r\315\316\"\216\317\320\321\"!\210\322\323!\204O \323 \210\203U \203a \324\325!\210\203k \324\325!\210\203u \326\304!\210\327\330!\210\331\321\306\"\210\332\216\330\333\334!)\210 ?\205\222 \335\336\337!!+\207" [ibuffer-use-other-window ibuffer-shrink-to-minimum-size ibuffer-filtering-qualifiers ibuffer-filter-groups ibuffer-formats buffer-read-only t get-buffer-create "*Ibuffer*" display-buffer pop-to-buffer switch-to-buffer internal--before-save-selected-window make-closure #[0 "\301\300!\207" [V0 internal--after-save-selected-window] 2] select-window get-buffer-window 0 derived-mode-p ibuffer-mode require ibuf-ext make-local-variable ibuffer-update nil ibuffer-forward-line #[0 "\301\211\207" [buffer-read-only t] 2] run-hooks ibuffer-hook message substitute-command-keys "Commands: \\[ibuffer-mark-forward], \\[ibuffer-unmark-forward], \\[ibuffer-toggle-marks], \\[ibuffer-visit-buffer], \\[ibuffer-update], \\[ibuffer-do-kill-lines], \\[ibuffer-do-save], \\[ibuffer-do-delete], \\[ibuffer-do-query-replace]; \\[quit-window] to quit; \\[describe-mode] for help" ibuffer-expert] 13 (#$ . 76642) "P"])#@163 Call Ibuffer and set point at the line listing the current buffer.
If optional arg OTHER-WINDOW is non-nil, then use another window.

(fn &optional OTHER-WINDOW)
(defalias 'ibuffer-jump #[256 "\300 \301!\210\3021 \303!0\207\210\304\207" [buffer-name ibuffer (error) ibuffer-jump-to-buffer nil] 4 (#$ . 78790) "P"])
(put 'ibuffer-mode 'mode-class 'special)
(defvar ibuffer-mode-hook nil)
(byte-code "\300\301N\204\f \302\300\301\303#\210\304\305!\204 \302\305\306\307#\210\300\207" [ibuffer-mode-hook variable-documentation put "Hook run after entering IBuffer mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it.  (This is true for all hook variables.)" boundp ibuffer-mode-map definition-name ibuffer-mode] 4)
(defvar ibuffer-mode-map (make-sparse-keymap))
(byte-code "\301\302N\204 \303\301\302\304\305!#\210\306\307!\204* \303\307\310\311#\210\312\307\306\307!\203& \313\202( \314 \"\210\307\302N\2048 \303\307\302\304\315!#\210\306\300!\204X \303\300\310\311#\210\312\300\306\300!\203P \313\202V \316\300\313\"\210\"\210\300\302N\204f \303\300\302\304\317!#\210\303\311\320\321#\207" [ibuffer-mode-abbrev-table ibuffer-mode-map variable-documentation put purecopy "Keymap for `ibuffer-mode'." boundp ibuffer-mode-syntax-table definition-name ibuffer-mode defvar-1 nil make-syntax-table "Syntax table for `ibuffer-mode'." define-abbrev-table "Abbrev table for `ibuffer-mode'." derived-mode-parent special-mode] 5)#@10657 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
particular subset of them, and sorting by various criteria.

Operations on marked buffers:
\<ibuffer-mode-map>
  `\[ibuffer-do-save]' - Save the marked buffers.
  `\[ibuffer-do-view]' - View the marked buffers in the selected frame.
  `\[ibuffer-do-view-other-frame]' - View the marked buffers in another frame.
  `\[ibuffer-do-revert]' - Revert the marked buffers.
  `\[ibuffer-do-toggle-read-only]' - Toggle read-only state of marked buffers.
  `\[ibuffer-do-toggle-lock]' - Toggle lock 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.
  `\[ibuffer-do-query-replace-regexp]' - As above, with a regular expression.
  `\[ibuffer-do-print]' - Print the marked buffers.
  `\[ibuffer-do-occur]' - List lines in all marked buffers which match
          a given regexp (like the function `occur').
  `\[ibuffer-do-shell-command-pipe]' - Pipe the contents of the marked
          buffers to a shell command.
  `\[ibuffer-do-shell-command-pipe-replace]' - Replace the contents of the marked
          buffers with the output of a shell command.
  `\[ibuffer-do-shell-command-file]' - Run a shell command with the
          buffer's file as an argument.
  `\[ibuffer-do-eval]' - Evaluate a form in each of the marked buffers.  This
          is a very flexible command.  For example, if you want to make all
          of the marked buffers read-only, try using (read-only-mode 1) as
          the input form.
  `\[ibuffer-do-view-and-eval]' - As above, but view each buffer while the form
          is evaluated.
  `\[ibuffer-do-kill-lines]' - Remove the marked lines from the *Ibuffer* buffer,
          but don't kill the associated buffer.
  `\[ibuffer-do-kill-on-deletion-marks]' - Kill all buffers marked for deletion.

Marking commands:

  `\[ibuffer-mark-forward]' - Mark the buffer at point.
  `\[ibuffer-toggle-marks]' - Unmark all currently marked buffers, and mark
          all unmarked buffers.
  `\[ibuffer-change-marks]' - Change the mark used on marked buffers.
  `\[ibuffer-unmark-forward]' - Unmark the buffer at point.
  `\[ibuffer-unmark-backward]' - Unmark the previous buffer.
  `\[ibuffer-unmark-all]' - Unmark buffers marked with MARK.
  `\[ibuffer-unmark-all-marks]' - Unmark all marked buffers.
  `\[ibuffer-mark-by-mode]' - Mark buffers by major mode.
  `\[ibuffer-mark-unsaved-buffers]' - Mark all "unsaved" buffers.
          This means that the buffer is modified, and has an associated file.
  `\[ibuffer-mark-modified-buffers]' - Mark all modified buffers,
          regardless of whether they have an associated file.
  `\[ibuffer-mark-special-buffers]' - Mark all buffers whose name begins and
          ends with `*'.
  `\[ibuffer-mark-dissociated-buffers]' - Mark all buffers which have
          an associated file, but that file doesn't currently exist.
  `\[ibuffer-mark-read-only-buffers]' - Mark all read-only buffers.
  `\[ibuffer-mark-dired-buffers]' - Mark buffers in `dired-mode'.
  `\[ibuffer-mark-help-buffers]' - Mark buffers in `help-mode', `apropos-mode', etc.
  `\[ibuffer-mark-old-buffers]' - Mark buffers older than `ibuffer-old-time'.
  `\[ibuffer-mark-for-delete]' - Mark the buffer at point for deletion.
  `\[ibuffer-mark-by-name-regexp]' - Mark buffers by their name, using a regexp.
  `\[ibuffer-mark-by-mode-regexp]' - Mark buffers by their major mode, using a regexp.
  `\[ibuffer-mark-by-file-name-regexp]' - Mark buffers by their filename, using a regexp.
  `\[ibuffer-mark-by-content-regexp]' - Mark buffers by their content, using a regexp.
  `\[ibuffer-mark-by-locked]' - Mark all locked buffers.

Filtering commands:

  `\[ibuffer-filter-chosen-by-completion]' - Select and apply filter chosen by completion.
  `\[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-basename]' - Add a filter by basename.
  `\[ibuffer-filter-by-directory]' - Add a filter by directory name.
  `\[ibuffer-filter-by-filename]' - Add a filter by filename.
  `\[ibuffer-filter-by-file-extension]' - Add a filter by file extension.
  `\[ibuffer-filter-by-modified]' - Add a filter by modified buffers.
  `\[ibuffer-filter-by-predicate]' - Add a filter by an arbitrary Lisp predicate.
  `\[ibuffer-filter-by-size-gt]' - Add a filter by buffer size.
  `\[ibuffer-filter-by-size-lt]' - Add a filter by buffer size.
  `\[ibuffer-filter-by-starred-name]' - Add a filter by special buffers.
  `\[ibuffer-filter-by-visiting-file]' - Add a filter by buffers visiting files.
  `\[ibuffer-save-filters]' - Save the current filters with a name.
  `\[ibuffer-switch-to-saved-filters]' - Switch to previously saved filters.
  `\[ibuffer-add-saved-filters]' - Add saved filters to current filters.
  `\[ibuffer-and-filter]' - Replace the top two filters with their logical AND.
  `\[ibuffer-or-filter]' - Replace the top two filters with their logical OR.
  `\[ibuffer-pop-filter]' - Remove the top filter.
  `\[ibuffer-negate-filter]' - Invert the logical sense of the top filter.
  `\[ibuffer-decompose-filter]' - Break down the topmost filter.
  `\[ibuffer-filter-disable]' - Remove all filtering currently in effect.

Filter group commands:

  `\[ibuffer-filters-to-filter-group]' - Create filter group from filters.
  `\[ibuffer-pop-filter-group]' - Remove top filter group.
  `\[ibuffer-forward-filter-group]' - Move to the next filter group.
  `\[ibuffer-backward-filter-group]' - Move to the previous filter group.
  `\[ibuffer-clear-filter-groups]' - Remove all active filter groups.
  `\[ibuffer-save-filter-groups]' - Save the current groups with a name.
  `\[ibuffer-switch-to-saved-filter-groups]' - Restore previously saved groups.
  `\[ibuffer-delete-saved-filter-groups]' - Delete previously saved groups.

Sorting commands:

  `\[ibuffer-toggle-sorting-mode]' - Rotate between the various sorting modes.
  `\[ibuffer-invert-sorting]' - Reverse the current sorting order.
  `\[ibuffer-do-sort-by-alphabetic]' - Sort the buffers lexicographically.
  `\[ibuffer-do-sort-by-filename/process]' - Sort the buffers by the file name.
  `\[ibuffer-do-sort-by-recency]' - Sort the buffers by last viewing time.
  `\[ibuffer-do-sort-by-size]' - Sort the buffers by size.
  `\[ibuffer-do-sort-by-major-mode]' - Sort the buffers by major mode.

Other commands:

  `\[ibuffer-update]' - Regenerate the list of all buffers.
          Prefix arg means to toggle whether buffers that match
          `ibuffer-maybe-show-predicates' should be displayed.
  `\[ibuffer-auto-mode]' - Toggle automatic updates.

  `\[ibuffer-switch-format]' - Change the current display format.
  `\[forward-line]' - Move point to the next line.
  `\[previous-line]' - Move point to the previous line.
  `\[describe-mode]' - This help.
  `\[ibuffer-diff-with-file]' - View the differences between this buffer
          and its associated file.
  `\[ibuffer-visit-buffer]' - View the buffer on this line.
  `\[ibuffer-visit-buffer-other-window]' - As above, but in another window.
  `\[ibuffer-visit-buffer-other-window-noselect]' - As both above, but don't select
          the new window.
  `\[ibuffer-bury-buffer]' - Bury (not kill!) the buffer on this line.

** Information on Filtering:

You can filter your Ibuffer view via different criteria.  Each Ibuffer
buffer has its own stack of active filters.  For example, suppose you
are working on an Emacs Lisp project.  You can create an Ibuffer
buffer displaying only `emacs-lisp-mode' buffers via
`\[ibuffer-filter-by-mode] emacs-lisp-mode RET'.  In this case, there
is just one entry on the filtering stack.

You can also combine filters.  The various filtering commands push a
new filter onto the stack, and the filters combine to show just
buffers which satisfy ALL criteria on the stack.  For example, suppose
you only want to see buffers in `emacs-lisp-mode', whose names begin
with "gnus".  You can accomplish this via:

  \[ibuffer-filter-by-mode] emacs-lisp-mode RET
  \[ibuffer-filter-by-name] ^gnus RET

Additionally, you can OR the top two filters together with
`\[ibuffer-or-filters]'.  To see all buffers in either
`emacs-lisp-mode' or `lisp-interaction-mode', type:

  \[ibuffer-filter-by-mode] emacs-lisp-mode RET
  \[ibuffer-filter-by-mode] lisp-interaction-mode RET
  \[ibuffer-or-filters]

Filters can also be saved and restored using mnemonic names: see the
functions `ibuffer-save-filters' and `ibuffer-switch-to-saved-filters'.

To remove the top filter on the stack, use `\[ibuffer-pop-filter]', and
to disable all filtering currently in effect, use
`\[ibuffer-filter-disable]'.

** Filter Groups:

Once one has mastered filters, the next logical step up is "filter
groups".  A filter group is basically a named group of buffers which
match a filter, which are displayed together in an Ibuffer buffer.  To
create a filter group, simply use the regular functions to create a
filter, and then type `\[ibuffer-filters-to-filter-group]'.

A quick example will make things clearer.  Suppose that one wants to
group all of one's Emacs Lisp buffers together.  To do this, type:

  \[ibuffer-filter-by-mode] emacs-lisp-mode RET
  \[ibuffer-filters-to-filter-group] emacs lisp buffers RET

You may, of course, name the group whatever you want; it doesn't have
to be "emacs lisp buffers".  Filter groups may be composed of any
arbitrary combination of filters.

Just like filters themselves, filter groups act as a stack.  Buffers
will not be displayed multiple times if they would be included in
multiple filter groups; instead, the first filter group is used.  The
filter groups are displayed in this order of precedence.

You may rearrange filter groups by using the usual pair
`\[ibuffer-kill-line]' and `\[ibuffer-yank]'.  Yanked groups
will be inserted before the group at point.

In addition to any hooks its parent mode `special-mode' might have
run, this mode runs the hook `ibuffer-mode-hook', as the final or
penultimate step during initialization.
(defalias 'ibuffer-mode #[0 "\306\300!\210\307\310 \210\311\312\310\313N\203 \314\311\313\310\313N#\210\315!\204' \316\317 \"\210\320\f!\211\2035 \211\321 =\203; \322\f\323 \"\210\210\324\325\"\204R <=\204R \326\325<C#\210\327!\210\330\f!\210<\306\331!\210\332\333\n\334\335\"BB=\307>\336 \210?@\337A\340\341!\203\216 !\203\216 \306\341!\210\337!\306\342!\210\343\"\306\344!\210B$\306\345!\210C%\306\346!\210D&\306\347!\210E'\306\350!\210\337(\306\351!\210\337)\306\352!\210\337*\306\353!\210\337+\306\354!\210\337,\306\355!\210\337-\306\356!\210\337.\306\357!\210\337/\306\360!\210\3370\306\361!\210\3371\306\362!\210\3372\363\364\365#\210\366 \210F\203FG\367\370\371\337\307$)\210\372\373!\207" [delay-mode-hooks major-mode mode-name ibuffer-mode-map ibuffer-mode-syntax-table ibuffer-mode-abbrev-table make-local-variable t special-mode ibuffer-mode "IBuffer" mode-class put keymap-parent set-keymap-parent current-local-map char-table-parent standard-syntax-table set-char-table-parent syntax-table abbrev-table-get :parents abbrev-table-put use-local-map set-syntax-table mode-line-process (" by " (ibuffer-sorting-mode (:eval (symbol-name ibuffer-sorting-mode)) "view time") (ibuffer-sorting-reversep " [rev]") (ibuffer-auto-mode " (Auto)") (header-line-format #1="" (:eval (if (functionp 'ibuffer-format-qualifier) (mapconcat 'ibuffer-format-qualifier ibuffer-filtering-qualifiers #1#))))) #1# mapcar #[257 "\211\242\300=\203 \3018\207\207" [header-line-format 2] 3 "\n\n(fn ELEM)"] buffer-disable-undo nil boundp show-paren-mode revert-buffer-function ibuffer-update ibuffer-sorting-mode ibuffer-sorting-reversep ibuffer-shrink-to-minimum-size ibuffer-display-maybe-show-predicates ibuffer-filtering-qualifiers ibuffer-filter-groups ibuffer-filter-group-kill-ring ibuffer-hidden-filter-groups ibuffer-compiled-formats ibuffer-cached-formats ibuffer-cached-eliding-string ibuffer-current-format ibuffer-did-modification ibuffer-tmp-hide-regexps ibuffer-tmp-show-regexps define-key [menu-bar edit] undefined ibuffer-update-format add-hook change-major-mode-hook font-lock-defontify run-mode-hooks ibuffer-mode-hook local-abbrev-table ibuffer-header-line-format buffer-read-only ibuffer-truncate-lines truncate-lines show-trailing-whitespace ibuffer-default-sorting-mode ibuffer-default-sorting-reversep ibuffer-default-shrink-to-minimum-size ibuffer-default-display-maybe-show-predicates ibuffer-default-directory default-directory] 5 (#$ . 80261) nil])
(byte-code "\300\301!\210\302\303!\207" [provide ibuffer run-hooks ibuffer-load-hook] 2)
