# HG changeset patch # User Colin Walters # Date 1019083090 0 # Node ID 9d84a456037dd217de06af440d7b298623d28023 # Parent 86f786a1dc659b37e8b694134fbd66923148aac7 (ibuffer-visit-buffer): Optionally allow reducing to one window. (ibuffer-visit-buffer-1-window): Simply call `ibuffer-visit-buffer'. (ibuffer-current-state-list): Reinstate optional argument; now just call `point' inside the mapping function. diff -r 86f786a1dc65 -r 9d84a456037d lisp/ibuffer.el --- a/lisp/ibuffer.el Wed Apr 17 22:37:42 2002 +0000 +++ b/lisp/ibuffer.el Wed Apr 17 22:38:10 2002 +0000 @@ -842,14 +842,21 @@ (forward-line 1)) (decf arg)))) -(defun ibuffer-visit-buffer () - "Visit the buffer on this line." - (interactive) +(defun ibuffer-visit-buffer (&optional single) + "Visit the buffer on this line. + +If optional argument SINGLE is non-nil, then also ensure there is only +one window." + (interactive "P") (let ((buf (ibuffer-current-buffer))) - (unless (buffer-live-p buf) - (error "Buffer %s has been killed!" buf)) + (if (bufferp buf) + (unless (buffer-live-p buf) + (error "Buffer %s has been killed!" buf)) + (error "No buffer on this line")) (bury-buffer (current-buffer)) - (switch-to-buffer buf))) + (switch-to-buffer buf) + (when single + (delete-other-windows)))) (defun ibuffer-visit-buffer-other-window (&optional noselect) "Visit the buffer on this line in another window." @@ -881,11 +888,7 @@ (defun ibuffer-visit-buffer-1-window () "Visit the buffer on this line, and delete other windows." (interactive) - (let ((buf (ibuffer-current-buffer))) - (unless (buffer-live-p buf) - (error "Buffer %s has been killed!" buf)) - (switch-to-buffer buf) - (delete-other-windows))) + (ibuffer-visit-buffer t)) (defun ibuffer-bury-buffer () "Bury the buffer on this line." @@ -1668,15 +1671,22 @@ (car e))) (ibuffer-current-state-list)))) -(defun ibuffer-current-state-list () - "Return a list like (BUF . MARK) of all buffers in an ibuffer." +(defun ibuffer-current-state-list (&optional pos) + "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." (let ((ibuffer-current-state-list-tmp '())) ;; ah, if only we had closures. I bet this will mysteriously ;; break later. Don't blame me. - (ibuffer-map-lines-nomodify - #'(lambda (buf mark) - (when (buffer-live-p buf) - (push (cons buf mark) ibuffer-current-state-list-tmp)))) + (if pos + (ibuffer-map-lines-nomodify + #'(lambda (buf mark) + (when (buffer-live-p buf) + (push (list buf mark (point)) ibuffer-current-state-list-tmp)))) + (ibuffer-map-lines-nomodify + #'(lambda (buf mark) + (when (buffer-live-p buf) + (push (cons buf mark) ibuffer-current-state-list-tmp))))) (nreverse ibuffer-current-state-list-tmp))) (defun ibuffer-current-buffers-with-marks (curbufs)