From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Tassilo Horn Newsgroups: gmane.emacs.devel Subject: Re: Concerning the new `ido-use-virtual-buffers' feature Date: Thu, 27 May 2010 12:57:00 +0200 Message-ID: <201005271257.02056.tassilo@member.fsf.org> References: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: Multipart/Mixed; boundary="Boundary-00=_8/k/LV0/RK0LgtG" X-Trace: dough.gmane.org 1274957865 24185 80.91.229.12 (27 May 2010 10:57:45 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Thu, 27 May 2010 10:57:45 +0000 (UTC) Cc: John Wiegley , "Kim F. Storm" , emacs-devel@gnu.org To: Leo Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu May 27 12:57:43 2010 connect(): No such file or directory Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1OHamT-0005vV-Uh for ged-emacs-devel@m.gmane.org; Thu, 27 May 2010 12:57:43 +0200 Original-Received: from localhost ([127.0.0.1]:36037 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OHamS-0005ER-Bt for ged-emacs-devel@m.gmane.org; Thu, 27 May 2010 06:57:40 -0400 Original-Received: from [140.186.70.92] (port=53778 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OHalv-0004tQ-KV for emacs-devel@gnu.org; Thu, 27 May 2010 06:57:08 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OHalu-0006Zy-2Y for emacs-devel@gnu.org; Thu, 27 May 2010 06:57:07 -0400 Original-Received: from deliver.uni-koblenz.de ([141.26.64.15]:27344) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OHalt-0006Zc-M9 for emacs-devel@gnu.org; Thu, 27 May 2010 06:57:06 -0400 Original-Received: from localhost (localhost [127.0.0.1]) by deliver.uni-koblenz.de (Postfix) with ESMTP id 45AAA78A416E; Thu, 27 May 2010 12:57:04 +0200 (CEST) Original-Received: from deliver.uni-koblenz.de ([127.0.0.1]) by localhost (deliver.uni-koblenz.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 17463-02; Thu, 27 May 2010 12:57:03 +0200 (CEST) X-CHKRCPT: Envelopesender noch tassilo@member.fsf.org Original-Received: from thinkpad.localnet (tsdh.uni-koblenz.de [141.26.67.142]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by deliver.uni-koblenz.de (Postfix) with ESMTP id 0BA4678A436C; Thu, 27 May 2010 12:57:03 +0200 (CEST) User-Agent: KMail/1.13.3 (Linux/2.6.34-gentoo; KDE/4.4.3; x86_64; ; ) In-Reply-To: X-Face: `TY6r/ws=N5uqO1E`M=Sups<}n%T[E^o_?MJj List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:125301 Archived-At: --Boundary-00=_8/k/LV0/RK0LgtG Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit On Thursday 27 May 2010 11:56:53 Leo wrote: Hi Leo, John, Kim, > Meanwhile feel free to change the patch. Hm, it doesn't apply to the current bzr trunk. Anyway, I rewrote it to be controled by the ido-use-virtual-buffers variable solely with 3 values 'never, 'auto, and 'always. The resulting patch is attached. Basically, it works, but there's one bug I cannot figure out how to solve. When ido-use-virtual-buffers is 'auto and the current input doesn't even match any closed buffer (recentf file), then it's stuck instead of displaying [no match]. I don't know ido very well and cannot figure out how to get that right. Kim, maybe you could check what's wrong? I have papers on file. I use 7 lines originating from Leo's patch, so I don't know if that has to wait till Leo's assignments arrive... Bye, Tassilo --Boundary-00=_8/k/LV0/RK0LgtG Content-Type: text/x-patch; charset="UTF-8"; name="ido-virtual-buffers.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="ido-virtual-buffers.diff" === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2010-05-27 07:08:37 +0000 +++ lisp/ChangeLog 2010-05-27 10:48:36 +0000 @@ -1,3 +1,14 @@ +2010-05-27 Tassilo Horn + + * ido.el (ido-exhibit, ido-buffer-internal) + (ido-toggle-virtual-buffers, ido-make-buffer-list) + (ido-buffer-internal): ido-use-virtual-buffers now is a choice + option with values 'never (default), 'always, and 'auto. The + latter means, show virtual buffers if the current input doesn't + match any existing buffer. + + Based on a patch by Leo . + 2010-05-27 Kenichi Handa * language/hebrew.el (hebrew-shape-gstring): Check if a glyph === modified file 'lisp/ido.el' --- lisp/ido.el 2010-05-25 02:11:08 +0000 +++ lisp/ido.el 2010-05-27 10:41:37 +0000 @@ -774,8 +774,10 @@ :type '(repeat string) :group 'ido) -(defcustom ido-use-virtual-buffers nil - "If non-nil, refer to past buffers as well as existing ones. +(defcustom ido-use-virtual-buffers 'never + "If `always', refer to past buffers as well as existing ones. +If `auto', refer to past buffers only when the current input +doesn't match an existing buffer. Essentially it works as follows: Say you are visiting a file and the buffer gets cleaned up by mignight.el. Later, you want to switch to that buffer, but find it's no longer open. With @@ -785,11 +787,12 @@ to think less about whether recently opened files are still open or not. Most of the time you can quit Emacs, restart, and then switch to a file buffer that was previously open as if it still -were. - This feature relies upon the `recentf' package, which will be -enabled if this variable is configured to a non-nil value." +were. This feature relies upon the `recentf' package, which will +be enabled if this variable is configured to a non-nil value." :version "24.1" - :type 'boolean + :type '(choice (const always) + (const auto) + (const never)) :group 'ido) (defcustom ido-use-faces t @@ -1056,7 +1059,7 @@ (defvar ido-virtual-buffers nil "List of virtual buffers, that is, past visited files. This is a copy of `recentf-list', pared down and with faces applied. -Only used if `ido-use-virtual-buffers' is non-nil.") +Only used if `ido-use-virtual-buffers' is not `never'.") ;;; Variables with dynamic bindings. ;;; Declared here to keep the byte compiler quiet. @@ -2182,7 +2185,7 @@ (ido-directory-nonreadable nil) (ido-directory-too-big nil) (ido-use-virtual-buffers (if (eq method 'kill) - nil ;; Don't consider virtual buffers for killing + 'never ;; Don't consider virtual buffers for killing ido-use-virtual-buffers)) (require-match (confirm-nonexistent-file-or-buffer)) (buf (ido-read-internal 'buffer (or prompt "Buffer: ") 'ido-buffer-history default @@ -2224,7 +2227,9 @@ (ido-visit-buffer buf method t))) ;; check for a virtual buffer reference - ((and ido-use-virtual-buffers ido-virtual-buffers + ((and (or (eq ido-use-virtual-buffers 'always) + (eq ido-use-virtual-buffers 'auto)) + ido-virtual-buffers (setq filename (assoc buf ido-virtual-buffers))) (ido-visit-buffer (find-file-noselect (cdr filename)) method t)) @@ -2712,7 +2717,9 @@ See `ido-use-virtual-buffers' for explanation of virtual buffer." (interactive) (when (and ido-mode (eq ido-cur-item 'buffer)) - (setq ido-use-virtual-buffers (not ido-use-virtual-buffers)) + (setq ido-use-virtual-buffers (if (eq ido-use-virtual-buffers 'never) + 'always + 'never)) (setq ido-text-init ido-text) (setq ido-exit 'refresh) (exit-minibuffer))) @@ -3403,7 +3410,9 @@ (when (and default (buffer-live-p (get-buffer default))) (setq ido-temp-list (cons default (delete default ido-temp-list)))) - (if ido-use-virtual-buffers + (if (or (eq ido-use-virtual-buffers 'always) + (and (eq ido-use-virtual-buffers 'auto) + (not ido-matches))) (ido-add-virtual-buffers-to-list)) (run-hooks 'ido-make-buffer-list-hook) ido-temp-list)) @@ -4465,6 +4474,13 @@ (setq ido-exit 'refresh) (exit-minibuffer))) + (when (and (eq ido-use-virtual-buffers 'auto) + (eq ido-cur-item 'buffer) + (not ido-matches)) + (setq ido-text-init ido-text) + (setq ido-exit 'refresh) + (exit-minibuffer)) + (when (and ido-rescan (not ido-matches) --Boundary-00=_8/k/LV0/RK0LgtG--