all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
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

             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.