aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog17
-rw-r--r--lisp/ibuf-macs.el146
2 files changed, 90 insertions, 73 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 379f2731ac..f4e26605ff 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,20 @@
+2008-05-15 John Paul Wallington <[email protected]>
+
+ * ibuffer.el (ibuffer-assert-ibuffer-mode): New defsubst.
+ (ibuffer-mark-interactive, ibuffer-set-mark)
+ (ibuffer-insert-buffer-line, ibuffer-redisplay-current)
+ (ibuffer-map-lines, ibuffer-switch-format)
+ (ibuffer-update-title-and-summary)
+ (ibuffer-redisplay-engine): Use it.
+
+ * ibuf-macs.el (ibuffer-aif, ibuffer-awhen, ibuffer-save-marks)
+ (define-ibuffer-column, define-ibuffer-sorter)
+ (define-ibuffer-op, define-ibuffer-filter): Add declarations
+ containing indentation specs, replacing equivalent top-level
+ forms that set `lisp-indent-function' properties.
+ (define-ibuffer-op): Use `derived-mode-p'.
+ (define-ibuffer-filter): Remove redundant `concat' call.
+
2008-05-14 Michael Albinus <[email protected]>
* net/tramp.el (tramp-echo-mark): Update docstring.
diff --git a/lisp/ibuf-macs.el b/lisp/ibuf-macs.el
index 0519c43bcc..6889b68f01 100644
--- a/lisp/ibuf-macs.el
+++ b/lisp/ibuf-macs.el
@@ -36,6 +36,7 @@
If TEST returns non-nil, bind `it' to the value, and evaluate
TRUE-BODY. Otherwise, evaluate forms in FALSE-BODY as if in `progn'.
Compare with `if'."
+ (declare (indent 2))
(let ((sym (make-symbol "ibuffer-aif-sym")))
`(let ((,sym ,test))
(if ,sym
@@ -43,18 +44,18 @@ Compare with `if'."
,true-body)
(progn
,@false-body)))))
-;; (put 'ibuffer-aif 'lisp-indent-function 2)
(defmacro ibuffer-awhen (test &rest body)
"Evaluate BODY if TEST returns non-nil.
During evaluation of body, bind `it' to the value returned by TEST."
+ (declare (indent 1))
`(ibuffer-aif ,test
(progn ,@body)
nil))
-;; (put 'ibuffer-awhen 'lisp-indent-function 1)
(defmacro ibuffer-save-marks (&rest body)
"Save the marked status of the buffers and execute BODY; restore marks."
+ (declare (indent 0))
(let ((bufsym (make-symbol "bufsym")))
`(let ((,bufsym (current-buffer))
(ibuffer-save-marks-tmp-mark-list (ibuffer-current-state-list)))
@@ -70,10 +71,9 @@ During evaluation of body, bind `it' to the value returned by TEST."
e))
ibuffer-save-marks-tmp-mark-list)))
(ibuffer-redisplay t))))))
-;; (put 'ibuffer-save-marks 'lisp-indent-function 0)
;;;###autoload
-(defmacro* define-ibuffer-column (symbol (&key name inline props summarizer
+(defmacro* define-ibuffer-column (symbol (&key name inline props summarizer
header-mouse-map) &rest body)
"Define a column SYMBOL for use with `ibuffer-formats'.
@@ -98,14 +98,15 @@ change its definition, you should explicitly call
`ibuffer-recompile-formats'.
\(fn SYMBOL (&key NAME INLINE PROPS SUMMARIZER) &rest BODY)"
+ (declare (indent defun))
(let* ((sym (intern (concat "ibuffer-make-column-"
(symbol-name symbol))))
(bod-1 `(with-current-buffer buffer
,@body))
(bod (if props
- `(propertize
- ,bod-1
- ,@props)
+ `(propertize
+ ,bod-1
+ ,@props)
bod-1)))
`(progn
,(if inline
@@ -126,7 +127,6 @@ change its definition, you should explicitly call
;; summary.
`(put (quote ,sym) 'ibuffer-column-summary nil))
:autoload-end)))
-;; (put 'define-ibuffer-column 'lisp-indent-function 'defun)
;;;###autoload
(defmacro* define-ibuffer-sorter (name documentation
@@ -143,6 +143,7 @@ buffer object, and `b' bound to another. BODY should return a non-nil
value if and only if `a' is \"less than\" `b'.
\(fn NAME DOCUMENTATION (&key DESCRIPTION) &rest BODY)"
+ (declare (indent 1))
`(progn
(defun ,(intern (concat "ibuffer-do-sort-by-" (symbol-name name))) ()
,(or documentation "No :documentation specified for this sorting method.")
@@ -157,7 +158,6 @@ value if and only if `a' is \"less than\" `b'.
,@body))
ibuffer-sorting-functions-alist)
:autoload-end))
-;; (put 'define-ibuffer-sorter 'lisp-indent-function 1)
;;;###autoload
(defmacro* define-ibuffer-op (op args
@@ -202,66 +202,66 @@ COMPLEX means this function is special; see the source code of this
macro for exactly what it does.
\(fn OP ARGS DOCUMENTATION (&key INTERACTIVE MARK MODIFIER-P DANGEROUS OPSTRING ACTIVE-OPSTRING COMPLEX) &rest BODY)"
+ (declare (indent 2))
`(progn
- (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))
- ,(if (not (null interactive))
- `(interactive ,interactive)
- '(interactive))
- (assert (eq major-mode 'ibuffer-mode))
- (setq ibuffer-did-modification nil)
- (let ((marked-names (,(case mark
- (:deletion
- 'ibuffer-deletion-marked-buffer-names)
- (t
- 'ibuffer-marked-buffer-names)))))
- (when (null marked-names)
- (setq marked-names (list (buffer-name (ibuffer-current-buffer))))
- (ibuffer-set-mark ,(case mark
- (:deletion
- 'ibuffer-deletion-char)
- (t
- 'ibuffer-marked-char))))
- ,(let* ((finish (append
- '(progn)
- (if (eq modifier-p t)
- '((setq ibuffer-did-modification t))
- ())
- `((ibuffer-redisplay t)
- (message ,(concat "Operation finished; " opstring " %s buffers") count))))
- (inner-body (if complex
- `(progn ,@body)
- `(progn
- (with-current-buffer buf
- (save-excursion
- ,@body))
- t)))
- (body `(let ((count
- (,(case mark
- (:deletion
- 'ibuffer-map-deletion-lines)
- (t
- 'ibuffer-map-marked-lines))
- #'(lambda (buf mark)
- ,(if (eq modifier-p :maybe)
- `(let ((ibuffer-tmp-previous-buffer-modification
- (buffer-modified-p buf)))
- (prog1 ,inner-body
- (when (not (eq ibuffer-tmp-previous-buffer-modification
- (buffer-modified-p buf)))
- (setq ibuffer-did-modification t))))
- inner-body)))))
- ,finish)))
- (if dangerous
- `(when (ibuffer-confirm-operation-on ,active-opstring marked-names)
- ,body)
- body))))
- :autoload-end))
-;; (put 'define-ibuffer-op 'lisp-indent-function 2)
+ (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))
+ ,(if (not (null interactive))
+ `(interactive ,interactive)
+ '(interactive))
+ (assert (derived-mode-p 'ibuffer-mode))
+ (setq ibuffer-did-modification nil)
+ (let ((marked-names (,(case mark
+ (:deletion
+ 'ibuffer-deletion-marked-buffer-names)
+ (t
+ 'ibuffer-marked-buffer-names)))))
+ (when (null marked-names)
+ (setq marked-names (list (buffer-name (ibuffer-current-buffer))))
+ (ibuffer-set-mark ,(case mark
+ (:deletion
+ 'ibuffer-deletion-char)
+ (t
+ 'ibuffer-marked-char))))
+ ,(let* ((finish (append
+ '(progn)
+ (if (eq modifier-p t)
+ '((setq ibuffer-did-modification t))
+ ())
+ `((ibuffer-redisplay t)
+ (message ,(concat "Operation finished; " opstring " %s buffers") count))))
+ (inner-body (if complex
+ `(progn ,@body)
+ `(progn
+ (with-current-buffer buf
+ (save-excursion
+ ,@body))
+ t)))
+ (body `(let ((count
+ (,(case mark
+ (:deletion
+ 'ibuffer-map-deletion-lines)
+ (t
+ 'ibuffer-map-marked-lines))
+ #'(lambda (buf mark)
+ ,(if (eq modifier-p :maybe)
+ `(let ((ibuffer-tmp-previous-buffer-modification
+ (buffer-modified-p buf)))
+ (prog1 ,inner-body
+ (when (not (eq ibuffer-tmp-previous-buffer-modification
+ (buffer-modified-p buf)))
+ (setq ibuffer-did-modification t))))
+ inner-body)))))
+ ,finish)))
+ (if dangerous
+ `(when (ibuffer-confirm-operation-on ,active-opstring marked-names)
+ ,body)
+ body))))
+ :autoload-end))
;;;###autoload
(defmacro* define-ibuffer-filter (name documentation
@@ -280,23 +280,23 @@ will be evaluated with BUF bound to the buffer object, and QUALIFIER
bound to the current value of the filter.
\(fn NAME DOCUMENTATION (&key READER DESCRIPTION) &rest BODY)"
+ (declare (indent 2))
(let ((fn-name (intern (concat "ibuffer-filter-by-" (symbol-name name)))))
`(progn
(defun ,fn-name (qualifier)
- ,(concat (or documentation "This filter is not documented."))
+ ,(or documentation "This filter is not documented.")
(interactive (list ,reader))
(ibuffer-push-filter (cons ',name qualifier))
(message "%s"
- (format ,(concat (format "Filter by %s added: " description)
- " %s")
- qualifier))
+ (format ,(concat (format "Filter by %s added: " description)
+ " %s")
+ qualifier))
(ibuffer-update nil t))
(push (list ',name ,description
#'(lambda (buf qualifier)
,@body))
ibuffer-filtering-alist)
:autoload-end)))
-;; (put 'define-ibuffer-filter 'lisp-indent-function 2)
(provide 'ibuf-macs)