;;; copyright.el --- update the copyright notice in current buffer
-;; Copyright (C) 1991, 92, 93, 94, 95, 1998 Free Software Foundation, Inc.
+;; Copyright (C) 1991, 92, 93, 94, 95, 98, 2001 Free Software Foundation, Inc.
;; Author: Daniel Pfeiffer <occitan@esperanto.org>
;; Keywords: maint, tools
(defcustom copyright-limit 2000
"*Don't try to update copyright beyond this position unless interactive.
-`nil' means to search whole buffer."
+A value of nil means to search whole buffer."
:group 'copyright
:type '(choice (integer :tag "Limit")
(const :tag "No limit")))
-;; Cleaner to specify Latin-1 coding for this file, and not use both
-;; unibyte and multibyte copyright symbol characters?
+;; Would it be cleaner to specify Latin-1 coding for this file,
+;; and not use both unibyte and multibyte copyright symbol characters?
+
+;; The character classes include the unibyte (C) sign,
+;; the Latin-1 version, and the Latin-9 version.
(defcustom copyright-regexp
- "\\([\251\81©]\\|@copyright{}\\|[Cc]opyright\\s *:?\\s *(C)\
-\\|[Cc]opyright\\s *:?\\s *[\251\81©]\\)\
-\\s *\\([1-9][-0-9, ';\n\t]*[0-9]+\\)"
+ "\\([\251\81©\8e©]\\|@copyright{}\\|[Cc]opyright\\s *:?\\s *\\((C)\\)?\
+\\|[Cc]opyright\\s *:?\\s *[\251\81©\8e©]\\)\
+\\s *\\([1-9]\\([-0-9, ';\n\t]\\|\\s<\\|\\s>\\)*[0-9]+\\)"
"*What your copyright notice looks like.
The second \\( \\) construct must match the years."
:group 'copyright
(defcustom copyright-query 'function
- "*If non-`nil', ask user before changing copyright.
+ "*If non-nil, ask user before changing copyright.
When this is `function', only ask when called non-interactively."
:group 'copyright
:type '(choice (const :tag "Do not ask")
;; when modifying this, also modify the comment generated by autoinsert.el
(defconst copyright-current-gpl-version "2"
- "String representing the current version of the GPL or `nil'.")
+ "String representing the current version of the GPL or nil.")
(defvar copyright-update t)
;; This is a defvar rather than a defconst, because the year can
;; change during the Emacs session.
-(defvar copyright-current-year "2001"
+(defvar copyright-current-year (substring (current-time-string) -4)
"String representing the current year.")
;;;###autoload
(defun copyright-update (&optional arg)
- "Update the copyright notice at the beginning of the buffer to indicate
-the current year. If optional prefix ARG is given replace the years in the
-notice rather than adding the current year after them. If necessary and
-`copyright-current-gpl-version' is set, the copying permissions following the
-copyright, if any, are updated as well."
+ "Update copyright notice at beginning of buffer to indicate the current year.
+With prefix ARG, replace the years in the notice rather than adding
+the current year after them. If necessary, and
+`copyright-current-gpl-version' is set, any copying permissions
+following the copyright are updated as well."
(interactive "*P")
(if copyright-update
(save-excursion
(save-restriction
(widen)
(goto-char (point-min))
+ ;; Note that `current-time-string' isn't locale-sensitive.
(setq copyright-current-year (substring (current-time-string) -4))
(if (re-search-forward copyright-regexp copyright-limit t)
(if (string= (buffer-substring (- (match-end 2) 2) (match-end 2))
(concat "Replace copyright year(s) by "
copyright-current-year "? ")
(concat "Add " copyright-current-year
- " to copyright? "))))
+ " to copyright? "))))
(if arg
(progn
(delete-region (match-beginning 1) (match-end 1))
(and copyright-current-gpl-version
;; match the GPL version comment in .el files, including the
;; bilingual Esperanto one in two-column, and in texinfo.tex
- (re-search-forward "\\(the Free Software Foundation; either \\|; a\\^u eldono \\([0-9]+\\)a, ? a\\^u (la\\^u via \\)version \\([0-9]+\\), or (at"
+ (re-search-forward "\\(the Free Software Foundation;\
+ either \\|; a\\^u eldono \\([0-9]+\\)a, ? a\\^u (la\\^u via \\)\
+version \\([0-9]+\\), or (at"
copyright-limit t)
- (not (string= (buffer-substring (match-beginning 3) (match-end 3))
- copyright-current-gpl-version))
+ (not (string= (match-string 3) copyright-current-gpl-version))
(or (not copyright-query)
(and (eq copyright-query 'function)
(eq this-command 'copyright-update))