Subject: bug#10779: 24.0.93; ERC: Patch to make server response timestamp format customizable

From: Teemu Likonen <[email-masked]>
Date: Fri, 10 Feb 2012 16:10:27 +0200

[This is a "wishlist" bug report for Emacs IRC client package ERC. This
message includes a patch that fully implements my wish.]

ERC displays various server response messages with timestamps. The
timestamp formats that are hard-coded to ERC code have some unnecessary
variation. Also, it's sometimes even unclear what is the day component
and what is the month component (due to YY/MM or MM/YY differences).

I suggest making those server response timestamp formats customizable
and having the default value in international "%Y-%m-%d %T" format (as
parsed by `format-time-string' function).

This message includes a patch that fully implements this (I believe).

>From 0ef914cc32c36e97ed7fd8b2f1fa668308c34675 Mon Sep 17 00:00:00 2001
From: Teemu Likonen <[email-masked]>
Date: Fri, 10 Feb 2012 15:24:01 +0200
Subject: [PATCH] ERC: Make server response timestamp format configurable

Introduce new user variable erc-server-timestamp-format with
international "%Y-%m-%d %T" format as its default value.
---
 lisp/erc/erc-backend.el |   16 ++++++++++++----
 1 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el
index 7bc5658..fb3a90f 100644
--- a/lisp/erc/erc-backend.el
+++ b/lisp/erc/erc-backend.el
@@ -393,6 +393,12 @@ isn't displayed."
   :type 'integer
   :group 'erc-server)
 
+(defcustom erc-server-timestamp-format "%Y-%m-%d %T"
+  "*Timestamp format used with server response messages.
+This string is processed using `format-time-string'."
+  :type 'string
+  :group 'erc-server)
+
 ;;; Flood-related
 
 ;; Most of this is courtesy of Jorgen Schaefer and Circe
@@ -1454,7 +1460,8 @@ add things to `%s' instead."
   "The channel topic has changed." nil
   (let* ((ch (first (erc-response.command-args parsed)))
          (topic (erc-trim-string (erc-response.contents parsed)))
-         (time (format-time-string "%T %m/%d/%y" (current-time))))
+         (time (format-time-string erc-server-timestamp-format
+                                   (current-time))))
     (multiple-value-bind (nick login host)
         (values-list (erc-parse-user (erc-response.sender parsed)))
       (erc-update-channel-member ch nick nick nil nil nil host login)
@@ -1647,7 +1654,7 @@ See `erc-display-server-message'." nil
   (multiple-value-bind (nick seconds-idle on-since time)
       (values-list (cdr (erc-response.command-args parsed)))
     (setq time (when on-since
-                 (format-time-string "%T %Y/%m/%d"
+                 (format-time-string erc-server-timestamp-format
                                      (erc-string-to-emacs-time on-since))))
     (erc-update-user-nick nick nick nil nil nil
                           (and time (format "on since %s" time)))
@@ -1724,7 +1731,8 @@ See `erc-display-server-message'." nil
                (third (erc-response.command-args parsed)))))
     (erc-display-message
      parsed 'notice (erc-get-buffer channel proc)
-     's329 ?c channel ?t (format-time-string "%A %Y/%m/%d %X" time))))
+     's329 ?c channel ?t (format-time-string erc-server-timestamp-format
+                                             time))))
 
 (define-erc-response-handler (330)
   "Nick is authed as (on Quakenet network)." nil
@@ -1761,7 +1769,7 @@ See `erc-display-server-message'." nil
   "Who set the topic, and when." nil
   (multiple-value-bind (channel nick time)
       (values-list (cdr (erc-response.command-args parsed)))
-    (setq time (format-time-string "%T %Y/%m/%d"
+    (setq time (format-time-string erc-server-timestamp-format
                                    (erc-string-to-emacs-time time)))
     (erc-update-channel-topic channel
                               (format "\C-o (%s, %s)" nick time)
-- 
1.7.2.5