From: vincent.belaiche@gmail.com.?= (Vincent =?UTF-8?Q?Bela=C3=AFche)
To: emacs-pretest-bug@gnu.org, monnier@IRO.UMontreal.CA
Cc: emacs-devel@gnu.org
Subject: bug#4407: 23.1.50; Re: Recentf cleanup optmization
Date: Fri, 11 Sep 2009 21:49:15 +0200 [thread overview]
Message-ID: <87my51l0sk.fsf@gmail.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 797 bytes --]
Dear Stefan,
I've tried now to follow as strictly as possible the instruction from
info node "(emacs) Sending Patches".
* Explanation of change: function `recentf-cleanup' can be very slow
when the recentf-max-saved-items is significant, e.g. 60 items. This
is due to this that duplicate items are removed with a iterative
search (which means that cleanup is made in quadratic time). The
change consists in using a search based on a hash table, so that the
cleanup is in linear time. Function impacted are function
`recentf-cleanup' and a new function `recentf-string-key' is created.
* patch made with diff -c is attached.
file [d:/msys/temp/recentf.el Fri Sep 11 19:41:51 2009] is download
from CVS, and file [recentf.el Wed Sep 2 16:34:04 2009] is the
modified one.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Patch to recentf.el --]
[-- Type: text/x-patch, Size: 1889 bytes --]
*** recentf.el Wed Sep 2 16:34:04 2009
--- d:/msys/temp/recentf.el Fri Sep 11 19:41:51 2009
***************
*** 310,322 ****
(string-equal (downcase s1) (downcase s2))
(string-equal s1 s2)))
- (defsubst recentf-string-key (s)
- "Return a string that is used for `recentf-string-equal' or
- `recentf-string-lessp' comparisons. "
- (if recentf-case-fold-search
- (downcase s) s))
-
-
(defsubst recentf-string-lessp (s1 s2)
"Return non-nil if string S1 is less than S2 in lexicographic order.
Ignore case if `recentf-case-fold-search' is non-nil."
--- 310,315 ----
***************
*** 1314,1334 ****
That is, remove duplicates, non-kept, and excluded files."
(interactive)
(message "Cleaning up the recentf list...")
! (let ((n 0)
! newlist
! hk
! (ht (make-hash-table
! :size recentf-max-saved-items
! :test 'equal)))
(dolist (f recentf-list)
! (setq f (recentf-expand-file-name f)
! hk (recentf-string-key f))
(if (and (recentf-include-p f)
(recentf-keep-p f)
! (not (gethash hk ht)))
! (progn
! (push f newlist)
! (puthash hk 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)
--- 1307,1319 ----
That is, remove duplicates, non-kept, and excluded files."
(interactive)
(message "Cleaning up the recentf list...")
! (let ((n 0) newlist)
(dolist (f recentf-list)
! (setq f (recentf-expand-file-name f))
(if (and (recentf-include-p f)
(recentf-keep-p f)
! (not (recentf-string-member f newlist)))
! (push f newlist)
(setq n (1+ n))
(message "File %s removed from the recentf list" f)))
(message "Cleaning up the recentf list...done (%d removed)" n)
[-- Attachment #3: Type: text/plain, Size: 2873 bytes --]
In GNU Emacs 23.1.50.1 (i386-mingw-nt5.0.2195)
of 2009-07-25 on COCOTTE
Windowing system distributor `Microsoft Corp.', version 5.0.2195
configured using `configure --with-gcc (3.4)'
Important settings:
value of $LC_ALL: nil
value of $LC_COLLATE: nil
value of $LC_CTYPE: nil
value of $LC_MESSAGES: nil
value of $LC_MONETARY: nil
value of $LC_NUMERIC: nil
value of $LC_TIME: nil
value of $LANG: FRA
value of $XMODIFIERS: nil
locale-coding-system: cp1252
default-enable-multibyte-characters: t
Major mode: Info
Minor modes in effect:
shell-dirtrack-mode: t
recentf-mode: t
mail-abbrevs-mode: t
iswitchb-mode: t
tooltip-mode: t
mouse-wheel-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
global-auto-composition-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
line-number-mode: t
transient-mark-mode: t
Recent input:
) <backspace> <backspace> ) M-q <down> <home> <C-right>
<C-right> s <end> SPC o n SPC a SPC h a s h SPC t a
b l e , s SPC o SPC <backspace> <backspace> <backspace>
<backspace> SPC s o SPC t h <up> <up> <home> <down>
<end> <down> a t SPC t h e SPC c l e a n u p SPC i
s SPC i n SPC q u a d r a <backspace> <backspace> <backspace>
<backspace> <backspace> <backspace> l i n e a r SPC
t i m e . SPC F u n c t i o n SPC i m p a c t e d SPC
a r e SPC f u n c t i o n <up> <up> <up> <up> <up>
<C-left> <C-left> <C-left> <C-left> C-SPC <C-right>
<C-right> <C-insert> <down> <down> <down> <down> <down>
<end> SPC ` C-y SPC a n d SPC C-x o <down> <down> <down>
<down> <down> <down> C-s C-s C-a <up> C-s c l e a n
C-w C-s C-s C-s C-s C-s C-s C-s C-s C-s C-s <up> <up>
<left> <C-left> <C-left> C-s C-w C-w C-s C-s C-s C-s
<down> <down> <down> <down> <down> <down> <down> <down>
<down> <down> <down> <down> <down> <down> <down> <down>
<up> <up> <up> <right> <right> <right> <right> <right>
C-SPC <C-right> <C-right> <C-right> <C-insert> C-x
o a SPC n e w SPC f u n c t i o n SPC C-y <C-left>
<C-left> <C-left> ` <end> ' SPC i s SPC c r e a t e
d . <return> <return> C-x o C-x <kp-0> C-h i <down>
<down> <down> <down> <down> <down> <down> <down> M-x
b u g - r e p o r t <tab> <return> C-a M-d <delete>
<end> <kp-subtract> b u g <tab> <tab> e m <tab> <r
eturn>
Recent messages:
Mark set [4 times]
Auto-saving...done
Mark set
Mark saved where search started
Auto-saving...done
Mark set [2 times]
Mark saved where search started [3 times]
Mark set [2 times]
Making completion list...
iswitchb-read-buffer: Command attempted to use minibuffer while in minibuffer
Load-path shadows:
d:/Programme/GNU/emacs-extension/cedet/common/ezimage hides d:/Programme/GNU/Emacs/lisp/ezimage
c:/Documents and Settings/Vincent/Application Data/.emacs.d/etc/custom hides d:/Programme/GNU/Emacs/lisp/custom
next reply other threads:[~2009-09-11 19:49 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <873a6qmtw9.fsf@cyd.mit.edu>
2009-09-11 19:49 ` Vincent =?UTF-8?Q?Bela=C3=AFche [this message]
2009-09-13 21:20 ` bug#4407: marked as done (23.1.50; Re: Recentf cleanup optmization) Emacs bug Tracking System
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87my51l0sk.fsf@gmail.com \
--to=vincent.belaiche@gmail.com.?= \
--cc=?=.4407@emacsbugs.donarmstrong.com \
--cc=emacs-devel@gnu.org \
--cc=emacs-pretest-bug@gnu.org \
--cc=monnier@IRO.UMontreal.CA \
--cc=vincent.belaiche@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.