(cvs-parse-table): Adjust regexp for resurrections.
[bpt/emacs.git] / lisp / time-stamp.el
index 0f3aeb0..7316e6d 100644 (file)
@@ -1,17 +1,17 @@
 ;;; time-stamp.el --- Maintain last change time stamps in files edited by Emacs
 
 ;; Copyright (C) 1989, 1993, 1994, 1995, 1997, 2000, 2001, 2002, 2003,
-;;   2004, 2005 Free Software Foundation, Inc.
+;;   2004, 2005, 2006, 2007 Free Software Foundation, Inc.
 
 ;; This file is part of GNU Emacs.
 
-;; Maintainer's Time-stamp: <2004-06-13 19:04:36 teirllm>
+;; Maintainer's Time-stamp: <2006-04-12 20:30:56 rms>
 ;; Maintainer: Stephen Gildea <gildea@stop.mail-abuse.org>
 ;; Keywords: tools
 
 ;; GNU Emacs is free software; you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
+;; the Free Software Foundation; either version 3, or (at your option)
 ;; any later version.
 
 ;; GNU Emacs is distributed in the hope that it will be useful,
@@ -93,6 +93,7 @@ historical default."
   :type 'string
   :group 'time-stamp
   :version "20.1")
+;;;###autoload(put 'time-stamp-format 'safe-local-variable 'stringp)
 
 (defcustom time-stamp-active t
   "*Non-nil to enable time-stamping of buffers by \\[time-stamp].
@@ -143,21 +144,27 @@ the first (last) `time-stamp-line-limit' lines of the file for the
 file to be time-stamped by \\[time-stamp].  A value of 0 searches the
 entire buffer (use with care).
 
-Do not change `time-stamp-line-limit', `time-stamp-start', or
-`time-stamp-end' for yourself or you will be incompatible
-with other people's files!  If you must change them for some application,
-do so in the local variables section of the time-stamped file itself.")
+This value can also be set with the variable `time-stamp-pattern'.
 
+Do not change `time-stamp-line-limit', `time-stamp-start',
+`time-stamp-end', or `time-stamp-pattern' for yourself or you will be
+incompatible with other people's files!  If you must change them for some
+application, do so in the local variables section of the time-stamped file
+itself.")
+;;;###autoload(put 'time-stamp-line-limit 'safe-local-variable 'integerp)
 
 (defvar time-stamp-start "Time-stamp:[ \t]+\\\\?[\"<]+"    ;Do not change!
   "Regexp after which the time stamp is written by \\[time-stamp].
 See also the variables `time-stamp-end' and `time-stamp-line-limit'.
 
-Do not change `time-stamp-line-limit', `time-stamp-start', or
-`time-stamp-end' for yourself or you will be incompatible
-with other people's files!  If you must change them for some application,
-do so in the local variables section of the time-stamped file itself.")
+This value can also be set with the variable `time-stamp-pattern'.
 
+Do not change `time-stamp-line-limit', `time-stamp-start',
+`time-stamp-end', or `time-stamp-pattern' for yourself or you will be
+incompatible with other people's files!  If you must change them for some
+application, do so in the local variables section of the time-stamped file
+itself.")
+;;;###autoload(put 'time-stamp-start 'safe-local-variable 'stringp)
 
 (defvar time-stamp-end "\\\\?[\">]"    ;Do not change!
   "Regexp marking the text after the time stamp.
@@ -165,16 +172,19 @@ do so in the local variables section of the time-stamped file itself.")
 and the following match of `time-stamp-end', then writes the
 time stamp specified by `time-stamp-format' between them.
 
+This value can also be set with the variable `time-stamp-pattern'.
+
 The end text normally starts on the same line as the start text ends,
 but if there are any newlines in `time-stamp-format', the same number
 of newlines must separate the start and end.  \\[time-stamp] tries
 to not change the number of lines in the buffer.  `time-stamp-inserts-lines'
 controls this behavior.
 
-Do not change `time-stamp-line-limit', `time-stamp-start', `time-stamp-end',
+Do not change `time-stamp-start', `time-stamp-end', `time-stamp-pattern',
 or `time-stamp-inserts-lines' for yourself or you will be incompatible
 with other people's files!  If you must change them for some application,
 do so in the local variables section of the time-stamped file itself.")
+;;;###autoload(put 'time-stamp-end 'safe-local-variable 'stringp)
 
 
 (defvar time-stamp-inserts-lines nil    ;Do not change!
@@ -191,6 +201,7 @@ Do not change `time-stamp-end' or `time-stamp-inserts-lines' for
 yourself or you will be incompatible with other people's files!
 If you must change them for some application, do so in the local
 variables section of the time-stamped file itself.")
+;;;###autoload(put 'time-stamp-inserts-lines 'safe-local-variable 'symbolp)
 
 
 (defvar time-stamp-count 1             ;Do not change!
@@ -201,6 +212,7 @@ Do not change `time-stamp-count' for yourself or you will be
 incompatible with other people's files!  If you must change it for
 some application, do so in the local variables section of the
 time-stamped file itself.")
+;;;###autoload(put 'time-stamp-count 'safe-local-variable 'integerp)
 
 
 (defvar time-stamp-pattern nil         ;Do not change!
@@ -231,9 +243,12 @@ Examples:
 \"@set Time-stamp: %:b %:d, %:y$\"
 \"newcommand{\\\\\\\\timestamp}{%%}\"
 
-Do not change `time-stamp-pattern' for yourself or you will be incompatible
-with other people's files!  Set it only in the local variables section
-of the time-stamped file itself.")
+Do not change `time-stamp-pattern' `time-stamp-line-limit',
+`time-stamp-start', or `time-stamp-end' for yourself or you will be
+incompatible with other people's files!  If you must change them for
+some application, do so only in the local variables section of the
+time-stamped file itself.")
+;;;###autoload(put 'time-stamp-pattern 'safe-local-variable 'stringp)
 
 
 
@@ -251,10 +266,11 @@ look like one of the following:
 The time stamp is written between the brackets or quotes:
       Time-stamp: <2001-02-18 10:20:51 gildea>
 The time stamp is updated only if the variable `time-stamp-active' is non-nil.
-The format of the time stamp is set by the variable `time-stamp-format'.
-The variables `time-stamp-line-limit', `time-stamp-start', `time-stamp-end',
-`time-stamp-count', and `time-stamp-inserts-lines' control finding the
-template."
+The format of the time stamp is set by the variable `time-stamp-pattern' or
+`time-stamp-format'.  The variables `time-stamp-pattern',
+`time-stamp-line-limit', `time-stamp-start', `time-stamp-end',
+`time-stamp-count', and `time-stamp-inserts-lines' control finding 
+the template."
   (interactive)
   (let ((line-limit time-stamp-line-limit)
        (ts-start time-stamp-start)
@@ -475,7 +491,7 @@ and all `time-stamp-format' compatibility."
                 (or (eq ?. cur-char)
                     (eq ?, cur-char) (eq ?: cur-char) (eq ?@ cur-char)
                     (eq ?- cur-char) (eq ?+ cur-char) (eq ?_ cur-char)
-                    (eq ?\  cur-char) (eq ?# cur-char) (eq ?^ cur-char)
+                    (eq ?\s cur-char) (eq ?# cur-char) (eq ?^ cur-char)
                     (and (eq ?\( cur-char)
                          (not (eq prev-char ?\\))
                          (setq paren-level (1+ paren-level)))
@@ -588,6 +604,13 @@ and all `time-stamp-format' compatibility."
          (user-full-name))
         ((eq cur-char ?h)              ;mail host name
          (time-stamp-mail-host-name))
+        ((eq cur-char ?q)              ;(undocumented unqual hostname)
+         (let ((qualname (system-name)))
+           (if (string-match "\\." qualname)
+               (substring qualname 0 (match-beginning 0))
+             qualname)))
+        ((eq cur-char ?Q)              ;(undocumented fully-qualified host)
+         (system-name))
         ))
        (let ((padded-result
               (format (format "%%%s%c"
@@ -687,23 +710,16 @@ around literals."
 ;;; Some functions used in time-stamp-format
 
 ;;; These functions have been obsolete since 1995
-;;; and will be removed in Emacs 22.
+;;; and will be removed in a future Emacs release.
 ;;; Meanwhile, discourage other packages from using them.
-(let ((obsolete-functions '(time-stamp-month-dd-yyyy
-                           time-stamp-dd/mm/yyyy
-                           time-stamp-mon-dd-yyyy
-                           time-stamp-dd-mon-yy
-                           time-stamp-yy/mm/dd
-                           time-stamp-yyyy/mm/dd
-                           time-stamp-yyyy-mm-dd
-                           time-stamp-yymmdd
-                           time-stamp-hh:mm:ss
-                           time-stamp-hhmm)))
-  (while obsolete-functions
-    (make-obsolete (car obsolete-functions)
-                  "use time-stamp-string or format-time-string instead."
-                  "20.1")
-    (setq obsolete-functions (cdr obsolete-functions))))
+(dolist (function '(time-stamp-month-dd-yyyy time-stamp-dd/mm/yyyy
+                   time-stamp-mon-dd-yyyy   time-stamp-dd-mon-yy
+                   time-stamp-yy/mm/dd      time-stamp-yyyy/mm/dd
+                   time-stamp-yyyy-mm-dd    time-stamp-yymmdd
+                   time-stamp-hh:mm:ss      time-stamp-hhmm))
+  (make-obsolete function
+                "use `time-stamp-string' or `format-time-string' instead."
+                "20.1"))
 
 ;;; pretty form, suitable for a title page