changeset 100535:f337e02f9b2e

(authors-fixed-case): New constant. (authors-public-domain-files, authors-ignored-files): (authors-valid-file-names, authors-renamed-files-alist): Update lists. (authors-renamed-files-regexps): Add some new entries. (authors-canonical-file-name): Don't complain about ignored files. (authors-canonical-author-name): Doc fix. Respect authors-fixed-case. (authors): Ensure error buffer is writable.
author Glenn Morris <rgm@gnu.org>
date Fri, 19 Dec 2008 03:16:14 +0000
parents b2faa89cda23
children 104dba047487
files lisp/ChangeLog lisp/emacs-lisp/authors.el
diffstat 2 files changed, 178 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Fri Dec 19 03:15:20 2008 +0000
+++ b/lisp/ChangeLog	Fri Dec 19 03:16:14 2008 +0000
@@ -1,3 +1,13 @@
+2008-12-19  Glenn Morris  <rgm@gnu.org>
+
+	* emacs-lisp/authors.el (authors-fixed-case): New constant.
+	(authors-public-domain-files, authors-ignored-files):
+	(authors-valid-file-names, authors-renamed-files-alist): Update lists.
+	(authors-renamed-files-regexps): Add some new entries.
+	(authors-canonical-file-name): Don't complain about ignored files.
+	(authors-canonical-author-name): Doc fix.  Respect authors-fixed-case.
+	(authors): Ensure error buffer is writable.
+
 2008-12-18  Kenichi Handa  <handa@m17n.org>
 
 	* international/fontset.el (script-representative-chars): Add more
--- a/lisp/emacs-lisp/authors.el	Fri Dec 19 03:15:20 2008 +0000
+++ b/lisp/emacs-lisp/authors.el	Fri Dec 19 03:16:14 2008 +0000
@@ -144,19 +144,42 @@
 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"
+    "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.")
 
 
@@ -172,7 +195,56 @@
   '("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"
+    "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.")
 
@@ -283,9 +355,32 @@
 
 (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"
+    "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
@@ -297,12 +392,56 @@
     ("unexnt.c" . "unexw32.c")
     ("s/windowsnt.h" . "s/ms-w32.h")
     ("config.emacs" . "configure")
+    ("config.h.dist" . "config.h.in")
+    ("config.h-dist" . "config.h.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).")
@@ -325,6 +464,13 @@
     ("\\.[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
@@ -342,6 +488,12 @@
   (let ((entry (assoc file authors-checked-files-alist))
 	relname
 	valid)
+    ;; FIXME this is bogus.  FILE should be re-checked in every
+    ;; different directory associated with LOG-FILE.
+    ;; Eg if src/ChangeLog refers to configure.in, and you happen to
+    ;; scan src/ before top-level/, the configure.in entries in
+    ;; top-level/ get ignored, because this mistakenly thinks
+    ;; top-level/configure.in does not exist.
     (if entry
 	(cdr entry)
       (setq relname (file-name-nondirectory file))
@@ -365,6 +517,7 @@
       (setq authors-checked-files-alist
 	    (cons (cons file 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
@@ -418,8 +571,9 @@
 
 (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
@@ -439,7 +593,8 @@
     (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.
@@ -515,6 +670,7 @@
 	  ;; Some entries contain a year range in front of the
 	  ;; author's name.
 	  (skip-chars-forward "-0-9 \t")
+	  ;; FIXME handle multiline authors, comma-separated.
 	  (let ((author (buffer-substring-no-properties
 			 (point) (line-end-position))))
 	    (setq author (authors-canonical-author-name author))
@@ -643,6 +799,7 @@
     (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")