annotate lisp/filesets.el @ 97528:184bb2071e3f

mail/: Add new (temporary) libaries for which to test Rmail/mbox such that Rmail/babyl is not affected. This creates a facility/feature called "pmail" (analagous to "rmail") that can be used independently from Rmail for testing purposes. The plan is to replace the "rmail" files eventually and remove "pmail" entirely at that point. In the interim, interested developers can use either Rmail or Pmail or both (which is not recommended for the casual User or the faint of heart).
author Paul Reilly <pmr@pajato.com>
date Mon, 18 Aug 2008 04:51:28 +0000
parents b4faea6c6c00
children 38ad371acd1d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1 ;;; filesets.el --- handle group of files
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
3 ;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
4 ;; Free Software Foundation, Inc.
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5
44959
f23f11648559 (filesets-data): Doc fix.
Pavel Janík <Pavel@Janik.cz>
parents: 44934
diff changeset
6 ;; Author: Thomas Link <t.link@gmx.at>
50782
1b22075b3bb5 (filesets-data): Add another defvar.
Richard M. Stallman <rms@gnu.org>
parents: 50683
diff changeset
7 ;; Maintainer: FSF
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8 ;; Keywords: filesets convenience
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9
44959
f23f11648559 (filesets-data): Doc fix.
Pavel Janík <Pavel@Janik.cz>
parents: 44934
diff changeset
10 ;; This file is part of GNU Emacs.
f23f11648559 (filesets-data): Doc fix.
Pavel Janík <Pavel@Janik.cz>
parents: 44934
diff changeset
11
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
12 ;; GNU Emacs is free software: you can redistribute it and/or modify
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
14 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
15 ;; (at your option) any later version.
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 ;; GNU General Public License for more details.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
22 ;; You should have received a copy of the GNU General Public License
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
23 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
24
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
25 ;;; Code:
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26
45164
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
27 (defvar filesets-version "1.8.4")
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28 (defvar filesets-homepage
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 "http://members.a1.net/t.link/CompEmacsFilesets.html")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31 ;;; Commentary:
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32
44973
73e9132139f2 Fix typo.
Pavel Janík <Pavel@Janik.cz>
parents: 44959
diff changeset
33 ;; Define filesets, which can be opened or saved with the power of one or
44959
f23f11648559 (filesets-data): Doc fix.
Pavel Janík <Pavel@Janik.cz>
parents: 44934
diff changeset
34 ;; two mouse clicks only. A fileset is either a list of files, a file
f23f11648559 (filesets-data): Doc fix.
Pavel Janík <Pavel@Janik.cz>
parents: 44934
diff changeset
35 ;; pattern, a base directory and a search pattern (for files), or an
f23f11648559 (filesets-data): Doc fix.
Pavel Janík <Pavel@Janik.cz>
parents: 44934
diff changeset
36 ;; inclusion group (i.e. a base file including other files).
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37
50683
11093cda819e Don't call filesets-init.
Richard M. Stallman <rms@gnu.org>
parents: 49475
diff changeset
38 ;; Usage:
11093cda819e Don't call filesets-init.
Richard M. Stallman <rms@gnu.org>
parents: 49475
diff changeset
39 ;; 1. Put (require 'filesets) and (filesets-init) in your .emacs file.
11093cda819e Don't call filesets-init.
Richard M. Stallman <rms@gnu.org>
parents: 49475
diff changeset
40 ;; 2. Type ;; M-x filesets-edit or choose "Edit Filesets" from the menu.
11093cda819e Don't call filesets-init.
Richard M. Stallman <rms@gnu.org>
parents: 49475
diff changeset
41 ;; 3. Save your customizations.
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42
44959
f23f11648559 (filesets-data): Doc fix.
Pavel Janík <Pavel@Janik.cz>
parents: 44934
diff changeset
43 ;; Caveat: Fileset names have to be unique.
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44
44959
f23f11648559 (filesets-data): Doc fix.
Pavel Janík <Pavel@Janik.cz>
parents: 44934
diff changeset
45 ;; Filesets.el adds a nifty filesets menu to your menubar. If you change
f23f11648559 (filesets-data): Doc fix.
Pavel Janík <Pavel@Janik.cz>
parents: 44934
diff changeset
46 ;; your filesets on the fly, don't forget to select "Save Filesets" from
f23f11648559 (filesets-data): Doc fix.
Pavel Janík <Pavel@Janik.cz>
parents: 44934
diff changeset
47 ;; the menu.
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48
44959
f23f11648559 (filesets-data): Doc fix.
Pavel Janík <Pavel@Janik.cz>
parents: 44934
diff changeset
49 ;; Pressing on the first item in the submenu will open all files at once.
f23f11648559 (filesets-data): Doc fix.
Pavel Janík <Pavel@Janik.cz>
parents: 44934
diff changeset
50 ;; Define your own function, e.g. browse-url, for opening a fileset's
f23f11648559 (filesets-data): Doc fix.
Pavel Janík <Pavel@Janik.cz>
parents: 44934
diff changeset
51 ;; files. Or define external viewers for opening files with other
f23f11648559 (filesets-data): Doc fix.
Pavel Janík <Pavel@Janik.cz>
parents: 44934
diff changeset
52 ;; programs. See `filesets-external-viewers'.
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53
44959
f23f11648559 (filesets-data): Doc fix.
Pavel Janík <Pavel@Janik.cz>
parents: 44934
diff changeset
54 ;; BTW, if you close a fileset, files, which have been changed, will
96376
c3309dba6542 American English spelling fix.
Glenn Morris <rgm@gnu.org>
parents: 94678
diff changeset
55 ;; be silently saved. Change this behavior by setting
44959
f23f11648559 (filesets-data): Doc fix.
Pavel Janík <Pavel@Janik.cz>
parents: 44934
diff changeset
56 ;; `filesets-save-buffer-fn'.
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58 ;;; Supported modes for inclusion groups (`filesets-ingroup-patterns'):
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59 ;; - Elisp
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60 ;; - Emacs-Wiki (simple names only)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
61 ;; - LaTeX
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65 ;;; Known bugs:
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
66
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
67
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
68 ;;; To do:
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70 ;;- better handling of different customization scenarios
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
71
50782
1b22075b3bb5 (filesets-data): Add another defvar.
Richard M. Stallman <rms@gnu.org>
parents: 50683
diff changeset
72 ;; Data gathering should be better separated from building the menu
1b22075b3bb5 (filesets-data): Add another defvar.
Richard M. Stallman <rms@gnu.org>
parents: 50683
diff changeset
73 ;; so that one could (1) use filesets without installing the menu
1b22075b3bb5 (filesets-data): Add another defvar.
Richard M. Stallman <rms@gnu.org>
parents: 50683
diff changeset
74 ;; and (2) create new "frontends" to speedbar and others.
1b22075b3bb5 (filesets-data): Add another defvar.
Richard M. Stallman <rms@gnu.org>
parents: 50683
diff changeset
75
1b22075b3bb5 (filesets-data): Add another defvar.
Richard M. Stallman <rms@gnu.org>
parents: 50683
diff changeset
76 ;; The functionality to call external viewers should be isolated in
1b22075b3bb5 (filesets-data): Add another defvar.
Richard M. Stallman <rms@gnu.org>
parents: 50683
diff changeset
77 ;; an extra package and possibly integrated with the MIME
1b22075b3bb5 (filesets-data): Add another defvar.
Richard M. Stallman <rms@gnu.org>
parents: 50683
diff changeset
78 ;; handling.
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
79
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
80 ;;; Credits:
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
81
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
82 ;; Helpful suggestions (but no significant code) were contributed by
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
83
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84 ;;- Christoph Conrad (at gmx de)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85 ;;- Christian Ohler (at Informatik Uni-Oldenburg DE)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
86 ;;- Richard Stallman aka RMS (at gnu org)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
87 ;;- Per Abrahamsen aka abraham (at dina kvl dk)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
88
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 ;;; Code:
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92 (eval-when-compile
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93 (require 'cl))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96 ;;; Some variables
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
97
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
98 (defvar filesets-menu-cache nil
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
99 "The whole filesets menu.")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100 (defvar filesets-cache-version nil
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101 "Filesets' cached version number.")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102 (defvar filesets-cache-hostname nil
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
103 "Filesets' cached system name.")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
104
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
105 (defvar filesets-ingroup-cache nil
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
106 "A plist containing files and their ingroup data.")
45012
161015ebadc0 (filesets-running-xemacs): Make defvar unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 44973
diff changeset
107 (defvar filesets-ingroup-files nil
161015ebadc0 (filesets-running-xemacs): Make defvar unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 44973
diff changeset
108 "List of files already processed when searching for included files.")
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
109
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
110 (defvar filesets-has-changed-flag t
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
111 "Non-nil means some fileset definition has changed.")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
112 (defvar filesets-submenus nil
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113 "An association list with filesets menu data.")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
114 (defvar filesets-updated-buffers nil
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
115 "A list of buffers with updated menu bars.")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
116 (defvar filesets-menu-use-cached-flag nil
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
117 "Use cached data. See `filesets-menu-ensure-use-cached' for details.")
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
118 (defvar filesets-update-cache-file-flag nil
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
119 "Non-nil means the cache needs updating.")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
120 (defvar filesets-ignore-next-set-default nil
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
121 "List of custom variables for which the next `set-default' will be ignored.")
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
122
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
123 (defvar filesets-output-buffer-flag nil
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
124 "Non-nil means the current buffer is an output buffer created by filesets.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
125 Is buffer local variable.")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
126
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
127 (defvar filesets-verbosity 1
50782
1b22075b3bb5 (filesets-data): Add another defvar.
Richard M. Stallman <rms@gnu.org>
parents: 50683
diff changeset
128 "An integer defining the level of verbosity.
1b22075b3bb5 (filesets-data): Add another defvar.
Richard M. Stallman <rms@gnu.org>
parents: 50683
diff changeset
129 0 means no messages at all.")
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
130
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
131 (defvar filesets-menu-ensure-use-cached
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
132 (and (featurep 'xemacs)
62888
df1894ffb13c (filesets-menu-ensure-use-cached):
Richard M. Stallman <rms@gnu.org>
parents: 61583
diff changeset
133 (if (fboundp 'emacs-version>=)
df1894ffb13c (filesets-menu-ensure-use-cached):
Richard M. Stallman <rms@gnu.org>
parents: 61583
diff changeset
134 (not (emacs-version>= 21 5))))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
135 "Make sure (X)Emacs uses filesets' cache.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
136
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
137 Well, if you use XEmacs (prior to 21.5?) custom.el is loaded after
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
138 init.el. This means that settings saved in the cache file (see
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
139 `filesets-menu-cache-file') will be overwritten by custom.el. In order
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140 to ensure the use of the cache file, set this variable to t -- which is
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
141 the default for XEmacs prior to 21.5. If you want to change this value
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
142 put \"(setq filesets-menu-ensure-use-cached VALUE)\" into your startup
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143 file -- before loading filesets.el.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
144
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
145 So, when should you think about setting this value to t? If filesets.el
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
146 is loaded before user customizations. Thus, if (require 'filesets)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
147 precedes the custom-set-variables command or, for XEmacs, if init.el is
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
148 loaded before custom.el, set this variable to t.")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
149
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
150
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151 ;;; utils
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
152 (defun filesets-filter-list (lst cond-fn)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
153 "Remove all elements not conforming to COND-FN from list LST.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
154 COND-FN takes one argument: the current element."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
155 ; (remove* 'dummy lst :test (lambda (dummy elt)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
156 ; (not (funcall cond-fn elt)))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
157 (let ((rv nil))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
158 (dolist (elt lst rv)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
159 (when (funcall cond-fn elt)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
160 (setq rv (append rv (list elt)))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
161
45164
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
162 (defun filesets-ormap (fsom-pred lst)
79092
c2f73447531e (filesets-alist-get): Use `let' rather than `let*'.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
163 "Return the tail of LST for the head of which FSOM-PRED is non-nil."
45164
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
164 (let ((fsom-lst lst)
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
165 (fsom-rv nil))
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
166 (while (and (not (null fsom-lst))
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
167 (null fsom-rv))
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
168 (if (funcall fsom-pred (car fsom-lst))
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
169 (setq fsom-rv fsom-lst)
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
170 (setq fsom-lst (cdr fsom-lst))))
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
171 fsom-rv))
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
172
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
173 (defun filesets-some (fss-pred fss-lst)
49475
796b9b8e53c3 (filesets-file-open): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 48862
diff changeset
174 "Return non-nil if FSS-PRED is non-nil for any element of FSS-LST.
45164
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
175 Like `some', return the first value of FSS-PRED that is non-nil."
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
176 (catch 'exit
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
177 (dolist (fss-this fss-lst nil)
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
178 (let ((fss-rv (funcall fss-pred fss-this)))
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
179 (when fss-rv
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
180 (throw 'exit fss-rv))))))
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
181 ;(fset 'filesets-some 'some) ;; or use the cl function
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
182
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
183 (defun filesets-member (fsm-item fsm-lst &rest fsm-keys)
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
184 "Find the first occurrence of FSM-ITEM in FSM-LST.
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
185 It is supposed to work like cl's `member*'. At the moment only the :test
45164
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
186 key is supported."
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
187 (let ((fsm-test (or (plist-get fsm-keys ':test)
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
188 (function equal))))
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
189 (filesets-ormap (lambda (fsm-this)
49475
796b9b8e53c3 (filesets-file-open): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 48862
diff changeset
190 (funcall fsm-test fsm-item fsm-this))
45164
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
191 fsm-lst)))
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
192 ;(fset 'filesets-member 'member*) ;; or use the cl function
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
193
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
194 (defun filesets-sublist (lst beg &optional end)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
195 "Get the sublist of LST from BEG to END - 1."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
196 (let ((rv nil)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
197 (i beg)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
198 (top (or end
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
199 (length lst))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200 (while (< i top)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
201 (setq rv (append rv (list (nth i lst))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
202 (setq i (+ i 1)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
203 rv))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
204
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
205 (defun filesets-select-command (cmd-list)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
206 "Select one command from CMD-LIST -- a string with space separated names."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
207 (let ((this (shell-command-to-string
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
208 (format "which --skip-alias %s 2> /dev/null | head -n 1"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
209 cmd-list))))
49475
796b9b8e53c3 (filesets-file-open): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 48862
diff changeset
210 (if (equal this "")
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
211 nil
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
212 (file-name-nondirectory (substring this 0 (- (length this) 1))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
213
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
214 (defun filesets-which-command (cmd)
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
215 "Call \"which CMD\"."
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
216 (shell-command-to-string (format "which %s" cmd)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
217
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
218 (defun filesets-which-command-p (cmd)
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
219 "Call \"which CMD\" and return non-nil if the command was found."
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
220 (when (string-match (format "\\(/[^/]+\\)?/%s" cmd)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
221 (filesets-which-command cmd))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
222 cmd))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
223
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
224 (defun filesets-message (level &rest args)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
225 "Show a message only if LEVEL is greater or equal then `filesets-verbosity'."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
226 (when (<= level (abs filesets-verbosity))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
227 (apply 'message args)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
228
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
229
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
230 ;;; config file
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
231 (defun filesets-save-config ()
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
232 "Save filesets' customizations."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
233 (interactive)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
234 (customize-save-customized))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
235
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
236 (defun filesets-reset-fileset (&optional fileset no-cache)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
237 "Reset the cached values for one or all filesets."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
238 (if fileset
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
239 (setq filesets-submenus (lax-plist-put filesets-submenus fileset nil))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
240 (setq filesets-submenus nil))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
241 (setq filesets-has-changed-flag t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
242 (setq filesets-update-cache-file-flag (or filesets-update-cache-file-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
243 (not no-cache))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
244
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
245 (defun filesets-set-config (fileset var val)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
246 "Set-default wrapper function."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247 (filesets-reset-fileset fileset)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
248 (set-default var val))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
249 ; (customize-set-variable var val))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
250 ; (filesets-build-menu))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
251
61238
e7c23f9a917c (filesets-set-default): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 61138
diff changeset
252 ;; It seems this is a workaround for the XEmacs issue described in the
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
253 ;; doc-string of filesets-menu-ensure-use-cached. Under Emacs this is
61238
e7c23f9a917c (filesets-set-default): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 61138
diff changeset
254 ;; essentially just `set-default'.
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
255 (defun filesets-set-default (sym val &optional init-flag)
61238
e7c23f9a917c (filesets-set-default): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 61138
diff changeset
256 "Set-default wrapper function used in conjunction with `defcustom'.
e7c23f9a917c (filesets-set-default): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 61138
diff changeset
257 If SYM is in the list `filesets-ignore-next-set-default', delete
e7c23f9a917c (filesets-set-default): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 61138
diff changeset
258 it from that list, and return nil. Otherwise, set the value of
e7c23f9a917c (filesets-set-default): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 61138
diff changeset
259 SYM to VAL and return t. If INIT-FLAG is non-nil, set with
e7c23f9a917c (filesets-set-default): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 61138
diff changeset
260 `custom-initialize-set', otherwise with `set-default'."
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
261 (let ((ignore-flag (member sym filesets-ignore-next-set-default)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
262 (if ignore-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
263 (setq filesets-ignore-next-set-default
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
264 (delete sym filesets-ignore-next-set-default))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
265 (if init-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
266 (custom-initialize-set sym val)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
267 (set-default sym val)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
268 (not ignore-flag)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
269
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
270 (defun filesets-set-default! (sym val)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
271 "Call `filestes-set-default' and reset cached data (i.e. rebuild menu)."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
272 (when (filesets-set-default sym val)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
273 (filesets-reset-fileset)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
274
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
275 (defun filesets-set-default+ (sym val)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
276 "Call `filestes-set-default' and reset filesets' standard menu."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
277 (when (filesets-set-default sym val)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
278 (setq filesets-has-changed-flag t)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
279 ; (filesets-reset-fileset nil t)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
280
50782
1b22075b3bb5 (filesets-data): Add another defvar.
Richard M. Stallman <rms@gnu.org>
parents: 50683
diff changeset
281 (defvar filesets-data)
1b22075b3bb5 (filesets-data): Add another defvar.
Richard M. Stallman <rms@gnu.org>
parents: 50683
diff changeset
282
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
283 (defun filesets-data-set-default (sym val)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
284 "Set the default for `filesets-data'."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
285 (if filesets-menu-use-cached-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
286 (setq filesets-menu-use-cached-flag nil)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
287 (when (default-boundp 'filesets-data)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
288 (let ((modified-filesets
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
289 (filesets-filter-list val
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
290 (lambda (x)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
291 (let ((name (car x))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
292 (data (cdr x)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
293 (let ((elt (assoc name filesets-data)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
294 (or (not elt)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
295 (not (equal data (cdr elt))))))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
296 (dolist (x modified-filesets)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
297 (filesets-reset-fileset (car x))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
298 (filesets-set-default sym val))
50782
1b22075b3bb5 (filesets-data): Add another defvar.
Richard M. Stallman <rms@gnu.org>
parents: 50683
diff changeset
299
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
300 ;;; configuration
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
301 (defgroup filesets nil
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
302 "The fileset swapper."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
303 :prefix "filesets-"
57925
cb0a9c84d565 (filesets group): Add :version.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
304 :group 'convenience
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 58039
diff changeset
305 :version "22.1")
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
306
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
307 (defcustom filesets-menu-name "Filesets"
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
308 "Filesets' menu name."
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
309 :set (function filesets-set-default)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
310 :type 'sexp
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
311 :group 'filesets)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
312
61138
37e73f1dcca8 Update copyright.
Glenn Morris <rgm@gnu.org>
parents: 60965
diff changeset
313 (defcustom filesets-menu-path nil
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
314 "The menu under which the filesets menu should be inserted.
61138
37e73f1dcca8 Update copyright.
Glenn Morris <rgm@gnu.org>
parents: 60965
diff changeset
315 See `add-submenu' for documentation."
37e73f1dcca8 Update copyright.
Glenn Morris <rgm@gnu.org>
parents: 60965
diff changeset
316 :set (function filesets-set-default)
37e73f1dcca8 Update copyright.
Glenn Morris <rgm@gnu.org>
parents: 60965
diff changeset
317 :type 'sexp
37e73f1dcca8 Update copyright.
Glenn Morris <rgm@gnu.org>
parents: 60965
diff changeset
318 :group 'filesets)
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
319
61138
37e73f1dcca8 Update copyright.
Glenn Morris <rgm@gnu.org>
parents: 60965
diff changeset
320 (defcustom filesets-menu-before "File"
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
321 "The name of a menu before which this menu should be added.
61138
37e73f1dcca8 Update copyright.
Glenn Morris <rgm@gnu.org>
parents: 60965
diff changeset
322 See `add-submenu' for documentation."
37e73f1dcca8 Update copyright.
Glenn Morris <rgm@gnu.org>
parents: 60965
diff changeset
323 :set (function filesets-set-default)
37e73f1dcca8 Update copyright.
Glenn Morris <rgm@gnu.org>
parents: 60965
diff changeset
324 :type 'sexp
37e73f1dcca8 Update copyright.
Glenn Morris <rgm@gnu.org>
parents: 60965
diff changeset
325 :group 'filesets)
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
326
61138
37e73f1dcca8 Update copyright.
Glenn Morris <rgm@gnu.org>
parents: 60965
diff changeset
327 (defcustom filesets-menu-in-menu nil
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
328 "Use that instead of `current-menubar' as the menu to change.
61138
37e73f1dcca8 Update copyright.
Glenn Morris <rgm@gnu.org>
parents: 60965
diff changeset
329 See `add-submenu' for documentation."
37e73f1dcca8 Update copyright.
Glenn Morris <rgm@gnu.org>
parents: 60965
diff changeset
330 :set (function filesets-set-default)
37e73f1dcca8 Update copyright.
Glenn Morris <rgm@gnu.org>
parents: 60965
diff changeset
331 :type 'sexp
37e73f1dcca8 Update copyright.
Glenn Morris <rgm@gnu.org>
parents: 60965
diff changeset
332 :group 'filesets)
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
333
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
334 (defcustom filesets-menu-shortcuts-flag t
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
335 "Non-nil means to prepend menus with hopefully unique shortcuts."
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
336 :set (function filesets-set-default!)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
337 :type 'boolean
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
338 :group 'filesets)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
339
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
340 (defcustom filesets-menu-shortcuts-marker "%_"
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
341 "String for marking menu shortcuts."
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
342 :set (function filesets-set-default!)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
343 :type 'string
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
344 :group 'filesets)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
345
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
346 ;;(defcustom filesets-menu-cnvfp-flag nil
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
347 ;; "*Non-nil means show \"Convert :pattern to :files\" entry for :pattern menus."
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
348 ;; :set (function filesets-set-default!)
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
349 ;; :type 'boolean
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
350 ;; :group 'filesets)
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
351
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
352 (defcustom filesets-menu-cache-file
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
353 (if (featurep 'xemacs)
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
354 "~/.xemacs/filesets-cache.el"
81344
7bfbc021abe0 (filesets-menu-cache-file): Use user-emacs-directory.
Chong Yidong <cyd@stupidchicken.com>
parents: 75347
diff changeset
355 (concat user-emacs-directory "filesets-cache.el"))
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
356 "File to be used for saving the filesets menu between sessions.
45132
c26266baaba5 (filesets-browse-dir-function): Renamed from ...-fn.
Richard M. Stallman <rms@gnu.org>
parents: 45130
diff changeset
357 Set this to \"\", to disable caching of menus.
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
358 Don't forget to check out `filesets-menu-ensure-use-cached'."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
359 :set (function filesets-set-default)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
360 :type 'file
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
361 :group 'filesets)
45132
c26266baaba5 (filesets-browse-dir-function): Renamed from ...-fn.
Richard M. Stallman <rms@gnu.org>
parents: 45130
diff changeset
362 (put 'filesets-menu-cache-file 'risky-local-variable t)
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
363
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
364 (defcustom filesets-menu-cache-contents
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
365 '(filesets-be-docile-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
366 filesets-submenus
49475
796b9b8e53c3 (filesets-file-open): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 48862
diff changeset
367 filesets-menu-cache
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
368 filesets-ingroup-cache)
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
369 "Stuff we want to save in `filesets-menu-cache-file'.
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
370
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
371 Possible uses: don't save configuration data in the main startup files
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
372 but in filesets's own cache. In this case add `filesets-data' to this
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
373 list.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
374
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
375 There is a second reason for putting `filesets-data' on this list. If
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
376 you frequently add and remove buffers on the fly to :files filesets, you
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
377 don't need to save your customizations if `filesets-data' is being
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
378 mirrored in the cache file. In this case the version in the cache file
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
379 is the current one, and the version in your startup file will be
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
380 silently updated later on.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
381
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
382 If you want caching to work properly, at least `filesets-submenus',
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
383 `filesets-menu-cache', and `filesets-ingroup-cache' should be in this
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
384 list.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
385
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
386 Don't forget to check out `filesets-menu-ensure-use-cached'."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
387 :set (function filesets-set-default)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
388 :type '(repeat
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
389 (choice :tag "Variable"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
390 (const :tag "filesets-submenus"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
391 :value filesets-submenus)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
392 (const :tag "filesets-menu-cache"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
393 :value filesets-menu-cache)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
394 (const :tag "filesets-ingroup-cache"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
395 :value filesets-ingroup-cache)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
396 (const :tag "filesets-data"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
397 :value filesets-data)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
398 (const :tag "filesets-external-viewers"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
399 :value filesets-external-viewers)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
400 (const :tag "filesets-ingroup-patterns"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
401 :value filesets-ingroup-patterns)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
402 (const :tag "filesets-be-docile-flag"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
403 :value filesets-be-docile-flag)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
404 (sexp :tag "Other" :value nil)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
405 :group 'filesets)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
406
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
407 (defcustom filesets-cache-fill-content-hooks nil
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
408 "Hooks to run when writing the contents of filesets' cache file.
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
409
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410 The hook is called with the cache file as current buffer and the cursor
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
411 at the last position. I.e. each hook has to make sure that the cursor is
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
412 at the last position.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
413
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
414 Possible uses: If you don't want to save `filesets-data' in your normal
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
415 configuration file, you can add a something like this
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
416
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
417 \(lambda ()
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
418 \(insert (format \"(setq-default filesets-data '%S)\"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
419 filesets-data))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
420 \(newline 2))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
421
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
422 to this hook.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
423
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
424 Don't forget to check out `filesets-menu-ensure-use-cached'."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
425 :set (function filesets-set-default)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
426 :type 'hook
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
427 :group 'filesets)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
428
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
429 (defcustom filesets-cache-hostname-flag nil
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
430 "Non-nil means cache the hostname.
45132
c26266baaba5 (filesets-browse-dir-function): Renamed from ...-fn.
Richard M. Stallman <rms@gnu.org>
parents: 45130
diff changeset
431 If the current name differs from the cached one,
c26266baaba5 (filesets-browse-dir-function): Renamed from ...-fn.
Richard M. Stallman <rms@gnu.org>
parents: 45130
diff changeset
432 rebuild the menu and create a new cache file."
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
433 :set (function filesets-set-default)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
434 :type 'boolean
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
435 :group 'filesets)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
436
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
437 (defcustom filesets-cache-save-often-flag nil
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
438 "Non-nil means save buffer on every change of the filesets menu.
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
439 If this variable is set to nil and if Emacs crashes, the cache and
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
440 filesets-data could get out of sync. Set this to t if this happens from
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
441 time to time or if the fileset cache causes troubles."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
442 :set (function filesets-set-default)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
443 :type 'boolean
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
444 :group 'filesets)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
445
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
446 (defcustom filesets-max-submenu-length 25
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
447 "Maximum length of submenus.
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
448 Set this value to 0 to turn menu splitting off. BTW, parts of submenus
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
449 will not be rewrapped if their length exceeds this value."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
450 :set (function filesets-set-default)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
451 :type 'integer
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
452 :group 'filesets)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
453
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
454 (defcustom filesets-max-entry-length 50
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
455 "Truncate names of splitted submenus to this length."
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
456 :set (function filesets-set-default)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
457 :type 'integer
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
458 :group 'filesets)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
459
45132
c26266baaba5 (filesets-browse-dir-function): Renamed from ...-fn.
Richard M. Stallman <rms@gnu.org>
parents: 45130
diff changeset
460 (defcustom filesets-browse-dir-function 'dired
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
461 "A function or command used for browsing directories.
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
462 When using an external command, \"%s\" will be replaced with the
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
463 directory's name.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
464
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
465 Note: You have to manually rebuild the menu if you change this value."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
466 :set (function filesets-set-default)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
467 :type '(choice :tag "Function:"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
468 (const :tag "dired"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
469 :value dired)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
470 (list :tag "Command"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
471 :value ("" "%s")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
472 (string :tag "Name")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
473 (string :tag "Arguments"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
474 (function :tag "Function"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
475 :value nil))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
476 :group 'filesets)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
477
45132
c26266baaba5 (filesets-browse-dir-function): Renamed from ...-fn.
Richard M. Stallman <rms@gnu.org>
parents: 45130
diff changeset
478 (defcustom filesets-open-file-function 'filesets-find-or-display-file
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
479 "The function used for opening files.
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
480
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
481 `filesets-find-or-display-file' ... Filesets' default function for
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
482 visiting files. This function checks if an external viewer is defined
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
483 for a specific file type. Either this viewer, if defined, or
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
484 `find-file' will be used to visit a file.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
485
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
486 `filesets-find-file' ... An alternative function that always uses
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
487 `find-file'. If `filesets-be-docile-flag' is true, a file, which isn't
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
488 readable, will not be opened.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
489
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
490 Caveat: Changes will take effect only after rebuilding the menu."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
491 :set (function filesets-set-default)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
492 :type '(choice :tag "Function:"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
493 (const :tag "filesets-find-or-display-file"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494 :value filesets-find-or-display-file)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
495 (const :tag "filesets-find-file"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
496 :value filesets-find-file)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
497 (function :tag "Function"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
498 :value nil))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
499 :group 'filesets)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
500
45132
c26266baaba5 (filesets-browse-dir-function): Renamed from ...-fn.
Richard M. Stallman <rms@gnu.org>
parents: 45130
diff changeset
501 (defcustom filesets-save-buffer-function 'save-buffer
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
502 "The function used to save a buffer.
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
503 Caveat: Changes will take effect after rebuilding the menu."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
504 :set (function filesets-set-default)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505 :type '(choice :tag "Function:"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
506 (const :tag "save-buffer"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
507 :value save-buffer)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
508 (function :tag "Function"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
509 :value nil))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
510 :group 'filesets)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
511
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
512 (defcustom filesets-find-file-delay
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
513 (if (and (featurep 'xemacs) gutter-buffers-tab-visible-p)
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514 0.5
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
515 0)
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
516 "Delay before calling `find-file'.
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
517 This is for calls via `filesets-find-or-display-file'
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
518 or `filesets-find-file'.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
519
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
520 Set this to 0, if you don't use XEmacs' buffer tabs."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
521 :set (function filesets-set-default)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
522 :type 'number
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
523 :group 'filesets)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
524
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
525 (defcustom filesets-be-docile-flag nil
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
526 "Non-nil means don't complain if a file or a directory doesn't exist.
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
527 This is useful if you want to use the same startup files in different
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
528 computer environments."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
529 :set (function filesets-set-default)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
530 :type 'boolean
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
531 :group 'filesets)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
532
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
533 (defcustom filesets-sort-menu-flag t
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
534 "Non-nil means sort the filesets menu alphabetically."
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
535 :set (function filesets-set-default)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
536 :type 'boolean
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
537 :group 'filesets)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
538
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
539 (defcustom filesets-sort-case-sensitive-flag t
85317
e55429fe2239 (filesets-alist-get): Use `let' rather than `let*'.
Juanma Barranquero <lekktu@gmail.com>
parents: 84660
diff changeset
540 "Non-nil means sorting of the filesets menu is case sensitive."
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
541 :set (function filesets-set-default)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
542 :type 'boolean
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
543 :group 'filesets)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
544
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
545 (defcustom filesets-tree-max-level 3
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
546 "Maximum scan depth for directory trees.
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
547 A :tree fileset is defined by a base directory the contents of which
45132
c26266baaba5 (filesets-browse-dir-function): Renamed from ...-fn.
Richard M. Stallman <rms@gnu.org>
parents: 45130
diff changeset
548 will be recursively added to the menu. `filesets-tree-max-level' tells up
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
549 to which level the directory structure should be scanned/listed,
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
550 i.e. how deep the menu should be. Try something like
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
551
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
552 \(\"HOME -- only one level\"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
553 \(:tree \"~\" \"^[^.].*[^~]$\")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
554 \(:tree-max-level 1)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
555 \(:filter-dirs-flag t))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
556 \(\"HOME -- up to 3 levels\"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
557 \(:tree \"~\" \"^[^.].*[^~]$\")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
558 \(:tree-max-level 3)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
559 \(:filter-dirs-flag t))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
560
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
561 and it should become clear what this option is about. In any case,
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
562 including directory trees to the menu can take a lot of memory."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
563 :set (function filesets-set-default)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
564 :type 'integer
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
565 :group 'filesets)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
566
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
567 (defcustom filesets-commands
96958
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
568 `(("Isearch"
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
569 multi-isearch-files
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
570 (filesets-cmd-isearch-getargs))
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
571 ("Isearch (regexp)"
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
572 multi-isearch-files-regexp
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
573 (filesets-cmd-isearch-getargs))
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
574 ("Query Replace"
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
575 perform-replace
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
576 (filesets-cmd-query-replace-getargs))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
577 ("Query Replace (regexp)"
96958
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
578 perform-replace
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
579 (filesets-cmd-query-replace-regexp-getargs))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
580 ("Grep <<selection>>"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
581 "grep"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
582 ("-n " filesets-get-quoted-selection " " "<<file-name>>"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
583 ("Run Shell Command"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
584 filesets-cmd-shell-command
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
585 (filesets-cmd-shell-command-getargs)))
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
586 "Commands to run on filesets.
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
587 An association list of names, functions, and an argument list (or a
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
588 function that returns one) to be run on a filesets' files.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
589
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
590 The argument <file-name> or <<file-name>> (quoted) will be replaced with
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
591 the filename."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
592 :set (function filesets-set-default+)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
593 :type '(repeat :tag "Commands"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
594 (list :tag "Definition" :value ("")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
595 (string "Name")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
596 (choice :tag "Command"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
597 (string :tag "String")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
598 (function :tag "Function"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
599 (repeat :tag "Argument List"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
600 (choice :tag "Arguments"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
601 (sexp :tag "Sexp"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
602 :value nil)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
603 (string :tag "File Name"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
604 :value "<file-name>")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
605 (string :tag "Quoted File Name"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
606 :value "<<file-name>>")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
607 (function :tag "Function"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
608 :value nil)))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
609 :group 'filesets)
45132
c26266baaba5 (filesets-browse-dir-function): Renamed from ...-fn.
Richard M. Stallman <rms@gnu.org>
parents: 45130
diff changeset
610 (put 'filesets-commands 'risky-local-variable t)
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
611
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
612 (defcustom filesets-external-viewers
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
613 (let
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
614 ;; ((ps-cmd (or (and (boundp 'my-ps-viewer) my-ps-viewer)
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
615 ;; (filesets-select-command "ggv gv")))
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
616 ;; (pdf-cmd (or (and (boundp 'my-ps-viewer) my-pdf-viewer)
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
617 ;; (filesets-select-command "xpdf acroread")))
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
618 ;; (dvi-cmd (or (and (boundp 'my-ps-viewer) my-dvi-viewer)
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
619 ;; (filesets-select-command "xdvi tkdvi")))
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
620 ;; (doc-cmd (or (and (boundp 'my-ps-viewer) my-doc-viewer)
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
621 ;; (filesets-select-command "antiword")))
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
622 ;; (pic-cmd (or (and (boundp 'my-ps-viewer) my-pic-viewer)
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
623 ;; (filesets-select-command "gqview ee display"))))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
624 ((ps-cmd "ggv")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
625 (pdf-cmd "xpdf")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
626 (dvi-cmd "xdvi")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
627 (doc-cmd "antiword")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
628 (pic-cmd "gqview"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
629 `(("^.+\\..?html?$" browse-url
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
630 ((:ignore-on-open-all t)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
631 ("^.+\\.pdf$" ,pdf-cmd
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
632 ((:ignore-on-open-all t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
633 (:ignore-on-read-text t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
634 (:constraint-flag ,pdf-cmd)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
635 ("^.+\\.e?ps\\(.gz\\)?$" ,ps-cmd
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
636 ((:ignore-on-open-all t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
637 (:ignore-on-read-text t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
638 (:constraint-flag ,ps-cmd)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
639 ("^.+\\.dvi$" ,dvi-cmd
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
640 ((:ignore-on-open-all t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
641 (:ignore-on-read-text t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
642 (:constraint-flag ,dvi-cmd)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
643 ("^.+\\.doc$" ,doc-cmd
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
644 ((:capture-output t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
645 (:ignore-on-read-text t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
646 (:constraint-flag ,doc-cmd)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
647 ("^.+\\.\\(tiff\\|xpm\\|gif\\|pgn\\)$" ,pic-cmd
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
648 ((:ignore-on-open-all t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
649 (:ignore-on-read-text t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
650 (:constraint-flag ,pic-cmd)))))
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
651 "Association list of file patterns and external viewers for use with
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
652 `filesets-find-or-display-file'.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
653
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
654 Has the form ((FILE-PATTERN VIEWER PROPERTIES) ...), VIEWER being either a
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
655 function or a command name as string.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
656
63251
9a8c8a29b2b7 (filesets-external-viewers): Fix spellings in docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents: 62888
diff changeset
657 Properties is an association list determining filesets' behavior in
9a8c8a29b2b7 (filesets-external-viewers): Fix spellings in docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents: 62888
diff changeset
658 several conditions. Choose one from this list:
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
659
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
660 :ignore-on-open-all ... Don't open files of this type automatically --
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
661 i.e. on open-all-files-events or when running commands
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
662
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
663 :capture-output ... capture an external viewer output
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
664
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
665 :constraintp FUNCTION ... use this viewer only if FUNCTION returns non-nil
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
666
45164
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
667 :constraint-flag SEXP ... use this viewer only if SEXP evaluates to non-nil
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
668
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
669 :open-hook HOOK ... run hooks after spawning the viewer -- mainly useful
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
670 in conjunction with :capture-output
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
671
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
672 :args (FORMAT-STRING or SYMBOL or FUNCTION) ... a list of arguments
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
673 \(defaults to (list \"%S\")) when using shell commands
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
674
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
675 Avoid modifying this variable and achieve minor speed-ups by setting the
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
676 variables my-ps-viewer, my-pdf-viewer, my-dvi-viewer, my-pic-viewer.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
677
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
678 In order to view pdf or rtf files in an Emacs buffer, you could use these:
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
679
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
680
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
681 \(\"^.+\\\\.pdf\\\\'\" \"pdftotext\"
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
682 \((:capture-output t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
683 \(:args (\"%S - | fmt -w \" window-width))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
684 \(:ignore-on-read-text t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
685 \(:constraintp (lambda ()
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
686 \(and \(filesets-which-command-p \"pdftotext\")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
687 \(filesets-which-command-p \"fmt\"))))))
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
688 \(\"^.+\\\\.rtf\\\\'\" \"rtf2htm\"
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
689 \((:capture-output t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
690 \(:args (\"%S 2> /dev/null | w3m -dump -T text/html\"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
691 \(:ignore-on-read-text t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
692 \(:constraintp (lambda ()
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
693 \(and (filesets-which-command-p \"rtf2htm\")
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
694 \(filesets-which-command-p \"w3m\"))))))"
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
695 :set (function filesets-set-default)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
696 :type '(repeat :tag "Viewer"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
697 (list :tag "Definition"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
698 :value ("^.+\\.suffix$" "")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
699 (regexp :tag "Pattern")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
700 (choice :tag "Viewer"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
701 (symbol :tag "Function" :value nil)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
702 (string :tag "Program" :value ""))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
703 (repeat :tag "Properties"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
704 (choice
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
705 (list :tag ":constraintp"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
706 :value (:constraintp)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
707 (const :format ""
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
708 :value :constraintp)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
709 (function :tag "Function"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
710 (list :tag ":constraint-flag"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
711 :value (:constraint-flag)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
712 (const :format ""
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
713 :value :constraint-flag)
45164
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
714 (sexp :tag "Symbol"))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
715 (list :tag ":ignore-on-open-all"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
716 :value (:ignore-on-open-all t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
717 (const :format ""
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
718 :value :ignore-on-open-all)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
719 (boolean :tag "Boolean"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
720 (list :tag ":ignore-on-read-text"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
721 :value (:ignore-on-read-text t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
722 (const :format ""
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
723 :value :ignore-on-read-text)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
724 (boolean :tag "Boolean"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
725 (list :tag ":args"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
726 :value (:args)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
727 (const :format ""
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
728 :value :args)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
729 (repeat :tag "List"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
730 (choice :tag "Arguments"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
731 (string :tag "String"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
732 :value "")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
733 (symbol :tag "Symbol"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
734 :value nil)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
735 (function :tag "Function"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
736 :value nil))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
737 (list :tag ":open-hook"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
738 :value (:open-hook)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
739 (const :format ""
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
740 :value :open-hook)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
741 (hook :tag "Hook"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
742 ; (list :tag ":close-hook"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
743 ; :value (:close-hook)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
744 ; (const :format ""
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
745 ; :value :close-hook)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
746 ; (hook :tag "Hook"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
747 (list :tag ":capture-output"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
748 :value (:capture-output t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
749 (const :format ""
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
750 :value :capture-output)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
751 (boolean :tag "Boolean"))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
752 :group 'filesets)
45132
c26266baaba5 (filesets-browse-dir-function): Renamed from ...-fn.
Richard M. Stallman <rms@gnu.org>
parents: 45130
diff changeset
753 (put 'filesets-external-viewers 'risky-local-variable t)
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
754
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
755 (defcustom filesets-ingroup-patterns
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
756 '(("^.+\\.tex$" t
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
757 (((:name "Package")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
758 (:pattern "\\\\usepackage\\W*\\(\\[[^\]]*\\]\\W*\\)?{\\W*\\(.+\\)\\W*}")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
759 (:match-number 2)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
760 (:stub-flag t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
761 (:get-file-name (lambda (master file)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
762 (filesets-which-file master
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
763 (concat file ".sty")
49475
796b9b8e53c3 (filesets-file-open): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 48862
diff changeset
764 (filesets-convert-path-list
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
765 (or (getenv "MY_TEXINPUTS")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
766 (getenv "TEXINPUTS")))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
767 ((:name "Include")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
768 (:pattern "\\\\include\\W*{\\W*\\(.+\\)\\W*}")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
769 (:get-file-name (lambda (master file)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
770 (filesets-which-file master
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
771 (concat file ".tex")
49475
796b9b8e53c3 (filesets-file-open): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 48862
diff changeset
772 (filesets-convert-path-list
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
773 (or (getenv "MY_TEXINPUTS")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
774 (getenv "TEXINPUTS"))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
775 (:scan-depth 5))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
776 ((:name "Input")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
777 (:pattern "\\\\input\\W*{\\W*\\(.+\\)\\W*}")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
778 (:stubp (lambda (a b) (not (filesets-files-in-same-directory-p a b))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
779 (:get-file-name (lambda (master file)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
780 (filesets-which-file master
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
781 (concat file ".tex")
49475
796b9b8e53c3 (filesets-file-open): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 48862
diff changeset
782 (filesets-convert-path-list
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
783 (or (getenv "MY_TEXINPUTS")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
784 (getenv "TEXINPUTS"))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
785 (:scan-depth 5))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
786 ((:name "Bibliography")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
787 (:pattern "\\\\bibliography\\W*{\\W*\\(.+\\)\\W*}")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
788 (:get-file-name (lambda (master file)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
789 (filesets-which-file master
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
790 (concat file ".bib")
49475
796b9b8e53c3 (filesets-file-open): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 48862
diff changeset
791 (filesets-convert-path-list
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
792 (or (getenv "MY_BIBINPUTS")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
793 (getenv "BIBINPUTS")))))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
794 ("^.+\\.el$" t
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
795 (((:name "Require")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
796 (:pattern "(require\\W+'\\(.+\\))")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
797 (:stubp (lambda (a b) (not (filesets-files-in-same-directory-p a b))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
798 (:get-file-name (lambda (master file)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
799 (filesets-which-file master
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
800 (concat file ".el")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
801 load-path))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
802 ((:name "Load")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
803 (:pattern "(load\\(-library\\)?\\W+\"\\(.+\\)\")")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
804 (:match-number 2)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
805 (:get-file-name (lambda (master file)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
806 (filesets-which-file master file load-path))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
807 ("^\\([A-ZÄÖÜ][a-zäöüß]+\\([A-ZÄÖÜ][a-zäöüß]+\\)+\\)$" t
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
808 (((:pattern "\\<\\([A-ZÄÖÜ][a-zäöüß]+\\([A-ZÄÖÜ][a-zäöüß]+\\)+\\)\\>")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
809 (:scan-depth 5)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
810 (:stubp (lambda (a b) (not (filesets-files-in-same-directory-p a b))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
811 (:case-sensitive t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
812 (:get-file-name (lambda (master file)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
813 (filesets-which-file
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
814 master
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
815 file
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
816 (if (boundp 'emacs-wiki-directories)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
817 emacs-wiki-directories
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
818 nil))))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
819
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
820 "Inclusion group definitions.
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
821
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
822 Define how to find included file according to a file's mode (being
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
823 defined by a file pattern).
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
824
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
825 A valid entry has the form (FILE-PATTERN REMOVE-DUPLICATES-FLAG
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
826 CMD-DEF1 ...), CMD-DEF1 being a plist containing the fields :pattern
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
827 \(mandatory), :name, :get-file-name, :match-number, :scan-depth,
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
828 :preprocess, :case-sensitive.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
829
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
830 File Pattern ... A regexp matching the file's name for which the
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
831 following rules should be applied.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
832
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
833 Remove Duplicates ... If t, only the first occurrence of an included
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
834 file is retained. (See below for a full explanation.)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
835
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
836 :name STRING ... This pattern's name.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
837
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
838 :pattern REGEXP ... A regexp matching the command. This regexp has to
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
839 include a group that holds the name of the included file.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
840
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
841 :get-file-name FUNCTION (default: `filesets-which-file') ... A function
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
842 that takes two arguments (the path of the master file and the name
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
843 of the included file) and returns a valid path or nil -- if the
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
844 subfile can't be found.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
845
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
846 :match-number INTEGER (default: 1) ... The number of the match/group
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
847 in the pattern holding the subfile's name. 0 refers the whole
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
848 match, 1 to the first group.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
849
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
850 :stubp FUNCTION ... if (FUNCTION MASTER INCLUDED-FILE) returns non-nil,
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
851 INCLUDED-FILE is a stub -- see below.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
852
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
853 :stub-flag ... files of this type are stubs -- see below.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
854
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
855 :scan-depth INTEGER (default: 0) ... Whether included files should be
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
856 rescanned. Set this to 0 to disable re-scanning of included file.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
857
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
858 :preprocess FUNCTION ... A function modifying a buffer holding the
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
859 master file so that pattern matching becomes easier. This is usually
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
860 used to narrow a buffer to the relevant region. This function could also
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
861 be destructive and simply delete non-relevant text.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
862
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
863 :case-sensitive BOOLEAN (default: nil) ... Whether a pattern is
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
864 case-sensitive or not.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
865
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
866
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
867 Stubs:
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
868
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
869 First, a stub is a file that shows up in the menu but will not be
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
870 included in an ingroup's file listing -- i.e. filesets will never
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
871 operate on this file automatically. Secondly, in opposition to normal
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
872 files stubs are not scanned for new inclusion groups. This is useful if
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
873 you want to have quick access to library headers.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
874
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
875 In the menu, an asterisk is appended to the stub's name.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
876
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
877
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
878 Remove Duplicates:
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
879
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
880 E.g. File A and file B refer to file X; X refers to A. If
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
881 you choose not to remove duplicates the tree would look like:
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
882
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
883 M + A - X - A ...
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
884 B - X - A ...
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
885
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
886 As you can see, there is some chance that you run in circles.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
887 Nevertheless, up to some degree this could still be what you want.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
888
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
889 With duplicates removed, it would be:
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
890
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
891 M + A - X
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
892 B"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
893 :set (function filesets-set-default)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
894 :type '(repeat
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
895 :tag "Include"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
896 (list
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
897 :tag "Definition" :value ("^.+\\.suffix$" t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
898 (regexp :tag "File Pattern" :value "^.+\\.suffix$")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
899 (boolean :tag "Remove Duplicates" :value t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
900 (repeat :tag "Commands"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
901 (repeat :tag "Command"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
902 (choice
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
903 :tag "Definition"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
904 (list :tag ":name"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
905 :value (:name "")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
906 (const :format "" :value :name)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
907 (string :tag "String"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
908 (list :tag ":pattern"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
909 :value (:pattern "\\<CMD\\W*\\(.+\\)\\>")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
910 (const :format "" :value :pattern)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
911 (regexp :tag "RegExp"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
912 (list :tag ":get-file-name"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
913 :value (:get-file-name)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
914 (const :format "" :value :get-file-name)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
915 (function :tag "Function"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
916 (list :tag ":match-number"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
917 :value (:match-number 1)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
918 (const :format "" :value :match-number)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
919 (integer :tag "Integer"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
920 (list :tag ":stub-flag"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
921 :value (:stub-flag t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
922 (const :format "" :value :stub-flag)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
923 (boolean :tag "Boolean"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
924 (list :tag ":stubp"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
925 :value (:stubp)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
926 (const :format "" :value :stubp)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
927 (function :tag "Function"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
928 (list :tag ":scan-depth"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
929 :value (:scan-depth 0)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
930 (const :format "" :value :scan-depth)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
931 (integer :tag "Integer"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
932 (list :tag ":case-sensitive"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
933 :value (:case-sensitive)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
934 (const :format "" :value :case-sensitive)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
935 (boolean :tag "Boolean"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
936 (list :tag ":preprocess"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
937 :value (:preprocess)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
938 (const :format "" :value :preprocess)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
939 (function :tag "Function")))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
940 :group 'filesets)
45132
c26266baaba5 (filesets-browse-dir-function): Renamed from ...-fn.
Richard M. Stallman <rms@gnu.org>
parents: 45130
diff changeset
941 (put 'filesets-ingroup-patterns 'risky-local-variable t)
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
942
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
943 (defcustom filesets-data nil
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
944 "Fileset definitions.
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
945
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
946 A fileset is either a list of files, a file pattern, a base directory
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
947 and a search pattern (for files), or a base file. Changes to this
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
948 variable will take effect after rebuilding the menu.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
949
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
950 Caveat: Fileset names have to be unique.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
951
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
952 Example definition:
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
953 '\(\(\"My Wiki\"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
954 \(:ingroup \"~/Etc/My-Wiki/WikiContents\"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
955 \(\"My Homepage\"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
956 \(:pattern \"~/public_html/\" \"^.+\\\\.html$\")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
957 \(:open filesets-find-file))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
958 \(\"User Configuration\"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
959 \(:files \"~/.xinitrc\"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
960 \"~/.bashrc\"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
961 \"~/.bash_profile\"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
962 \(\"HOME\"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
963 \(:tree \"~\" \"^[^.].*[^~]$\")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
964 \(:filter-dirs-flag t)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
965
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
966 `filesets-data' is a list of (NAME-AS-STRING . DEFINITION), DEFINITION
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
967 being an association list with the fields:
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
968
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
969 :files FILE-1 .. FILE-N ... a list of files belonging to a fileset
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
970
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
971 :ingroup FILE-NAME ... an inclusion group's base file.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
972
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
973 :tree ROOT-DIR PATTERN ... a base directory and a file pattern
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
974
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
975 :pattern DIR PATTERN ... PATTERN is a regular expression comprising path
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
976 and file pattern -- e.g. 'PATH/^REGEXP$'. Note the `^' at the beginning
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
977 of the file name pattern.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
978
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
979 :filter-dirs-flag BOOLEAN ... is only used in conjunction with :tree.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
980
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
981 :tree-max-level INTEGER ... recurse into directories this many levels
44959
f23f11648559 (filesets-data): Doc fix.
Pavel Janík <Pavel@Janik.cz>
parents: 44934
diff changeset
982 \(see `filesets-tree-max-level' for a full explanation)
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
983
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
984 :dormant-flag BOOLEAN ... non-nil means don't show this item in the
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
985 menu; dormant filesets can still be manipulated via commands available
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
986 from the minibuffer -- e.g. `filesets-open', `filesets-close', or
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
987 `filesets-run-cmd'
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
988
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
989 :dormant-p FUNCTION ... a function returning :dormant-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
990
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
991 :open FUNCTION ... the function used to open file belonging to this
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
992 fileset. The function takes a file name as argument
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
993
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
994 :save FUNCTION ... the function used to save file belonging to this
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
995 fileset; it takes no arguments, but works on the current buffer.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
996
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
997 Either :files, :pattern, :tree, or :ingroup must be supplied. :files
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
998 overrules :tree, :tree overrules :pattern, :pattern overrules :ingroup,
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
999 i.e. these tags are mutually exclusive. The fields :open and :save are
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1000 optional.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1001
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1002 In conjunction with the :tree tag, :save is void. :open refers to the
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1003 function used for opening files in a directory, not for opening the
45132
c26266baaba5 (filesets-browse-dir-function): Renamed from ...-fn.
Richard M. Stallman <rms@gnu.org>
parents: 45130
diff changeset
1004 directory. For browsing directories, `filesets-browse-dir-function' is used.
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1005
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1006 Before using :ingroup, make sure that the file type is already
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1007 defined in `filesets-ingroup-patterns'."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1008 :group 'filesets
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1009 :set (function filesets-data-set-default)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1010 :type '(repeat
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1011 (cons :tag "Fileset"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1012 (string :tag "Name" :value "")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1013 (repeat :tag "Data"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1014 (choice
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1015 :tag "Type" :value nil
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1016 (list :tag "Pattern"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1017 :value (:pattern "~/" "^.+\\.suffix$")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1018 (const :format "" :value :pattern)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1019 (directory :tag "Dir")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1020 (regexp :tag "Pattern"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1021 (cons :tag "Files"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1022 :value (:files)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1023 (const :format "" :value :files)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1024 (repeat :tag "Files" file))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1025 (list :tag "Single File"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1026 :value (:file "~/")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1027 (const :format "" :value :file)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1028 (file :tag "File"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1029 (list :tag "Inclusion group"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1030 :value (:ingroup "~/")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1031 (const :format "" :value :ingroup)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1032 (file :tag "File" :value "~/"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1033 (list :tag "Directory Tree"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1034 :value (:tree "~/" "^.+\\.suffix$")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1035 (const :format "" :value :tree)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1036 (directory :tag "Dir")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1037 (regexp :tag "Pattern"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1038 (list :tag "Filter directories"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1039 :value (:filter-dirs-flag)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1040 (const :format "" :value :filter-dirs-flag)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1041 (boolean :tag "Boolean" :value nil))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1042 (list :tag "Scanning depth"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1043 :value (:tree-max-level 3)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1044 (const :format "" :value :tree-max-level)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1045 (integer :tag "Integer"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1046 (list :tag "Verbosity"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1047 :value (:verbosity 1)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1048 (const :format "" :value :verbosity)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1049 (integer :tag "Integer"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1050 (list :tag "Conceal fileset (Flag)"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1051 :value (:dormant-flag)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1052 (const :format "" :value :dormant-flag)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1053 (boolean :tag "Boolean"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1054 (list :tag "Conceal fileset (Function)"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1055 :value (:dormant-p)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1056 (const :format "" :value :dormant-p)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1057 (function :tag "Function"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1058 (list :tag "Save function"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1059 :value (:save)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1060 (const :format "" :value :save)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1061 (function :tag "Function"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1062 (list :tag "Open function"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1063 :value (:open)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1064 (const :format "" :value :open)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1065 (function :tag "Function")))))))
45132
c26266baaba5 (filesets-browse-dir-function): Renamed from ...-fn.
Richard M. Stallman <rms@gnu.org>
parents: 45130
diff changeset
1066 (put 'filesets-data 'risky-local-variable t)
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1067
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1068
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1069 (defcustom filesets-query-user-limit 15
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1070 "Query the user before opening a fileset with that many files."
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1071 :set (function filesets-set-default)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1072 :type 'integer
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1073 :group 'filesets)
50782
1b22075b3bb5 (filesets-data): Add another defvar.
Richard M. Stallman <rms@gnu.org>
parents: 50683
diff changeset
1074
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1075 ;;; Emacs compatibility
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1076 (eval-and-compile
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1077 (if (featurep 'xemacs)
61138
37e73f1dcca8 Update copyright.
Glenn Morris <rgm@gnu.org>
parents: 60965
diff changeset
1078 (fset 'filesets-error 'error)
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1079
45012
161015ebadc0 (filesets-running-xemacs): Make defvar unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 44973
diff changeset
1080 (require 'easymenu)
49475
796b9b8e53c3 (filesets-file-open): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 48862
diff changeset
1081
45012
161015ebadc0 (filesets-running-xemacs): Make defvar unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 44973
diff changeset
1082 (defun filesets-error (class &rest args)
161015ebadc0 (filesets-running-xemacs): Make defvar unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 44973
diff changeset
1083 "`error' wrapper."
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1084 (error "%s" (mapconcat 'identity args " ")))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1085
45012
161015ebadc0 (filesets-running-xemacs): Make defvar unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 44973
diff changeset
1086 ))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1087
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1088 (defun filesets-filter-dir-names (lst &optional negative)
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1089 "Remove non-directory names from a list of strings.
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1090 If NEGATIVE is non-nil, remove all directory names."
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1091 (filesets-filter-list lst
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1092 (lambda (x)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1093 (and (not (string-match "^\\.+/$" x))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1094 (if negative
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1095 (not (string-match "[:/\\]$" x))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1096 (string-match "[:/\\]$" x))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1097
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1098 (defun filesets-conditional-sort (lst &optional access-fn)
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1099 "Return a sorted copy of LST, LST being a list of strings.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1100 If `filesets-sort-menu-flag' is nil, return LST itself.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1101
85317
e55429fe2239 (filesets-alist-get): Use `let' rather than `let*'.
Juanma Barranquero <lekktu@gmail.com>
parents: 84660
diff changeset
1102 ACCESS-FN ... function to get the string value of LST's elements."
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1103 (if filesets-sort-menu-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1104 (let* ((fni (or access-fn
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1105 (function identity)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1106 (fn (if filesets-sort-case-sensitive-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1107 (lambda (a b)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1108 (string< (funcall fni a)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1109 (funcall fni b)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1110 (lambda (a b)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1111 (string< (upcase (funcall fni a))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1112 (upcase (funcall fni b)))))))
45186
aa4f6ae8b6a9 (filesets-conditional-sort): Use copy-sequence, not copy-list.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 45164
diff changeset
1113 (sort (copy-sequence lst) fn))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1114 lst))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1115
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1116 (defun filesets-directory-files (dir &optional
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1117 pattern what full-flag match-dirs-flag)
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1118 "Get WHAT (:files or :dirs) in DIR.
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1119 If PATTERN is provided return only those entries matching this
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1120 regular expression.
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1121 If MATCH-DIRS-FLAG is non-nil, also match directory entries.
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1122 Return full path if FULL-FLAG is non-nil."
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1123 (filesets-message 2 "Filesets: scanning %S" dir)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1124 (cond
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1125 ((file-exists-p dir)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1126 (let ((files nil)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1127 (dirs nil))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1128 (dolist (this (file-name-all-completions "" dir))
49475
796b9b8e53c3 (filesets-file-open): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 48862
diff changeset
1129 (cond
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1130 ((string-match "^\\.+/$" this)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1131 nil)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1132 ((string-match "[:/\\]$" this)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1133 (when (or (not match-dirs-flag)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1134 (not pattern)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1135 (string-match pattern this))
49475
796b9b8e53c3 (filesets-file-open): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 48862
diff changeset
1136 (filesets-message 5 "Filesets: matched dir %S with pattern %S"
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1137 this pattern)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1138 (setq dirs (cons this dirs))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1139 (t
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1140 (when (or (not pattern)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1141 (string-match pattern this))
49475
796b9b8e53c3 (filesets-file-open): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 48862
diff changeset
1142 (filesets-message 5 "Filesets: matched file %S with pattern %S"
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1143 this pattern)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1144 (setq files (cons (if full-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1145 (concat (file-name-as-directory dir) this)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1146 this)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1147 files))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1148 (cond
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1149 ((equal what ':dirs)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1150 (filesets-conditional-sort dirs))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1151 ((equal what ':files)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1152 (filesets-conditional-sort files))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1153 (t
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1154 (append (filesets-conditional-sort files)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1155 (filesets-conditional-sort dirs))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1156 (filesets-be-docile-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1157 (filesets-message 1 "Filesets: %S doesn't exist" dir)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1158 nil)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1159 (t
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1160 (filesets-error 'error "Filesets: " dir " does not exist"))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1161
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1162 (defun filesets-quote (txt)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1163 "Return TXT in quotes."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1164 (concat "\"" txt "\""))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1165
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1166 (defun filesets-get-selection ()
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1167 "Get the text between mark and point -- i.e. the selection or region."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1168 (let ((m (mark))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1169 (p (point)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1170 (if m
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1171 (buffer-substring (min m p) (max m p))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1172 (filesets-error 'error "No selection."))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1173
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1174 (defun filesets-get-quoted-selection ()
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1175 "Return the currently selected text in quotes."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1176 (filesets-quote (filesets-get-selection)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1177
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1178 (defun filesets-get-shortcut (n)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1179 "Create menu shortcuts based on number N."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1180 (let ((n (mod (- n 1) 51)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1181 (cond
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1182 ((not filesets-menu-shortcuts-flag)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1183 "")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1184 ((<= n 9)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1185 (concat (number-to-string n) " "))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1186 ((<= n 35)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1187 (format "%c " (+ 87 n)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1188 ((<= n 51)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1189 (format "%c " (+ -3 n))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1190
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1191 (defun filesets-files-equalp (a b)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1192 "Compare two filenames A and B after expansion."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1193 (equal (expand-file-name a) (expand-file-name b)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1194
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1195 (defun filesets-files-in-same-directory-p (a b)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1196 "Compare two filenames A and B after expansion."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1197 (let ((ad (file-name-directory (expand-file-name a)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1198 (bd (file-name-directory (expand-file-name b))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1199 (equal ad bd)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1200
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1201 (defun filesets-convert-path-list (string)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1202 "Return a path-list given as STRING as list."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1203 (if string
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1204 (mapcar (lambda (x) (file-name-as-directory x))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1205 (split-string string path-separator))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1206 nil))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1207
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1208 (defun filesets-which-file (master filename &optional path-list)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1209 "Search for a FILENAME relative to a MASTER file in PATH-LIST."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1210 (let ((f (concat (file-name-directory master)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1211 filename)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1212 (if (file-exists-p f)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1213 f
45164
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
1214 (filesets-some
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
1215 (lambda (dir)
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
1216 (let ((dir (file-name-as-directory dir))
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
1217 (files (if (file-exists-p dir)
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
1218 (filesets-directory-files dir nil ':files)
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
1219 nil)))
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
1220 (filesets-some (lambda (file)
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
1221 (if (equal filename (file-name-nondirectory file))
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
1222 (concat dir file)
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
1223 nil))
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
1224 files)))
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
1225 path-list))))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1226
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1227
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1228 (defun filesets-eviewer-get-props (entry)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1229 "Get ENTRY's (representing an external viewer) properties."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1230 (nth 2 entry))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1231
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1232 (defun filesets-eviewer-constraint-p (entry)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1233 (let* ((props (filesets-eviewer-get-props entry))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1234 (constraint (assoc ':constraintp props))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1235 (constraint-flag (assoc ':constraint-flag props)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1236 (cond
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1237 (constraint
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1238 (funcall (cadr constraint)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1239 (constraint-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1240 (eval (cadr constraint-flag)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1241 (t
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1242 t))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1243
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1244 (defun filesets-get-external-viewer (file)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1245 "Find an external viewer for FILE."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1246 (let ((filename (file-name-nondirectory file)))
45164
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
1247 (filesets-some
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1248 (lambda (entry)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1249 (when (and (string-match (nth 0 entry) filename)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1250 (filesets-eviewer-constraint-p entry))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1251 entry))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1252 filesets-external-viewers)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1253
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1254 (defun filesets-get-external-viewer-by-name (name)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1255 "Get the external viewer definition called NAME."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1256 (when name
45164
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
1257 (filesets-some
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1258 (lambda (entry)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1259 (when (and (string-equal (nth 1 entry) name)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1260 (filesets-eviewer-constraint-p entry))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1261 entry))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1262 filesets-external-viewers)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1263
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1264 (defun filesets-filetype-property (filename event &optional entry)
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1265 "Return non-nil if a file of a specific type has special flags/tags.
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1266
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1267 Events (corresponding tag):
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1268
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1269 on-open-all (:ignore-on-open-all) ... Exclude files of this when opening
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1270 a fileset
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1271
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1272 on-grep (:ignore-on-read-text) ... Exclude files of this when running
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1273 the \"Grep <<selection>>\" command
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1274
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1275 on-capture-output (:capture-output) ... Capture output of an external viewer
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1276
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1277 on-ls ... not used
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1278
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1279 on-cmd ... not used
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1280
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1281 on-close-all ... not used"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1282 (let ((def (filesets-eviewer-get-props
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1283 (or entry
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1284 (filesets-get-external-viewer filename)))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1285 (filesets-alist-get def
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1286 (case event
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1287 ((on-open-all) ':ignore-on-open-all)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1288 ((on-grep) ':ignore-on-read-text)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1289 ((on-cmd) nil)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1290 ((on-close-all) nil))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1291 nil t)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1292
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1293 (defun filesets-filetype-get-prop (property filename &optional entry)
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1294 "Return PROPERTY for filename -- use ENTRY if provided."
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1295 (let ((def (filesets-eviewer-get-props
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1296 (or entry
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1297 (filesets-get-external-viewer filename)))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1298 (when def
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1299 (filesets-alist-get def property nil t))))
49475
796b9b8e53c3 (filesets-file-open): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 48862
diff changeset
1300
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1301 (defun filesets-reset-filename-on-change ()
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1302 "Reset a buffer's filename if the buffer is being modified."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1303 (when filesets-output-buffer-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1304 (set-visited-file-name nil t)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1305
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1306 (defun filesets-spawn-external-viewer (file &optional ev-entry)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1307 "Start an external viewer for FILE.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1308 Use the viewer defined in EV-ENTRY (a valid element of
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1309 `filesets-external-viewers') if provided."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1310 (let* ((file (expand-file-name file))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1311 (entry (or ev-entry
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1312 (filesets-get-external-viewer file))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1313 (if entry
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1314 (let* ((vwr (cadr entry))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1315 (co-flag (filesets-filetype-get-prop ':capture-output file entry))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1316 (oh (filesets-filetype-get-prop ':open-hook file entry))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1317 (args (let ((fmt (filesets-filetype-get-prop ':args file entry)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1318 (if fmt
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1319 (let ((rv ""))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1320 (dolist (this fmt rv)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1321 (setq rv (concat rv
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1322 (cond
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1323 ((stringp this)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1324 (format this file))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1325 ((and (symbolp this)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1326 (fboundp this))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1327 (format "%S" (funcall this)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1328 (t
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1329 (format "%S" this)))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1330 (format "%S" file))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1331 (output
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1332 (cond
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1333 ((and (functionp vwr) co-flag)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1334 (funcall vwr file))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1335 ((functionp vwr)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1336 (funcall vwr file)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1337 nil)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1338 (co-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1339 (shell-command-to-string (format "%s %s" vwr args)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1340 (t
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1341 (shell-command (format "%s %s&" vwr args))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1342 nil))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1343 (if co-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1344 (progn
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1345 (switch-to-buffer (format "Filesets: %s %s" vwr file))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1346 (insert output)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1347 (make-local-variable 'filesets-output-buffer-flag)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1348 (setq filesets-output-buffer-flag t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1349 (set-visited-file-name file t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1350 (when oh
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1351 (run-hooks 'oh))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1352 (set-buffer-modified-p nil)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1353 (setq buffer-read-only t)
58039
5bf48738f9ab (filesets-spawn-external-viewer, filesets-run-cmd):
Richard M. Stallman <rms@gnu.org>
parents: 57925
diff changeset
1354 (goto-char (point-min)))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1355 (when oh
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1356 (run-hooks 'oh))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1357 (filesets-error 'error
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1358 "Filesets: general error when spawning external viewer"))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1359
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1360 (defun filesets-find-file (file)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1361 "Call `find-file' after a possible delay (see `filesets-find-file-delay').
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1362 If `filesets-be-docile-flag' is true, a file, which isn't readable, will
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1363 not be opened."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1364 ; (sleep-for filesets-find-file-delay)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1365 (when (or (file-readable-p file)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1366 (not filesets-be-docile-flag))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1367 (sit-for filesets-find-file-delay)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1368 (find-file file)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1369
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1370 (defun filesets-find-or-display-file (&optional file viewer)
79092
c2f73447531e (filesets-alist-get): Use `let' rather than `let*'.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
1371 "Visit FILE using an external VIEWER or open it in an Emacs buffer."
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1372 (interactive)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1373 (let* ((file (or file
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1374 (read-file-name "Find file: " nil nil viewer)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1375 (external-viewer-def (or
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1376 (filesets-get-external-viewer-by-name viewer)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1377 (filesets-get-external-viewer file))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1378 (filesets-message 3 "Filesets: view %S using %s" file external-viewer-def)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1379 (if external-viewer-def
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1380 (filesets-spawn-external-viewer file external-viewer-def)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1381 (filesets-find-file file))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1382
45012
161015ebadc0 (filesets-running-xemacs): Make defvar unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 44973
diff changeset
1383 (defun filesets-find-file-using ()
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1384 "Select a viewer and call `filesets-find-or-display-file'."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1385 (interactive)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1386 (let* ((lst (mapcar (lambda (this)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1387 (let ((a (cadr this)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1388 (list (format "%s" a) a)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1389 filesets-external-viewers))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1390 (viewer (completing-read "Using viewer: " lst nil t)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1391 (when viewer
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1392 (filesets-find-or-display-file nil (cadr (assoc viewer lst))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1393
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1394 (defun filesets-browser-name ()
45132
c26266baaba5 (filesets-browse-dir-function): Renamed from ...-fn.
Richard M. Stallman <rms@gnu.org>
parents: 45130
diff changeset
1395 "Get the directory browser's name as defined in `filesets-browse-dir-function'."
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1396 (cond
45132
c26266baaba5 (filesets-browse-dir-function): Renamed from ...-fn.
Richard M. Stallman <rms@gnu.org>
parents: 45130
diff changeset
1397 ((listp filesets-browse-dir-function)
c26266baaba5 (filesets-browse-dir-function): Renamed from ...-fn.
Richard M. Stallman <rms@gnu.org>
parents: 45130
diff changeset
1398 (car filesets-browse-dir-function))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1399 (t
45132
c26266baaba5 (filesets-browse-dir-function): Renamed from ...-fn.
Richard M. Stallman <rms@gnu.org>
parents: 45130
diff changeset
1400 filesets-browse-dir-function)))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1401
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1402 (defun filesets-browse-dir (dir)
45132
c26266baaba5 (filesets-browse-dir-function): Renamed from ...-fn.
Richard M. Stallman <rms@gnu.org>
parents: 45130
diff changeset
1403 "Browse DIR using `filesets-browse-dir-function'."
c26266baaba5 (filesets-browse-dir-function): Renamed from ...-fn.
Richard M. Stallman <rms@gnu.org>
parents: 45130
diff changeset
1404 (if (functionp filesets-browse-dir-function)
c26266baaba5 (filesets-browse-dir-function): Renamed from ...-fn.
Richard M. Stallman <rms@gnu.org>
parents: 45130
diff changeset
1405 (funcall filesets-browse-dir-function dir)
c26266baaba5 (filesets-browse-dir-function): Renamed from ...-fn.
Richard M. Stallman <rms@gnu.org>
parents: 45130
diff changeset
1406 (let ((name (car filesets-browse-dir-function))
c26266baaba5 (filesets-browse-dir-function): Renamed from ...-fn.
Richard M. Stallman <rms@gnu.org>
parents: 45130
diff changeset
1407 (args (format (cadr filesets-browse-dir-function) (expand-file-name dir))))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1408 (with-temp-buffer
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1409 (start-process (concat "Filesets:" name)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1410 "*Filesets external directory browser*"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1411 name args)))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1412
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1413 (defun filesets-get-fileset-name (something)
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1414 "Get SOMETHING's name (Don't ask)."
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1415 (cond
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1416 ((listp something)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1417 (car something))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1418 (t
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1419 something)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1420
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1421 (defun filesets-data-get-name (entry)
79092
c2f73447531e (filesets-alist-get): Use `let' rather than `let*'.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
1422 "Access to `filesets-data'. Get the ENTRY's name."
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1423 (car entry))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1424
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1425 (defun filesets-data-get-data (entry)
79092
c2f73447531e (filesets-alist-get): Use `let' rather than `let*'.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
1426 "Access to `filesets-data'. Get the ENTRY's data section."
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1427 (cdr entry))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1428
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1429 (defun filesets-alist-get (alist key &optional default carp)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1430 "Get KEY's value in the association list ALIST.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1431 Return DEFAULT if not found. Return (car VALUE) if CARP is non-nil."
79092
c2f73447531e (filesets-alist-get): Use `let' rather than `let*'.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
1432 (let ((elt (assoc key alist)))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1433 (cond
79092
c2f73447531e (filesets-alist-get): Use `let' rather than `let*'.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
1434 (elt
c2f73447531e (filesets-alist-get): Use `let' rather than `let*'.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
1435 (if carp
c2f73447531e (filesets-alist-get): Use `let' rather than `let*'.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
1436 (cadr elt)
c2f73447531e (filesets-alist-get): Use `let' rather than `let*'.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
1437 (cdr elt)))
c2f73447531e (filesets-alist-get): Use `let' rather than `let*'.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
1438 (default default)
c2f73447531e (filesets-alist-get): Use `let' rather than `let*'.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
1439 (t nil))))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1440
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1441 (defun filesets-data-get (entry key &optional default carp)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1442 "Extract the value for KEY in the data part of fileset ENTRY.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1443 Return DEFAULT if not found. Return (car VALUE) if CARP is non-nil."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1444 (filesets-alist-get (filesets-data-get-data entry) key default carp))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1445
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1446 (defun filesets-data-set (entry key value)
79092
c2f73447531e (filesets-alist-get): Use `let' rather than `let*'.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
1447 "Set the VALUE for KEY in the data part of fileset ENTRY."
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1448 (let* ((alist (filesets-data-get-data entry))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1449 (elt (assoc key alist)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1450 (if elt
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1451 (setcdr elt value)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1452 (setcdr entry (cons (cons key value) alist)))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1453
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1454 (defun filesets-entry-mode (entry)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1455 "Return fileset ENTRY's mode: :files, :file, :tree, :pattern, or :ingroup.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1456 See `filesets-data'."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1457 (let ((data (filesets-data-get-data entry)))
45164
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
1458 (filesets-some
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
1459 (lambda (x)
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
1460 (if (assoc x data)
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
1461 x))
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
1462 '(:files :tree :pattern :ingroup :file))))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1463
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1464 (defun filesets-entry-get-open-fn (fileset-name &optional fileset-entry)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1465 "Get the open-function for FILESET-NAME.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1466 Use FILESET-ENTRY for finding the open function, if provided."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1467 (filesets-data-get (or fileset-entry
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1468 (filesets-get-fileset-from-name fileset-name))
45132
c26266baaba5 (filesets-browse-dir-function): Renamed from ...-fn.
Richard M. Stallman <rms@gnu.org>
parents: 45130
diff changeset
1469 ':open filesets-open-file-function t))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1470
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1471 (defun filesets-entry-get-save-fn (fileset-name &optional fileset-entry)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1472 "Get the save-function for FILESET-NAME.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1473 Use FILESET-ENTRY for finding the save function, if provided."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1474 (filesets-data-get (or fileset-entry
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1475 (filesets-get-fileset-from-name fileset-name))
45132
c26266baaba5 (filesets-browse-dir-function): Renamed from ...-fn.
Richard M. Stallman <rms@gnu.org>
parents: 45130
diff changeset
1476 ':save filesets-save-buffer-function t))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1477
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1478 (defun filesets-entry-get-files (entry)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1479 "Get the file list for fileset ENTRY."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1480 (filesets-data-get entry ':files))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1481
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1482 (defun filesets-entry-set-files (entry data &optional anyways)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1483 "Set the file list for fileset ENTRY."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1484 (let ((files (filesets-entry-get-files entry)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1485 (if (or anyways files)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1486 (filesets-data-set entry ':files data))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1487
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1488 (defun filesets-entry-get-verbosity (entry)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1489 "Get verbosity level for fileset ENTRY."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1490 (filesets-data-get entry ':verbosity 1 t))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1491
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1492 (defun filesets-entry-get-file (entry)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1493 "Get the single file for fileset ENTRY."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1494 (filesets-data-get entry ':file nil t))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1495
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1496 (defun filesets-entry-get-pattern (entry)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1497 "Get the base directory + file pattern for fileset ENTRY."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1498 ; (filesets-data-get entry ':pattern nil t))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1499 (filesets-data-get entry ':pattern))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1500
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1501 (defun filesets-entry-get-pattern--pattern (list)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1502 "Get the file pattern for LIST."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1503 (if (= (length list) 1) ;; for compatibility with filesets < v1.5.5
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1504 (file-name-nondirectory (car list))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1505 (cadr list)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1506
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1507 (defun filesets-entry-get-pattern--dir (list)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1508 "Get a file pattern's base directory for LIST."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1509 (if (= (length list) 1) ;; for compatibility with filesets < v1.5.5
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1510 (file-name-directory (car list))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1511 (car list)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1512
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1513 (defun filesets-entry-get-tree (entry)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1514 "Get the tree pattern for fileset ENTRY."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1515 (filesets-data-get entry ':tree))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1516
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1517 (defun filesets-entry-get-dormant-flag (entry)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1518 "Get dormant flag for fileset ENTRY."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1519 (let ((fn (filesets-data-get entry ':dormant-p nil t)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1520 (if fn
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1521 (funcall fn)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1522 (filesets-data-get entry ':dormant-flag nil t))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1523
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1524 (defun filesets-entry-get-filter-dirs-flag (entry)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1525 "Get filter-dirs-flag for fileset ENTRY."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1526 (filesets-data-get entry ':filter-dirs-flag nil t))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1527
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1528 (defun filesets-entry-get-tree-max-level (entry)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1529 "Get maximal tree scanning depth for fileset ENTRY."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1530 (filesets-data-get entry ':tree-max-level nil t))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1531
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1532 (defun filesets-entry-get-master (entry)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1533 "Get the base file for fileset ENTRY."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1534 (filesets-data-get entry ':ingroup nil t))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1535
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1536 (defun filesets-file-open (open-function file-name &optional fileset-name)
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1537 "Open FILE-NAME using OPEN-FUNCTION.
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1538 If OPEN-FUNCTION is nil, its value will be deduced from FILESET-NAME."
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1539 (let ((open-function (or open-function
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1540 (filesets-entry-get-open-fn fileset-name))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1541 (if (file-readable-p file-name)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1542 (funcall open-function file-name)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1543 (message "Filesets: Couldn't open `%s'" file-name))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1544
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1545 (defun filesets-file-close (save-function buffer)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1546 "Close BUFFER.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1547 First, save the buffer's contents using SAVE-FUNCTION. Then, kill buffer
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1548 if `buffer-modified-p' returns nil.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1549
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1550 SAVE-FUNCTION takes no argument, but works on the current buffer."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1551 (save-excursion
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1552 (set-buffer buffer)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1553 (if (buffer-modified-p)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1554 (funcall save-function))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1555 (if (not (buffer-modified-p))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1556 (kill-buffer buffer))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1557
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1558 (defun filesets-get-fileset-from-name (name &optional mode)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1559 "Get fileset definition for NAME."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1560 (case mode
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1561 ((:ingroup :tree)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1562 name)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1563 (t
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1564 (assoc name filesets-data))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1565
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1566
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1567 ;;; commands
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1568 (defun filesets-cmd-get-def (cmd-name)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1569 "Get `filesets-commands' entry for CMD-NAME."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1570 (assoc cmd-name filesets-commands))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1571
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1572 (defun filesets-cmd-get-args (cmd-name)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1573 (let ((args (let ((def (filesets-cmd-get-def cmd-name)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1574 (nth 2 def)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1575 (rv nil))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1576 (dolist (this args rv)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1577 (cond
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1578 ((and (symbolp this) (fboundp this))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1579 (let ((x (funcall this)))
49475
796b9b8e53c3 (filesets-file-open): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 48862
diff changeset
1580 (setq rv (append rv (if (listp x) x (list x))))))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1581 (t
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1582 (setq rv (append rv (list this))))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1583
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1584 (defun filesets-cmd-get-fn (cmd-name)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1585 (let ((def (filesets-cmd-get-def cmd-name)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1586 (nth 1 def)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1587
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1588 (defun filesets-cmd-show-result (cmd output)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1589 "Show OUTPUT of CMD (a shell command)."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1590 (pop-to-buffer "*Filesets: Shell Command Output*")
58039
5bf48738f9ab (filesets-spawn-external-viewer, filesets-run-cmd):
Richard M. Stallman <rms@gnu.org>
parents: 57925
diff changeset
1591 (with-no-warnings
5bf48738f9ab (filesets-spawn-external-viewer, filesets-run-cmd):
Richard M. Stallman <rms@gnu.org>
parents: 57925
diff changeset
1592 (end-of-buffer))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1593 (insert "*** ")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1594 (insert cmd)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1595 (newline)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1596 (insert output)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1597 (newline))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1598
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1599 (defun filesets-run-cmd--repl-fn (arg &optional format-fn)
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1600 "Helper function for `filesets-run-cmd'. Apply FORMAT-FN to arg.
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1601 Replace <file-name> or <<file-name>> with filename."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1602 (funcall format-fn (cond
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1603 ((equal arg "<file-name>")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1604 (buffer-file-name))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1605 ((equal arg "<<file-name>>")
73369
8ab1128eef12 (filesets-run-cmd--repl-fn): Use shell-quote-argument.
Kim F. Storm <storm@cua.dk>
parents: 73366
diff changeset
1606 (shell-quote-argument (buffer-file-name)))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1607 (t
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1608 arg))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1609
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1610 (defun filesets-run-cmd (&optional cmd-name fileset mode)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1611 "Run CMD-NAME (see `filesets-commands') on FILESET."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1612 (interactive)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1613 (let* ((cmd-name (or cmd-name
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1614 (completing-read "Select command: " filesets-commands
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1615 nil t)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1616 (name (or fileset
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1617 (completing-read "Select fileset: " filesets-data nil t))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1618 (when (and cmd-name name)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1619 (let* ((event (if (equal cmd-name "Grep <<selection>>")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1620 'on-grep
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1621 'on-cmd))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1622 (files (if (and fileset
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1623 (or (equal mode ':ingroup)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1624 (equal mode ':tree)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1625 (filesets-get-filelist fileset mode event)
49475
796b9b8e53c3 (filesets-file-open): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 48862
diff changeset
1626 (filesets-get-filelist
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1627 (filesets-get-fileset-from-name name)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1628 mode event))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1629 (when files
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1630 (let ((fn (filesets-cmd-get-fn cmd-name))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1631 (args (filesets-cmd-get-args cmd-name)))
96958
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1632 (if (memq fn '(multi-isearch-files multi-isearch-files-regexp))
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1633 (apply fn args)
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1634 (dolist (this files nil)
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1635 (save-excursion
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1636 (save-restriction
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1637 (let ((buffer (filesets-find-file this)))
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1638 (when buffer
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1639 (goto-char (point-min))
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1640 (let ()
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1641 (cond
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1642 ((stringp fn)
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1643 (let* ((args
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1644 (let ((txt ""))
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1645 (dolist (this args txt)
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1646 (setq txt
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1647 (concat txt
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1648 (filesets-run-cmd--repl-fn
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1649 this
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1650 (lambda (this)
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1651 (if (equal txt "") "" " ")
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1652 (format "%s" this))))))))
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1653 (cmd (concat fn " " args)))
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1654 (filesets-cmd-show-result
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1655 cmd (shell-command-to-string cmd))))
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1656 ((symbolp fn)
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1657 (let ((args
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1658 (let ((argl nil))
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1659 (dolist (this args argl)
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1660 (setq argl
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1661 (append argl
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1662 (filesets-run-cmd--repl-fn
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1663 this
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1664 'list)))))))
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1665 (apply fn args)))))))))))))))))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1666
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1667 (defun filesets-get-cmd-menu ()
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1668 "Create filesets command menu."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1669 `("+ Commands"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1670 . ,(mapcar (lambda (this)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1671 (let ((name (car this)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1672 `[,name (filesets-run-cmd ,name)]))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1673 filesets-commands)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1674
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1675
79092
c2f73447531e (filesets-alist-get): Use `let' rather than `let*'.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
1676 ;;; sample commands
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1677 (defun filesets-cmd-query-replace-getargs ()
79092
c2f73447531e (filesets-alist-get): Use `let' rather than `let*'.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
1678 "Get arguments for `query-replace' and `query-replace-regexp'."
96958
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1679 (let ((common (query-replace-read-args "Filesets query replace" nil t)))
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1680 (list (nth 0 common) (nth 1 common) t nil (nth 2 common) nil
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1681 multi-query-replace-map)))
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1682
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1683 (defun filesets-cmd-query-replace-regexp-getargs ()
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1684 "Get arguments for `query-replace' and `query-replace-regexp'."
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1685 (let ((common (query-replace-read-args "Filesets query replace" t t)))
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1686 (list (nth 0 common) (nth 1 common) t t (nth 2 common) nil
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1687 multi-query-replace-map)))
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1688
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1689 (defun filesets-cmd-isearch-getargs ()
0de86dd9427f (filesets-commands): Add commands for "Isearch" and
Juri Linkov <juri@jurta.org>
parents: 96376
diff changeset
1690 "Get arguments for `multi-isearch-files' and `multi-isearch-files-regexp'."
97155
b4faea6c6c00 (filesets-cmd-isearch-getargs): Check if the
Juri Linkov <juri@jurta.org>
parents: 96958
diff changeset
1691 (and (boundp 'files) (list files)))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1692
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1693 (defun filesets-cmd-shell-command-getargs ()
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1694 "Get arguments for `filesets-cmd-shell-command'."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1695 (let* ((arg (read-string "Shell command (%s = file): "
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1696 "%s"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1697 'shell-command-history)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1698 arg))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1699
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1700 (defun filesets-cmd-shell-command (txt)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1701 "Wrapper function for `shell-command'."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1702 (let ((ok (if (buffer-modified-p)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1703 (let ((ok (y-or-n-p "Save buffer? ")))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1704 (when ok
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1705 (save-buffer))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1706 ok)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1707 t)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1708 (when ok
73366
d0dd803ef151 (filesets-cmd-shell-command): Quote buffer-file-name to protect whitespace and
Eli Zaretskii <eliz@gnu.org>
parents: 72386
diff changeset
1709 (let ((cmd (format txt (shell-quote-argument (buffer-file-name)))))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1710 (message "Filesets: %s" cmd)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1711 (filesets-cmd-show-result cmd
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1712 (shell-command-to-string cmd))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1713
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1714
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1715 ;;; body
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1716 (defun filesets-get-filelist (entry &optional mode event)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1717 "Get all files for fileset ENTRY.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1718 Assume MODE (see `filesets-entry-mode'), if provided."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1719 (let* ((mode (or mode
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1720 (filesets-entry-mode entry)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1721 (fl (case mode
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1722 ((:files)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1723 (filesets-entry-get-files entry))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1724 ((:file)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1725 (list (filesets-entry-get-file entry)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1726 ((:ingroup)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1727 (let ((entry (expand-file-name
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1728 (if (stringp entry)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1729 entry
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1730 (filesets-entry-get-master entry)))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1731 (cons entry (filesets-ingroup-cache-get entry))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1732 ((:tree)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1733 (let ((dir (nth 0 entry))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1734 (patt (nth 1 entry)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1735 (filesets-directory-files dir patt ':files t)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1736 ((:pattern)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1737 (let ((dirpatt (filesets-entry-get-pattern entry)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1738 (if dirpatt
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1739 (let ((dir (filesets-entry-get-pattern--dir dirpatt))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1740 (patt (filesets-entry-get-pattern--pattern dirpatt)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1741 ;;(filesets-message 3 "Filesets: scanning %s" dirpatt)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1742 (filesets-directory-files dir patt ':files t))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1743 ;; (message "Filesets: malformed entry: %s" entry)))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1744 (filesets-error 'error "Filesets: malformed entry: "
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1745 entry)))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1746 (filesets-filter-list fl
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1747 (lambda (file)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1748 (not (filesets-filetype-property file event))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1749
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1750 (defun filesets-open (&optional mode name lookup-name)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1751 "Open the fileset called NAME.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1752 Use LOOKUP-NAME for searching additional data if provided."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1753 (interactive)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1754 (let* ((name (or name
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1755 (completing-read "Open fileset: " filesets-data nil t)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1756 (fileset (filesets-get-fileset-from-name name mode))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1757 (lookup-fs (if lookup-name
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1758 (filesets-get-fileset-from-name lookup-name)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1759 fileset))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1760 (mode (or mode (filesets-entry-mode lookup-fs))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1761 (if fileset
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1762 (let* ((files (filesets-get-filelist fileset mode 'on-open-all))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1763 (n (length files))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1764 (open-function (filesets-entry-get-open-fn nil lookup-fs)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1765 (if (or (<= n filesets-query-user-limit)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1766 (y-or-n-p (format "Filesets: Open all %d files in %s? "
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1767 n name)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1768 (dolist (this files nil)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1769 (filesets-file-open open-function this))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1770 (message "Filesets: cancelled")))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1771 (filesets-error 'error "Filesets: Unknown fileset: " name))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1772
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1773 (defun filesets-close (&optional mode name lookup-name)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1774 "Close all buffers belonging to the fileset called NAME.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1775 Use LOOKUP-NAME for deducing the save-function, if provided."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1776 (interactive)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1777 (let* ((name (or name
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1778 (completing-read "Close fileset: " filesets-data nil t)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1779 (fileset (filesets-get-fileset-from-name name mode))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1780 (lookup-fs (if lookup-name
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1781 (filesets-get-fileset-from-name lookup-name)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1782 fileset))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1783 (mode (or mode (filesets-entry-mode lookup-fs))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1784 (if fileset
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1785 (let ((files (filesets-get-filelist fileset mode 'on-close-all))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1786 (save-function (filesets-entry-get-save-fn nil lookup-fs)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1787 (dolist (file-name files nil)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1788 (let* ((buffer (get-file-buffer file-name)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1789 (if buffer
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1790 (filesets-file-close save-function buffer)))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1791 ; (message "Filesets: Unknown fileset: `%s'" name))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1792 (filesets-error 'error "Filesets: Unknown fileset: " name))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1793
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1794 (defun filesets-add-buffer (&optional name buffer)
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1795 "Add BUFFER (or current buffer) to the fileset called NAME.
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1796 User will be queried, if no fileset name is provided."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1797 (interactive)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1798 (let* ((buffer (or buffer
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1799 (current-buffer)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1800 (name (or name
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1801 (completing-read
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1802 (format "Add '%s' to fileset: " buffer)
61583
63a08bfc0b0d (filesets-add-buffer): If user supplies a name of a
Eli Zaretskii <eliz@gnu.org>
parents: 61238
diff changeset
1803 filesets-data nil)))
63a08bfc0b0d (filesets-add-buffer): If user supplies a name of a
Eli Zaretskii <eliz@gnu.org>
parents: 61238
diff changeset
1804 (entry (or (assoc name filesets-data)
63a08bfc0b0d (filesets-add-buffer): If user supplies a name of a
Eli Zaretskii <eliz@gnu.org>
parents: 61238
diff changeset
1805 (when (y-or-n-p
72386
2ce9bf47e864 * cus-theme.el (customize-create-theme)
Romain Francoise <romain@orebokech.com>
parents: 68651
diff changeset
1806 (format "Fileset %s does not exist. Create it? "
61583
63a08bfc0b0d (filesets-add-buffer): If user supplies a name of a
Eli Zaretskii <eliz@gnu.org>
parents: 61238
diff changeset
1807 name))
63a08bfc0b0d (filesets-add-buffer): If user supplies a name of a
Eli Zaretskii <eliz@gnu.org>
parents: 61238
diff changeset
1808 (progn
63a08bfc0b0d (filesets-add-buffer): If user supplies a name of a
Eli Zaretskii <eliz@gnu.org>
parents: 61238
diff changeset
1809 (add-to-list 'filesets-data (list name '(:files)))
63a08bfc0b0d (filesets-add-buffer): If user supplies a name of a
Eli Zaretskii <eliz@gnu.org>
parents: 61238
diff changeset
1810 (message
63a08bfc0b0d (filesets-add-buffer): If user supplies a name of a
Eli Zaretskii <eliz@gnu.org>
parents: 61238
diff changeset
1811 "Fileset %s created. Call `M-x filesets-save-config' to save."
63a08bfc0b0d (filesets-add-buffer): If user supplies a name of a
Eli Zaretskii <eliz@gnu.org>
parents: 61238
diff changeset
1812 name)
63a08bfc0b0d (filesets-add-buffer): If user supplies a name of a
Eli Zaretskii <eliz@gnu.org>
parents: 61238
diff changeset
1813 (car filesets-data))))))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1814 (if entry
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1815 (let* ((files (filesets-entry-get-files entry))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1816 (this (buffer-file-name buffer))
45164
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
1817 (inlist (filesets-member this files
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
1818 :test 'filesets-files-equalp)))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1819 (cond
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1820 (inlist
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1821 (message "Filesets: '%s' is already in '%s'" this name))
49475
796b9b8e53c3 (filesets-file-open): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 48862
diff changeset
1822 ((and (equal (filesets-entry-mode entry) ':files)
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1823 this)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1824 (filesets-entry-set-files entry (cons this files) t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1825 (filesets-set-config name 'filesets-data filesets-data))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1826 (t
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1827 (message "Filesets: Can't add '%s' to fileset '%s'" this name)))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1828
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1829 (defun filesets-remove-buffer (&optional name buffer)
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
1830 "Remove BUFFER (or current buffer) to fileset NAME.
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1831 User will be queried, if no fileset name is provided."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1832 (interactive)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1833 (let* ((buffer (or buffer
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1834 (current-buffer)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1835 (name (or name
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1836 (completing-read
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1837 (format "Remove '%s' from fileset: " buffer)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1838 filesets-data nil t)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1839 (entry (assoc name filesets-data)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1840 (if entry
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1841 (let* ((files (filesets-entry-get-files entry))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1842 (this (buffer-file-name buffer))
45164
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
1843 (inlist (filesets-member this files
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
1844 :test 'filesets-files-equalp)))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1845 ;;(message "%s %s %s" files this inlist)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1846 (if (and files this inlist)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1847 (let ((new (list (cons ':files (delete (car inlist) files)))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1848 (setcdr entry new)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1849 (filesets-set-config name 'filesets-data filesets-data))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1850 (message "Filesets: Can't remove '%s' from fileset '%s'"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1851 this
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1852 name))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1853
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1854 (defun filesets-convert-patterns (name)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1855 "Change fileset NAME's mode from :pattern to :files."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1856 (interactive)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1857 (let ((entry (assoc name filesets-data)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1858 (if entry
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1859 (let ((pattern (filesets-entry-get-pattern entry))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1860 (patfiles (filesets-get-filelist entry ':pattern)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1861 (if pattern
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1862 (progn
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1863 (filesets-entry-set-files entry patfiles t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1864 (filesets-set-config name 'filesets-data filesets-data)))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1865
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1866 (defun filesets-edit ()
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1867 "Customize `filesets-data'."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1868 (interactive)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1869 (customize-variable 'filesets-data))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1870
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1871 (defun filesets-customize ()
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1872 "Customize the filesets group."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1873 (interactive)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1874 (customize-group 'filesets))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1875
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1876 (defun filesets-info ()
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1877 "Display filesets's version information."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1878 (interactive)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1879 (if (y-or-n-p (format "Filesets v%s: visit homepage? " filesets-version))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1880 (filesets-goto-homepage)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1881
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1882 (defun filesets-goto-homepage ()
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1883 "Show filesets's homepage."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1884 (interactive)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1885 (browse-url filesets-homepage))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1886
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1887 (defun filesets-remake-shortcut (count submenu)
79092
c2f73447531e (filesets-alist-get): Use `let' rather than `let*'.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
1888 "Remake a submenu's shortcut when wrapping long menus."
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1889 (let* ((name (concat (filesets-get-shortcut count)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1890 (substring (elt submenu 0) 2))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1891 (if (listp submenu)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1892 (cons name (cdr submenu))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1893 (apply 'vector (list name (cdr (append submenu nil)))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1894 ; (vconcat `[,name] (subseq submenu 1)))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1895
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1896 (defun filesets-wrap-submenu (submenu-body)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1897 "Split long submenus."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1898 (let ((bl (length submenu-body)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1899 (if (or (= filesets-max-submenu-length 0)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1900 (<= bl filesets-max-submenu-length))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1901 submenu-body
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1902 (let* ((result nil)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1903 (factor (ceiling (/ (float bl)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1904 filesets-max-submenu-length))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1905 (do ((data submenu-body (cdr data))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1906 (n 1 (+ n 1))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1907 (count 0 (+ count factor)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1908 ((or (> count bl)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1909 (null data)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1910 ; (let ((sl (subseq submenu-body count
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1911 (let ((sl (filesets-sublist submenu-body count
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1912 (let ((x (+ count factor)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1913 (if (>= bl x)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1914 x
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1915 nil)))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1916 (when sl
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1917 (setq result
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1918 (append
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1919 result
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1920 (if (= (length sl) 1)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1921 (if filesets-menu-shortcuts-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1922 (list (filesets-remake-shortcut n (car sl)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1923 sl)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1924 `((,(concat
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1925 (filesets-get-shortcut n)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1926 (let ((rv ""))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1927 (do ((x sl (cdr x)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1928 ((null x))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1929 (let ((y (concat (elt (car x) 0)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1930 (if (null (cdr x))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1931 ""
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1932 ", "))))
49475
796b9b8e53c3 (filesets-file-open): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 48862
diff changeset
1933 (setq rv
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1934 (concat
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1935 rv
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1936 (if filesets-menu-shortcuts-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1937 (substring y 2)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1938 y)))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1939 (if (> (length rv)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1940 filesets-max-entry-length)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1941 (concat
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1942 (substring rv 0 filesets-max-entry-length)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1943 " ...")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1944 rv)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1945 ,@sl))))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1946 result))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1947
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1948 (defun filesets-get-menu-epilog (something &optional
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1949 mode lookup-name rebuild-flag)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1950 "Get submenu epilog for SOMETHING (usually a fileset).
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1951 If mode is :tree or :ingroup, SOMETHING is some weird construct and
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1952 LOOKUP-NAME is used as lookup name for retrieving fileset specific settings."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1953 (case mode
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1954 ((:tree)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1955 `("---"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1956 ["Close all files" (filesets-close ',mode ',something ',lookup-name)]
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1957 ["Run Command" (filesets-run-cmd nil ',something ',mode)]
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1958 [,(format "Browse with `%s'" (filesets-browser-name))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1959 (filesets-browse-dir ',(car something))]
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1960 ,@(when rebuild-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1961 `(["Rebuild this submenu"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1962 (filesets-rebuild-this-submenu ',lookup-name)]))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1963 ((:ingroup)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1964 `("---"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1965 ["Close all files" (filesets-close ',mode ',something ',lookup-name)]
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1966 ["Run Command" (filesets-run-cmd nil ',something ',mode)]
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1967 ,@(when rebuild-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1968 `(["Rebuild this submenu"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1969 (filesets-rebuild-this-submenu ',lookup-name)]))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1970 ((:pattern)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1971 `("---"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1972 ["Close all files" (filesets-close ',mode ',something)]
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1973 ["Run Command" (filesets-run-cmd nil ',something ',mode)]
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1974 [,(format "Browse with `%s'" (filesets-browser-name))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1975 ,(list 'filesets-browse-dir
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1976 (filesets-entry-get-pattern--dir
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1977 (filesets-entry-get-pattern
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1978 (filesets-get-fileset-from-name something ':pattern))))]
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1979 ; [,(concat (if filesets-menu-shortcuts-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1980 ; (concat "Con" filesets-menu-shortcuts-marker "vert")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1981 ; "Convert")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1982 ; " :pattern to :files")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1983 ; ,(list (function filesets-convert-patterns) something)]
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1984 ,@(when rebuild-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1985 `(["Rebuild this submenu"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1986 (filesets-rebuild-this-submenu ',lookup-name)]))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1987 ((:files)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1988 `("---"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1989 [,(concat "Close all files") (filesets-close ',mode ',something)]
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1990 ["Run Command" (filesets-run-cmd nil ',something ',mode)]
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1991 ["Add current buffer"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1992 (filesets-add-buffer ',something (current-buffer))]
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1993 ["Remove current buffer"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1994 (filesets-remove-buffer ',something (current-buffer))]
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1995 ,@(when rebuild-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1996 `(["Rebuild this submenu"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1997 (filesets-rebuild-this-submenu ',lookup-name)]))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1998 (t
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1999 (filesets-error 'error "Filesets: malformed definition of " something))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2000
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2001 (defun filesets-ingroup-get-data (master pos &optional fun)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2002 "Access to `filesets-ingroup-patterns'. Extract data section."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2003 (let ((masterfile (file-name-nondirectory master))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2004 (fn (or fun (lambda (a b)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2005 (and (stringp a)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2006 (stringp b)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2007 (string-match a b))))))
45164
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
2008 (filesets-some (lambda (x)
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
2009 (if (funcall fn (car x) masterfile)
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
2010 (nth pos x)
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
2011 nil))
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
2012 filesets-ingroup-patterns)))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2013
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2014 (defun filesets-ingroup-get-pattern (master)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2015 "Access to `filesets-ingroup-patterns'. Extract patterns."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2016 (filesets-ingroup-get-data master 2))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2017
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2018 (defun filesets-ingroup-get-remdupl-p (master)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2019 "Access to `filesets-ingroup-patterns'. Extract remove-duplicates-flag."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2020 (filesets-ingroup-get-data master 1))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2021
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
2022 (defun filesets-ingroup-collect-finder (patt case-sensitivep)
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2023 "Helper function for `filesets-ingroup-collect'. Find pattern PATT."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2024 (let ((cfs case-fold-search)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2025 (rv (progn
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
2026 (setq case-fold-search (not case-sensitivep))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2027 (re-search-forward patt nil t))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2028 (setq case-fold-search cfs)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2029 rv))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2030
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2031 (defun filesets-ingroup-cache-get (master)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2032 "Access to `filesets-ingroup-cache'."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2033 (lax-plist-get filesets-ingroup-cache master))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2034
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2035 (defun filesets-ingroup-cache-put (master file)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2036 "Access to `filesets-ingroup-cache'."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2037 (let* ((emaster (expand-file-name master))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2038 (this (if file
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2039 (cons file (filesets-ingroup-cache-get emaster))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2040 nil)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2041 (setq filesets-ingroup-cache
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2042 (lax-plist-put filesets-ingroup-cache emaster this))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2043
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2044 (defun filesets-ingroup-collect-files (fs &optional remdupl-flag master depth)
79092
c2f73447531e (filesets-alist-get): Use `let' rather than `let*'.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
2045 "Helper function for `filesets-ingroup-collect'. Collect file names."
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2046 (let* ((master (or master
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2047 (filesets-entry-get-master fs)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2048 (remdupl-flag (or remdupl-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2049 (filesets-ingroup-get-remdupl-p master))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2050 (filesets-ingroup-cache-put master nil)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2051 (filesets-message 2 "Filesets: parsing %S" master)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2052 (let ((cmdpatts (filesets-ingroup-get-pattern master))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2053 (count 0)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2054 (rv nil))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2055 (if cmdpatts
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2056 (dolist (this-def cmdpatts rv)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2057 (let* ((this-patt (filesets-alist-get this-def ':pattern nil t))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2058 (this-name (filesets-alist-get this-def ':name "" t))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2059 (this-pp (filesets-alist-get this-def ':preprocess nil t))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2060 (this-mn (filesets-alist-get this-def ':match-number 1 t))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2061 (this-sd (or depth
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2062 (filesets-alist-get this-def ':scan-depth 0 t)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2063 (this-csp (filesets-alist-get this-def ':case-sensitive nil t))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2064 (this-fn (filesets-alist-get
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2065 this-def ':get-file-name 'filesets-which-file t))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2066 (this-stubp (filesets-alist-get this-def ':stubp nil t))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2067 (this-stub-flag (filesets-alist-get this-def ':stub-flag nil t))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2068 (flist nil)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2069 (lst nil))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2070 (cond
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2071 ((not this-patt)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2072 (filesets-error 'error "Filesets: malformed :ingroup definition "
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2073 this-def))
45130
cb1d1e1eb678 (filesets-ingroup-collect-files):
Richard M. Stallman <rms@gnu.org>
parents: 45012
diff changeset
2074 ((< this-sd 0)
cb1d1e1eb678 (filesets-ingroup-collect-files):
Richard M. Stallman <rms@gnu.org>
parents: 45012
diff changeset
2075 nil)
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2076 (t
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2077 (with-temp-buffer
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2078 (insert-file-contents master)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2079 (goto-char (point-min))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2080 (when this-pp
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2081 (funcall this-pp))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2082 (while (filesets-ingroup-collect-finder this-patt this-csp)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2083 (let* ((txt (match-string this-mn))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2084 (f (funcall this-fn master txt)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2085 (when (and f
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2086 (not (member f flist))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2087 (or (not remdupl-flag)
45164
79ab9956f2a0 (filesets-external-viewers): Fix customization problem.
Richard M. Stallman <rms@gnu.org>
parents: 45132
diff changeset
2088 (not (filesets-member
45012
161015ebadc0 (filesets-running-xemacs): Make defvar unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 44973
diff changeset
2089 f filesets-ingroup-files
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2090 :test 'filesets-files-equalp))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2091 (let ((no-stub-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2092 (and (not this-stub-flag)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2093 (if this-stubp
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2094 (not (funcall this-stubp master f))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2095 t))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2096 (setq count (+ count 1))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2097 (setq flist (cons f flist))
45012
161015ebadc0 (filesets-running-xemacs): Make defvar unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 44973
diff changeset
2098 (setq filesets-ingroup-files
161015ebadc0 (filesets-running-xemacs): Make defvar unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 44973
diff changeset
2099 (cons f filesets-ingroup-files))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2100 (when no-stub-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2101 (filesets-ingroup-cache-put master f))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2102 (setq lst (append lst (list f))))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2103 (when lst
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2104 (setq rv
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2105 (nconc rv
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2106 (mapcar (lambda (this)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2107 `((,this ,this-name)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2108 ,@(filesets-ingroup-collect-files
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2109 fs remdupl-flag this
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2110 (- this-sd 1))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2111 lst))))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2112 (filesets-message 2 "Filesets: no patterns defined for %S" master)))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2113
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2114 (defun filesets-ingroup-collect-build-menu (fs flist &optional other-count)
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
2115 "Helper function for `filesets-ingroup-collect'. Build the menu.
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
2116 FS is a fileset's name. FLIST is a list returned by
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2117 `filesets-ingroup-collect-files'."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2118 (if (null flist)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2119 nil
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2120 (let ((count 0)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2121 (fsn fs)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2122 (rv nil))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2123 (dolist (this flist rv)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2124 (setq count (+ count 1))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2125 (let* ((def (if (listp this) (car this) (list this "")))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2126 (files (if (listp this) (cdr this) nil))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2127 (master (nth 0 def))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2128 (name (nth 1 def))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2129 (nm (concat (filesets-get-shortcut (if (or (not other-count) files)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2130 count other-count))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2131 (if (or (null name) (equal name ""))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2132 ""
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2133 (format "%s: " name))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2134 (file-name-nondirectory master))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2135 (setq rv
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2136 (append rv
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2137 (if files
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2138 `((,nm
49475
796b9b8e53c3 (filesets-file-open): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 48862
diff changeset
2139 [,(concat "Inclusion Group: "
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2140 (file-name-nondirectory master))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2141 (filesets-open ':ingroup ',master ',fsn)]
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2142 "---"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2143 [,master (filesets-file-open nil ',master ',fsn)]
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2144 "---"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2145 ,@(let ((count 0))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2146 (mapcar
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2147 (lambda (this)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2148 (setq count (+ count 1))
49475
796b9b8e53c3 (filesets-file-open): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 48862
diff changeset
2149 (let ((ff (filesets-ingroup-collect-build-menu
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2150 fs (list this) count)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2151 (if (= (length ff) 1)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2152 (car ff)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2153 ff)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2154 files))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2155 ,@(filesets-get-menu-epilog master ':ingroup fsn)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2156 `([,nm (filesets-file-open nil ',master ',fsn)])))))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2157
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
2158 (defun filesets-ingroup-collect (fs remdupl-flag master)
79092
c2f73447531e (filesets-alist-get): Use `let' rather than `let*'.
Juanma Barranquero <lekktu@gmail.com>
parents: 78236
diff changeset
2159 "Collect names of included files and build submenu."
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2160 (filesets-ingroup-cache-put master nil)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2161 (filesets-message 2 "Filesets: parsing %S" master)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2162 (filesets-ingroup-collect-build-menu
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2163 fs
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2164 (filesets-ingroup-collect-files fs remdupl-flag master)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2165
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2166 (defun filesets-build-ingroup-submenu (lookup-name master)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2167 "Build a :ingroup submenu for file MASTER."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2168 (if (file-readable-p master)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2169 (let ((remdupl-flag (filesets-ingroup-get-remdupl-p master)))
45012
161015ebadc0 (filesets-running-xemacs): Make defvar unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 44973
diff changeset
2170 (setq filesets-ingroup-files (list master))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2171 (filesets-ingroup-collect lookup-name remdupl-flag master))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2172 (if filesets-be-docile-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2173 (progn
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2174 (message "Filesets: can't parse %s" master)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2175 nil)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2176 (filesets-error 'error "Filesets: can't parse " master))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2177
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2178 (defun filesets-build-dir-submenu-now (level depth entry lookup-name dir patt fd
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2179 &optional rebuild-flag)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2180 "Helper function for `filesets-build-dir-submenu'."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2181 ;;(filesets-message 3 "Filesets: scanning %s" dir)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2182 (if (or (= depth 0)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2183 (< level depth))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2184 (let* ((dir (file-name-as-directory dir))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2185 (header `([,(concat "Tree: "
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2186 (if (= level 0)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2187 dir
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2188 (concat ".../"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2189 (file-name-as-directory
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2190 (file-name-nondirectory
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2191 (directory-file-name dir))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2192 ,(list (function filesets-open)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2193 ':tree
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2194 `(quote (,dir ,patt))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2195 lookup-name)]
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2196 "---"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2197 (dirlist (filesets-directory-files dir patt nil nil fd))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2198 (subdirs (filesets-filter-dir-names dirlist))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2199 (count 0)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2200 (dirsmenu (mapcar
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2201 (lambda (x)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2202 (setq count (+ count 1))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2203 (let* ((x (file-name-as-directory x))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2204 (xx (concat dir x))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2205 (dd (filesets-build-dir-submenu-now
49475
796b9b8e53c3 (filesets-file-open): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 48862
diff changeset
2206 (+ level 1) depth entry
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2207 lookup-name xx patt fd))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2208 (nm (concat (filesets-get-shortcut count)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2209 x)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2210 (if dd
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2211 `(,nm ,@dd)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2212 `[,nm ,(list 'filesets-browse-dir xx)])))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2213 subdirs))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2214 (files (filesets-filter-dir-names dirlist t))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2215 (filesmenu (mapcar (lambda (x)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2216 (setq count (+ count 1))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2217 `[,(concat (filesets-get-shortcut count)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2218 x)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2219 (filesets-file-open nil
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2220 (quote ,(concat dir x))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2221 (quote ,lookup-name))])
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2222 files)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2223 (append header
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2224 (filesets-wrap-submenu
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2225 (append
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2226 dirsmenu
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2227 filesmenu))
49475
796b9b8e53c3 (filesets-file-open): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 48862
diff changeset
2228 (filesets-get-menu-epilog `(,dir ,patt) ':tree
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2229 lookup-name rebuild-flag)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2230 nil))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2231
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2232 (defun filesets-build-dir-submenu (entry lookup-name dir patt)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2233 "Build a :tree submenu named LOOKUP-NAME with base directory DIR including
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2234 all files matching PATT for filesets ENTRY."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2235 (let ((fd (filesets-entry-get-filter-dirs-flag entry))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2236 (depth (or (filesets-entry-get-tree-max-level entry)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2237 filesets-tree-max-level)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2238 (filesets-build-dir-submenu-now 0 depth entry lookup-name dir patt fd t)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2239
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2240 (defun filesets-build-submenu (count lookup-name entry)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2241 "Build submenu for the fileset ENTRY named LOOKUP-NAME.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2242 Construct a shortcut from COUNT."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2243 (let ((lookup-name (or lookup-name
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2244 (filesets-data-get-name entry))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2245 (message "Filesets: %s" lookup-name)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2246 (let ((mode (filesets-entry-mode entry))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2247 (filesets-verbosity (filesets-entry-get-verbosity entry))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2248 (this-lookup-name (concat (filesets-get-shortcut count)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2249 lookup-name)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2250 (case mode
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2251 ((:file)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2252 (let* ((file (filesets-entry-get-file entry)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2253 `[,this-lookup-name
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2254 (filesets-file-open nil ',file ',lookup-name)]))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2255 (t
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2256 `(,this-lookup-name
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2257 ,@(case mode
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2258 ((:pattern)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2259 (let* ((files (filesets-get-filelist entry mode 'on-ls))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2260 (dirpatt (filesets-entry-get-pattern entry))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2261 (pattname (apply 'concat (cons "Pattern: " dirpatt)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2262 (count 0))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2263 ;;(filesets-message 3 "Filesets: scanning %S" pattname)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2264 `([,pattname
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2265 ,(list (function filesets-open) mode lookup-name)]
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2266 "---"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2267 ,@(filesets-wrap-submenu
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2268 (mapcar
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2269 (lambda (x)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2270 (setq count (+ count 1))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2271 `[,(concat (filesets-get-shortcut count)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2272 (file-name-nondirectory x))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2273 (filesets-file-open nil ',x ',lookup-name)])
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2274 files))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2275 ,@(filesets-get-menu-epilog lookup-name mode
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2276 lookup-name t))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2277 ((:ingroup)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2278 (let* ((master (filesets-entry-get-master entry)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2279 ;;(filesets-message 3 "Filesets: parsing %S" master)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2280 `([,(concat "Inclusion Group: "
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2281 (file-name-nondirectory master))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2282 (filesets-open ',mode ',master ',lookup-name)]
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2283 "---"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2284 [,master (filesets-file-open nil ',master ',lookup-name)]
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2285 "---"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2286 ,@(filesets-wrap-submenu
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2287 (filesets-build-ingroup-submenu lookup-name master))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2288 ,@(filesets-get-menu-epilog master mode lookup-name t))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2289 ((:tree)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2290 (let* ((dirpatt (filesets-entry-get-tree entry))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2291 (dir (car dirpatt))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2292 (patt (cadr dirpatt)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2293 (filesets-build-dir-submenu entry lookup-name dir patt)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2294 ((:files)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2295 (let ((files (filesets-get-filelist entry mode 'on-open-all))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2296 (count 0))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2297 `([,(concat "Files: " lookup-name)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2298 (filesets-open ',mode ',lookup-name)]
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2299 "---"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2300 ,@(filesets-wrap-submenu
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2301 (mapcar
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2302 (lambda (x)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2303 (setq count (+ count 1))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2304 `[,(concat (filesets-get-shortcut count)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2305 (file-name-nondirectory x))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2306 (filesets-file-open nil ',x ',lookup-name)])
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2307 (filesets-conditional-sort
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2308 files
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2309 (function file-name-nondirectory))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2310 ,@(filesets-get-menu-epilog lookup-name mode
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2311 lookup-name t)))))))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2312
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2313 (defun filesets-remove-from-ubl (&optional buffer)
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
2314 "BUFFER or current buffer require update of the filesets menu."
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2315 (let ((b (or buffer
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2316 (current-buffer))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2317 (if (member b filesets-updated-buffers)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2318 (setq filesets-updated-buffers
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2319 (delete b filesets-updated-buffers)))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2320
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2321 (defun filesets-build-menu-now (from-scratch-flag)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2322 "Update the filesets menu.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2323 Build all new if FROM-SCRATCH-FLAG is non-nil. (To really build from the
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2324 bottom up, set `filesets-submenus' to nil, first.)"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2325 (when (or from-scratch-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2326 filesets-has-changed-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2327 (not filesets-menu-cache))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2328 (setq filesets-menu-cache nil)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2329 (setq filesets-has-changed-flag nil)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2330 (setq filesets-updated-buffers nil)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2331 (setq filesets-update-cache-file-flag t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2332 (do ((data (filesets-conditional-sort filesets-data (function car))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2333 (cdr data))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2334 (count 1 (+ count 1)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2335 ((null data))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2336 (let* ((this (car data))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2337 (name (filesets-data-get-name this))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2338 (cached (lax-plist-get filesets-submenus name))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2339 (submenu (or cached
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2340 (filesets-build-submenu count name this))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2341 (unless cached
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2342 (setq filesets-submenus
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2343 (lax-plist-put filesets-submenus name submenu)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2344 (unless (filesets-entry-get-dormant-flag this)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2345 (setq filesets-menu-cache
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2346 (append filesets-menu-cache (list submenu))))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2347 (when filesets-cache-save-often-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2348 (filesets-menu-cache-file-save-maybe)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2349 (let ((cb (current-buffer)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2350 (when (not (member cb filesets-updated-buffers))
61138
37e73f1dcca8 Update copyright.
Glenn Morris <rgm@gnu.org>
parents: 60965
diff changeset
2351 (add-submenu
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2352 filesets-menu-path
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2353 `(,filesets-menu-name
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2354 ("# Filesets"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2355 ["Edit Filesets" filesets-edit]
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2356 ["Save Filesets" filesets-save-config]
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2357 ["Save Menu Cache" filesets-menu-cache-file-save]
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2358 ["Rebuild Menu" filesets-build-menu]
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2359 ["Customize" filesets-customize]
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2360 ["About" filesets-info])
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2361 ,(filesets-get-cmd-menu)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2362 "---"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2363 ,@filesets-menu-cache)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2364 filesets-menu-before
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2365 filesets-menu-in-menu)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2366 (setq filesets-updated-buffers
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2367 (cons cb filesets-updated-buffers))
48862
43b27399e724 (filesets-build-menu-now): Don't clear messages.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 45894
diff changeset
2368 ;; This wipes out other messages in the echo area.
43b27399e724 (filesets-build-menu-now): Don't clear messages.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 45894
diff changeset
2369 ;; (message nil)
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2370 ;;(message "Filesets updated: %s" cb)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2371 )))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2372
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2373 (defun filesets-build-menu-maybe ()
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2374 "Update the filesets menu."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2375 (interactive)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2376 (filesets-build-menu-now nil))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2377
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2378 (defun filesets-build-menu ()
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2379 "Force rebuild of the filesets menu."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2380 (interactive)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2381 ;(setq filesets-submenus nil)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2382 (filesets-reset-fileset)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2383 (filesets-build-menu-now t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2384 (filesets-menu-cache-file-save-maybe))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2385
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2386 (defun filesets-rebuild-this-submenu (fileset)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2387 "Force rebuild of FILESET submenu."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2388 (filesets-reset-fileset fileset)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2389 (filesets-build-menu-now t))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2390
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2391 (defun filesets-menu-cache-file-save-maybe (&optional simply-do-it)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2392 "Write filesets' cache file.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2393 If SIMPLY-DO-IT is non-nil, the cache file will be written no matter if
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2394 fileset thinks this is necessary or not."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2395 (when (and (not (equal filesets-menu-cache-file ""))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2396 (or simply-do-it
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2397 filesets-update-cache-file-flag))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2398 (when (file-exists-p filesets-menu-cache-file)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2399 (delete-file filesets-menu-cache-file))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2400 ;;(message "Filesets: saving menu cache")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2401 (with-temp-buffer
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2402 (dolist (this filesets-menu-cache-contents)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2403 (if (get this 'custom-type)
49475
796b9b8e53c3 (filesets-file-open): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 48862
diff changeset
2404 (progn
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2405 (insert (format "(setq-default %s '%S)" this (eval this)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2406 (when filesets-menu-ensure-use-cached
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2407 (newline)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2408 (insert (format "(setq %s (cons '%s %s))"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2409 'filesets-ignore-next-set-default
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2410 this
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2411 'filesets-ignore-next-set-default))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2412 (insert (format "(setq %s '%S)" this (eval this))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2413 (newline 2))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2414 (insert (format "(setq filesets-cache-version %S)" filesets-version))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2415 (newline 2)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2416 (when filesets-cache-hostname-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2417 (insert (format "(setq filesets-cache-hostname %S)" (system-name)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2418 (newline 2))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2419 (run-hooks 'filesets-cache-fill-content-hooks)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2420 (write-file filesets-menu-cache-file))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2421 (setq filesets-has-changed-flag nil)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2422 (setq filesets-update-cache-file-flag nil)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2423
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2424 (defun filesets-menu-cache-file-save ()
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2425 "Save filesets' menu cache file."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2426 (interactive)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2427 (filesets-menu-cache-file-save-maybe t))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2428
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2429 (defun filesets-update-cleanup ()
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2430 "Rebuild the menu and save the cache file after updating user data."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2431 (interactive)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2432 (message "Filesets v%s: updating menu & cache from version %s"
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2433 filesets-version (or filesets-cache-version "???"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2434 (filesets-build-menu)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2435 (filesets-menu-cache-file-save-maybe)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2436 (filesets-menu-cache-file-load))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2437
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2438 (defun filesets-update-pre010505 ()
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2439 (let ((msg
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2440 "Filesets: manual editing of user data required!
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2441
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2442 Filesets has detected that you were using an older version before,
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2443 which requires some manual updating. Type 'y' for editing the startup
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2444 file now.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2445
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2446 The layout of `filesets-data' has changed. Please delete your cache file
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2447 and edit your startup file as shown below:
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2448
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2449 1. `filesets-data': Edit all :pattern filesets in your startup file and
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2450 transform all entries as shown in this example:
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2451
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2452 \(\"Test\" (:pattern \"~/dir/^pattern$\"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2453 --> \(\"Test\" (:pattern \"~/dir/\" \"^pattern$\"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2454
45894
52a4d501ce21 (filesets-update-pre010505): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 45319
diff changeset
2455 2. `filesets-data': Change all occurrences of \":document\" to \":ingroup\":
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2456
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2457 \(\(\"Test\" \(:document \"~/dir/file\"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2458 --> \(\(\"Test\" \(:ingroup \"~/dir/file\"))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2459
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2460 3. `filesets-subdocument-patterns': If you already modified the variable
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2461 previously called `filesets-subdocument-patterns', change its name to
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2462 `filesets-ingroup-patterns'.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2463
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2464 4. `filesets-menu-cache-contents': If you already modified this
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2465 variable, change the entry `filesets-subdocument--cache' to
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2466 `filesets-ingroup-cache'.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2467
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2468 5. Type M-x filesets-update-cleanup and restart Emacs.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2469
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2470 We apologize for the inconvenience."))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2471 (let* ((cf (or custom-file user-init-file)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2472 (switch-to-buffer-other-frame "*Filesets update*")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2473 (insert msg)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2474 (when (y-or-n-p (format "Edit startup (%s) file now? " cf))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2475 (find-file-other-window cf))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2476 (filesets-error 'error msg))))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2477
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
2478 (defun filesets-update (cached-version)
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2479 "Do some cleanup after updating filesets.el."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2480 (cond
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2481 ((or (not cached-version)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2482 (string< cached-version "1.5.5")
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2483 (boundp 'filesets-subdocument-patterns))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2484 (filesets-update-pre010505)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2485 (filesets-update-cleanup))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2486
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2487 (defun filesets-menu-cache-file-load ()
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2488 "Load filesets' menu cache file."
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2489 (cond
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2490 ((and (not (equal filesets-menu-cache-file ""))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2491 (file-readable-p filesets-menu-cache-file))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2492 (load-file filesets-menu-cache-file)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2493 (if (and (equal filesets-cache-version filesets-version)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2494 (if filesets-cache-hostname-flag
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2495 (equal filesets-cache-hostname (system-name))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2496 t))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2497 (progn
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2498 (setq filesets-update-cache-file-flag nil)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2499 t)
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
2500 (filesets-update filesets-cache-version)))
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2501 (t
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2502 (setq filesets-update-cache-file-flag t)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2503 nil)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2504
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2505 (defun filesets-exit ()
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2506 (filesets-menu-cache-file-save-maybe))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2507
60965
7b5c3ff57835 (filesets-init): Add autoload.
Richard M. Stallman <rms@gnu.org>
parents: 59996
diff changeset
2508 ;;;###autoload
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2509 (defun filesets-init ()
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2510 "Filesets initialization.
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2511 Set up hooks, load the cache file -- if existing -- and build the menu."
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
2512 (add-hook (if (featurep 'xemacs) 'activate-menubar-hook 'menu-bar-update-hook)
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2513 (function filesets-build-menu-maybe))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2514 (add-hook 'kill-buffer-hook (function filesets-remove-from-ubl))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2515 (add-hook 'first-change-hook (function filesets-reset-filename-on-change))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2516 (add-hook 'kill-emacs-hook (function filesets-exit))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2517 (if (filesets-menu-cache-file-load)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2518 (progn
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2519 (filesets-build-menu-maybe)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2520 ;;Well, normally when we use XEmacs <= 21.4, custom.el is loaded
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2521 ;;after init.el. This more or less ignores the next
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2522 ;;`filesets-data-set-default'
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2523 (if filesets-menu-ensure-use-cached
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2524 (setq filesets-menu-use-cached-flag t)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2525 (filesets-build-menu)))
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2526
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2527
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2528 (provide 'filesets)
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2529
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
2530 ;; Local Variables:
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
2531 ;; sentence-end-double-space:t
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
2532 ;; End:
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2533
84660
7d71915e566c Remove spurious * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
2534 ;; arch-tag: 2c03f85f-c3df-4cec-b0a3-b46fd5592d70
44934
ae16f63fe28f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2535 ;;; filesets.el ends here