authors.el 54.9 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 244
    "\\.\\(cvs\\|git\\)ignore$"		; obsolete or uninteresting
    "\\.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
    "emacsver.texi.in"
Glenn Morris's avatar
Glenn Morris committed
318 319 320 321 322 323 324 325
    "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"
326 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
    ;; 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
352 353
    ;; Used to be in admin, not very interesting.
    "emacs-pretesters" "make-announcement" "make-changelog-diff"
354 355 356 357
    ;; Textual comments that are not files.
    "All" "Version" "Everywhere" "Many" "Various" "files"
    ;; Directories.
    "vms" "mac" "url" "tree-widget"
358
    )
Kim F. Storm's avatar
Kim F. Storm committed
359 360
  "List of files and directories to ignore.
Changes to files in this list are not listed.")
361

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

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


585 586
(defconst authors-valid-file-names
  '("aclocal.m4"
587
    "build-ins.in"
588
    "Makefile"
589
    "Makefile.noleim"
Kim F. Storm's avatar
Kim F. Storm committed
590
    "makedist.bat"
591 592
    "makefile.def"
    "makefile.nt"
Glenn Morris's avatar
Glenn Morris committed
593
    "ns.mk"
594 595 596
    "README"
    ;; There were a few of these, not just the generated top-level one.
    "configure" "config.h"
597
    "is_exec.c" "sigaction.c"
598 599
    ;; nt/
    "ebuild.bat" "install.bat" "fast-install.bat"
600
    "debug.bat.in" "emacs.bat.in" "addsection.c"
601
    "inc/sys/dir.h" "inc/gettext.h"
602 603 604 605
    ".gdbinit-union"
    "alloca.s"
    "make-delta"
    "config.w95"
606
    "msysconfig.sh"
607 608 609 610 611 612 613
    "emacstool.1"
    "align.umax"
    "cxux-crt0.s"
    "gould-sigvec.s"
    "getdate.y"
    "ymakefile"
    "permute-index" "index.perm"
Glenn Morris's avatar
Glenn Morris committed
614
    "ibmrs6000.inp"
Glenn Morris's avatar
Glenn Morris committed
615
    "b2m.c" "b2m.1" "b2m.pl" "rcs-checkin.1"
Glenn Morris's avatar
Glenn Morris committed
616
    "emacs.bash" "emacs.csh" "ms-kermit"
617
    "emacs.ico"
618
    "emacs21.ico"
Glenn Morris's avatar
Glenn Morris committed
619
    "emacs.py" "emacs2.py" "emacs3.py"
Glenn Morris's avatar
Glenn Morris committed
620
    "BABYL" "LPF" "LEDIT" "OTHER.EMACSES"
621 622 623
    "emacs16_mac.png" "emacs24_mac.png"
    "emacs256_mac.png" "emacs32_mac.png"
    "emacs48_mac.png" "emacs512_mac.png"
624 625 626 627 628 629 630 631 632 633 634 635 636
    "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
637
    "revdiff"				; admin/
Glenn Morris's avatar
Glenn Morris committed
638
    "vcdiff" "rcs-checkin" "tindex.pl"
Glenn Morris's avatar
Glenn Morris committed
639 640
    "mainmake" "sed1.inp" "sed2.inp" "sed3.inp" ; msdos/
    "mac-fix-env.m"
641 642
    ;; Deleted vms stuff:
    "temacs.opt" "descrip.mms" "compile.com" "link.com"
643 644
    "compact.el" "fadr.el"
    "calc/calc-maint.el"
645
    "emacs-lisp/cl-specs.el"
646 647 648 649
    "emacs-lisp/eieio-comp.el"
    "erc-hecomplete.el"
    "eshell/esh-maint.el"
    "language/persian.el"
650
    "ledit.el" "meese.el" "iswitchb.el" "longlines.el"
651 652 653
    "mh-exec.el" "mh-init.el" "mh-customize.el"
    "net/zone-mode.el" "xesam.el"
    "term/mac-win.el" "sup-mouse.el"
654 655
    "term/vt102.el" "term/vt201.el" "term/vt220.el" "term/vt300.el"
    "term/vt320.el" "term/vt400.el" "term/vt420.el"
656 657 658 659 660 661 662
    "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"
663
    "progmodes/cap-words.el"
664 665 666 667 668 669 670 671 672 673
    ;; 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"
674
    "format-spec.el" "gnus-move.el"
675 676 677 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"
    "yow.c"
    ;; etc/
    "emacsclient.c" "etags.c" "hexl.c" "make-docfile.c" "movemail.c"
697
    "test-distrib.c" "testfile"
Glenn Morris's avatar
Glenn Morris committed
698
    "tpu-edt.doc"			; see below
699
    )
Glenn Morris's avatar
Glenn Morris committed
700 701
  "File names which are valid, but no longer exist (or cannot be found)
in the repository.")
702

703 704 705 706 707
;; 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?
708 709 710 711 712 713 714 715
(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")
716
    ("s/ms-w32.h" . "inc/ms-w32.h")
717
    ("src/config.h" . "config.h")
718
    ("winnt.el" . "w32-fns.el")
719
    ("linux.h" . "gnu-linux.h")
Glenn Morris's avatar
Glenn Morris committed
720
    ("emacs.manifest" . "emacs-x86.manifest")
721
    ("config.emacs" . "configure")
722
    ("configure.in" . "configure.ac")
723 724 725
    ("config.h.dist" . "config.in")
    ("config.h-dist" . "config.in")
    ("config.h.in" . "config.in")
726 727 728 729 730 731 732
    ("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")
733
    ("patch1" . "sed1.inp")
734 735 736 737
    ("INSTALL.MSYS" . "INSTALL")
    ("server.c" . "emacsserver.c")
    ("lib-src/etags.c" . "etags.c")
    ;; msdos/
738
    ("is-exec.c" . "is_exec.c")
739
    ("enriched.doc" . "enriched.txt")
740
    ("GETTING.GNU.SOFTWARE" . "FTP")
741 742 743 744 745 746 747 748 749 750 751
    ("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
752 753 754 755
    ;; 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")
756
    ("Makefile.in.in" . "Makefile.in")
Kim F. Storm's avatar
Kim F. Storm committed
757 758
    ("leim-Makefile" . "leim/Makefile")
    ("leim-Makefile.in" . "leim/Makefile.in")
759 760
    ("emacs-lisp/testcover-ses.el" . "tcover-ses.el")
    ("emacs-lisp/testcover-unsafep.el" . "tcover-unsafep.el")
761
    ("progmodes/dos.el" . "bat-mode.el")
762 763 764
    ;; 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
765
    ("font-setting.el" . "dynamic-setting.el")
766 767 768 769 770 771 772 773
    ("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")
774 775 776 777 778
    ("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")
779
    ;; Obsolete.
780 781
    ("emacs-lisp/assoc.el" . "assoc.el")
    ("emacs-lisp/cust-print.el" . "cust-print.el")
782 783 784 785 786 787 788
    ("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")
789
    ("mail/mailpost.el" . "mailpost.el")
790
    ("play/bruce.el" . "bruce.el")
791
    ("play/yow.el" . "yow.el")
792 793 794 795 796 797 798 799 800 801
    ("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")
802
    ("automated/package-x-test.el" . "automated/package-test.el")
803 804 805
    ;; INSTALL-CVS -> .CVS -> .BZR -> .REPO
    ("INSTALL-CVS" . "INSTALL.REPO")
    ("INSTALL.CVS" . "INSTALL.REPO")
806
    ("INSTALL.BZR" . "INSTALL.REPO")
807
    ("gnus-logo.eps" . "gnus-logo.eps")	; moved to refcards/
808 809 810
    ("build-install" . "build-ins.in")
    ("build-install.in" . "build-ins.in")
    ("unidata/Makefile" . "unidata/Makefile.in")
811
    ("mac/uvs.el" . "unidata/uvs.el")
812 813 814 815 816 817 818 819 820
    ;; 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")
821 822
    ("msdog-xtra.texi" . "msdos-xtra.texi")
    ("msdog.texi" . "msdos.texi")
823 824 825 826
    ;; And from emacs/ to misc/ and back again.
    ("ns-emacs.texi" . "macos.texi")
    ("overrides.texi" . "gnus-overrides.texi")
    ("xresmini.texi" . "xresources.texi")
827 828
    ;; Not renamed, but we only have the latter in the Emacs repo.
    ("trampver.texi.in" . "trampver.texi")
829 830 831
    ;; Renamed with same directory.
    ("e/eterm" . "eterm-color")
    ("e/eterm.ti" . "eterm-color.ti")
832 833 834 835 836
    ("README.txt" . "README")
    ("emacs.names" . "JOKES")
    ("ED.WORSHIP" . "JOKES")
    ("GNU.JOKES" . "JOKES")
    ("CHARACTERS" . "TODO")
837 838 839 840 841 842 843 844 845
    ("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
846
    ("edt-user.doc" . "edt.texi")
Glenn Morris's avatar
Glenn Morris committed
847
    ("DEV-NOTES" . "nextstep")
Glenn Morris's avatar
Glenn Morris committed
848
    ("org/COPYRIGHT-AND-LICENSE" . "org/README")
849 850 851 852 853 854
    ;; 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")
855 856 857 858 859 860
    ("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")
861 862
    ;; Moved from lisp/emacs-lisp/ to admin/.
    ("emacs-lisp/authors.el" . "authors.el")
863 864 865
    ;; 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
866 867
    ;; Moved from admin/nt/ to nt/.
    ("nt/README.W32" . "README.W32")
868 869 870 871
    )
  "Alist of files which have been renamed during their lifetime.
Elements are (OLDNAME . NEWNAME).")

872 873 874 875 876
;; 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.
877
(defconst authors-renamed-files-regexps
878 879 880 881 882 883 884 885 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
  '(("\\`\\(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\\)\\)$"
915
     "images/\\1")
916
    ("^\\(images/icons/\\)mac\\(emacs\\)_\\([0-9]+\\)\\(\\.png\\)"
917
     "\\1\\2\\3_mac\\4")
918
    ("\\(images/icons/\\)emacs_\\([0-9][0-9]\\)\\.png"
919
     "\\1hicolor/\\2x\\2/apps/emacs.png")
920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945
    ;; 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")
    ;; 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)
946
    )
947 948
  "List of regexps and rewriting rules for renamed files.
Elements are (REGEXP REPLACE [LAX]).  If REPLACE is a string, the file
949
name matching REGEXP is replaced by REPLACE using `replace-string'.
950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971
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'.")

972 973 974 975

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

976
;; This has become rather yucky. :(
Glenn Morris's avatar
Glenn Morris committed
977 978 979
(defun authors-disambiguate-file-name (fullname)
  "Convert FULLNAME to an unambiguous relative-name."
  (let ((relname (file-name-nondirectory fullname))
980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997
	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
998
	    relname
999 1000 1001 1002
	  ;; 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
1003 1004
      relname)))

1005 1006 1007 1008 1009 1010 1011 1012 1013 1014
(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))

1015
(defun authors-canonical-file-name (file log-file pos author)
1016
  "Return canonical file name for FILE found in LOG-FILE.
1017
Checks whether FILE is a valid (existing) file name, has been renamed,
Glenn Morris's avatar
Glenn Morris committed
1018
or is on the list of removed files.  Returns the non-directory part of
1019 1020
the file name.  Only uses the LOG-FILE position POS and associated AUTHOR
to print a message if FILE is not found."
1021
  ;; FILE should be re-checked in every different directory associated
1022
  ;; with a LOG-FILE.  Eg configure.ac from src/ChangeLog is not the
1023 1024 1025
  ;; 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))
1026
	 laxlog relname valid)
1027 1028 1029
    (if entry
	(cdr entry)
      (setq relname (file-name-nondirectory file))
1030 1031
      (if (or (member file authors-valid-file-names)
	      (member relname authors-valid-file-names)
1032
	      (file-exists-p file)
1033 1034
	      (file-exists-p relname)	; FIXME? appropriate?
	      )
Glenn Morris's avatar
Glenn Morris committed
1035
	  (setq valid (authors-disambiguate-file-name fullname))
1036
	(if (setq valid (assoc file authors-renamed-files-alist))
1037
	    (setq valid (cdr valid))
1038 1039 1040
	  (setq laxlog (authors-lax-changelog-p log-file))
	  (let ((rules authors-renamed-files-regexps)
		rule)
1041
	    (while rules
1042 1043 1044 1045
	      (setq rule (car rules))
	      (if (and (or laxlog (not (nth 2 rule)))
		       (string-match (car rule) file))
		  (setq valid (if (stringp (nth 1 rule))
1046
				  (file-name-nondirectory
1047
				   (replace-match (nth 1 rule) t nil file))
1048
				relname)
1049 1050
			rules nil)
		(setq rules (cdr rules)))))))
1051
      (setq authors-checked-files-alist
1052
	    (cons (cons fullname valid) authors-checked-files-alist))
1053
      (unless (or valid
1054
		  (member file authors-ignored-files)
Glenn Morris's avatar
Glenn Morris committed
1055
		  (authors-obsolete-file-p file)
1056
		  (string-match "[*]" file)
1057 1058
		  (string-match "^[0-9.]+$" file)
		  laxlog)
1059
	(setq authors-invalid-file-names
1060 1061 1062 1063 1064 1065 1066
	      (cons (format "%s:%d: unrecognized `%s' for %s"
			    log-file
			    (1+ (count-lines (point-min) pos))