diff options
Diffstat (limited to 'lisp/recentf.el')
-rw-r--r-- | lisp/recentf.el | 24 |
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. |