annotate lisp/emacs-lisp/copyright.el @ 72863:526dc1f36b09

(produce_image_glyph): Automatically crop wide images at right window edge so we can draw the cursor on the same row to avoid confusing redisplay by placing the cursor outside the visible window area.
author Kim F. Storm <storm@cua.dk>
date Thu, 14 Sep 2006 09:37:44 +0000
parents 067115a6e738
children 7a3f13e2dd57 c5406394f567
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12503
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
1 ;;; copyright.el --- update the copyright notice in current buffer
657
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 611
diff changeset
2
64751
5b1a238fcbb4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64085
diff changeset
3 ;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1998, 2001, 2002, 2003,
68648
067115a6e738 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64751
diff changeset
4 ;; 2004, 2005, 2006 Free Software Foundation, Inc.
841
2cdce064065f entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 814
diff changeset
5
23869
8d2bb5d1416a Update comment.
Karl Heuer <kwzh@gnu.org>
parents: 22580
diff changeset
6 ;; Author: Daniel Pfeiffer <occitan@esperanto.org>
12503
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
7 ;; Keywords: maint, tools
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
8
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
9 ;; This file is part of GNU Emacs.
773
9c89fd7ddd41 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 718
diff changeset
10
12503
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
13 ;; the Free Software Foundation; either version 2, or (at your option)
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
14 ;; any later version.
841
2cdce064065f entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 814
diff changeset
15
12503
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
19 ;; GNU General Public License for more details.
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
20
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
21 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the
64085
18a818a2ee7c Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 62508
diff changeset
23 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18a818a2ee7c Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 62508
diff changeset
24 ;; Boston, MA 02110-1301, USA.
12503
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
25
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
26 ;;; Commentary:
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
27
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
28 ;; Allows updating the copyright year and above mentioned GPL version manually
51564
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
29 ;; or when saving a file.
53504
f657faa17ea1 Fix comment to recommend
Simon Josefsson <jas@extundo.com>
parents: 53499
diff changeset
30 ;; Do (add-hook 'before-save-hook 'copyright-update), or use
f657faa17ea1 Fix comment to recommend
Simon Josefsson <jas@extundo.com>
parents: 53499
diff changeset
31 ;; M-x customize-variable RET before-save-hook RET.
288
5c0f837c0287 Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
32
773
9c89fd7ddd41 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 718
diff changeset
33 ;;; Code:
9c89fd7ddd41 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 718
diff changeset
34
21328
d5ffccfcea21 Customized.
Andreas Schwab <schwab@suse.de>
parents: 19108
diff changeset
35 (defgroup copyright nil
d5ffccfcea21 Customized.
Andreas Schwab <schwab@suse.de>
parents: 19108
diff changeset
36 "Update the copyright notice in current buffer."
d5ffccfcea21 Customized.
Andreas Schwab <schwab@suse.de>
parents: 19108
diff changeset
37 :group 'tools)
d5ffccfcea21 Customized.
Andreas Schwab <schwab@suse.de>
parents: 19108
diff changeset
38
d5ffccfcea21 Customized.
Andreas Schwab <schwab@suse.de>
parents: 19108
diff changeset
39 (defcustom copyright-limit 2000
12503
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
40 "*Don't try to update copyright beyond this position unless interactive.
42732
7db08aae2e67 (copyright-regexp): Make (C) optional.
Richard M. Stallman <rms@gnu.org>
parents: 42533
diff changeset
41 A value of nil means to search whole buffer."
21328
d5ffccfcea21 Customized.
Andreas Schwab <schwab@suse.de>
parents: 19108
diff changeset
42 :group 'copyright
d5ffccfcea21 Customized.
Andreas Schwab <schwab@suse.de>
parents: 19108
diff changeset
43 :type '(choice (integer :tag "Limit")
d5ffccfcea21 Customized.
Andreas Schwab <schwab@suse.de>
parents: 19108
diff changeset
44 (const :tag "No limit")))
12503
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
45
52286
2c851f739011 Comment.
Dave Love <fx@gnu.org>
parents: 51564
diff changeset
46 ;; The character classes have the Latin-1 version and the Latin-9
2c851f739011 Comment.
Dave Love <fx@gnu.org>
parents: 51564
diff changeset
47 ;; version, which is probably enough.
21328
d5ffccfcea21 Customized.
Andreas Schwab <schwab@suse.de>
parents: 19108
diff changeset
48 (defcustom copyright-regexp
43169
717543e790e1 (copyright-regexp): Delete the unibyte copyright symbol; it's redundant.
Richard M. Stallman <rms@gnu.org>
parents: 42892
diff changeset
49 "\\([]\\|@copyright{}\\|[Cc]opyright\\s *:?\\s *\\(?:(C)\\)?\
717543e790e1 (copyright-regexp): Delete the unibyte copyright symbol; it's redundant.
Richard M. Stallman <rms@gnu.org>
parents: 42892
diff changeset
50 \\|[Cc]opyright\\s *:?\\s *[]\\)\
53507
edbcb3c5d4e3 allow / and *, too
Karl Berry <karl@gnu.org>
parents: 53504
diff changeset
51 \\s *\\([1-9]\\([-0-9, ';/*%#\n\t]\\|\\s<\\|\\s>\\)*[0-9]+\\)"
12503
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
52 "*What your copyright notice looks like.
21328
d5ffccfcea21 Customized.
Andreas Schwab <schwab@suse.de>
parents: 19108
diff changeset
53 The second \\( \\) construct must match the years."
d5ffccfcea21 Customized.
Andreas Schwab <schwab@suse.de>
parents: 19108
diff changeset
54 :group 'copyright
d5ffccfcea21 Customized.
Andreas Schwab <schwab@suse.de>
parents: 19108
diff changeset
55 :type 'regexp)
12503
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
56
56685
22f1ac802ffd (copyright-years-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 53507
diff changeset
57 (defcustom copyright-years-regexp
22f1ac802ffd (copyright-years-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 53507
diff changeset
58 "\\(\\s *\\)\\([1-9]\\([-0-9, ';/*%#\n\t]\\|\\s<\\|\\s>\\)*[0-9]+\\)"
22f1ac802ffd (copyright-years-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 53507
diff changeset
59 "*Match additional copyright notice years.
22f1ac802ffd (copyright-years-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 53507
diff changeset
60 The second \\( \\) construct must match the years."
22f1ac802ffd (copyright-years-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 53507
diff changeset
61 :group 'copyright
22f1ac802ffd (copyright-years-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 53507
diff changeset
62 :type 'regexp)
22f1ac802ffd (copyright-years-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 53507
diff changeset
63
12503
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
64
21328
d5ffccfcea21 Customized.
Andreas Schwab <schwab@suse.de>
parents: 19108
diff changeset
65 (defcustom copyright-query 'function
42732
7db08aae2e67 (copyright-regexp): Make (C) optional.
Richard M. Stallman <rms@gnu.org>
parents: 42533
diff changeset
66 "*If non-nil, ask user before changing copyright.
21328
d5ffccfcea21 Customized.
Andreas Schwab <schwab@suse.de>
parents: 19108
diff changeset
67 When this is `function', only ask when called non-interactively."
d5ffccfcea21 Customized.
Andreas Schwab <schwab@suse.de>
parents: 19108
diff changeset
68 :group 'copyright
d5ffccfcea21 Customized.
Andreas Schwab <schwab@suse.de>
parents: 19108
diff changeset
69 :type '(choice (const :tag "Do not ask")
22580
a191ee97be00 (copyright-query): Use `other' widget
Andreas Schwab <schwab@suse.de>
parents: 21754
diff changeset
70 (const :tag "Ask unless interactive" function)
a191ee97be00 (copyright-query): Use `other' widget
Andreas Schwab <schwab@suse.de>
parents: 21754
diff changeset
71 (other :tag "Ask" t)))
12503
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
72
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
73
14040
187735b53d52 Comment fixes.
Karl Heuer <kwzh@gnu.org>
parents: 13684
diff changeset
74 ;; when modifying this, also modify the comment generated by autoinsert.el
12503
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
75 (defconst copyright-current-gpl-version "2"
42732
7db08aae2e67 (copyright-regexp): Make (C) optional.
Richard M. Stallman <rms@gnu.org>
parents: 42533
diff changeset
76 "String representing the current version of the GPL or nil.")
288
5c0f837c0287 Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
77
12503
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
78 (defvar copyright-update t)
718
2011f5e67975 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 657
diff changeset
79
35129
9f38c893ea39 (copyright-current-year): Now a defvar.
Eli Zaretskii <eliz@gnu.org>
parents: 27329
diff changeset
80 ;; This is a defvar rather than a defconst, because the year can
9f38c893ea39 (copyright-current-year): Now a defvar.
Eli Zaretskii <eliz@gnu.org>
parents: 27329
diff changeset
81 ;; change during the Emacs session.
42732
7db08aae2e67 (copyright-regexp): Make (C) optional.
Richard M. Stallman <rms@gnu.org>
parents: 42533
diff changeset
82 (defvar copyright-current-year (substring (current-time-string) -4)
35129
9f38c893ea39 (copyright-current-year): Now a defvar.
Eli Zaretskii <eliz@gnu.org>
parents: 27329
diff changeset
83 "String representing the current year.")
9f38c893ea39 (copyright-current-year): Now a defvar.
Eli Zaretskii <eliz@gnu.org>
parents: 27329
diff changeset
84
51564
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
85 (defun copyright-update-year (replace noquery)
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
86 (when (re-search-forward copyright-regexp (+ (point) copyright-limit) t)
56685
22f1ac802ffd (copyright-years-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 53507
diff changeset
87 ;; If the years are continued onto multiple lined
22f1ac802ffd (copyright-years-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 53507
diff changeset
88 ;; that are marked as comments, skip to the end of the years anyway.
22f1ac802ffd (copyright-years-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 53507
diff changeset
89 (while (save-excursion
22f1ac802ffd (copyright-years-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 53507
diff changeset
90 (and (eq (following-char) ?,)
22f1ac802ffd (copyright-years-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 53507
diff changeset
91 (progn (forward-char 1) t)
22f1ac802ffd (copyright-years-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 53507
diff changeset
92 (progn (skip-chars-forward " \t") (eolp))
22f1ac802ffd (copyright-years-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 53507
diff changeset
93 comment-start-skip
22f1ac802ffd (copyright-years-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 53507
diff changeset
94 (save-match-data
22f1ac802ffd (copyright-years-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 53507
diff changeset
95 (forward-line 1)
22f1ac802ffd (copyright-years-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 53507
diff changeset
96 (and (looking-at comment-start-skip)
22f1ac802ffd (copyright-years-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 53507
diff changeset
97 (goto-char (match-end 0))))
22f1ac802ffd (copyright-years-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 53507
diff changeset
98 (save-match-data
22f1ac802ffd (copyright-years-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 53507
diff changeset
99 (looking-at copyright-years-regexp))))
22f1ac802ffd (copyright-years-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 53507
diff changeset
100 (forward-line 1)
22f1ac802ffd (copyright-years-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 53507
diff changeset
101 (re-search-forward comment-start-skip)
22f1ac802ffd (copyright-years-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 53507
diff changeset
102 (re-search-forward copyright-years-regexp))
56706
15d087a81874 (copyright-update-year): Delete code that replaces 20xy with xy.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56685
diff changeset
103
51564
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
104 ;; Note that `current-time-string' isn't locale-sensitive.
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
105 (setq copyright-current-year (substring (current-time-string) -4))
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
106 (unless (string= (buffer-substring (- (match-end 2) 2) (match-end 2))
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
107 (substring copyright-current-year -2))
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
108 (if (or noquery
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
109 (y-or-n-p (if replace
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
110 (concat "Replace copyright year(s) by "
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
111 copyright-current-year "? ")
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
112 (concat "Add " copyright-current-year
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
113 " to copyright? "))))
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
114 (if replace
61330
f6862f0984bc (copyright-update-year): Replace the right subexpression. Suggested
Lute Kamstra <lute@gnu.org>
parents: 60320
diff changeset
115 (replace-match copyright-current-year t t nil 2)
51564
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
116 (let ((size (save-excursion (skip-chars-backward "0-9"))))
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
117 (if (and (eq (% (- (string-to-number copyright-current-year)
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
118 (string-to-number (buffer-substring
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
119 (+ (point) size)
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
120 (point))))
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
121 100)
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
122 1)
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
123 (or (eq (char-after (+ (point) size -1)) ?-)
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
124 (eq (char-after (+ (point) size -2)) ?-)))
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
125 ;; This is a range so just replace the end part.
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
126 (delete-char size)
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
127 ;; Insert a comma with the preferred number of spaces.
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
128 (insert
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
129 (save-excursion
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
130 (if (re-search-backward "[0-9]\\( *, *\\)[0-9]"
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
131 (line-beginning-position) t)
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
132 (match-string 1)
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
133 ", ")))
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
134 ;; If people use the '91 '92 '93 scheme, do that as well.
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
135 (if (eq (char-after (+ (point) size -3)) ?')
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
136 (insert ?')))
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
137 ;; Finally insert the new year.
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
138 (insert (substring copyright-current-year size))))))))
35129
9f38c893ea39 (copyright-current-year): Now a defvar.
Eli Zaretskii <eliz@gnu.org>
parents: 27329
diff changeset
139
288
5c0f837c0287 Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
140 ;;;###autoload
51564
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
141 (defun copyright-update (&optional arg interactivep)
42732
7db08aae2e67 (copyright-regexp): Make (C) optional.
Richard M. Stallman <rms@gnu.org>
parents: 42533
diff changeset
142 "Update copyright notice at beginning of buffer to indicate the current year.
7db08aae2e67 (copyright-regexp): Make (C) optional.
Richard M. Stallman <rms@gnu.org>
parents: 42533
diff changeset
143 With prefix ARG, replace the years in the notice rather than adding
7db08aae2e67 (copyright-regexp): Make (C) optional.
Richard M. Stallman <rms@gnu.org>
parents: 42533
diff changeset
144 the current year after them. If necessary, and
7db08aae2e67 (copyright-regexp): Make (C) optional.
Richard M. Stallman <rms@gnu.org>
parents: 42533
diff changeset
145 `copyright-current-gpl-version' is set, any copying permissions
51564
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
146 following the copyright are updated as well.
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
147 If non-nil, INTERACTIVEP tells the function to behave as when it's called
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
148 interactively."
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
149 (interactive "*P\nd")
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
150 (when (or copyright-update interactivep)
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
151 (let ((noquery (or (not copyright-query)
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
152 (and (eq copyright-query 'function) interactivep))))
12503
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
153 (save-excursion
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
154 (save-restriction
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
155 (widen)
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
156 (goto-char (point-min))
51564
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
157 (copyright-update-year arg noquery)
12503
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
158 (goto-char (point-min))
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
159 (and copyright-current-gpl-version
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
160 ;; match the GPL version comment in .el files, including the
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
161 ;; bilingual Esperanto one in two-column, and in texinfo.tex
42732
7db08aae2e67 (copyright-regexp): Make (C) optional.
Richard M. Stallman <rms@gnu.org>
parents: 42533
diff changeset
162 (re-search-forward "\\(the Free Software Foundation;\
7db08aae2e67 (copyright-regexp): Make (C) optional.
Richard M. Stallman <rms@gnu.org>
parents: 42533
diff changeset
163 either \\|; a\\^u eldono \\([0-9]+\\)a, ? a\\^u (la\\^u via \\)\
7db08aae2e67 (copyright-regexp): Make (C) optional.
Richard M. Stallman <rms@gnu.org>
parents: 42533
diff changeset
164 version \\([0-9]+\\), or (at"
51564
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
165 (+ (point) copyright-limit) t)
42732
7db08aae2e67 (copyright-regexp): Make (C) optional.
Richard M. Stallman <rms@gnu.org>
parents: 42533
diff changeset
166 (not (string= (match-string 3) copyright-current-gpl-version))
51564
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
167 (or noquery
12503
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
168 (y-or-n-p (concat "Replace GPL version by "
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
169 copyright-current-gpl-version "? ")))
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
170 (progn
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
171 (if (match-end 2)
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
172 ;; Esperanto bilingual comment in two-column.el
51564
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
173 (replace-match copyright-current-gpl-version t t nil 2))
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
174 (replace-match copyright-current-gpl-version t t nil 3))))
12503
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
175 (set (make-local-variable 'copyright-update) nil)))
51564
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
176 ;; If a write-file-hook returns non-nil, the file is presumed to be written.
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
177 nil))
12503
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
178
581
e7dd969ff98b *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 291
diff changeset
179
e7dd969ff98b *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 291
diff changeset
180 ;;;###autoload
60319
68fb18eab7a7 (copyright-fix-years): New command.
Kim F. Storm <storm@cua.dk>
parents: 56706
diff changeset
181 (defun copyright-fix-years ()
68fb18eab7a7 (copyright-fix-years): New command.
Kim F. Storm <storm@cua.dk>
parents: 56706
diff changeset
182 "Convert 2 digit years to 4 digit years.
68fb18eab7a7 (copyright-fix-years): New command.
Kim F. Storm <storm@cua.dk>
parents: 56706
diff changeset
183 Uses heuristic: year >= 50 means 19xx, < 50 means 20xx."
68fb18eab7a7 (copyright-fix-years): New command.
Kim F. Storm <storm@cua.dk>
parents: 56706
diff changeset
184 (interactive)
68fb18eab7a7 (copyright-fix-years): New command.
Kim F. Storm <storm@cua.dk>
parents: 56706
diff changeset
185 (widen)
68fb18eab7a7 (copyright-fix-years): New command.
Kim F. Storm <storm@cua.dk>
parents: 56706
diff changeset
186 (goto-char (point-min))
68fb18eab7a7 (copyright-fix-years): New command.
Kim F. Storm <storm@cua.dk>
parents: 56706
diff changeset
187 (if (re-search-forward copyright-regexp (+ (point) copyright-limit) t)
62508
39dc00cd1f8a (copyright-fix-years): Make sure all years are fixed. Don't insert a
Lute Kamstra <lute@gnu.org>
parents: 62375
diff changeset
188 (let ((s (match-beginning 2))
39dc00cd1f8a (copyright-fix-years): Make sure all years are fixed. Don't insert a
Lute Kamstra <lute@gnu.org>
parents: 62375
diff changeset
189 (e (copy-marker (1+ (match-end 2))))
39dc00cd1f8a (copyright-fix-years): Make sure all years are fixed. Don't insert a
Lute Kamstra <lute@gnu.org>
parents: 62375
diff changeset
190 (p (make-marker))
60319
68fb18eab7a7 (copyright-fix-years): New command.
Kim F. Storm <storm@cua.dk>
parents: 56706
diff changeset
191 last)
68fb18eab7a7 (copyright-fix-years): New command.
Kim F. Storm <storm@cua.dk>
parents: 56706
diff changeset
192 (goto-char s)
62508
39dc00cd1f8a (copyright-fix-years): Make sure all years are fixed. Don't insert a
Lute Kamstra <lute@gnu.org>
parents: 62375
diff changeset
193 (while (re-search-forward "[0-9]+" e t)
39dc00cd1f8a (copyright-fix-years): Make sure all years are fixed. Don't insert a
Lute Kamstra <lute@gnu.org>
parents: 62375
diff changeset
194 (set-marker p (point))
39dc00cd1f8a (copyright-fix-years): Make sure all years are fixed. Don't insert a
Lute Kamstra <lute@gnu.org>
parents: 62375
diff changeset
195 (goto-char (match-beginning 0))
39dc00cd1f8a (copyright-fix-years): Make sure all years are fixed. Don't insert a
Lute Kamstra <lute@gnu.org>
parents: 62375
diff changeset
196 (let ((sep (char-before))
39dc00cd1f8a (copyright-fix-years): Make sure all years are fixed. Don't insert a
Lute Kamstra <lute@gnu.org>
parents: 62375
diff changeset
197 (year (string-to-number (match-string 0))))
39dc00cd1f8a (copyright-fix-years): Make sure all years are fixed. Don't insert a
Lute Kamstra <lute@gnu.org>
parents: 62375
diff changeset
198 (when (and sep
39dc00cd1f8a (copyright-fix-years): Make sure all years are fixed. Don't insert a
Lute Kamstra <lute@gnu.org>
parents: 62375
diff changeset
199 (/= (char-syntax sep) ?\s)
39dc00cd1f8a (copyright-fix-years): Make sure all years are fixed. Don't insert a
Lute Kamstra <lute@gnu.org>
parents: 62375
diff changeset
200 (/= sep ?-))
60319
68fb18eab7a7 (copyright-fix-years): New command.
Kim F. Storm <storm@cua.dk>
parents: 56706
diff changeset
201 (insert " "))
62508
39dc00cd1f8a (copyright-fix-years): Make sure all years are fixed. Don't insert a
Lute Kamstra <lute@gnu.org>
parents: 62375
diff changeset
202 (when (< year 100)
39dc00cd1f8a (copyright-fix-years): Make sure all years are fixed. Don't insert a
Lute Kamstra <lute@gnu.org>
parents: 62375
diff changeset
203 (insert (if (>= year 50) "19" "20"))))
39dc00cd1f8a (copyright-fix-years): Make sure all years are fixed. Don't insert a
Lute Kamstra <lute@gnu.org>
parents: 62375
diff changeset
204 (goto-char p)
39dc00cd1f8a (copyright-fix-years): Make sure all years are fixed. Don't insert a
Lute Kamstra <lute@gnu.org>
parents: 62375
diff changeset
205 (setq last p))
60319
68fb18eab7a7 (copyright-fix-years): New command.
Kim F. Storm <storm@cua.dk>
parents: 56706
diff changeset
206 (when last
68fb18eab7a7 (copyright-fix-years): New command.
Kim F. Storm <storm@cua.dk>
parents: 56706
diff changeset
207 (goto-char last)
62375
6a8938e81aa7 (copyright-fix-years): Match properly if the first year is 2-digit.
Richard M. Stallman <rms@gnu.org>
parents: 61330
diff changeset
208 ;; Don't mess up whitespace after the years.
6a8938e81aa7 (copyright-fix-years): Match properly if the first year is 2-digit.
Richard M. Stallman <rms@gnu.org>
parents: 61330
diff changeset
209 (skip-chars-backward " \t")
6a8938e81aa7 (copyright-fix-years): Match properly if the first year is 2-digit.
Richard M. Stallman <rms@gnu.org>
parents: 61330
diff changeset
210 (save-restriction
6a8938e81aa7 (copyright-fix-years): Match properly if the first year is 2-digit.
Richard M. Stallman <rms@gnu.org>
parents: 61330
diff changeset
211 (narrow-to-region (point-min) (point))
6a8938e81aa7 (copyright-fix-years): Match properly if the first year is 2-digit.
Richard M. Stallman <rms@gnu.org>
parents: 61330
diff changeset
212 (let ((fill-prefix " "))
62508
39dc00cd1f8a (copyright-fix-years): Make sure all years are fixed. Don't insert a
Lute Kamstra <lute@gnu.org>
parents: 62375
diff changeset
213 (fill-region s last))))
60319
68fb18eab7a7 (copyright-fix-years): New command.
Kim F. Storm <storm@cua.dk>
parents: 56706
diff changeset
214 (set-marker e nil)
62508
39dc00cd1f8a (copyright-fix-years): Make sure all years are fixed. Don't insert a
Lute Kamstra <lute@gnu.org>
parents: 62375
diff changeset
215 (set-marker p nil)
60319
68fb18eab7a7 (copyright-fix-years): New command.
Kim F. Storm <storm@cua.dk>
parents: 56706
diff changeset
216 (copyright-update nil t))
62508
39dc00cd1f8a (copyright-fix-years): Make sure all years are fixed. Don't insert a
Lute Kamstra <lute@gnu.org>
parents: 62375
diff changeset
217 (message "No copyright message")))
60319
68fb18eab7a7 (copyright-fix-years): New command.
Kim F. Storm <storm@cua.dk>
parents: 56706
diff changeset
218
68fb18eab7a7 (copyright-fix-years): New command.
Kim F. Storm <storm@cua.dk>
parents: 56706
diff changeset
219 ;;;###autoload
12503
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
220 (define-skeleton copyright
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
221 "Insert a copyright by $ORGANIZATION notice at cursor."
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
222 "Company: "
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
223 comment-start
35129
9f38c893ea39 (copyright-current-year): Now a defvar.
Eli Zaretskii <eliz@gnu.org>
parents: 27329
diff changeset
224 "Copyright (C) " `(substring (current-time-string) -4) " by "
12503
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
225 (or (getenv "ORGANIZATION")
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
226 str)
51564
09736ff1baa6 (copyright-update-year): New function extracted from copyright-update.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43169
diff changeset
227 '(if (> (point) (+ (point-min) copyright-limit))
12503
f77164f5bc6b New name for generalized upd-copyr.el
Karl Heuer <kwzh@gnu.org>
parents: 10510
diff changeset
228 (message "Copyright extends beyond `copyright-limit' and won't be updated automatically."))
39764
fb28cd06b2f6 (copyright): Add final \n.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38436
diff changeset
229 comment-end \n)
288
5c0f837c0287 Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
230
18383
11218164bc54 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 17977
diff changeset
231 (provide 'copyright)
11218164bc54 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 17977
diff changeset
232
27229
fdaa887d0f8f Tag as emacs-mule coding.
Dave Love <fx@gnu.org>
parents: 23869
diff changeset
233 ;; For the copyright sign:
fdaa887d0f8f Tag as emacs-mule coding.
Dave Love <fx@gnu.org>
parents: 23869
diff changeset
234 ;; Local Variables:
fdaa887d0f8f Tag as emacs-mule coding.
Dave Love <fx@gnu.org>
parents: 23869
diff changeset
235 ;; coding: emacs-mule
fdaa887d0f8f Tag as emacs-mule coding.
Dave Love <fx@gnu.org>
parents: 23869
diff changeset
236 ;; End:
fdaa887d0f8f Tag as emacs-mule coding.
Dave Love <fx@gnu.org>
parents: 23869
diff changeset
237
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52286
diff changeset
238 ;;; arch-tag: b4991afb-b6b1-4590-bebe-e076d9d4aee8
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 35129
diff changeset
239 ;;; copyright.el ends here