Mercurial > emacs
annotate lisp/emacs-lisp/lisp-mnt.el @ 110410:f2e111723c3a
Merge changes made in Gnus trunk.
Reimplement nnimap, and do tweaks to the rest of the code to support that.
* gnus-int.el (gnus-finish-retrieve-group-infos)
(gnus-retrieve-group-data-early): New functions.
* gnus-range.el (gnus-range-nconcat): New function.
* gnus-start.el (gnus-get-unread-articles): Support early retrieval of
data.
(gnus-read-active-for-groups): Support finishing the early retrieval of
data.
* gnus-sum.el (gnus-summary-move-article): Pass the move-to group name
if the move is internal, so that nnimap can do fast internal moves.
* gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for
nnimap usage.
* nnimap.el: Rewritten.
* nnmail.el (nnmail-inhibit-default-split-group): New internal variable
to allow the mail splitting to not return a default group. This is
useful for nnimap, which will leave unmatched mail in the inbox.
* utf7.el (utf7-encode): Autoload.
Implement shell connection.
* nnimap.el (nnimap-open-shell-stream): New function.
(nnimap-open-connection): Use it.
Get the number of lines by using BODYSTRUCTURE.
(nnimap-transform-headers): Get the number of lines in each message.
(nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the
number of lines.
Not all servers return UIDNEXT. Work past this problem.
Remove junk from end of file.
Fix typo in "bogus" section.
Make capabilties be case-insensitive.
Require cl when compiling.
Don't bug out if the LIST command doesn't have any parameters.
2010-09-17 Knut Anders Hatlen <kahatlen@gmail.com> (tiny change)
* nnimap.el (nnimap-get-groups): Don't bug out if the LIST command
doesn't have any parameters.
(mm-text-html-renderer): Document gnus-article-html.
2010-09-17 Julien Danjou <julien@danjou.info> (tiny fix)
* mm-decode.el (mm-text-html-renderer): Document gnus-article-html.
* dgnushack.el: Define netrc-credentials.
If the user doesn't have a /etc/services, supply some sensible port defaults.
Have `unseen-or-unread' select an unread unseen article first.
(nntp-open-server): Return whether the open was successful or not.
Throughout all files, replace (save-excursion (set-buffer ...)) with (with-current-buffer ... ).
Save result so that it doesn't say "failed" all the time.
Add ~/.authinfo to the default, since that's probably most useful for users.
Don't use the "finish" method when we're reading from the agent.
Add some more nnimap-relevant agent stuff to nnagent.el.
* nnimap.el (nnimap-with-process-buffer): Removed.
Revert one line that was changed by mistake in the last checkin.
(nnimap-open-connection): Don't error out when we can't make a connection
nnimap-related changes to avoid bugging out if we can't contact a server.
* gnus-start.el (gnus-get-unread-articles): Don't try to scan groups
from methods that are denied.
* nnimap.el (nnimap-possibly-change-group): Return nil if we can't log
in.
(nnimap-finish-retrieve-group-infos): Make sure we're not waiting for
nothing.
* gnus-sum.el (gnus-select-newsgroup): Indent.
author | Katsumi Yamaoka <yamaoka@jpl.org> |
---|---|
date | Sat, 18 Sep 2010 10:02:19 +0000 |
parents | c87f89486bb7 |
children | 417b1e4d63cd |
rev | line source |
---|---|
51155
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
1 ;;; lisp-mnt.el --- utility functions for Emacs Lisp maintainers |
879 | 2 |
64751
5b1a238fcbb4
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64085
diff
changeset
|
3 ;; Copyright (C) 1992, 1994, 1997, 2000, 2001, 2002, 2003, 2004, |
106815 | 4 ;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. |
879 | 5 |
6 ;; Author: Eric S. Raymond <esr@snark.thyrsus.com> | |
34567 | 7 ;; Maintainer: FSF |
879 | 8 ;; Created: 14 Jul 1992 |
9 ;; Keywords: docs | |
5221
50e623c19fff
(Bogus-Bureaucratic-Cruft): Changed to `X-Bogus-Bureaucratic-Cruft'.
Noah Friedman <friedman@splode.com>
parents:
4291
diff
changeset
|
10 ;; X-Bogus-Bureaucratic-Cruft: Gruad will get you if you don't watch out! |
879 | 11 |
12 ;; This file is part of GNU Emacs. | |
13 | |
94655
90a2847062be
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
14 ;; GNU Emacs is free software: you can redistribute it and/or modify |
879 | 15 ;; it under the terms of the GNU General Public License as published by |
94655
90a2847062be
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
16 ;; the Free Software Foundation, either version 3 of the License, or |
90a2847062be
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
17 ;; (at your option) any later version. |
879 | 18 |
19 ;; GNU Emacs is distributed in the hope that it will be useful, | |
20 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
21 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
22 ;; GNU General Public License for more details. | |
23 | |
24 ;; You should have received a copy of the GNU General Public License | |
94655
90a2847062be
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
25 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
879 | 26 |
27 ;;; Commentary: | |
28 | |
51155
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
29 ;; This library adds some services to Emacs-Lisp editing mode. |
879 | 30 ;; |
31 ;; First, it knows about the header conventions for library packages. | |
32 ;; One entry point supports generating synopses from a library directory. | |
33 ;; Another can be used to check for missing headers in library files. | |
49598
0d8b17d428b5
Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
42139
diff
changeset
|
34 ;; |
879 | 35 ;; Another entry point automatically addresses bug mail to a package's |
36 ;; maintainer or author. | |
37 | |
93246
6ac54c43b7ca
(lm-with-file): Use mode and syntax table for Emacs Lisp, not Lisp.
Johan Bockgård <bojohan@gnu.org>
parents:
87649
diff
changeset
|
38 ;; This file can be loaded by your emacs-lisp-mode-hook. Have it |
6ac54c43b7ca
(lm-with-file): Use mode and syntax table for Emacs Lisp, not Lisp.
Johan Bockgård <bojohan@gnu.org>
parents:
87649
diff
changeset
|
39 ;; (require 'lisp-mnt) |
879 | 40 |
41 ;; This file is an example of the header conventions. Note the following | |
42 ;; features: | |
49598
0d8b17d428b5
Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
42139
diff
changeset
|
43 ;; |
879 | 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. | |
49598
0d8b17d428b5
Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
42139
diff
changeset
|
47 ;; |
879 | 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 |
49598
0d8b17d428b5
Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
42139
diff
changeset
|
58 ;; |
879 | 59 ;; * Author line --- contains the name and net address of at least |
60 ;; the principal author. | |
49598
0d8b17d428b5
Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
42139
diff
changeset
|
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: |
49598
0d8b17d428b5
Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
42139
diff
changeset
|
64 ;; |
879 | 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> | |
49598
0d8b17d428b5
Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
42139
diff
changeset
|
72 ;; |
879 | 73 ;; This field may have some special values; notably "FSF", meaning |
74 ;; "Free Software Foundation". | |
49598
0d8b17d428b5
Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
42139
diff
changeset
|
75 ;; |
879 | 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 | |
95627 | 78 ;; line, the person(s) in the Author field are presumed to be it. |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
79 ;; The idea behind these two fields is to be able to write a Lisp function |
879 | 80 ;; that does "send mail to the author" without having to mine the name out by |
51155
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
81 ;; hand. Please be careful about surrounding the network address with <> if |
879 | 82 ;; there's also a name in the field. |
49598
0d8b17d428b5
Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
42139
diff
changeset
|
83 ;; |
879 | 84 ;; * Created line --- optional, gives the original creation date of the |
85 ;; file. For historical interest, basically. | |
49598
0d8b17d428b5
Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
42139
diff
changeset
|
86 ;; |
879 | 87 ;; * 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
|
88 ;; 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
|
89 ;; may be an RCS or SCCS header. |
49598
0d8b17d428b5
Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
42139
diff
changeset
|
90 ;; |
879 | 91 ;; * Adapted-By line --- this is for FSF's internal use. The person named |
92 ;; in this field was the one responsible for installing and adapting the | |
93 ;; package for the distribution. (This file doesn't have one because the | |
94 ;; author *is* one of the maintainers.) | |
49598
0d8b17d428b5
Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
42139
diff
changeset
|
95 ;; |
95627 | 96 ;; * Keywords line --- used by the finder code for finding Emacs |
97 ;; Lisp code related to a topic. | |
879 | 98 ;; |
5221
50e623c19fff
(Bogus-Bureaucratic-Cruft): Changed to `X-Bogus-Bureaucratic-Cruft'.
Noah Friedman <friedman@splode.com>
parents:
4291
diff
changeset
|
99 ;; * 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
|
100 ;; 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
|
101 ;; 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
|
102 ;; without invoking the wrath of any program. |
879 | 103 ;; |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
104 ;; * Commentary line --- enables Lisp code to find the developer's and |
879 | 105 ;; maintainers' explanations of the package internals. |
49598
0d8b17d428b5
Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
42139
diff
changeset
|
106 ;; |
879 | 107 ;; * Change log line --- optional, exists to terminate the commentary |
108 ;; section and start a change-log part, if one exists. | |
49598
0d8b17d428b5
Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
42139
diff
changeset
|
109 ;; |
11035 | 110 ;; * Code line --- exists so Lisp can know where commentary and/or |
879 | 111 ;; change-log sections end. |
49598
0d8b17d428b5
Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
42139
diff
changeset
|
112 ;; |
879 | 113 ;; * Footer line --- marks end-of-file so it can be distinguished from |
114 ;; an expanded formfeed or the results of truncation. | |
115 | |
116 ;;; Change Log: | |
117 | |
118 ;; Tue Jul 14 23:44:17 1992 ESR | |
119 ;; * Created. | |
120 | |
121 ;;; Code: | |
122 | |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
123 ;;; Variables: |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
124 |
21365 | 125 (defgroup lisp-mnt nil |
51155
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
126 "Utility functions for Emacs Lisp maintainers." |
21365 | 127 :prefix "lm-" |
128 :group 'maint) | |
129 | |
42139
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
130 ;; 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
|
131 ;; 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
|
132 |
31656
0090ca919308
(lm-get-header-re): Allow spaces between the header and the colon.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
28376
diff
changeset
|
133 (defcustom lm-header-prefix "^;+[ \t]+\\(@(#)\\)?[ \t]*\\$?" |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
134 "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
|
135 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
|
136 in your Lisp package: |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
137 |
38248
569b72179168
(lm-header-prefix): Doc fix. From Pavel Janik <Pavel@Janik.cz>.
Eli Zaretskii <eliz@gnu.org>
parents:
37182
diff
changeset
|
138 ;; @(#) package.el -- package description |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
139 ;; |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
140 ;; @(#) $Maintainer: Person Foo Bar $ |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
141 |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
142 The @(#) construct is used by unix what(1) and |
21365 | 143 then $identifier: doc string $ is used by GNU ident(1)" |
144 :type 'regexp | |
145 :group 'lisp-mnt) | |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
146 |
42139
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
147 (defcustom lm-copyright-prefix "^\\(;+[ \t]\\)+Copyright (C) " |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
148 "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
|
149 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
|
150 :type 'regexp |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
151 :group 'lisp-mnt) |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
152 |
21365 | 153 (defcustom lm-comment-column 16 |
154 "Column used for placing formatted output." | |
155 :type 'integer | |
156 :group 'lisp-mnt) | |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
157 |
51155
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
158 (defcustom lm-any-header ".*" |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
159 "Regexp which matches start of any section." |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
160 :type 'regexp |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
161 :group 'lisp-mnt) |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
162 |
21365 | 163 (defcustom lm-commentary-header "Commentary\\|Documentation" |
164 "Regexp which matches start of documentation section." | |
165 :type 'regexp | |
166 :group 'lisp-mnt) | |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
167 |
39563
925776635a57
(lm-history-header): Accept `ChangeLog'.
Gerd Moellmann <gerd@gnu.org>
parents:
38248
diff
changeset
|
168 (defcustom lm-history-header "Change ?Log\\|History" |
21365 | 169 "Regexp which matches the start of code log section." |
170 :type 'regexp | |
171 :group 'lisp-mnt) | |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
172 |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
173 ;;; Functions: |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
174 |
879 | 175 ;; These functions all parse the headers of the current buffer |
176 | |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
177 (defun lm-get-header-re (header &optional mode) |
20637 | 178 "Return regexp for matching HEADER. |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
179 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
|
180 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
|
181 (if (eq mode 'section) |
52569
e4693bed89ad
(lm-with-file): Don't visit the file,
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
182 (concat "^;;;;* \\(" header "\\):[ \t]*$") |
e4693bed89ad
(lm-with-file): Don't visit the file,
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
183 (concat lm-header-prefix "\\(" header "\\)[ \t]*:[ \t]*"))) |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
184 |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
185 (defun lm-get-package-name () |
20637 | 186 "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
|
187 (save-excursion |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
188 (goto-char (point-min)) |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
189 (if (and (looking-at (concat lm-header-prefix)) |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
190 (progn (goto-char (match-end 0)) |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
191 (looking-at "\\([^\t ]+\\)") |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
192 (match-end 1))) |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
193 (match-string-no-properties 1)))) |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
194 |
51155
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
195 (defun lm-section-start (header &optional after) |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
196 "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
|
197 The HEADER is the section mark string to search for. |
51155
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
198 If AFTER is non-nil, return the location of the next line. |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
199 If the given section does not exist, return nil." |
879 | 200 (save-excursion |
201 (let ((case-fold-search t)) | |
202 (goto-char (point-min)) | |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
203 (if (re-search-forward (lm-get-header-re header 'section) nil t) |
51155
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
204 (line-beginning-position (if after 2)))))) |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
205 (defalias 'lm-section-mark 'lm-section-start) |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
206 |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
207 (defun lm-section-end (header) |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
208 "Return the buffer location of the end of a given section. |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
209 The HEADER is the section string marking the beginning of the |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
210 section. If the given section does not exist, return nil. |
879 | 211 |
51155
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
212 The end of the section is defined as the beginning of the next |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
213 section of the same level or lower. The function |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
214 `lisp-outline-level' is used to compute the level of a section. |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
215 If no such section exists, return the end of the buffer." |
53488
daa5c6e18f62
(lm-section-end): require outline.
Richard M. Stallman <rms@gnu.org>
parents:
52687
diff
changeset
|
216 (require 'outline) ;; for outline-regexp. |
51155
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
217 (let ((start (lm-section-start header))) |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
218 (when start |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
219 (save-excursion |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
220 (goto-char start) |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
221 (let ((level (lisp-outline-level)) |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
222 (case-fold-search t) |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
223 next-section-found) |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
224 (beginning-of-line 2) |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
225 (while (and (setq next-section-found |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
226 (re-search-forward |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
227 (lm-get-header-re lm-any-header 'section) |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
228 nil t)) |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
229 (> (save-excursion |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
230 (beginning-of-line) |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
231 (lisp-outline-level)) |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
232 level))) |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
233 (if next-section-found |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
234 (line-beginning-position) |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
235 (point-max))))))) |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
236 |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
237 (defsubst lm-code-start () |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
238 "Return the buffer location of the `Code' start marker." |
51155
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
239 (lm-section-start "Code")) |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
240 (defalias 'lm-code-mark 'lm-code-start) |
879 | 241 |
51155
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
242 (defsubst lm-commentary-start () |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
243 "Return the buffer location of the `Commentary' start marker." |
51155
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
244 (lm-section-start lm-commentary-header)) |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
245 (defalias 'lm-commentary-mark 'lm-commentary-start) |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
246 |
51155
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
247 (defsubst lm-commentary-end () |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
248 "Return the buffer location of the `Commentary' section end." |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
249 (lm-section-end lm-commentary-header)) |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
250 |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
251 (defsubst lm-history-start () |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
252 "Return the buffer location of the `History' start marker." |
51155
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
253 (lm-section-start lm-history-header)) |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
254 (defalias 'lm-history-mark 'lm-history-start) |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
255 |
34945
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
256 (defsubst lm-copyright-mark () |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
257 "Return the buffer location of the `Copyright' line." |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
258 (save-excursion |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
259 (let ((case-fold-search t)) |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
260 (goto-char (point-min)) |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
261 (if (re-search-forward lm-copyright-prefix nil t) |
51155
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
262 (point))))) |
34945
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
263 |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
264 (defun lm-header (header) |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
265 "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
|
266 (goto-char (point-min)) |
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
267 (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
|
268 (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
|
269 ;; 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
|
270 (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
|
271 (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
|
272 (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
|
273 (= (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
|
274 "[^\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
|
275 (match-string-no-properties 0)))) |
879 | 276 |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
277 (defun lm-header-multiline (header) |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
278 "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
|
279 The returned value is a list of strings, one per line." |
879 | 280 (save-excursion |
281 (goto-char (point-min)) | |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
282 (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
|
283 (when res |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
284 (setq res (list res)) |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
285 (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
|
286 (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
|
287 (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
|
288 (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
|
289 (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
|
290 (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
|
291 (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
|
292 (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
|
293 (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
|
294 (nreverse res)))) |
879 | 295 |
296 ;; These give us smart access to the header fields and commentary | |
297 | |
26690
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
298 (defmacro lm-with-file (file &rest body) |
52569
e4693bed89ad
(lm-with-file): Don't visit the file,
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
299 "Execute BODY in a buffer containing the contents of FILE. |
52687
fb1ccaa34830
(lm-with-file): When FILE is nil, run BODY in current buffer.
Richard M. Stallman <rms@gnu.org>
parents:
52569
diff
changeset
|
300 If FILE is nil, execute BODY in the current buffer." |
110034
c87f89486bb7
Use `declare' in defmacros.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
107390
diff
changeset
|
301 (declare (indent 1) (debug t)) |
26690
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
302 (let ((filesym (make-symbol "file"))) |
52569
e4693bed89ad
(lm-with-file): Don't visit the file,
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
303 `(let ((,filesym ,file)) |
52687
fb1ccaa34830
(lm-with-file): When FILE is nil, run BODY in current buffer.
Richard M. Stallman <rms@gnu.org>
parents:
52569
diff
changeset
|
304 (if ,filesym |
fb1ccaa34830
(lm-with-file): When FILE is nil, run BODY in current buffer.
Richard M. Stallman <rms@gnu.org>
parents:
52569
diff
changeset
|
305 (with-temp-buffer |
fb1ccaa34830
(lm-with-file): When FILE is nil, run BODY in current buffer.
Richard M. Stallman <rms@gnu.org>
parents:
52569
diff
changeset
|
306 (insert-file-contents ,filesym) |
93246
6ac54c43b7ca
(lm-with-file): Use mode and syntax table for Emacs Lisp, not Lisp.
Johan Bockgård <bojohan@gnu.org>
parents:
87649
diff
changeset
|
307 (emacs-lisp-mode) |
52687
fb1ccaa34830
(lm-with-file): When FILE is nil, run BODY in current buffer.
Richard M. Stallman <rms@gnu.org>
parents:
52569
diff
changeset
|
308 ,@body) |
64751
5b1a238fcbb4
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64085
diff
changeset
|
309 (save-excursion |
59572
3cd31d377b69
(lm-with-file): Use Lisp mode in temp buffer.
Richard M. Stallman <rms@gnu.org>
parents:
54500
diff
changeset
|
310 ;; Switching major modes is too drastic, so just switch |
93246
6ac54c43b7ca
(lm-with-file): Use mode and syntax table for Emacs Lisp, not Lisp.
Johan Bockgård <bojohan@gnu.org>
parents:
87649
diff
changeset
|
311 ;; temporarily to the Emacs Lisp mode syntax table. |
6ac54c43b7ca
(lm-with-file): Use mode and syntax table for Emacs Lisp, not Lisp.
Johan Bockgård <bojohan@gnu.org>
parents:
87649
diff
changeset
|
312 (with-syntax-table emacs-lisp-mode-syntax-table |
59572
3cd31d377b69
(lm-with-file): Use Lisp mode in temp buffer.
Richard M. Stallman <rms@gnu.org>
parents:
54500
diff
changeset
|
313 ,@body)))))) |
3cd31d377b69
(lm-with-file): Use Lisp mode in temp buffer.
Richard M. Stallman <rms@gnu.org>
parents:
54500
diff
changeset
|
314 |
42139
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
315 ;; 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
|
316 ;; 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
|
317 |
34945
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
318 (defun lm-crack-copyright (&optional file) |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
319 "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
|
320 Use the current buffer if FILE is nil. |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
321 Return argument is of the form (\"HOLDER\" \"YEAR1\" ... \"YEARN\")" |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
322 (lm-with-file file |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
323 (goto-char (lm-copyright-mark)) |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
324 (let ((holder nil) |
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
325 (years nil) |
42139
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
326 (start (point)) |
34945
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
327 (end (line-end-position))) |
42139
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
328 ;; 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
|
329 ;; line is indented (with the same commenting style). |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
330 (save-excursion |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
331 (beginning-of-line 2) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
332 (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
|
333 (beginning-of-line) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
334 (while (looking-at str) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
335 (setq end (line-end-position)) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
336 (beginning-of-line 2)))) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
337 ;; Make a single line and parse that. |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
338 (let ((buff (current-buffer))) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
339 (with-temp-buffer |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
340 (insert-buffer-substring buff start end) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
341 (goto-char (point-min)) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
342 (while (re-search-forward "^;+[ \t]+" nil t) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
343 (replace-match "")) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
344 (goto-char (point-min)) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
345 (while (re-search-forward " *\n" nil t) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
346 (replace-match " ")) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
347 (goto-char (point-min)) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
348 (while (re-search-forward "\\([0-9]+\\),? +" nil t) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
349 (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
|
350 (if (looking-at ".*$") |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
351 (setq holder (match-string-no-properties 0))))) |
5258f3b81740
(lm-copyright-prefix): Group the leader.
Dave Love <fx@gnu.org>
parents:
41918
diff
changeset
|
352 (cons holder (nreverse years))))) |
34945
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
353 |
879 | 354 (defun lm-summary (&optional file) |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
355 "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
|
356 (lm-with-file file |
879 | 357 (goto-char (point-min)) |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
358 (if (and (looking-at lm-header-prefix) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
359 (progn (goto-char (match-end 0)) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
360 (looking-at "[^ ]+[ \t]+--+[ \t]+\\(.*\\)"))) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
361 (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
|
362 ;; Strip off -*- specifications. |
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
363 (if (string-match "[ \t]*-\\*-.*-\\*-" summary) |
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
364 (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
|
365 summary))))) |
879 | 366 |
2352
8c8fe9da1f5e
(lm-last-modified-date) Fixed return bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
879
diff
changeset
|
367 (defun lm-crack-address (x) |
20637 | 368 "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
|
369 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
|
370 (cond ((string-match "\\(.+\\) [(<]\\(\\S-+@\\S-+\\)[>)]" x) |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
371 (cons (match-string 1 x) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
372 (match-string 2 x))) |
2352
8c8fe9da1f5e
(lm-last-modified-date) Fixed return bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
879
diff
changeset
|
373 ((string-match "\\(\\S-+@\\S-+\\) [(<]\\(.*\\)[>)]" x) |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
374 (cons (match-string 2 x) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
375 (match-string 1 x))) |
2352
8c8fe9da1f5e
(lm-last-modified-date) Fixed return bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
879
diff
changeset
|
376 ((string-match "\\S-+@\\S-+" x) |
8c8fe9da1f5e
(lm-last-modified-date) Fixed return bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
879
diff
changeset
|
377 (cons nil x)) |
8c8fe9da1f5e
(lm-last-modified-date) Fixed return bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
879
diff
changeset
|
378 (t |
8c8fe9da1f5e
(lm-last-modified-date) Fixed return bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
879
diff
changeset
|
379 (cons x nil)))) |
8c8fe9da1f5e
(lm-last-modified-date) Fixed return bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
879
diff
changeset
|
380 |
879 | 381 (defun lm-authors (&optional file) |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
382 "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
|
383 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
|
384 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
|
385 (lm-with-file file |
2352
8c8fe9da1f5e
(lm-last-modified-date) Fixed return bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
879
diff
changeset
|
386 (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
|
387 (mapcar 'lm-crack-address authorlist)))) |
879 | 388 |
389 (defun lm-maintainer (&optional file) | |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
390 "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
|
391 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
|
392 (lm-with-file file |
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
393 (let ((maint (lm-header "maintainer"))) |
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
394 (if maint |
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
395 (lm-crack-address maint) |
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
396 (car (lm-authors)))))) |
879 | 397 |
398 (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
|
399 "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
|
400 (lm-with-file file |
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
401 (lm-header "created"))) |
879 | 402 |
28376
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
403 (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
|
404 "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
|
405 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
|
406 (lm-with-file file |
28376
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
407 (when (progn (goto-char (point-min)) |
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
408 (re-search-forward |
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
409 "\\$[I]d: [^ ]+ [^ ]+ \\([^/]+\\)/\\([^/]+\\)/\\([^ ]+\\) " |
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
410 (lm-code-mark) t)) |
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
411 (let ((dd (match-string 3)) |
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
412 (mm (match-string 2)) |
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
413 (yyyy (match-string 1))) |
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
414 (if iso-date |
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
415 (format "%s-%s-%s" yyyy mm dd) |
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
416 (format "%s %s %s" |
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
417 dd |
62402
a7e02ef1e3d6
Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents:
59572
diff
changeset
|
418 (nth (string-to-number mm) |
28376
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
419 '("" "Jan" "Feb" "Mar" "Apr" "May" "Jun" |
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
420 "Jul" "Aug" "Sep" "Oct" "Nov" "Dec")) |
38b2af227738
(lm-last-modified-date): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
27786
diff
changeset
|
421 yyyy)))))) |
879 | 422 |
423 (defun lm-version (&optional file) | |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
424 "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
|
425 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
|
426 (lm-with-file file |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
427 (or (lm-header "version") |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
428 (let ((header-max (lm-code-mark))) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
429 (goto-char (point-min)) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
430 (cond |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
431 ;; Look for an RCS header |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
432 ((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
|
433 (match-string-no-properties 1)) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
434 ((re-search-forward "\\$Revision: +\\([^ ]+\\) " header-max t) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
435 (match-string-no-properties 1)) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
436 ;; Look for an SCCS header |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
437 ((re-search-forward |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
438 (concat |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
439 (regexp-quote "@(#)") |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
440 (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
|
441 "\t\\([012345679.]*\\)") |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
442 header-max t) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
443 (match-string-no-properties 1))))))) |
879 | 444 |
445 (defun lm-keywords (&optional file) | |
106066
4b7353091b4a
* emacs-lisp/lisp-mnt.el (lm-keywords): Allow multi-line keywords.
Kevin Ryde <user42@zip.com.au>
parents:
105372
diff
changeset
|
446 "Return the keywords given in file FILE, or current buffer if FILE is nil. |
4b7353091b4a
* emacs-lisp/lisp-mnt.el (lm-keywords): Allow multi-line keywords.
Kevin Ryde <user42@zip.com.au>
parents:
105372
diff
changeset
|
447 The return is a `downcase'-ed string, or nil if no keywords |
4b7353091b4a
* emacs-lisp/lisp-mnt.el (lm-keywords): Allow multi-line keywords.
Kevin Ryde <user42@zip.com.au>
parents:
105372
diff
changeset
|
448 header. Multi-line keywords are joined up with a space between |
4b7353091b4a
* emacs-lisp/lisp-mnt.el (lm-keywords): Allow multi-line keywords.
Kevin Ryde <user42@zip.com.au>
parents:
105372
diff
changeset
|
449 each line." |
26690
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
450 (lm-with-file file |
106066
4b7353091b4a
* emacs-lisp/lisp-mnt.el (lm-keywords): Allow multi-line keywords.
Kevin Ryde <user42@zip.com.au>
parents:
105372
diff
changeset
|
451 (let ((keywords (lm-header-multiline "keywords"))) |
4b7353091b4a
* emacs-lisp/lisp-mnt.el (lm-keywords): Allow multi-line keywords.
Kevin Ryde <user42@zip.com.au>
parents:
105372
diff
changeset
|
452 (and keywords |
4b7353091b4a
* emacs-lisp/lisp-mnt.el (lm-keywords): Allow multi-line keywords.
Kevin Ryde <user42@zip.com.au>
parents:
105372
diff
changeset
|
453 (mapconcat 'downcase keywords " "))))) |
879 | 454 |
37182
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
455 (defun lm-keywords-list (&optional file) |
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
456 "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
|
457 (let ((keywords (lm-keywords file))) |
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
458 (if keywords |
107390 | 459 (if (string-match-p "," keywords) |
460 (split-string keywords ",[ \t\n]*" t) | |
461 (split-string keywords "[ \t\n]+" t))))) | |
37182
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
462 |
54500
7a30ab50eb0b
(lm-keywords-finder-p): Use defvar rather than with-no-warnings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
53864
diff
changeset
|
463 (defvar finder-known-keywords) |
37182
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
464 (defun lm-keywords-finder-p (&optional file) |
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
465 "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
|
466 (require 'finder) |
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
467 (let ((keys (lm-keywords-list file))) |
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
468 (catch 'keyword-found |
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
469 (while keys |
54500
7a30ab50eb0b
(lm-keywords-finder-p): Use defvar rather than with-no-warnings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
53864
diff
changeset
|
470 (if (assoc (intern (car keys)) finder-known-keywords) |
37182
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
471 (throw 'keyword-found t)) |
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
472 (setq keys (cdr keys))) |
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
473 nil))) |
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
474 |
879 | 475 (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
|
476 "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
|
477 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
|
478 distribution." |
26690
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
479 (lm-with-file file |
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
480 (lm-header "adapted-by"))) |
879 | 481 |
2528
df68ddbcc2f1
(lm-commentary-region): Gone.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2352
diff
changeset
|
482 (defun lm-commentary (&optional file) |
14512
e7206013c310
Change defconst into defvar. Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
14505
diff
changeset
|
483 "Return the commentary in file FILE, or current buffer if FILE is nil. |
51155
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
484 Return the value as a string. In the file, the commentary |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
485 section starts with the tag `Commentary' or `Documentation' and |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
486 ends just before the next section. If the commentary section is |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
487 absent, return nil." |
26690
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
488 (lm-with-file file |
51155
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
489 (let ((start (lm-commentary-start))) |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
490 (when start |
c10e341483da
Make the description of the library more
Lute Kamstra <lute@gnu.org>
parents:
49598
diff
changeset
|
491 (buffer-substring-no-properties start (lm-commentary-end)))))) |
879 | 492 |
493 ;;; Verification and synopses | |
494 | |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
495 (defun lm-insert-at-column (col &rest strings) |
20637 | 496 "Insert, at column COL, list of STRINGS." |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
497 (if (> (current-column) col) (insert "\n")) |
20127 | 498 (move-to-column col t) |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
499 (apply 'insert strings)) |
879 | 500 |
41917
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
501 (defun lm-verify (&optional file showok verbose non-fsf-ok) |
879 | 502 "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
|
503 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
|
504 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
|
505 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
|
506 |
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
507 Optional argument VERBOSE specifies verbosity level. |
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
508 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
|
509 copyright notice is allowed." |
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
510 (interactive (list nil nil t)) |
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
511 (let* ((ret (and verbose "Ok")) |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
512 name) |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
513 (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
|
514 (setq ret |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
515 (with-temp-buffer |
87208
87e24ce4f26a
(lm-verify): Make it work with
David Kastrup <dak@gnu.org>
parents:
87170
diff
changeset
|
516 (dolist (f (directory-files file nil "\\.el\\'") |
87e24ce4f26a
(lm-verify): Make it work with
David Kastrup <dak@gnu.org>
parents:
87170
diff
changeset
|
517 (buffer-string)) |
87e24ce4f26a
(lm-verify): Make it work with
David Kastrup <dak@gnu.org>
parents:
87170
diff
changeset
|
518 (when (file-regular-p f) |
87e24ce4f26a
(lm-verify): Make it work with
David Kastrup <dak@gnu.org>
parents:
87170
diff
changeset
|
519 (let ((status (lm-verify f))) |
87e24ce4f26a
(lm-verify): Make it work with
David Kastrup <dak@gnu.org>
parents:
87170
diff
changeset
|
520 (insert f ":") |
87e24ce4f26a
(lm-verify): Make it work with
David Kastrup <dak@gnu.org>
parents:
87170
diff
changeset
|
521 (if status |
87e24ce4f26a
(lm-verify): Make it work with
David Kastrup <dak@gnu.org>
parents:
87170
diff
changeset
|
522 (lm-insert-at-column lm-comment-column status |
87e24ce4f26a
(lm-verify): Make it work with
David Kastrup <dak@gnu.org>
parents:
87170
diff
changeset
|
523 "\n") |
87e24ce4f26a
(lm-verify): Make it work with
David Kastrup <dak@gnu.org>
parents:
87170
diff
changeset
|
524 (if showok |
87e24ce4f26a
(lm-verify): Make it work with
David Kastrup <dak@gnu.org>
parents:
87170
diff
changeset
|
525 (lm-insert-at-column lm-comment-column |
87e24ce4f26a
(lm-verify): Make it work with
David Kastrup <dak@gnu.org>
parents:
87170
diff
changeset
|
526 "OK\n")))))))) |
26690
1006a8324029
(lm-header-multiline): fix spurious use of `cond'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24219
diff
changeset
|
527 (lm-with-file file |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
528 (setq name (lm-get-package-name)) |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
529 (setq ret |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
530 (cond |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
531 ((null name) |
53864
8589159e3bd8
(lm-verify): Remove useless use of
Andreas Schwab <schwab@suse.de>
parents:
53488
diff
changeset
|
532 "Can't find package name") |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
533 ((not (lm-authors)) |
41917
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
534 "`Author:' tag missing") |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
535 ((not (lm-maintainer)) |
41917
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
536 "`Maintainer:' tag missing") |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
537 ((not (lm-summary)) |
41917
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
538 "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
|
539 ((not (lm-keywords)) |
41917
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
540 "`Keywords:' tag missing") |
37182
c29d2430fdd9
(lm-keywords-list, lm-keywords-finder-p):
Gerd Moellmann <gerd@gnu.org>
parents:
34945
diff
changeset
|
541 ((not (lm-keywords-finder-p)) |
41917
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
542 "`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
|
543 ((not (lm-commentary-mark)) |
41917
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
544 "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
|
545 ((not (lm-history-mark)) |
41917
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
546 "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
|
547 ((not (lm-code-mark)) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
548 "Can't find a 'Code' section marker") |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
549 ((progn |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
550 (goto-char (point-max)) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
551 (not |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
552 (re-search-backward |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
553 (concat "^;;;[ \t]+" name "[ \t]+ends here[ \t]*$" |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
554 "\\|^;;;[ \t]+ End of file[ \t]+" name) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
555 nil t))) |
53864
8589159e3bd8
(lm-verify): Remove useless use of
Andreas Schwab <schwab@suse.de>
parents:
53488
diff
changeset
|
556 "Can't find the footer line") |
34945
99252c8e0152
(lm-copyright-prefix): New Variable.
Gerd Moellmann <gerd@gnu.org>
parents:
34567
diff
changeset
|
557 ((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
|
558 "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
|
559 ((not (or non-fsf-ok |
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
560 (string-match "Free Software Foundation" |
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
561 (car (lm-crack-copyright))))) |
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
562 "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
|
563 (t |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
564 ret))))) |
41917
67cd4c7204bc
(lm-verify): New arg NON-FSF-OK.
Richard M. Stallman <rms@gnu.org>
parents:
39563
diff
changeset
|
565 (if verbose |
87170
e50a2e215441
* erc-stamp.el (erc-echo-timestamp):
David Kastrup <dak@gnu.org>
parents:
78217
diff
changeset
|
566 (message "%s" ret)) |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
567 ret)) |
879 | 568 |
569 (defun lm-synopsis (&optional file showall) | |
570 "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
|
571 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
|
572 a temporary buffer. If SHOWALL is non-nil, also generate a line for files |
879 | 573 which do not include a recognizable synopsis." |
14501
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
574 (interactive |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
575 (list |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
576 (read-file-name "Synopsis for (file or dir): "))) |
6ac4623cdc87
(lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
14492
diff
changeset
|
577 |
879 | 578 (if (and file (file-directory-p file)) |
51395
ef9e066bc6f2
(lm-synopsis): Use relative filenames correctly. Show the synopsis to
Lute Kamstra <lute@gnu.org>
parents:
51155
diff
changeset
|
579 (with-output-to-temp-buffer "*Synopsis*" |
ef9e066bc6f2
(lm-synopsis): Use relative filenames correctly. Show the synopsis to
Lute Kamstra <lute@gnu.org>
parents:
51155
diff
changeset
|
580 (set-buffer standard-output) |
ef9e066bc6f2
(lm-synopsis): Use relative filenames correctly. Show the synopsis to
Lute Kamstra <lute@gnu.org>
parents:
51155
diff
changeset
|
581 (dolist (f (directory-files file nil ".*\\.el\\'")) |
ef9e066bc6f2
(lm-synopsis): Use relative filenames correctly. Show the synopsis to
Lute Kamstra <lute@gnu.org>
parents:
51155
diff
changeset
|
582 (let ((syn (lm-synopsis (expand-file-name f file)))) |
ef9e066bc6f2
(lm-synopsis): Use relative filenames correctly. Show the synopsis to
Lute Kamstra <lute@gnu.org>
parents:
51155
diff
changeset
|
583 (when (or syn showall) |
ef9e066bc6f2
(lm-synopsis): Use relative filenames correctly. Show the synopsis to
Lute Kamstra <lute@gnu.org>
parents:
51155
diff
changeset
|
584 (insert f ":") |
ef9e066bc6f2
(lm-synopsis): Use relative filenames correctly. Show the synopsis to
Lute Kamstra <lute@gnu.org>
parents:
51155
diff
changeset
|
585 (lm-insert-at-column lm-comment-column (or syn "NA") "\n"))))) |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
586 (save-excursion |
51395
ef9e066bc6f2
(lm-synopsis): Use relative filenames correctly. Show the synopsis to
Lute Kamstra <lute@gnu.org>
parents:
51155
diff
changeset
|
587 (let ((must-kill (and file (not (get-file-buffer file))))) |
ef9e066bc6f2
(lm-synopsis): Use relative filenames correctly. Show the synopsis to
Lute Kamstra <lute@gnu.org>
parents:
51155
diff
changeset
|
588 (when file (find-file file)) |
ef9e066bc6f2
(lm-synopsis): Use relative filenames correctly. Show the synopsis to
Lute Kamstra <lute@gnu.org>
parents:
51155
diff
changeset
|
589 (prog1 |
105372
bd2966850aac
Use `called-interactively-p' instead of `interactive-p'.
Juanma Barranquero <lekktu@gmail.com>
parents:
100908
diff
changeset
|
590 (if (called-interactively-p 'interactive) |
51395
ef9e066bc6f2
(lm-synopsis): Use relative filenames correctly. Show the synopsis to
Lute Kamstra <lute@gnu.org>
parents:
51155
diff
changeset
|
591 (message "%s" (lm-summary)) |
ef9e066bc6f2
(lm-synopsis): Use relative filenames correctly. Show the synopsis to
Lute Kamstra <lute@gnu.org>
parents:
51155
diff
changeset
|
592 (lm-summary)) |
ef9e066bc6f2
(lm-synopsis): Use relative filenames correctly. Show the synopsis to
Lute Kamstra <lute@gnu.org>
parents:
51155
diff
changeset
|
593 (when must-kill (kill-buffer (current-buffer)))))))) |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
594 |
95627 | 595 (defvar report-emacs-bug-address) |
879 | 596 |
597 (defun lm-report-bug (topic) | |
598 "Report a bug in the package currently being visited to its maintainer. | |
20637 | 599 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
|
600 (interactive "sBug Subject: ") |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
601 (require 'emacsbug) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
602 (let ((package (lm-get-package-name)) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
603 (addr (lm-maintainer)) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
604 (version (lm-version))) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
605 (compose-mail (if addr |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
606 (concat (car addr) " <" (cdr addr) ">") |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
607 report-emacs-bug-address) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
608 topic) |
879 | 609 (goto-char (point-max)) |
27786
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
610 (insert "\nIn " package) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
611 (if version |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
612 (insert " version " version)) |
2d57dfc8a2a4
Don't require emacsbug at top level.
Dave Love <fx@gnu.org>
parents:
26690
diff
changeset
|
613 (newline 2) |
65590
c45ae2a74f0f
message format spec fixes, commit # 9
Deepak Goel <deego@gnufans.org>
parents:
64751
diff
changeset
|
614 (message "%s" |
879 | 615 (substitute-command-keys "Type \\[mail-send] to send bug report.")))) |
616 | |
617 (provide 'lisp-mnt) | |
618 | |
93975
1e3a407766b9
Fix up comment convention on the arch-tag lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93246
diff
changeset
|
619 ;; arch-tag: fa3c5ab4-a37b-4e46-b7cf-b6d78b90e69e |
879 | 620 ;;; lisp-mnt.el ends here |