]> git.eshelyaron.com Git - emacs.git/commitdiff
(copyright-names-regexp): New var.
authorStefan Monnier <monnier@iro.umontreal.ca>
Fri, 25 May 2007 16:58:18 +0000 (16:58 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Fri, 25 May 2007 16:58:18 +0000 (16:58 +0000)
(copyright-update-year): Use it.

etc/NEWS
lisp/ChangeLog
lisp/emacs-lisp/copyright.el

index 9d32a7034a9fe570dae4d018594059ef61183080..780dea787f976c02ed12ee3cee1acab9cccb5447 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -34,6 +34,10 @@ with a prefix argument or by typing C-u C-h C-n.
 \f
 * Changes in Specialized Modes and Packages in Emacs 23.1
 
+** In the `copyright' package, you can specify your copyright holders's names.
+Only copyright lines with holders matching copyright-names-regexp will be
+considered for update.
+
 \f
 * Changes in Emacs 23.1 on non-free operating systems
 
index 22b03a9929082c20f37e0d6b4982bd7da494aade..6b55cb97ab2b890413e087ce7cba579af1d8b601 100644 (file)
@@ -1,5 +1,8 @@
 2007-05-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+       * emacs-lisp/copyright.el (copyright-names-regexp): New var.
+       (copyright-update-year): Use it.
+
        * edmacro.el (edmacro-format-keys): Use current-active-maps.
 
        * ediff-init.el (ediff-defvar-local, ediff-with-current-buffer):
index 5f5aecea97a69bc0100b4a7d70eaf22dda6b740d..ac61c5a9adabe273201d9228d4cc2ed0c9fc5b10 100644 (file)
@@ -37,7 +37,7 @@
   :group 'tools)
 
 (defcustom copyright-limit 2000
-  "*Don't try to update copyright beyond this position unless interactive.
+  "Don't try to update copyright beyond this position unless interactive.
 A value of nil means to search whole buffer."
   :group 'copyright
   :type '(choice (integer :tag "Limit")
@@ -49,21 +49,28 @@ A value of nil means to search whole buffer."
  "\\([\81©\8e©]\\|@copyright{}\\|[Cc]opyright\\s *:?\\s *\\(?:(C)\\)?\
 \\|[Cc]opyright\\s *:?\\s *[\81©\8e©]\\)\
 \\s *\\([1-9]\\([-0-9, ';/*%#\n\t]\\|\\s<\\|\\s>\\)*[0-9]+\\)"
-  "*What your copyright notice looks like.
+  "What your copyright notice looks like.
 The second \\( \\) construct must match the years."
   :group 'copyright
   :type 'regexp)
 
+(defcustom copyright-names-regexp ""
+  "Regexp matching the names which correspond to the user.
+Only copyright lines where the name matches this regexp will be updated.
+This allows you to avoid adding yars to a copyright notice belonging to
+someone else or to a group for which you do not work."
+  :type 'regexp)
+
 (defcustom copyright-years-regexp
  "\\(\\s *\\)\\([1-9]\\([-0-9, ';/*%#\n\t]\\|\\s<\\|\\s>\\)*[0-9]+\\)"
-  "*Match additional copyright notice years.
+  "Match additional copyright notice years.
 The second \\( \\) construct must match the years."
   :group 'copyright
   :type 'regexp)
 
 
 (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")
@@ -83,7 +90,17 @@ When this is `function', only ask when called non-interactively."
   "String representing the current year.")
 
 (defun copyright-update-year (replace noquery)
-  (when (re-search-forward copyright-regexp (+ (point) copyright-limit) t)
+  (when
+      (condition-case err
+         (re-search-forward (concat "\\(" copyright-regexp
+                                    "\\)\\([ \t]*\n\\)?.*\\(?:"
+                                    copyright-names-regexp "\\)")
+                            (+ (point) copyright-limit) t)
+       ;; In case the regexp is rejected.  This is useful because
+       ;; copyright-update is typically called from before-save-hook where
+       ;; such an error is very inconvenient for the user.
+       (error (message "Can't update copyright: %s" err) nil))
+    (goto-char (match-end 1))
     ;; If the years are continued onto multiple lined
     ;; that are marked as comments, skip to the end of the years anyway.
     (while (save-excursion
@@ -94,7 +111,7 @@ When this is `function', only ask when called non-interactively."
                  (save-match-data
                    (forward-line 1)
                    (and (looking-at comment-start-skip)
-                        (goto-char (match-end 0))))
+                        (goto-char (match-end 1))))
                  (save-match-data
                    (looking-at copyright-years-regexp))))
       (forward-line 1)
@@ -103,7 +120,7 @@ When this is `function', only ask when called non-interactively."
 
     ;; 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))
+    (unless (string= (buffer-substring (- (match-end 3) 2) (match-end 3))
                     (substring copyright-current-year -2))
       (if (or noquery
              (y-or-n-p (if replace
@@ -235,5 +252,5 @@ Uses heuristic: year >= 50 means 19xx, < 50 means 20xx."
 ;; coding: emacs-mule
 ;; End:
 
-;;; arch-tag: b4991afb-b6b1-4590-bebe-e076d9d4aee8
+;; arch-tag: b4991afb-b6b1-4590-bebe-e076d9d4aee8
 ;;; copyright.el ends here