"Define a column SYMBOL for use with `ibuffer-formats'.
BODY will be called with `buffer' bound to the buffer object, and
-`mark' bound to the current mark on the buffer. The current buffer
-will be `buffer'.
+`mark' bound to the current mark on the buffer. The original ibuffer
+buffer will be bound to `ibuffer-buf'.
If NAME is given, it will be used as a title for the column.
Otherwise, the title will default to a capitalized version of the
`(progn
,(if inline
`(push '(,sym ,bod) ibuffer-inline-columns)
- `(defun ,sym (buffer mark)
+ `(defun ,sym (buffer mark ibuffer-buf)
,bod))
(put (quote ,sym) 'ibuffer-column-name
,(if (stringp name)
(active-opstring "Operate on")
complex)
&rest body)
- "Generate a function named `ibuffer-do-OP', which operates on a buffer.
+ "Generate a function which operates on a buffer.
+OP becomes the name of the function; if it doesn't begin with
+`ibuffer-do-', then that is prepended to it.
When an operation is performed, this function will be called once for
each marked buffer, with that buffer current.
COMPLEX means this function is special; see the source code of this
macro for exactly what it does."
`(progn
- (defun ,(intern (concat "ibuffer-do-" (symbol-name op))) ,args
+ (defun ,(intern (concat (if (string-match "^ibuffer-do" (symbol-name op))
+ "" "ibuffer-do-") (symbol-name op)))
+ ,args
,(if (stringp documentation)
documentation
(format "%s marked buffers." active-opstring))