From 43bd8eb367f33a022fcc6554102ca38204296e7f Mon Sep 17 00:00:00 2001 From: Thuna Date: Wed, 23 Nov 2022 04:14:36 +0100 Subject: [PATCH] rcirc: Fix messages printing in the wrong place * lisp/net/rcirc.el (rcirc-send-message): Print the message before sending it to the server. (rcirc-print): Get the time with subsecond precision. * lisp/calendar/parse-time.el (parse-time-string parse-iso8601-time-string): Accept optional second FORM arguments, with the same meaning as in `decode-time'. Mention as such in the docstring. --- lisp/calendar/parse-time.el | 16 ++++++++++------ lisp/net/rcirc.el | 6 +++--- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/lisp/calendar/parse-time.el b/lisp/calendar/parse-time.el index f3ad513925..15713980cb 100644 --- a/lisp/calendar/parse-time.el +++ b/lisp/calendar/parse-time.el @@ -147,7 +147,7 @@ parse-time-rules ;;;###autoload(put 'parse-time-rules 'risky-local-variable t) ;;;###autoload -(defun parse-time-string (string) +(defun parse-time-string (string &optional form) "Parse the time in STRING into (SEC MIN HOUR DAY MON YEAR DOW DST TZ). STRING should be an ISO 8601 time string, e.g., \"2020-01-15T16:12:21-08:00\", or something resembling an RFC 822 (or later) date-time, e.g., @@ -156,9 +156,11 @@ parse-time-string return a \"likely\" value even for somewhat malformed strings. The values returned are identical to those of `decode-time', but any unknown values other than DST are returned as nil, and an -unknown DST value is returned as -1." +unknown DST value is returned as -1. + +See ‘decode-time’ for the meaning of FORM." (condition-case () - (iso8601-parse string) + (iso8601-parse string form) (wrong-type-argument (let ((time (list nil nil nil nil nil nil nil -1 nil)) (temp (parse-time-tokenize (downcase string)))) @@ -199,12 +201,14 @@ parse-time-string (setf (nth (pop slots) time) new-val)))))))) time)))) -(defun parse-iso8601-time-string (date-string) +(defun parse-iso8601-time-string (date-string &optional form) "Parse an ISO 8601 time string, such as \"2020-01-15T16:12:21-08:00\". Fall back on parsing something resembling an RFC 822 (or later) date-time. This function is like `parse-time-string' except that it returns -a Lisp timestamp when successful." - (when-let ((time (parse-time-string date-string))) +a Lisp timestamp when successful. + +See ‘decode-time’ for the meaning of FORM." + (when-let ((time (parse-time-string date-string form))) (encode-time time))) (provide 'parse-time) diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el index 99b9888fda..1fdf41a35e 100644 --- a/lisp/net/rcirc.el +++ b/lisp/net/rcirc.el @@ -1233,9 +1233,9 @@ rcirc-send-message (let ((response (if noticep "NOTICE" "PRIVMSG"))) (rcirc-get-buffer-create process target) (dolist (msg (rcirc-split-message message)) - (rcirc-send-string process response target : msg) (unless silent - (rcirc-print process (rcirc-nick process) response target msg))))) + (rcirc-print process (rcirc-nick process) response target msg)) + (rcirc-send-string process response target : msg)))) (defvar-local rcirc-input-ring nil "Ring object for input.") @@ -2034,7 +2034,7 @@ rcirc-print (not (string= sender (rcirc-nick process)))) (let* ((buffer (rcirc-target-buffer process sender response target text)) (time (if-let ((time (rcirc-get-tag "time"))) - (parse-iso8601-time-string time) + (parse-iso8601-time-string time t) (current-time))) (inhibit-read-only t)) (with-current-buffer buffer -- 2.37.4