summaryrefslogtreecommitdiff
path: root/lisp/recentf.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/recentf.el')
-rw-r--r--lisp/recentf.el24
1 files changed, 17 insertions, 7 deletions
diff --git a/lisp/recentf.el b/lisp/recentf.el
index 0d46078c4dc..2529424b8eb 100644
--- a/lisp/recentf.el
+++ b/lisp/recentf.el
@@ -112,11 +112,15 @@ must return non-nil to exclude it."
:group 'recentf
:type '(repeat (choice regexp function)))
+(defun recentf-access-file (filename)
+ "Check whether FILENAME is accessible."
+ (ignore-errors (not (access-file filename "Checking recentf file"))))
+
(defun recentf-keep-default-predicate (file)
"Return non-nil if FILE should be kept in the recent list.
It handles the case of remote files as well."
(cond
- ((file-remote-p file nil t) (file-readable-p file))
+ ((file-remote-p file nil t) (recentf-access-file file))
((file-remote-p file))
((file-readable-p file))))
@@ -801,25 +805,31 @@ Filenames are relative to the `default-directory'."
;;; Rule based menu filters
;;
(defcustom recentf-arrange-rules
- '(
- ("Elisp files (%d)" ".\\.el\\'")
- ("Java files (%d)" ".\\.java\\'")
- ("C/C++ files (%d)" "c\\(pp\\)?\\'")
+ `(
+ ("Elisp files (%d)" ,(rx nonl ".el" eos))
+ ("C/C++ files (%d)" ,(rx nonl "."
+ (or "c" "cc" "cpp" "h" "hpp" "cxx" "hxx")
+ eos))
+ ("Python files (%d)" ,(rx nonl ".py" eos))
+ ("Java files (%d)" ,(rx nonl ".java" eos))
)
"List of rules used by `recentf-arrange-by-rule' to build sub-menus.
+
A rule is a pair (SUB-MENU-TITLE . MATCHER). SUB-MENU-TITLE is the
displayed title of the sub-menu where a `%d' `format' pattern is
replaced by the number of items in the sub-menu. MATCHER is a regexp
or a list of regexps. Items matching one of the regular expressions in
MATCHER are added to the corresponding sub-menu.
-SUB-MENU-TITLE can be a function. It is passed every items that
+
+SUB-MENU-TITLE can be a function. It is passed every item that
matched the corresponding MATCHER, and it must return a
pair (SUB-MENU-TITLE . ITEM). SUB-MENU-TITLE is a computed sub-menu
title that can be another function. ITEM is the received item which
may have been modified to match another rule."
:group 'recentf-filters
:type '(repeat (cons (choice string function)
- (repeat regexp))))
+ (repeat regexp)))
+ :version "30.1")
(defcustom recentf-arrange-by-rule-others "Other files (%d)"
"Title of the `recentf-arrange-by-rule' sub-menu.