- (unless files
- (setq files recentf-list))
- (unless buffer-name
- (setq buffer-name (format "*%s*" recentf-menu-title)))
- (with-current-buffer (get-buffer-create buffer-name)
- (switch-to-buffer (current-buffer))
- ;; Cleanup buffer
- (kill-all-local-variables)
- (let ((inhibit-read-only t)
- (ol (overlay-lists)))
- (erase-buffer)
- ;; Delete all the overlays.
- (mapc 'delete-overlay (car ol))
- (mapc 'delete-overlay (cdr ol)))
- ;; Insert the dialog header
- (widget-insert "Click on a file to open it. ")
- (widget-insert "Click on Cancel or type \"q\" to quit.\n\n" )
- ;; Insert the list of files as buttons
- (let ((recentf-open-files-item-shift ""))
- (mapc 'recentf-open-files-item
- (recentf-apply-menu-filter
- recentf-menu-filter
- (mapcar 'recentf-make-default-menu-element files))))
- (widget-insert "\n")
- ;; Insert the Cancel button
+ (recentf-dialog (or buffer-name (format "*%s*" recentf-menu-title))
+ (widget-insert "Click on a file to open it.
+Click on Cancel or type `q' to cancel.\n" )
+ ;; Use a L&F that looks like the recentf menu.
+ (tree-widget-set-theme "folder")
+ (apply 'widget-create
+ `(group
+ :indent 2
+ :format "\n%v\n"
+ ,@(mapcar 'recentf-open-files-item
+ (recentf-apply-menu-filter
+ recentf-menu-filter
+ (mapcar 'recentf-make-default-menu-element
+ (or files recentf-list))))))