emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

emacs-29 8eb6e33691d 2/3: Fix rcirc messages printing in the wrong place


From: Philip Kaludercic
Subject: emacs-29 8eb6e33691d 2/3: Fix rcirc messages printing in the wrong place
Date: Thu, 4 May 2023 04:06:50 -0400 (EDT)

branch: emacs-29
commit 8eb6e33691d1c8e95e25e086e1b04669ea4fffdb
Author: Thuna <thuna.cing@gmail.com>
Commit: Philip Kaludercic <philipk@posteo.net>

    Fix rcirc 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.  (Bug#59501)
    
    Copyright-paperwork-exempt: yes
---
 lisp/calendar/parse-time.el | 16 ++++++++++------
 lisp/net/rcirc.el           | 10 +++++-----
 2 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/lisp/calendar/parse-time.el b/lisp/calendar/parse-time.el
index 1b667a6852e..a62361121fc 100644
--- a/lisp/calendar/parse-time.el
+++ b/lisp/calendar/parse-time.el
@@ -147,7 +147,7 @@ letters, digits, plus or minus signs or colons."
 ;;;###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 @@ somewhat liberal in what format it accepts, and will 
attempt to
 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 @@ unknown DST value is returned as -1."
                     (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 97a314eb8ab..937f4046adb 100644
--- a/lisp/net/rcirc.el
+++ b/lisp/net/rcirc.el
@@ -1233,9 +1233,9 @@ If SILENT is non-nil, do not print the message in any irc 
buffer."
   (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 @@ connection."
                (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
@@ -2204,7 +2204,7 @@ The message is logged in `rcirc-log', and is later 
written to
 disk.  PROCESS is the process object for the current connection."
   (let ((filename (funcall rcirc-log-filename-function process target))
         (time (and-let* ((time (rcirc-get-tag "time")))
-                (parse-iso8601-time-string time))))
+                (parse-iso8601-time-string time t))))
     (unless (null filename)
       (let ((cell (assoc-string filename rcirc-log-alist))
             (line (concat (format-time-string rcirc-time-format time)
@@ -2996,7 +2996,7 @@ If ARG is given, opens the URL in a new browser window."
   "Insert a timestamp."
   (goto-char (point-min))
   (let ((time (and-let* ((time (rcirc-get-tag "time")))
-                (parse-iso8601-time-string time))))
+                (parse-iso8601-time-string time t))))
     (insert (rcirc-facify (format-time-string rcirc-time-format time)
                           'rcirc-timestamp))))
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]