annotate lisp/time-stamp.el @ 62412:6ac7ed8e212b

(makefile-dependency-regex): Turn it into a var, and refine it to mask one more level of nested vars. (makefile-rule-action-regex): Turn it into a var, and refine it so it recognizes backslashed continuation lines as belonging to the same command. (makefile-macroassign-regex): Refine it so it recognizes backslashed continuation lines as belonging to the same command. (makefile-var-use-regex): Don't look at the next char, because it might be the same one to be skipped by the initial [^$], leading to an overlooked variable use. (makefile-make-font-lock-keywords): Remove two parameters, which are now variables that some of the modes set locally. Handle dependency and rule action matching through functions, because regexps alone match too often. Dependency matching now comes last, so it can check, whether a colon already matched something else. (makefile-mode): Inform that font-lock improves makefile parsing capabilities. (makefile-match-dependency, makefile-match-action): New functions.
author Daniel Pfeiffer <occitan@esperanto.org>
date Mon, 16 May 2005 20:13:09 +0000
parents a7e02ef1e3d6
children 6fb026ad601f f042e7c0fe20
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
35627
c5a1cf50f5cd Doc fixes.
Dave Love <fx@gnu.org>
parents: 34395
diff changeset
3 ;; Copyright 1989, 1993, 1994, 1995, 1997, 2000, 2001
32454
08bfb5555d7b (time-stamp): Fixed bug in new multi-line code
Gerd Moellmann <gerd@gnu.org>
parents: 28696
diff changeset
4 ;;; Free Software Foundation, Inc.
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14042
diff changeset
5
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 37083
diff changeset
6 ;; This file is part of GNU Emacs.
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 37083
diff changeset
7
56099
5c87de660fc1 (time-stamp): Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56074
diff changeset
8 ;; Maintainer's Time-stamp: <2004-06-13 19:04:36 teirllm>
39229
bf5f26157d70 Update Stephen Gildea's email address.
Eli Zaretskii <eliz@gnu.org>
parents: 38436
diff changeset
9 ;; Maintainer: Stephen Gildea <gildea@stop.mail-abuse.org>
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10 ;; Keywords: tools
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11
45340
a0cc96a3bf71 Fix the preamble comments.
Eli Zaretskii <eliz@gnu.org>
parents: 45138
diff changeset
12 ;; GNU Emacs is free software; you can redistribute it and/or modify
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 ;; 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
14 ;; the Free Software Foundation; either version 2, or (at your option)
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 ;; any later version.
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16
45341
1471d94c6f8a More preamble fixes.
Eli Zaretskii <eliz@gnu.org>
parents: 45340
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 ;; GNU General Public License for more details.
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22 ;; 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
23 ;; 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
24 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14042
diff changeset
25 ;; Boston, MA 02111-1307, USA.
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27 ;;; Commentary:
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
29 ;; 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
30 ;; you save the file. For example:
49559
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
31 ;; static char *ts = "sdmain.c Time-stamp: <2001-08-13 10:20:51 gildea>";
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
32 ;; See the top of `time-stamp.el' for another example.
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
34 ;; To use time-stamping, add this line to your .emacs file:
56074
7aab74a19427 (time-stamp): Recommend adding it to `before-save-hook', rather than
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
35 ;; (add-hook 'before-save-hook 'time-stamp)
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
36 ;; 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
37
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
38 ;; 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
39 ;; 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
40
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 ;;; Code:
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42
17438
368547942e03 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16714
diff changeset
43 (defgroup time-stamp nil
368547942e03 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16714
diff changeset
44 "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
45 :group 'data
368547942e03 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16714
diff changeset
46 :group 'extensions)
368547942e03 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16714
diff changeset
47
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
48 (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
49 "*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
50 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
51 backward compatibility; see variable `time-stamp-old-format-warn'.
13356
a2a68cba7996 update some doc strings.
Karl Heuer <kwzh@gnu.org>
parents: 12044
diff changeset
52
35627
c5a1cf50f5cd Doc fixes.
Dave Love <fx@gnu.org>
parents: 34395
diff changeset
53 A string is used verbatim except for character sequences beginning
c5a1cf50f5cd Doc fixes.
Dave Love <fx@gnu.org>
parents: 34395
diff changeset
54 with %, as follows. The values of non-numeric formatted items depend
37083
15fc82d712ac (time-stamp-format): Doc fix. From Paul Eggert <eggert@twinsun.com>.
Eli Zaretskii <eliz@gnu.org>
parents: 35695
diff changeset
55 on the locale setting recorded in `system-time-locale' and
15fc82d712ac (time-stamp-format): Doc fix. From Paul Eggert <eggert@twinsun.com>.
Eli Zaretskii <eliz@gnu.org>
parents: 35695
diff changeset
56 `locale-coding-system'. The examples here are for the default
45138
6855d0e47c10 (time-stamp-format): Escape open parenthesis in column 0.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 39371
diff changeset
57 \(`C') locale.
16705
db8a501954f6 (time-stamp-no-file): Reintroduced.
Richard M. Stallman <rms@gnu.org>
parents: 16674
diff changeset
58
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
59 %: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
60 %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
61 %: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
62 %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
63 %02d day of month
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
64 %02H 24-hour clock hour
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
65 %02I 12-hour clock hour
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
66 %02m month number
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
67 %02M minute
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
68 %#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
69 %02S seconds
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
70 %w day number of week, Sunday is 0
49559
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
71 %02y 2-digit year: `03' %:y 4-digit year: `2003'
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
72 %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
73
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
74 Non-date items:
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
75 %% a literal percent character: `%'
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
76 %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
77 %s system name
24266
894911d2c01d (time-stamp-format): Format doc tighter.
Richard M. Stallman <rms@gnu.org>
parents: 22993
diff changeset
78 %u user's login name %U user's full name
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
79 %h mail host name
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
80
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
81 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
82 field width. Strings are truncated on the right; years on the left.
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
83 A leading zero in the field width zero-fills a number.
17600
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
84
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
85 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
86 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
87
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
88 In the future these formats will be aligned more with `format-time-string'.
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
89 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
90 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
91 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
92 historical default."
17438
368547942e03 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16714
diff changeset
93 :type 'string
49559
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
94 :group 'time-stamp
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
95 :version "20.1")
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
96
19504
fd1ee3c25839 (time-stamp-time-zone): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19154
diff changeset
97 (defcustom time-stamp-active t
fd1ee3c25839 (time-stamp-time-zone): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19154
diff changeset
98 "*Non-nil to enable time-stamping of buffers by \\[time-stamp].
fd1ee3c25839 (time-stamp-time-zone): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19154
diff changeset
99 Can be toggled by \\[time-stamp-toggle-active].
fd1ee3c25839 (time-stamp-time-zone): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19154
diff changeset
100 See also the variable `time-stamp-warn-inactive'."
fd1ee3c25839 (time-stamp-time-zone): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19154
diff changeset
101 :type 'boolean
fd1ee3c25839 (time-stamp-time-zone): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19154
diff changeset
102 :group 'time-stamp)
fd1ee3c25839 (time-stamp-time-zone): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19154
diff changeset
103
fd1ee3c25839 (time-stamp-time-zone): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19154
diff changeset
104 (defcustom time-stamp-warn-inactive t
32454
08bfb5555d7b (time-stamp): Fixed bug in new multi-line code
Gerd Moellmann <gerd@gnu.org>
parents: 28696
diff changeset
105 "Have \\[time-stamp] warn if a buffer did not get time-stamped.
49559
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
106 If non-nil, a warning is displayed if `time-stamp-active' has
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
107 deactivated time stamping and the buffer contains a template that
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
108 otherwise would have been updated."
19504
fd1ee3c25839 (time-stamp-time-zone): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19154
diff changeset
109 :type 'boolean
49559
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
110 :group 'time-stamp
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
111 :version "19.29")
19504
fd1ee3c25839 (time-stamp-time-zone): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19154
diff changeset
112
fd1ee3c25839 (time-stamp-time-zone): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19154
diff changeset
113 (defcustom time-stamp-old-format-warn 'ask
32454
08bfb5555d7b (time-stamp): Fixed bug in new multi-line code
Gerd Moellmann <gerd@gnu.org>
parents: 28696
diff changeset
114 "Action if `time-stamp-format' is an old-style list.
19504
fd1ee3c25839 (time-stamp-time-zone): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19154
diff changeset
115 If `error', the format is not used. If `ask', the user is queried about
fd1ee3c25839 (time-stamp-time-zone): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19154
diff changeset
116 using the time-stamp-format. If `warn', a warning is displayed.
fd1ee3c25839 (time-stamp-time-zone): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19154
diff changeset
117 If nil, no notification is given."
34395
2f4a4d355834 (time-stamp-old-format-warn): reorder custom
Gerd Moellmann <gerd@gnu.org>
parents: 33033
diff changeset
118 :type '(choice (const :tag "Don't use the format" error)
2f4a4d355834 (time-stamp-old-format-warn): reorder custom
Gerd Moellmann <gerd@gnu.org>
parents: 33033
diff changeset
119 (const ask)
2f4a4d355834 (time-stamp-old-format-warn): reorder custom
Gerd Moellmann <gerd@gnu.org>
parents: 33033
diff changeset
120 (const warn)
2f4a4d355834 (time-stamp-old-format-warn): reorder custom
Gerd Moellmann <gerd@gnu.org>
parents: 33033
diff changeset
121 (const :tag "No notification" nil))
19504
fd1ee3c25839 (time-stamp-time-zone): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19154
diff changeset
122 :group 'time-stamp)
fd1ee3c25839 (time-stamp-time-zone): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19154
diff changeset
123
fd1ee3c25839 (time-stamp-time-zone): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19154
diff changeset
124 (defcustom time-stamp-time-zone nil
fd1ee3c25839 (time-stamp-time-zone): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19154
diff changeset
125 "If non-nil, a string naming the timezone to be used by \\[time-stamp].
fd1ee3c25839 (time-stamp-time-zone): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19154
diff changeset
126 Format is the same as that used by the environment variable TZ on your system."
19791
1366d82c1d3f (time-stamp-time-zone): Allow nil as alternative.
Richard M. Stallman <rms@gnu.org>
parents: 19504
diff changeset
127 :type '(choice (const nil) string)
49559
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
128 :group 'time-stamp
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
129 :version "20.1")
17600
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
130
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
131
21073
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
132 ;;; Do not change time-stamp-line-limit, time-stamp-start,
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
133 ;;; time-stamp-end, time-stamp-pattern, time-stamp-inserts-lines,
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
134 ;;; or time-stamp-count in your .emacs or you will be incompatible
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
135 ;;; with other people's files! If you must change them, do so only
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
136 ;;; in the local variables section of the file itself.
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
137
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
138
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
139 (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
140 "Lines of a file searched; positive counts from start, negative from end.
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
141 The patterns `time-stamp-start' and `time-stamp-end' must be found in
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
142 the first (last) `time-stamp-line-limit' lines of the file for the
24266
894911d2c01d (time-stamp-format): Format doc tighter.
Richard M. Stallman <rms@gnu.org>
parents: 22993
diff changeset
143 file to be time-stamped by \\[time-stamp]. A value of 0 searches the
894911d2c01d (time-stamp-format): Format doc tighter.
Richard M. Stallman <rms@gnu.org>
parents: 22993
diff changeset
144 entire buffer (use with care).
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
145
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
146 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
147 `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
148 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
149 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
150
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151
5971
f97f4938fffa (time-stamp-start): Allow more white space
Richard M. Stallman <rms@gnu.org>
parents: 5632
diff changeset
152 (defvar time-stamp-start "Time-stamp:[ \t]+\\\\?[\"<]+" ;Do not change!
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
153 "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
154 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
155
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
156 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
157 `time-stamp-end' for yourself or you will be incompatible
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
158 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
159 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
160
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
161
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
162 (defvar time-stamp-end "\\\\?[\">]" ;Do not change!
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
163 "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
164 \\[time-stamp] deletes the text between the first match of `time-stamp-start'
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
165 and the following match of `time-stamp-end', then writes the
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
166 time stamp specified by `time-stamp-format' between them.
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
167
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
168 The end text normally starts on the same line as the start text ends,
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
169 but if there are any newlines in `time-stamp-format', the same number
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
170 of newlines must separate the start and end. \\[time-stamp] tries
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
171 to not change the number of lines in the buffer. `time-stamp-inserts-lines'
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
172 controls this behavior.
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
173
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
174 Do not change `time-stamp-line-limit', `time-stamp-start', `time-stamp-end',
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
175 or `time-stamp-inserts-lines' for yourself or you will be incompatible
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
176 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
177 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
178
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
179
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
180 (defvar time-stamp-inserts-lines nil ;Do not change!
49559
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
181 "Whether \\[time-stamp] can change the number of lines in a file.
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
182 If nil, \\[time-stamp] skips as many lines as there are newlines in
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
183 `time-stamp-format' before looking for the `time-stamp-end' pattern,
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
184 thus it tries not to change the number of lines in the buffer.
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
185 If non-nil, \\[time-stamp] starts looking for the end pattern
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
186 immediately after the start pattern. This behavior can cause
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
187 unexpected changes in the buffer if used carelessly, but it is useful
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
188 for generating repeated time stamps.
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
189
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
190 Do not change `time-stamp-end' or `time-stamp-inserts-lines' for
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
191 yourself or you will be incompatible with other people's files!
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
192 If you must change them for some application, do so in the local
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
193 variables section of the time-stamped file itself.")
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
194
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
195
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
196 (defvar time-stamp-count 1 ;Do not change!
32454
08bfb5555d7b (time-stamp): Fixed bug in new multi-line code
Gerd Moellmann <gerd@gnu.org>
parents: 28696
diff changeset
197 "How many templates \\[time-stamp] will look for in a buffer.
49559
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
198 The same time stamp will be written in each case.
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
199
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
200 Do not change `time-stamp-count' for yourself or you will be
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
201 incompatible with other people's files! If you must change it for
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
202 some application, do so in the local variables section of the
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
203 time-stamped file itself.")
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
204
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
205
49559
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
206 (defvar time-stamp-pattern nil ;Do not change!
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
207 "Convenience variable setting all `time-stamp' location and format values.
21073
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
208 This string has four parts, each of which is optional.
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
209 These four parts set `time-stamp-line-limit', `time-stamp-start',
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
210 `time-stamp-format', and `time-stamp-end'. See the documentation
21073
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
211 for each of these variables for details.
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
212
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
213 The first part is a number followed by a slash; the number sets the number
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
214 of lines at the beginning (negative counts from end) of the file searched
49559
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
215 for the time stamp. The number and the slash may be omitted to use the
21073
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
216 normal value.
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
217
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
218 The second part is a regexp identifying the pattern preceding the time stamp.
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
219 This part may be omitted to use the normal pattern.
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
220
49559
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
221 The third part specifies the format of the time stamp inserted. See
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
222 the documentation for `time-stamp-format' for details. Specify this
21073
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
223 part as \"%%\" to use the normal format.
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
224
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
225 The fourth part is a regexp identifying the pattern following the time stamp.
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
226 This part may be omitted to use the normal pattern.
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
227
49559
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
228 Examples:
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
229 \"-10/\"
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
230 \"-9/^Last modified: %%$\"
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
231 \"@set Time-stamp: %:b %:d, %:y$\"
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
232 \"newcommand{\\\\\\\\timestamp}{%%}\"
21073
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
233
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
234 Do not change `time-stamp-pattern' for yourself or you will be incompatible
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
235 with other people's files! Set it only in the local variables section
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
236 of the time-stamped file itself.")
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
237
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
238
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
239
4327
771786f5d8c2 (time-stamp): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 4325
diff changeset
240 ;;;###autoload
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
241 (defun time-stamp ()
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
242 "Update the time stamp string(s) in the buffer.
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
243 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
244 every time you save the file. Add this line to your .emacs file:
56074
7aab74a19427 (time-stamp): Recommend adding it to `before-save-hook', rather than
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
245 (add-hook 'before-save-hook 'time-stamp)
56099
5c87de660fc1 (time-stamp): Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56074
diff changeset
246 or customize `before-save-hook' through Custom.
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
247 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
248 look like one of the following:
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
249 Time-stamp: <>
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
250 Time-stamp: \" \"
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
251 The time stamp is written between the brackets or quotes:
49559
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
252 Time-stamp: <2001-02-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
253 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
254 The format of the time stamp is set by the variable `time-stamp-format'.
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
255 The variables `time-stamp-line-limit', `time-stamp-start', `time-stamp-end',
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
256 `time-stamp-count', and `time-stamp-inserts-lines' control finding the
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
257 template."
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
258 (interactive)
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
259 (let ((line-limit time-stamp-line-limit)
21073
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
260 (ts-start time-stamp-start)
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
261 (ts-format time-stamp-format)
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
262 (ts-end time-stamp-end)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
263 (ts-count time-stamp-count)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
264 (format-lines 0)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
265 (end-lines 1)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
266 (start nil)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
267 search-limit)
21073
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
268 (if (stringp time-stamp-pattern)
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
269 (progn
49559
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
270 (string-match "\\`\\(\\(-?[0-9]+\\)/\\)?\\([^%]+\\)?\\(\\(%[-.,:@+_ #^()0-9]*[A-Za-z%][^%]*\\)*%[-.,:@+_ #^()0-9]*[A-Za-z%]\\)?\\([^%]+\\)?\\'" time-stamp-pattern)
21073
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
271 (and (match-beginning 2)
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
272 (setq line-limit
62402
a7e02ef1e3d6 Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents: 56099
diff changeset
273 (string-to-number (match-string 2 time-stamp-pattern))))
21073
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
274 (and (match-beginning 3)
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
275 (setq ts-start (match-string 3 time-stamp-pattern)))
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
276 (and (match-beginning 4)
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
277 (not (string-equal (match-string 4 time-stamp-pattern) "%%"))
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
278 (setq ts-format (match-string 4 time-stamp-pattern)))
22508
c9307c229265 (time-stamp): Handle newlines in time-stamp-pattern.
Karl Heuer <kwzh@gnu.org>
parents: 21073
diff changeset
279 (and (match-beginning 6)
c9307c229265 (time-stamp): Handle newlines in time-stamp-pattern.
Karl Heuer <kwzh@gnu.org>
parents: 21073
diff changeset
280 (setq ts-end (match-string 6 time-stamp-pattern)))))
17600
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
281 (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
282 (setq line-limit 8)
21073
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
283 (message "time-stamp-line-limit is not an integer")
17600
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
284 (sit-for 1)))
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
285 (cond ((not (integerp ts-count))
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
286 (setq ts-count 1)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
287 (message "time-stamp-count is not an integer")
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
288 (sit-for 1))
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
289 ((< ts-count 1)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
290 ;; We need to call time-stamp-once at least once
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
291 ;; to output any warnings about time-stamp not being active.
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
292 (setq ts-count 1)))
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
293 ;; Figure out what lines the end should be on.
32454
08bfb5555d7b (time-stamp): Fixed bug in new multi-line code
Gerd Moellmann <gerd@gnu.org>
parents: 28696
diff changeset
294 (if (stringp ts-format)
08bfb5555d7b (time-stamp): Fixed bug in new multi-line code
Gerd Moellmann <gerd@gnu.org>
parents: 28696
diff changeset
295 (let ((nl-start 0))
08bfb5555d7b (time-stamp): Fixed bug in new multi-line code
Gerd Moellmann <gerd@gnu.org>
parents: 28696
diff changeset
296 (while (string-match "\n" ts-format nl-start)
08bfb5555d7b (time-stamp): Fixed bug in new multi-line code
Gerd Moellmann <gerd@gnu.org>
parents: 28696
diff changeset
297 (setq format-lines (1+ format-lines) nl-start (match-end 0)))))
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
298 (let ((nl-start 0))
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
299 (while (string-match "\n" ts-end nl-start)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
300 (setq end-lines (1+ end-lines) nl-start (match-end 0))))
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
301 ;; Find overall what lines to look at
17600
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
302 (save-excursion
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
303 (save-restriction
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
304 (widen)
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
305 (cond ((> line-limit 0)
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
306 (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
307 (forward-line line-limit)
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
308 (setq search-limit (point)))
24266
894911d2c01d (time-stamp-format): Format doc tighter.
Richard M. Stallman <rms@gnu.org>
parents: 22993
diff changeset
309 ((< line-limit 0)
17600
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
310 (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
311 (forward-line line-limit)
24266
894911d2c01d (time-stamp-format): Format doc tighter.
Richard M. Stallman <rms@gnu.org>
parents: 22993
diff changeset
312 (setq start (point)))
894911d2c01d (time-stamp-format): Format doc tighter.
Richard M. Stallman <rms@gnu.org>
parents: 22993
diff changeset
313 (t ;0 => no limit (use with care!)
894911d2c01d (time-stamp-format): Format doc tighter.
Richard M. Stallman <rms@gnu.org>
parents: 22993
diff changeset
314 (setq start (point-min))
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
315 (setq search-limit (point-max))))))
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
316 (while (and start
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
317 (< start search-limit)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
318 (> ts-count 0))
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
319 (setq start (time-stamp-once start search-limit ts-start ts-end
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
320 ts-format format-lines end-lines))
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
321 (setq ts-count (1- ts-count))))
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
322 nil)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
323
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
324 (defun time-stamp-once (start search-limit ts-start ts-end
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
325 ts-format format-lines end-lines)
49559
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
326 "Update one time stamp. Internal routine called by \\[time-stamp].
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
327 Returns the end point, which is where `time-stamp' begins the next search."
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
328 (let ((case-fold-search nil)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
329 (end nil)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
330 end-search-start
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
331 (end-length nil))
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
332 (save-excursion
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
333 (save-restriction
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
334 (widen)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
335 ;; Find the location of the time stamp.
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
336 (while (and (< (goto-char start) search-limit)
17600
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
337 (not end)
21073
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
338 (re-search-forward ts-start search-limit 'move))
17600
0dc8180c2e7a (time-stamp-old-format-warn): Fix a tag string.
Richard M. Stallman <rms@gnu.org>
parents: 17438
diff changeset
339 (setq start (point))
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
340 (if (not time-stamp-inserts-lines)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
341 (forward-line format-lines))
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
342 (setq end-search-start (max start (point)))
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
343 (if (= (forward-line end-lines) 0)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
344 (progn
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
345 (and (bolp) (backward-char))
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
346 (let ((line-end (min (point) search-limit)))
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
347 (if (>= line-end end-search-start)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
348 (progn
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
349 (goto-char end-search-start)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
350 (if (re-search-forward ts-end line-end t)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
351 (progn
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
352 (setq end (match-beginning 0))
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
353 (setq end-length (- (match-end 0) end))))))))))))
21073
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
354 (if end
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
355 (progn
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
356 ;; do all warnings outside save-excursion
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
357 (cond
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
358 ((not time-stamp-active)
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
359 (if time-stamp-warn-inactive
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
360 ;; don't signal an error in a write-file-hook
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
361 (progn
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
362 (message "Warning: time-stamp-active is off; did not time-stamp buffer.")
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
363 (sit-for 1))))
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
364 ((not (and (stringp ts-start)
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
365 (stringp ts-end)))
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
366 (message "time-stamp-start or time-stamp-end is not a string")
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
367 (sit-for 1))
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
368 (t
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
369 (let ((new-time-stamp (time-stamp-string ts-format)))
24266
894911d2c01d (time-stamp-format): Format doc tighter.
Richard M. Stallman <rms@gnu.org>
parents: 22993
diff changeset
370 (if (and (stringp new-time-stamp)
894911d2c01d (time-stamp-format): Format doc tighter.
Richard M. Stallman <rms@gnu.org>
parents: 22993
diff changeset
371 (not (string-equal (buffer-substring start end)
894911d2c01d (time-stamp-format): Format doc tighter.
Richard M. Stallman <rms@gnu.org>
parents: 22993
diff changeset
372 new-time-stamp)))
21073
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
373 (save-excursion
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
374 (save-restriction
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
375 (widen)
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
376 (delete-region start end)
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
377 (goto-char start)
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
378 (insert-and-inherit new-time-stamp)
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
379 (setq end (point))
82e7d581bad1 (time-stamp-pattern): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19791
diff changeset
380 ;; remove any tabs used to format time stamp
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
381 (if (search-backward "\t" start t)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
382 (progn
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
383 (untabify start end)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
384 (setq end (point))))))))))))
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
385 ;; return the location after this time stamp, if there was one
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
386 (and end end-length
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
387 (+ end end-length))))
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
388
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
389
11404
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
390 ;;;###autoload
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
391 (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
392 "Toggle `time-stamp-active', setting whether \\[time-stamp] updates a buffer.
49559
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
393 With ARG, turn time stamping on if and only if arg is positive."
11404
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
394 (interactive "P")
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
395 (setq time-stamp-active
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
396 (if (null arg)
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
397 (not time-stamp-active)
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
398 (> (prefix-numeric-value arg) 0)))
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
399 (message "time-stamp is now %s." (if time-stamp-active "active" "off")))
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
400
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
401
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
402 (defun time-stamp-string (&optional ts-format)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
403 "Generate the new string to be inserted by \\[time-stamp].
35695
8bac5c752b89 (time-stamp-string): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 35627
diff changeset
404 Optionally use format TS-FORMAT instead of `time-stamp-format' to
8bac5c752b89 (time-stamp-string): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 35627
diff changeset
405 format the string."
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
406 (or ts-format
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
407 (setq ts-format time-stamp-format))
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
408 (if (stringp ts-format)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
409 (if (stringp time-stamp-time-zone)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
410 (let ((ts-real-time-zone (getenv "TZ")))
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
411 (unwind-protect
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
412 (progn
49559
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
413 (set-time-zone-rule time-stamp-time-zone)
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
414 (format-time-string
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
415 (time-stamp-string-preprocess ts-format)))
49559
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
416 (set-time-zone-rule ts-real-time-zone)))
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
417 (format-time-string
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
418 (time-stamp-string-preprocess ts-format)))
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
419 ;; handle version 1 compatibility
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
420 (cond ((or (eq time-stamp-old-format-warn 'error)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
421 (and (eq time-stamp-old-format-warn 'ask)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
422 (not (y-or-n-p "Use non-string time-stamp-format? "))))
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
423 (message "Warning: no time-stamp: time-stamp-format not a string")
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
424 (sit-for 1)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
425 nil)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
426 (t
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
427 (cond ((eq time-stamp-old-format-warn 'warn)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
428 (message "Obsolescent time-stamp-format type; should be string")
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
429 (sit-for 1)))
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
430 (time-stamp-fconcat ts-format " ")))))
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
431
16705
db8a501954f6 (time-stamp-no-file): Reintroduced.
Richard M. Stallman <rms@gnu.org>
parents: 16674
diff changeset
432 (defconst time-stamp-no-file "(no file)"
db8a501954f6 (time-stamp-no-file): Reintroduced.
Richard M. Stallman <rms@gnu.org>
parents: 16674
diff changeset
433 "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
434
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
435 ;;; 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
436 ;;; 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
437 ;;; 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
438 ;;; 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
439 ;;; 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
440 ;;; straight through to format-time-string.
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
441 ;;; 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
442 ;;; 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
443 ;;; 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
444 ;;; two years.
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
445 ;;; 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
446 ;;; 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
447 (defun time-stamp-string-preprocess (format &optional time)
35627
c5a1cf50f5cd Doc fixes.
Dave Love <fx@gnu.org>
parents: 34395
diff changeset
448 "Use a FORMAT to format date, time, file, and user information.
c5a1cf50f5cd Doc fixes.
Dave Love <fx@gnu.org>
parents: 34395
diff changeset
449 Optional second argument TIME is only for testing.
c5a1cf50f5cd Doc fixes.
Dave Love <fx@gnu.org>
parents: 34395
diff changeset
450 Implements non-time extensions to `format-time-string'
49559
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
451 and all `time-stamp-format' compatibility."
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
452 (let ((fmt-len (length format))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
453 (ind 0)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
454 cur-char
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
455 (prev-char nil)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
456 (result "")
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
457 field-width
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
458 field-result
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
459 alt-form change-case require-padding
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
460 (paren-level 0))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
461 (while (< ind fmt-len)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
462 (setq cur-char (aref format ind))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
463 (setq
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
464 result
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
465 (concat result
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
466 (cond
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
467 ((eq cur-char ?%)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
468 ;; eat any additional args to allow for future expansion
22508
c9307c229265 (time-stamp): Handle newlines in time-stamp-pattern.
Karl Heuer <kwzh@gnu.org>
parents: 21073
diff changeset
469 (setq alt-form nil change-case nil require-padding nil field-width "")
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
470 (while (progn
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
471 (setq ind (1+ ind))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
472 (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
473 (aref format ind)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
474 ?\0))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
475 (or (eq ?. cur-char)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
476 (eq ?, cur-char) (eq ?: cur-char) (eq ?@ cur-char)
35627
c5a1cf50f5cd Doc fixes.
Dave Love <fx@gnu.org>
parents: 34395
diff changeset
477 (eq ?- cur-char) (eq ?+ cur-char) (eq ?_ cur-char)
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
478 (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
479 (and (eq ?\( cur-char)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
480 (not (eq prev-char ?\\))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
481 (setq paren-level (1+ paren-level)))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
482 (if (and (eq ?\) cur-char)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
483 (not (eq prev-char ?\\))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
484 (> paren-level 0))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
485 (setq paren-level (1- paren-level))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
486 (and (> paren-level 0)
22508
c9307c229265 (time-stamp): Handle newlines in time-stamp-pattern.
Karl Heuer <kwzh@gnu.org>
parents: 21073
diff changeset
487 (< ind fmt-len)))
c9307c229265 (time-stamp): Handle newlines in time-stamp-pattern.
Karl Heuer <kwzh@gnu.org>
parents: 21073
diff changeset
488 (if (and (<= ?0 cur-char) (>= ?9 cur-char))
c9307c229265 (time-stamp): Handle newlines in time-stamp-pattern.
Karl Heuer <kwzh@gnu.org>
parents: 21073
diff changeset
489 ;; get format width
c9307c229265 (time-stamp): Handle newlines in time-stamp-pattern.
Karl Heuer <kwzh@gnu.org>
parents: 21073
diff changeset
490 (let ((field-index ind))
c9307c229265 (time-stamp): Handle newlines in time-stamp-pattern.
Karl Heuer <kwzh@gnu.org>
parents: 21073
diff changeset
491 (while (progn
c9307c229265 (time-stamp): Handle newlines in time-stamp-pattern.
Karl Heuer <kwzh@gnu.org>
parents: 21073
diff changeset
492 (setq ind (1+ ind))
c9307c229265 (time-stamp): Handle newlines in time-stamp-pattern.
Karl Heuer <kwzh@gnu.org>
parents: 21073
diff changeset
493 (setq cur-char (if (< ind fmt-len)
c9307c229265 (time-stamp): Handle newlines in time-stamp-pattern.
Karl Heuer <kwzh@gnu.org>
parents: 21073
diff changeset
494 (aref format ind)
c9307c229265 (time-stamp): Handle newlines in time-stamp-pattern.
Karl Heuer <kwzh@gnu.org>
parents: 21073
diff changeset
495 ?\0))
c9307c229265 (time-stamp): Handle newlines in time-stamp-pattern.
Karl Heuer <kwzh@gnu.org>
parents: 21073
diff changeset
496 (and (<= ?0 cur-char) (>= ?9 cur-char))))
c9307c229265 (time-stamp): Handle newlines in time-stamp-pattern.
Karl Heuer <kwzh@gnu.org>
parents: 21073
diff changeset
497 (setq field-width (substring format field-index ind))
c9307c229265 (time-stamp): Handle newlines in time-stamp-pattern.
Karl Heuer <kwzh@gnu.org>
parents: 21073
diff changeset
498 (setq ind (1- ind))
c9307c229265 (time-stamp): Handle newlines in time-stamp-pattern.
Karl Heuer <kwzh@gnu.org>
parents: 21073
diff changeset
499 t))))
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
500 (setq prev-char cur-char)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
501 ;; some characters we actually use
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
502 (cond ((eq cur-char ?:)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
503 (setq alt-form t))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
504 ((eq cur-char ?#)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
505 (setq change-case t))))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
506 (setq field-result
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
507 (cond
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
508 ((eq cur-char ?%)
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
509 "%%")
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
510 ((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
511 (if change-case
39371
76ff4ba003e8 (time-stamp-string-preprocess): Fix bug that
Gerd Moellmann <gerd@gnu.org>
parents: 39229
diff changeset
512 (format-time-string "%#a" time)
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
513 (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
514 (time-stamp-conv-warn "%a" "%:a"))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
515 (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
516 "" ;discourage "%:3a"
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
517 (format-time-string "%A" time))))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
518 ((eq cur-char ?A)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
519 (if alt-form
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
520 (format-time-string "%A" time)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
521 (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
522 (time-stamp-conv-warn "%A" "%#A"))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
523 (format-time-string "%#A" time)))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
524 ((eq cur-char ?b) ;month name
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
525 (if change-case
39371
76ff4ba003e8 (time-stamp-string-preprocess): Fix bug that
Gerd Moellmann <gerd@gnu.org>
parents: 39229
diff changeset
526 (format-time-string "%#b" time)
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
527 (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
528 (time-stamp-conv-warn "%b" "%:b"))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
529 (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
530 "" ;discourage "%:3b"
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
531 (format-time-string "%B" time))))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
532 ((eq cur-char ?B)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
533 (if alt-form
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
534 (format-time-string "%B" time)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
535 (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
536 (time-stamp-conv-warn "%B" "%#B"))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
537 (format-time-string "%#B" time)))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
538 ((eq cur-char ?d) ;day of month, 1-31
18171
566b6cf773ed (time-stamp-string-preprocess, time-stamp-do-number):
Richard M. Stallman <rms@gnu.org>
parents: 18170
diff changeset
539 (time-stamp-do-number cur-char alt-form field-width time))
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
540 ((eq cur-char ?H) ;hour, 0-23
18171
566b6cf773ed (time-stamp-string-preprocess, time-stamp-do-number):
Richard M. Stallman <rms@gnu.org>
parents: 18170
diff changeset
541 (time-stamp-do-number cur-char alt-form field-width time))
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
542 ((eq cur-char ?I) ;hour, 1-12
18171
566b6cf773ed (time-stamp-string-preprocess, time-stamp-do-number):
Richard M. Stallman <rms@gnu.org>
parents: 18170
diff changeset
543 (time-stamp-do-number cur-char alt-form field-width time))
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
544 ((eq cur-char ?m) ;month number, 1-12
18171
566b6cf773ed (time-stamp-string-preprocess, time-stamp-do-number):
Richard M. Stallman <rms@gnu.org>
parents: 18170
diff changeset
545 (time-stamp-do-number cur-char alt-form field-width time))
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
546 ((eq cur-char ?M) ;minute, 0-59
18171
566b6cf773ed (time-stamp-string-preprocess, time-stamp-do-number):
Richard M. Stallman <rms@gnu.org>
parents: 18170
diff changeset
547 (time-stamp-do-number cur-char alt-form field-width time))
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
548 ((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
549 (or change-case
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
550 (time-stamp-conv-warn "%p" "%#p"))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
551 (format-time-string "%#p" time))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
552 ((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
553 (format-time-string "%p" time))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
554 ((eq cur-char ?S) ;seconds, 00-60
18171
566b6cf773ed (time-stamp-string-preprocess, time-stamp-do-number):
Richard M. Stallman <rms@gnu.org>
parents: 18170
diff changeset
555 (time-stamp-do-number cur-char alt-form field-width time))
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
556 ((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
557 (format-time-string "%w" time))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
558 ((eq cur-char ?y) ;year
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
559 (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
560 (time-stamp-conv-warn "%y" "%:y"))
62402
a7e02ef1e3d6 Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents: 56099
diff changeset
561 (string-to-number (format-time-string "%Y" time)))
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
562 ((eq cur-char ?Y) ;4-digit year, new style
62402
a7e02ef1e3d6 Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents: 56099
diff changeset
563 (string-to-number (format-time-string "%Y" time)))
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
564 ((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
565 (if change-case
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
566 "" ;discourage %z variations
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
567 (format-time-string "%#Z" time)))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
568 ((eq cur-char ?Z)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
569 (if change-case
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
570 (format-time-string "%#Z" time)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
571 (format-time-string "%Z" time)))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
572 ((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
573 (if buffer-file-name
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
574 (file-name-nondirectory buffer-file-name)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
575 time-stamp-no-file))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
576 ((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
577 (or buffer-file-name
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
578 time-stamp-no-file))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
579 ((eq cur-char ?s) ;system name
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
580 (system-name))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
581 ((eq cur-char ?u) ;user name
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
582 (user-login-name))
22993
f580b9694876 (time-stamp-string-preprocess): Add %U code.
Richard M. Stallman <rms@gnu.org>
parents: 22508
diff changeset
583 ((eq cur-char ?U) ;user full name
f580b9694876 (time-stamp-string-preprocess): Add %U code.
Richard M. Stallman <rms@gnu.org>
parents: 22508
diff changeset
584 (user-full-name))
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
585 ((eq cur-char ?l) ;logname (undocumented user name alt)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
586 (user-login-name))
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
587 ((eq cur-char ?L) ;(undocumented alt user full name)
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
588 (user-full-name))
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
589 ((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
590 (time-stamp-mail-host-name))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
591 ))
32874
12f068b4d5ac (time-stamp-string-preprocess): Fix a wrong
Gerd Moellmann <gerd@gnu.org>
parents: 32454
diff changeset
592 (let ((padded-result
12f068b4d5ac (time-stamp-string-preprocess): Fix a wrong
Gerd Moellmann <gerd@gnu.org>
parents: 32454
diff changeset
593 (format (format "%%%s%c"
12f068b4d5ac (time-stamp-string-preprocess): Fix a wrong
Gerd Moellmann <gerd@gnu.org>
parents: 32454
diff changeset
594 field-width
12f068b4d5ac (time-stamp-string-preprocess): Fix a wrong
Gerd Moellmann <gerd@gnu.org>
parents: 32454
diff changeset
595 (if (numberp field-result) ?d ?s))
12f068b4d5ac (time-stamp-string-preprocess): Fix a wrong
Gerd Moellmann <gerd@gnu.org>
parents: 32454
diff changeset
596 (or field-result ""))))
12f068b4d5ac (time-stamp-string-preprocess): Fix a wrong
Gerd Moellmann <gerd@gnu.org>
parents: 32454
diff changeset
597 (let* ((initial-length (length padded-result))
12f068b4d5ac (time-stamp-string-preprocess): Fix a wrong
Gerd Moellmann <gerd@gnu.org>
parents: 32454
diff changeset
598 (desired-length (if (string-equal field-width "")
12f068b4d5ac (time-stamp-string-preprocess): Fix a wrong
Gerd Moellmann <gerd@gnu.org>
parents: 32454
diff changeset
599 initial-length
62402
a7e02ef1e3d6 Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents: 56099
diff changeset
600 (string-to-number field-width))))
32874
12f068b4d5ac (time-stamp-string-preprocess): Fix a wrong
Gerd Moellmann <gerd@gnu.org>
parents: 32454
diff changeset
601 (if (> initial-length desired-length)
12f068b4d5ac (time-stamp-string-preprocess): Fix a wrong
Gerd Moellmann <gerd@gnu.org>
parents: 32454
diff changeset
602 ;; truncate strings on right, years on left
12f068b4d5ac (time-stamp-string-preprocess): Fix a wrong
Gerd Moellmann <gerd@gnu.org>
parents: 32454
diff changeset
603 (if (stringp field-result)
12f068b4d5ac (time-stamp-string-preprocess): Fix a wrong
Gerd Moellmann <gerd@gnu.org>
parents: 32454
diff changeset
604 (substring padded-result 0 desired-length)
12f068b4d5ac (time-stamp-string-preprocess): Fix a wrong
Gerd Moellmann <gerd@gnu.org>
parents: 32454
diff changeset
605 (if (eq cur-char ?y)
12f068b4d5ac (time-stamp-string-preprocess): Fix a wrong
Gerd Moellmann <gerd@gnu.org>
parents: 32454
diff changeset
606 (substring padded-result (- desired-length))
12f068b4d5ac (time-stamp-string-preprocess): Fix a wrong
Gerd Moellmann <gerd@gnu.org>
parents: 32454
diff changeset
607 padded-result)) ;non-year numbers don't truncate
12f068b4d5ac (time-stamp-string-preprocess): Fix a wrong
Gerd Moellmann <gerd@gnu.org>
parents: 32454
diff changeset
608 padded-result))))
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
609 (t
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
610 (char-to-string cur-char)))))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
611 (setq ind (1+ ind)))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
612 result))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
613
18171
566b6cf773ed (time-stamp-string-preprocess, time-stamp-do-number):
Richard M. Stallman <rms@gnu.org>
parents: 18170
diff changeset
614 (defun time-stamp-do-number (format-char alt-form field-width time)
35627
c5a1cf50f5cd Doc fixes.
Dave Love <fx@gnu.org>
parents: 34395
diff changeset
615 "Handle compatible FORMAT-CHAR where only default width/padding will change.
c5a1cf50f5cd Doc fixes.
Dave Love <fx@gnu.org>
parents: 34395
diff changeset
616 ALT-FORM is whether `#' specified. FIELD-WIDTH is the string
c5a1cf50f5cd Doc fixes.
Dave Love <fx@gnu.org>
parents: 34395
diff changeset
617 width specification or \"\". TIME is the time to convert."
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
618 (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
619 (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
620 (time-stamp-conv-warn format-string
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
621 (format "%%:%c" format-char)))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
622 (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
623 "" ;discourage "%:2d" and the like
62402
a7e02ef1e3d6 Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents: 56099
diff changeset
624 (string-to-number (format-time-string format-string time)))))
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
625
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
626 (defvar time-stamp-conversion-warn t
32454
08bfb5555d7b (time-stamp): Fixed bug in new multi-line code
Gerd Moellmann <gerd@gnu.org>
parents: 28696
diff changeset
627 "Warn about soon-to-be-unsupported forms in `time-stamp-format'.
08bfb5555d7b (time-stamp): Fixed bug in new multi-line code
Gerd Moellmann <gerd@gnu.org>
parents: 28696
diff changeset
628 If nil, these warnings are disabled, which would be a bad idea!
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
629 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
630
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
631 The new formats will work with old versions of Emacs.
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
632 New formats are being recommended now to allow `time-stamp-format'
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
633 to change in the future to be compatible with `format-time-string'.
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
634 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
635
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
636
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
637 (defun time-stamp-conv-warn (old-form new-form)
49559
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
638 "Display a warning about a soon-to-be-obsolete format.
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
639 Suggests replacing OLD-FORM with NEW-FORM."
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
640 (cond
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
641 (time-stamp-conversion-warn
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
642 (save-excursion
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
643 (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
644 (goto-char (point-max))
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
645 (if (bobp)
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
646 (progn
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
647 (insert
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
648 "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
649 "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
650 "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
651 (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
652 (display-buffer "*Time-stamp-compatibility*"))))
19504
fd1ee3c25839 (time-stamp-time-zone): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 19154
diff changeset
653
18170
7776ee6215de (time-stamp-format): Doc fix. Use %;y.
Richard M. Stallman <rms@gnu.org>
parents: 17600
diff changeset
654
11404
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
655
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
656 (defun time-stamp-mail-host-name ()
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
657 "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
658 This is the value of `mail-host-address' if bound and a string,
25405
456e2e2bc4d3 Put quote-backquote around all symbol names
Karl Heuer <kwzh@gnu.org>
parents: 24266
diff changeset
659 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
660 (or (and (boundp 'mail-host-address)
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
661 (stringp mail-host-address)
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
662 mail-host-address)
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
663 (system-name)))
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
664
b12a8765508b (time-stamp-format): Replace list of Lisp
Richard M. Stallman <rms@gnu.org>
parents: 9016
diff changeset
665 ;;; the rest of this file is for version 1 compatibility
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
666
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
667 (defun time-stamp-fconcat (list sep)
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
668 "Similar to (mapconcat 'funcall LIST SEP) but LIST allows literals.
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
669 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
670 the separator SEP is used between two strings obtained by funcalling a
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
671 symbol. Otherwise the element itself is inserted; no separator is used
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
672 around literals."
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
673 (let ((return-string "")
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
674 (insert-sep-p nil))
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
675 (while list
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
676 (cond ((symbolp (car list))
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
677 (if insert-sep-p
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
678 (setq return-string (concat return-string sep)))
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
679 (setq return-string (concat return-string (funcall (car list))))
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
680 (setq insert-sep-p t))
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
681 (t
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
682 (setq return-string (concat return-string (car list)))
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
683 (setq insert-sep-p nil)))
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
684 (setq list (cdr list)))
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
685 return-string))
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
686
16287
24fd930446f6 (time-stamp-old-format-warn): new variable.
Karl Heuer <kwzh@gnu.org>
parents: 14231
diff changeset
687 ;;; Some functions used in time-stamp-format
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
688
49559
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
689 ;;; These functions have been obsolete since 1995
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
690 ;;; and will be removed in Emacs 22.
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
691 ;;; Meanwhile, discourage other packages from using them.
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
692 (let ((obsolete-functions '(time-stamp-month-dd-yyyy
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
693 time-stamp-dd/mm/yyyy
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
694 time-stamp-mon-dd-yyyy
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
695 time-stamp-dd-mon-yy
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
696 time-stamp-yy/mm/dd
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
697 time-stamp-yyyy/mm/dd
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
698 time-stamp-yyyy-mm-dd
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
699 time-stamp-yymmdd
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
700 time-stamp-hh:mm:ss
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
701 time-stamp-hhmm)))
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
702 (while obsolete-functions
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
703 (make-obsolete (car obsolete-functions)
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
704 "use time-stamp-string or format-time-string instead."
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
705 "20.1")
fcde0602da01 Update example date in preamble commentary.
Stephen Gildea <gildea@stop.mail-abuse.org>
parents: 47437
diff changeset
706 (setq obsolete-functions (cdr obsolete-functions))))
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
707
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
708 ;;; pretty form, suitable for a title page
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
709
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
710 (defun time-stamp-month-dd-yyyy ()
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
711 "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
712 (format-time-string "%B %e, %Y"))
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
713
16517
1fa5a347e70f (time-stamp-dd/mm/yyyy): New function.
Richard M. Stallman <rms@gnu.org>
parents: 16287
diff changeset
714 (defun time-stamp-dd/mm/yyyy ()
1fa5a347e70f (time-stamp-dd/mm/yyyy): New function.
Richard M. Stallman <rms@gnu.org>
parents: 16287
diff changeset
715 "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
716 (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
717
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
718 ;;; same as __DATE__ in ANSI C
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
719
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
720 (defun time-stamp-mon-dd-yyyy ()
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
721 "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
722 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
723 (format-time-string "%b %d %Y"))
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
724
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
725 ;;; RFC 822 date
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
726
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
727 (defun time-stamp-dd-mon-yy ()
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
728 "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
729 (format-time-string "%d %b %y"))
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
730
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
731 ;;; RCS 3 date
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
732
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
733 (defun time-stamp-yy/mm/dd ()
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
734 "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
735 (format-time-string "%y/%m/%d"))
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
736
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
737 ;;; RCS 5 date
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
738
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
739 (defun time-stamp-yyyy/mm/dd ()
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
740 "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
741 (format-time-string "%Y/%m/%d"))
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
742
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
743 ;;; ISO 8601 date
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
744
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
745 (defun time-stamp-yyyy-mm-dd ()
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
746 "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
747 (format-time-string "%Y-%m-%d"))
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
748
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
749 (defun time-stamp-yymmdd ()
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
750 "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
751 (format-time-string "%y%m%d"))
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
752
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
753 (defun time-stamp-hh:mm:ss ()
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
754 "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
755 (format-time-string "%T"))
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
756
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
757 (defun time-stamp-hhmm ()
5632
63d80d94e0d7 Better, more user-oriented doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 5287
diff changeset
758 "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
759 (format-time-string "%H%M"))
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
760
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
761 (provide 'time-stamp)
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
762
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49559
diff changeset
763 ;;; arch-tag: 8a12c5c3-25d6-4a71-adc5-24b0e025a1e7
3854
ae1022bb1578 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
764 ;;; time-stamp.el ends here