annotate lisp/time-stamp.el @ 18170:7776ee6215de

(time-stamp-format): Doc fix. Use %;y. (time-stamp-string-preprocess): Don't just call format-time-string; handle compatibility for some old constructs. Handle padding the historical way, while giving a warning if people actually depend on it. (time-stamp-conv-warn, time-stamp-conversion-warn) (time-stamp-do-number): New functions.
author Richard M. Stallman <rms@gnu.org>
date Sun, 08 Jun 1997 21:43:08 +0000
parents 0dc8180c2e7a
children 566b6cf773ed
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1 ;;; time-stamp.el --- Maintain last change time stamps in files edited by Emacs
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
3 ;; Copyright 1989, 1993, 1994, 1995, 1997 Free Software Foundation, Inc.
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14042
diff changeset
4
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
5 ;; Maintainer's Time-stamp: <1997-06-01 17:02:45 gildea>
17600
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
6 ;; Maintainer: Stephen Gildea <gildea@alum.mit.edu>
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7 ;; Keywords: tools
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9 ;; This file is free software; you can redistribute it and/or modify
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10 ;; it under the terms of the GNU General Public License as published by
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 ;; the Free Software Foundation; either version 2, or (at your option)
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 ;; any later version.
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14 ;; This file is distributed in the hope that it will be useful,
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 ;; GNU General Public License for more details.
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14042
diff changeset
20 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14042
diff changeset
21 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14042
diff changeset
22 ;; Boston, MA 02111-1307, USA.
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24 ;;; Commentary:
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
26 ;; A template in a file can be updated with a new time stamp when
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
27 ;; you save the file. For example:
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
28 ;; static char *ts = "sdmain.c Time-stamp: <1996-08-13 10:20:51 gildea>";
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
29 ;; See the top of `time-stamp.el' for another example.
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
31 ;; To use time-stamping, add this line to your .emacs file:
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
32 ;; (add-hook 'write-file-hooks 'time-stamp)
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
33 ;; Now any time-stamp templates in your files will be updated automatically.
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
35 ;; See the documentation for the functions `time-stamp'
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
36 ;; and `time-stamp-toggle-active' for details.
11404
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
37
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 ;;; Code:
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39
17438
368547942e03 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16714
diff changeset
40 (defgroup time-stamp nil
368547942e03 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16714
diff changeset
41 "Maintain last change time stamps in files edited by Emacs."
368547942e03 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16714
diff changeset
42 :group 'data
368547942e03 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16714
diff changeset
43 :group 'extensions)
368547942e03 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16714
diff changeset
44
368547942e03 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16714
diff changeset
45 (defcustom time-stamp-active t
13356
a2a68cba7996 update some doc strings.
Karl Heuer <kwzh@gnu.org>
parents: 12044
diff changeset
46 "*Non-nil to enable time-stamping of buffers by \\[time-stamp].
11404
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
47 Can be toggled by \\[time-stamp-toggle-active].
17438
368547942e03 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16714
diff changeset
48 See also the variable `time-stamp-warn-inactive'."
368547942e03 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16714
diff changeset
49 :type 'boolean
368547942e03 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16714
diff changeset
50 :group 'time-stamp)
11404
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
51
17438
368547942e03 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16714
diff changeset
52 (defcustom time-stamp-warn-inactive t
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
53 "Non-nil to have \\[time-stamp] warn if a buffer did not get time-stamped.
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
54 A warning is printed if `time-stamp-active' is nil and the buffer contains
17438
368547942e03 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16714
diff changeset
55 a time stamp template that would otherwise have been updated."
368547942e03 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16714
diff changeset
56 :type 'boolean
368547942e03 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16714
diff changeset
57 :group 'time-stamp)
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58
17438
368547942e03 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16714
diff changeset
59 (defcustom time-stamp-old-format-warn 'ask
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
60 "Action to take if `time-stamp-format' is an old-style list.
16674
91590d8f74c3 (time-stamp-am-pm): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 16517
diff changeset
61 If `error', the format is not used. If `ask', the user is queried about
91590d8f74c3 (time-stamp-am-pm): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 16517
diff changeset
62 using the time-stamp-format. If `warn', a warning is displayed.
17438
368547942e03 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16714
diff changeset
63 If nil, no notification is given."
17600
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
64 :type '(choice (const :tag "No notification" nil)
17438
368547942e03 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16714
diff changeset
65 (const :tag "Don't use the format" error)
368547942e03 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16714
diff changeset
66 (const ask) (const warn))
368547942e03 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16714
diff changeset
67 :group 'time-stamp)
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
68
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
69 (defcustom time-stamp-format "%:y-%02m-%02d %02H:%02M:%02S %u"
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
70 "*Format of the string inserted by \\[time-stamp].
16674
91590d8f74c3 (time-stamp-am-pm): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 16517
diff changeset
71 The value may be a string or a list. Lists are supported only for
91590d8f74c3 (time-stamp-am-pm): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 16517
diff changeset
72 backward compatibility; see variable `time-stamp-old-format-warn'.
13356
a2a68cba7996 update some doc strings.
Karl Heuer <kwzh@gnu.org>
parents: 12044
diff changeset
73
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
74 A string is used verbatim except for character sequences beginning with %:
16705
db8a501954f6 (time-stamp-no-file): Reintroduced.
Richard M. Stallman <rms@gnu.org>
parents: 16674
diff changeset
75
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
76 %:a weekday name: `Monday'. %#A gives uppercase: `MONDAY'
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
77 %3a abbreviated weekday: `Mon'. %3A gives uppercase: `MON'
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
78 %:b month name: `January'. %#B gives uppercase: `JANUARY'
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
79 %3b abbreviated month: `Jan'. %3B gives uppercase: `JAN'
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
80 %02d day of month
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
81 %02H 24-hour clock hour
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
82 %02I 12-hour clock hour
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
83 %02m month number
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
84 %02M minute
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
85 %#p `am' or `pm'. %P gives uppercase: `AM' or `PM'
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
86 %02S seconds
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
87 %w day number of week, Sunday is 0
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
88 %02y 2-digit year: `97' %:y 4-digit year: `1997'
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
89 %z time zone name: `est'. %Z gives uppercase: `EST'
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
90
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
91 Non-date items:
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
92 %% a literal percent character: `%'
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
93 %f file name without directory %F gives absolute pathname
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
94 %s system name
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
95 %u user's login name
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
96 %h mail host name
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
97
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
98 Decimal digits between the % and the type character specify the
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
99 field width. Strings are truncated on the right; years on the left.
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
100 A leading zero causes numbers to be zero-filled.
17600
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
101
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
102 For example, to get the format used by the `date' command,
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
103 use \"%3a %3b %2d %02H:%02M:%02S %Z %:y\".
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
104
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
105 In the future these formats will be aligned more with format-time-string.
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
106 Because of this transition, the default padding for numeric formats will
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
107 change in a future version. Therefore either a padding width should be
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
108 specified, or the : modifier should be used to explicitly request the
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
109 historical default."
17438
368547942e03 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16714
diff changeset
110 :type 'string
368547942e03 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16714
diff changeset
111 :group 'time-stamp)
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
112
17600
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
113
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
114
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
115 ;;; Do not change time-stamp-line-limit, time-stamp-start, or
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
116 ;;; time-stamp-end in your .emacs or you will be incompatible
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
117 ;;; with other people's files! If you must change them,
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
118 ;;; do so only in the local variables section of the file itself.
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
119
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
120
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
121 (defvar time-stamp-line-limit 8 ;Do not change!
14042
161d50568707 (time-stamp-line-limit): negative value counts
Karl Heuer <kwzh@gnu.org>
parents: 13356
diff changeset
122 "Lines of a file searched; positive counts from start, negative from end.
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
123 The patterns `time-stamp-start' and `time-stamp-end' must be found on one
14042
161d50568707 (time-stamp-line-limit): negative value counts
Karl Heuer <kwzh@gnu.org>
parents: 13356
diff changeset
124 of the first (last) `time-stamp-line-limit' lines of the file for the
161d50568707 (time-stamp-line-limit): negative value counts
Karl Heuer <kwzh@gnu.org>
parents: 13356
diff changeset
125 file to be time-stamped by \\[time-stamp].
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
126
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
127 Do not change `time-stamp-line-limit', `time-stamp-start', or
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
128 `time-stamp-end' for yourself or you will be incompatible
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
129 with other people's files! If you must change them for some application,
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
130 do so in the local variables section of the time-stamped file itself.")
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
131
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
132
5971
f97f4938fffa (time-stamp-start): Allow more white space
Richard M. Stallman <rms@gnu.org>
parents: 5632
diff changeset
133 (defvar time-stamp-start "Time-stamp:[ \t]+\\\\?[\"<]+" ;Do not change!
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
134 "Regexp after which the time stamp is written by \\[time-stamp].
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
135 See also the variables `time-stamp-end' and `time-stamp-line-limit'.
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
136
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
137 Do not change `time-stamp-line-limit', `time-stamp-start', or
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
138 `time-stamp-end' for yourself or you will be incompatible
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
139 with other people's files! If you must change them for some application,
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140 do so in the local variables section of the time-stamped file itself.")
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
141
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
142
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
143 (defvar time-stamp-end "\\\\?[\">]" ;Do not change!
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
144 "Regexp marking the text after the time stamp.
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
145 \\[time-stamp] deletes the text between the first match of `time-stamp-start'
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
146 and the following match of `time-stamp-end' on the same line,
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
147 then writes the time stamp specified by `time-stamp-format' between them.
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
148
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
149 Do not change `time-stamp-line-limit', `time-stamp-start', or
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
150 `time-stamp-end' for yourself or you will be incompatible
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
151 with other people's files! If you must change them for some application,
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
152 do so in the local variables section of the time-stamped file itself.")
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
153
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
154
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
155
4327
771786f5d8c2 (time-stamp): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 4325
diff changeset
156 ;;;###autoload
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
157 (defun time-stamp ()
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
158 "Update the time stamp string in the buffer.
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
159 A template in a file can be automatically updated with a new time stamp
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
160 every time you save the file. Add this line to your .emacs file:
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
161 (add-hook 'write-file-hooks 'time-stamp)
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
162 Normally the template must appear in the first 8 lines of a file and
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
163 look like one of the following:
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
164 Time-stamp: <>
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
165 Time-stamp: \" \"
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
166 The time stamp is written between the brackets or quotes:
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
167 Time-stamp: <1996-07-18 10:20:51 gildea>
17600
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
168 The time stamp is updated only if the variable `time-stamp-active' is non-nil.
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
169 The format of the time stamp is set by the variable `time-stamp-format'.
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
170 The variables `time-stamp-line-limit', `time-stamp-start',
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
171 and `time-stamp-end' control finding the template."
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
172 (interactive)
12023
1a3e7aef5f8a (time-stamp): only warn about time-stamping
Karl Heuer <kwzh@gnu.org>
parents: 11429
diff changeset
173 (let ((case-fold-search nil)
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
174 (start nil)
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
175 (end nil)
17600
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
176 search-limit
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
177 (line-limit time-stamp-line-limit))
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
178 (cond ((not (integerp line-limit))
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
179 (setq line-limit 8)
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
180 (message "time-stamp-line-limit is not a number")
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
181 (sit-for 1)))
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
182 (save-excursion
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
183 (save-restriction
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
184 (widen)
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
185 (cond ((> line-limit 0)
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
186 (goto-char (setq start (point-min)))
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
187 (forward-line line-limit)
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
188 (setq search-limit (point)))
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
189 (t
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
190 (goto-char (setq search-limit (point-max)))
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
191 (forward-line line-limit)
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
192 (setq start (point))))
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
193 (goto-char start)
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
194 (while (and (< (point) search-limit)
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
195 (not end)
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
196 (re-search-forward time-stamp-start search-limit 'move))
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
197 (setq start (point))
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
198 (end-of-line)
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
199 (let ((line-end (point)))
14042
161d50568707 (time-stamp-line-limit): negative value counts
Karl Heuer <kwzh@gnu.org>
parents: 13356
diff changeset
200 (goto-char start)
17600
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
201 (if (re-search-forward time-stamp-end line-end 'move)
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
202 (setq end (match-beginning 0)))))))
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
203 (if end
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
204 (progn
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
205 ;; do all warnings outside save-excursion
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
206 (cond
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
207 ((not time-stamp-active)
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
208 (if time-stamp-warn-inactive
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
209 ;; don't signal an error in a write-file-hook
14042
161d50568707 (time-stamp-line-limit): negative value counts
Karl Heuer <kwzh@gnu.org>
parents: 13356
diff changeset
210 (progn
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
211 (message "Warning: time-stamp-active is off; did not time-stamp buffer.")
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
212 (sit-for 1))))
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
213 ((not (and (stringp time-stamp-start)
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
214 (stringp time-stamp-end)))
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
215 (message "time-stamp-start or time-stamp-end is not a string")
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
216 (sit-for 1))
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
217 (t
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
218 (let ((new-time-stamp (time-stamp-string)))
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
219 (if (stringp new-time-stamp)
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
220 (save-excursion
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
221 (save-restriction
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
222 (widen)
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
223 (delete-region start end)
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
224 (goto-char start)
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
225 (insert new-time-stamp)
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
226 (setq end (point))
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
227 ;; remove any tabs used to format time stamp
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
228 (goto-char start)
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
229 (if (search-forward "\t" end t)
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
230 (untabify start end)))))))))))
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
231 ;; be sure to return nil so can be used on write-file-hooks
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
232 nil)
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
233
11404
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
234 ;;;###autoload
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
235 (defun time-stamp-toggle-active (&optional arg)
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
236 "Toggle `time-stamp-active', setting whether \\[time-stamp] updates a buffer.
11404
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
237 With arg, turn time stamping on if and only if arg is positive."
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
238 (interactive "P")
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
239 (setq time-stamp-active
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
240 (if (null arg)
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
241 (not time-stamp-active)
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
242 (> (prefix-numeric-value arg) 0)))
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
243 (message "time-stamp is now %s." (if time-stamp-active "active" "off")))
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
244
16705
db8a501954f6 (time-stamp-no-file): Reintroduced.
Richard M. Stallman <rms@gnu.org>
parents: 16674
diff changeset
245 (defconst time-stamp-no-file "(no file)"
db8a501954f6 (time-stamp-no-file): Reintroduced.
Richard M. Stallman <rms@gnu.org>
parents: 16674
diff changeset
246 "String to use when the buffer is not associated with a file.")
db8a501954f6 (time-stamp-no-file): Reintroduced.
Richard M. Stallman <rms@gnu.org>
parents: 16674
diff changeset
247
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
248 ;;; time-stamp is transitioning to using the new, expanded capabilities
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
249 ;;; of format-time-string. During the process, this function implements
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
250 ;;; intermediate, compatible formats and complains about old, soon to
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
251 ;;; be unsupported, formats. This function will get a lot (a LOT) shorter
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
252 ;;; when the transition is complete and we can just pass most things
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
253 ;;; straight through to format-time-string.
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
254 ;;; At all times, all the formats recommended in the doc string
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
255 ;;; of time-stamp-format will work not only in the current version of
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
256 ;;; Emacs, but in all versions that have been released within the past
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
257 ;;; two years.
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
258 ;;; The : modifier is a temporary conversion feature used to resolve
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
259 ;;; ambiguous formats--formats that are changing (over time) incompatibly.
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
260 (defun time-stamp-string-preprocess (format &optional time)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
261 ;; Uses a FORMAT to format date, time, file, and user information.
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
262 ;; Optional second argument TIME is only for testing.
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
263 ;; Implements non-time extensions to format-time-string
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
264 ;; and all time-stamp-format compatibility.
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
265 (let ((fmt-len (length format))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
266 (ind 0)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
267 cur-char
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
268 (prev-char nil)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
269 (result "")
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
270 field-index
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
271 field-width
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
272 field-result
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
273 alt-form change-case require-padding
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
274 (paren-level 0))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
275 (while (< ind fmt-len)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
276 (setq cur-char (aref format ind))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
277 (setq
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
278 result
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
279 (concat result
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
280 (cond
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
281 ((eq cur-char ?%)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
282 ;; eat any additional args to allow for future expansion
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
283 (setq alt-form nil change-case nil require-padding nil)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
284 (while (progn
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
285 (setq ind (1+ ind))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
286 (setq cur-char (if (< ind fmt-len)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
287 (aref format ind)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
288 ?\0))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
289 (or (eq ?. cur-char)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
290 (eq ?, cur-char) (eq ?: cur-char) (eq ?@ cur-char)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
291 (eq ?- cur-char) (eq ?+ cur-char) (eq ?_ cur-char)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
292 (eq ?\ cur-char) (eq ?# cur-char) (eq ?^ cur-char)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
293 (and (eq ?\( cur-char)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
294 (not (eq prev-char ?\\))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
295 (setq paren-level (1+ paren-level)))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
296 (if (and (eq ?\) cur-char)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
297 (not (eq prev-char ?\\))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
298 (> paren-level 0))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
299 (setq paren-level (1- paren-level))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
300 (and (> paren-level 0)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
301 (< ind fmt-len)))))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
302 (setq prev-char cur-char)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
303 ;; some characters we actually use
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
304 (cond ((eq cur-char ?:)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
305 (setq alt-form t))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
306 ((eq cur-char ?#)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
307 (setq change-case t))))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
308 ;; get format width
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
309 (setq field-index ind)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
310 (setq ind (1- ind))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
311 (while (progn
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
312 (setq ind (1+ ind))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
313 (setq cur-char (if (< ind fmt-len)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
314 (aref format ind)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
315 ?\0))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
316 (and (<= ?0 cur-char) (>= ?9 cur-char))))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
317 (setq field-width (substring format field-index ind))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
318 (setq field-result
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
319 (cond
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
320 ((eq cur-char ?%)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
321 "%")
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
322 ((eq cur-char ?a) ;day of week
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
323 (if change-case
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
324 (format-time-string "%#A" time)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
325 (or alt-form (not (string-equal field-width ""))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
326 (time-stamp-conv-warn "%a" "%:a"))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
327 (if (and alt-form (not (string-equal field-width "")))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
328 "" ;discourage "%:3a"
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
329 (format-time-string "%A" time))))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
330 ((eq cur-char ?A)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
331 (if alt-form
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
332 (format-time-string "%A" time)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
333 (or change-case (not (string-equal field-width ""))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
334 (time-stamp-conv-warn "%A" "%#A"))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
335 (format-time-string "%#A" time)))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
336 ((eq cur-char ?b) ;month name
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
337 (if change-case
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
338 (format-time-string "%#B" time)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
339 (or alt-form (not (string-equal field-width ""))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
340 (time-stamp-conv-warn "%b" "%:b"))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
341 (if (and alt-form (not (string-equal field-width "")))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
342 "" ;discourage "%:3b"
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
343 (format-time-string "%B" time))))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
344 ((eq cur-char ?B)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
345 (if alt-form
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
346 (format-time-string "%B" time)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
347 (or change-case (not (string-equal field-width ""))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
348 (time-stamp-conv-warn "%B" "%#B"))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
349 (format-time-string "%#B" time)))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
350 ((eq cur-char ?d) ;day of month, 1-31
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
351 (time-stamp-do-number cur-char))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
352 ((eq cur-char ?H) ;hour, 0-23
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
353 (time-stamp-do-number cur-char))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
354 ((eq cur-char ?I) ;hour, 1-12
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
355 (time-stamp-do-number cur-char))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
356 ((eq cur-char ?m) ;month number, 1-12
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
357 (time-stamp-do-number cur-char))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
358 ((eq cur-char ?M) ;minute, 0-59
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
359 (time-stamp-do-number cur-char))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
360 ((eq cur-char ?p) ;am or pm
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
361 (or change-case
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
362 (time-stamp-conv-warn "%p" "%#p"))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
363 (format-time-string "%#p" time))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
364 ((eq cur-char ?P) ;AM or PM
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
365 (format-time-string "%p" time))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
366 ((eq cur-char ?S) ;seconds, 00-60
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
367 (time-stamp-do-number cur-char))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
368 ((eq cur-char ?w) ;weekday number, Sunday is 0
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
369 (format-time-string "%w" time))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
370 ((eq cur-char ?y) ;year
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
371 (or alt-form (not (string-equal field-width ""))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
372 (time-stamp-conv-warn "%y" "%:y"))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
373 (string-to-int (format-time-string "%Y" time)))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
374 ((eq cur-char ?Y) ;4-digit year, new style
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
375 (string-to-int (format-time-string "%Y" time)))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
376 ((eq cur-char ?z) ;time zone lower case
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
377 (if change-case
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
378 "" ;discourage %z variations
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
379 (format-time-string "%#Z" time)))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
380 ((eq cur-char ?Z)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
381 (if change-case
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
382 (format-time-string "%#Z" time)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
383 (format-time-string "%Z" time)))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
384 ((eq cur-char ?f) ;buffer-file-name, base name only
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
385 (if buffer-file-name
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
386 (file-name-nondirectory buffer-file-name)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
387 time-stamp-no-file))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
388 ((eq cur-char ?F) ;buffer-file-name, full path
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
389 (or buffer-file-name
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
390 time-stamp-no-file))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
391 ((eq cur-char ?s) ;system name
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
392 (system-name))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
393 ((eq cur-char ?u) ;user name
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
394 (user-login-name))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
395 ((eq cur-char ?h) ;mail host name
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
396 (time-stamp-mail-host-name))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
397 ))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
398 (if (string-equal field-width "")
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
399 field-result
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
400 (let ((padded-result
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
401 (format (format "%%%s%c"
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
402 field-width
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
403 (if (numberp field-result) ?d ?s))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
404 (or field-result ""))))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
405 (let ((initial-length (length padded-result))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
406 (desired-length (string-to-int field-width)))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
407 (if (> initial-length desired-length)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
408 ;; truncate strings on right, years on left
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
409 (if (stringp field-result)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
410 (substring padded-result 0 desired-length)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
411 (if (eq cur-char ?y)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
412 (substring padded-result (- desired-length))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
413 padded-result)) ;non-year numbers don't truncate
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
414 padded-result)))))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
415 (t
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
416 (char-to-string cur-char)))))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
417 (setq ind (1+ ind)))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
418 result))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
419
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
420 (defun time-stamp-do-number (format-char)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
421 ;; Handle compatible cases where only
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
422 ;; the default width/padding will change.
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
423 ;; Uses dynamic vars field-width, time.
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
424 (let ((format-string (concat "%" (char-to-string format-char))))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
425 (and (not alt-form) (string-equal field-width "")
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
426 (time-stamp-conv-warn format-string
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
427 (format "%%:%c" format-char)))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
428 (if (and alt-form (not (string-equal field-width "")))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
429 "" ;discourage "%:2d" and the like
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
430 (string-to-int (format-time-string format-string time)))))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
431
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
432 (defvar time-stamp-conversion-warn t
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
433 "Non-nil to warn about soon-to-be-unsupported forms in time-stamp-format.
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
434 In would be a bad idea to disable these warnings!
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
435 You really need to update your files instead.
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
436
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
437 The new formats will work with old versions of Emacs.
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
438 New formats are being recommended now to allow time-stamp-format
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
439 to change in the future to be compatible with format-time-string.
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
440 The new forms being recommended now will continue to work then.")
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
441
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
442
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
443 (defun time-stamp-conv-warn (old-form new-form)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
444 ;; Display a warning about a soon-to-be-obsolete format.
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
445 (cond
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
446 (time-stamp-conversion-warn
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
447 (save-excursion
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
448 (set-buffer (get-buffer-create "*Time-stamp-compatibility*"))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
449 (goto-char (point-max))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
450 (if (bobp)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
451 (progn
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
452 (insert
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
453 "The formats recognized in time-stamp-format will change in a future release\n"
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
454 "to be compatible with the new, expanded format-time-string function.\n\n"
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
455 "The following obsolescent time-stamp-format construct(s) were found:\n\n")))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
456 (insert "\"" old-form "\" -- use " new-form "\n"))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
457 (display-buffer "*Time-stamp-compatibility*"))))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
458
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
459
11404
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
460
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
461 (defun time-stamp-string ()
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
462 "Generate the new string to be inserted by \\[time-stamp]."
11404
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
463 (if (stringp time-stamp-format)
17600
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
464 (format-time-string (time-stamp-string-preprocess time-stamp-format))
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
465 ;; handle version 1 compatibility
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
466 (cond ((or (eq time-stamp-old-format-warn 'error)
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
467 (and (eq time-stamp-old-format-warn 'ask)
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
468 (not (y-or-n-p "Use non-string time-stamp-format? "))))
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
469 (message "Warning: no time-stamp: time-stamp-format not a string")
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
470 (sit-for 1)
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
471 nil)
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
472 (t
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
473 (cond ((eq time-stamp-old-format-warn 'warn)
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
474 (message "Obsolescent time-stamp-format type; should be string")
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
475 (sit-for 1)))
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
476 (time-stamp-fconcat time-stamp-format " ")))))
11404
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
477
14042
161d50568707 (time-stamp-line-limit): negative value counts
Karl Heuer <kwzh@gnu.org>
parents: 13356
diff changeset
478 (defconst time-stamp-no-file "(no file)"
161d50568707 (time-stamp-line-limit): negative value counts
Karl Heuer <kwzh@gnu.org>
parents: 13356
diff changeset
479 "String to use when the buffer is not associated with a file.")
161d50568707 (time-stamp-line-limit): negative value counts
Karl Heuer <kwzh@gnu.org>
parents: 13356
diff changeset
480
11404
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
481 (defun time-stamp-mail-host-name ()
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
482 "Return the name of the host where the user receives mail.
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
483 This is the value of `mail-host-address' if bound and a string,
16714
634b34517d56 (time-stamp-mail-host-name): Get rid of time-stamp-mail-host.
Richard M. Stallman <rms@gnu.org>
parents: 16706
diff changeset
484 otherwise the value of the function system-name."
11404
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
485 (or (and (boundp 'mail-host-address)
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
486 (stringp mail-host-address)
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
487 mail-host-address)
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
488 (system-name)))
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
489
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
490 ;;; the rest of this file is for version 1 compatibility
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
491
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
492 (defun time-stamp-fconcat (list sep)
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
493 "Similar to (mapconcat 'funcall LIST SEP) but LIST allows literals.
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494 If an element of LIST is a symbol, it is funcalled to get the string to use;
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
495 the separator SEP is used between two strings obtained by funcalling a
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
496 symbol. Otherwise the element itself is inserted; no separator is used
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
497 around literals."
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
498 (let ((return-string "")
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
499 (insert-sep-p nil))
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
500 (while list
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
501 (cond ((symbolp (car list))
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
502 (if insert-sep-p
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
503 (setq return-string (concat return-string sep)))
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
504 (setq return-string (concat return-string (funcall (car list))))
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505 (setq insert-sep-p t))
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
506 (t
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
507 (setq return-string (concat return-string (car list)))
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
508 (setq insert-sep-p nil)))
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
509 (setq list (cdr list)))
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
510 return-string))
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
511
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
512 ;;; Some functions used in time-stamp-format
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
513
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514 ;;; Could generate most of a message-id with
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
515 ;;; '(time-stamp-yymmdd "" time-stamp-hhmm "@" time-stamp-mail-host-name)
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
516
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
517 ;;; pretty form, suitable for a title page
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
518
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
519 (defun time-stamp-month-dd-yyyy ()
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
520 "Return the current date as a string in \"Month DD, YYYY\" form."
16706
450cb7cbf895 (time-stamp-month-dd-yyyy): Use format-time-string.
Richard M. Stallman <rms@gnu.org>
parents: 16705
diff changeset
521 (format-time-string "%B %e, %Y"))
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
522
16517
1fa5a347e70f (time-stamp-dd/mm/yyyy): New function.
Richard M. Stallman <rms@gnu.org>
parents: 16287
diff changeset
523 (defun time-stamp-dd/mm/yyyy ()
1fa5a347e70f (time-stamp-dd/mm/yyyy): New function.
Richard M. Stallman <rms@gnu.org>
parents: 16287
diff changeset
524 "Return the current date as a string in \"DD/MM/YYYY\" form."
16706
450cb7cbf895 (time-stamp-month-dd-yyyy): Use format-time-string.
Richard M. Stallman <rms@gnu.org>
parents: 16705
diff changeset
525 (format-time-string "%d/%m/%Y"))
16517
1fa5a347e70f (time-stamp-dd/mm/yyyy): New function.
Richard M. Stallman <rms@gnu.org>
parents: 16287
diff changeset
526
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
527 ;;; same as __DATE__ in ANSI C
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
528
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
529 (defun time-stamp-mon-dd-yyyy ()
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
530 "Return the current date as a string in \"Mon DD YYYY\" form.
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
531 The first character of DD is space if the value is less than 10."
16706
450cb7cbf895 (time-stamp-month-dd-yyyy): Use format-time-string.
Richard M. Stallman <rms@gnu.org>
parents: 16705
diff changeset
532 (format-time-string "%b %d %Y"))
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
533
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
534 ;;; RFC 822 date
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
535
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
536 (defun time-stamp-dd-mon-yy ()
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
537 "Return the current date as a string in \"DD Mon YY\" form."
16706
450cb7cbf895 (time-stamp-month-dd-yyyy): Use format-time-string.
Richard M. Stallman <rms@gnu.org>
parents: 16705
diff changeset
538 (format-time-string "%d %b %y"))
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
539
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
540 ;;; RCS 3 date
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
541
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
542 (defun time-stamp-yy/mm/dd ()
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
543 "Return the current date as a string in \"YY/MM/DD\" form."
16706
450cb7cbf895 (time-stamp-month-dd-yyyy): Use format-time-string.
Richard M. Stallman <rms@gnu.org>
parents: 16705
diff changeset
544 (format-time-string "%y/%m/%d"))
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
545
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
546 ;;; RCS 5 date
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
547
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
548 (defun time-stamp-yyyy/mm/dd ()
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
549 "Return the current date as a string in \"YYYY/MM/DD\" form."
16706
450cb7cbf895 (time-stamp-month-dd-yyyy): Use format-time-string.
Richard M. Stallman <rms@gnu.org>
parents: 16705
diff changeset
550 (format-time-string "%Y/%m/%d"))
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
551
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
552 ;;; ISO 8601 date
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
553
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
554 (defun time-stamp-yyyy-mm-dd ()
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
555 "Return the current date as a string in \"YYYY-MM-DD\" form."
16706
450cb7cbf895 (time-stamp-month-dd-yyyy): Use format-time-string.
Richard M. Stallman <rms@gnu.org>
parents: 16705
diff changeset
556 (format-time-string "%Y-%m-%d"))
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
557
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
558 (defun time-stamp-yymmdd ()
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
559 "Return the current date as a string in \"YYMMDD\" form."
16706
450cb7cbf895 (time-stamp-month-dd-yyyy): Use format-time-string.
Richard M. Stallman <rms@gnu.org>
parents: 16705
diff changeset
560 (format-time-string "%y%m%d"))
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
561
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
562 (defun time-stamp-hh:mm:ss ()
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
563 "Return the current time as a string in \"HH:MM:SS\" form."
16706
450cb7cbf895 (time-stamp-month-dd-yyyy): Use format-time-string.
Richard M. Stallman <rms@gnu.org>
parents: 16705
diff changeset
564 (format-time-string "%T"))
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
565
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
566 (defun time-stamp-hhmm ()
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
567 "Return the current time as a string in \"HHMM\" form."
16706
450cb7cbf895 (time-stamp-month-dd-yyyy): Use format-time-string.
Richard M. Stallman <rms@gnu.org>
parents: 16705
diff changeset
568 (format-time-string "%H%M"))
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
569
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
570 (provide 'time-stamp)
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
571
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
572 ;;; time-stamp.el ends here