+2010-07-19 Juanma Barranquero <lekktu@gmail.com>
+
+ * time.el (display-time-world-mode): Define with `define-derived-mode'.
+ Set `show-trailing-whitespace' to nil.
+ (display-time-world-display): Simplify.
+
2010-07-18 Alan Mackenzie <acm@muc.de>
Enhance `c-file-style' in file/directory local variables.
'display-time-event-handler)))
-(defun display-time-world-mode ()
+(define-derived-mode display-time-world-mode nil "World clock"
"Major mode for buffer that displays times in various time zones.
See `display-time-world'."
- (interactive)
- (kill-all-local-variables)
- (setq
- major-mode 'display-time-world-mode
- mode-name "World clock")
- (use-local-map display-time-world-mode-map))
+ (setq show-trailing-whitespace nil))
(defun display-time-world-display (alist)
"Replace current buffer text with times in various zones, based on ALIST."
(buffer-undo-list t))
(erase-buffer)
(let ((max-width 0)
- (result ()))
+ (result ())
+ fmt)
(unwind-protect
(dolist (zone alist)
(let* ((label (cadr zone))
(width (string-width label)))
(set-time-zone-rule (car zone))
- (setq result
- (append result
- (list
- label width
- (format-time-string display-time-world-time-format))))
+ (push (cons label
+ (format-time-string display-time-world-time-format))
+ result)
(when (> width max-width)
(setq max-width width))))
(set-time-zone-rule nil))
- (while result
- (insert (pop result)
- (make-string (1+ (- max-width (pop result))) ?\s)
- (pop result) "\n")))
+ (setq fmt (concat "%-" (int-to-string max-width) "s %s\n"))
+ (dolist (timedata (nreverse result))
+ (insert (format fmt (car timedata) (cdr timedata)))))
(delete-char -1)))
;;;###autoload