From 9caf8a8f7f3a3ef2c37a603b3818c25dbacf9605 Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Tue, 6 Apr 2010 04:26:37 +0200 Subject: [PATCH] Enable recentf-mode if using virtual buffers. * ido.el (recentf-list): Declare for byte-compiler. (ido-virtual-buffers): Move up to silence byte-compiler. Add docstring. (ido-make-buffer-list): Simplify. (ido-add-virtual-buffers-to-list): Simplify. Enable recentf-mode. --- lisp/ChangeLog | 8 ++++++++ lisp/ido.el | 37 ++++++++++++++++++------------------- 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index a9d95d9dd3d..d875b01e858 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +2010-04-06 Juanma Barranquero + + Enable recentf-mode if using virtual buffers. + * ido.el (recentf-list): Declare for byte-compiler. + (ido-virtual-buffers): Move up to silence byte-compiler. Add docstring. + (ido-make-buffer-list): Simplify. + (ido-add-virtual-buffers-to-list): Simplify. Enable recentf-mode. + 2010-04-05 Juri Linkov Scrolling commands which scroll a line instead of full screen. diff --git a/lisp/ido.el b/lisp/ido.el index fdfd27ca7d3..4200475bfce 100644 --- a/lisp/ido.el +++ b/lisp/ido.el @@ -323,6 +323,7 @@ ;;; Code: (defvar cua-inhibit-cua-keys) +(defvar recentf-list) ;;; User Variables ;; @@ -1041,6 +1042,11 @@ so that it doesn't interfere with other minibuffer usage.") "Non-nil means to explicitly cursor on entry to minibuffer. Value is an integer which is number of chars to right of prompt.") +(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.") + ;;; Variables with dynamic bindings. ;;; Declared here to keep the byte compiler quiet. @@ -3366,37 +3372,30 @@ for first matching file." (if ido-temp-list (nconc ido-temp-list ido-current-buffers) (setq ido-temp-list ido-current-buffers)) - (if (and default (buffer-live-p (get-buffer default))) - (progn - (setq ido-temp-list - (delete default ido-temp-list)) - (setq ido-temp-list - (cons default ido-temp-list)))) + (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 (ido-add-virtual-buffers-to-list)) (run-hooks 'ido-make-buffer-list-hook) ido-temp-list)) -(defvar ido-virtual-buffers nil) - (defun ido-add-virtual-buffers-to-list () "Add recently visited files, and bookmark files, to the buffer list. This is to make them appear as if they were \"virtual buffers\"." ;; If no buffers matched, and virtual buffers are being used, then ;; consult the list of past visited files, to see if we can find ;; the file which the user might thought was still open. + (unless recentf-mode (recentf-mode 1)) (setq ido-virtual-buffers nil) - (let ((head recentf-list) name) - (while head - (if (and (setq name (file-name-nondirectory (car head))) - (null (get-file-buffer (car head))) - (not (assoc name ido-virtual-buffers)) - (not (ido-ignore-item-p name ido-ignore-buffers)) - ;;(file-exists-p (car head)) - ) - (setq ido-virtual-buffers - (cons (cons name (car head)) ido-virtual-buffers))) - (setq head (cdr head)))) + (let (name) + (dolist (head recentf-list) + (and (setq name (file-name-nondirectory head)) + (null (get-file-buffer head)) + (not (assoc name ido-virtual-buffers)) + (not (ido-ignore-item-p name ido-ignore-buffers)) + ;;(file-exists-p head) + (push (cons name head) ido-virtual-buffers)))) (when ido-virtual-buffers (if ido-use-faces (dolist (comp ido-virtual-buffers) -- 2.39.5