mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-02-06 20:49:33 +00:00
(copyright-update-year): New function extracted from copyright-update.
When `arg' is set, replace the year, not the `copyright' text. Ignore `copyright-update = nil' if called interactively. Use "," rather than ", " if that's what was used before. Recognize mixes of 2 and 4 digit years. Use replace-match. (copyright-update): Add interactivep arg. Use it instead of use last-command. Use replace-match. Don't assume (point-min) == 1.
This commit is contained in:
parent
effe34908c
commit
f47f530244
@ -1,5 +1,16 @@
|
||||
2003-06-14 Stefan Monnier <monnier@cs.yale.edu>
|
||||
|
||||
* emacs-lisp/copyright.el (copyright-update-year): New function
|
||||
extracted from copyright-update.
|
||||
When `arg' is set, replace the year, not the `copyright' text.
|
||||
Ignore `copyright-update = nil' if called interactively.
|
||||
Use "," rather than ", " if that's what was used before.
|
||||
Recognize mixes of 2 and 4 digit years.
|
||||
Use replace-match.
|
||||
(copyright-update): Add interactivep arg.
|
||||
Use it instead of use last-command.
|
||||
Use replace-match. Don't assume (point-min) == 1.
|
||||
|
||||
* textmodes/tex-mode.el (tex-compile-commands):
|
||||
Handle tex-start-commands like tex-start-tex does.
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
;;; copyright.el --- update the copyright notice in current buffer
|
||||
|
||||
;; Copyright (C) 1991, 92, 93, 94, 95, 98, 2001 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1991, 92, 93, 94, 95, 1998, 2001, 2003
|
||||
;; Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Daniel Pfeiffer <occitan@esperanto.org>
|
||||
;; Keywords: maint, tools
|
||||
@ -25,7 +26,8 @@
|
||||
;;; 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).
|
||||
;; or when saving a file.
|
||||
;; Do (add-hook 'write-file-functions 'copyright-update).
|
||||
|
||||
;;; Code:
|
||||
|
||||
@ -75,53 +77,82 @@ When this is `function', only ask when called non-interactively."
|
||||
(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)
|
||||
(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."
|
||||
(interactive "*P")
|
||||
(if copyright-update
|
||||
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))
|
||||
;; 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))))))
|
||||
(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,26 +160,19 @@ following the copyright are updated as well."
|
||||
(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)
|
||||
(+ (point) 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))
|
||||
(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
|
||||
(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))))
|
||||
(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)
|
||||
;; If a write-file-hook returns non-nil, the file is presumed to be written.
|
||||
nil))
|
||||
|
||||
|
||||
;;;###autoload
|
||||
@ -159,7 +183,7 @@ version \\([0-9]+\\), or (at"
|
||||
"Copyright (C) " `(substring (current-time-string) -4) " by "
|
||||
(or (getenv "ORGANIZATION")
|
||||
str)
|
||||
'(if (> (point) copyright-limit)
|
||||
'(if (> (point) (+ (point-min) copyright-limit))
|
||||
(message "Copyright extends beyond `copyright-limit' and won't be updated automatically."))
|
||||
comment-end \n)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user