authors.el 53.1 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
    ("K. Shane Hartman" "Shane Hartman")
96
    ("Kai Großjohann" "Kai Grossjohann")
97
    ("Karl Berry" "K. Berry")
98
    ("Károly Lőrentey" "Károly Lőrentey" "Lőrentey Károly")
99
    ("Kazushi Marukawa" "Kazushi (Jam) Marukawa")
100
    ("Ken Manheimer" "Kenneth Manheimer")
101
    ("Kenichi Handa" "Ken'ichi Handa" "Kenichi HANDA" "K\\. Handa")
Kim F. Storm's avatar
Kim F. Storm committed
102
    ("Kevin Greiner" "Kevin J. Greiner")
103
    ("Kim F. Storm" "Kim Storm")
104
    ("Kyle Jones" "Kyle E. Jones")
Glenn Morris's avatar
Glenn Morris committed
105
    ("Lars Magne Ingebrigtsen" "Lars Ingebrigtsen")
106
    ("Marcus G. Daniels" "Marcus Daniels")
107
    ("Mark D. Baushke" "Mark D Baushke")
108
    ("Mark E. Shoulson" "Mark Shoulson")
109
    ("Marko Kohtala" "Kohtala Marko")
Glenn Morris's avatar
Glenn Morris committed
110
    ("Agustín Martín" "Agustin Martin" "Agustín Martín Domingo")
111 112
    ("Martin Lorentzon" "Martin Lorentzson")
    ("Matt Swift" "Matthew Swift")
113
    ("Maxime Edouard Robert Froumentin" "Max Froumentin")
Kim F. Storm's avatar
Kim F. Storm committed
114
    ("Michael R. Mauger" "Michael Mauger")
115
    ("Michael D. Ernst" "Michael Ernst")
116
    ("Michaël Cadilhac" "Michael Cadilhac")
117
    ("Michael I. Bushnell" "Michael I Bushnell" "Michael I. Bushnell, p/BSG")
118 119
    ("Michael R. Cook" "Michael Cook")
    ("Michael Sperber" "Michael Sperber \\[Mr. Preprocessor\\]")
Kim F. Storm's avatar
Kim F. Storm committed
120
    ("Mikio Nakajima" "Nakajima Mikio")
121
    ("Nelson Jose dos Santos Ferreira" "Nelson Ferreira")
Glenn Morris's avatar
Glenn Morris committed
122
    ("Noorul Islam" "Noorul Islam K M")
123
    ("Paul Eggert" "Paul R\\. Eggert")
124
    ("Pavel Janík" "Pavel Janík Ml." "Pavel Janik Ml." "Pavel Janik")
125
    ("Pavel Kobiakov" "Pavel Kobyakov")
126
    ("Per Abrahamsen" "Per Abhiddenware")
127
    ("Per Starbäck" "Per Starback")
Glenn Morris's avatar
Glenn Morris committed
128
    ("Peter J. Weisberg" "PJ Weisberg")
129
    ("Peter S. Galbraith" "Peter S Galbraith" "Peter Galbraith")
130
    ("Peter Runestig" "Peter 'luna' Runestig")
Glenn Morris's avatar
Glenn Morris committed
131 132
    ("Piotr Zieliński" "Piotr Zielinski")
    ("Rainer Schöpf" "Rainer Schoepf")
133 134 135
    ("Raja R. Harinath" "Raja R Harinath")
    ("Richard G. Bielawski" "Richard G Bielawski" "Richard Bielawski")
    ("Richard King" "Dick King")
136
    ("Richard M. Stallman" "Richard Stallman" "rms@gnu.org")
137
    ("Robert J. Chassell" "Bob Chassell")
138
    ("Roberto Huelga Díaz" "Roberto Huelga")
139
    ("Roland B. Roberts" "Roland B Roberts" "Roland Roberts")
140
    ("Rui-Tao Dong" "Rui-Tao Dong ~{6-HpLN~}")
Romain Francoise's avatar
Romain Francoise committed
141
    ("Sacha Chua" "Sandra Jean Chua")
142
    ("Sam Steingold" "Sam Shteingold")
143
    ("Satyaki Das" "Indexed search by Satyaki Das")
Glenn Morris's avatar
Glenn Morris committed
144
    ("Sébastien Vauban" "Sebastien Vauban")
145 146
    ;; There are other Stefans.
;;;    ("Stefan Monnier" "Stefan")
147
    ("Steven L. Baur" "SL Baur" "Steven L Baur")
148
    ("Stewart M. Clamen" "Stewart Clamen")
149
    ("Stuart D. Herring" "Stuart Herring" "Davis Herring")
Glenn Morris's avatar
Glenn Morris committed
150
    ("T.V. Raman" "T\\. V\\. Raman")
151
    ("Taichi Kawabata" "KAWABATA,? Taichi")
152
    ("Takaaki Ota" "Tak Ota")
Kim F. Storm's avatar
Kim F. Storm committed
153
    ("Takahashi Naoto" "Naoto Takahashi")
154
    ("Teodor Zlatanov" "Ted Zlatanov")
Glenn Morris's avatar
Glenn Morris committed
155
    ("Thomas Dye" "Tom Dye")
156 157
    ("Thomas Horsley" "Tom Horsley")	; FIXME ?
    ("Thomas Wurgler" "Tom Wurgler")
158
    ("Toby Cubitt" "Toby S\\. Cubitt")
159
    ("Tomohiko Morioka" "MORIOKA Tomohiko")
160 161
    ("Torbjörn Axelsson" "Torbjvrn Axelsson")
    ("Torbjörn Einarsson" "Torbj.*rn Einarsson")
162
    ("Toru Tomabechi" "Toru TOMABECHI")
163
    ("Tsugutomo Enami" "enami tsugutomo")
164
    ("Ulrich Müller" "Ulrich Mueller")
165
    ("Vincent Del Vecchio" "Vince Del Vecchio")
166
    ("William M. Perry" "Bill Perry")
167
    ("Wlodzimierz Bzyl" "W.*dek Bzyl")
168 169
    ("Yoni Rabkin" "Yoni Rabkin Katzenell")
    ("Yoshinori Koseki" "KOSEKI Yoshinori" "小関 吉則")
170
    ("Yutaka NIIBE" "NIIBE Yutaka")
171
    )
Gerd Moellmann's avatar
Gerd Moellmann committed
172 173
  "Alist of author aliases.

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

Glenn Morris's avatar
Glenn Morris committed
178
;; FIXME seems it would be less fragile to check for O', Mc, etc.
179
(defconst authors-fixed-case
Glenn Morris's avatar
Glenn Morris committed
180 181
  '("Brian van den Broek"
    "Bryan O'Sullivan"
182
    "Christian von Roques"
183
    "Christophe de Dinechin"
184 185 186 187
    "Craig McDaniel"
    "David J. MacKenzie"
    "David McCabe"
    "David O'Toole"
Glenn Morris's avatar
Glenn Morris committed
188
    "Devon Sean McCullough"
189 190 191 192 193 194
    "Dominique de Waleffe"
    "Edward O'Connor"
    "Exal de Jesus Garcia Carrillo"
    "Greg McGary"
    "Hans de Graaff"
    "James TD Smith"
Glenn Morris's avatar
Glenn Morris committed
195
    "Jay McCarthy"
196
    "Joel N. Weber II"
Glenn Morris's avatar
Glenn Morris committed
197
    "Matt McClure"
198 199
    "Michael McNamara"
    "Mike McEwan"
200
    "Nelson Jose dos Santos Ferreira"
201 202
    "Peter von der Ahe"
    "Peter O'Gorman"
Glenn Morris's avatar
Glenn Morris committed
203
    "Piet van Oostrum"
204
    "Roland McGrath"
Glenn Morris's avatar
Glenn Morris committed
205 206
    "Sean O'Halpin"
    "Sean O'Rourke"
Glenn Morris's avatar
Glenn Morris committed
207
    "Thomas DeWeese"
Glenn Morris's avatar
Glenn Morris committed
208
    "Tijs van Bakel")
209
  "List of authors whose names cannot be simply capitalized.")
Gerd Moellmann's avatar
Gerd Moellmann committed
210

211
(defvar authors-public-domain-files
212
  '("emerge\\.el"
213 214 215 216 217 218
    "vi\\.el"
    "feedmail\\.el"
    "mailpost\\.el"
    "hanoi\\.el"
    "meese\\.el"
    "studly\\.el"
219 220 221 222 223 224 225
    "modula2\\.el"
    "nnmaildir\\.el"
    "nnil\\.el"
    "b2m\\.c"
    "unexhp9k800\\.c"
    "emacsclient\\.1"
    "check-doc-strings")
226 227 228
  "List of regexps matching files for which the FSF doesn't need papers.")


229
(defvar authors-obsolete-files-regexps
230
  '(".*loaddefs.el$"			; not obsolete, but auto-generated
Glenn Morris's avatar
Glenn Morris committed
231 232
    "\\.\\(cvs\\|git\\)ignore$"		; obsolete or uninteresting
    "\\.arch-inventory$"
Glenn Morris's avatar
Glenn Morris committed
233
    ;; TODO lib/? Matches other things?
234
    "build-aux/" "m4/" "Emacs.xcodeproj" "mapfiles" "\\.map\\'"
Glenn Morris's avatar
Glenn Morris committed
235
    "preferences\\.\\(nib\\|gorm\\)"
236 237 238
    ;; Generated files that have since been removed.
    "\\(refcard\\(-de\\|-pl\\)?\\|calccard\\|dired-ref\\|orgcard\\|\
gnus-booklet\\|fr-drdref\\)\\.p\\(df\\|s\\)\\'")
239
  "List of regexps matching obsolete files.
Glenn Morris's avatar
Glenn Morris committed
240
Changes to files matching one of the regexps in this list are not listed.")
241

Kim F. Storm's avatar
Kim F. Storm committed
242 243 244 245
(defconst authors-ignored-files
  '("external-lisp"
    "lock" "share-lib" "local-lisp"
    "noleim-Makefile.in"
246 247 248 249 250 251
    "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"
252
    "MAINTAINERS" "MH-E-NEWS"
253
    "install.sh" "install-sh" "missing" "mkinstalldirs"
254 255 256 257 258 259
    "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"
260
    "spec.txt"
261
    "js2-mode.el"      ; only installed very briefly, replaced by js.el
262 263 264 265
    ;; 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
266 267 268 269 270 271 272 273
    "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"
274
    ;; Autogen:
275
    "cus-load.el" "finder-inf.el" "ldefs-boot.el" "loaddefs-boot.el"
Glenn Morris's avatar
Glenn Morris committed
276
    "compile" "config.guess" "config.sub" "depcomp"
277 278 279 280 281
    "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
282 283 284
    ;; Only existed briefly, then renamed:
    "images/icons/allout-widgets-dark-bg"
    "images/icons/allout-widgets-light-bg"
285
    ;; Never had any meaningful changes logged, now deleted:
Glenn Morris's avatar
Glenn Morris committed
286
    "unidata/bidimirror.awk" "unidata/biditype.awk"
287
    "split-man" "Xkeymap.txt" "ms-7bkermit" "ulimit.hack"
288
    "gnu-hp300" "refcard.bit" "ledit.l" "forms.README" "forms-d2.dat"
289 290
    "CXTERM-DIC/PY.tit" "CXTERM-DIC/ZIRANMA.tit"
    "CXTERM-DIC/CTLau.tit" "CXTERM-DIC/CTLauB.tit"
291 292
    "copying.paper" "celibacy.1" "condom.1" "echo.msg" "sex.6"
    "COOKIES" "INTERVIEW" "MAILINGLISTS" "MOTIVATION"
293 294 295
    "NICKLES.WORTH" "INTERVAL.IDEAS" "RCP"
    "3B-MAXMEM" "AIX.DUMP" "SUN-SUPPORT" "XENIX"
    "CODINGS" "CHARSETS"
Glenn Morris's avatar
Glenn Morris committed
296
    "calc/INSTALL" "calc/Makefile" "calc/README.prev"
Glenn Morris's avatar
Glenn Morris committed
297
    "vms-pp.trans" "_emacs" "batcomp.com" "notes/cpp" ; admin/
Glenn Morris's avatar
Glenn Morris committed
298
    "emacsver.texi.in"
Glenn Morris's avatar
Glenn Morris committed
299 300 301 302 303 304 305 306
    "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"
307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332
    ;; 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
333 334
    ;; Used to be in admin, not very interesting.
    "emacs-pretesters" "make-announcement" "make-changelog-diff"
335 336 337 338
    ;; Textual comments that are not files.
    "All" "Version" "Everywhere" "Many" "Various" "files"
    ;; Directories.
    "vms" "mac" "url" "tree-widget"
339
    )
Kim F. Storm's avatar
Kim F. Storm committed
340 341
  "List of files and directories to ignore.
Changes to files in this list are not listed.")
342

Glenn Morris's avatar
Glenn Morris committed
343 344 345
;; List via: find . -name '*.el' | sed 's/.*\///g' | sort | uniq -d
;; FIXME It would be better to discover these dynamically.
(defconst authors-ambiguous-files
346 347 348 349
  '("Makefile.in"
    "makefile.w32-in"
    "chart.el"
    "cl-lib.el"
Glenn Morris's avatar
Glenn Morris committed
350 351 352 353
    "compile.el"
    "complete.el"
    "cpp.el"
    "ctxt.el"
Glenn Morris's avatar
Glenn Morris committed
354 355 356
    "custom.el"
    "cyrillic.el"
    "czech.el"
Glenn Morris's avatar
Glenn Morris committed
357 358 359
    "debug.el"
    "dired.el"
    "el.el"
Glenn Morris's avatar
Glenn Morris committed
360 361 362
    "eshell.el"
    "ethiopic.el"
    "f90.el"
Glenn Morris's avatar
Glenn Morris committed
363 364 365
    "files.el"
    "find.el"
    "format.el"
Glenn Morris's avatar
Glenn Morris committed
366 367
    "generic.el"
    "georgian.el"
368
    "grammar.el"
Glenn Morris's avatar
Glenn Morris committed
369
    "greek.el"
Glenn Morris's avatar
Glenn Morris committed
370
    "grep.el"
Glenn Morris's avatar
Glenn Morris committed
371
    "hebrew.el"
Glenn Morris's avatar
Glenn Morris committed
372
    "imenu.el"
Glenn Morris's avatar
Glenn Morris committed
373
    "indian.el"
374
    "info-xref.el"
Glenn Morris's avatar
Glenn Morris committed
375
    "japanese.el"
Glenn Morris's avatar
Glenn Morris committed
376
    "java.el"
Glenn Morris's avatar
Glenn Morris committed
377
    "lao.el"
Glenn Morris's avatar
Glenn Morris committed
378 379 380 381
    "linux.el"
    "locate.el"
    "make.el"
    "mode.el"
382
    "mule-util.el"
Glenn Morris's avatar
Glenn Morris committed
383
    "python.el"
Glenn Morris's avatar
Glenn Morris committed
384
    "rmailmm.el"
Glenn Morris's avatar
Glenn Morris committed
385 386 387
    "semantic.el"
    "shell.el"
    "simple.el"
Glenn Morris's avatar
Glenn Morris committed
388
    "slovak.el"
Glenn Morris's avatar
Glenn Morris committed
389 390 391 392 393
    "sort.el"
    "speedbar.el"
    "srecode.el"
    "table.el"
    "texi.el"
Glenn Morris's avatar
Glenn Morris committed
394
    "thai.el"
395
    "thingatpt.el"
Glenn Morris's avatar
Glenn Morris committed
396
    "tibetan.el"
Glenn Morris's avatar
Glenn Morris committed
397
    "util.el"
Glenn Morris's avatar
Glenn Morris committed
398
    "vc-bzr.el"
Glenn Morris's avatar
Glenn Morris committed
399 400 401
    "wisent.el")
  "List of basenames occurring more than once in the source.")

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


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

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

836 837 838 839 840
;; 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.
841
(defconst authors-renamed-files-regexps
842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878
  '(("\\`\\(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\\)\\)$"
879
     "images/\\1")
880
    ("^\\(images/icons/\\)mac\\(emacs\\)_\\([0-9]+\\)\\(\\.png\\)"
881
     "\\1\\2\\3_mac\\4")
882
    ("\\(images/icons/\\)emacs_\\([0-9][0-9]\\)\\.png"
883
     "\\1hicolor/\\2x\\2/apps/emacs.png")
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
    ;; 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)
910
    )
911 912
  "List of regexps and rewriting rules for renamed files.
Elements are (REGEXP REPLACE [LAX]).  If REPLACE is a string, the file
913
name matching REGEXP is replaced by REPLACE using `replace-string'.
914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935
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'.")

936 937 938 939

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

940
;; This has become rather yucky. :(
Glenn Morris's avatar
Glenn Morris committed
941 942 943
(defun authors-disambiguate-file-name (fullname)
  "Convert FULLNAME to an unambiguous relative-name."
  (let ((relname (file-name-nondirectory fullname))
944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961
	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
962
	    relname
963 964 965 966
	  ;; 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
967 968
      relname)))

969 970 971 972 973 974 975 976 977 978
(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))

979
(defun authors-canonical-file-name (file log-file pos author)
980
  "Return canonical file name for FILE found in LOG-FILE.
981
Checks whether FILE is a valid (existing) file name, has been renamed,