+(defcustom zoneinfo-style-world-list
+ '(("America/Los_Angeles" "Seattle")
+ ("America/New_York" "New York")
+ ("Europe/London" "London")
+ ("Europe/Paris" "Paris")
+ ("Asia/Calcutta" "Bangalore")
+ ("Asia/Tokyo" "Tokyo"))
+ "Alist of zoneinfo-style time zones and places for `display-time-world'.
+Each element has the form (TIMEZONE LABEL).
+TIMEZONE should be a string of the form AREA/LOCATION, where AREA is
+the name of a region -- a continent or ocean, and LOCATION is the name
+of a specific location, e.g., a city, within that region.
+LABEL is a string to display as the label of that TIMEZONE's time."
+ :group 'display-time
+ :type '(repeat (list string string))
+ :version "23.1")
+
+(defcustom legacy-style-world-list
+ '(("PST8PDT" "Seattle")
+ ("EST5EDT" "New York")
+ ("GMT0BST" "London")
+ ("CET-1CDT" "Paris")
+ ("IST-5:30" "Bangalore")
+ ("JST-9" "Tokyo"))
+ "Alist of traditional-style time zones and places for `display-time-world'.
+Each element has the form (TIMEZONE LABEL).
+TIMEZONE should be a string of the form:
+
+ std[+|-]offset[dst[offset][,date[/time],date[/time]]]
+
+See the documentation of the TZ environment variable on your system,
+for more details about the format of TIMEZONE.
+LABEL is a string to display as the label of that TIMEZONE's time."
+ :group 'display-time
+ :type '(repeat (list string string))
+ :version "23.1")
+
+(defcustom display-time-world-list
+ ;; Determine if zoneinfo style timezones are supported by testing that
+ ;; America/New York and Europe/London return different timezones.
+ (let (gmt nyt)
+ (set-time-zone-rule "America/New York")
+ (setq nyt (format-time-string "%z"))
+ (set-time-zone-rule "Europe/London")
+ (setq gmt (format-time-string "%z"))
+ (set-time-zone-rule nil)
+ (if (string-equal nyt gmt)
+ legacy-style-world-list
+ zoneinfo-style-world-list))
+ "Alist of time zones and places for `display-time-world' to display.
+Each element has the form (TIMEZONE LABEL).
+TIMEZONE should be in the format supported by `set-time-zone-rule' on
+your system. See the documentation of `zoneinfo-style-world-list' and
+\`legacy-style-world-list' for two widely used formats.
+LABEL is a string to display as the label of that TIMEZONE's time."
+ :group 'display-time
+ :type '(repeat (list string string))
+ :version "23.1")
+
+(defcustom display-time-world-time-format "%A %d %B %R %Z"
+ "Format of the time displayed, see `format-time-string'."
+ :group 'display-time
+ :type 'string
+ :version "23.1")
+
+(defcustom display-time-world-buffer-name "*wclock*"
+ "Name of the wclock buffer."
+ :group 'display-time
+ :type 'string
+ :version "23.1")
+
+(defcustom display-time-world-timer-enable t
+ "If non-nil, a timer will update the world clock."
+ :group 'display-time
+ :type 'boolean
+ :version "23.1")
+
+(defcustom display-time-world-timer-second 60
+ "Interval in seconds for updating the world clock."
+ :group 'display-time
+ :type 'integer
+ :version "23.1")
+
+(defvar display-time-world-mode-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map "q" 'kill-this-buffer)
+ map)
+ "Keymap of Display Time World mode")
+