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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
879
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1 ;;; lisp-mnt.el --- minor mode for Emacs Lisp maintainers
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
4
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
5 ;; Author: Eric S. Raymond <esr@snark.thyrsus.com>
34567
d04b3e51c5f3 Change maintainer to FSF.
Gerd Moellmann <gerd@gnu.org>
parents: 31656
diff changeset
6 ;; Maintainer: FSF
879
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
7 ;; Created: 14 Jul 1992
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
10
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
11 ;; This file is part of GNU Emacs.
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
12
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
13 ;; GNU Emacs is free software; you can redistribute it and/or modify
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
14 ;; it under the terms of the GNU General Public License as published by
12244
ac7375e60931 Update GPL to version 2.
Karl Heuer <kwzh@gnu.org>
parents: 11035
diff changeset
15 ;; the Free Software Foundation; either version 2, or (at your option)
879
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
16 ;; any later version.
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
17
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
18 ;; GNU Emacs is distributed in the hope that it will be useful,
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
21 ;; GNU General Public License for more details.
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
22
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
fd6e27938b72 Fix the FSF address again.
Erik Naggum <erik@naggum.no>
parents: 14501
diff changeset
25 ;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
fd6e27938b72 Fix the FSF address again.
Erik Naggum <erik@naggum.no>
parents: 14501
diff changeset
26 ;; Boston, MA 02111-1307, USA.
879
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
27
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
28 ;;; Commentary:
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
29
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
30 ;; This minor mode adds some services to Emacs-Lisp editing mode.
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
31 ;;
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
32 ;; First, it knows about the header conventions for library packages.
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
33 ;; One entry point supports generating synopses from a library directory.
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
34 ;; Another can be used to check for missing headers in library files.
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
35 ;;
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
36 ;; Another entry point automatically addresses bug mail to a package's
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
37 ;; maintainer or author.
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
38
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
39 ;; This file can be loaded by your lisp-mode-hook. Have it (require 'lisp-mnt)
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
40
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
41 ;; This file is an example of the header conventions. Note the following
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
42 ;; features:
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
43 ;;
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
44 ;; * Header line --- makes it possible to extract a one-line summary of
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
45 ;; the package's uses automatically for use in library synopses, KWIC
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
46 ;; indexes and the like.
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
47 ;;
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
48 ;; Format is three semicolons, followed by the filename, followed by
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
58 ;;
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
59 ;; * Author line --- contains the name and net address of at least
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
60 ;; the principal author.
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
63 ;; lines led by ;;<TAB>, like this:
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
64 ;;
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
65 ;; ;; Author: Ashwin Ram <Ram-Ashwin@cs.yale.edu>
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
66 ;; ;; Dave Sill <de5@ornl.gov>
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
67 ;; ;; David Lawrence <tale@pawl.rpi.edu>
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
68 ;; ;; Noah Friedman <friedman@ai.mit.edu>
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
69 ;; ;; Joe Wells <jbw@maverick.uswest.com>
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
70 ;; ;; Dave Brennan <brennan@hal.com>
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
71 ;; ;; Eric Raymond <esr@snark.thyrsus.com>
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
72 ;;
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
73 ;; This field may have some special values; notably "FSF", meaning
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
74 ;; "Free Software Foundation".
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
75 ;;
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
76 ;; * Maintainer line --- should be a single name/address as in the Author
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
77 ;; line, or an address only, or the string "FSF". If there is no maintainer
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
78 ;; line, the person(s) in the Author field are presumed to be it. The example
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
81 ;; that does "send mail to the author" without having to mine the name out by
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
82 ;; hand. Please be careful about surrounding the network address with <> if
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
83 ;; there's also a name in the field.
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
84 ;;
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
85 ;; * Created line --- optional, gives the original creation date of the
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
86 ;; file. For historical interest, basically.
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
87 ;;
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
91 ;;
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
92 ;; * Adapted-By line --- this is for FSF's internal use. The person named
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
93 ;; in this field was the one responsible for installing and adapting the
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
94 ;; package for the distribution. (This file doesn't have one because the
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
95 ;; author *is* one of the maintainers.)
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
96 ;;
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
97 ;; * Keywords line --- used by the finder code (now under construction)
11035
97da4cb32d03 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 7940
diff changeset
98 ;; for finding Emacs Lisp code related to a topic.
879
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
106 ;; maintainers' explanations of the package internals.
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
107 ;;
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
108 ;; * Change log line --- optional, exists to terminate the commentary
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
109 ;; section and start a change-log part, if one exists.
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
110 ;;
11035
97da4cb32d03 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 7940
diff changeset
111 ;; * Code line --- exists so Lisp can know where commentary and/or
879
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
112 ;; change-log sections end.
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
113 ;;
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
114 ;; * Footer line --- marks end-of-file so it can be distinguished from
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
115 ;; an expanded formfeed or the results of truncation.
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
116
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
117 ;;; Change Log:
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
118
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
119 ;; Tue Jul 14 23:44:17 1992 ESR
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
120 ;; * Created.
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
121
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
122 ;;; Code:
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
db005054f15d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20637
diff changeset
126 (defgroup lisp-mnt nil
db005054f15d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20637
diff changeset
127 "Minor mode for Emacs Lisp maintainers."
db005054f15d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20637
diff changeset
128 :prefix "lm-"
db005054f15d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20637
diff changeset
129 :group 'maint)
db005054f15d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20637
diff changeset
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
db005054f15d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20637
diff changeset
144 then $identifier: doc string $ is used by GNU ident(1)"
db005054f15d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20637
diff changeset
145 :type 'regexp
db005054f15d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20637
diff changeset
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
db005054f15d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20637
diff changeset
154 (defcustom lm-comment-column 16
db005054f15d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20637
diff changeset
155 "Column used for placing formatted output."
db005054f15d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20637
diff changeset
156 :type 'integer
db005054f15d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20637
diff changeset
157 :group 'lisp-mnt)
14501
6ac4623cdc87 (lm-header-prefix): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14492
diff changeset
158
21365
db005054f15d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20637
diff changeset
159 (defcustom lm-commentary-header "Commentary\\|Documentation"
db005054f15d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20637
diff changeset
160 "Regexp which matches start of documentation section."
db005054f15d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20637
diff changeset
161 :type 'regexp
db005054f15d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20637
diff changeset
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
db005054f15d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20637
diff changeset
165 "Regexp which matches the start of code log section."
db005054f15d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20637
diff changeset
166 :type 'regexp
db005054f15d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 20637
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
171 ;; These functions all parse the headers of the current buffer
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
8a5bdbbc1d6a (lm-get-package-name, lm-header,
Dave Love <fx@gnu.org>
parents: 20127
diff changeset
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
8a5bdbbc1d6a (lm-get-package-name, lm-header,
Dave Love <fx@gnu.org>
parents: 20127
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
195 (save-excursion
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
196 (let ((case-fold-search t))
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
199 (progn
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
206 (lm-section-mark "Code"))
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
241 (save-excursion
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
256
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
257 ;; These give us smart access to the header fields and commentary
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
8a5bdbbc1d6a (lm-get-package-name, lm-header,
Dave Love <fx@gnu.org>
parents: 20127
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
345
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
354
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
379
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
401
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
0bb9e5990c22 (lm-verify): Fix arg list.
Dave Love <fx@gnu.org>
parents: 23813
diff changeset
434 The value is returned as a string. In the file, the commentary starts
0bb9e5990c22 (lm-verify): Fix arg list.
Dave Love <fx@gnu.org>
parents: 23813
diff changeset
435 with the tag `Commentary' or `Documentation' and ends with one of the
0bb9e5990c22 (lm-verify): Fix arg list.
Dave Love <fx@gnu.org>
parents: 23813
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
446
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
447 ;;; Verification and synopses
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
8a5bdbbc1d6a (lm-get-package-name, lm-header,
Dave Love <fx@gnu.org>
parents: 20127
diff changeset
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
75c24766a23a picture.el no longer required.
Karl Heuer <kwzh@gnu.org>
parents: 18401
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
52fa3aece6f3 Tweak previous change.
Richard M. Stallman <rms@gnu.org>
parents: 41917
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
523
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
524 (defun lm-synopsis (&optional file showall)
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
556
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
557 (defun lm-report-bug (topic)
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
558 "Report a bug in the package currently being visited to its maintainer.
20637
8a5bdbbc1d6a (lm-get-package-name, lm-header,
Dave Love <fx@gnu.org>
parents: 20127
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
575 (substitute-command-keys "Type \\[mail-send] to send bug report."))))
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
576
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
577 (provide 'lisp-mnt)
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
578
6dc5b7273a07 entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
579 ;;; lisp-mnt.el ends here