authors.el 55.3 KB
Newer Older
1
;;; authors.el --- utility for maintaining Emacs's AUTHORS file -*-coding: utf-8 -*-
Gerd Moellmann's avatar
Gerd Moellmann committed
2

3
;; Copyright (C) 2000-2014 Free Software Foundation, Inc.
Gerd Moellmann's avatar
Gerd Moellmann committed
4

5
;; Author: Gerd Moellmann <gerd@gnu.org>
6
;; Maintainer: Kim F. Storm <storm@cua.dk>
7
;; Keywords: maint
8
;; Package: emacs
9

Gerd Moellmann's avatar
Gerd Moellmann committed
10 11
;; This file is part of GNU Emacs.

12
;; GNU Emacs is free software: you can redistribute it and/or modify
Gerd Moellmann's avatar
Gerd Moellmann committed
13
;; it under the terms of the GNU General Public License as published by
14 15
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
Gerd Moellmann's avatar
Gerd Moellmann committed
16 17 18 19 20 21 22

;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
23
;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
Gerd Moellmann's avatar
Gerd Moellmann committed
24 25 26 27

;;; Commentary:

;; Use M-x authors RET to create an *Authors* buffer that can used as
28
;; or merged with Emacs's AUTHORS file.
Gerd Moellmann's avatar
Gerd Moellmann committed
29 30 31

;;; Code:

32
(defvar authors-coding-system 'utf-8
33 34
  "Coding system used in the AUTHORS file.")

Gerd Moellmann's avatar
Gerd Moellmann committed
35 36
(defconst authors-many-files 20
  "Maximum number of files for which to print individual information.
37 38 39
If an author has modified more files, only the names of the most
frequently modified files are printed and a count of the additional
files.")
Gerd Moellmann's avatar
Gerd Moellmann committed
40 41

(defconst authors-aliases
42
  '(
43
    ("Aaron S. Hawley" "Aaron Hawley")
Glenn Morris's avatar
Glenn Morris committed
44
    ("Alexandru Harsanyi" "Alex Harsanyi")
45
    ("Andrew Csillag" "Drew Csillag")
46
    ("Anna M. Bigatti" "Anna Bigatti")
47 48
    ("Barry A. Warsaw" "Barry A. Warsaw, Century Computing, Inc."
     "Barry A. Warsaw, ITB" "Barry Warsaw")
Glenn Morris's avatar
Glenn Morris committed
49
    ("Bill Carpenter" "WJ Carpenter")
50 51
    ("Bill Mann" "William F. Mann")
    ("Bill Rozas" "Guillermo J. Rozas")
52
    ("Björn Torkelsson" "Bjorn Torkelsson")
53
    ("Brian Fox" "Brian J. Fox")
Glenn Morris's avatar
Glenn Morris committed
54
    ("Brian P Templeton" "BT Templeton")
Glenn Morris's avatar
Glenn Morris committed
55 56
    ("Brian Sniffen" "Brian T. Sniffen")
    ("David Abrahams" "Dave Abrahams")
57
    ("David J. Biesack" "David Biesack")
58
    ("David De La Harpe Golden" "David Golden")
59
    ("David Gillespie" "Dave Gillespie")
60
    ("David Kågedal" "David K..edal")
61
    ("David M. Koppelman" "David Koppelman")
62
    ("David M. Smith" "David Smith" "David M Smith")
63
    ("David O'Toole" "David T. O'Toole")
64
    ("Deepak Goel" "D. Goel")
65
    ("Ed L. Cashin" "Ed L Cashin")
66
    ("Edward M. Reingold" "Ed\\(ward\\( M\\)?\\)? Reingold" "Reingold Edward M")
Kim F. Storm's avatar
Kim F. Storm committed
67
    ("Emilio C. Lopes" "Emilio Lopes")
68 69
    ("Eric M. Ludlam" "Eric Ludlam")
    ("Eric S. Raymond" "Eric Raymond")
70
    ("Fabián Ezequiel Gallina" "Fabian Ezequiel Gallina" "Fabi.n E\\. Gallina")
71
    ("Francis J. Wright" "Dr Francis J. Wright" "Francis Wright")
72 73
    ("François Pinard" "Francois Pinard")
    ("Francesco Potortì" "Francesco Potorti" "Francesco Potorti`")
74
    ("Frederic Pierresteguy" "Fred Pierresteguy")
75
    ("Gerd Möllmann" "Gerd Moellmann")
76
    ("Hallvard B. Furuseth" "Hallvard B Furuseth" "Hallvard Furuseth")
77
    ("Hrvoje Nikšić" "Hrvoje Niksic")
Glenn Morris's avatar
Glenn Morris committed
78 79
    ;; lisp/org/ChangeLog 2010-11-11.
    (nil "aaa bbb")
80
    (nil "Code Extracted") ; lisp/newcomment.el's "Author:" header
81
    ("Jaeyoun Chung" "Jae-youn Chung" "Jae-you Chung" "Chung Jae-youn")
82
    ("Jan Djärv" "Jan D." "Jan Djarv")
83
    ("Jay K. Adams" "Jay Adams")
84
    ("Jérôme Marant" "Jérôme Marant" "Jerome Marant")
85
    ("Jens-Ulrik Holger Petersen" "Jens-Ulrik Petersen")
86
    ("Jeremy Bertram Maitin-Shepard" "Jeremy Maitin-Shepard")
87
    ("Johan Bockgård" "Johan Bockgard")
Glenn Morris's avatar
Glenn Morris committed
88
    ("John J Foerch" "John Foerch")
Kim F. Storm's avatar
Kim F. Storm committed
89
    ("John W. Eaton" "John Eaton")
90
    ("Jonathan I. Kamens" "Jonathan Kamens")
Glenn Morris's avatar
Glenn Morris committed
91
    ("Jorgen Schäfer" "Jorgen Schaefer")
92
    ("Joseph Arceneaux" "Joe Arceneaux")
93
    ("Joseph M. Kelsey" "Joe Kelsey")	; FIXME ?
94
    ("Juan León Lahoz García" "Juan-Leon Lahoz Garcia")
95
    ("Jürgen Hötzel" "Juergen Hoetzel")
96
    ("K. Shane Hartman" "Shane Hartman")
97
    ("Kai Großjohann" "Kai Grossjohann")
98
    ("Karl Berry" "K. Berry")
99
    ("Károly Lőrentey" "Károly Lőrentey" "Lőrentey Károly")
100
    ("Kazushi Marukawa" "Kazushi (Jam) Marukawa")
101
    ("Ken Manheimer" "Kenneth Manheimer")
102
    ("Kenichi Handa" "Ken'ichi Handa" "Kenichi HANDA" "K\\. Handa")
Kim F. Storm's avatar
Kim F. Storm committed
103
    ("Kevin Greiner" "Kevin J. Greiner")
104
    ("Kim F. Storm" "Kim Storm")
105
    ("Kyle Jones" "Kyle E. Jones")
Glenn Morris's avatar
Glenn Morris committed
106
    ("Lars Magne Ingebrigtsen" "Lars Ingebrigtsen")
107
    ("Marcus G. Daniels" "Marcus Daniels")
108
    ("Mark D. Baushke" "Mark D Baushke")
109
    ("Mark E. Shoulson" "Mark Shoulson")
110
    ("Marko Kohtala" "Kohtala Marko")
Glenn Morris's avatar
Glenn Morris committed
111
    ("Agustín Martín" "Agustin Martin" "Agustín Martín Domingo")
112 113
    ("Martin Lorentzon" "Martin Lorentzson")
    ("Matt Swift" "Matthew Swift")
114
    ("Maxime Edouard Robert Froumentin" "Max Froumentin")
Kim F. Storm's avatar
Kim F. Storm committed
115
    ("Michael R. Mauger" "Michael Mauger")
116
    ("Michael D. Ernst" "Michael Ernst")
117
    ("Michaël Cadilhac" "Michael Cadilhac")
118
    ("Michael I. Bushnell" "Michael I Bushnell" "Michael I. Bushnell, p/BSG")
119 120
    ("Michael R. Cook" "Michael Cook")
    ("Michael Sperber" "Michael Sperber \\[Mr. Preprocessor\\]")
Kim F. Storm's avatar
Kim F. Storm committed
121
    ("Mikio Nakajima" "Nakajima Mikio")
122
    ("Nelson Jose dos Santos Ferreira" "Nelson Ferreira")
Glenn Morris's avatar
Glenn Morris committed
123
    ("Noorul Islam" "Noorul Islam K M")
Glenn Morris's avatar
Glenn Morris committed
124
;;;    ("Tetsurou Okazaki" "OKAZAKI Tetsurou") ; FIXME?
125
    ("Paul Eggert" "Paul R\\. Eggert")
126
    ("Pavel Janík" "Pavel Janík Ml." "Pavel Janik Ml." "Pavel Janik")
127
    ("Pavel Kobiakov" "Pavel Kobyakov")
128
    ("Per Abrahamsen" "Per Abhiddenware")
129
    ("Per Starbäck" "Per Starback")
Glenn Morris's avatar
Glenn Morris committed
130
    ("Peter J. Weisberg" "PJ Weisberg")
131
    ("Peter S. Galbraith" "Peter S Galbraith" "Peter Galbraith")
132
    ("Peter Runestig" "Peter 'luna' Runestig")
Glenn Morris's avatar
Glenn Morris committed
133 134
    ("Piotr Zieliński" "Piotr Zielinski")
    ("Rainer Schöpf" "Rainer Schoepf")
135 136 137
    ("Raja R. Harinath" "Raja R Harinath")
    ("Richard G. Bielawski" "Richard G Bielawski" "Richard Bielawski")
    ("Richard King" "Dick King")
138
    ("Richard M. Stallman" "Richard Stallman" "rms@gnu.org")
139
    ("Robert J. Chassell" "Bob Chassell")
140
    ("Roberto Huelga Díaz" "Roberto Huelga")
141
    ("Roland B. Roberts" "Roland B Roberts" "Roland Roberts")
142
    ("Rui-Tao Dong" "Rui-Tao Dong ~{6-HpLN~}")
Romain Francoise's avatar
Romain Francoise committed
143
    ("Sacha Chua" "Sandra Jean Chua")
144
    ("Sam Steingold" "Sam Shteingold")
145
    ("Satyaki Das" "Indexed search by Satyaki Das")
Glenn Morris's avatar
Glenn Morris committed
146
    ("Sébastien Vauban" "Sebastien Vauban")
Glenn Morris's avatar
Glenn Morris committed
147
    ("Sergey Litvinov" "Litvinov Sergey")
148 149
    ;; There are other Stefans.
;;;    ("Stefan Monnier" "Stefan")
150
    ("Steven L. Baur" "SL Baur" "Steven L Baur")
151
    ("Stewart M. Clamen" "Stewart Clamen")
152
    ("Stuart D. Herring" "Stuart Herring" "Davis Herring")
Glenn Morris's avatar
Glenn Morris committed
153
    ("T.V. Raman" "T\\. V\\. Raman")
154
    ("Taichi Kawabata" "KAWABATA,? Taichi")
155
    ("Takaaki Ota" "Tak Ota")
Kim F. Storm's avatar
Kim F. Storm committed
156
    ("Takahashi Naoto" "Naoto Takahashi")
157
    ("Teodor Zlatanov" "Ted Zlatanov")
Glenn Morris's avatar
Glenn Morris committed
158
    ("Thomas Dye" "Tom Dye")
159 160
    ("Thomas Horsley" "Tom Horsley")	; FIXME ?
    ("Thomas Wurgler" "Tom Wurgler")
161
    ("Toby Cubitt" "Toby S\\. Cubitt")
162
    ("Tomohiko Morioka" "MORIOKA Tomohiko")
163 164
    ("Torbjörn Axelsson" "Torbjvrn Axelsson")
    ("Torbjörn Einarsson" "Torbj.*rn Einarsson")
165
    ("Toru Tomabechi" "Toru TOMABECHI")
166
    ("Tsugutomo Enami" "enami tsugutomo")
167
    ("Ulrich Müller" "Ulrich Mueller")
168
    ("Vincent Del Vecchio" "Vince Del Vecchio")
169
    ("William M. Perry" "Bill Perry")
170
    ("Wlodzimierz Bzyl" "W.*dek Bzyl")
171 172
    ("Yoni Rabkin" "Yoni Rabkin Katzenell")
    ("Yoshinori Koseki" "KOSEKI Yoshinori" "小関 吉則")
173
    ("Yutaka NIIBE" "NIIBE Yutaka")
174
    )
Gerd Moellmann's avatar
Gerd Moellmann committed
175 176
  "Alist of author aliases.

177
Each entry is of the form (REALNAME REGEXP...).  If an author's name
178
matches one of the REGEXPs, use REALNAME instead.
179
If REALNAME is nil, ignore that author.")
Gerd Moellmann's avatar
Gerd Moellmann committed
180

Glenn Morris's avatar
Glenn Morris committed
181
;; FIXME seems it would be less fragile to check for O', Mc, etc.
182
(defconst authors-fixed-case
Glenn Morris's avatar
Glenn Morris committed
183 184
  '("Barry O'Reilly"
    "Brian van den Broek"
Glenn Morris's avatar
Glenn Morris committed
185
    "Bryan O'Sullivan"
186
    "Christian von Roques"
187
    "Christophe de Dinechin"
188
    "Craig McDaniel"
Glenn Morris's avatar
Glenn Morris committed
189
    "Daniel LaLiberte"
190 191 192
    "David J. MacKenzie"
    "David McCabe"
    "David O'Toole"
Glenn Morris's avatar
Glenn Morris committed
193
    "Devon Sean McCullough"
194 195 196
    "Dominique de Waleffe"
    "Edward O'Connor"
    "Exal de Jesus Garcia Carrillo"
Glenn Morris's avatar
Glenn Morris committed
197
    "George McNinch"
198 199
    "Greg McGary"
    "Hans de Graaff"
Glenn Morris's avatar
Glenn Morris committed
200 201
    "Ivan Vilata i Balaguer"
    "Jae-hyeon Park"
202
    "James TD Smith"
Glenn Morris's avatar
Glenn Morris committed
203
    "Jay McCarthy"
204
    "Joel N. Weber II"
Glenn Morris's avatar
Glenn Morris committed
205
    "Matt McClure"
Glenn Morris's avatar
Glenn Morris committed
206
    "Mike McLean"
207 208
    "Michael McNamara"
    "Mike McEwan"
209
    "Nelson Jose dos Santos Ferreira"
210 211
    "Peter von der Ahe"
    "Peter O'Gorman"
Glenn Morris's avatar
Glenn Morris committed
212
    "Piet van Oostrum"
213
    "Roland McGrath"
Glenn Morris's avatar
Glenn Morris committed
214
    "Santiago Payà i Miralta"
Glenn Morris's avatar
Glenn Morris committed
215 216
    "Sean O'Halpin"
    "Sean O'Rourke"
Glenn Morris's avatar
Glenn Morris committed
217
    "Shun-ichi Goto"
Glenn Morris's avatar
Glenn Morris committed
218
    "Thomas DeWeese"
Glenn Morris's avatar
Glenn Morris committed
219 220
    "Tijs van Bakel"
    "Yu-ji Hosokawa")
221
  "List of authors whose names cannot be simply capitalized.")
Gerd Moellmann's avatar
Gerd Moellmann committed
222

223
(defvar authors-public-domain-files
224
  '("emerge\\.el"
225 226 227 228 229 230
    "vi\\.el"
    "feedmail\\.el"
    "mailpost\\.el"
    "hanoi\\.el"
    "meese\\.el"
    "studly\\.el"
231 232 233 234 235 236 237
    "modula2\\.el"
    "nnmaildir\\.el"
    "nnil\\.el"
    "b2m\\.c"
    "unexhp9k800\\.c"
    "emacsclient\\.1"
    "check-doc-strings")
238 239 240
  "List of regexps matching files for which the FSF doesn't need papers.")


241
(defvar authors-obsolete-files-regexps
242
  '(".*loaddefs.el$"			; not obsolete, but auto-generated
Glenn Morris's avatar
Glenn Morris committed
243
    "\\.\\(bzr\\|cvs\\|git\\)ignore$"		; obsolete or uninteresting
Glenn Morris's avatar
Glenn Morris committed
244
    "\\.arch-inventory$"
245
    "automated/data/"		   ; not interesting
Glenn Morris's avatar
Glenn Morris committed
246
    ;; TODO lib/? Matches other things?
247
    "build-aux/" "m4/" "Emacs.xcodeproj" "mapfiles" "\\.map\\'"
Glenn Morris's avatar
Glenn Morris committed
248
    "preferences\\.\\(nib\\|gorm\\)"
249 250 251
    ;; Generated files that have since been removed.
    "\\(refcard\\(-de\\|-pl\\)?\\|calccard\\|dired-ref\\|orgcard\\|\
gnus-booklet\\|fr-drdref\\)\\.p\\(df\\|s\\)\\'")
252
  "List of regexps matching obsolete files.
Glenn Morris's avatar
Glenn Morris committed
253
Changes to files matching one of the regexps in this list are not listed.")
254

Glenn Morris's avatar
Glenn Morris committed
255 256
(defconst authors-no-scan-regexps
  '("etc/nxml/"
257
    "automated/data/")
Glenn Morris's avatar
Glenn Morris committed
258 259
  "Lists of regexps matching files not to scan for authorship.")

Kim F. Storm's avatar
Kim F. Storm committed
260 261 262 263
(defconst authors-ignored-files
  '("external-lisp"
    "lock" "share-lib" "local-lisp"
    "noleim-Makefile.in"
264 265 266 267 268 269
    "NEWS" "ORDERS" "PROBLEMS" "FAQ" "AUTHORS" "FOR-RELEASE" "TODO" "todo"
    "MACHINES" "SERVICE"
    "README.unicode" "README.multi-tty" "TUTORIAL.translators"
    "NEWS.unicode" "COPYING.DJ" "Makefile.old" "Makefile.am"
    "NEWS.1" "OOOOONEWS...OONEWS" "OOOONEWS" "etc/NEWS"
    "NEWS.1-17" "NEWS.18" "NEWS.19" "NEWS.20" "NEWS.21" "NEWS.22"
270
    "MAINTAINERS" "MH-E-NEWS"
271
    "install.sh" "install-sh" "missing" "mkinstalldirs"
272 273 274 275 276 277
    "termcap.dat" "termcap.src" "termcap.ucb" "termcap"
    "ChangeLog.nextstep" "Emacs.clr" "spec.txt"
    "gfdl.1"
    "texi/Makefile.in"
    "Imakefile" "icons/sink.ico" "aixcc.lex"
    "nxml/char-name/unicode"
278
    "spec.txt"
279
    "js2-mode.el"      ; only installed very briefly, replaced by js.el
280 281 282 283
    ;; In the old imported lisp/url ChangeLog, but never in Emacs.
    "mule-sysdp.el"
    ;; Only briefly present.
    "tests/gnustest-nntp.el" "tests/gnustest-registry.el"
Glenn Morris's avatar
Glenn Morris committed
284 285 286 287 288 289 290 291
    "cedet/tests/testtemplates.cpp"
    "cedet/tests/testusing.cpp"
    "cedet/tests/scopetest.cpp"
    "cedet/tests/scopetest.java"
    "cedet/tests/test.cpp"
    "cedet/tests/test.py"
    "cedet/tests/teststruct.cpp"
    "*.el"
292
    ;; Autogen:
293
    "cus-load.el" "finder-inf.el" "ldefs-boot.el" "loaddefs-boot.el"
Glenn Morris's avatar
Glenn Morris committed
294
    "compile" "config.guess" "config.sub" "depcomp"
295 296 297 298 299
    "autogen/compile" "autogen/config.guess" "autogen/config.in"
    "autogen/config.sub" "autogen/depcomp" "autogen/install-sh"
    "autogen/missing" "autogen"
    "autogen/copy_autogen" ; not generated, but trivial and now removed
    "dir_top"
Glenn Morris's avatar
Glenn Morris committed
300 301 302
    ;; Only existed briefly, then renamed:
    "images/icons/allout-widgets-dark-bg"
    "images/icons/allout-widgets-light-bg"
303
    ;; Never had any meaningful changes logged, now deleted:
304
    "lib/stdarg.in.h" "lib/stdbool.in.h"
Glenn Morris's avatar
Glenn Morris committed
305
    "unidata/bidimirror.awk" "unidata/biditype.awk"
306
    "split-man" "Xkeymap.txt" "ms-7bkermit" "ulimit.hack"
307
    "gnu-hp300" "refcard.bit" "ledit.l" "forms.README" "forms-d2.dat"
308 309
    "CXTERM-DIC/PY.tit" "CXTERM-DIC/ZIRANMA.tit"
    "CXTERM-DIC/CTLau.tit" "CXTERM-DIC/CTLauB.tit"
310 311
    "copying.paper" "celibacy.1" "condom.1" "echo.msg" "sex.6"
    "COOKIES" "INTERVIEW" "MAILINGLISTS" "MOTIVATION"
312 313 314
    "NICKLES.WORTH" "INTERVAL.IDEAS" "RCP"
    "3B-MAXMEM" "AIX.DUMP" "SUN-SUPPORT" "XENIX"
    "CODINGS" "CHARSETS"
Glenn Morris's avatar
Glenn Morris committed
315
    "calc/INSTALL" "calc/Makefile" "calc/README.prev"
Glenn Morris's avatar
Glenn Morris committed
316
    "vms-pp.trans" "_emacs" "batcomp.com" "notes/cpp" ; admin/
Glenn Morris's avatar
Glenn Morris committed
317
    "notes/BRANCH" "notes/exit-value"
Glenn Morris's avatar
Glenn Morris committed
318
    "emacsver.texi.in"
Glenn Morris's avatar
Glenn Morris committed
319 320 321 322 323 324 325 326
    "vpath.sed"
    "Cocoa/Emacs.base/Contents/Info.plist"
    "Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings"
    "GNUstep/Emacs.base/Resources/Info-gnustep.plist"
    "GNUstep/Emacs.base/Resources/Emacs.desktop"
    "Cocoa/Emacs.base/Contents/Resources/English.lproj"
    ;; Only existed briefly, then deleted:
    "coccinelle/overlay.cocci" "coccinelle/symbol.cocci"
327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352
    ;; MH-E stuff not in Emacs:
    "import-emacs" "release-utils"
    ;; Erc stuff not in Emacs:
    "ChangeLog.2001" "ChangeLog.2002" "ChangeLog.2003" "ChangeLog.2004"
    "ChangeLog.2005"
    "README.extras" "dir-template" "mkChangeLog" "MkChangeLog" "erc-auto.in"
    "CREDITS" "HACKING"
    "debian/changelog"
    "debian/control"
    "debian/copyright"
    "debian/maint/conffiles"
    "debian/maint/conffiles.in"
    "debian/maint/postinst"
    "debian/maint/postinst.in"
    "debian/maint/prerm"
    "debian/maint/prerm.in"
    "debian/README.Debian"
    "debian/README.erc-speak"
    "debian/rules"
    "debian/scripts/install"
    "debian/scripts/install.in"
    "debian/scripts/remove"
    "debian/scripts/remove.in"
    "debian/scripts/startup"
    "debian/scripts/startup.erc"
    "debian/scripts/startup.erc-speak"
Glenn Morris's avatar
Glenn Morris committed
353 354
    ;; Used to be in admin, not very interesting.
    "emacs-pretesters" "make-announcement" "make-changelog-diff"
355 356 357 358
    ;; Textual comments that are not files.
    "All" "Version" "Everywhere" "Many" "Various" "files"
    ;; Directories.
    "vms" "mac" "url" "tree-widget"
359
    )
Kim F. Storm's avatar
Kim F. Storm committed
360 361
  "List of files and directories to ignore.
Changes to files in this list are not listed.")
362

Glenn Morris's avatar
Glenn Morris committed
363 364 365
;; List via: find . -name '*.el' | sed 's/.*\///g' | sort | uniq -d
;; FIXME It would be better to discover these dynamically.
(defconst authors-ambiguous-files
366 367 368 369
  '("Makefile.in"
    "makefile.w32-in"
    "chart.el"
    "cl-lib.el"
Glenn Morris's avatar
Glenn Morris committed
370 371 372 373
    "compile.el"
    "complete.el"
    "cpp.el"
    "ctxt.el"
Glenn Morris's avatar
Glenn Morris committed
374 375 376
    "custom.el"
    "cyrillic.el"
    "czech.el"
Glenn Morris's avatar
Glenn Morris committed
377 378 379
    "debug.el"
    "dired.el"
    "el.el"
Glenn Morris's avatar
Glenn Morris committed
380 381 382
    "eshell.el"
    "ethiopic.el"
    "f90.el"
Glenn Morris's avatar
Glenn Morris committed
383 384 385
    "files.el"
    "find.el"
    "format.el"
Glenn Morris's avatar
Glenn Morris committed
386 387
    "generic.el"
    "georgian.el"
388
    "grammar.el"
Glenn Morris's avatar
Glenn Morris committed
389
    "greek.el"
Glenn Morris's avatar
Glenn Morris committed
390
    "grep.el"
Glenn Morris's avatar
Glenn Morris committed
391
    "hebrew.el"
Glenn Morris's avatar
Glenn Morris committed
392
    "imenu.el"
Glenn Morris's avatar
Glenn Morris committed
393
    "indian.el"
394
    "info-xref.el"
Glenn Morris's avatar
Glenn Morris committed
395
    "japanese.el"
Glenn Morris's avatar
Glenn Morris committed
396
    "java.el"
Glenn Morris's avatar
Glenn Morris committed
397
    "lao.el"
Glenn Morris's avatar
Glenn Morris committed
398 399 400 401
    "linux.el"
    "locate.el"
    "make.el"
    "mode.el"
402
    "mule-util.el"
Glenn Morris's avatar
Glenn Morris committed
403
    "python.el"
Glenn Morris's avatar
Glenn Morris committed
404
    "rmailmm.el"
Glenn Morris's avatar
Glenn Morris committed
405 406 407
    "semantic.el"
    "shell.el"
    "simple.el"
Glenn Morris's avatar
Glenn Morris committed
408
    "slovak.el"
Glenn Morris's avatar
Glenn Morris committed
409 410 411 412 413
    "sort.el"
    "speedbar.el"
    "srecode.el"
    "table.el"
    "texi.el"
Glenn Morris's avatar
Glenn Morris committed
414
    "thai.el"
415
    "thingatpt.el"
Glenn Morris's avatar
Glenn Morris committed
416
    "tibetan.el"
Glenn Morris's avatar
Glenn Morris committed
417
    "util.el"
Glenn Morris's avatar
Glenn Morris committed
418
    "vc-bzr.el"
Glenn Morris's avatar
Glenn Morris committed
419 420 421
    "wisent.el")
  "List of basenames occurring more than once in the source.")

422 423 424
;; FIXME :cowrote entries here can be overwritten by :wrote entries
;; derived from a file's Author: header (eg mh-e).  This really means
;; the Author: header is erroneous.
425
(defconst authors-fixed-entries
426
  '(("Richard M. Stallman" :wrote "[The original GNU Emacs and numerous files]")
427
    ("Joseph Arceneaux" :wrote "xrdb.c")
428 429
    ;; This refers to the obsolete Willisson (qv) version.
;;;    ("Blitz Product Development Corporation" :wrote "ispell.el")
430 431
    ("Frank Bresz" :wrote "diff.el")
    ("David M. Brown" :wrote "array.el")
432 433
    ;; No longer distributed.
;;;    ("Gary Byers" :changed "xenix.h")
434 435 436
    ;; No longer distributed: freebsd.h
    ;; Only trivial pieces remain, merged into configure.ac.
    ("Shawn M. Carey" :wrote "[some early FreeBSD support]")
437
    ;; hp800.h renamed from hp9000s800.h, hpux.h merged into hpux10-20.h.
438 439
    ;; FIXME overwritten by Author:.
    ("Satyaki Das" :cowrote "mh-search.el")
440 441 442
    ;; No longer distributed: hp800.h, hpux10-20.h.
    ;; Only trivial pieces remain, merged into configure.ac.
    ("Eric Decker" :changed "sysdep.c (and other files for HP-UX support)")
443 444 445
    ("Lawrence R. Dodd" :cowrote "dired-x.el")
    ;; No longer distributed.
;;;    ("Viktor Dukhovni" :wrote "unexsunos4.c")
Glenn Morris's avatar
Glenn Morris committed
446
    ("Paul Eggert" :wrote "rcs2log") ; "vcdiff"
447
    ("Fred Fish" :changed "unexcoff.c")
448 449
    ;; No longer distributed.
;;;    ("Tim Fleehart" :wrote "makefile.nt")
450 451
    ("Keith Gabryelski" :wrote "hexl.c")
    ("Kevin Gallagher" :wrote "flow-ctrl.el")
452 453 454 455 456
    ;; Also wrote an earlier version of disp-table.el, since replaced
    ;; by Erik Naggum's version; also iso-syntax.el, later renamed to
    ;; latin-1.el, since deleted.
    ("Howard Gayle" :wrote "casetab.c")
    ;; :wrote mh-pick.el, since merged into mh-search.el.
457 458 459
    ;; Originally wrote mh-funcs.el, but it has been rewritten since.
    ("Stephen Gildea" :wrote "refcard.tex"
     :cowrote "mh-funcs.el" "mh-search.el")
460 461 462 463 464 465
    ;; cl.texinfo renamed to cl.texi.
    ("David Gillespie" :wrote "cl.texi")
    ;; No longer distributed: emacsserver.c.
    ("Hewlett-Packard" :changed "emacsclient.c" "server.el" "keyboard.c")
    ;; No longer distributed.
;;;    ("Thomas Horsley" :wrote "cxux.h" "cxux7.h")
466 467
    ("Indiana University Foundation" :changed "buffer.c" "buffer.h"
     "indent.c" "search.c" "xdisp.c" "region-cache.c" "region-cache.h")
468
    ;; ibmrt.h, ibmrt-aix.h no longer distributed.
469
    ("International Business Machines" :changed "emacs.c" "fileio.c"
470
     "process.c" "sysdep.c" "unexcoff.c")
471 472
    ;; No longer distributed.
;;;    ("Ishikawa Chiaki" :changed "aviion.h" "dgux.h")
473 474 475 476
    ;; No longer distributed: ymakefile, intel386.h, mem-limits.h, template.h,
    ;; linux.h (was renamed to lignux.h, then to gnu-linux.h, then removed)
    ("Michael K. Johnson" :changed "configure.ac" "emacs.c"
     "process.c" "sysdep.c" "syssignal.h" "systty.h" "unexcoff.c")
477 478
    ;; No longer distributed.
;;;    ("Kyle Jones" :wrote "mldrag.el")
Kim F. Storm's avatar
Kim F. Storm committed
479
    ("Henry Kautz" :wrote "bib-mode.el")
480 481 482
    ;; No longer distributed: vms-pwd.h, vmsfns.c, uaf.h,
    ;; dir.h (was renamed to vmsdir.h, then removed)
    ("Joseph M. Kelsey" :changed "fileio.c")
483
    ("Sam Kendall" :changed "etags.c" "etags.el")
484 485
    ;; ack.texi: "We're not using his backquote.el any more."
    ("Richard King" :wrote "userlock.el" "filelock.c")
486 487 488
    ("Sebastian Kremer" :changed "add-log.el")
    ("Mark Lambert" :changed "process.c" "process.h")
    ("Aaron Larson" :changed "bibtex.el")
489 490
    ;; It was :wrote, but it has been rewritten since.
    ("James R. Larus" :cowrote "mh-e.el")
491 492
    ("Lars Lindberg" :changed "dabbrev.el" :cowrote "imenu.el")
    ;; No longer distributed: lselect.el.
493 494
    ("Lucid, Inc." :changed "bytecode.c" "byte-opt.el" "byte-run.el"
     "bytecomp.el" "delsel.el" "disass.el" "faces.el" "font-lock.el"
495
     "lmenu.el" "mailabbrev.el" "select.el" "xfaces.c" "xselect.c")
496 497 498
    ;; MCC.  No longer distributed: emacsserver.c.
    ("Microelectronics and Computer Technology Corporation"
     :changed "etags.c" "emacsclient.c" "movemail.c"
499 500
     "rmail.el" "rmailedit.el" "rmailkwd.el"
     "rmailmsc.el" "rmailout.el" "rmailsum.el" "scribe.el"
501
     ;; It was :wrote for xmenu.c, but it has been rewritten since.
502
     "server.el" "lisp.h" "sysdep.c" "unexcoff.c" "xmenu.c")
503
    ("Niall Mansfield" :changed "etags.c")
504
    ("Brian Marick" :cowrote "hideif.el")
505 506
    ("Marko Kohtala" :changed "info.el")
    ("Sidney Markowitz" :changed "doctor.el")
507 508
    ;; No longer distributed: env.c.
    ("Richard Mlynarik" :wrote "ehelp.el")
509 510 511 512 513
    ("Mosur Mohan" :changed "etags.c")
    ("Jeff Morgenthaler" :changed "flow-ctrl.el" "vt200.el" "vt201.el"
     "vt220.el" "vt240.el")
    ("Motorola" :changed "buff-menu.el")
    ("Hiroshi Nakano" :changed "ralloc.c")
Glenn Morris's avatar
Glenn Morris committed
514 515
    ;; File removed in Emacs 24.1.
;;;    ("Sundar Narasimhan" :changed "rnewspost.el")
516 517
    ;; No longer distributed.
;;;    ("NeXT, Inc." :wrote "unexnext.c")
518
    ("Mark Neale" :changed "fortran.el")
519 520
    ;; Renamed from sc.el.
    ("Martin Neitzel" :changed "supercite.el")
521
    ("Andrew Oram" :changed "calendar.texi (and other doc files)")
522 523
    ("Frederic Pierresteguy" :wrote "widget.c")
    ("Michael D. Prange" :changed "tex-mode.el")
524 525
    ;; No longer distributed (dgux5-4r3.h was renamed to dgux5-4-3.h).
;;;    ("Paul Reilly" :wrote "gux5-4r2.h" "dgux5-4-3.h")
526
    ("Rob Riepel" :wrote "tpu-edt.doc")
527 528 529 530 531
    ("Roland B. Roberts" :changed "files.el" "sort.el"
     "buffer.h" "callproc.c" "dired.c" "process.c" "sysdep.c" "systty.h")
     ;; No longer distributed.
;;;     "vmspaths.h" "build.com" "compile.com" "kepteditor.com" "precomp.com"
;;;     "vmsproc.el" :wrote "logout.com" "mailemacs.com")
532
;;;    ("Guillermo J. Rozas" :wrote "fakemail.c")
533 534
    ("Wolfgang Rupprecht" :changed "lisp-mode.el" "loadup.el"
     "sort.el" "alloc.c" "callint.c"
535 536 537
     ;; config.in renamed from config.h.in, now a generated file.
     ;; ecrt0.c renamed from crt0.c, then removed.
     "data.c" "fns.c"
538 539
     "lisp.h" "lread.c" ; "sun3.h" "ymakefile" - no longer distributed
     "print.c" :wrote "float-sup.el" "floatfns.c")
540
    ("Schlumberger Technology Corporation" :changed "gud.el")
541 542
    ;; Replaced by tcl.el.
;;;    ("Gregor Schmid" :wrote "tcl-mode.el")
543 544
    ;; No longer distributed since 24.1.
;;;    ("Rainer Schöpf" :wrote "alpha.h" "unexalpha.c")
545 546 547 548
    ;; No longer distributed: emacsserver.c.
    ("William Sommerfeld" :wrote "emacsclient.c" "scribe.el")
    ;; No longer distributed: emacsserver.c.
    ("Leigh Stoller" :changed "emacsclient.c" "server.el")
Paul Eggert's avatar
Paul Eggert committed
549
    ("Steve Strassmann" :wrote "spook.el")
550
    ("Shinichirou Sugou" :changed "etags.c")
551 552 553 554 555 556 557 558 559 560
    ;; No longer distributed: emacsserver.c.
    ("Sun Microsystems, Inc" :changed "emacsclient.c" "server.el"
     :wrote "emacs.icon" "sun.el")
    ;; No longer distributed.
;;;     "emacstool.1" "emacstool.c" "sun-curs.el"
;;;     "sun-fns.el" "sun-mouse.el" "sunfns.c")
    ;; Renamed from sc.el.
    ("Kayvan Sylvan" :changed "supercite.el")
    ;; No longer distributed: emacsserver.c, tcp.c.
    ("Spencer Thomas" :changed "emacsclient.c" "server.el"
561
     "dabbrev.el" "unexcoff.c" "gnus.texi")
562
    ("Jonathan Vail" :changed "vc.el")
563 564
    ;; No longer distributed: usg5-4.h
    ("James Van Artsdalen" :changed "unexcoff.c")
565 566 567 568 569 570 571
    ;; No longer distributed: src/makefile.nt, lisp/makefile.nt
    ;; winnt.el renamed to w32-fns.el; nt.[ch] to w32.[ch];
    ;; ntheap.[ch] to w32heap.[ch]; ntinevt.c to w32inevt.c;
    ;; ntproc.c to w32proc.c; ntterm.c to w32term.c;
    ;; windowsnt.h to ms-w32.h.
    ("Geoff Voelker" :wrote "w32-fns.el" "w32.c" "w32.h" "w32heap.c"
     "w32heap.h" "w32inevt.c" "w32proc.c" "w32term.c" "ms-w32.h")
572
    ("Morten Welinder" :wrote "dosfns.c" "[many MS-DOS files]" "msdos.h")
573 574
    ("Eli Zaretskii" :wrote "bidi.c" "[bidirectional display in xdisp.c]"
     "[tty menus in term.c]")
575 576
    ;; Not using this version any more.
;;;    ("Pace Willisson" :wrote "ispell.el")
577 578
    ;; FIXME overwritten by Author:.
    ("Bill Wohler" :cowrote "mh-e.el")
579
    ("Garrett Wollman" :changed "sendmail.el")
580
    ("Dale R. Worley" :changed "mail-extr.el")
581 582
    ("Jamie Zawinski" :changed "bytecode.c" :wrote "tar-mode.el"
     :cowrote "disass.el"))
583 584 585
  "Actions taken from the original, manually (un)maintained AUTHORS file.")


586 587
(defconst authors-valid-file-names
  '("aclocal.m4"
588
    "build-ins.in"
589
    "Makefile"
590
    "Makefile.noleim"
Kim F. Storm's avatar
Kim F. Storm committed
591
    "makedist.bat"
592 593
    "makefile.def"
    "makefile.nt"
Glenn Morris's avatar
Glenn Morris committed
594
    "ns.mk"
595 596 597
    "README"
    ;; There were a few of these, not just the generated top-level one.
    "configure" "config.h"
598
    "is_exec.c" "sigaction.c"
599 600
    ;; nt/
    "ebuild.bat" "install.bat" "fast-install.bat"
601
    "debug.bat.in" "emacs.bat.in" "addsection.c"
602
    "inc/sys/dir.h" "inc/gettext.h"
603 604 605 606
    ".gdbinit-union"
    "alloca.s"
    "make-delta"
    "config.w95"
607
    "msysconfig.sh"
608 609 610 611 612 613 614
    "emacstool.1"
    "align.umax"
    "cxux-crt0.s"
    "gould-sigvec.s"
    "getdate.y"
    "ymakefile"
    "permute-index" "index.perm"
Glenn Morris's avatar
Glenn Morris committed
615
    "ibmrs6000.inp"
Glenn Morris's avatar
Glenn Morris committed
616
    "b2m.c" "b2m.1" "b2m.pl" "rcs-checkin.1"
Glenn Morris's avatar
Glenn Morris committed
617
    "emacs.bash" "emacs.csh" "ms-kermit"
618
    "emacs.ico"
619
    "emacs21.ico"
Glenn Morris's avatar
Glenn Morris committed
620
    "emacs.py" "emacs2.py" "emacs3.py"
Glenn Morris's avatar
Glenn Morris committed
621
    "BABYL" "LPF" "LEDIT" "OTHER.EMACSES"
622 623 624
    "emacs16_mac.png" "emacs24_mac.png"
    "emacs256_mac.png" "emacs32_mac.png"
    "emacs48_mac.png" "emacs512_mac.png"
625 626 627 628 629 630 631 632 633 634 635 636 637
    "ps-prin2.ps" "ps-prin3.ps"
    "emacs.xbm" "gnu.xpm" "gnus-pointer.xbm" "gnus-pointer.xpm"
    ;; Moved from etc/ to etc/images, and/or removed.
    "gnus.pbm" "gnus.xbm" "gnus.xpm" "letter.pbm" "letter.xbm" "letter.xpm"
    "splash.pbm" "splash.xbm" "splash.xpm" "splash8.xpm"
    "images/execute.pbm" "images/execute.xpm" "images/fld-open.pbm"
    "images/fld-open.xpm" "images/highlight.pbm" "images/highlight.xpm"
    "images/mail.pbm" "images/mail.xpm" "images/mail/alias.pbm"
    "images/mail/alias.xpm" "images/mail/refile.pbm"
    "images/mail/refile.xpm" "images/page-down.pbm"
    "images/page-down.xpm" "images/widen.pbm" "images/widen.xpm"
    "images/gnus/bar.xbm" "images/gnus/bar.xpm"
    "images/gnus/reverse-smile.xpm"
Glenn Morris's avatar
Glenn Morris committed
638
    "notes/commits" "notes/changelogs"
Glenn Morris's avatar
Glenn Morris committed
639
    "revdiff"				; admin/
Glenn Morris's avatar
Glenn Morris committed
640
    "vcdiff" "rcs-checkin" "tindex.pl"
Glenn Morris's avatar
Glenn Morris committed
641 642
    "mainmake" "sed1.inp" "sed2.inp" "sed3.inp" ; msdos/
    "mac-fix-env.m"
643 644
    ;; Deleted vms stuff:
    "temacs.opt" "descrip.mms" "compile.com" "link.com"
645 646
    "compact.el" "fadr.el"
    "calc/calc-maint.el"
647
    "emacs-lisp/cl-specs.el"
648 649 650 651
    "emacs-lisp/eieio-comp.el"
    "erc-hecomplete.el"
    "eshell/esh-maint.el"
    "language/persian.el"
652
    "ledit.el" "meese.el" "iswitchb.el" "longlines.el"
653 654 655
    "mh-exec.el" "mh-init.el" "mh-customize.el"
    "net/zone-mode.el" "xesam.el"
    "term/mac-win.el" "sup-mouse.el"
656 657
    "term/vt102.el" "term/vt201.el" "term/vt220.el" "term/vt300.el"
    "term/vt320.el" "term/vt400.el" "term/vt420.el"
658 659 660 661 662 663 664
    "url-https.el"
    "org-mac-message.el" "org-mew.el" "org-w3m.el" "org-vm.el" "org-wl.el"
    "org-mks.el" "org-remember.el" "org-xoxo.el" "org-docbook.el"
    "org-freemind.el" "ox-jsinfo.el"
    "org-exp-blocks.el"		     ; maybe this is ob-exp now? dunno
    "org-lparse.el"
    "org-special-blocks.el" "org-taskjuggler.el"
665
    "progmodes/cap-words.el"
Glenn Morris's avatar
Glenn Morris committed
666
    "w32-common-fns.el"
667 668 669 670 671 672 673 674 675 676
    ;; gnus
    "nnwfm.el" "nnlistserv.el" "nnkiboze.el" "nndb.el" "nnsoup.el"
    "netrc.el" "password.el" "sasl-cram.el" "sasl-digest.el" "sasl-ntlm.el"
    "sasl.el" "dig.el" "dns.el" "hex-util.el" "sha1.el" "md4.el"
    "hmac-def.el" "hmac-md5.el" "ntlm.el" "hashcash.el" "smime-ldap.el"
    "assistant.el" "gnus-utils.el" "tls.el" "pgg-def.el" "pgg-gpg.el"
    "gnus-compat.el" "pgg-parse.el" "pgg-pgp.el" "pgg-pgp5.el" "pgg.el"
    "dns-mode.el" "run-at-time.el" "gnus-encrypt.el" "sha1-el.el"
    "gnus-gl.el" "gnus.sum.el" "proto-stream.el" "color.el" "color-lab.el"
    "eww.el" "shr-color.el" "shr.el" "earcon.el" "gnus-audio.el" "encrypt.el"
677
    "format-spec.el" "gnus-move.el"
678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696
    ;; doc
    "getopt.c" "texindex.c" "news.texi" "vc.texi" "vc2-xtra.texi"
    "back.texi" "vol1.texi" "vol2.texi" "elisp-covers.texi" "two.el"
    "front-cover-1.texi" "locals.texi" "calendar.texi" "info-stnd.texi"
    "tasks.texi"
    "advice.texi" "picture.texi" "texinfo.tex"
    ;; lwlib:
    "dispatch.c" "dispatch.h" "xrdb-cpp.c" "xrdb.c"
    "lwlib-Xol.c" "lwlib-Xol.h" "lwlib-Xolmb.c" "lwlib-Xolmb.h"
    "lwlib-XolmbP.h"
    ;; lib/
    "lib/stdio.c" "lib/gl_openssl.h" "lib/sigprocmask.c"
    "lib/pthread_sigprocmask.c" "lib/ldtoastr.c" "lib/dummy.c"
    "lib/ignore-value.h"
    ;; lib-src/
    "cvtmail.c" "digest-doc.c" "emacsserver.c" "emacstool.c" "env.c"
    "etags-vmslib.c" "fakemail.c" "getdate.c" "getopt.h" "getopt1.c"
    "getopt_.h" "getopt_int.h" "gettext.h" "leditcfns.c" "loadst.c"
    "make-path.c" "qsort.c" "sorted-doc.c" "tcp.c" "timer.c" "wakeup.c"
Glenn Morris's avatar
Glenn Morris committed
697
    "yow.c" "grep-changelog" "grep-changelog.1"
698 699
    ;; etc/
    "emacsclient.c" "etags.c" "hexl.c" "make-docfile.c" "movemail.c"
700
    "test-distrib.c" "testfile"
Glenn Morris's avatar
Glenn Morris committed
701
    "tpu-edt.doc"			; see below
702
    )
Glenn Morris's avatar
Glenn Morris committed
703 704
  "File names which are valid, but no longer exist (or cannot be found)
in the repository.")
705

706 707 708 709 710
;; Note that any directory part on the RHS is retained.
;; Cf authors-renamed-files-regexps.
;; NB So only add a directory if needed to disambiguate.
;; FIXME?
;; Although perhaps we could let authors-disambiguate-file-name do that?
711 712 713 714 715 716 717 718
(defconst authors-renamed-files-alist
  '(("nt.c" . "w32.c") ("nt.h" . "w32.h")
    ("ntheap.c" . "w32heap.c") ("ntheap.h" . "w32heap.h")
    ("ntinevt.c" . "w32inevt.c") ("ntinevt.h" . "w32inevt.h")
    ("ntproc.c" . "w32proc.c")
    ("w32console.c" . "w32term.c")
    ("unexnt.c" . "unexw32.c")
    ("s/windowsnt.h" . "s/ms-w32.h")
719
    ("s/ms-w32.h" . "inc/ms-w32.h")
720
    ("src/config.h" . "config.h")
721
    ("winnt.el" . "w32-fns.el")
722
    ("linux.h" . "gnu-linux.h")
Glenn Morris's avatar
Glenn Morris committed
723
    ("emacs.manifest" . "emacs-x86.manifest")
724
    ("config.emacs" . "configure")
725
    ("configure.in" . "configure.ac")
726 727 728
    ("config.h.dist" . "config.in")
    ("config.h-dist" . "config.in")
    ("config.h.in" . "config.in")
729 730 731 732 733 734 735
    ("debug.bat" . "debug.bat.in")
    ("emacs.bat" . "emacs.bat.in")
    ;; paths.h.dist -> paths.h-dist -> paths.h.in -> paths.in -> epaths.in.
    ("paths.h.dist" . "epaths.in")
    ("paths.h-dist" . "epaths.in")
    ("paths.h.in" . "epaths.in")
    ("paths.in" . "epaths.in")
736 737
    ("emacs.rc" . "emacs.rc.in")
    ("emacsclient.rc" . "emacsclient.rc.in")
738
    ("patch1" . "sed1.inp")
739 740 741 742
    ("INSTALL.MSYS" . "INSTALL")
    ("server.c" . "emacsserver.c")
    ("lib-src/etags.c" . "etags.c")
    ;; msdos/
743
    ("is-exec.c" . "is_exec.c")
744
    ("enriched.doc" . "enriched.txt")
745
    ("GETTING.GNU.SOFTWARE" . "FTP")
746 747 748 749 750 751 752 753 754 755 756
    ("etc/MACHINES" . "MACHINES")
    ("ONEWS" . "NEWS.19")
    ("ONEWS.1" . "NEWS.1-17")
    ("ONEWS.2" . "NEWS.1-17")
    ("ONEWS.3" . "NEWS.18")
    ("ONEWS.4" . "NEWS.18")
    ("ORDERS.USA" . "ORDERS")
    ("EUROPE" . "ORDERS")
    ("DIFF" . "OTHER.EMACSES")
    ("CCADIFF" . "OTHER.EMACSES")
    ("GOSDIFF" . "OTHER.EMACSES")
Glenn Morris's avatar
Glenn Morris committed
757 758 759 760
    ;; Moved from lisp/tpu-doc.el to etc/tpu-edt.doc in Emacs 19.29.
    ;; Removed in Emacs 19.30, replaced by new file etc/edt-user.doc
    ;; (no associated ChangeLog entry).
    ("tpu-doc.el" . "tpu-edt.doc")
761
    ("Makefile.in.in" . "Makefile.in")
Kim F. Storm's avatar
Kim F. Storm committed
762 763
    ("leim-Makefile" . "leim/Makefile")
    ("leim-Makefile.in" . "leim/Makefile.in")
764 765
    ("emacs-lisp/testcover-ses.el" . "tcover-ses.el")
    ("emacs-lisp/testcover-unsafep.el" . "tcover-unsafep.el")
766
    ("progmodes/dos.el" . "bat-mode.el")
767 768 769
    ;; index and pick merged into search.
    ("mh-index.el" . "mh-search.el")
    ("mh-pick.el" . "mh-search.el")
Glenn Morris's avatar
Glenn Morris committed
770
    ("font-setting.el" . "dynamic-setting.el")
771 772 773 774 775 776 777 778
    ("help-funs.el" . "help-fns.el")
    ("erc-notifications.el" . "erc-desktop-notifications.el")
    ("org-complete.el" . "org-pcomplete.el")
    ("org-export.el" . "ox.el")		; ?
    ;; Was definitely renamed to org-latex.el, then... ?
    ("org-export-latex.el" . "ox-latex.el") ; ?
    ("org-exp.el" . "ox.el")		    ; ?
    ("progmodes/cfengine3.el" . "cfengine.el")
779 780 781 782 783
    ("progmodes/delphi.el" . "opascal.el")
    ("octave-inf.el" . "octave.el")
    ("octave-mod.el" . "octave.el")
    ("progmodes/octave-inf.el" . "octave.el")
    ("progmodes/octave-mod.el" . "octave.el")
784
    ;; Obsolete.
785 786
    ("emacs-lisp/assoc.el" . "assoc.el")
    ("emacs-lisp/cust-print.el" . "cust-print.el")
787 788 789 790 791 792 793
    ("emacs-lisp/gulp.el" . "gulp.el")
    ("emulation/crisp.el" . "crisp.el")
    ("emulation/tpu-edt.el" . "tpu-edt.el")
    ("emulation/tpu-extras.el" . "tpu-extras.el")
    ("emulation/vi.el" . "vi.el")
    ("emulation/vip.el" . "vip.el")
    ("emulation/ws-mode.el" . "ws-mode.el")
794
    ("mail/mailpost.el" . "mailpost.el")
795
    ("play/bruce.el" . "bruce.el")
796
    ("play/yow.el" . "yow.el")
797 798 799 800 801 802 803 804 805 806
    ("patcomp.el" . "patcomp.el")
    ;; From lisp to etc/forms.
    ("forms-d2.el" . "forms-d2.el")
    ("forms-pass.el" . "forms-pass.el")
    ;; From lisp/ to etc/nxml.
    ("nxml/test.invalid.xml" . "test-invalid.xml")
    ("nxml/test.valid.xml" . "test-valid.xml")
    ;; The one in lisp is eshell/eshell.el.
    ("eshell.el" . "automated/eshell.el")
    ("eshell/esh-test.el" . "automated/eshell.el")
Glenn Morris's avatar
Glenn Morris committed
807
    ("automated/cl-lib.el" . "automated/cl-lib-tests.el")
808
    ("automated/package-x-test.el" . "automated/package-test.el")
809 810 811
    ;; INSTALL-CVS -> .CVS -> .BZR -> .REPO
    ("INSTALL-CVS" . "INSTALL.REPO")
    ("INSTALL.CVS" . "INSTALL.REPO")
812
    ("INSTALL.BZR" . "INSTALL.REPO")
813
    ("gnus-logo.eps" . "gnus-logo.eps")	; moved to refcards/
814 815 816
    ("build-install" . "build-ins.in")
    ("build-install.in" . "build-ins.in")
    ("unidata/Makefile" . "unidata/Makefile.in")
817
    ("mac/uvs.el" . "unidata/uvs.el")
818 819 820 821 822 823 824 825 826
    ;; Moved from top to etc/
    ("CONTRIBUTE" . "CONTRIBUTE")
    ("FTP" . "FTP")
    ;; Moved from top to build-aux/
    ("move-if-change" . "move-if-change")
    ("update-subdirs" . "update-subdirs")
    ("emacs.tex" . "emacs.texi")
    ("faq.texi" . "efaq.texi")
    ("major.texi" . "modes.texi")
827 828
    ("msdog-xtra.texi" . "msdos-xtra.texi")
    ("msdog.texi" . "msdos.texi")
829 830 831 832
    ;; And from emacs/ to misc/ and back again.
    ("ns-emacs.texi" . "macos.texi")
    ("overrides.texi" . "gnus-overrides.texi")
    ("xresmini.texi" . "xresources.texi")
833 834
    ;; Not renamed, but we only have the latter in the Emacs repo.
    ("trampver.texi.in" . "trampver.texi")
835 836 837
    ;; Renamed with same directory.
    ("e/eterm" . "eterm-color")
    ("e/eterm.ti" . "eterm-color.ti")
838 839 840 841 842
    ("README.txt" . "README")
    ("emacs.names" . "JOKES")
    ("ED.WORSHIP" . "JOKES")
    ("GNU.JOKES" . "JOKES")
    ("CHARACTERS" . "TODO")
843 844 845 846 847 848 849 850 851
    ("images/gnus/mail_send.xpm" . "mail-send.xpm") ; still in images/gnus
    ;; Renamed within same directory.
    ("schema/xhtml-basic-form.rnc" . "xhtml-bform.rnc" )
    ("schema/xhtml-basic-table.rnc" . "xhtml-btable.rnc")
    ("schema/xhtml-list.rnc" . "xhtml-lst.rnc")
    ("schema/xhtml-target.rnc" . "xhtml-tgt.rnc")
    ("schema/xhtml-style.rnc" . "xhtml-xstyle.rnc")
    ("schema/docbook-dyntbl.rnc" . "docbk-dyntbl.rnc")
    ("schema/docbook-soextbl.rnc" . "docbk-soextbl.rn" )
Glenn Morris's avatar
Glenn Morris committed
852
    ("edt-user.doc" . "edt.texi")
Glenn Morris's avatar
Glenn Morris committed
853
    ("DEV-NOTES" . "nextstep")
Glenn Morris's avatar
Glenn Morris committed
854
    ("org/COPYRIGHT-AND-LICENSE" . "org/README")
855 856 857 858 859 860
    ;; Moved to different directories.
    ("ctags.1" . "ctags.1")
    ("etags.1" . "etags.1")
    ("emacs.1" . "emacs.1")
    ("emacsclient.1" . "emacsclient.1")
    ("icons/emacs21.ico" . "emacs21.ico")
861 862 863 864 865 866
    ("ja-dic" . "leim/ja-dic")
    ("quail" . "leim/quail")
    ;; Moved from autogen/ to admin/.
    ("autogen/update_autogen" . "update_autogen")
    ;; Moved from etc/ to admin/.
    ("grammars" . "grammars")
867 868
    ;; Moved from lisp/emacs-lisp/ to admin/.
    ("emacs-lisp/authors.el" . "authors.el")
869 870 871
    ;; From etc to lisp/cedet/semantic/.
    ("grammars/bovine-grammar.el" . "bovine/grammar.el")
    ("grammars/wisent-grammar.el" . "wisent/grammar.el")
Glenn Morris's avatar
Glenn Morris committed
872 873
    ;; Moved from admin/nt/ to nt/.
    ("nt/README.W32" . "README.W32")
Glenn Morris's avatar
Glenn Morris committed
874 875
    ("notes/BRANCH" . "notes/repo")
    ("notes/bzr" . "notes/repo")
876 877 878 879
    )
  "Alist of files which have been renamed during their lifetime.
Elements are (OLDNAME . NEWNAME).")

880 881 882 883 884
;; Should still test that the renamed file exists.  Does it?
;; But it might be relative to a different ChangeLog...
;;
;; Note that only the basename of the RHS is used.
;; Cf authors-renamed-files-alist.
885
(defconst authors-renamed-files-regexps
886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922
  '(("\\`\\(arg-nonnull\\|c\\+\\+defs\\|warn-on-use\\)\\.h\\'"
     "build-aux/snippet/\\&")
    ("\\`\\(ebuild\\|emacs\\|install\\|fast-install\\)\\.cmd\\'" "\\1.bat")
    ("\\`\\(book-spine\\|cl\\|forms\\|functions\\|gnus\\|sc\\|texinfo\\|vip\\)\
\\.texinfo\\'" "\\1.texi")
    ("\\`\\(\\(calc\\|org\\|vip\\)card\\|viperCard\\|\
\\(\\(cs\\|fr\\|sk\\)-\\)?dired-ref\\|\
\\(\\(cs\\|de\\|fr\\|gnus\\|pl\\|pt-br\\|ru\\|sk\\)-\\)?refcard\\|\
\\(\\(cs\\|fr\\|sk\\)-\\)?survival\\)\\.tex\\'" "refcards/\\&")
    ("\\`refcard-\\(de\\|pl\\)\\.tex\\'" "refcards/\\1-refcard.tex")
    ("\\`\\(refcards/\\)?fr-drdref\\.tex\\'" "refcards/fr-dired-ref.tex")
    ("^\\(TUTORIAL[^/]*\\)" "tutorials/\\1")
    ("\\`themes/dev-\\(tsdh-\\(?:light\\|dark\\)-theme\\.el\\)\\'"
     "themes/\\1")
    ;; Moved from lisp/toolbar to etc/images.
    ("\\`toolbar/\\(back\\|fwd\\|left\\|right\\|up\\)_arrow\
\\(\\.\\(?:pb\\|xp\\)m\\)\\'" "images/\\1-arrow\\2")
    ("\\`toolbar/lc-\\(back\\|fwd\\|left\\|right\\|up\\)_arrow\
\\(\\.\\(?:pb\\|xp\\)m\\)\\'" "images/low-color/\\1-arrow\\2")
    ("\\`toolbar/mail_\\(compose\\|send\\)\\(\\.[xp]bm\\)\\'"
     "images/mail/\\1")
    ("\\`toolbar/jump_to\\(\\.\\(?:pb\\|xp\\)m\\)\\'" "images/jump-to\\1")
    ("\\`toolbar/lc-jump_to\\(\\.\\(?:pb\\|xp\\)m\\)\\'"
     "images/low-color/jump-to\\1")
    ("\\`toolbar/\\(attach\\|cancel\\|close\\|copy\\|cut\\|\
diropen\\|exit\\|help\\|home\\|index\\|info\\|mail\\|new\\|open\\|\
paste\\|preferences\\|print\\|save\\|saveas\\|search\\|search-replace\\|\
spell\\|undo\\)\\(\\.\\(?:pb\\|xp\\)m\\)\\'" "images/\\1\\2")
    ("\\`toolbar/gud-\\(break\\|cont\\|down\\|finish\\|print\\|pstar\\|\
remove\\|run\\|until\\|up\\|watch\\)\\(\\.\\(?:pb\\|xp\\)m\\)\\'"
     "images/gud/\\1\\2")
    ("\\`\\(toolbar/gud-\\|images/gud/\\)n\\(i\\)?\\(\\.\\(?:pb\\|xp\\)m\\)\\'"
     "images/gud/next\\2\\3")
    ("\\`\\(toolbar/gud-\\|images/gud/\\)s\\(i\\)?\\(\\.\\(?:pb\\|xp\\)m\\)\\'"
     "images/gud/step\\2\\3")
    ("\\`toolbar/lc-\\([-a-z]+\\.xpm\\)\\'" "images/low-color/\\1")
    ("^\\(tree-widget/\\(?:default\\|folder\\)/[-a-z]+\\.\\(png\\|xpm\\)\\)$"
923
     "images/\\1")
924
    ("^\\(images/icons/\\)mac\\(emacs\\)_\\([0-9]+\\)\\(\\.png\\)"
925
     "\\1\\2\\3_mac\\4")
926
    ("\\(images/icons/\\)emacs_\\([0-9][0-9]\\)\\.png"
927
     "\\1hicolor/\\2x\\2/apps/emacs.png")
928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947
    ;; Moved from leim/ to lisp/leim/.
    ("\\`quail/[-a-z0-9]+\\.el\\'" "leim/\\&")
    ("\\`ja-dic/ja-dic\\.el\\'" "leim/\\&")
    ("\\`vc-\\(rcs\\|cvs\\|sccs\\)-hooks\\.el\\'" "vc/vc-\\1.el")
    ("\\`vc-\\(annotate\\|arch\\|bzr\\|cvs\\|dav\\|dir\\|dispatcher\\|\
git\\|hg\\|hooks\\|mtn\\|rcs\\|sccs\\|svn\\)\\.el\\'" "vc/\\&")
    ("\\`ediff-\\(diff\\|help\\|hook\\|init\\|merg\\|mult\\|ptch\\|util\\|\
vers\\|wind\\)\\.el\\'" "vc/\\&")
    ("\\`pcvs-\\(defs\\|info\\|parse\\|util\\)\\.el\\'" "vc/\\&")
    ("\\`\\(add-log\\|compare-w\\|cvs-status\\|diff-mode\\|diff\\|\
ediff\\|emerge\\|log-edit\\|log-view\\|pcvs\\|smerge-mode\\|vc\\)\\.el\\'"
     "vc/\\&")
    ("\\`\\(emacs-lisp/\\)?helpers\\.el\\'" "emacs-lisp/subr-x.el")
    ;; I assume this is (essentially) what happened, org/ChangeLog is vague.
    ("\\`org-\\(ascii\\|beamer\\|html\\|icalendar\\|jsinfo\\|latex\
\\|odt\\|publish\\)\\.el\\'" "ox-\\1.el")
    ;; From test/ to test/automated/.
    ("comint-testsuite.el" "automated/\\&")
    ("\\`\\(bytecomp\\|font-parse\\|icalendar\\|occur\\|newsticker\\)\
-testsuite\\.el" "automated/\\1-tests.el")
Glenn Morris's avatar
Glenn Morris committed
948 949
    ("automated/flymake/warnpred/\\(Makefile\\|test\\.\\(?:c\\|pl\\)\\)\\'"
     "automated/data/flymake/\\1")
950 951 952 953 954 955
    ;; NB lax rules should come last.
    ("^m/m-\\(.*\\.h\\)$" "m/\\1" t)
    ("^m-\\(.*\\.h\\)$" "\\1" t)
    ("^s/s-\\(.*\\.h\\)$" "s/\\1" t)
    ("^s-\\(.*\\.h\\)$" "\\1" t)
    ("\\.\\(el\\|[ch]\\|x[pb]m\\|pbm\\)\\'" t t)
956
    )
957 958
  "List of regexps and rewriting rules for renamed files.
Elements are (REGEXP REPLACE [LAX]).  If REPLACE is a string, the file
959
name matching REGEXP is replaced by REPLACE using `replace-string'.
960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981
Otherwise, the file name is accepted as is.
Elements with LAX non-nil are only used in `authors-lax-changelogs'.")

;; It's really not worth trying to make these old logs fully valid.
;; All the obvious real errors are gone.
;; The main issue is _lots_ of moving around of files.
;; Eg the progmodes/ (etc) directories did not exist before 1997.
;; Also, lib-src/ did not exist, the files were in etc/.
;; And various other things.
;; Maybe this should just be any ChangeLog with a . extension,
;; assuming we always fix logs fully before rotating them?
(defconst authors-lax-changelogs
  '("erc/ChangeLog\\.0[1-8]\\'"
    "gnus/ChangeLog\\.[1-2]\\'"
    "lisp/ChangeLog\\.\\([1-9]\\|1[0-5]\\)\\'"
    "mh-e/ChangeLog\\.1\\'"
    "src/ChangeLog\\.\\([1-9]\\|1[0-2]\\)\\'")
  "List of regexps matching ChangeLogs that we do not print errors from.
These are older ChangeLogs that have various issues.
Additionally, for these logs we apply the `lax' elements of
`authors-renamed-files-regexps'.")

982 983 984 985

(defvar authors-checked-files-alist)
(defvar authors-invalid-file-names)

986
;; This has become rather yucky. :(
Glenn Morris's avatar
Glenn Morris committed
987 988 989
(defun authors-disambiguate-file-name (fullname)
  "Convert FULLNAME to an unambiguous relative-name."
  (let ((relname (file-name-nondirectory fullname))
990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007
	dir parent)
    (if (and (member relname authors-ambiguous-files)
	     ;; Try to identify the top-level directory.
	     ;; FIXME should really use ROOT from M-x authors.
	     (not (and (file-directory-p
			(expand-file-name
			 "lib-src"
			 (setq dir (file-name-directory fullname))))
		       (file-directory-p (expand-file-name "etc" dir)))))
	;; I think it looks weird to see eg "lisp/simple.el".
	;; But for eg Makefile.in, we do want to say "lisp/Makefile.in".
	(if (and (string-equal "lisp"
			       (setq parent (file-name-nondirectory
					     (directory-file-name dir))))
		 ;; TODO better to simply have hard-coded list?
		 ;; Only really Makefile.in where this applies.
		 (not (file-exists-p
		       (expand-file-name (concat "../" relname) dir))))
Glenn Morris's avatar
Glenn Morris committed
1008
	    relname
1009 1010 1011 1012
	  ;; In case of ambiguity, just prepend the parent directory.
	  ;; FIXME obviously this is not a perfect solution.
	  (format "%s/%s" (file-name-nondirectory (directory-file-name dir))
		  relname))
Glenn Morris's avatar
Glenn Morris committed
1013 1014
      relname)))

1015 1016 1017 1018 1019 1020 1021 1022 1023 1024
(defun authors-lax-changelog-p (file)
  "Return non-nil if FILE matches `authors-lax-changelogs'."
  (let ((list authors-lax-changelogs)
	found)
    (while list
      (setq list (if (setq found (string-match-p (car list) file))
		     nil
		   (cdr list))))
    found))

1025
(defun authors-canonical-file-name (file log-file pos author)
1026
  "Return canonical file name for FILE found in LOG-FILE.
1027
Checks whether FILE is a valid (existing) file name, has been renamed,
Glenn Morris's avatar
Glenn Morris committed
1028
or is on the list of removed files.  Returns the non-directory part of
1029 1030
the file name.  Only uses the LOG-FILE position POS and associated AUTHOR
to print a message if FILE is not found."
1031
  ;; FILE should be re-checked in every different directory associated
1032
  ;; with a LOG-FILE.  Eg configure.ac from src/ChangeLog is not the
1033 1034 1035
  ;; same as that from top-level/ChangeLog.
  (let* ((fullname (expand-file-name file (file-name-directory log-file)))
	 (entry (assoc fullname authors-checked-files-alist))
1036
	 laxlog relname valid)
1037 1038 1039
    (if entry
	(cdr entry)
      (setq relname (file-name-nondirectory file))
1040 1041
      (if (or (member file authors-valid-file-names)
	      (member relname authors-valid-file-names)
1042
	      (file-exists-p file)
1043 1044
	      (file-exists-p relname)	; FIXME? appropriate?
	      )
Glenn Morris's avatar
Glenn Morris committed
1045
	  (setq valid (authors-disambiguate-file-name fullname))
1046
	(if (setq valid (assoc file authors-renamed-files-alist))
1047
	    (setq valid (cdr valid))
1048 1049 1050
	  (setq laxlog (authors-lax-changelog-p log-file))
	  (let ((rules authors-renamed-files-regexps)
		rule)
1051
	    (while rules
1052 1053 1054 1055
	      (setq rule (car rules))
	      (if (and (or laxlog (not (nth 2 rule)))
		       (string-match (car rule) file))
		  (setq valid (if (stringp (nth 1 rule))
1056
				  (file-name-nondirectory
1057
				   (replace-match (nth 1 rule) t nil file))