Mercurial > emacs
changeset 105002:e78ee4d53b02
* recentf.el (recentf-cleanup): Use a hash table to find
duplicates (Bug#4407).
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Sun, 13 Sep 2009 21:09:05 +0000 |
parents | f665043359a7 |
children | 5b946f854966 |
files | lisp/ChangeLog lisp/recentf.el |
diffstat | 2 files changed, 16 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Sun Sep 13 20:48:09 2009 +0000 +++ b/lisp/ChangeLog Sun Sep 13 21:09:05 2009 +0000 @@ -1,3 +1,8 @@ +2009-09-13 Vincent Belaïche <vincent.belaiche@gmail.com> + + * recentf.el (recentf-cleanup): Use a hash table to find + duplicates (Bug#4407). + 2009-09-13 Per Starbäck <per@starback.se> (tiny change) * textmodes/ispell.el (ispell-command-loop): Convert keys such as
--- a/lisp/recentf.el Sun Sep 13 20:48:09 2009 +0000 +++ b/lisp/recentf.el Sun Sep 13 21:09:05 2009 +0000 @@ -1307,13 +1307,20 @@ That is, remove duplicates, non-kept, and excluded files." (interactive) (message "Cleaning up the recentf list...") - (let ((n 0) newlist) + (let ((n 0) + (ht (make-hash-table + :size recentf-max-saved-items + :test 'equal)) + newlist key) (dolist (f recentf-list) - (setq f (recentf-expand-file-name f)) + (setq f (recentf-expand-file-name f) + key (if recentf-case-fold-search (downcase f) f)) (if (and (recentf-include-p f) (recentf-keep-p f) - (not (recentf-string-member f newlist))) - (push f newlist) + (not (gethash key ht))) + (progn + (push f newlist) + (puthash key t ht)) (setq n (1+ n)) (message "File %s removed from the recentf list" f))) (message "Cleaning up the recentf list...done (%d removed)" n)