(require 'recentf) (recentf-mode 1) (defun recentf-iswitchb-complete () "find a file in the recently open file using iswitcb for completion" (interactive) (let* ((all-files recentf-list) (file-assoc-list (mapcar (lambda (x) (cons (file-name-nondirectory x) x)) all-files)) (filename-list (remove-duplicates (mapcar 'car file-assoc-list) :test 'string=)) (iswitchb-make-buflist-hook (lambda () (setq iswitchb-temp-buflist filename-list))) (filename (iswitchb-read-buffer "Find Recent File: ")) (result-list (delq nil (mapcar (lambda (x) (if (string= (car x) filename) (cdr x))) file-assoc-list))) (result-length (length result-list))) (find-file (cond ((= result-length 0) filename) ((= result-length 1) (car result-list)) ( t (let ( (iswitchb-make-buffer-list-hook (lambda () (setq iswitchb-temp-buflist result-list)))) (iswitchb-read-buffer (format "%d matches:" result-length)))))))) (global-set-key (kbd "C-x C-r") 'recentf-iswitchb-complete)