Merge from emacs-23; up to 2010-06-10T05:17:21Z!rgm@gnu.org.
[bpt/emacs.git] / lisp / recentf.el
index b54a355..fc9b788 100644 (file)
@@ -1,7 +1,6 @@
 ;;; recentf.el --- setup a menu of recently opened files
 
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
-;;   2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2011 Free Software Foundation, Inc.
 
 ;; Author: David Ponce <david@dponce.com>
 ;; Created: July 19 1999
@@ -412,13 +411,14 @@ That is, if it doesn't match any of the `recentf-exclude' checks."
         (checks recentf-exclude)
         (keepit t))
     (while (and checks keepit)
-      (setq keepit (condition-case nil
-                       (not (if (stringp (car checks))
-                                ;; A regexp
-                                (string-match (car checks) filename)
-                              ;; A predicate
-                              (funcall (car checks) filename)))
-                     (error nil))
+      ;; If there was an error in a predicate, err on the side of
+      ;; keeping the file.  (Bug#5843)
+      (setq keepit (not (ignore-errors
+                          (if (stringp (car checks))
+                              ;; A regexp
+                              (string-match (car checks) filename)
+                            ;; A predicate
+                            (funcall (car checks) filename))))
             checks (cdr checks)))
     keepit))
 
@@ -590,7 +590,7 @@ menu-elements (no sub-menu)."
 ;; Count the number of assigned menu shortcuts.
 (defvar recentf-menu-shortcuts)
 
-(defun recentf-make-menu-items (&optional menu)
+(defun recentf-make-menu-items (&optional _menu)
   "Make menu items from the recent list.
 This is a menu filter function which ignores the MENU argument."
   (setq recentf-menu-filter-commands nil)
@@ -1036,7 +1036,7 @@ That is, remove a non kept file from the recent list."
 
 ;;; Common dialog stuff
 ;;
-(defun recentf-cancel-dialog (&rest ignore)
+(defun recentf-cancel-dialog (&rest _ignore)
   "Cancel the current dialog.
 IGNORE arguments."
   (interactive)
@@ -1092,7 +1092,7 @@ Go to the beginning of buffer if not found."
 ;;
 (defvar recentf-edit-list nil)
 
-(defun recentf-edit-list-select (widget &rest ignore)
+(defun recentf-edit-list-select (widget &rest _ignore)
   "Toggle a file selection based on the checkbox WIDGET state.
 IGNORE other arguments."
   (let ((value (widget-get widget :tag))
@@ -1102,7 +1102,7 @@ IGNORE other arguments."
       (setq recentf-edit-list (delq value recentf-edit-list)))
     (message "%s %sselected" value (if check "" "un"))))
 
-(defun recentf-edit-list-validate (&rest ignore)
+(defun recentf-edit-list-validate (&rest _ignore)
   "Process the recent list when the edit list dialog is committed.
 IGNORE arguments."
   (if recentf-edit-list
@@ -1146,7 +1146,7 @@ Click on Cancel or type `q' to cancel.\n")
 \f
 ;;; Open file dialog
 ;;
-(defun recentf-open-files-action (widget &rest ignore)
+(defun recentf-open-files-action (widget &rest _ignore)
   "Open the file stored in WIDGET's value when notified.
 IGNORE other arguments."
   (kill-buffer (current-buffer))
@@ -1367,5 +1367,4 @@ that were operated on recently."
 
 (run-hooks 'recentf-load-hook)
 \f
-;; arch-tag: 78f1eec9-0d16-4d19-a4eb-2e4529edb62a
 ;;; recentf.el ends here