changeset 16674:91590d8f74c3

(time-stamp-am-pm): Variable deleted. (time-stamp-weekday-full-names): Likewise. (time-stamp-weekday-numbers): Likewise. (time-stamp-old-format-warn): Doc fix. (time-stamp-strftime): Function deleted. (time-stamp-string): Use format-time-string. (time-stamp-format): Change default value to work with format-time-string.
author Richard M. Stallman <rms@gnu.org>
date Fri, 13 Dec 1996 01:49:23 +0000
parents 932451713b13
children 6f45dc8d9d56
files lisp/time-stamp.el
diffstat 1 files changed, 9 insertions(+), 197 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/time-stamp.el	Fri Dec 13 01:31:43 1996 +0000
+++ b/lisp/time-stamp.el	Fri Dec 13 01:49:23 1996 +0000
@@ -40,7 +40,7 @@
 ;; Originally based on the 19 Dec 88 version of
 ;;   date.el by John Sturdy <mcvax!harlqn.co.uk!jcgs@uunet.uu.net>
 ;; Version 2, January 1995: replaced functions with %-escapes
-;; $Id: time-stamp.el,v 1.19 1996/09/22 22:20:58 kwzh Exp rms $
+;; $Id: time-stamp.el,v 1.20 1996/11/05 18:27:41 rms Exp rms $
 
 ;;; Code:
 
@@ -56,44 +56,18 @@
 
 (defvar time-stamp-old-format-warn 'ask
   "Action to take if `time-stamp-format' is an old-style list.
-If 'error, the format is not used.  If 'ask, the user is queried about
-using the time-stamp-format.  If 'warn, a warning is displayed.
+If `error', the format is not used.  If `ask', the user is queried about
+using the time-stamp-format.  If `warn', a warning is displayed.
 If nil, no notification is given.")
 
-(defvar time-stamp-format "%y-%02m-%02d %02H:%02M:%02S %u"
+(defvar time-stamp-format "%y-%m-%d %H:%M:%S %u"
   "*Format of the string inserted by \\[time-stamp].
-Value may be a string or a list.  (Lists are supported only for
-backward compatibility; see variable `time-stamp-old-format-warn'.)
-A string is used verbatim except for character sequences beginning with %:
+The value may be a string or a list.  Lists are supported only for
+backward compatibility; see variable `time-stamp-old-format-warn'.
 
-%a  weekday name: `Monday'.		%A gives uppercase: `MONDAY'
-%b  month name: `January'.		%B gives uppercase: `JANUARY'
-%d  day of month
-%H  24-hour clock hour
-%I  12-hour clock hour
-%m  month number
-%M  minute
-%p  `am' or `pm'.			%P gives uppercase: `AM' or `PM'
-%S  seconds
-%w  day number of week, Sunday is 0
-%y  year: `1995'
-%z  time zone name: `est'.		%Z gives uppercase: `EST'
-
-Non-date items:
-%%  a literal percent character: `%'
-%f  file name without directory		%F gives absolute pathname
-%s  system name
-%u  user's login name
-%h  mail host name
-
-Decimal digits between the % and the type character specify the
-field width.  Strings are truncated on the right; numbers on the left.
-A leading zero causes numbers to be zero-filled.
-
+A string is used with `format-time-string'.
 For example, to get the format used by the `date' command,
-use \"%3a %3b %2d %02H:%02M:%02S %Z %y\"")
-
-
+use \"%3a %3b %2d %H:%M:%S %Z %y\"")
 
 ;;; Do not change time-stamp-line-limit, time-stamp-start, or
 ;;; time-stamp-end in your .emacs or you will be incompatible
@@ -224,7 +198,7 @@
 (defun time-stamp-string ()
   "Generate the new string to be inserted by \\[time-stamp]."
   (if (stringp time-stamp-format)
-      (time-stamp-strftime time-stamp-format)
+      (format-time-string time-stamp-format (current-time))
     ;; handle version 1 compatibility
     (cond ((or (eq time-stamp-old-format-warn 'error)
 	       (and (eq time-stamp-old-format-warn 'ask)
@@ -247,171 +221,9 @@
   ["(zero)" "January" "February" "March" "April" "May" "June"
    "July" "August" "September" "October" "November" "December"])
 
-(defconst time-stamp-weekday-numbers
-  '(("Sun" . 0) ("Mon" . 1) ("Tue" . 2) ("Wed" . 3)
-    ("Thu" . 4) ("Fri" . 5) ("Sat" . 6))
-  "Alist of weekdays and their number.")
-
-(defconst time-stamp-weekday-full-names
-  ["Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday"])
-
-(defconst time-stamp-am-pm '("am" "pm")
-  "List of strings used to denote morning and afternoon.")
-
 (defconst time-stamp-no-file "(no file)"
   "String to use when the buffer is not associated with a file.")
 
-(defun time-stamp-strftime (format &optional time)
-  "Uses a FORMAT to format date, time, file, and user information.
-Optional second argument TIME will be used instead of the current time.
-See the documentation of the variable `time-stamp-format' for a description
-of the format string."
-  (let ((time-string (cond ((stringp time)
-			    time)
-			   (time
-			    (current-time-string time))
-			   (t
-			    (current-time-string))))
-	(fmt-len (length format))
-	(ind 0)
-	cur-char
-	(prev-char nil)
-	(result "")
-	field-index
-	field-width
-	field-result
-	(paren-level 0))
-    (while (< ind fmt-len)
-      (setq cur-char (aref format ind))
-      (setq
-       result
-       (concat result
-      (cond
-       ((eq cur-char ?%)
-	(setq field-index (1+ ind))
-	(while (progn
-		 (setq ind (1+ ind))
-		 (setq cur-char (if (< ind fmt-len)
-				    (aref format ind)
-				  ?\0))
-		 (and (<= ?0 cur-char) (>= ?9 cur-char))))
-	(setq field-width (substring format field-index ind))
-	;; eat any additional args to allow for future expansion
-	(while (or (and (<= ?0 cur-char) (>= ?9 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)
-		   (and (eq ?\( cur-char)
-			(not (eq prev-char ?\\))
-			(setq paren-level (1+ paren-level)))
-		   (if (and (eq ?\) cur-char)
-			    (not (eq prev-char ?\\))
-			    (> paren-level 0))
-		       (setq paren-level (1- paren-level))
-		     (and (> paren-level 0)
-			  (< ind fmt-len))))
-	  (setq ind (1+ ind))
-	  (setq prev-char cur-char)
-	  (setq cur-char (if (< ind fmt-len)
-			     (aref format ind)
-			   ?\0)))
-	(setq field-result
-	(cond
-	 ((eq cur-char ?%)
-	  "%")
-	 ((or (eq cur-char ?a)		;weekday name
-	      (eq cur-char ?A))
-	  (let ((name
-		 (aref time-stamp-weekday-full-names
-		       (cdr (assoc (substring time-string 0 3)
-				   time-stamp-weekday-numbers)))))
-	    (if (eq cur-char ?a)
-		name
-	      (upcase name))))
-	 ((or (eq cur-char ?b)		;month name
-	      (eq cur-char ?B))
-	  (let ((name
-		 (aref time-stamp-month-full-names
-		       (cdr (assoc (substring time-string 4 7)
-				   time-stamp-month-numbers)))))
-	    (if (eq cur-char ?b)
-		name
-	      (upcase name))))
-	 ((eq cur-char ?d)		;day of month, 1-31
-	  (string-to-int (substring time-string 8 10)))
-	 ((eq cur-char ?H)		;hour, 0-23
-	  (string-to-int (substring time-string 11 13)))
-	 ((eq cur-char ?I)		;hour, 1-12
-	  (let ((hour (string-to-int (substring time-string 11 13))))
-	    (cond ((< hour 1)
-		   (+ hour 12))
-		  ((> hour 12)
-		   (- hour 12))
-		  (t
-		   hour))))
-	 ((eq cur-char ?m)		;month number, 1-12
-	  (cdr (assoc (substring time-string 4 7)
-		      time-stamp-month-numbers)))
-	 ((eq cur-char ?M)		;minute, 0-59
-	  (string-to-int (substring time-string 14 16)))
-	 ((or (eq cur-char ?p)		;am or pm
-	      (eq cur-char ?P))
-	  (let ((name
-		 (if (> 12 (string-to-int (substring time-string 11 13)))
-		     (car time-stamp-am-pm)
-		   (car (cdr time-stamp-am-pm)))))
-	    (if (eq cur-char ?p)
-		name
-	      (upcase name))))
-	 ((eq cur-char ?S)		;seconds, 00-60
-	  (string-to-int (substring time-string 17 19)))
-	 ((eq cur-char ?w)		;weekday number, Sunday is 0
-	  (cdr (assoc (substring time-string 0 3) time-stamp-weekday-numbers)))
-	 ((eq cur-char ?y)		;year
-	  (string-to-int (substring time-string -4)))
-	 ((or (eq cur-char ?z)		;time zone
-	      (eq cur-char ?Z))
-	  (let ((name
-		 (if (fboundp 'current-time-zone)
-		     (car (cdr (current-time-zone time))))))
-	    (or name (setq name ""))
-	    (if (eq cur-char ?z)
-		(downcase name)
-	      (upcase name))))
-	 ((eq cur-char ?f)		;buffer-file-name, base name only
-	  (if buffer-file-name
-	      (file-name-nondirectory buffer-file-name)
-	    time-stamp-no-file))
-	 ((eq cur-char ?F)		;buffer-file-name, full path
-	  (or buffer-file-name
-	      time-stamp-no-file))
-	 ((eq cur-char ?s)		;system name
-	  (system-name))
-	 ((eq cur-char ?u)		;user name
-	  (user-login-name))
-	 ((eq cur-char ?h)		;mail host name
-	  (time-stamp-mail-host-name))
-	 ))
-	(if (string-equal field-width "")
-	    field-result
-	  (let ((padded-result
-		 (format (format "%%%s%c"
-				 field-width
-				 (if (numberp field-result) ?d ?s))
-			 (or field-result ""))))
-	    (let ((initial-length (length padded-result))
-		  (desired-length (string-to-int field-width)))
-	      (if (> initial-length desired-length)
-		  ;; truncate strings on right, numbers on left
-		  (if (stringp field-result)
-		      (substring padded-result 0 desired-length)
-		    (substring padded-result (- desired-length)))
-		padded-result)))))
-       (t
-	(char-to-string cur-char)))))
-      (setq ind (1+ ind)))
-    result))
-
 (defun time-stamp-mail-host-name ()
   "Return the name of the host where the user receives mail.
 This is the value of `mail-host-address' if bound and a string,