Subject: bug#6943: closed (Re: bug#6943: 23.2; [PATCH] * lisp/ido.el (ido-kill-buffer-at-head): support killing virtual buffers.)

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 11 Apr 2011 03:56:02 +0000

Your bug report

#6943: 23.2; [PATCH] * lisp/ido.el (ido-kill-buffer-at-head): support killing virtual buffers.

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
6943: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=6943
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#6943: 23.2; [PATCH] * lisp/ido.el (ido-kill-buffer-at-head): support killing virtual buffers.
From: Leo <[email-masked]>
To: [email-masked]
Date: Mon, 11 Apr 2011 11:54:56 +0800
List-Id: <debbugs-submit.debbugs.gnu.org>

Version: 24.1

Subject: 23.2; [PATCH] * lisp/ido.el (ido-kill-buffer-at-head): support killing virtual buffers.
From: Leo <[email-masked]>
To: [email-masked]
Cc: Juanma Barranquero <[email-masked]>
Date: Mon, 30 Aug 2010 04:22:46 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

The attached patch makes C-k in ido kills virtual buffers too.

>From fb3cb0a3c3c6ab82a3ec7c8061478b59366ae77a Mon Sep 17 00:00:00 2001
From: Leo [email-masked]
Date: Mon, 30 Aug 2010 04:17:03 +0100
Subject: [PATCH] * lisp/ido.el (ido-kill-buffer-at-head): support killing virtual buffers.

---
 lisp/ido.el |   43 +++++++++++++++++++++++++------------------
 1 files changed, 25 insertions(+), 18 deletions(-)

diff --git a/lisp/ido.el b/lisp/ido.el
index 858ee3e..944499e 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -3920,24 +3920,31 @@ If cursor is not at the end of the user input, delete to end of input."
     (let ((enable-recursive-minibuffers t)
 	  (buf (ido-name (car ido-matches)))
 	  (nextbuf (cadr ido-matches)))
-      (when (get-buffer buf)
-	;; If next match names a buffer use the buffer object; buffer
-	;; name may be changed by packages such as uniquify; mindful
-	;; of virtual buffers.
-	(when (and nextbuf (get-buffer nextbuf))
-	  (setq nextbuf (get-buffer nextbuf)))
-	(if (null (kill-buffer buf))
-	    ;; Buffer couldn't be killed.
-	    (setq ido-rescan t)
-	  ;; Else `kill-buffer' succeeds so re-make the buffer list
-	  ;; taking into account packages like uniquify may rename
-	  ;; buffers.
-	  (if (bufferp nextbuf)
-	      (setq nextbuf (buffer-name nextbuf)))
-	  (setq ido-default-item nextbuf
-		ido-text-init ido-text
-		ido-exit 'refresh)
-	  (exit-minibuffer))))))
+      (if (get-buffer buf)
+	  (progn
+	    ;; If next match names a buffer use the buffer object; buffer
+	    ;; name may be changed by packages such as uniquify; mindful
+	    ;; of virtual buffers.
+	    (when (and nextbuf (get-buffer nextbuf))
+	      (setq nextbuf (get-buffer nextbuf)))
+	    (if (null (kill-buffer buf))
+		;; Buffer couldn't be killed.
+		(setq ido-rescan t)
+	      ;; Else `kill-buffer' succeeds so re-make the buffer list
+	      ;; taking into account packages like uniquify may rename
+	      ;; buffers.
+	      (if (bufferp nextbuf)
+		  (setq nextbuf (buffer-name nextbuf)))
+	      (setq ido-default-item nextbuf
+		    ido-text-init ido-text
+		    ido-exit 'refresh)
+	      (exit-minibuffer)))
+	;; Handle virtual buffers
+	(when recentf-list
+	  (setq recentf-list
+		(delete (cdr (assoc buf ido-virtual-buffers)) recentf-list))
+	  (setq ido-cur-list (delete buf ido-cur-list))
+	  (setq ido-rescan t))))))
 
 ;;; DELETE CURRENT FILE
 (defun ido-delete-file-at-head ()
-- 
1.7.1