Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
emacs
emacs
Commits
6afa3d67
Commit
6afa3d67
authored
Feb 14, 2008
by
Glenn Morris
Browse files
Re-fill copyright years.
(format-seconds): New function. (emacs-uptime): Use format-seconds.
parent
f3ff0fe9
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
90 additions
and
28 deletions
+90
-28
lisp/ChangeLog
lisp/ChangeLog
+4
-1
lisp/calendar/time-date.el
lisp/calendar/time-date.el
+86
-27
No files found.
lisp/ChangeLog
View file @
6afa3d67
...
...
@@ -7,10 +7,13 @@
2008-02-14 Glenn Morris <rgm@gnu.org>
* calendar/time-date.el (format-seconds): New function.
(emacs-uptime): Use format-seconds.
* Makefile.in (custom-deps, finder-data, autoloads, recompile):
Remove `LC_ALL=C', since it's included in $(emacs) now.
2008-02-14 Zhang Wei <id.brep@gmail.com> (tiny change)
2008-02-14 Zhang Wei <id.brep@gmail.com>
(tiny change)
* textmodes/org-publish.el (org-publish-timestamp-filename):
Replace colon characters in filename too.
...
...
lisp/calendar/time-date.el
View file @
6afa3d67
;;; time-date.el --- Date and time handling functions
;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
2007, 2008
;; Free Software Foundation, Inc.
;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
;;
2007, 2008
Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; Masanobu Umeda <umerin@mse.kyutech.ac.jp>
...
...
@@ -256,34 +256,93 @@ If DATE is malformed, return a time value of zeros."
;;;###autoload
(
defun
format-seconds
(
string
seconds
&optional
nonzero
)
"Use format control STRING to format the number SECONDS.
The valid format specifiers are:
%y is the number of (365-day) years.
%d is the number of days.
%h is the number of hours.
%m is the number of minutes.
%s is the number of seconds.
%% is a literal \"%\".
Upper-case specifiers are followed by the unit-name (e.g. \"years\").
Lower-case specifiers return only the unit.
\"%\" may be followed by a number specifying a width, with an
optional leading \".\" for zero-padding. For example, \"%.3Y\" will
return something of the form \"001 year\".
If the optional argument NONZERO is non-nil, then nothing is output until
the first non-zero unit (or the last unit) is encountered. In this case,
specifiers must be used in order of decreasing size.
This does not work for input SECONDS greater than `most-positive-fixnum'."
(
let
((
start
0
)
(
units
'
((
"y"
"year"
31536000
)
(
"d"
"day"
86400
)
(
"h"
"hour"
3600
)
(
"m"
"minute"
60
)
(
"s"
"second"
1
)))
(
case-fold-search
t
)
spec
match
outunits
unit
prev
name
next
)
(
setq
nonzero
(
not
nonzero
))
(
while
(
string-match
"%\\.?[0-9]*\\(.\\)"
string
start
)
(
setq
start
(
match-end
0
)
spec
(
match-string
1
string
))
(
unless
(
string-equal
spec
"%"
)
(
or
(
setq
match
(
assoc-string
spec
units
t
))
(
error
"Bad format specifier: `%s'"
spec
))
(
if
(
assoc-string
spec
outunits
t
)
(
error
"Multiple instances of specifier: `%s'"
spec
))
(
unless
nonzero
(
setq
unit
(
nth
2
match
))
(
and
prev
(
>
unit
prev
)
(
error
"Units are not in decreasing order of size"
))
(
setq
prev
unit
))
(
push
match
outunits
)))
;; Cf article-make-date-line in gnus-art.
(
dolist
(
ulist
units
)
(
setq
spec
(
car
ulist
)
name
(
cadr
ulist
)
unit
(
nth
2
ulist
))
(
when
(
string-match
(
format
"%%\\(\\.?[0-9]+\\)?\\(%s\\)"
spec
)
string
)
(
setq
num
(
floor
seconds
unit
)
seconds
(
-
seconds
(
*
num
unit
)))
(
or
nonzero
(
setq
nonzero
(
not
(
zerop
num
)))
;; Start of the next unit specifier, if there is one.
(
setq
next
(
save-match-data
(
string-match
"%\\.?[0-9]*[a-z]"
string
(
match-end
0
)))))
;; If there are no more specifiers, we have to print this one,
;; even if it is zero.
(
or
nonzero
(
setq
nonzero
(
not
next
)))
(
setq
string
(
if
nonzero
(
replace-match
(
format
(
concat
"%"
(
match-string
1
string
)
"d%s"
)
num
(
if
(
string-equal
(
match-string
2
string
)
spec
)
""
; lower-case, no unit-name
(
format
" %s%s"
name
(
if
(
=
num
1
)
""
"s"
))))
t
t
string
)
;; If we haven't found a non-zero unit yet, delete
;; everything up to the next format specifier.
(
substring
string
next
))))))
(
replace-regexp-in-string
"%%"
"%"
string
))
;; This doesn't really belong here - perhaps in time.el?
;;;###autoload
(
defun
emacs-uptime
()
"Return a string giving the uptime of this instance of Emacs."
(
interactive
)
(
let*
((
sec
(
time-to-seconds
(
time-subtract
(
current-time
)
emacs-startup-time
)))
(
prev
)
(
num
)
(
str
;; cf article-make-date-line in gnus-art.
;; Worth having a general time-date `format-seconds'
;; function that converts a number of seconds into so many
;; years, hours, etc?
(
mapconcat
(
lambda
(
unit
)
(
if
(
zerop
(
setq
num
(
floor
sec
(
cdr
unit
))))
""
(
setq
sec
(
-
sec
(
*
num
(
cdr
unit
))))
(
prog1
(
format
"%s%d %s%s"
(
if
prev
", "
""
)
num
(
symbol-name
(
car
unit
))
(
if
(
=
num
1
)
""
"s"
))
(
setq
prev
t
))))
'
((
year
.
31536000
)
; 365-day year
(
day
.
86400
)
(
hour
.
3600
)
(
minute
.
60
)
(
second
.
1
))
""
)))
(
let
((
str
(
format-seconds
"%Y, %D, %H, %M, %S"
(
time-to-seconds
(
time-subtract
(
current-time
)
emacs-startup-time
))
t
)))
(
if
(
interactive-p
)
(
message
"%s"
str
)
str
)))
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment