]> code.delx.au - gnu-emacs/blobdiff - lisp/recentf.el
(ldap-search-internal): Handle <file://...> in results.
[gnu-emacs] / lisp / recentf.el
index 16450de6ba26361a3b468974b79fa63d6e596893..44e414547412cc1ce4939a8b4990d6a081c27b35 100644 (file)
@@ -1,6 +1,6 @@
-;; recentf.el --- setup a menu of recently opened files
+;;; recentf.el --- setup a menu of recently opened files
 
-;; Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
 
 ;; Author: David Ponce <david@dponce.com>
 ;; Created: July 19 1999
@@ -135,28 +135,43 @@ list of recently opened files."
 
 (defcustom recentf-menu-filter nil
   "*Function used to filter files displayed in the recentf menu.
-Nil means no filter.  The following functions are predefined:
-
-- `recentf-sort-ascending' to sort menu items in ascending order.
-- `recentf-sort-descending' to sort menu items in descending order.
-- `recentf-sort-basenames-ascending' to sort file names in descending order.
-- `recentf-sort-basenames-descending' to sort file names in descending order.
-- `recentf-sort-directories-ascending' to sort directories in ascending order.
-- `recentf-sort-directories-descending' to sort directories in descending order.
-- `recentf-show-basenames' to show file names (no directories) in menu items.
-- `recentf-show-basenames-ascending' to show file names in ascending order.
-- `recentf-show-basenames-descending' to show file names in descending order.
-- `recentf-relative-filter' to show file names relative to `default-directory'.
-- `recentf-arrange-by-rule' to show sub-menus following user defined rules.
-- `recentf-arrange-by-mode' to show a sub-menu for each major mode.
-- `recentf-arrange-by-dir' to show a sub-menu for each directory.
-- `recentf-filter-changer' to manage a ring of filters.
+nil means no filter.  The following functions are predefined:
+
+- `recentf-sort-ascending' to sort menu items in ascending order.
+- `recentf-sort-descending' to sort menu items in descending order.
+- `recentf-sort-basenames-ascending' to sort file names in descending order.
+- `recentf-sort-basenames-descending' to sort file names in descending order.
+- `recentf-sort-directories-ascending' to sort directories in ascending order.
+- `recentf-sort-directories-descending' to sort directories in descending order.
+- `recentf-show-basenames' to show file names (no directories) in menu items.
+- `recentf-show-basenames-ascending' to show file names in ascending order.
+- `recentf-show-basenames-descending' to show file names in descending order.
+- `recentf-relative-filter' to show file names relative to `default-directory'.
+- `recentf-arrange-by-rule' to show sub-menus following user defined rules.
+- `recentf-arrange-by-mode' to show a sub-menu for each major mode.
+- `recentf-arrange-by-dir' to show a sub-menu for each directory.
+- `recentf-filter-changer' to manage a ring of filters.
 
 The filter function is called with one argument, the list of menu elements
 used to build the menu and must return a new list of menu elements (see
 `recentf-make-menu-element' for menu element form)."
   :group 'recentf
-  :type 'function
+  :type '(radio (const nil) 
+               (function-item recentf-sort-ascending)
+               (function-item recentf-sort-descending)
+               (function-item recentf-sort-basenames-ascending)
+               (function-item recentf-sort-basenames-descending)
+               (function-item recentf-sort-directories-ascending)
+               (function-item recentf-sort-directories-descending)
+               (function-item recentf-show-basenames)
+               (function-item recentf-show-basenames-ascending)
+               (function-item recentf-show-basenames-descending)
+               (function-item recentf-relative-filter)
+               (function-item recentf-arrange-by-rule)
+               (function-item recentf-arrange-by-mode)
+               (function-item recentf-arrange-by-dir)
+               (function-item recentf-filter-changer)
+               function)
   :set 'recentf-menu-customization-changed)
 
 (defcustom recentf-menu-append-commands-p t
@@ -547,10 +562,10 @@ defined."
 
 (defcustom recentf-arrange-by-rule-subfilter nil
   "*Function used by `recentf-arrange-by-rule' to filter sub-menu elements.
-Nil means no filter.  See also `recentf-menu-filter'.  You can't use
+nil means no filter.  See also `recentf-menu-filter'.  You can't use
 `recentf-arrange-by-rule' itself here!"
   :group 'recentf-filters
-  :type 'function
+  :type '(choice (const nil) function)
   :set (lambda (sym val)
          (if (eq val 'recentf-arrange-by-rule)
              (error "Can't use `recentf-arrange-by-rule' itself here!")
@@ -831,18 +846,14 @@ These are the special commands of `recentf-dialog-mode' mode:
 Optional argument LIMIT specifies a maximum length when VARIABLE value
 is a list (default to the full list)."
   (let ((value (symbol-value variable)))
-    (insert (format "(setq %S\n      '(\n" variable))
-    (cond ((consp value)
-           (if (and (integerp limit) (> limit 0))
-               (setq value (recentf-trunc-list value limit)))
-           (mapc (function
-                  (lambda (e)
-                    (insert (format "        %S\n" e))))
-                 value))
-          (t
-           (insert (format "        %S\n" value))))
-    (insert "        ))\n")
-    ))
+    (if (listp value)
+       (progn
+         (when (and (integerp limit) (> limit 0))
+           (setq value (recentf-trunc-list value limit)))
+         (insert (format "(setq %S '(" variable))
+         (mapc (lambda (e) (insert (format "\n%S" e))) value)
+         (insert "))\n"))
+      (insert (format "(setq %S %S)\n" variable value)))))
 
 ;;;###autoload
 (defun recentf-save-list ()