From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: David PONCE Newsgroups: gmane.emacs.devel Subject: Re: [Stephen.Berman@gmx.net: Recentf and gzipped elisp source files] Date: Thu, 24 Nov 2005 13:55:41 +0100 (CET) Message-ID: <20582568.1132836941188.JavaMail.www@wwinf1612> Reply-To: david.ponce@wanadoo.fr NNTP-Posting-Host: main.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Trace: sea.gmane.org 1132838379 21914 80.91.229.2 (24 Nov 2005 13:19:39 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Thu, 24 Nov 2005 13:19:39 +0000 (UTC) Cc: rms@gnu.org, emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Nov 24 14:19:31 2005 Return-path: Original-Received: from lists.gnu.org ([199.232.76.165]) by ciao.gmane.org with esmtp (Exim 4.43) id 1EfGzM-0004r8-If for ged-emacs-devel@m.gmane.org; Thu, 24 Nov 2005 14:18:13 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1EfGzL-00085Q-Dx for ged-emacs-devel@m.gmane.org; Thu, 24 Nov 2005 08:18:11 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1EfGde-0004QP-5C for emacs-devel@gnu.org; Thu, 24 Nov 2005 07:55:46 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1EfGdc-0004PS-0P for emacs-devel@gnu.org; Thu, 24 Nov 2005 07:55:44 -0500 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1EfGdb-0004PB-Bc for emacs-devel@gnu.org; Thu, 24 Nov 2005 07:55:43 -0500 Original-Received: from [193.252.23.89] (helo=smtp16.wanadoo.fr) by monty-python.gnu.org with esmtp (Exim 4.34) id 1EfGda-0000VE-Jh for emacs-devel@gnu.org; Thu, 24 Nov 2005 07:55:43 -0500 Original-Received: from me-wanadoo.net (localhost [127.0.0.1]) by mwinf1602.wanadoo.fr (SMTP Server) with ESMTP id 36CC9700008C for ; Thu, 24 Nov 2005 13:55:41 +0100 (CET) Original-Received: from wwinf1612 (wwinf1612 [172.22.147.55]) by mwinf1602.wanadoo.fr (SMTP Server) with ESMTP id 309667000081; Thu, 24 Nov 2005 13:55:41 +0100 (CET) X-ME-UUID: 20051124125541199.309667000081@mwinf1602.wanadoo.fr Original-To: Stephen.Berman@gmx.net X-Originating-IP: [205.167.7.18] X-Wum-Nature: EMAIL-NATURE X-WUM-FROM: |~| X-WUM-TO: |~| X-WUM-CC: |~||~| X-WUM-REPLYTO: |~| X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:46511 Archived-At: Sorry, here is a better patch. Index: recentf.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvsroot/emacs/emacs/lisp/recentf.el,v retrieving revision 1.48 diff -c -r1.48 recentf.el *** recentf.el=0914 Oct 2005 09:04:38 -0000=091.48 --- recentf.el=0924 Nov 2005 12:51:31 -0000 *************** *** 813,851 **** Arrange them in sub-menus following rules in `recentf-arrange-rules'." (if (not recentf-arrange-rules) l ! (let ((menus (mapcar #'(lambda (r) (list (car r))) ! recentf-arrange-rules)) ! menu others min file rules elts count) (dolist (elt l) ! (setq file (recentf-menu-element-value elt) ! rules recentf-arrange-rules ! elts menus ! menu nil) ! (while (and (not menu) rules) ! (when (recentf-match-rule-p (cdar rules) file) ! (setq menu (car elts)) (recentf-set-menu-element-value menu (cons elt (recentf-menu-element-value menu)))) ! (setq rules (cdr rules) ! elts (cdr elts))) ! (unless menu ! (push elt others))) !=20 ! (setq l nil ! min (if (natnump recentf-arrange-by-rules-min-items) ! recentf-arrange-by-rules-min-items 0)) (dolist (menu menus) ! (when (setq elts (recentf-menu-element-value menu)) ! (setq count (length elts)) (if (< count min) ! (setq others (nconc elts others)) (recentf-set-menu-element-item menu (format (recentf-menu-element-item menu) count)) (recentf-set-menu-element-value menu (recentf-apply-menu-filter ! recentf-arrange-by-rule-subfilter (nreverse elts))) ! (push menu l)))) !=20 (if (and (stringp recentf-arrange-by-rule-others) others) (nreverse (cons --- 813,861 ---- Arrange them in sub-menus following rules in `recentf-arrange-rules'." (if (not recentf-arrange-rules) l ! (let* ((strip (assq t recentf-arrange-rules)) ! (rules (remq strip recentf-arrange-rules)) ! (menus (mapcar #'(lambda (r) (list (car r))) rules)) ! others l1 l2 menu file min count) ! ;; Put menu items into sub-menus as defined by rules. (dolist (elt l) ! (setq l1 menus ;; List of sub-menus ! l2 rules ;; List of corresponding matchers. ! file (recentf-menu-element-value elt) ! menu nil) ! ;; Apply the strip suffix rule. ! (while (recentf-match-rule-p (cdr strip) file) ! (setq file (substring file 0 (match-beginning 0)))) ! ;; Search which sub-menu to put the menu item into. ! (while (and (not menu) l2) ! (when (recentf-match-rule-p (cdar l2) file) ! (setq menu (car l1)) (recentf-set-menu-element-value menu (cons elt (recentf-menu-element-value menu)))) ! (setq l1 (cdr l1) ! l2 (cdr l2))) ! ;; Put unmatched menu-items in the `others' bin. ! (or menu (push elt others))) ! ;; Finalize the sub-menus. That is, for each one: ! ;; - truncate it depending on the value of ! ;; `recentf-arrange-by-rules-min-items', ! ;; - Replace %d by the number of menu-items, ! ;; - apply `recentf-arrange-by-rule-subfilter' to menu-items. ! (setq min (if (natnump recentf-arrange-by-rules-min-items) ! recentf-arrange-by-rules-min-items 0) ! l2 nil) (dolist (menu menus) ! (when (setq l1 (recentf-menu-element-value menu)) ! (setq count (length l1)) (if (< count min) ! (setq others (nconc l1 others)) (recentf-set-menu-element-item menu (format (recentf-menu-element-item menu) count)) (recentf-set-menu-element-value menu (recentf-apply-menu-filter ! recentf-arrange-by-rule-subfilter (nreverse l1))) ! (push menu l2)))) ! ;; Add the menu items remaining in the `others' bin. (if (and (stringp recentf-arrange-by-rule-others) others) (nreverse (cons *************** *** 853,864 **** (format recentf-arrange-by-rule-others (length others)) (recentf-apply-menu-filter recentf-arrange-by-rule-subfilter (nreverse others))) ! l)) (nconc ! (nreverse l) (recentf-apply-menu-filter ! recentf-arrange-by-rule-subfilter (nreverse others))))) ! )) =0C ;;; Predefined rule based menu filters ;; --- 863,873 ---- (format recentf-arrange-by-rule-others (length others)) (recentf-apply-menu-filter recentf-arrange-by-rule-subfilter (nreverse others))) ! l2)) (nconc ! (nreverse l2) (recentf-apply-menu-filter ! recentf-arrange-by-rule-subfilter (nreverse others))))))) =0C ;;; Predefined rule based menu filters ;; *************** *** 870,881 **** (dolist (mode auto-mode-alist) (setq regexp (car mode) mode (cdr mode)) ! (when (symbolp mode) ! (setq rule-name (symbol-name mode)) ! (if (string-match "\\(.*\\)-mode$" rule-name) ! (setq rule-name (match-string 1 rule-name))) ! (setq rule-name (concat rule-name " (%d)") ! rule (assoc rule-name rules)) (if rule (setcdr rule (cons regexp (cdr rule))) (push (list rule-name regexp) rules)))) --- 879,898 ---- (dolist (mode auto-mode-alist) (setq regexp (car mode) mode (cdr mode)) ! (when mode ! (cond ! ;; Build a special "strip suffix" rule from entries of the ! ;; form (REGEXP FUNCTION NON-NIL). Notice that FUNCTION is ! ;; ignored by the menu filter. So in some corner cases a ! ;; wrong mode could be guessed. ! ((and (consp mode) (cadr mode)) ! (setq rule-name t)) ! ((and mode (symbolp mode)) ! (setq rule-name (symbol-name mode)) ! (if (string-match "\\(.*\\)-mode$" rule-name) ! (setq rule-name (match-string 1 rule-name))) ! (setq rule-name (concat rule-name " (%d)")))) ! (setq rule (assoc rule-name rules)) (if rule (setcdr rule (cons regexp (cdr rule))) (push (list rule-name regexp) rules))))