Add 2012 to FSF copyright years for Emacs files
[bpt/emacs.git] / lisp / emacs-lisp / authors.el
index 1b60f33..68cff86 100644 (file)
@@ -1,11 +1,11 @@
 ;;; authors.el --- utility for maintaining Emacs' AUTHORS file -*-coding: utf-8;-*-
 
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;;   2009  Free Software Foundation, Inc.
+;; Copyright (C) 2000-2012  Free Software Foundation, Inc.
 
 ;; Author: Gerd Moellmann <gerd@gnu.org>
 ;; Maintainer: Kim F. Storm <storm@cua.dk>
 ;; Keywords: maint
+;; Package: emacs
 
 ;; This file is part of GNU Emacs.
 
@@ -220,6 +220,9 @@ If REALNAME is nil, ignore that author.")
   '("vc-\\*\\.el$"
     "spec.txt$"
     ".*loaddefs.el$"                   ; not obsolete, but auto-generated
+    "\\.\\(cvs\\|git\\)ignore$"                ; obsolete or uninteresting
+    "\\.arch-inventory$"
+    "preferences\\.\\(nib\\|gorm\\)"
     "vc-\\(rcs\\|cvs\\|sccs\\)-hooks\\.el$")
   "List of regexps matching obsolete files.
 Changes to files matching one of the regexps in this list are not
@@ -244,6 +247,14 @@ listed.")
     "Imakefile" "icons/sink.ico" "aixcc.lex"
     "nxml/char-name/unicode"
     "js2-mode.el"      ; only installed very briefly, replaced by js.el
+    "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"
     ;; Autogen:
     "cus-load.el" "finder-inf.el" "ldefs-boot.el"
     ;; Never had any meaningful changes logged, now deleted:
@@ -255,7 +266,8 @@ listed.")
     "3B-MAXMEM" "AIX.DUMP" "SUN-SUPPORT" "XENIX"
     "CODINGS" "CHARSETS"
     "calc/INSTALL" "calc/Makefile"
-    "vms-pp.trans" "_emacs" "batcomp.com"
+    "vms-pp.trans" "_emacs" "batcomp.com" "notes/cpp" ; admin/
+    "emacsver.texi.in"
     ;; MH-E stuff not in Emacs:
     "import-emacs" "release-utils"
     ;; Erc stuff not in Emacs:
@@ -286,6 +298,42 @@ listed.")
   "List of files and directories to ignore.
 Changes to files in this list are not listed.")
 
+;; List via: find . -name '*.el' | sed 's/.*\///g' | sort | uniq -d
+;; FIXME It would be better to discover these dynamically.
+;; Note that traditionally "Makefile.in" etc have not been in this list.
+;; Ditto for "abbrev.texi" etc.
+(defconst authors-ambiguous-files
+  '("chart.el"
+    "compile.el"
+    "complete.el"
+    "cpp.el"
+    "ctxt.el"
+    "debug.el"
+    "dired.el"
+    "el.el"
+    "files.el"
+    "find.el"
+    "format.el"
+    "grep.el"
+    "imenu.el"
+    "java.el"
+    "linux.el"
+    "locate.el"
+    "make.el"
+    "mode.el"
+    "python.el"
+    "semantic.el"
+    "shell.el"
+    "simple.el"
+    "sort.el"
+    "speedbar.el"
+    "srecode.el"
+    "table.el"
+    "texi.el"
+    "util.el"
+    "wisent.el")
+  "List of basenames occurring more than once in the source.")
+
 ;; 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.
@@ -307,7 +355,7 @@ Changes to files in this list are not listed.")
     ;; No longer distributed.
 ;;;    ("Viktor Dukhovni" :wrote "unexsunos4.c")
     ("Paul Eggert" :wrote "rcs2log" "vcdiff")
-    ("Fred Fish" :changed "unexec.c")
+    ("Fred Fish" :changed "unexcoff.c")
     ;; No longer distributed.
 ;;;    ("Tim Fleehart" :wrote "makefile.nt")
     ("Keith Gabryelski" :wrote "hexl.c")
@@ -330,13 +378,13 @@ Changes to files in this list are not listed.")
      "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"
-     "process.c" "sysdep.c" "unexec.c")
+     "process.c" "sysdep.c" "unexcoff.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" "linux.h")
+     "systty.h" "unexcoff.c" "linux.h")
     ;; No longer distributed.
 ;;;    ("Kyle Jones" :wrote "mldrag.el")
     ("Henry Kautz" :wrote "bib-mode.el")
@@ -361,7 +409,7 @@ Changes to files in this list are not listed.")
      "rmail.el" "rmailedit.el" "rmailkwd.el"
      "rmailmsc.el" "rmailout.el" "rmailsum.el" "scribe.el"
      ;; It was :wrote for xmenu.c, but it has been rewritten since.
-     "server.el" "lisp.h" "sysdep.c" "unexec.c" "xmenu.c")
+     "server.el" "lisp.h" "sysdep.c" "unexcoff.c" "xmenu.c")
     ("Niall Mansfield" :changed "etags.c")
     ("Brian Marick" :cowrote "hideif.el")
     ("Marko Kohtala" :changed "info.el")
@@ -389,7 +437,7 @@ Changes to files in this list are not listed.")
      ;; 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")
+;;;    ("Guillermo J. Rozas" :wrote "fakemail.c")
     ("Wolfgang Rupprecht" :changed "lisp-mode.el" "loadup.el"
      "sort.el" "alloc.c" "callint.c"
      ;; config.in renamed from config.h.in; ecrt0.c from crt0.c.
@@ -404,7 +452,7 @@ Changes to files in this list are not listed.")
     ("William Sommerfeld" :wrote "emacsclient.c" "scribe.el")
     ;; No longer distributed: emacsserver.c.
     ("Leigh Stoller" :changed "emacsclient.c" "server.el")
-    ("Steve Strassman" :wrote "spook.el")
+    ("Steve Strassmann" :wrote "spook.el")
     ("Shinichirou Sugou" :changed "etags.c")
     ;; No longer distributed: emacsserver.c.
     ("Sun Microsystems, Inc" :changed "emacsclient.c" "server.el"
@@ -416,9 +464,9 @@ Changes to files in this list are not listed.")
     ("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")
+     "dabbrev.el" "unexcoff.c" "gnus.texi")
     ("Jonathan Vail" :changed "vc.el")
-    ("James Van Artsdalen" :changed "usg5-4.h" "unexec.c")
+    ("James Van Artsdalen" :changed "usg5-4.h" "unexcoff.c")
     ;; 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;
@@ -427,6 +475,7 @@ Changes to files in this list are not listed.")
     ("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")
+    ("Eli Zaretskii" :wrote "bidi.c" "[bidirectional display in xdisp.c]")
     ;; Not using this version any more.
 ;;;    ("Pace Willisson" :wrote "ispell.el")
     ;; FIXME overwritten by Author:.
@@ -457,17 +506,23 @@ Changes to files in this list are not listed.")
     "getdate.y"
     "ymakefile"
     "permute-index" "index.perm"
+    "ibmrs6000.inp"
+    "b2m.c" "b2m.1" "b2m.pl"
+    "emacs.bash" "emacs.csh" "ms-kermit"
     "emacs.ico"
     "emacs21.ico"
-    "LPF" "LEDIT" "OTHER.EMACSES"
+    "BABYL" "LPF" "LEDIT" "OTHER.EMACSES"
     "emacs16_mac.png" "emacs24_mac.png"
     "emacs256_mac.png" "emacs32_mac.png"
     "emacs48_mac.png" "emacs512_mac.png"
+    "revdiff"                          ; admin/
+    "mainmake" "sed1.inp" "sed2.inp" "sed3.inp" ; msdos/
+    "mac-fix-env.m"
     ;; 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.")
+  "File names which are valid, but no longer exist (or cannot be found)
+in the repository.")
 
 (defconst authors-renamed-files-alist
   '(("nt.c" . "w32.c") ("nt.h" . "w32.h")
@@ -504,7 +559,10 @@ found) in the repository.")
     ;; index and pick merged into search.
     ("mh-index.el" . "mh-search.el")
     ("mh-pick.el" . "mh-search.el")
-    ("INSTALL-CVS" . "INSTALL.CVS")
+    ("font-setting.el" . "dynamic-setting.el")
+    ;; INSTALL-CVS -> .CVS -> .BZR
+    ("INSTALL-CVS" . "INSTALL.BZR")
+    ("INSTALL.CVS" . "INSTALL.BZR")
     ("refcards/fr-drdref.pdf" . "refcards/fr-dired-ref.pdf")
     ("gnus-logo.eps" . "refcards/gnus-logo.eps")
     ("build-install" . "build-ins.in")
@@ -527,12 +585,16 @@ found) in the repository.")
     ("schema/docbook-dyntbl.rnc" . "schema/docbk-dyntbl.rnc")
     ("schema/docbook-soextbl.rnc" . "schema/docbk-soextbl.rn" )
     ("texi/url.txi" . "url.texi")
+    ("edt-user.doc" . "edt.texi")
+    ("DEV-NOTES" . "nextstep")
     ;; 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")
+    ;; Moved from admin/nt/ to nt/.
+    ("nt/README.W32" . "README.W32")
     )
   "Alist of files which have been renamed during their lifetime.
 Elements are (OLDNAME . NEWNAME).")
@@ -571,10 +633,25 @@ Otherwise, the file name is accepted as is.")
 (defvar authors-checked-files-alist)
 (defvar authors-invalid-file-names)
 
+(defun authors-disambiguate-file-name (fullname)
+  "Convert FULLNAME to an unambiguous relative-name."
+  (let ((relname (file-name-nondirectory fullname))
+       parent)
+    (if (member relname authors-ambiguous-files)
+       ;; In case of ambiguity, just prepend the parent directory.
+       ;; FIXME obviously this is not a perfect solution.
+       (if (string-equal "lisp"
+                         (setq parent (file-name-nondirectory
+                                       (directory-file-name
+                                        (file-name-directory fullname)))))
+           relname
+         (format "%s/%s" parent relname))
+      relname)))
+
 (defun authors-canonical-file-name (file log-file pos author)
   "Return canonical file name for FILE found in LOG-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
+or is on the list of removed files.  Returns the non-directory part of
 the file name.  Only uses the LOG-FILE position POS and associated AUTHOR
 to print a message if FILE is not found."
   ;; FILE should be re-checked in every different directory associated
@@ -591,7 +668,7 @@ to print a message if FILE is not found."
              (file-exists-p file)
              (file-exists-p relname)
              (file-exists-p (concat "etc/" relname)))
-         (setq valid relname)
+         (setq valid (authors-disambiguate-file-name fullname))
        (setq valid (assoc file authors-renamed-files-alist))
        (if valid
            (setq valid (cdr valid))
@@ -608,6 +685,7 @@ to print a message if FILE is not found."
            (cons (cons fullname valid) authors-checked-files-alist))
       (unless (or valid
                  (member file authors-ignored-files)
+                 (authors-obsolete-file-p file)
                  (string-match "[*]" file)
                  (string-match "^[0-9.]+$" file))
        (setq authors-invalid-file-names
@@ -706,8 +784,7 @@ with the file and the number of each action:
         (existing-buffer (get-file-buffer log-file))
         (buffer (find-file-noselect log-file))
         authors file pos)
-    (save-excursion
-      (set-buffer buffer)
+    (with-current-buffer buffer
       (save-restriction
        (widen)
        (goto-char (point-min))
@@ -757,9 +834,8 @@ TABLE is a hash table to add author information to."
         (enable-local-variables :safe) ; for find-file, hence let*
         (enable-local-eval nil)
         (buffer (find-file-noselect file)))
-    (setq file (file-name-nondirectory file))
-    (save-excursion
-      (set-buffer buffer)
+    (setq file (authors-disambiguate-file-name (expand-file-name file)))
+    (with-current-buffer buffer
       (save-restriction
        (widen)
        (goto-char (point-min))
@@ -956,5 +1032,4 @@ the Emacs source tree, from which to build the file."
 
 (provide 'authors)
 
-;; arch-tag: 659d5900-5ff2-43b0-954c-a315cc1e4dc1
 ;;; authors.el ends here