annotate lisp/filesets.el @ 49612:407d6516031a

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