Mercurial > emacs
annotate lisp/emacs-lisp/lisp-mnt.el @ 42829:07bd6e693cb6
(easy-mmode-defmap): Enable "Up Stack", "Down Stack", and
"Finish Function" menu map entries for jdb mode.
(gud-jdb-use-classpath): New customization variable.
(gud-jdb-command-name): Add customization.
(gud-jdb-classpath, gud-marker-acc-max-length): New variables.
(gud-jdb-classpath-string): New variable.
(gud-jdb-source-files, gud-jdb-class-source-alist): Add doc strings.
(gud-jdb-build-source-files-list): Likewise.
(gud-jdb-massage-args): Record any command argument classpath
string in `gud-jdb-classpath-string'.
(gud-jdb-lowest-stack-level): New function, finds bottom of current
java call stack in jdb output.
(gud-jdb-find-source-using-classpath, gud-jdb-find-source)
(gud-jdb-parse-classpath-string): New functions.
(gud-jdb-marker-filter): Search/detect classpath information in
jdb's output. marker regexp updated to match oldjdb and jdb output
formats. Expand search for source files to include new/old methods
using new functions above. Do not allow `gud-marker-acc' to grow
without bound.
(jdb): Set classpath information (if available) as jdb is started.
Change `gud-break' and `gud-remove'
to use new %c ("class") escape in format strings. Add
`gud-finish', `gud-up', `gud-down' command string functions, and
add them to the local menu map. Update `comint-prompt-regexp' for
jdb and oldjdb. If attaching to an already running java VM and
configured to use classpath, send command to query for classpath,
else use previous method for finding and parsing java
sources. Set `gud-jdb-find-source' function accordingly.
(gud-mode): Doc fix.
(gud-format-command): Add support for new %c ("class") escape.
(gud-find-class): New function in support of %c escape.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Fri, 18 Jan 2002 18:57:20 +0000 |
parents | 5258f3b81740 |
children | 0d8b17d428b5 |
rev | line source |
---|---|
879 | 1 ;;; lisp-mnt.el --- minor mode for Emacs Lisp maintainers |
2 | |
34945
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
3 ;; Copyright (C) 1992, 1994, 1997, 2000, 2001 Free Software Foundation, Inc. |
879 | 4 |
5 ;; Author: Eric S. Raymond <esr@snark.thyrsus.com> | |
34567 | 6 ;; Maintainer: FSF |
879 | 7 ;; Created: 14 Jul 1992 |
8 ;; Keywords: docs | |
5221
50e623c19fff
(Bogus-Bureaucratic-Cruft): Changed to `X-Bogus-Bureaucratic-Cruft'.
Noah Friedman <friedman@splode.com>
parents:
4291
diff
changeset
|
9 ;; X-Bogus-Bureaucratic-Cruft: Gruad will get you if you don't watch out! |
879 | 10 |
11 ;; This file is part of GNU Emacs. | |
12 | |
13 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
14 ;; it under the terms of the GNU General Public License as published by | |
12244 | 15 ;; the Free Software Foundation; either version 2, or (at your option) |
879 | 16 ;; any later version. |
17 | |
18 ;; GNU Emacs is distributed in the hope that it will be useful, | |
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
21 ;; GNU General Public License for more details. | |
22 | |
23 ;; You should have received a copy of the GNU General Public License | |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
24 ;; along with GNU Emacs; see the file COPYING. If not, write to |
14505 | 25 ;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
26 ;; Boston, MA 02111-1307, USA. | |
879 | 27 |
28 ;;; Commentary: | |
29 | |
30 ;; This minor mode adds some services to Emacs-Lisp editing mode. | |
31 ;; | |
32 ;; First, it knows about the header conventions for library packages. | |
33 ;; One entry point supports generating synopses from a library directory. | |
34 ;; Another can be used to check for missing headers in library files. | |
35 ;; | |
36 ;; Another entry point automatically addresses bug mail to a package's | |
37 ;; maintainer or author. | |
38 | |
39 ;; This file can be loaded by your lisp-mode-hook. Have it (require 'lisp-mnt) | |
40 | |
41 ;; This file is an example of the header conventions. Note the following | |
42 ;; features: | |
43 ;; | |
44 ;; * Header line --- makes it possible to extract a one-line summary of | |
45 ;; the package's uses automatically for use in library synopses, KWIC | |
46 ;; indexes and the like. | |
47 ;; | |
48 ;; Format is three semicolons, followed by the filename, followed by | |
49 ;; three dashes, followed by the summary. All fields space-separated. | |
41917
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
50 ;; |
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
51 ;; * A blank line |
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
52 ;; |
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
53 ;; * Copyright line, which looks more or less like this: |
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
54 ;; |
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
55 ;; ;; Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. |
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
56 ;; |
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
57 ;; * A blank line |
879 | 58 ;; |
59 ;; * Author line --- contains the name and net address of at least | |
60 ;; the principal author. | |
61 ;; | |
2352
8c8fe9da1f5e
(lm-last-modified-date) Fixed return bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
879
diff
changeset
|
62 ;; If there are multiple authors, they should be listed on continuation |
879 | 63 ;; lines led by ;;<TAB>, like this: |
64 ;; | |
65 ;; ;; Author: Ashwin Ram <Ram-Ashwin@cs.yale.edu> | |
66 ;; ;; Dave Sill <de5@ornl.gov> | |
67 ;; ;; David Lawrence <tale@pawl.rpi.edu> | |
68 ;; ;; Noah Friedman <friedman@ai.mit.edu> | |
69 ;; ;; Joe Wells <jbw@maverick.uswest.com> | |
70 ;; ;; Dave Brennan <brennan@hal.com> | |
71 ;; ;; Eric Raymond <esr@snark.thyrsus.com> | |
72 ;; | |
73 ;; This field may have some special values; notably "FSF", meaning | |
74 ;; "Free Software Foundation". | |
75 ;; | |
76 ;; * Maintainer line --- should be a single name/address as in the Author | |
77 ;; line, or an address only, or the string "FSF". If there is no maintainer | |
78 ;; line, the person(s) in the Author field are presumed to be it. The example | |
79 ;; in this file is mildly bogus because the maintainer line is redundant. | |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
80 ;; The idea behind these two fields is to be able to write a Lisp function |
879 | 81 ;; that does "send mail to the author" without having to mine the name out by |
82 ;; hand. Please be careful about surrounding the network address with <> if | |
83 ;; there's also a name in the field. | |
84 ;; | |
85 ;; * Created line --- optional, gives the original creation date of the | |
86 ;; file. For historical interest, basically. | |
87 ;; | |
88 ;; * Version line --- intended to give the reader a clue if they're looking | |
2352
8c8fe9da1f5e
(lm-last-modified-date) Fixed return bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
879
diff
changeset
|
89 ;; at a different version of the file than the one they're accustomed to. This |
8c8fe9da1f5e
(lm-last-modified-date) Fixed return bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
879
diff
changeset
|
90 ;; may be an RCS or SCCS header. |
879 | 91 ;; |
92 ;; * Adapted-By line --- this is for FSF's internal use. The person named | |
93 ;; in this field was the one responsible for installing and adapting the | |
94 ;; package for the distribution. (This file doesn't have one because the | |
95 ;; author *is* one of the maintainers.) | |
96 ;; | |
97 ;; * Keywords line --- used by the finder code (now under construction) | |
11035 | 98 ;; for finding Emacs Lisp code related to a topic. |
879 | 99 ;; |
5221
50e623c19fff
(Bogus-Bureaucratic-Cruft): Changed to `X-Bogus-Bureaucratic-Cruft'.
Noah Friedman <friedman@splode.com>
parents:
4291
diff
changeset
|
100 ;; * X-Bogus-Bureaucratic-Cruft line --- this is a joke and an example |
50e623c19fff
(Bogus-Bureaucratic-Cruft): Changed to `X-Bogus-Bureaucratic-Cruft'.
Noah Friedman <friedman@splode.com>
parents:
4291
diff
changeset
|
101 ;; of a comment header. Headers starting with `X-' should never be used |
50e623c19fff
(Bogus-Bureaucratic-Cruft): Changed to `X-Bogus-Bureaucratic-Cruft'.
Noah Friedman <friedman@splode.com>
parents:
4291
diff
changeset
|
102 ;; for any real purpose; this is the way to safely add random headers |
50e623c19fff
(Bogus-Bureaucratic-Cruft): Changed to `X-Bogus-Bureaucratic-Cruft'.
Noah Friedman <friedman@splode.com>
parents:
4291
diff
changeset
|
103 ;; without invoking the wrath of any program. |
879 | 104 ;; |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
105 ;; * Commentary line --- enables Lisp code to find the developer's and |
879 | 106 ;; maintainers' explanations of the package internals. |
107 ;; | |
108 ;; * Change log line --- optional, exists to terminate the commentary | |
109 ;; section and start a change-log part, if one exists. | |
110 ;; | |
11035 | 111 ;; * Code line --- exists so Lisp can know where commentary and/or |
879 | 112 ;; change-log sections end. |
113 ;; | |
114 ;; * Footer line --- marks end-of-file so it can be distinguished from | |
115 ;; an expanded formfeed or the results of truncation. | |
116 | |
117 ;;; Change Log: | |
118 | |
119 ;; Tue Jul 14 23:44:17 1992 ESR | |
120 ;; * Created. | |
121 | |
122 ;;; Code: | |
123 | |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
124 ;;; Variables: |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
125 |
21365 | 126 (defgroup lisp-mnt nil |
127 "Minor mode for Emacs Lisp maintainers." | |
128 :prefix "lm-" | |
129 :group 'maint) | |
130 | |
42139
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
131 ;; At least some of these defcustoms should probably be defconsts, |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
132 ;; since they define, or are defined by, the header format. -- fx |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
133 |
31656
0090ca919308
(lm-get-header-re): Allow spaces between the header and the colon.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28376
diff
changeset
|
134 (defcustom lm-header-prefix "^;+[ \t]+\\(@(#)\\)?[ \t]*\\$?" |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
135 "Prefix that is ignored before the tag. |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
136 For example, you can write the 1st line synopsis string and headers like this |
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
137 in your Lisp package: |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
138 |
38248
569b72179168
(lm-header-prefix): Doc fix. From Pavel Janik <Pavel@Janik.cz>.
Eli Zaretskii <eliz@gnu.org>
parents:
37182
diff
changeset
|
139 ;; @(#) package.el -- package description |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
140 ;; |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
141 ;; @(#) $Maintainer: Person Foo Bar $ |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
142 |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
143 The @(#) construct is used by unix what(1) and |
21365 | 144 then $identifier: doc string $ is used by GNU ident(1)" |
145 :type 'regexp | |
146 :group 'lisp-mnt) | |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
147 |
42139
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
148 (defcustom lm-copyright-prefix "^\\(;+[ \t]\\)+Copyright (C) " |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
149 "Prefix that is ignored before the dates in a copyright. |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
150 Leading comment characters and whitespace should be in regexp group 1." |
34945
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
151 :type 'regexp |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
152 :group 'lisp-mnt) |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
153 |
21365 | 154 (defcustom lm-comment-column 16 |
155 "Column used for placing formatted output." | |
156 :type 'integer | |
157 :group 'lisp-mnt) | |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
158 |
21365 | 159 (defcustom lm-commentary-header "Commentary\\|Documentation" |
160 "Regexp which matches start of documentation section." | |
161 :type 'regexp | |
162 :group 'lisp-mnt) | |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
163 |
39563
925776635a57
(lm-history-header): Accept `ChangeLog'.
Gerd Moellmann <gerd@gnu.org>
parents:
38248
diff
changeset
|
164 (defcustom lm-history-header "Change ?Log\\|History" |
21365 | 165 "Regexp which matches the start of code log section." |
166 :type 'regexp | |
167 :group 'lisp-mnt) | |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
168 |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
169 ;;; Functions: |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
170 |
879 | 171 ;; These functions all parse the headers of the current buffer |
172 | |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
173 (defun lm-get-header-re (header &optional mode) |
20637 | 174 "Return regexp for matching HEADER. |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
175 If called with optional MODE and with value `section', |
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
176 return section regexp instead." |
31656
0090ca919308
(lm-get-header-re): Allow spaces between the header and the colon.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28376
diff
changeset
|
177 (if (eq mode 'section) |
0090ca919308
(lm-get-header-re): Allow spaces between the header and the colon.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28376
diff
changeset
|
178 (concat "^;;;;* " header ":[ \t]*$") |
0090ca919308
(lm-get-header-re): Allow spaces between the header and the colon.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28376
diff
changeset
|
179 (concat lm-header-prefix header "[ \t]*:[ \t]*"))) |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
180 |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
181 (defun lm-get-package-name () |
20637 | 182 "Return package name by looking at the first line." |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
183 (save-excursion |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
184 (goto-char (point-min)) |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
185 (if (and (looking-at (concat lm-header-prefix)) |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
186 (progn (goto-char (match-end 0)) |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
187 (looking-at "\\([^\t ]+\\)") |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
188 (match-end 1))) |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
189 (match-string-no-properties 1)))) |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
190 |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
191 (defun lm-section-mark (header &optional after) |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
192 "Return the buffer location of a given section start marker. |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
193 The HEADER is the section mark string to search for. |
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
194 If AFTER is non-nil, return the location of the next line." |
879 | 195 (save-excursion |
196 (let ((case-fold-search t)) | |
197 (goto-char (point-min)) | |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
198 (if (re-search-forward (lm-get-header-re header 'section) nil t) |
879 | 199 (progn |
200 (beginning-of-line) | |
2528
df68ddbcc2f1
(lm-commentary-region): Gone.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2352
diff
changeset
|
201 (if after (forward-line 1)) |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
202 (point)))))) |
879 | 203 |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
204 (defsubst lm-code-mark () |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
205 "Return the buffer location of the `Code' start marker." |
879 | 206 (lm-section-mark "Code")) |
207 | |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
208 (defsubst lm-commentary-mark () |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
209 "Return the buffer location of the `Commentary' start marker." |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
210 (lm-section-mark lm-commentary-header)) |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
211 |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
212 (defsubst lm-history-mark () |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
213 "Return the buffer location of the `History' start marker." |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
214 (lm-section-mark lm-history-header)) |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
215 |
34945
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
216 (defsubst lm-copyright-mark () |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
217 "Return the buffer location of the `Copyright' line." |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
218 (save-excursion |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
219 (let ((case-fold-search t)) |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
220 (goto-char (point-min)) |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
221 (if (re-search-forward lm-copyright-prefix nil t) |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
222 (point)))) |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
223 ) |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
224 |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
225 (defun lm-header (header) |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
226 "Return the contents of the header named HEADER." |
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
227 (goto-char (point-min)) |
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
228 (let ((case-fold-search t)) |
31656
0090ca919308
(lm-get-header-re): Allow spaces between the header and the colon.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28376
diff
changeset
|
229 (when (and (re-search-forward (lm-get-header-re header) (lm-code-mark) t) |
0090ca919308
(lm-get-header-re): Allow spaces between the header and the colon.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28376
diff
changeset
|
230 ;; RCS ident likes format "$identifier: data$" |
0090ca919308
(lm-get-header-re): Allow spaces between the header and the colon.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28376
diff
changeset
|
231 (looking-at |
0090ca919308
(lm-get-header-re): Allow spaces between the header and the colon.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28376
diff
changeset
|
232 (if (save-excursion |
0090ca919308
(lm-get-header-re): Allow spaces between the header and the colon.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28376
diff
changeset
|
233 (skip-chars-backward "^$" (match-beginning 0)) |
0090ca919308
(lm-get-header-re): Allow spaces between the header and the colon.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28376
diff
changeset
|
234 (= (point) (match-beginning 0))) |
0090ca919308
(lm-get-header-re): Allow spaces between the header and the colon.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28376
diff
changeset
|
235 "[^\n]+" "[^$\n]+"))) |
0090ca919308
(lm-get-header-re): Allow spaces between the header and the colon.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28376
diff
changeset
|
236 (match-string-no-properties 0)))) |
879 | 237 |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
238 (defun lm-header-multiline (header) |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
239 "Return the contents of the header named HEADER, with continuation lines. |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
240 The returned value is a list of strings, one per line." |
879 | 241 (save-excursion |
242 (goto-char (point-min)) | |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
243 (let ((res (lm-header header))) |
26690
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
244 (when res |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
245 (setq res (list res)) |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
246 (forward-line 1) |
31656
0090ca919308
(lm-get-header-re): Allow spaces between the header and the colon.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28376
diff
changeset
|
247 (while (and (or (looking-at (concat lm-header-prefix "[\t ]+")) |
0090ca919308
(lm-get-header-re): Allow spaces between the header and the colon.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28376
diff
changeset
|
248 (and (not (looking-at |
0090ca919308
(lm-get-header-re): Allow spaces between the header and the colon.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28376
diff
changeset
|
249 (lm-get-header-re "\\sw\\(\\sw\\|\\s_\\)*"))) |
0090ca919308
(lm-get-header-re): Allow spaces between the header and the colon.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28376
diff
changeset
|
250 (looking-at lm-header-prefix))) |
0090ca919308
(lm-get-header-re): Allow spaces between the header and the colon.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28376
diff
changeset
|
251 (goto-char (match-end 0)) |
0090ca919308
(lm-get-header-re): Allow spaces between the header and the colon.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28376
diff
changeset
|
252 (looking-at ".+")) |
0090ca919308
(lm-get-header-re): Allow spaces between the header and the colon.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28376
diff
changeset
|
253 (setq res (cons (match-string-no-properties 0) res)) |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
254 (forward-line 1))) |
31656
0090ca919308
(lm-get-header-re): Allow spaces between the header and the colon.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28376
diff
changeset
|
255 (nreverse res)))) |
879 | 256 |
257 ;; These give us smart access to the header fields and commentary | |
258 | |
26690
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
259 (defmacro lm-with-file (file &rest body) |
34945
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
260 "Make a buffer with FILE current, and execute BODY. |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
261 If FILE isn't in a buffer, load it in, and kill it after BODY is executed." |
26690
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
262 (let ((filesym (make-symbol "file"))) |
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
263 `(save-excursion |
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
264 (let ((,filesym ,file)) |
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
265 (if ,filesym (set-buffer (find-file-noselect ,filesym))) |
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
266 (prog1 (progn ,@body) |
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
267 (if (and ,filesym (not (get-buffer-window (current-buffer) t))) |
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
268 (kill-buffer (current-buffer)))))))) |
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
269 (put 'lm-with-file 'lisp-indent-function 1) |
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
270 (put 'lm-with-file 'edebug-form-spec t) |
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
271 |
42139
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
272 ;; Fixme: Probably this should be amalgamated with copyright.el; also |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
273 ;; we need a check for ranges in copyright years. |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
274 |
34945
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
275 (defun lm-crack-copyright (&optional file) |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
276 "Return the copyright holder, and a list of copyright years. |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
277 Use the current buffer if FILE is nil. |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
278 Return argument is of the form (\"HOLDER\" \"YEAR1\" ... \"YEARN\")" |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
279 (lm-with-file file |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
280 (goto-char (lm-copyright-mark)) |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
281 (let ((holder nil) |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
282 (years nil) |
42139
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
283 (start (point)) |
34945
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
284 (end (line-end-position))) |
42139
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
285 ;; Cope with multi-line copyright `lines'. Assume the second |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
286 ;; line is indented (with the same commenting style). |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
287 (save-excursion |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
288 (beginning-of-line 2) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
289 (let ((str (concat (match-string-no-properties 1) "[ \t]+"))) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
290 (beginning-of-line) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
291 (while (looking-at str) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
292 (setq end (line-end-position)) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
293 (beginning-of-line 2)))) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
294 ;; Make a single line and parse that. |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
295 (let ((buff (current-buffer))) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
296 (with-temp-buffer |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
297 (insert-buffer-substring buff start end) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
298 (goto-char (point-min)) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
299 (while (re-search-forward "^;+[ \t]+" nil t) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
300 (replace-match "")) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
301 (goto-char (point-min)) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
302 (while (re-search-forward " *\n" nil t) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
303 (replace-match " ")) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
304 (goto-char (point-min)) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
305 (while (re-search-forward "\\([0-9]+\\),? +" nil t) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
306 (setq years (cons (match-string-no-properties 1) years))) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
307 (if (looking-at ".*$") |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
308 (setq holder (match-string-no-properties 0))))) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
309 (cons holder (nreverse years))))) |
34945
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
310 |
879 | 311 (defun lm-summary (&optional file) |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
312 "Return the one-line summary of file FILE, or current buffer if FILE is nil." |
26690
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
313 (lm-with-file file |
879 | 314 (goto-char (point-min)) |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
315 (if (and (looking-at lm-header-prefix) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
316 (progn (goto-char (match-end 0)) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
317 (looking-at "[^ ]+[ \t]+--+[ \t]+\\(.*\\)"))) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
318 (let ((summary (match-string-no-properties 1))) |
26690
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
319 ;; Strip off -*- specifications. |
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
320 (if (string-match "[ \t]*-\\*-.*-\\*-" summary) |
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
321 (substring summary 0 (match-beginning 0)) |
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
322 summary))))) |
879 | 323 |
2352
8c8fe9da1f5e
(lm-last-modified-date) Fixed return bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
879
diff
changeset
|
324 (defun lm-crack-address (x) |
20637 | 325 "Split up an email address X into full name and real email address. |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
326 The value is a cons of the form (FULLNAME . ADDRESS)." |
2352
8c8fe9da1f5e
(lm-last-modified-date) Fixed return bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
879
diff
changeset
|
327 (cond ((string-match "\\(.+\\) [(<]\\(\\S-+@\\S-+\\)[>)]" x) |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
328 (cons (match-string 1 x) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
329 (match-string 2 x))) |
2352
8c8fe9da1f5e
(lm-last-modified-date) Fixed return bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
879
diff
changeset
|
330 ((string-match "\\(\\S-+@\\S-+\\) [(<]\\(.*\\)[>)]" x) |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
331 (cons (match-string 2 x) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
332 (match-string 1 x))) |
2352
8c8fe9da1f5e
(lm-last-modified-date) Fixed return bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
879
diff
changeset
|
333 ((string-match "\\S-+@\\S-+" x) |
8c8fe9da1f5e
(lm-last-modified-date) Fixed return bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
879
diff
changeset
|
334 (cons nil x)) |
8c8fe9da1f5e
(lm-last-modified-date) Fixed return bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
879
diff
changeset
|
335 (t |
8c8fe9da1f5e
(lm-last-modified-date) Fixed return bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
879
diff
changeset
|
336 (cons x nil)))) |
8c8fe9da1f5e
(lm-last-modified-date) Fixed return bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
879
diff
changeset
|
337 |
879 | 338 (defun lm-authors (&optional file) |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
339 "Return the author list of file FILE, or current buffer if FILE is nil. |
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
340 Each element of the list is a cons; the car is the full name, |
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
341 the cdr is an email address." |
26690
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
342 (lm-with-file file |
2352
8c8fe9da1f5e
(lm-last-modified-date) Fixed return bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
879
diff
changeset
|
343 (let ((authorlist (lm-header-multiline "author"))) |
26690
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
344 (mapcar 'lm-crack-address authorlist)))) |
879 | 345 |
346 (defun lm-maintainer (&optional file) | |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
347 "Return the maintainer of file FILE, or current buffer if FILE is nil. |
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
348 The return value has the form (NAME . ADDRESS)." |
26690
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
349 (lm-with-file file |
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
350 (let ((maint (lm-header "maintainer"))) |
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
351 (if maint |
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
352 (lm-crack-address maint) |
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
353 (car (lm-authors)))))) |
879 | 354 |
355 (defun lm-creation-date (&optional file) | |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
356 "Return the created date given in file FILE, or current buffer if FILE is nil." |
26690
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
357 (lm-with-file file |
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
358 (lm-header "created"))) |
879 | 359 |
28376
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
360 (defun lm-last-modified-date (&optional file iso-date) |
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
361 "Return the modify-date given in file FILE, or current buffer if FILE is nil. |
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
362 ISO-DATE non-nil means return the date in ISO 8601 format." |
26690
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
363 (lm-with-file file |
28376
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
364 (when (progn (goto-char (point-min)) |
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
365 (re-search-forward |
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
366 "\\$[I]d: [^ ]+ [^ ]+ \\([^/]+\\)/\\([^/]+\\)/\\([^ ]+\\) " |
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
367 (lm-code-mark) t)) |
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
368 (let ((dd (match-string 3)) |
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
369 (mm (match-string 2)) |
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
370 (yyyy (match-string 1))) |
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
371 (if iso-date |
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
372 (format "%s-%s-%s" yyyy mm dd) |
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
373 (format "%s %s %s" |
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
374 dd |
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
375 (nth (string-to-int mm) |
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
376 '("" "Jan" "Feb" "Mar" "Apr" "May" "Jun" |
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
377 "Jul" "Aug" "Sep" "Oct" "Nov" "Dec")) |
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
378 yyyy)))))) |
879 | 379 |
380 (defun lm-version (&optional file) | |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
381 "Return the version listed in file FILE, or current buffer if FILE is nil. |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
382 This can be found in an RCS or SCCS header." |
26690
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
383 (lm-with-file file |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
384 (or (lm-header "version") |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
385 (let ((header-max (lm-code-mark))) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
386 (goto-char (point-min)) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
387 (cond |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
388 ;; Look for an RCS header |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
389 ((re-search-forward "\\$[I]d: [^ ]+ \\([^ ]+\\) " header-max t) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
390 (match-string-no-properties 1)) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
391 ((re-search-forward "\\$Revision: +\\([^ ]+\\) " header-max t) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
392 (match-string-no-properties 1)) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
393 ;; Look for an SCCS header |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
394 ((re-search-forward |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
395 (concat |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
396 (regexp-quote "@(#)") |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
397 (regexp-quote (file-name-nondirectory (buffer-file-name))) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
398 "\t\\([012345679.]*\\)") |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
399 header-max t) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
400 (match-string-no-properties 1))))))) |
879 | 401 |
402 (defun lm-keywords (&optional file) | |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
403 "Return the keywords given in file FILE, or current buffer if FILE is nil." |
26690
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
404 (lm-with-file file |
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
405 (let ((keywords (lm-header "keywords"))) |
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
406 (and keywords (downcase keywords))))) |
879 | 407 |
37182
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
408 (defun lm-keywords-list (&optional file) |
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
409 "Return list of keywords given in file FILE." |
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
410 (let ((keywords (lm-keywords file))) |
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
411 (if keywords |
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
412 (split-string keywords ",?[ \t]")))) |
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
413 |
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
414 (defun lm-keywords-finder-p (&optional file) |
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
415 "Return non-nil if any keywords in FILE are known to finder." |
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
416 (require 'finder) |
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
417 (let ((keys (lm-keywords-list file))) |
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
418 (catch 'keyword-found |
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
419 (while keys |
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
420 (if (assoc (intern (car keys)) finder-known-keywords) |
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
421 (throw 'keyword-found t)) |
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
422 (setq keys (cdr keys))) |
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
423 nil))) |
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
424 |
879 | 425 (defun lm-adapted-by (&optional file) |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
426 "Return the adapted-by names in file FILE, or current buffer if FILE is nil. |
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
427 This is the name of the person who cleaned up this package for |
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
428 distribution." |
26690
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
429 (lm-with-file file |
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
430 (lm-header "adapted-by"))) |
879 | 431 |
2528
df68ddbcc2f1
(lm-commentary-region): Gone.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2352
diff
changeset
|
432 (defun lm-commentary (&optional file) |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
433 "Return the commentary in file FILE, or current buffer if FILE is nil. |
24219 | 434 The value is returned as a string. In the file, the commentary starts |
435 with the tag `Commentary' or `Documentation' and ends with one of the | |
436 tags `Code', `Change Log' or `History'." | |
26690
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
437 (lm-with-file file |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
438 (let ((commentary (lm-commentary-mark)) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
439 (change-log (lm-history-mark)) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
440 (code (lm-code-mark))) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
441 (cond |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
442 ((and commentary change-log) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
443 (buffer-substring-no-properties commentary change-log)) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
444 ((and commentary code) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
445 (buffer-substring-no-properties commentary code)))))) |
879 | 446 |
447 ;;; Verification and synopses | |
448 | |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
449 (defun lm-insert-at-column (col &rest strings) |
20637 | 450 "Insert, at column COL, list of STRINGS." |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
451 (if (> (current-column) col) (insert "\n")) |
20127 | 452 (move-to-column col t) |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
453 (apply 'insert strings)) |
879 | 454 |
41917
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
455 (defun lm-verify (&optional file showok verbose non-fsf-ok) |
879 | 456 "Check that the current buffer (or FILE if given) is in proper format. |
34945
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
457 If FILE is a directory, recurse on its files and generate a report in a |
41917
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
458 temporary buffer. In that case, the optional argument SHOWOK |
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
459 says display \"OK\" in temp buffer for files that have no problems. |
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
460 |
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
461 Optional argument VERBOSE specifies verbosity level. |
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
462 Optional argument NON-FSF-OK if non-nil means a non-FSF |
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
463 copyright notice is allowed." |
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
464 (interactive (list nil nil t)) |
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
465 (let* ((ret (and verbose "Ok")) |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
466 name) |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
467 (if (and file (file-directory-p file)) |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
468 (setq ret |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
469 (with-temp-buffer |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
470 (mapcar |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
471 (lambda (f) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
472 (if (string-match ".*\\.el\\'" f) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
473 (let ((status (lm-verify f))) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
474 (insert f ":") |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
475 (if status |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
476 (lm-insert-at-column lm-comment-column status |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
477 "\n") |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
478 (if showok |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
479 (lm-insert-at-column lm-comment-column |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
480 "OK\n")))))) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
481 (directory-files file)))) |
26690
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
482 (lm-with-file file |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
483 (setq name (lm-get-package-name)) |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
484 (setq ret |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
485 (cond |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
486 ((null name) |
41917
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
487 (format "Package %s does not exist")) |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
488 ((not (lm-authors)) |
41917
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
489 "`Author:' tag missing") |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
490 ((not (lm-maintainer)) |
41917
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
491 "`Maintainer:' tag missing") |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
492 ((not (lm-summary)) |
41917
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
493 "Can't find the one-line summary description") |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
494 ((not (lm-keywords)) |
41917
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
495 "`Keywords:' tag missing") |
37182
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
496 ((not (lm-keywords-finder-p)) |
41917
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
497 "`Keywords:' has no valid finder keywords (see `finder-known-keywords')") |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
498 ((not (lm-commentary-mark)) |
41917
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
499 "Can't find a 'Commentary' section marker") |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
500 ((not (lm-history-mark)) |
41917
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
501 "Can't find a 'History' section marker") |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
502 ((not (lm-code-mark)) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
503 "Can't find a 'Code' section marker") |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
504 ((progn |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
505 (goto-char (point-max)) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
506 (not |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
507 (re-search-backward |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
508 (concat "^;;;[ \t]+" name "[ \t]+ends here[ \t]*$" |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
509 "\\|^;;;[ \t]+ End of file[ \t]+" name) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
510 nil t))) |
41918 | 511 (format "Can't find the footer line")) |
34945
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
512 ((not (and (lm-copyright-mark) (lm-crack-copyright))) |
41917
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
513 "Can't find a valid copyright notice") |
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
514 ((not (or non-fsf-ok |
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
515 (string-match "Free Software Foundation" |
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
516 (car (lm-crack-copyright))))) |
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
517 "Copyright holder is not the Free Software Foundation") |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
518 (t |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
519 ret))))) |
41917
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
520 (if verbose |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
521 (message ret)) |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
522 ret)) |
879 | 523 |
524 (defun lm-synopsis (&optional file showall) | |
525 "Generate a synopsis listing for the buffer or the given FILE if given. | |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
526 If FILE is a directory, recurse on its files and generate a report in |
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
527 a temporary buffer. If SHOWALL is non-nil, also generate a line for files |
879 | 528 which do not include a recognizable synopsis." |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
529 (interactive |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
530 (list |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
531 (read-file-name "Synopsis for (file or dir): "))) |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
532 |
879 | 533 (if (and file (file-directory-p file)) |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
534 (with-temp-buffer |
879 | 535 (mapcar |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
536 (lambda (f) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
537 (if (string-match "\\.el\\'" f) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
538 (let ((syn (lm-synopsis f))) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
539 (if syn |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
540 (progn |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
541 (insert f ":") |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
542 (lm-insert-at-column lm-comment-column syn "\n")) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
543 (when showall |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
544 (insert f ":") |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
545 (lm-insert-at-column lm-comment-column "NA\n")))))) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
546 (directory-files file))) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
547 (save-excursion |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
548 (if file |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
549 (find-file file)) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
550 (prog1 |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
551 (lm-summary) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
552 (if file |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
553 (kill-buffer (current-buffer))))))) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
554 |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
555 (eval-when-compile (defvar report-emacs-bug-address)) |
879 | 556 |
557 (defun lm-report-bug (topic) | |
558 "Report a bug in the package currently being visited to its maintainer. | |
20637 | 559 Prompts for bug subject TOPIC. Leaves you in a mail buffer." |
2352
8c8fe9da1f5e
(lm-last-modified-date) Fixed return bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
879
diff
changeset
|
560 (interactive "sBug Subject: ") |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
561 (require 'emacsbug) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
562 (let ((package (lm-get-package-name)) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
563 (addr (lm-maintainer)) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
564 (version (lm-version))) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
565 (compose-mail (if addr |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
566 (concat (car addr) " <" (cdr addr) ">") |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
567 report-emacs-bug-address) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
568 topic) |
879 | 569 (goto-char (point-max)) |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
570 (insert "\nIn " package) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
571 (if version |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
572 (insert " version " version)) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
573 (newline 2) |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
574 (message |
879 | 575 (substitute-command-keys "Type \\[mail-send] to send bug report.")))) |
576 | |
577 (provide 'lisp-mnt) | |
578 | |
579 ;;; lisp-mnt.el ends here |