emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/emacs-lisp/copyright.el


From: Stefan Monnier
Subject: [Emacs-diffs] Changes to emacs/lisp/emacs-lisp/copyright.el
Date: Sat, 14 Jun 2003 16:11:12 -0400

Index: emacs/lisp/emacs-lisp/copyright.el
diff -c emacs/lisp/emacs-lisp/copyright.el:1.40 
emacs/lisp/emacs-lisp/copyright.el:1.41
*** emacs/lisp/emacs-lisp/copyright.el:1.40     Thu Feb  7 12:39:27 2002
--- emacs/lisp/emacs-lisp/copyright.el  Sat Jun 14 16:11:12 2003
***************
*** 1,6 ****
  ;;; copyright.el --- update the copyright notice in current buffer
  
! ;; Copyright (C) 1991, 92, 93, 94, 95, 98, 2001 Free Software Foundation, Inc.
  
  ;; Author: Daniel Pfeiffer <address@hidden>
  ;; Keywords: maint, tools
--- 1,7 ----
  ;;; copyright.el --- update the copyright notice in current buffer
  
! ;; Copyright (C) 1991, 92, 93, 94, 95, 1998, 2001, 2003
! ;;           Free Software Foundation, Inc.
  
  ;; Author: Daniel Pfeiffer <address@hidden>
  ;; Keywords: maint, tools
***************
*** 25,31 ****
  ;;; Commentary:
  
  ;; Allows updating the copyright year and above mentioned GPL version manually
! ;; or when saving a file.  Do (add-hook 'write-file-hooks 'copyright-update).
  
  ;;; Code:
  
--- 26,33 ----
  ;;; Commentary:
  
  ;; Allows updating the copyright year and above mentioned GPL version manually
! ;; or when saving a file.
! ;; Do (add-hook 'write-file-functions 'copyright-update).
  
  ;;; Code:
  
***************
*** 75,127 ****
  (defvar copyright-current-year (substring (current-time-string) -4)
    "String representing the current year.")
  
  
  ;;;###autoload
! (defun copyright-update (&optional arg)
    "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))
!                          (substring copyright-current-year -2))
!                 ()
!               (if (or (not copyright-query)
!                       (and (eq copyright-query 'function)
!                            (eq this-command 'copyright-update))
!                       (y-or-n-p (if arg
!                                     (concat "Replace copyright year(s) by "
!                                             copyright-current-year "? ")
!                                   (concat "Add " copyright-current-year
!                                           " to copyright? "))))
!                   (if arg
!                       (progn
!                         (delete-region (match-beginning 1) (match-end 1))
!                         (insert copyright-current-year))
!                     (setq arg (save-excursion (skip-chars-backward "0-9")))
!                     (if (and (eq (% (- (string-to-number
!                                         copyright-current-year)
!                                        (string-to-number (buffer-substring
!                                                           (+ (point) arg)
!                                                           (point))))
!                                     100)
!                                  1)
!                              (or (eq (char-after (+ (point) arg -1)) ?-)
!                                  (eq (char-after (+ (point) arg -2)) ?-)))
!                         (delete-char arg)
!                       (insert ", ")
!                       (if (eq (char-after (+ (point) arg -3)) ?')
!                           (insert ?')))
!                     (insert (substring copyright-current-year arg))))))
          (goto-char (point-min))
          (and copyright-current-gpl-version
               ;; match the GPL version comment in .el files, including the
--- 77,158 ----
  (defvar copyright-current-year (substring (current-time-string) -4)
    "String representing the current year.")
  
+ (defun copyright-update-year (replace noquery)
+   (when (re-search-forward copyright-regexp (+ (point) copyright-limit) t)
+     ;; Note that `current-time-string' isn't locale-sensitive.
+     (setq copyright-current-year (substring (current-time-string) -4))
+     (unless (string= (buffer-substring (- (match-end 2) 2) (match-end 2))
+                    (substring copyright-current-year -2))
+       (if (or noquery
+             (y-or-n-p (if replace
+                           (concat "Replace copyright year(s) by "
+                                   copyright-current-year "? ")
+                         (concat "Add " copyright-current-year
+                                 " to copyright? "))))
+         (if replace
+             (replace-match copyright-current-year t t nil 1)
+           (let ((size (save-excursion (skip-chars-backward "0-9"))))
+             (if (and (eq (% (- (string-to-number copyright-current-year)
+                                (string-to-number (buffer-substring
+                                                   (+ (point) size)
+                                                   (point))))
+                             100)
+                          1)
+                      (or (eq (char-after (+ (point) size -1)) ?-)
+                          (eq (char-after (+ (point) size -2)) ?-)))
+                 ;; This is a range so just replace the end part.
+                 (delete-char size)
+               ;; Detect if this is using the following shorthand:
+               ;; (C) 1993, 94, 95, 1998, 2000, 01, 02, 2003
+               (if (and
+                    ;; Check that the last year was 4-chars and same century.
+                    (eq size -4)
+                    (equal (buffer-substring (- (point) 4) (- (point) 2))
+                           (substring copyright-current-year 0 2))
+                    ;; Check that there are 2-char years as well.
+                    (save-excursion
+                      (re-search-backward "[^0-9][0-9][0-9][^0-9]"
+                                          (line-beginning-position) t))
+                    ;; Make sure we don't remove the first century marker.
+                    (save-excursion
+                      (forward-char size)
+                      (re-search-backward
+                       (concat (buffer-substring (point) (+ (point) 2))
+                               "[0-9][0-9]")
+                       (line-beginning-position) t)))
+                   ;; Remove the century marker of the last entry.
+                   (delete-region (- (point) 4) (- (point) 2)))
+               ;; Insert a comma with the preferred number of spaces.
+               (insert
+                (save-excursion
+                  (if (re-search-backward "[0-9]\\( *, *\\)[0-9]"
+                                          (line-beginning-position) t)
+                      (match-string 1)
+                    ", ")))
+               ;; If people use the '91 '92 '93 scheme, do that as well.
+               (if (eq (char-after (+ (point) size -3)) ?')
+                   (insert ?')))
+             ;; Finally insert the new year.
+             (insert (substring copyright-current-year size))))))))
  
  ;;;###autoload
! (defun copyright-update (&optional arg interactivep)
    "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.
! If non-nil, INTERACTIVEP tells the function to behave as when it's called
! interactively."
!   (interactive "*P\nd")
!   (when (or copyright-update interactivep)
!     (let ((noquery (or (not copyright-query)
!                      (and (eq copyright-query 'function) interactivep))))
        (save-excursion
        (save-restriction
          (widen)
          (goto-char (point-min))
!         (copyright-update-year arg noquery)
          (goto-char (point-min))
          (and copyright-current-gpl-version
               ;; match the GPL version comment in .el files, including the
***************
*** 129,154 ****
               (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= (match-string 3) copyright-current-gpl-version))
!              (or (not copyright-query)
!                  (and (eq copyright-query 'function)
!                       (eq this-command 'copyright-update))
                   (y-or-n-p (concat "Replace GPL version by "
                                     copyright-current-gpl-version "? ")))
               (progn
                 (if (match-end 2)
                     ;; Esperanto bilingual comment in two-column.el
!                    (progn
!                      (delete-region (match-beginning 2) (match-end 2))
!                      (goto-char (match-beginning 2))
!                      (insert copyright-current-gpl-version)))
!                (delete-region (match-beginning 3) (match-end 3))
!                (goto-char (match-beginning 3))
!                (insert copyright-current-gpl-version))))
        (set (make-local-variable 'copyright-update) nil)))
!   ;; If a write-file-hook returns non-nil, the file is presumed to be written.
!   nil)
  
  
  ;;;###autoload
--- 160,178 ----
               (re-search-forward "\\(the Free Software Foundation;\
   either \\|; a\\^u eldono \\([0-9]+\\)a, ? a\\^u (la\\^u via   \\)\
  version \\([0-9]+\\), or (at"
!                                 (+ (point) copyright-limit) t)
               (not (string= (match-string 3) copyright-current-gpl-version))
!              (or noquery
                   (y-or-n-p (concat "Replace GPL version by "
                                     copyright-current-gpl-version "? ")))
               (progn
                 (if (match-end 2)
                     ;; Esperanto bilingual comment in two-column.el
!                    (replace-match copyright-current-gpl-version t t nil 2))
!                (replace-match copyright-current-gpl-version t t nil 3))))
        (set (make-local-variable 'copyright-update) nil)))
!     ;; If a write-file-hook returns non-nil, the file is presumed to be 
written.
!     nil))
  
  
  ;;;###autoload
***************
*** 159,165 ****
    "Copyright (C) " `(substring (current-time-string) -4) " by "
    (or (getenv "ORGANIZATION")
        str)
!   '(if (> (point) copyright-limit)
         (message "Copyright extends beyond `copyright-limit' and won't be 
updated automatically."))
    comment-end \n)
  
--- 183,189 ----
    "Copyright (C) " `(substring (current-time-string) -4) " by "
    (or (getenv "ORGANIZATION")
        str)
!   '(if (> (point) (+ (point-min) copyright-limit))
         (message "Copyright extends beyond `copyright-limit' and won't be 
updated automatically."))
    comment-end \n)
  




reply via email to

[Prev in Thread] Current Thread [Next in Thread]