mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-08 15:35:02 +00:00
(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.
This commit is contained in:
parent
87a6a53ae2
commit
4e02f55c17
@ -1,3 +1,20 @@
|
||||
2008-05-15 John Paul Wallington <jpw@pobox.com>
|
||||
|
||||
* 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 <michael.albinus@gmx.de>
|
||||
|
||||
* net/tramp.el (tramp-echo-mark): Update docstring.
|
||||
|
@ -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)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user