-;;; authors.el --- utility for maintaining Emacs' AUTHORS file -*-coding: iso-2022-7bit;-*-
+;;; authors.el --- utility for maintaining Emacs' AUTHORS file -*-coding: utf-8;-*-
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007 Free Software Foundation, Inc.
+;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+;; 2009 Free Software Foundation, Inc.
;; Author: Gerd Moellmann <gerd@gnu.org>
;; Maintainer: Kim F. Storm <storm@cua.dk>
;; This file is part of GNU Emacs.
-;; GNU Emacs is free software; you can redistribute it and/or modify
+;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;;; Code:
-(defvar authors-coding-system 'iso-2022-7bit
+(defvar authors-coding-system 'utf-8
"Coding system used in the AUTHORS file.")
(defconst authors-many-files 20
(defconst authors-aliases
'(
+ ("Aaron S. Hawley" "Aaron Hawley")
("Andrew Csillag" "Drew Csillag")
("Anna M. Bigatti" "Anna Bigatti")
("Barry A. Warsaw" "Barry A. Warsaw, Century Computing, Inc."
"Barry A. Warsaw, ITB" "Barry Warsaw")
- ("Bj\e,Av\e(Brn Torkelsson" "Bjorn Torkelsson")
+ ("Björn Torkelsson" "Bjorn Torkelsson")
("Brian Fox" "Brian J. Fox")
("Christoph Wedler" "Christoph.Wedler@sap.com")
("Daniel Pfeiffer" "<Daniel.Pfeiffer@Informatik.START.db.de>"
"<Daniel.Pfeiffer@Informatik.START.dbp.de>")
("David Gillespie" "Dave Gillespie")
- ("David K\e,Ae\e(Bgedal" "David K..edal")
- ("David M. Koppelman" "David M. Koppelman, Koppel@Ee.Lsu.Edu"
+ ("David Kågedal" "David K..edal")
+ ("David M. Koppelman" "David M. Koppelman, Koppel@Ec?e.Lsu.Edu"
"David Koppelman")
("David M. Smith" "David Smith" "David M Smith")
+ ("Deepak Goel" "D. Goel")
("Ed L. Cashin" "Ed L Cashin")
("Edward M. Reingold" "Ed Reingold" "Edward M Reingold"
"Reingold Edward M")
("Eric S. Raymond" "Eric Raymond")
("Eric Youngdale" "(Eric Youngdale at youngdale@v6550c.nrl.navy.mil)")
("Francis J. Wright" "Dr Francis J. Wright" "Francis Wright")
- ("Fran\e,Ag\e(Bois Pinard" "Francois Pinard")
- ("Francesco Potort\e,Al\e(B" "Francesco Potorti" "Francesco Potorti`")
+ ("François Pinard" "Francois Pinard")
+ ("Francesco Potortì" "Francesco Potorti" "Francesco Potorti`")
("Frederic Pierresteguy" "Fred Pierresteguy")
("Geoff Voelker" "voelker")
- ("Gerd M\e,Av\e(Bllmann" "Gerd Moellmann")
+ ("Gerd Möllmann" "Gerd Moellmann")
("Hallvard B. Furuseth" "Hallvard B Furuseth")
- ("Hrvoje Nik\e$,1!!\e(Bi\e$,1 '\e(B" "Hrvoje Niksic")
+ ("Hrvoje Nikšić" "Hrvoje Niksic")
(nil "(afs@hplb.hpl.hp.com)")
(nil "<Use-Author-Address-Header@\\[127.1\\]>")
(nil "Code Extracted")
(nil "\\`FSF")
(nil "ISO-2022-JP")
("Jaeyoun Chung" "Jae-youn Chung" "Jae-you Chung" "Chung Jae-youn")
- ("Jan Dj\e,Ad\e(Brv" "Jan D." "Jan Djarv")
+ ("Jan Djärv" "Jan D." "Jan Djarv")
("Jay K. Adams" "jka@ece.cmu.edu" "Jay Adams")
- ("J\e,Ai\e(Br\e,At\e(Bme Marant" "J\e,Ai\e(Br\e,At\e(Bme Marant" "Jerome Marant")
+ ("Jérôme Marant" "Jérôme Marant" "Jerome Marant")
("Jens-Ulrik Holger Petersen" "Jens-Ulrik Petersen")
("Jeremy Bertram Maitin-Shepard" "Jeremy Maitin-Shepard")
- ("Johan Bockg\e,Ae\e(Brd" "Johan Bockgard")
+ ("Johan Bockgård" "Johan Bockgard")
("John W. Eaton" "John Eaton")
("Jonathan I. Kamens" "Jonathan Kamens")
("Joseph Arceneaux" "Joe Arceneaux")
- ("Juan Le\e,As\e(Bn Lahoz Garc\e,Am\e(Ba" "Juan-Leon Lahoz Garcia")
+ ("Juan León Lahoz García" "Juan-Leon Lahoz Garcia")
("K. Shane Hartman" "Shane Hartman")
- ("Kai Gro\e,A_\e(Bjohann" "Kai Grossjohann" "Kai Gro\e,A_\e(Bjohann"
+ ("Kai Großjohann" "Kai Grossjohann" "Kai Großjohann"
"Kai.Grossjohann@Cs.Uni-Dortmund.De"
"Kai.Grossjohann@Gmx.Net")
("Karl Berry" "K. Berry")
- ("K\e,Aa\e(Broly L\e$,1 q\e(Brentey" "K\e,Aa\e(Broly L\e$,1 q\e(Brentey" "L\e$,1 q\e(Brentey K\e,Aa\e(Broly")
+ ("Károly Lőrentey" "Károly Lőrentey" "Lőrentey Károly")
("Kazushi Marukawa" "Kazushi")
("Ken Manheimer" "Kenneth Manheimer")
("Kenichi Handa" "Ken'ichi Handa" "Kenichi HANDA")
("Kyle Jones" "Kyle E. Jones")
("Marcus G. Daniels" "Marcus Daniels")
("Mark D. Baushke" "Mark D Baushke")
- ("Agust\e,Am\e(Bn Mart\e,Am\e(Bn" "Agustin Martin")
+ ("Agustín Martín" "Agustin Martin")
("Martin Lorentzon" "Martin Lorentzson")
("Matt Swift" "Matthew Swift")
("Michael R. Mauger" "Michael Mauger")
("Michael D. Ernst" "Michael Ernst")
- ("Micha\e,Ak\e(Bl Cadilhac" "Michael Cadilhac")
+ ("Michaël Cadilhac" "Michael Cadilhac")
("Michael I. Bushnell" "Michael I Bushnell" "Michael I. Bushnell, P/Bsg")
("Mikio Nakajima" "Nakajima Mikio")
("Paul Eggert" "eggert")
("Paul Reilly" "(pmr@legacy.pajato.com)")
- ("Pavel Jan\e,Am\e(Bk" "Pavel Jan\e,Am\e(Bk Ml." "Pavel Jan\e,Am\e(Bk" "Pavel@Janik.Cz")
+ ("Pavel Janík" "Pavel Janík Ml." "Pavel Janik Ml." "Pavel Janik" "Pavel Janík" "Pavel@Janik.Cz")
("Per Abrahamsen" "Per Abhiddenware")
("Peter S. Galbraith" "Peter Galbraith")
("Peter Runestig" "Peter 'luna' Runestig")
("Sacha Chua" "Sandra Jean Chua")
("Sam Steingold" "Sam Shteingold")
("Satyaki Das" "Indexed search by Satyaki Das")
- ("Stefan Monnier" "Stefan")
+ ;; There are other Stefans.
+;;; ("Stefan Monnier" "Stefan")
("Stephen A. Wood" "(saw@cebaf.gov)")
("Steven L. Baur" "SL Baur" "Steven L Baur")
+ ("Stewart M. Clamen" "Stewart Clamen")
+ ("Taichi Kawabata" "KAWABATA,? Taichi")
("Takaaki Ota" "Tak Ota")
("Takahashi Naoto" "Naoto Takahashi")
("Teodor Zlatanov" "Ted Zlatanov")
- ("Torbj\e,Av\e(Brn Axelsson" "Torbjvrn Axelsson")
- ("Torbj\e,Av\e(Brn Einarsson" "Torbj.*rn Einarsson")
+ ("Torbjörn Axelsson" "Torbjvrn Axelsson")
+ ("Torbjörn Einarsson" "Torbj.*rn Einarsson")
("Toru Tomabechi" "Toru Tomabechi,")
("Vincent Del Vecchio" "Vince Del Vecchio")
("William M. Perry" "Bill Perry")
matches one of the REGEXPs, use REALNAME instead.
If REALNAME is nil, ignore that author.")
+(defconst authors-fixed-case
+ '("Bryan O'Sullivan"
+ "Christian von Roques"
+ "Christophe de Dinechin"
+ "Craig McDaniel"
+ "David J. MacKenzie"
+ "David McCabe"
+ "David O'Toole"
+ "Dominique de Waleffe"
+ "Edward O'Connor"
+ "Exal de Jesus Garcia Carrillo"
+ "Greg McGary"
+ "Hans de Graaff"
+ "James TD Smith"
+ "Michael McNamara"
+ "Mike McEwan"
+ "Peter von der Ahe"
+ "Peter O'Gorman"
+ "Roland McGrath"
+ "Sean O'Rourke")
+ "List of authors whose names cannot be simply capitalized.")
(defvar authors-public-domain-files
- '("auto-show\\.el"
- "form-d2\\.el"
- "emerge\\.el"
- "unused\\.el"
+ '("emerge\\.el"
"vi\\.el"
"feedmail\\.el"
"mailpost\\.el"
"hanoi\\.el"
"meese\\.el"
"studly\\.el"
- "modula2\\.el")
+ "modula2\\.el"
+ "nnmaildir\\.el"
+ "nnil\\.el"
+ "b2m\\.c"
+ "unexhp9k800\\.c"
+ "emacsclient\\.1"
+ "check-doc-strings")
"List of regexps matching files for which the FSF doesn't need papers.")
'("external-lisp"
"lock" "share-lib" "local-lisp"
"noleim-Makefile.in"
- "NEWS" "PROBLEMS" "FAQ" "AUTHORS" "FOR-RELEASE" "TODO")
+ "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"
+ "install-sh" "missing" "mkinstalldirs"
+ "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"
+ ;; Never had any meaningful changes logged, now deleted:
+ "split-man" "Xkeymap.txt" "ms-7bkermit" "ulimit.hack"
+ "gnu-hp300" "refcard.bit" "ledit.l" "forms.README" "forms-d2.dat"
+ "CXTERM-DIC/PY.tit" "CXTERM-DIC/ZIRANMA.tit"
+ "CXTERM-DIC/CTLau.tit" "CXTERM-DIC/CTLauB.tit"
+ "NICKLES.WORTH" "INTERVAL.IDEAS" "RCP"
+ "3B-MAXMEM" "AIX.DUMP" "SUN-SUPPORT" "XENIX"
+ "CODINGS" "CHARSETS"
+ "calc/INSTALL" "calc/Makefile"
+ "vms-pp.trans" "_emacs" "batcomp.com"
+ ;; 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"
+ )
"List of files and directories to ignore.
Changes to files in this list are not listed.")
("Blitz Product Development Corporation" :wrote "ispell.el")
("Frank Bresz" :wrote "diff.el")
("David M. Brown" :wrote "array.el")
- ("Gary Byers" :changed "xenix.h")
+ ;; No longer distributed.
+;;; ("Gary Byers" :changed "xenix.h")
("Shawn M. Carey" :wrote "freebsd.h")
- ("Eric Decker" :changed "hp9000s800.h" "hpux.h" "sysdep.c")
- ("Lawrence R. Dodd" :wrote "dired-x.el")
- ("Viktor Dukhovni" :wrote "unexsunos4.c")
+ ;; hp800.h renamed from hp9000s800.h, hpux.h merged into hpux10-20.h.
+ ("Eric Decker" :changed "hp800.h" "hpux10-20.h" "sysdep.c")
+ ("Lawrence R. Dodd" :cowrote "dired-x.el")
+ ;; No longer distributed.
+;;; ("Viktor Dukhovni" :wrote "unexsunos4.c")
("Paul Eggert" :wrote "rcs2log" "vcdiff")
("Fred Fish" :changed "unexec.c")
- ("Tim Fleehart" :wrote "makefile.nt")
+ ;; No longer distributed.
+;;; ("Tim Fleehart" :wrote "makefile.nt")
("Keith Gabryelski" :wrote "hexl.c")
("Kevin Gallagher" :wrote "flow-ctrl.el")
- ("Howard Gayle" :wrote "disp-table.el" "iso-syntax.el" "casetab.c")
- ("Stephen Gildea" :wrote "refcard.tex" "mh-funcs.el" "mh-pick.el")
- ("David Gillespie" :wrote "cl.texinfo")
- ("Hewlett-Packard" :changed "emacsclient.c" "emacsserver.c"
- "server.el" "keyboard.c")
- ("Thomas Horsley" :wrote "cxux.h" "cxux7.h")
+ ;; 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.
+ ;; FIXME current mh-funcs.el says it was written by Bill Wohler.
+ ("Stephen Gildea" :wrote "refcard.tex" "mh-funcs.el"
+ :cowrote "mh-search.el")
+ ;; 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")
("Indiana University Foundation" :changed "buffer.c" "buffer.h"
"indent.c" "search.c" "xdisp.c" "region-cache.c" "region-cache.h")
+ ;; ibmrt.h, ibmrt-aix.h no longer distributed.
("International Business Machines" :changed "emacs.c" "fileio.c"
- "ibmrt.h" "process.c" "sysdep.c" "unexec.c" "ibmrt-aix.h")
- ("Ishikawa Chiaki" :changed "aviion.h" "dgux.h")
+ "process.c" "sysdep.c" "unexec.c")
+ ;; No longer distributed.
+;;; ("Ishikawa Chiaki" :changed "aviion.h" "dgux.h")
+ ;; ymakefile no longer distributed.
("Michael K. Johnson" :changed "configure.in" "emacs.c" "intel386.h"
- "mem-limits.h" "process.c" "template.h" "sysdep.c" "syssignal.h" "systty.h" "unexec.c"
- "ymakefile" "linux.h")
- ("Kyle Jones" :wrote "mldrag.el")
+ "mem-limits.h" "process.c" "template.h" "sysdep.c" "syssignal.h"
+ "systty.h" "unexec.c" "linux.h")
+ ;; No longer distributed.
+;;; ("Kyle Jones" :wrote "mldrag.el")
("Henry Kautz" :wrote "bib-mode.el")
- ("Joseph M. Kelsey" :changed "fileio.c" "vms-pwd.h" "vmsfns.c" "dir.h"
- "uaf.h")
+ ;; No longer distributed: vms-pwd.h, vmsfns.c, uaf.h.
+ ("Joseph M. Kelsey" :changed "fileio.c" "dir.h")
("Sam Kendall" :changed "etags.c" "etags.el")
- ("Richard King" :wrote "backquote.el" "userlock.el" "filelock.c")
+ ;; ack.texi: "We're not using his backquote.el any more."
+ ("Richard King" :wrote "userlock.el" "filelock.c")
("Larry Kolodney" :wrote "cvtmail.c")
("Sebastian Kremer" :changed "add-log.el")
("Mark Lambert" :changed "process.c" "process.h")
("Aaron Larson" :changed "bibtex.el")
+ ;; FIXME current mh-e.el says author Bill Wohler.
("James R. Larus" :wrote "mh-e.el")
- ("Lars Lindberg" :changed "dabbrev.el" :wrote "imenu.el")
+ ("Lars Lindberg" :changed "dabbrev.el" :cowrote "imenu.el")
+ ;; No longer distributed: lselect.el.
("Lucid, Inc." :changed "bytecode.c" "byte-opt.el" "byte-run.el"
"bytecomp.el" "delsel.el" "disass.el" "faces.el" "font-lock.el"
- "lmenu.el" "lselect.el" "mailabbrev.el" "select.el" "xfaces.c"
- "xselect.c")
- ("MCC" :changed "etags.c" "emacsclient.c" "emacsserver.c" "movemail.c"
+ "lmenu.el" "mailabbrev.el" "select.el" "xfaces.c" "xselect.c")
+ ;; No longer distributed: emacsserver.c.
+ ("MCC" :changed "etags.c" "emacsclient.c" "movemail.c"
"rmail.el" "rmailedit.el" "rmailkwd.el"
"rmailmsc.el" "rmailout.el" "rmailsum.el" "scribe.el"
+ ;; FIXME current xmenu.c says authors: Jon Arnold, Roman Budzianowski,
+ ;; Robert Krawitz, RMS.
"server.el" "lisp.h" "sysdep.c" "unexec.c" :wrote "xmenu.c")
("Niall Mansfield" :changed "etags.c")
- ("Brian Marick" :wrote "hideif.el")
+ ("Brian Marick" :cowrote "hideif.el")
("Marko Kohtala" :changed "info.el")
("Sidney Markowitz" :changed "doctor.el")
- ("Richard Mlynarik" :wrote "env.c" "ehelp.el")
+ ;; No longer distributed: env.c.
+ ("Richard Mlynarik" :wrote "ehelp.el")
("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")
("Sundar Narasimhan" :changed "rnewspost.el")
- ("NeXT, Inc." :wrote "unexnext.c")
+ ;; No longer distributed.
+;;; ("NeXT, Inc." :wrote "unexnext.c")
("Mark Neale" :changed "fortran.el")
- ("Martin Neitzel" :changed "sc.el")
- ("Andrew Oram" :changed "miscellaneous changes to files in man/"
- "man/calendar.texi")
+ ;; Renamed from sc.el.
+ ("Martin Neitzel" :changed "supercite.el")
+ ("Andrew Oram" :changed "calendar.texi (and other files in man/)")
("Frederic Pierresteguy" :wrote "widget.c")
("Michael D. Prange" :changed "tex-mode.el")
- ("Paul Reilly" :wrote "gux5-4r2.h" "dgux5-4r3.h")
- ("Roland B. Roberts" :changed "files.el" "sort.el" "vmsproc.el"
- "buffer.h" "callproc.c" "dired.c" "process.c" "sysdep.c" "systty.h"
- "vmspaths.h" "build.com" "compile.com" "kepteditor.com" "precomp.com"
- :wrote "logout.com" "mailemacs.com")
+ ;; No longer distributed (dgux5-4r3.h was renamed to dgux5-4-3.h).
+;;; ("Paul Reilly" :wrote "gux5-4r2.h" "dgux5-4-3.h")
+ ("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")
("Guillermo J. Rozas" :wrote "fakemail.c")
("Wolfgang Rupprecht" :changed "lisp-mode.el" "loadup.el"
"sort.el" "alloc.c" "callint.c"
- "config.h.in" "crt0.c" "data.c" "fns.c"
- "lisp.h" "lread.c" "sun3.h"
- "print.c" "ymakefile" :wrote "float-sup.el" "floatfns.c")
+ ;; config.in renamed from config.h.in; ecrt0.c from crt0.c.
+ "config.in" "ecrt0.c" "data.c" "fns.c"
+ "lisp.h" "lread.c" ; "sun3.h" "ymakefile" - no longer distributed
+ "print.c" :wrote "float-sup.el" "floatfns.c")
("Schlumberger Technology Corporation" :changed "gud.el")
- ("Gregor Schmid" :wrote "tcl-mode.el")
+ ;; Replaced by tcl.el.
+;;; ("Gregor Schmid" :wrote "tcl-mode.el")
("Rainer Schoepf" :wrote "alpha.h" "unexalpha.c")
- ("William Sommerfeld" :wrote "emacsclient.c" "emacsserver.c" "scribe.el")
- ("Leigh Stoller" :changed "emacsclient.c" "emacsserver.c" "server.el")
+ ;; No longer distributed: emacsserver.c.
+ ("William Sommerfeld" :wrote "emacsclient.c" "scribe.el")
+ ;; No longer distributed: emacsserver.c.
+ ("Leigh Stoller" :changed "emacsclient.c" "server.el")
("Steve Strassman" :wrote "spook.el")
("Shinichirou Sugou" :changed "etags.c")
- ("Sun Microsystems, Inc" :changed "emacsclient.c" "emacsserver.c"
- "server.el" :wrote "emacs.icon" "emacstool.1" "emacstool.c" "sun-curs.el"
- "sun-fns.el" "sun-mouse.el" "sun.el" "sunfns.c")
- ("Kayvan Sylvan" :changed "sc.el")
- ("Spencer Thomas" :changed "emacsclient.c" "emacsserver.c" "server.el"
- "dabbrev.el" "unexec.c" "tcp.c" "gnus.texi")
+ ;; 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"
+ "dabbrev.el" "unexec.c" "gnus.texi")
("Jonathan Vail" :changed "vc.el")
("James Van Artsdalen" :changed "usg5-4.h" "unexec.c")
- ("Geoff Voelker" :wrote "src/makefile.nt" "lisp/makefile.nt" "winnt.el"
- "nt.c" "nt.h" "ntheap.c" "ntheap.h" "ntinevt.c"
- "ntproc.c" "ntterm.c" "windowsnt.h")
- ("Morten Welinder" :wrote "dosfns.c" "[many MSDOS files]" "msdos.h")
- ("Pace Willisson" :wrote "ispell.el")
+ ;; 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")
+ ("Morten Welinder" :wrote "dosfns.c" "[many MS-DOS files]" "msdos.h")
+ ;; Not using this version any more.
+;;; ("Pace Willisson" :wrote "ispell.el")
("Garrett Wollman" :changed "sendmail.el")
("Dale R. Worley" :changed "mail-extr.el")
- ("Jamie Zawinski" :changed "bytecode.c" :wrote "disass.el" "tar-mode.el"))
+ ("Jamie Zawinski" :changed "bytecode.c" :wrote "tar-mode.el"
+ :cowrote "disass.el"))
"Actions taken from the original, manually (un)maintained AUTHORS file.")
(defconst authors-valid-file-names
'("aclocal.m4"
+ "build-ins.in"
+ "Makefile.noleim"
"makedist.bat"
- "make-delta")
- "File names which are valid, but no longer exists (or cannot be
+ "makefile.def"
+ "makefile.nt"
+ "debug.bat.in" "emacs.bat.in"
+ ".gdbinit-union"
+ "alloca.s"
+ "make-delta"
+ "config.w95"
+ "emacstool.1"
+ "align.umax"
+ "cxux-crt0.s"
+ "gould-sigvec.s"
+ "getdate.y"
+ "ymakefile"
+ "permute-index" "index.perm"
+ "emacs.ico"
+ "emacs21.ico"
+ "LPF" "LEDIT" "OTHER.EMACSES"
+ "emacs16_mac.png" "emacs24_mac.png"
+ "emacs256_mac.png" "emacs32_mac.png"
+ "emacs48_mac.png" "emacs512_mac.png"
+ ;; Deleted vms stuff:
+ "temacs.opt" "descrip.mms" "compile.com" "link.com"
+ )
+ "File names which are valid, but no longer exist (or cannot be
found) in the repository.")
(defconst authors-renamed-files-alist
("w32console.c" . "w32term.c")
("unexnt.c" . "unexw32.c")
("s/windowsnt.h" . "s/ms-w32.h")
+ ("winnt.el" . "w32-fns.el")
("config.emacs" . "configure")
+ ("config.h.dist" . "config.in")
+ ("config.h-dist" . "config.in")
+ ("config.h.in" . "config.in")
+ ("paths.h-dist" . "paths.h.in")
+ ("patch1" . "sed1.inp")
("GETTING.GNU.SOFTWARE" . "FTP")
+ ("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")
+ ("Makefile.in.in" . "Makefile.in")
("leim-Makefile" . "leim/Makefile")
("leim-Makefile.in" . "leim/Makefile.in")
("emacs-lisp/testcover-ses.el" . "tcover-ses.el")
("emacs-lisp/testcover-unsafep.el" . "tcover-unsafep.el")
("INSTALL-CVS" . "INSTALL.CVS")
+ ("refcards/fr-drdref.pdf" . "refcards/fr-dired-ref.pdf")
+ ("gnus-logo.eps" . "refcards/gnus-logo.eps")
+ ("build-install" . "build-ins.in")
+ ("build-install.in" . "build-ins.in")
+ ("unidata/Makefile" . "unidata/Makefile.in")
+ ;; Not renamed, but we only have the latter in the Emacs repo.
+ ("trampver.texi.in" . "trampver.texi")
+ ("e/eterm" . "e/eterm-color")
+ ("e/eterm.ti" . "e/eterm-color.ti")
+ ("README.txt" . "README")
+ ("emacs.names" . "JOKES")
+ ("ED.WORSHIP" . "JOKES")
+ ("GNU.JOKES" . "JOKES")
+ ("CHARACTERS" . "TODO")
+ ("schema/xhtml-basic-form.rnc" . "schema/xhtml-bform.rnc" )
+ ("schema/xhtml-basic-table.rnc" . "schema/xhtml-btable.rnc")
+ ("schema/xhtml-list.rnc" . "schema/xhtml-lst.rnc")
+ ("schema/xhtml-target.rnc" . "schema/xhtml-tgt.rnc")
+ ("schema/xhtml-style.rnc" . "schema/xhtml-xstyle.rnc")
+ ("schema/docbook-dyntbl.rnc" . "schema/docbk-dyntbl.rnc")
+ ("schema/docbook-soextbl.rnc" . "schema/docbk-soextbl.rn" )
+ ("texi/url.txi" . "url.texi")
+ ;; 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")
)
"Alist of files which have been renamed during their lifetime.
Elements are (OLDNAME . NEWNAME).")
("\\.[xp]bm$" . t)
("^paths\\." . t)
("^install\\." . t)
+ ("^\\(TUTORIAL[^/]*\\)" . "tutorials/\\1")
+ ("^\\(tree-widget/\\(?:default\\|folder\\)/[-a-z]+\\.png\\)$" .
+ "images/\\1")
+ ("^\\(images/icons/\\)mac\\(emacs\\)_\\([0-9]+\\)\\(\\.png\\)" .
+ "\\1\\2\\3_mac\\4")
+ ("\\(images/icons/\\)emacs_\\([0-9][0-9]\\)\\.png" .
+ "\\1hicolor/\\2x\\2/apps/emacs.png")
)
"List regexps and rewriting rules for renamed files.
Elements are (REGEXP . REPLACE). If REPLACE is a string, the file
Checks whether FILE is a valid (existing) file name, has been renamed,
or is on the list of removed files. Returns the non-diretory part of
the file name."
- (let ((entry (assoc file authors-checked-files-alist))
- relname
- valid)
+ ;; FILE should be re-checked in every different directory associated
+ ;; with a LOG-FILE. Eg configure.in from src/ChangeLog is not the
+ ;; 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))
+ relname
+ valid)
(if entry
(cdr entry)
(setq relname (file-name-nondirectory file))
rules nil))
(setq rules (cdr rules))))))
(setq authors-checked-files-alist
- (cons (cons file valid) authors-checked-files-alist))
+ (cons (cons fullname valid) authors-checked-files-alist))
(unless (or valid
+ (member file authors-ignored-files)
(string-match "[*]" file)
(string-match "^[0-9.]+$" file))
(setq authors-invalid-file-names
(defun authors-canonical-author-name (author)
"Return a canonicalized form of AUTHOR, an author name.
-If AUTHOR has an alias, use that. Remove email addresses. Capitalize
-words in the author's name."
+If AUTHOR has an entry in `authors-aliases', use that. Remove
+email addresses. Capitalize words in the author's name, unless
+it is found in `authors-fixed-case'."
(let* ((aliases authors-aliases)
regexps realname)
(while aliases
(setq author (replace-regexp-in-string "[ \t]+" " " author))
(unless (string-match "[-, \t]" author)
(setq author ""))
- (capitalize author)))
+ (or (car (member author authors-fixed-case))
+ (capitalize author))))
(defun authors-scan-change-log (log-file table)
"Scan change log LOG-FILE for author information.
(while (re-search-forward "^[0-9]\\|^[ \t]+\\* " nil t)
(beginning-of-line)
(setq pos (point))
+ ;; FIXME handle joint authorship.
(cond ((looking-at "^[0-9]+-[0-9]+-[0-9]+")
(skip-chars-forward " \t+:0-9-")
(setq author (buffer-substring-no-properties
(defun authors-scan-el (file table)
"Scan Lisp file FILE for author information.
TABLE is a hash table to add author information to."
- (let* ((existing-buffer (get-file-buffer file))
- (enable-local-variables :safe)
- (enable-local-eval nil)
- (buffer (find-file-noselect file)))
+ (let ((existing-buffer (get-file-buffer file))
+ (enable-local-variables :safe)
+ (enable-local-eval nil)
+ (buffer (find-file-noselect file)))
+ (setq file (file-name-nondirectory file))
(save-excursion
(set-buffer buffer)
(save-restriction
(widen)
(goto-char (point-min))
(while (and (re-search-forward
- "^;+[ \t]*\\(Author\\|Commentary\\):[ \t]*" nil t)
- (not (string= (match-string 1) "Commentary")))
- ;; Some entries contain a year range in front of the
- ;; author's name.
- (skip-chars-forward "-0-9 \t")
- (let ((author (buffer-substring-no-properties
- (point) (line-end-position))))
- (setq author (authors-canonical-author-name author))
- (setq file (file-name-nondirectory file))
- (authors-add author file :wrote table)))))
+ "^;+[ \t]*\\(Authors?\\|Commentary\\|Code\\):[ \t]*" nil t)
+ (not (member (match-string 1) '("Commentary" "Code"))))
+ (let ((continue t)
+ (action :wrote)
+ authors)
+ (while continue
+ ;; Some entries contain a year range in front of the
+ ;; author's name.
+ (skip-chars-forward "-0-9 \t")
+ (push (authors-canonical-author-name
+ (buffer-substring-no-properties
+ (point) (line-end-position))) authors)
+ ;; tips.texi says the continuation line should begin
+ ;; with a tab, but often spaces are used.
+ (setq continue
+ (and (zerop (forward-line 1))
+ (looking-at ";;;?\\(\t+ *\\| +\\)[[:alnum:]]")
+ (goto-char (1- (match-end 0)))
+ (not (looking-at "[[:upper:]][-[:alpha:]]+:[ \t]")))))
+ (and (> (length authors) 1)
+ (setq action :cowrote))
+ (mapc (lambda (author)
+ (authors-add author file action table))
+ authors)))))
(unless existing-buffer
(kill-buffer buffer))))
"Insert information about AUTHOR's work on Emacs into `authors-author-list'.
CHANGES is an alist of entries (FILE (ACTION . COUNT) ...), as produced by
`authors-scan-change-log'.
-The element added to `authors-author-list' is (AUTHOR WROTE CHANGED), where
-WROTE and CHANGED are lists of the files written and changed by AUTHOR."
+The element added to `authors-author-list' is (AUTHOR WROTE CO-WROTE CHANGED),
+where WROTE, CO-WROTE, and CHANGED are lists of the files written, co-written
+and changed by AUTHOR."
(when author
(let ((nchanged 0)
wrote-list
+ cowrote-list
changed-list)
(dolist (change changes)
- (let ((actions (cdr change))
- (file (car change))
- slot)
- (if (assq :wrote actions)
- (setq wrote-list
- (cons
- (if (authors-public-domain-p file)
- (concat file " (public domain)")
- file)
- wrote-list))
- (setq changed-list
- (cons (cons file (cdr (assq :changed actions)))
- changed-list)))))
+ (let* ((actions (cdr change))
+ (file (car change))
+ (filestat (if (authors-public-domain-p file)
+ (concat file " (public domain)")
+ file))
+ slot)
+ (cond ((assq :wrote actions)
+ (setq wrote-list (cons filestat wrote-list)))
+ ((assq :cowrote actions)
+ (setq cowrote-list (cons filestat cowrote-list)))
+ (t
+ (setq changed-list
+ (cons (cons file (cdr (assq :changed actions)))
+ changed-list))))))
(if wrote-list
(setq wrote-list (sort wrote-list 'string-lessp)))
+ (if cowrote-list
+ (setq cowrote-list (sort cowrote-list 'string-lessp)))
(when changed-list
(setq changed-list (sort changed-list
(lambda (a b)
(setcdr (nthcdr authors-many-files changed-list)
(list (format "and %d other files" (- nchanged authors-many-files)))))
(setq authors-author-list
- (cons (list author wrote-list changed-list)
+ (cons (list author wrote-list cowrote-list changed-list)
authors-author-list)))))
(defun authors (root)
buffer *Authors Errors* containing references to unknown files."
(interactive "DEmacs source directory: ")
(setq root (expand-file-name root))
- (let ((logs (process-lines "find" root "-name" "ChangeLog*"))
+ (let ((logs (process-lines find-program root "-name" "ChangeLog*"))
(table (make-hash-table :test 'equal))
(buffer-name "*Authors*")
authors-checked-files-alist
authors-invalid-file-names)
(authors-add-fixed-entries table)
(unless (file-exists-p (expand-file-name "src/emacs.c" root))
- (error "Not the root directory of Emacs: %s" root))
+ (unless (y-or-n-p
+ (format "Not the root directory of Emacs: %s, continue? " root))
+ (error "Not the root directory.")))
(dolist (log logs)
(when (string-match "ChangeLog\\(.[0-9]+\\)?$" log)
(message "Scanning %s..." log)
(authors-scan-change-log log table)))
- (let ((els (process-lines "find" root "-name" "*.el")))
+ (let ((els (process-lines find-program root "-name" "*.el")))
(dolist (file els)
(message "Scanning %s..." file)
(authors-scan-el file table)))
(dolist (a authors-author-list)
(let ((author (car a))
(wrote (nth 1 a))
- (changed (nth 2 a))
+ (cowrote (nth 2 a))
+ (changed (nth 3 a))
file)
(insert "\n" author ": ")
(when wrote
(insert "\n "))
(insert " " file))
(insert "\n"))
- (when changed
+ (when cowrote
(if wrote
(insert "and "))
+ (insert "co-wrote")
+ (dolist (file cowrote)
+ (if (> (+ (current-column) (length file)) 72)
+ (insert "\n "))
+ (insert " " file))
+ (insert "\n"))
+ (when changed
+ (if (or wrote cowrote)
+ (insert "and "))
(insert "changed")
(dolist (file changed)
(if (> (+ (current-column) (length file)) 72)
(unless noninteractive
(when authors-invalid-file-names
(with-current-buffer (get-buffer-create "*Authors Errors*")
+ (setq buffer-read-only nil)
(erase-buffer)
(set-buffer-file-coding-system authors-coding-system)
(insert "Unrecognized file entries found:\n\n")
(provide 'authors)
-;;; arch-tag: 659d5900-5ff2-43b0-954c-a315cc1e4dc1
+;; arch-tag: 659d5900-5ff2-43b0-954c-a315cc1e4dc1
;;; authors.el ends here