From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: "J.P." Newsgroups: gmane.emacs.bugs,gmane.emacs.erc.general Subject: bug#60936: 30.0.50; ERC >5.5: Add erc-fill style based on visual-line-mode Date: Tue, 17 Oct 2023 06:48:21 -0700 Message-ID: <87o7gxe4wq.fsf@neverwas.me> References: <87tu0nao77.fsf@neverwas.me> <87a5te47sz.fsf@neverwas.me> <87pm23yawb.fsf@neverwas.me> <874jj3ok58.fsf@neverwas.me> <87cyxi9hlc.fsf@neverwas.me> <87h6mt87al.fsf@neverwas.me> <8734yak6dr.fsf@neverwas.me> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="9044"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Cc: emacs-erc@gnu.org To: 60936@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue Oct 17 15:48:55 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qskRK-00020S-JT for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 17 Oct 2023 15:48:55 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qskR5-0006w1-Bf; Tue, 17 Oct 2023 09:48:39 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qskR3-0006ub-O1 for bug-gnu-emacs@gnu.org; Tue, 17 Oct 2023 09:48:37 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qskR3-0005QX-ER for bug-gnu-emacs@gnu.org; Tue, 17 Oct 2023 09:48:37 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1qskRS-0000xH-9y for bug-gnu-emacs@gnu.org; Tue, 17 Oct 2023 09:49:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: "J.P." Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 17 Oct 2023 13:49:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 60936 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 60936-submit@debbugs.gnu.org id=B60936.16975505373641 (code B ref 60936); Tue, 17 Oct 2023 13:49:02 +0000 Original-Received: (at 60936) by debbugs.gnu.org; 17 Oct 2023 13:48:57 +0000 Original-Received: from localhost ([127.0.0.1]:58905 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qskRN-0000we-9j for submit@debbugs.gnu.org; Tue, 17 Oct 2023 09:48:57 -0400 Original-Received: from mail-108-mta145.mxroute.com ([136.175.108.145]:33639) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qskRL-0000wI-Lw for 60936@debbugs.gnu.org; Tue, 17 Oct 2023 09:48:56 -0400 Original-Received: from mail-111-mta2.mxroute.com ([136.175.111.2] filter006.mxroute.com) (Authenticated sender: mN4UYu2MZsgR) by mail-108-mta145.mxroute.com (ZoneMTA) with ESMTPSA id 18b3de51789000ff68.001 for <60936@debbugs.gnu.org> (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384); Tue, 17 Oct 2023 13:48:25 +0000 X-Zone-Loop: 32a75792ab062be30294cb13d89c070d2cd208acecce X-Originating-IP: [136.175.111.2] DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=neverwas.me ; s=x; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To: Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=8aI3ngmfYDNGNC+vJpjTh+IGL2q5f8ffWU7AYQXgn3g=; b=QrFJooMi4mhaa9VFLBHdoRTvrq LG/OIj2jv9DLwTxxGVCgVNasATIZMaqSkjYjY3biMl0KnXWQylH541ATFap+BkdxbtwqvIoaiP2uc 5edbSJd755shtVhX9AOCDE5bJZRFFYrwVS4wpvlHYPwulArOUva/Pdt68r/d9sWWHQWvLV0TzqYc0 5dvUV7H1S/IbOPQfRTAr80pdkD5vZ5yAfNZMbIJVtTC78kfqyFISBS3zySUsttBDPm2hSr+md1GtH fMquCgbYRisGA6OAuneottJycS5gKsGrWL/9YgWxnpATBOGBa64cmEH97SCAdDVNx/30hM0jO6D1y g97ZoA6w==; In-Reply-To: <8734yak6dr.fsf@neverwas.me> (J. P.'s message of "Mon, 16 Oct 2023 07:07:44 -0700") X-Authenticated-Id: masked@neverwas.me X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:272609 gmane.emacs.erc.general:2280 Archived-At: --=-=-= Content-Type: text/plain v2 (erc-display-line redux). Fix initial bug involving missing text props on multi-buffer calls to `erc-display-line'. Convert latter to internal function and reimplement interface as high-level wrapper around `erc-display-message'. "J.P." writes: > "J.P." writes: > >> These changes introduced a(t least one) bug. To reproduce, call >> `erc-display-line' with a list of buffers, and notice only the first >> sees its message inserted with the correct text properties. A quick way >> to simulate this is by having two clients join the same two channels >> and then having one quit. The expected text props will be missing from >> one of the inserted >> >> *** someuser (n!~u@h) has quit >> >> messages. Verify by going to the first asterisk and doing C-u C-x =. >> >> Fix forthcoming. > > The second of the attached patches should hopefully do the trick. Actually, merely hoping folks will use `erc-display-message' instead of `erc-display-line' is surely delusional. There's likely far too much code out there doing stuff like: (erc-display-line (erc-make-notice "foo") my-buffer) So I've instead converted `erc-display-line' into a high-level insertion function more aligned with the manner in which it's used in practice. It's now more or less a thin wrapper around `erc-display-message' with a bit of special casing to intercept instances of the `erc-make-notice' pattern above for rewriting as: (erc-display-message nil 'notice my-buffer "foo") Hopefully, this is an acceptable compromise. --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0000-v1-v2.diff Content-Transfer-Encoding: quoted-printable >From 2288132d2ae82bf6f1af44734306193e86bd90e5 Mon Sep 17 00:00:00 2001 From: "F. Jason Park" Date: Tue, 17 Oct 2023 06:44:50 -0700 Subject: [PATCH 0/2] *** NOT A PATCH *** *** BLURB HERE *** F. Jason Park (2): ; Mark erc-log test as :unstable [5.6] Restore missing metadata props in erc-display-line etc/ERC-NEWS | 23 +++ lisp/erc/erc-fill.el | 3 +- lisp/erc/erc-stamp.el | 4 +- lisp/erc/erc.el | 146 +++++++++++------- test/lisp/erc/erc-networks-tests.el | 2 +- .../lisp/erc/erc-scenarios-display-message.el | 64 ++++++++ test/lisp/erc/erc-scenarios-log.el | 2 +- test/lisp/erc/erc-tests.el | 63 ++++++++ .../base/display-message/multibuf.eld | 45 ++++++ .../resources/base/renick/queries/solo.eld | 2 +- .../base/reuse-buffers/channel/barnet.eld | 2 +- .../base/reuse-buffers/channel/foonet.eld | 2 +- .../erc/resources/erc-scenarios-common.el | 4 +- .../fill/snapshots/merge-01-start.eld | 2 +- .../fill/snapshots/merge-02-right.eld | 2 +- .../fill/snapshots/merge-wrap-01.eld | 2 +- .../fill/snapshots/monospace-01-start.eld | 2 +- .../fill/snapshots/monospace-02-right.eld | 2 +- .../fill/snapshots/monospace-03-left.eld | 2 +- .../fill/snapshots/monospace-04-reset.eld | 2 +- .../fill/snapshots/spacing-01-mono.eld | 2 +- .../fill/snapshots/stamps-left-01.eld | 2 +- 22 files changed, 307 insertions(+), 73 deletions(-) create mode 100644 test/lisp/erc/erc-scenarios-display-message.el create mode 100644 test/lisp/erc/resources/base/display-message/multibuf.e= ld Interdiff: diff --git a/etc/ERC-NEWS b/etc/ERC-NEWS index 404d735b9f6..282a538e04d 100644 --- a/etc/ERC-NEWS +++ b/etc/ERC-NEWS @@ -288,16 +288,28 @@ ERC also provisionally reserves the same depth interv= al for continue to modify non-ERC hooks locally whenever possible, especially in new code. =20 -*** ERC strongly favors 'erc-display-message' for message insertion. -Although less common these days, folks still sometimes resort to using -the insertion function 'erc-display-line' because it's admittedly less -awkward than the supposedly higher level 'erc-display-message'. Thus, -ancient patterns, like preformatting text with 'erc-make-notice', -still occasionally appear in newer code. However, beginning in ERC -5.6, certain preparatory business necessary for the eventual move to a -richer UI has taken up residence in 'erc-display-message'. If you -find this development disturbing, by all means voice your concerns on -the tracker. (Patches for user-friendly wrappers are most welcome.) +*** Message insertion function 'erc-display-message' heavily favored. +Displaying "local" messages, like help text and interactive-command +feedback, in ERC buffers has never been straightforward. As such, +ancient patterns, like the pairing of preformatted "notice" text with +ERC's oldest insertion function, 'erc-display-line', still appear +quite frequently in the wild despite having been largely phased out of +ERC's own code base in 2002. That this specific example has endured +makes some sense because it's probably seen as less cumbersome than +fiddling with the more powerful and complicated 'erc-display-message'. + +The latest twist in this saga comes with this release, in which a +healthy dose of \"pre-insertion business\" has been invited to take up +residence in 'erc-display-message'. While this would seem to put +antiquated patterns, like the above mentioned 'erc-make-notice' combo, +at risk of having messages ignored or subject to degraded treatment by +built-in modules, a prophylactic measure has been erected to recast +'erc-display-line' as a thin wrapper around 'erc-display-message'. +And though nothing of the sort has been done for the lower-level +'erc-display-line-1' (now an obsolete alias for 'erc-insert-line'), +some fallback code has been put in place to ensure baseline +functionality. As always, if you find these developments disturbing, +please say so on the tracker. =20 *** ERC now manages timestamp-related properties a bit differently. For starters, the 'cursor-sensor-functions' text property is absent by diff --git a/lisp/erc/erc-fill.el b/lisp/erc/erc-fill.el index 0048956e075..e28c3563ebf 100644 --- a/lisp/erc/erc-fill.el +++ b/lisp/erc/erc-fill.el @@ -539,7 +539,8 @@ erc-fill-wrap (goto-char (point-min)) (let ((len (or (and erc-fill--wrap-length-function (funcall erc-fill--wrap-length-function)) - (and-let* ((msg-prop (erc--check-msg-prop 'erc-msg))) + (and-let* ((msg-prop (erc--check-msg-prop 'erc-msg)) + ((not (eq msg-prop 'unknown)))) (when-let ((e (erc--get-speaker-bounds)) (b (pop e)) ((or erc-fill--wrap-action-dedent-p diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el index 7edf735eb43..0513a5c785c 100644 --- a/lisp/erc/erc.el +++ b/lisp/erc/erc.el @@ -3003,13 +3003,26 @@ erc--traverse-inserted (defvar erc--insert-marker nil "Internal override for `erc-insert-marker'.") =20 -(defun erc-display-line-1 (string buffer) - "Display STRING in `erc-mode' BUFFER. -Auxiliary function used in `erc-display-line'. The line gets filtered to -interpret the control characters. Then, `erc-insert-pre-hook' gets called. -If `erc-insert-this' is still t, STRING gets inserted into the buffer. -Afterwards, `erc-insert-modify' and `erc-insert-post-hook' get called. -If STRING is nil, the function does nothing." +(define-obsolete-function-alias 'erc-display-line-1 'erc-insert-line "30.1= ") +(defun erc-insert-line (string buffer) + "Insert STRING in an `erc-mode' BUFFER. +When STRING is nil, do nothing. Otherwise, start off by running +`erc-insert-pre-hook' in BUFFER with `erc-insert-this' bound to +t. If the latter remains non-nil afterward, insert STRING into +BUFFER, ensuring a trailing newline. After that, narrow BUFFER +around STRING, along with its final line ending, and run +`erc-insert-modify' and `erc-insert-post-hook', respectively. In +all cases, run `erc-insert-done-hook' unnarrowed before exiting, +and update positions in `buffer-undo-list'. + +In general, expect to be called from a higher-level insertion +function, like `erc-display-message', especially when modules +should consider STRING as a candidate for formatting with +enhancements like indentation, fontification, timestamping, etc. +Otherwise, when called directly, allow built-in modules to ignore +STRING, which may make it appear incongruous in situ (unless +preformatted or anticipated by third-party members of the various +modification hooks)." (when string (with-current-buffer (or buffer (process-buffer erc-server-process)) (let ((insert-position (marker-position erc-insert-marker))) @@ -3021,7 +3034,7 @@ erc-display-line-1 (when (erc-string-invisible-p string) (erc-put-text-properties 0 (length string) '(invisible intangible) string))) - (erc-log (concat "erc-display-line: " string + (erc-log (concat "erc-display-message: " string (format "(%S)" string) " in buffer " (format "%s" buffer))) (setq erc-insert-this t) @@ -3091,24 +3104,9 @@ erc-is-valid-nick-p "Check if NICK is a valid IRC nickname." (string-match (concat "\\`" erc-valid-nick-regexp "\\'") nick)) =20 -(defun erc-display-line (string &optional buffer) +(defun erc--route-insertion (string buffer) "Insert STRING in BUFFER. -Expect BUFFER to be a live `erc-mode' buffer, a list of such -buffers, or the symbols `all' or `active'. If `all', insert -STRING in all buffers for the current session. If `active', -defer to the function `erc-active-buffer', which may return the -session's server buffer if the previously active buffer has been -killed. If BUFFER is nil or a network process, pretend it's set -to the appropriate server buffer. Otherwise, use the current -buffer. - -In most cases, expect to be called from a higher-level insertion -function, like `erc-display-message', especially when modules -should consider STRING as a candidate for formatting with -indentation, fontification, timestamping, etc. Otherwise, allow -built-in modules to ignore STRING, which may make it appear -incongruous in situ (unless anticipated by third-party hook -members or otherwise preformatted)." +See `erc-display-message' for acceptable BUFFER types." (let (seen msg-props) (dolist (buf (cond ((bufferp buffer) (list buffer)) @@ -3128,12 +3126,23 @@ erc-display-line (when (buffer-live-p buf) (when msg-props (setq erc--msg-props (copy-hash-table msg-props))) - (erc-display-line-1 string buf) + (erc-insert-line string buf) (setq seen t))) (unless (or seen (null buffer)) - (erc-display-line string nil)))) + (erc--route-insertion string nil)))) =20 -(defvar erc--compose-text-properties nil +(defun erc-display-line (string &optional buffer) + "Insert STRING in BUFFER as a plain \"local\" message. +Take pains to ensure modification hooks see messages created by +the old pattern (erc-display-line (erc-make-notice) my-buffer) as +being equivalent to a `erc-display-message' TYPE of `notice'." + (let ((erc--msg-prop-overrides erc--msg-prop-overrides)) + (when (eq 'erc-notice-face (get-text-property 0 'font-lock-face string= )) + (unless (assq 'erc-msg erc--msg-prop-overrides) + (push '(erc-msg . notice) erc--msg-prop-overrides))) + (erc-display-message nil nil buffer string))) + +(defvar erc--merge-text-properties-p nil "Non-nil when `erc-put-text-property' defers to `erc--merge-prop'.") =20 ;; To save space, we could maintain a map of all readable property @@ -3452,6 +3461,15 @@ erc-display-message string MSG). Expect BUFFER to be among the sort accepted by the function `erc-display-line'. =20 +Expect BUFFER to be a live `erc-mode' buffer, a list of such +buffers, or the symbols `all' or `active'. If `all', insert +STRING in all buffers for the current session. If `active', +defer to the function `erc-active-buffer', which may return the +session's server buffer if the previously active buffer has been +killed. If BUFFER is nil or a network process, pretend it's set +to the appropriate server buffer. Otherwise, use the current +buffer. + When TYPE is a list of symbols, call handlers from left to right without influencing how they behave when encountering existing faces. As of ERC 5.6, expect a TYPE of (notice error) to insert @@ -3462,24 +3480,31 @@ erc-display-message being (erc-error-face erc-notice-face) throughout MSG when `erc-notice-highlight-type' is left at its default, `all'. =20 -As of ERC 5.6, assume user code will use this function instead of -`erc-display-line' when it's important that insert hooks treat -MSG in a manner befitting messages received from a server. That -is, expect to process most nontrivial informational messages, for -which PARSED is typically nil, when the caller desires the -inserted message to feature buttonizing and other effects." +As of ERC 5.6, assume third-party code will use this function +instead of lower-level ones, like `erc-insert-line', when needing +ERC to process arbitrary informative messages as if they'd been +sent from a server. That is, guarantee \"local\" messages, for +which PARSED is typically nil, will be subject to buttonizing, +filling, and other effects." (let ((string (if (symbolp msg) (apply #'erc-format-message msg args) msg)) (erc--msg-props (or erc--msg-props - (let* ((table (make-hash-table :size 5)) - (cmd (and parsed (erc--get-eq-comparable-cmd - (erc-response.command parsed)))) - (m (cond ((and msg (symbolp msg)) msg) - ((and cmd (memq cmd '(PRIVMSG NOTICE)) 'msg)) - (t 'unknown)))) - (puthash 'erc-msg m table) + (let ((table (make-hash-table :size 5)) + (cmd (and parsed (erc--get-eq-comparable-cmd + (erc-response.command parsed))))) + (puthash 'erc-msg + (cond ((and msg (symbolp msg)) msg) + ((and cmd (memq cmd '(PRIVMSG NOTICE)) 'msg)) + (type (pcase type + ((pred symbolp) type) + ((pred listp) + (intern (mapconcat #'prin1-to-string + type "-"))) + (_ 'unknown))) + (t 'unknown)) + table) (when cmd (puthash 'erc-cmd cmd table)) (and erc--msg-prop-overrides @@ -3492,7 +3517,7 @@ erc-display-message ((null type) string) ((listp type) - (let ((erc--compose-text-properties + (let ((erc--merge-text-properties-p (and (eq (car type) t) (setq type (cdr type))))) (dolist (type type) (setq string (erc-display-message-highlight type string)))) @@ -3501,13 +3526,13 @@ erc-display-message (erc-display-message-highlight type string)))) =20 (if (not (erc-response-p parsed)) - (erc-display-line string buffer) + (erc--route-insertion string buffer) (unless (erc-hide-current-message-p parsed) (erc-put-text-property 0 (length string) 'erc-parsed parsed string) (when (erc-response.tags parsed) (erc-put-text-property 0 (length string) 'tags (erc-response.tags parse= d) string)) - (erc-display-line string buffer))))) + (erc--route-insertion string buffer))))) =20 (defun erc-message-type-member (position list) "Return non-nil if the erc-parsed text-property at POSITION is in LIST. @@ -6492,7 +6517,7 @@ erc-put-text-property =20 You can redefine or `defadvice' this function in order to add EmacsSpeak support." - (if erc--compose-text-properties + (if erc--merge-text-properties-p (erc--merge-prop start end property value object) (put-text-property start end property value object))) =20 diff --git a/test/lisp/erc/erc-networks-tests.el b/test/lisp/erc/erc-networ= ks-tests.el index e95d99c128f..45ef0d10a6e 100644 --- a/test/lisp/erc/erc-networks-tests.el +++ b/test/lisp/erc/erc-networks-tests.el @@ -1206,7 +1206,7 @@ erc-networks--set-name calls) (erc-mode) =20 - (cl-letf (((symbol-function 'erc-display-line) + (cl-letf (((symbol-function 'erc--route-insertion) (lambda (&rest r) (push r calls)))) =20 (ert-info ("Signals when `erc-server-announced-name' unset") diff --git a/test/lisp/erc/erc-scenarios-log.el b/test/lisp/erc/erc-scenari= os-log.el index 9d3116d3db3..cd28ea54b2e 100644 --- a/test/lisp/erc/erc-scenarios-log.el +++ b/test/lisp/erc/erc-scenarios-log.el @@ -149,7 +149,7 @@ erc-scenarios-log--clear-stamp (when noninteractive (delete-directory tempdir :recursive)))) =20 (ert-deftest erc-scenarios-log--truncate () - :tags '(:expensive-test) + :tags '(:expensive-test :unstable) (erc-scenarios-common-with-cleanup ((erc-scenarios-common-dialog "base/assoc/bouncer-history") (dumb-server (erc-d-run "localhost" t 'foonet)) @@ -180,7 +180,7 @@ erc-scenarios-log--truncate (should-not (file-exists-p logserv)) (should-not (file-exists-p logchan)) (funcall expect 10 "*** MAXLIST=3DbeI:60") - (erc-d-t-wait-for 5 (=3D (pos-bol) (point-min))) + (should (=3D (pos-bol) (point-min))) (should (file-exists-p logserv)))) =20 (ert-info ("Log file ahead of truncation point") diff --git a/test/lisp/erc/erc-tests.el b/test/lisp/erc/erc-tests.el index b35afaa552f..02dfc55b6d5 100644 --- a/test/lisp/erc/erc-tests.el +++ b/test/lisp/erc/erc-tests.el @@ -1938,22 +1938,23 @@ erc-format-privmessage 2 5 (erc-speaker "Bob" font-lock-face erc-nick-default-face) 5 12 (font-lock-face erc-default-face)))))) =20 -(ert-deftest erc-display-line () +(ert-deftest erc--route-insertion () (erc-tests--send-prep) (erc-tests--set-fake-server-process "sleep" "1") (setq erc-networks--id (erc-networks--id-create 'foonet)) =20 - (let ((server-buffer (current-buffer)) - (spam-buffer (save-excursion (erc--open-target "#spam"))) - (chan-buffer (save-excursion (erc--open-target "#chan"))) - calls) - (cl-letf (((symbol-function 'erc-display-line-1) + (let* ((erc-modules) ; for `erc--open-target' + (server-buffer (current-buffer)) + (spam-buffer (save-excursion (erc--open-target "#spam"))) + (chan-buffer (save-excursion (erc--open-target "#chan"))) + calls) + (cl-letf (((symbol-function 'erc-insert-line) (lambda (&rest r) (push (cons 'line-1 r) calls)))) =20 (with-current-buffer chan-buffer =20 (ert-info ("Null `buffer' routes to live server-buffer") - (erc-display-line "null" nil) + (erc--route-insertion "null" nil) (should (equal (pop calls) `(line-1 "null" ,server-buffer))) (should-not calls)) =20 @@ -1961,14 +1962,14 @@ erc-display-line ;; Copies a let-bound `erc--msg-props' before mutating. (let* ((table (map-into '(erc-msg msg) 'hash-table)) (erc--msg-props table)) - (erc-display-line "cons" (list server-buffer spam-buffer)) + (erc--route-insertion "cons" (list server-buffer spam-buffer)) (should-not (eq table erc--msg-props))) (should (equal (pop calls) `(line-1 "cons" ,spam-buffer))) (should (equal (pop calls) `(line-1 "cons" ,server-buffer))) (should-not calls)) =20 (ert-info ("Variant `all' inserts in all session buffers") - (erc-display-line "all" 'all) + (erc--route-insertion "all" 'all) (should (equal (pop calls) `(line-1 "all" ,chan-buffer))) (should (equal (pop calls) `(line-1 "all" ,spam-buffer))) (should (equal (pop calls) `(line-1 "all" ,server-buffer))) @@ -1977,7 +1978,7 @@ erc-display-line (ert-info ("Variant `active' routes to active buffer if alive") (should (eq chan-buffer (erc-with-server-buffer erc-active-buffe= r))) (erc-set-active-buffer spam-buffer) - (erc-display-line "act" 'active) + (erc--route-insertion "act" 'active) (should (equal (pop calls) `(line-1 "act" ,spam-buffer))) (should (eq (erc-active-buffer) spam-buffer)) (should-not calls)) @@ -1985,7 +1986,7 @@ erc-display-line (ert-info ("Variant `active' falls back to current buffer") (should (eq spam-buffer (erc-active-buffer))) (kill-buffer "#spam") - (erc-display-line "nact" 'active) + (erc--route-insertion "nact" 'active) (should (equal (pop calls) `(line-1 "nact" ,server-buffer))) (should (eq (erc-with-server-buffer erc-active-buffer) server-buffer)) @@ -1993,7 +1994,7 @@ erc-display-line =20 (ert-info ("Dead single buffer defaults to live server-buffer") (should-not (get-buffer "#spam")) - (erc-display-line "dead" 'spam-buffer) + (erc--route-insertion "dead" 'spam-buffer) (should (equal (pop calls) `(line-1 "dead" ,server-buffer))) (should-not calls)))) =20 diff --git a/test/lisp/erc/resources/fill/snapshots/merge-01-start.eld b/te= st/lisp/erc/resources/fill/snapshots/merge-01-start.eld index 238d8cc73c2..8a6f2289f5d 100644 --- a/test/lisp/erc/resources/fill/snapshots/merge-01-start.eld +++ b/test/lisp/erc/resources/fill/snapshots/merge-01-start.eld @@ -1 +1 @@ -#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n\n[= Sat Apr 1 2023]\n zero.[07:00]\n one.\n two.\n thr= ee.\n four.\n five.\n six.\n" 2 3 (erc-msg datestamp erc= -ts 0 field erc-timestamp) 3 20 (field erc-timestamp wrap-prefix #1=3D(spac= e :width 27) line-prefix (space :width (- 27 (18)))) 21 22 (erc-msg unknown= erc-ts 0 wrap-prefix #1# line-prefix #2=3D(space :width (- 27 (4)))) 22 18= 3 (wrap-prefix #1# line-prefix #2#) 183 190 (field erc-timestamp wrap-prefi= x #1# line-prefix #2# display (#6=3D(margin right-margin) #("[00:00]" 0 7 (= invisible timestamp)))) 191 192 (erc-msg msg erc-ts 0 erc-cmd PRIVMSG wrap-= prefix #1# line-prefix #3=3D(space :width (- 27 (8)))) 192 197 (wrap-prefix= #1# line-prefix #3#) 197 199 (wrap-prefix #1# line-prefix #3#) 199 202 (wr= ap-prefix #1# line-prefix #3#) 202 315 (wrap-prefix #1# line-prefix #3#) 31= 6 348 (wrap-prefix #1# line-prefix #3#) 349 350 (erc-msg msg erc-ts 0 erc-c= md PRIVMSG wrap-prefix #1# line-prefix #4=3D(space :width (- 27 (6)))) 350 = 353 (wrap-prefix #1# line-prefix #4#) 353 355 (wrap-prefix #1# line-prefix = #4#) 355 360 (wrap-prefix #1# line-prefix #4#) 360 435 (wrap-prefix #1# lin= e-prefix #4#) 436 437 (erc-msg datestamp erc-ts 1680332400 field erc-timest= amp) 437 454 (field erc-timestamp wrap-prefix #1# line-prefix (space :width= (- 27 (18)))) 455 456 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-= prefix #1# line-prefix #5=3D(space :width (- 27 (6)))) 456 459 (wrap-prefix= #1# line-prefix #5#) 459 466 (wrap-prefix #1# line-prefix #5#) 466 473 (fi= eld erc-timestamp wrap-prefix #1# line-prefix #5# display (#6# #("[07:00]" = 0 7 (invisible timestamp)))) 474 475 (erc-msg msg erc-ts 1680332400 erc-cmd= PRIVMSG wrap-prefix #1# line-prefix #7=3D(space :width (- 27 (8)))) 475 48= 0 (wrap-prefix #1# line-prefix #7#) 480 486 (wrap-prefix #1# line-prefix #7= #) 487 488 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-prefix #1# l= ine-prefix #8=3D(space :width (- 27 0)) display #9=3D"") 488 493 (wrap-pref= ix #1# line-prefix #8# display #9#) 493 495 (wrap-prefix #1# line-prefix #8= # display #9#) 495 499 (wrap-prefix #1# line-prefix #8#) 500 501 (erc-msg m= sg erc-ts 1680332400 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #10=3D(spa= ce :width (- 27 (6)))) 501 504 (wrap-prefix #1# line-prefix #10#) 504 512 (= wrap-prefix #1# line-prefix #10#) 513 514 (erc-msg msg erc-ts 1680332400 er= c-cmd PRIVMSG wrap-prefix #1# line-prefix #11=3D(space :width (- 27 0)) dis= play #9#) 514 517 (wrap-prefix #1# line-prefix #11# display #9#) 517 519 (w= rap-prefix #1# line-prefix #11# display #9#) 519 524 (wrap-prefix #1# line-= prefix #11#) 525 526 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-pr= efix #1# line-prefix #12=3D(space :width (- 27 (8)))) 526 531 (wrap-prefix = #1# line-prefix #12#) 531 538 (wrap-prefix #1# line-prefix #12#) 539 540 (e= rc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #1= 3=3D(space :width (- 27 0)) display #9#) 540 545 (wrap-prefix #1# line-pref= ix #13# display #9#) 545 547 (wrap-prefix #1# line-prefix #13# display #9#)= 547 551 (wrap-prefix #1# line-prefix #13#)) \ No newline at end of file +#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n\n[= Sat Apr 1 2023]\n zero.[07:00]\n one.\n two.\n thr= ee.\n four.\n five.\n six.\n" 2 3 (erc-msg datestamp erc= -ts 0 field erc-timestamp) 3 20 (field erc-timestamp wrap-prefix #1=3D(spac= e :width 27) line-prefix (space :width (- 27 (18)))) 21 22 (erc-msg notice = erc-ts 0 wrap-prefix #1# line-prefix #2=3D(space :width (- 27 (4)))) 22 183= (wrap-prefix #1# line-prefix #2#) 183 190 (field erc-timestamp wrap-prefix= #1# line-prefix #2# display (#6=3D(margin right-margin) #("[00:00]" 0 7 (i= nvisible timestamp)))) 191 192 (erc-msg msg erc-ts 0 erc-cmd PRIVMSG wrap-p= refix #1# line-prefix #3=3D(space :width (- 27 (8)))) 192 197 (wrap-prefix = #1# line-prefix #3#) 197 199 (wrap-prefix #1# line-prefix #3#) 199 202 (wra= p-prefix #1# line-prefix #3#) 202 315 (wrap-prefix #1# line-prefix #3#) 316= 348 (wrap-prefix #1# line-prefix #3#) 349 350 (erc-msg msg erc-ts 0 erc-cm= d PRIVMSG wrap-prefix #1# line-prefix #4=3D(space :width (- 27 (6)))) 350 3= 53 (wrap-prefix #1# line-prefix #4#) 353 355 (wrap-prefix #1# line-prefix #= 4#) 355 360 (wrap-prefix #1# line-prefix #4#) 360 435 (wrap-prefix #1# line= -prefix #4#) 436 437 (erc-msg datestamp erc-ts 1680332400 field erc-timesta= mp) 437 454 (field erc-timestamp wrap-prefix #1# line-prefix (space :width = (- 27 (18)))) 455 456 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-p= refix #1# line-prefix #5=3D(space :width (- 27 (6)))) 456 459 (wrap-prefix = #1# line-prefix #5#) 459 466 (wrap-prefix #1# line-prefix #5#) 466 473 (fie= ld erc-timestamp wrap-prefix #1# line-prefix #5# display (#6# #("[07:00]" 0= 7 (invisible timestamp)))) 474 475 (erc-msg msg erc-ts 1680332400 erc-cmd = PRIVMSG wrap-prefix #1# line-prefix #7=3D(space :width (- 27 (8)))) 475 480= (wrap-prefix #1# line-prefix #7#) 480 486 (wrap-prefix #1# line-prefix #7#= ) 487 488 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-prefix #1# li= ne-prefix #8=3D(space :width (- 27 0)) display #9=3D"") 488 493 (wrap-prefi= x #1# line-prefix #8# display #9#) 493 495 (wrap-prefix #1# line-prefix #8#= display #9#) 495 499 (wrap-prefix #1# line-prefix #8#) 500 501 (erc-msg ms= g erc-ts 1680332400 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #10=3D(spac= e :width (- 27 (6)))) 501 504 (wrap-prefix #1# line-prefix #10#) 504 512 (w= rap-prefix #1# line-prefix #10#) 513 514 (erc-msg msg erc-ts 1680332400 erc= -cmd PRIVMSG wrap-prefix #1# line-prefix #11=3D(space :width (- 27 0)) disp= lay #9#) 514 517 (wrap-prefix #1# line-prefix #11# display #9#) 517 519 (wr= ap-prefix #1# line-prefix #11# display #9#) 519 524 (wrap-prefix #1# line-p= refix #11#) 525 526 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-pre= fix #1# line-prefix #12=3D(space :width (- 27 (8)))) 526 531 (wrap-prefix #= 1# line-prefix #12#) 531 538 (wrap-prefix #1# line-prefix #12#) 539 540 (er= c-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #13= =3D(space :width (- 27 0)) display #9#) 540 545 (wrap-prefix #1# line-prefi= x #13# display #9#) 545 547 (wrap-prefix #1# line-prefix #13# display #9#) = 547 551 (wrap-prefix #1# line-prefix #13#)) diff --git a/test/lisp/erc/resources/fill/snapshots/merge-02-right.eld b/te= st/lisp/erc/resources/fill/snapshots/merge-02-right.eld index d1ce9198e69..3eb4be4919b 100644 --- a/test/lisp/erc/resources/fill/snapshots/merge-02-right.eld +++ b/test/lisp/erc/resources/fill/snapshots/merge-02-right.eld @@ -1 +1 @@ -#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n\n[= Sat Apr 1 2023]\n zero.[07:00]\n one.\n two.\n thr= ee.\n four.\n five.\n six.\n" 2 3 (erc-msg datestamp erc= -ts 0 field erc-timestamp) 3 20 (field erc-timestamp wrap-prefix #1=3D(spac= e :width 29) line-prefix (space :width (- 29 (18)))) 21 22 (erc-msg unknown= erc-ts 0 wrap-prefix #1# line-prefix #2=3D(space :width (- 29 (4)))) 22 18= 3 (wrap-prefix #1# line-prefix #2#) 183 190 (field erc-timestamp wrap-prefi= x #1# line-prefix #2# display (#6=3D(margin right-margin) #("[00:00]" 0 7 (= invisible timestamp)))) 191 192 (erc-msg msg erc-ts 0 erc-cmd PRIVMSG wrap-= prefix #1# line-prefix #3=3D(space :width (- 29 (8)))) 192 197 (wrap-prefix= #1# line-prefix #3#) 197 199 (wrap-prefix #1# line-prefix #3#) 199 202 (wr= ap-prefix #1# line-prefix #3#) 202 315 (wrap-prefix #1# line-prefix #3#) 31= 6 348 (wrap-prefix #1# line-prefix #3#) 349 350 (erc-msg msg erc-ts 0 erc-c= md PRIVMSG wrap-prefix #1# line-prefix #4=3D(space :width (- 29 (6)))) 350 = 353 (wrap-prefix #1# line-prefix #4#) 353 355 (wrap-prefix #1# line-prefix = #4#) 355 360 (wrap-prefix #1# line-prefix #4#) 360 435 (wrap-prefix #1# lin= e-prefix #4#) 436 437 (erc-msg datestamp erc-ts 1680332400 field erc-timest= amp) 437 454 (field erc-timestamp wrap-prefix #1# line-prefix (space :width= (- 29 (18)))) 455 456 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-= prefix #1# line-prefix #5=3D(space :width (- 29 (6)))) 456 459 (wrap-prefix= #1# line-prefix #5#) 459 466 (wrap-prefix #1# line-prefix #5#) 466 473 (fi= eld erc-timestamp wrap-prefix #1# line-prefix #5# display (#6# #("[07:00]" = 0 7 (invisible timestamp)))) 474 475 (erc-msg msg erc-ts 1680332400 erc-cmd= PRIVMSG wrap-prefix #1# line-prefix #7=3D(space :width (- 29 (8)))) 475 48= 0 (wrap-prefix #1# line-prefix #7#) 480 486 (wrap-prefix #1# line-prefix #7= #) 487 488 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-prefix #1# l= ine-prefix #8=3D(space :width (- 29 0)) display #9=3D"") 488 493 (wrap-pref= ix #1# line-prefix #8# display #9#) 493 495 (wrap-prefix #1# line-prefix #8= # display #9#) 495 499 (wrap-prefix #1# line-prefix #8#) 500 501 (erc-msg m= sg erc-ts 1680332400 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #10=3D(spa= ce :width (- 29 (6)))) 501 504 (wrap-prefix #1# line-prefix #10#) 504 512 (= wrap-prefix #1# line-prefix #10#) 513 514 (erc-msg msg erc-ts 1680332400 er= c-cmd PRIVMSG wrap-prefix #1# line-prefix #11=3D(space :width (- 29 0)) dis= play #9#) 514 517 (wrap-prefix #1# line-prefix #11# display #9#) 517 519 (w= rap-prefix #1# line-prefix #11# display #9#) 519 524 (wrap-prefix #1# line-= prefix #11#) 525 526 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-pr= efix #1# line-prefix #12=3D(space :width (- 29 (8)))) 526 531 (wrap-prefix = #1# line-prefix #12#) 531 538 (wrap-prefix #1# line-prefix #12#) 539 540 (e= rc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #1= 3=3D(space :width (- 29 0)) display #9#) 540 545 (wrap-prefix #1# line-pref= ix #13# display #9#) 545 547 (wrap-prefix #1# line-prefix #13# display #9#)= 547 551 (wrap-prefix #1# line-prefix #13#)) \ No newline at end of file +#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n\n[= Sat Apr 1 2023]\n zero.[07:00]\n one.\n two.\n thr= ee.\n four.\n five.\n six.\n" 2 3 (erc-msg datestamp erc= -ts 0 field erc-timestamp) 3 20 (field erc-timestamp wrap-prefix #1=3D(spac= e :width 29) line-prefix (space :width (- 29 (18)))) 21 22 (erc-msg notice = erc-ts 0 wrap-prefix #1# line-prefix #2=3D(space :width (- 29 (4)))) 22 183= (wrap-prefix #1# line-prefix #2#) 183 190 (field erc-timestamp wrap-prefix= #1# line-prefix #2# display (#6=3D(margin right-margin) #("[00:00]" 0 7 (i= nvisible timestamp)))) 191 192 (erc-msg msg erc-ts 0 erc-cmd PRIVMSG wrap-p= refix #1# line-prefix #3=3D(space :width (- 29 (8)))) 192 197 (wrap-prefix = #1# line-prefix #3#) 197 199 (wrap-prefix #1# line-prefix #3#) 199 202 (wra= p-prefix #1# line-prefix #3#) 202 315 (wrap-prefix #1# line-prefix #3#) 316= 348 (wrap-prefix #1# line-prefix #3#) 349 350 (erc-msg msg erc-ts 0 erc-cm= d PRIVMSG wrap-prefix #1# line-prefix #4=3D(space :width (- 29 (6)))) 350 3= 53 (wrap-prefix #1# line-prefix #4#) 353 355 (wrap-prefix #1# line-prefix #= 4#) 355 360 (wrap-prefix #1# line-prefix #4#) 360 435 (wrap-prefix #1# line= -prefix #4#) 436 437 (erc-msg datestamp erc-ts 1680332400 field erc-timesta= mp) 437 454 (field erc-timestamp wrap-prefix #1# line-prefix (space :width = (- 29 (18)))) 455 456 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-p= refix #1# line-prefix #5=3D(space :width (- 29 (6)))) 456 459 (wrap-prefix = #1# line-prefix #5#) 459 466 (wrap-prefix #1# line-prefix #5#) 466 473 (fie= ld erc-timestamp wrap-prefix #1# line-prefix #5# display (#6# #("[07:00]" 0= 7 (invisible timestamp)))) 474 475 (erc-msg msg erc-ts 1680332400 erc-cmd = PRIVMSG wrap-prefix #1# line-prefix #7=3D(space :width (- 29 (8)))) 475 480= (wrap-prefix #1# line-prefix #7#) 480 486 (wrap-prefix #1# line-prefix #7#= ) 487 488 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-prefix #1# li= ne-prefix #8=3D(space :width (- 29 0)) display #9=3D"") 488 493 (wrap-prefi= x #1# line-prefix #8# display #9#) 493 495 (wrap-prefix #1# line-prefix #8#= display #9#) 495 499 (wrap-prefix #1# line-prefix #8#) 500 501 (erc-msg ms= g erc-ts 1680332400 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #10=3D(spac= e :width (- 29 (6)))) 501 504 (wrap-prefix #1# line-prefix #10#) 504 512 (w= rap-prefix #1# line-prefix #10#) 513 514 (erc-msg msg erc-ts 1680332400 erc= -cmd PRIVMSG wrap-prefix #1# line-prefix #11=3D(space :width (- 29 0)) disp= lay #9#) 514 517 (wrap-prefix #1# line-prefix #11# display #9#) 517 519 (wr= ap-prefix #1# line-prefix #11# display #9#) 519 524 (wrap-prefix #1# line-p= refix #11#) 525 526 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-pre= fix #1# line-prefix #12=3D(space :width (- 29 (8)))) 526 531 (wrap-prefix #= 1# line-prefix #12#) 531 538 (wrap-prefix #1# line-prefix #12#) 539 540 (er= c-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #13= =3D(space :width (- 29 0)) display #9#) 540 545 (wrap-prefix #1# line-prefi= x #13# display #9#) 545 547 (wrap-prefix #1# line-prefix #13# display #9#) = 547 551 (wrap-prefix #1# line-prefix #13#)) diff --git a/test/lisp/erc/resources/fill/snapshots/merge-wrap-01.eld b/tes= t/lisp/erc/resources/fill/snapshots/merge-wrap-01.eld index d70184724ba..82c6d52cf7c 100644 --- a/test/lisp/erc/resources/fill/snapshots/merge-wrap-01.eld +++ b/test/lisp/erc/resources/fill/snapshots/merge-wrap-01.eld @@ -1 +1 @@ -#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n\n[= Sat Apr 1 2023]\n zero.[07:00]\n* bob one\n two.\n* bob three\n<= bob> four.\n" 2 3 (erc-msg datestamp erc-ts 0 field erc-timestamp) 3 20 (fi= eld erc-timestamp wrap-prefix #1=3D(space :width 27) line-prefix (space :wi= dth (- 27 (18)))) 21 22 (erc-msg unknown erc-ts 0 wrap-prefix #1# line-pref= ix #2=3D(space :width (- 27 (4)))) 22 183 (wrap-prefix #1# line-prefix #2#)= 183 190 (field erc-timestamp wrap-prefix #1# line-prefix #2# display (#6= =3D(margin right-margin) #("[00:00]" 0 7 (invisible timestamp)))) 191 192 (= erc-msg msg erc-ts 0 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #3=3D(spac= e :width (- 27 (8)))) 192 197 (wrap-prefix #1# line-prefix #3#) 197 199 (wr= ap-prefix #1# line-prefix #3#) 199 202 (wrap-prefix #1# line-prefix #3#) 20= 2 315 (wrap-prefix #1# line-prefix #3#) 316 348 (wrap-prefix #1# line-prefi= x #3#) 349 350 (erc-msg msg erc-ts 0 erc-cmd PRIVMSG wrap-prefix #1# line-p= refix #4=3D(space :width (- 27 (6)))) 350 353 (wrap-prefix #1# line-prefix = #4#) 353 355 (wrap-prefix #1# line-prefix #4#) 355 360 (wrap-prefix #1# lin= e-prefix #4#) 360 435 (wrap-prefix #1# line-prefix #4#) 436 437 (erc-msg da= testamp erc-ts 1680332400 field erc-timestamp) 437 454 (field erc-timestamp= wrap-prefix #1# line-prefix (space :width (- 27 (18)))) 455 456 (erc-msg m= sg erc-ts 1680332400 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #5=3D(spac= e :width (- 27 (6)))) 456 459 (wrap-prefix #1# line-prefix #5#) 459 466 (wr= ap-prefix #1# line-prefix #5#) 466 473 (field erc-timestamp wrap-prefix #1#= line-prefix #5# display (#6# #("[07:00]" 0 7 (invisible timestamp)))) 474 = 475 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG erc-ctcp ACTION wrap-pre= fix #1# line-prefix #7=3D(space :width (- 27 (6)))) 475 476 (wrap-prefix #1= # line-prefix #7#) 476 479 (wrap-prefix #1# line-prefix #7#) 479 483 (wrap-= prefix #1# line-prefix #7#) 484 485 (erc-msg msg erc-ts 1680332400 erc-cmd = PRIVMSG wrap-prefix #1# line-prefix #8=3D(space :width (- 27 0)) display #9= =3D"") 485 488 (wrap-prefix #1# line-prefix #8# display #9#) 488 490 (wrap-= prefix #1# line-prefix #8# display #9#) 490 494 (wrap-prefix #1# line-prefi= x #8#) 495 496 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG erc-ctcp ACTI= ON wrap-prefix #1# line-prefix #10=3D(space :width (- 27 (2)))) 496 497 (wr= ap-prefix #1# line-prefix #10#) 497 500 (wrap-prefix #1# line-prefix #10#) = 500 506 (wrap-prefix #1# line-prefix #10#) 507 508 (erc-msg msg erc-ts 1680= 332400 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #11=3D(space :width (- 2= 7 0)) display #9#) 508 511 (wrap-prefix #1# line-prefix #11# display #9#) 5= 11 513 (wrap-prefix #1# line-prefix #11# display #9#) 513 518 (wrap-prefix = #1# line-prefix #11#)) \ No newline at end of file +#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n\n[= Sat Apr 1 2023]\n zero.[07:00]\n* bob one\n two.\n* bob three\n<= bob> four.\n" 2 3 (erc-msg datestamp erc-ts 0 field erc-timestamp) 3 20 (fi= eld erc-timestamp wrap-prefix #1=3D(space :width 27) line-prefix (space :wi= dth (- 27 (18)))) 21 22 (erc-msg notice erc-ts 0 wrap-prefix #1# line-prefi= x #2=3D(space :width (- 27 (4)))) 22 183 (wrap-prefix #1# line-prefix #2#) = 183 190 (field erc-timestamp wrap-prefix #1# line-prefix #2# display (#6=3D= (margin right-margin) #("[00:00]" 0 7 (invisible timestamp)))) 191 192 (erc= -msg msg erc-ts 0 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #3=3D(space := width (- 27 (8)))) 192 197 (wrap-prefix #1# line-prefix #3#) 197 199 (wrap-= prefix #1# line-prefix #3#) 199 202 (wrap-prefix #1# line-prefix #3#) 202 3= 15 (wrap-prefix #1# line-prefix #3#) 316 348 (wrap-prefix #1# line-prefix #= 3#) 349 350 (erc-msg msg erc-ts 0 erc-cmd PRIVMSG wrap-prefix #1# line-pref= ix #4=3D(space :width (- 27 (6)))) 350 353 (wrap-prefix #1# line-prefix #4#= ) 353 355 (wrap-prefix #1# line-prefix #4#) 355 360 (wrap-prefix #1# line-p= refix #4#) 360 435 (wrap-prefix #1# line-prefix #4#) 436 437 (erc-msg dates= tamp erc-ts 1680332400 field erc-timestamp) 437 454 (field erc-timestamp wr= ap-prefix #1# line-prefix (space :width (- 27 (18)))) 455 456 (erc-msg msg = erc-ts 1680332400 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #5=3D(space := width (- 27 (6)))) 456 459 (wrap-prefix #1# line-prefix #5#) 459 466 (wrap-= prefix #1# line-prefix #5#) 466 473 (field erc-timestamp wrap-prefix #1# li= ne-prefix #5# display (#6# #("[07:00]" 0 7 (invisible timestamp)))) 474 475= (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG erc-ctcp ACTION wrap-prefix= #1# line-prefix #7=3D(space :width (- 27 (6)))) 475 476 (wrap-prefix #1# l= ine-prefix #7#) 476 479 (wrap-prefix #1# line-prefix #7#) 479 483 (wrap-pre= fix #1# line-prefix #7#) 484 485 (erc-msg msg erc-ts 1680332400 erc-cmd PRI= VMSG wrap-prefix #1# line-prefix #8=3D(space :width (- 27 0)) display #9=3D= "") 485 488 (wrap-prefix #1# line-prefix #8# display #9#) 488 490 (wrap-pre= fix #1# line-prefix #8# display #9#) 490 494 (wrap-prefix #1# line-prefix #= 8#) 495 496 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG erc-ctcp ACTION = wrap-prefix #1# line-prefix #10=3D(space :width (- 27 (2)))) 496 497 (wrap-= prefix #1# line-prefix #10#) 497 500 (wrap-prefix #1# line-prefix #10#) 500= 506 (wrap-prefix #1# line-prefix #10#) 507 508 (erc-msg msg erc-ts 1680332= 400 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #11=3D(space :width (- 27 0= )) display #9#) 508 511 (wrap-prefix #1# line-prefix #11# display #9#) 511 = 513 (wrap-prefix #1# line-prefix #11# display #9#) 513 518 (wrap-prefix #1#= line-prefix #11#)) diff --git a/test/lisp/erc/resources/fill/snapshots/monospace-01-start.eld = b/test/lisp/erc/resources/fill/snapshots/monospace-01-start.eld index def97738ce6..84a1e34670c 100644 --- a/test/lisp/erc/resources/fill/snapshots/monospace-01-start.eld +++ b/test/lisp/erc/resources/fill/snapshots/monospace-01-start.eld @@ -1 +1 @@ -#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n" 2= 3 (erc-msg datestamp erc-ts 0 field erc-timestamp) 3 20 (field erc-timesta= mp wrap-prefix #1=3D(space :width 27) line-prefix (space :width (- 27 (18))= )) 21 22 (erc-msg unknown erc-ts 0 wrap-prefix #1# line-prefix #2=3D(space = :width (- 27 (4)))) 22 183 (wrap-prefix #1# line-prefix #2#) 183 190 (field= erc-timestamp wrap-prefix #1# line-prefix #2# display ((margin right-margi= n) #("[00:00]" 0 7 (invisible timestamp)))) 191 192 (erc-msg msg erc-ts 0 e= rc-cmd PRIVMSG wrap-prefix #1# line-prefix #3=3D(space :width (- 27 (8)))) = 192 197 (wrap-prefix #1# line-prefix #3#) 197 199 (wrap-prefix #1# line-pre= fix #3#) 199 202 (wrap-prefix #1# line-prefix #3#) 202 315 (wrap-prefix #1#= line-prefix #3#) 316 348 (wrap-prefix #1# line-prefix #3#) 349 350 (erc-ms= g msg erc-ts 0 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #4=3D(space :wid= th (- 27 (6)))) 350 353 (wrap-prefix #1# line-prefix #4#) 353 355 (wrap-pre= fix #1# line-prefix #4#) 355 360 (wrap-prefix #1# line-prefix #4#) 360 435 = (wrap-prefix #1# line-prefix #4#)) \ No newline at end of file +#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n" 2= 3 (erc-msg datestamp erc-ts 0 field erc-timestamp) 3 20 (field erc-timesta= mp wrap-prefix #1=3D(space :width 27) line-prefix (space :width (- 27 (18))= )) 21 22 (erc-msg notice erc-ts 0 wrap-prefix #1# line-prefix #2=3D(space := width (- 27 (4)))) 22 183 (wrap-prefix #1# line-prefix #2#) 183 190 (field = erc-timestamp wrap-prefix #1# line-prefix #2# display ((margin right-margin= ) #("[00:00]" 0 7 (invisible timestamp)))) 191 192 (erc-msg msg erc-ts 0 er= c-cmd PRIVMSG wrap-prefix #1# line-prefix #3=3D(space :width (- 27 (8)))) 1= 92 197 (wrap-prefix #1# line-prefix #3#) 197 199 (wrap-prefix #1# line-pref= ix #3#) 199 202 (wrap-prefix #1# line-prefix #3#) 202 315 (wrap-prefix #1# = line-prefix #3#) 316 348 (wrap-prefix #1# line-prefix #3#) 349 350 (erc-msg= msg erc-ts 0 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #4=3D(space :widt= h (- 27 (6)))) 350 353 (wrap-prefix #1# line-prefix #4#) 353 355 (wrap-pref= ix #1# line-prefix #4#) 355 360 (wrap-prefix #1# line-prefix #4#) 360 435 (= wrap-prefix #1# line-prefix #4#)) diff --git a/test/lisp/erc/resources/fill/snapshots/monospace-02-right.eld = b/test/lisp/erc/resources/fill/snapshots/monospace-02-right.eld index be3e2b33cfd..83394f2f639 100644 --- a/test/lisp/erc/resources/fill/snapshots/monospace-02-right.eld +++ b/test/lisp/erc/resources/fill/snapshots/monospace-02-right.eld @@ -1 +1 @@ -#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n" 2= 3 (erc-msg datestamp erc-ts 0 field erc-timestamp) 3 20 (field erc-timesta= mp wrap-prefix #1=3D(space :width 29) line-prefix (space :width (- 29 (18))= )) 21 22 (erc-msg unknown erc-ts 0 wrap-prefix #1# line-prefix #2=3D(space = :width (- 29 (4)))) 22 183 (wrap-prefix #1# line-prefix #2#) 183 190 (field= erc-timestamp wrap-prefix #1# line-prefix #2# display ((margin right-margi= n) #("[00:00]" 0 7 (invisible timestamp)))) 191 192 (erc-msg msg erc-ts 0 e= rc-cmd PRIVMSG wrap-prefix #1# line-prefix #3=3D(space :width (- 29 (8)))) = 192 197 (wrap-prefix #1# line-prefix #3#) 197 199 (wrap-prefix #1# line-pre= fix #3#) 199 202 (wrap-prefix #1# line-prefix #3#) 202 315 (wrap-prefix #1#= line-prefix #3#) 316 348 (wrap-prefix #1# line-prefix #3#) 349 350 (erc-ms= g msg erc-ts 0 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #4=3D(space :wid= th (- 29 (6)))) 350 353 (wrap-prefix #1# line-prefix #4#) 353 355 (wrap-pre= fix #1# line-prefix #4#) 355 360 (wrap-prefix #1# line-prefix #4#) 360 435 = (wrap-prefix #1# line-prefix #4#)) \ No newline at end of file +#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n" 2= 3 (erc-msg datestamp erc-ts 0 field erc-timestamp) 3 20 (field erc-timesta= mp wrap-prefix #1=3D(space :width 29) line-prefix (space :width (- 29 (18))= )) 21 22 (erc-msg notice erc-ts 0 wrap-prefix #1# line-prefix #2=3D(space := width (- 29 (4)))) 22 183 (wrap-prefix #1# line-prefix #2#) 183 190 (field = erc-timestamp wrap-prefix #1# line-prefix #2# display ((margin right-margin= ) #("[00:00]" 0 7 (invisible timestamp)))) 191 192 (erc-msg msg erc-ts 0 er= c-cmd PRIVMSG wrap-prefix #1# line-prefix #3=3D(space :width (- 29 (8)))) 1= 92 197 (wrap-prefix #1# line-prefix #3#) 197 199 (wrap-prefix #1# line-pref= ix #3#) 199 202 (wrap-prefix #1# line-prefix #3#) 202 315 (wrap-prefix #1# = line-prefix #3#) 316 348 (wrap-prefix #1# line-prefix #3#) 349 350 (erc-msg= msg erc-ts 0 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #4=3D(space :widt= h (- 29 (6)))) 350 353 (wrap-prefix #1# line-prefix #4#) 353 355 (wrap-pref= ix #1# line-prefix #4#) 355 360 (wrap-prefix #1# line-prefix #4#) 360 435 (= wrap-prefix #1# line-prefix #4#)) diff --git a/test/lisp/erc/resources/fill/snapshots/monospace-03-left.eld b= /test/lisp/erc/resources/fill/snapshots/monospace-03-left.eld index 098257d0b49..1605628b29f 100644 --- a/test/lisp/erc/resources/fill/snapshots/monospace-03-left.eld +++ b/test/lisp/erc/resources/fill/snapshots/monospace-03-left.eld @@ -1 +1 @@ -#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n" 2= 3 (erc-msg datestamp erc-ts 0 field erc-timestamp) 3 20 (field erc-timesta= mp wrap-prefix #1=3D(space :width 25) line-prefix (space :width (- 25 (18))= )) 21 22 (erc-msg unknown erc-ts 0 wrap-prefix #1# line-prefix #2=3D(space = :width (- 25 (4)))) 22 183 (wrap-prefix #1# line-prefix #2#) 183 190 (field= erc-timestamp wrap-prefix #1# line-prefix #2# display ((margin right-margi= n) #("[00:00]" 0 7 (invisible timestamp)))) 191 192 (erc-msg msg erc-ts 0 e= rc-cmd PRIVMSG wrap-prefix #1# line-prefix #3=3D(space :width (- 25 (8)))) = 192 197 (wrap-prefix #1# line-prefix #3#) 197 199 (wrap-prefix #1# line-pre= fix #3#) 199 202 (wrap-prefix #1# line-prefix #3#) 202 315 (wrap-prefix #1#= line-prefix #3#) 316 348 (wrap-prefix #1# line-prefix #3#) 349 350 (erc-ms= g msg erc-ts 0 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #4=3D(space :wid= th (- 25 (6)))) 350 353 (wrap-prefix #1# line-prefix #4#) 353 355 (wrap-pre= fix #1# line-prefix #4#) 355 360 (wrap-prefix #1# line-prefix #4#) 360 435 = (wrap-prefix #1# line-prefix #4#)) \ No newline at end of file +#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n" 2= 3 (erc-msg datestamp erc-ts 0 field erc-timestamp) 3 20 (field erc-timesta= mp wrap-prefix #1=3D(space :width 25) line-prefix (space :width (- 25 (18))= )) 21 22 (erc-msg notice erc-ts 0 wrap-prefix #1# line-prefix #2=3D(space := width (- 25 (4)))) 22 183 (wrap-prefix #1# line-prefix #2#) 183 190 (field = erc-timestamp wrap-prefix #1# line-prefix #2# display ((margin right-margin= ) #("[00:00]" 0 7 (invisible timestamp)))) 191 192 (erc-msg msg erc-ts 0 er= c-cmd PRIVMSG wrap-prefix #1# line-prefix #3=3D(space :width (- 25 (8)))) 1= 92 197 (wrap-prefix #1# line-prefix #3#) 197 199 (wrap-prefix #1# line-pref= ix #3#) 199 202 (wrap-prefix #1# line-prefix #3#) 202 315 (wrap-prefix #1# = line-prefix #3#) 316 348 (wrap-prefix #1# line-prefix #3#) 349 350 (erc-msg= msg erc-ts 0 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #4=3D(space :widt= h (- 25 (6)))) 350 353 (wrap-prefix #1# line-prefix #4#) 353 355 (wrap-pref= ix #1# line-prefix #4#) 355 360 (wrap-prefix #1# line-prefix #4#) 360 435 (= wrap-prefix #1# line-prefix #4#)) diff --git a/test/lisp/erc/resources/fill/snapshots/monospace-04-reset.eld = b/test/lisp/erc/resources/fill/snapshots/monospace-04-reset.eld index def97738ce6..84a1e34670c 100644 --- a/test/lisp/erc/resources/fill/snapshots/monospace-04-reset.eld +++ b/test/lisp/erc/resources/fill/snapshots/monospace-04-reset.eld @@ -1 +1 @@ -#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n" 2= 3 (erc-msg datestamp erc-ts 0 field erc-timestamp) 3 20 (field erc-timesta= mp wrap-prefix #1=3D(space :width 27) line-prefix (space :width (- 27 (18))= )) 21 22 (erc-msg unknown erc-ts 0 wrap-prefix #1# line-prefix #2=3D(space = :width (- 27 (4)))) 22 183 (wrap-prefix #1# line-prefix #2#) 183 190 (field= erc-timestamp wrap-prefix #1# line-prefix #2# display ((margin right-margi= n) #("[00:00]" 0 7 (invisible timestamp)))) 191 192 (erc-msg msg erc-ts 0 e= rc-cmd PRIVMSG wrap-prefix #1# line-prefix #3=3D(space :width (- 27 (8)))) = 192 197 (wrap-prefix #1# line-prefix #3#) 197 199 (wrap-prefix #1# line-pre= fix #3#) 199 202 (wrap-prefix #1# line-prefix #3#) 202 315 (wrap-prefix #1#= line-prefix #3#) 316 348 (wrap-prefix #1# line-prefix #3#) 349 350 (erc-ms= g msg erc-ts 0 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #4=3D(space :wid= th (- 27 (6)))) 350 353 (wrap-prefix #1# line-prefix #4#) 353 355 (wrap-pre= fix #1# line-prefix #4#) 355 360 (wrap-prefix #1# line-prefix #4#) 360 435 = (wrap-prefix #1# line-prefix #4#)) \ No newline at end of file +#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n" 2= 3 (erc-msg datestamp erc-ts 0 field erc-timestamp) 3 20 (field erc-timesta= mp wrap-prefix #1=3D(space :width 27) line-prefix (space :width (- 27 (18))= )) 21 22 (erc-msg notice erc-ts 0 wrap-prefix #1# line-prefix #2=3D(space := width (- 27 (4)))) 22 183 (wrap-prefix #1# line-prefix #2#) 183 190 (field = erc-timestamp wrap-prefix #1# line-prefix #2# display ((margin right-margin= ) #("[00:00]" 0 7 (invisible timestamp)))) 191 192 (erc-msg msg erc-ts 0 er= c-cmd PRIVMSG wrap-prefix #1# line-prefix #3=3D(space :width (- 27 (8)))) 1= 92 197 (wrap-prefix #1# line-prefix #3#) 197 199 (wrap-prefix #1# line-pref= ix #3#) 199 202 (wrap-prefix #1# line-prefix #3#) 202 315 (wrap-prefix #1# = line-prefix #3#) 316 348 (wrap-prefix #1# line-prefix #3#) 349 350 (erc-msg= msg erc-ts 0 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #4=3D(space :widt= h (- 27 (6)))) 350 353 (wrap-prefix #1# line-prefix #4#) 353 355 (wrap-pref= ix #1# line-prefix #4#) 355 360 (wrap-prefix #1# line-prefix #4#) 360 435 (= wrap-prefix #1# line-prefix #4#)) diff --git a/test/lisp/erc/resources/fill/snapshots/spacing-01-mono.eld b/t= est/lisp/erc/resources/fill/snapshots/spacing-01-mono.eld index 360b3dafafd..7a7e01de49d 100644 --- a/test/lisp/erc/resources/fill/snapshots/spacing-01-mono.eld +++ b/test/lisp/erc/resources/fill/snapshots/spacing-01-mono.eld @@ -1 +1 @@ -#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n This buffer is for text.\n*** one two three\n*** four five six\n So= mebody stop me\n" 2 3 (erc-msg datestamp erc-ts 0 field erc-timestamp) 3 20= (field erc-timestamp wrap-prefix #1=3D(space :width 27) line-prefix (space= :width (- 27 (18)))) 21 22 (erc-msg unknown erc-ts 0 wrap-prefix #1# line-= prefix #2=3D(space :width (- 27 (4)))) 22 183 (wrap-prefix #1# line-prefix = #2#) 183 190 (field erc-timestamp wrap-prefix #1# line-prefix #2# display (= (margin right-margin) #("[00:00]" 0 7 (invisible timestamp)))) 190 191 (lin= e-spacing 0.5) 191 192 (erc-msg msg erc-cmd PRIVMSG erc-ts 0 wrap-prefix #1= # line-prefix #3=3D(space :width (- 27 (8)))) 192 197 (wrap-prefix #1# line= -prefix #3#) 197 199 (wrap-prefix #1# line-prefix #3#) 199 202 (wrap-prefix= #1# line-prefix #3#) 202 315 (wrap-prefix #1# line-prefix #3#) 316 348 (wr= ap-prefix #1# line-prefix #3#) 348 349 (line-spacing 0.5) 349 350 (erc-msg = msg erc-cmd PRIVMSG erc-ts 0 wrap-prefix #1# line-prefix #4=3D(space :width= (- 27 (6)))) 350 353 (wrap-prefix #1# line-prefix #4#) 353 355 (wrap-prefi= x #1# line-prefix #4#) 355 360 (wrap-prefix #1# line-prefix #4#) 360 435 (w= rap-prefix #1# line-prefix #4#) 435 436 (line-spacing 0.5) 436 437 (erc-msg= msg erc-cmd PRIVMSG erc-ts 0 wrap-prefix #1# line-prefix #5=3D(space :widt= h (- 27 0)) display #6=3D"") 437 440 (wrap-prefix #1# line-prefix #5# displ= ay #6#) 440 442 (wrap-prefix #1# line-prefix #5# display #6#) 442 466 (wrap= -prefix #1# line-prefix #5#) 466 467 (line-spacing 0.5) 467 468 (erc-msg un= known erc-ts 0 wrap-prefix #1# line-prefix #7=3D(space :width (- 27 (4)))) = 468 484 (wrap-prefix #1# line-prefix #7#) 485 486 (erc-msg unknown erc-ts 0= wrap-prefix #1# line-prefix #8=3D(space :width (- 27 (4)))) 486 502 (wrap-= prefix #1# line-prefix #8#) 502 503 (line-spacing 0.5) 503 504 (erc-msg msg= erc-cmd PRIVMSG erc-ts 0 wrap-prefix #1# line-prefix #9=3D(space :width (-= 27 (6)))) 504 507 (wrap-prefix #1# line-prefix #9#) 507 525 (wrap-prefix #= 1# line-prefix #9#)) +#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n This buffer is for text.\n*** one two three\n*** four five six\n So= mebody stop me\n" 2 3 (erc-msg datestamp erc-ts 0 field erc-timestamp) 3 20= (field erc-timestamp wrap-prefix #1=3D(space :width 27) line-prefix (space= :width (- 27 (18)))) 21 22 (erc-msg notice erc-ts 0 wrap-prefix #1# line-p= refix #2=3D(space :width (- 27 (4)))) 22 183 (wrap-prefix #1# line-prefix #= 2#) 183 190 (field erc-timestamp wrap-prefix #1# line-prefix #2# display ((= margin right-margin) #("[00:00]" 0 7 (invisible timestamp)))) 190 191 (line= -spacing 0.5) 191 192 (erc-msg msg erc-cmd PRIVMSG erc-ts 0 wrap-prefix #1#= line-prefix #3=3D(space :width (- 27 (8)))) 192 197 (wrap-prefix #1# line-= prefix #3#) 197 199 (wrap-prefix #1# line-prefix #3#) 199 202 (wrap-prefix = #1# line-prefix #3#) 202 315 (wrap-prefix #1# line-prefix #3#) 316 348 (wra= p-prefix #1# line-prefix #3#) 348 349 (line-spacing 0.5) 349 350 (erc-msg m= sg erc-cmd PRIVMSG erc-ts 0 wrap-prefix #1# line-prefix #4=3D(space :width = (- 27 (6)))) 350 353 (wrap-prefix #1# line-prefix #4#) 353 355 (wrap-prefix= #1# line-prefix #4#) 355 360 (wrap-prefix #1# line-prefix #4#) 360 435 (wr= ap-prefix #1# line-prefix #4#) 435 436 (line-spacing 0.5) 436 437 (erc-msg = msg erc-cmd PRIVMSG erc-ts 0 wrap-prefix #1# line-prefix #5=3D(space :width= (- 27 0)) display #6=3D"") 437 440 (wrap-prefix #1# line-prefix #5# displa= y #6#) 440 442 (wrap-prefix #1# line-prefix #5# display #6#) 442 466 (wrap-= prefix #1# line-prefix #5#) 466 467 (line-spacing 0.5) 467 468 (erc-msg not= ice erc-ts 0 wrap-prefix #1# line-prefix #7=3D(space :width (- 27 (4)))) 46= 8 484 (wrap-prefix #1# line-prefix #7#) 485 486 (erc-msg notice erc-ts 0 wr= ap-prefix #1# line-prefix #8=3D(space :width (- 27 (4)))) 486 502 (wrap-pre= fix #1# line-prefix #8#) 502 503 (line-spacing 0.5) 503 504 (erc-msg msg er= c-cmd PRIVMSG erc-ts 0 wrap-prefix #1# line-prefix #9=3D(space :width (- 27= (6)))) 504 507 (wrap-prefix #1# line-prefix #9#) 507 525 (wrap-prefix #1# = line-prefix #9#)) diff --git a/test/lisp/erc/resources/fill/snapshots/stamps-left-01.eld b/te= st/lisp/erc/resources/fill/snapshots/stamps-left-01.eld index cd3537d3c94..bb248ffb28e 100644 --- a/test/lisp/erc/resources/fill/snapshots/stamps-left-01.eld +++ b/test/lisp/erc/resources/fill/snapshots/stamps-left-01.eld @@ -1 +1 @@ -#("\n\n[00:00]*** This server is in debug mode and is logging all user I/O= . If you do not wish for everything you send to be readable by the server o= wner(s), please disconnect.\n[00:00] bob: come, you are a tedious fo= ol: to the purpose. What was done to Elbow's wife, that he hath cause to co= mplain of? Come me to what was done to her.\n[00:00] alice: Either you= r unparagoned mistress is dead, or she's outprized by a trifle.\n" 2 3 (erc= -msg unknown erc-ts 0 display #3=3D(#5=3D(margin left-margin) #("[00:00]" 0= 7 (invisible timestamp font-lock-face erc-timestamp-face))) field erc-time= stamp wrap-prefix #1=3D(space :width 27) line-prefix #2=3D(space :width (- = 27 (4)))) 3 9 (display #3# field erc-timestamp wrap-prefix #1# line-prefix = #2#) 9 171 (wrap-prefix #1# line-prefix #2#) 172 173 (erc-msg msg erc-ts 0 = erc-cmd PRIVMSG display #6=3D(#5# #("[00:00]" 0 7 (invisible timestamp font= -lock-face erc-timestamp-face))) field erc-timestamp wrap-prefix #1# line-p= refix #4=3D(space :width (- 27 (8)))) 173 179 (display #6# field erc-timest= amp wrap-prefix #1# line-prefix #4#) 179 180 (wrap-prefix #1# line-prefix #= 4#) 180 185 (wrap-prefix #1# line-prefix #4#) 185 187 (wrap-prefix #1# line= -prefix #4#) 187 190 (wrap-prefix #1# line-prefix #4#) 190 303 (wrap-prefix= #1# line-prefix #4#) 304 336 (wrap-prefix #1# line-prefix #4#) 337 338 (er= c-msg msg erc-ts 0 erc-cmd PRIVMSG display #8=3D(#5# #("[00:00]" 0 7 (invis= ible timestamp font-lock-face erc-timestamp-face))) field erc-timestamp wra= p-prefix #1# line-prefix #7=3D(space :width (- 27 (6)))) 338 344 (display #= 8# field erc-timestamp wrap-prefix #1# line-prefix #7#) 344 345 (wrap-prefi= x #1# line-prefix #7#) 345 348 (wrap-prefix #1# line-prefix #7#) 348 350 (w= rap-prefix #1# line-prefix #7#) 350 355 (wrap-prefix #1# line-prefix #7#) 3= 55 430 (wrap-prefix #1# line-prefix #7#)) \ No newline at end of file +#("\n\n[00:00]*** This server is in debug mode and is logging all user I/O= . If you do not wish for everything you send to be readable by the server o= wner(s), please disconnect.\n[00:00] bob: come, you are a tedious fo= ol: to the purpose. What was done to Elbow's wife, that he hath cause to co= mplain of? Come me to what was done to her.\n[00:00] alice: Either you= r unparagoned mistress is dead, or she's outprized by a trifle.\n" 2 3 (erc= -msg notice erc-ts 0 display #3=3D(#5=3D(margin left-margin) #("[00:00]" 0 = 7 (invisible timestamp font-lock-face erc-timestamp-face))) field erc-times= tamp wrap-prefix #1=3D(space :width 27) line-prefix #2=3D(space :width (- 2= 7 (4)))) 3 9 (display #3# field erc-timestamp wrap-prefix #1# line-prefix #= 2#) 9 171 (wrap-prefix #1# line-prefix #2#) 172 173 (erc-msg msg erc-ts 0 e= rc-cmd PRIVMSG display #6=3D(#5# #("[00:00]" 0 7 (invisible timestamp font-= lock-face erc-timestamp-face))) field erc-timestamp wrap-prefix #1# line-pr= efix #4=3D(space :width (- 27 (8)))) 173 179 (display #6# field erc-timesta= mp wrap-prefix #1# line-prefix #4#) 179 180 (wrap-prefix #1# line-prefix #4= #) 180 185 (wrap-prefix #1# line-prefix #4#) 185 187 (wrap-prefix #1# line-= prefix #4#) 187 190 (wrap-prefix #1# line-prefix #4#) 190 303 (wrap-prefix = #1# line-prefix #4#) 304 336 (wrap-prefix #1# line-prefix #4#) 337 338 (erc= -msg msg erc-ts 0 erc-cmd PRIVMSG display #8=3D(#5# #("[00:00]" 0 7 (invisi= ble timestamp font-lock-face erc-timestamp-face))) field erc-timestamp wrap= -prefix #1# line-prefix #7=3D(space :width (- 27 (6)))) 338 344 (display #8= # field erc-timestamp wrap-prefix #1# line-prefix #7#) 344 345 (wrap-prefix= #1# line-prefix #7#) 345 348 (wrap-prefix #1# line-prefix #7#) 348 350 (wr= ap-prefix #1# line-prefix #7#) 350 355 (wrap-prefix #1# line-prefix #7#) 35= 5 430 (wrap-prefix #1# line-prefix #7#)) --=20 2.41.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Mark-erc-log-test-as-unstable.patch >From e655a058018d953988608adeed658a854ecdf7e6 Mon Sep 17 00:00:00 2001 From: "F. Jason Park" Date: Sun, 15 Oct 2023 13:43:12 -0700 Subject: [PATCH 1/2] ; Mark erc-log test as :unstable * test/lisp/erc/erc-scenarios-log.el (erc-scenarios-log--truncate): Mark :unstable for now. * test/lisp/erc/resources/base/renick/queries/solo.eld: Timeouts. * test/lisp/erc/resources/base/reuse-buffers/channel/barnet.eld: Timeouts. * test/lisp/erc/resources/base/reuse-buffers/channel/foonet.eld: Timeouts. * test/lisp/erc/resources/erc-scenarios-common.el: Timeouts. --- test/lisp/erc/erc-scenarios-log.el | 2 +- test/lisp/erc/resources/base/renick/queries/solo.eld | 2 +- test/lisp/erc/resources/base/reuse-buffers/channel/barnet.eld | 2 +- test/lisp/erc/resources/base/reuse-buffers/channel/foonet.eld | 2 +- test/lisp/erc/resources/erc-scenarios-common.el | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/test/lisp/erc/erc-scenarios-log.el b/test/lisp/erc/erc-scenarios-log.el index f7e7d61c92e..cd28ea54b2e 100644 --- a/test/lisp/erc/erc-scenarios-log.el +++ b/test/lisp/erc/erc-scenarios-log.el @@ -149,7 +149,7 @@ erc-scenarios-log--clear-stamp (when noninteractive (delete-directory tempdir :recursive)))) (ert-deftest erc-scenarios-log--truncate () - :tags '(:expensive-test) + :tags '(:expensive-test :unstable) (erc-scenarios-common-with-cleanup ((erc-scenarios-common-dialog "base/assoc/bouncer-history") (dumb-server (erc-d-run "localhost" t 'foonet)) diff --git a/test/lisp/erc/resources/base/renick/queries/solo.eld b/test/lisp/erc/resources/base/renick/queries/solo.eld index 12fa7d264e9..fa4c075adac 100644 --- a/test/lisp/erc/resources/base/renick/queries/solo.eld +++ b/test/lisp/erc/resources/base/renick/queries/solo.eld @@ -30,7 +30,7 @@ (0 ":irc.foonet.org NOTICE tester :[09:56:57] This server is in debug mode and is logging all user I/O. If you do not wish for everything you send to be readable by the server owner(s), please disconnect.") (0 ":irc.foonet.org 305 tester :You are no longer marked as being away")) -((mode 1 "MODE #foo") +((mode 10 "MODE #foo") (0 ":irc.foonet.org 324 tester #foo +nt") (0 ":irc.foonet.org 329 tester #foo 1622454985") (0.1 ":alice!~u@gq7yjr7gsu7nn.irc PRIVMSG #foo :bob: Farewell, pretty lady: you must hold the credit of your father.") diff --git a/test/lisp/erc/resources/base/reuse-buffers/channel/barnet.eld b/test/lisp/erc/resources/base/reuse-buffers/channel/barnet.eld index efc2506fd6f..d106a45cf66 100644 --- a/test/lisp/erc/resources/base/reuse-buffers/channel/barnet.eld +++ b/test/lisp/erc/resources/base/reuse-buffers/channel/barnet.eld @@ -56,7 +56,7 @@ (0.1 ":mike!~u@wvys46tx8tpmk.irc PRIVMSG #chan :tester, welcome!") (0 ":joe!~u@wvys46tx8tpmk.irc PRIVMSG #chan :tester, welcome!")) -((mode 1 "MODE #chan") +((mode 10 "MODE #chan") (0 ":irc.barnet.org 324 tester #chan +nt") (0 ":irc.barnet.org 329 tester #chan 1620205534") (0.1 ":mike!~u@wvys46tx8tpmk.irc PRIVMSG #chan :joe: Chi non te vede, non te pretia.") diff --git a/test/lisp/erc/resources/base/reuse-buffers/channel/foonet.eld b/test/lisp/erc/resources/base/reuse-buffers/channel/foonet.eld index a11cfac2e73..603afa2fc3e 100644 --- a/test/lisp/erc/resources/base/reuse-buffers/channel/foonet.eld +++ b/test/lisp/erc/resources/base/reuse-buffers/channel/foonet.eld @@ -52,7 +52,7 @@ (0.1 ":alice!~u@yppdd5tt4admc.irc PRIVMSG #chan :tester, welcome!") (0 ":bob!~u@yppdd5tt4admc.irc PRIVMSG #chan :tester, welcome!")) -((mode 1 "MODE #chan") +((mode 10 "MODE #chan") (0 ":irc.foonet.org 324 tester #chan +nt") (0 ":irc.foonet.org 329 tester #chan 1620205534") (0.1 ":bob!~u@yppdd5tt4admc.irc PRIVMSG #chan :alice: Thou desirest me to stop in my tale against the hair.") diff --git a/test/lisp/erc/resources/erc-scenarios-common.el b/test/lisp/erc/resources/erc-scenarios-common.el index 5354b300b47..9e134e6932f 100644 --- a/test/lisp/erc/resources/erc-scenarios-common.el +++ b/test/lisp/erc/resources/erc-scenarios-common.el @@ -574,7 +574,7 @@ erc-scenarios-common--upstream-reconnect :password "changeme" :full-name "tester") (erc-scenarios-common-assert-initial-buf-name nil port) - (erc-d-t-wait-for 3 (eq (erc-network) 'foonet)) + (erc-d-t-wait-for 6 (eq (erc-network) 'foonet)) (erc-d-t-wait-for 3 (string= (buffer-name) "foonet")) (funcall expect 5 "foonet"))) @@ -713,7 +713,7 @@ erc-scenarios-common--join-network-id (erc-d-t-wait-for 3 (eq erc-server-process erc-server-process-foo)) (funcall expect 3 "") (erc-d-t-absent-for 0.1 "") - (funcall expect 10 "not given me"))) + (funcall expect 20 "not given me"))) (ert-info ("All #chan@barnet output received") (with-current-buffer chan-buf-bar -- 2.41.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0002-5.6-Restore-missing-metadata-props-in-erc-display-li.patch Content-Transfer-Encoding: quoted-printable >From 2288132d2ae82bf6f1af44734306193e86bd90e5 Mon Sep 17 00:00:00 2001 From: "F. Jason Park" Date: Sun, 15 Oct 2023 17:22:22 -0700 Subject: [PATCH 2/2] [5.6] Restore missing metadata props in erc-display-li= ne * etc/ERC-NEWS: Designate `erc-display-message' as the favored means of inserting messages. * lisp/erc/erc-fill.el (erc-fill-wrap): Skip any `unknown' `erc-msg'. * lisp/erc/erc-stamp.el (erc-stamp--current-time): Use an existing `erc-ts' text property, when present, for the current message time. * lisp/erc/erc.el (erc-display-line-1): Update doc string. (erc-display-line): Convert to a thin wrapper around `erc-display-message', and move its existing body to a new function, `erc--route-insertion'. (erc--route-insertion): Adopt former body of `erc-display-line'. Copy `erc--msg-props' hash table when inserting a message in multiple buffers. At present, only `erc-server-QUIT' uses this facility. Also, improve readability with at most one recursive call for the fall-through case. (erc--compose-text-properties, erc--merge-text-properties-p): Rename former to latter to avoid confusion with `composition' property. (erc-display-message): Update doc string. Attempt to adapt a non-nil TYPE parameter for use as the value of the `erc-msg' text property before resorting to a value of `unknown'. But only do this when PARSED is nil, and MSG is a string. Call `erc--route-insertion' instead of `erc-display-line'. Use new name for `erc--compose-text-properties'. (erc-put-text-property): Update name of variable `erc--compose-text-properties'. * test/lisp/erc-networks-tests.el (erc-networks--set-name): Mock `erc--route-insertion' instead of `erc-display-line'. * test/lisp/erc/erc-scenarios-display-message.el: New file. * test/lisp/erc/erc-tests.el (erc--route-insertion): New test. * test/lisp/erc/resources/base/display-message/multibuf.eld: New test data. * test/lisp/erc/resources/fill/snapshots/merge-01-start.eld: Update. * test/lisp/erc/resources/fill/snapshots/merge-02-right.eld: Update. * test/lisp/erc/resources/fill/snapshots/merge-wrap-01.eld: Update. * test/lisp/erc/resources/fill/snapshots/monospace-01-start.eld: Update. * test/lisp/erc/resources/fill/snapshots/monospace-02-right.eld: Update. * test/lisp/erc/resources/fill/snapshots/monospace-03-left.eld: Update. * test/lisp/erc/resources/fill/snapshots/monospace-04-reset.eld: Update. * test/lisp/erc/resources/fill/snapshots/spacing-01-mono.eld: Update. * test/lisp/erc/resources/fill/snapshots/stamps-left-01.eld: Update. (Bug#60936) --- etc/ERC-NEWS | 23 +++ lisp/erc/erc-fill.el | 3 +- lisp/erc/erc-stamp.el | 4 +- lisp/erc/erc.el | 146 +++++++++++------- test/lisp/erc/erc-networks-tests.el | 2 +- .../lisp/erc/erc-scenarios-display-message.el | 64 ++++++++ test/lisp/erc/erc-tests.el | 63 ++++++++ .../base/display-message/multibuf.eld | 45 ++++++ .../fill/snapshots/merge-01-start.eld | 2 +- .../fill/snapshots/merge-02-right.eld | 2 +- .../fill/snapshots/merge-wrap-01.eld | 2 +- .../fill/snapshots/monospace-01-start.eld | 2 +- .../fill/snapshots/monospace-02-right.eld | 2 +- .../fill/snapshots/monospace-03-left.eld | 2 +- .../fill/snapshots/monospace-04-reset.eld | 2 +- .../fill/snapshots/spacing-01-mono.eld | 2 +- .../fill/snapshots/stamps-left-01.eld | 2 +- 17 files changed, 301 insertions(+), 67 deletions(-) create mode 100644 test/lisp/erc/erc-scenarios-display-message.el create mode 100644 test/lisp/erc/resources/base/display-message/multibuf.e= ld diff --git a/etc/ERC-NEWS b/etc/ERC-NEWS index 2e56539f210..282a538e04d 100644 --- a/etc/ERC-NEWS +++ b/etc/ERC-NEWS @@ -288,6 +288,29 @@ ERC also provisionally reserves the same depth interva= l for continue to modify non-ERC hooks locally whenever possible, especially in new code. =20 +*** Message insertion function 'erc-display-message' heavily favored. +Displaying "local" messages, like help text and interactive-command +feedback, in ERC buffers has never been straightforward. As such, +ancient patterns, like the pairing of preformatted "notice" text with +ERC's oldest insertion function, 'erc-display-line', still appear +quite frequently in the wild despite having been largely phased out of +ERC's own code base in 2002. That this specific example has endured +makes some sense because it's probably seen as less cumbersome than +fiddling with the more powerful and complicated 'erc-display-message'. + +The latest twist in this saga comes with this release, in which a +healthy dose of \"pre-insertion business\" has been invited to take up +residence in 'erc-display-message'. While this would seem to put +antiquated patterns, like the above mentioned 'erc-make-notice' combo, +at risk of having messages ignored or subject to degraded treatment by +built-in modules, a prophylactic measure has been erected to recast +'erc-display-line' as a thin wrapper around 'erc-display-message'. +And though nothing of the sort has been done for the lower-level +'erc-display-line-1' (now an obsolete alias for 'erc-insert-line'), +some fallback code has been put in place to ensure baseline +functionality. As always, if you find these developments disturbing, +please say so on the tracker. + *** ERC now manages timestamp-related properties a bit differently. For starters, the 'cursor-sensor-functions' text property is absent by default unless the option 'erc-echo-timestamps' is already enabled on diff --git a/lisp/erc/erc-fill.el b/lisp/erc/erc-fill.el index 0048956e075..e28c3563ebf 100644 --- a/lisp/erc/erc-fill.el +++ b/lisp/erc/erc-fill.el @@ -539,7 +539,8 @@ erc-fill-wrap (goto-char (point-min)) (let ((len (or (and erc-fill--wrap-length-function (funcall erc-fill--wrap-length-function)) - (and-let* ((msg-prop (erc--check-msg-prop 'erc-msg))) + (and-let* ((msg-prop (erc--check-msg-prop 'erc-msg)) + ((not (eq msg-prop 'unknown)))) (when-let ((e (erc--get-speaker-bounds)) (b (pop e)) ((or erc-fill--wrap-action-dedent-p diff --git a/lisp/erc/erc-stamp.el b/lisp/erc/erc-stamp.el index 394643c03cb..57fd7f39e50 100644 --- a/lisp/erc/erc-stamp.el +++ b/lisp/erc/erc-stamp.el @@ -219,7 +219,9 @@ erc-stamp--current-time (erc-compat--current-lisp-time)) =20 (cl-defmethod erc-stamp--current-time :around () - (or erc-stamp--current-time (cl-call-next-method))) + (or erc-stamp--current-time + (and erc--msg-props (gethash 'erc-ts erc--msg-props)) + (cl-call-next-method))) =20 (defvar erc-stamp--skip nil "Non-nil means inhibit `erc-add-timestamp' completely.") diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el index 5bf6496e926..0513a5c785c 100644 --- a/lisp/erc/erc.el +++ b/lisp/erc/erc.el @@ -3003,13 +3003,26 @@ erc--traverse-inserted (defvar erc--insert-marker nil "Internal override for `erc-insert-marker'.") =20 -(defun erc-display-line-1 (string buffer) - "Display STRING in `erc-mode' BUFFER. -Auxiliary function used in `erc-display-line'. The line gets filtered to -interpret the control characters. Then, `erc-insert-pre-hook' gets called. -If `erc-insert-this' is still t, STRING gets inserted into the buffer. -Afterwards, `erc-insert-modify' and `erc-insert-post-hook' get called. -If STRING is nil, the function does nothing." +(define-obsolete-function-alias 'erc-display-line-1 'erc-insert-line "30.1= ") +(defun erc-insert-line (string buffer) + "Insert STRING in an `erc-mode' BUFFER. +When STRING is nil, do nothing. Otherwise, start off by running +`erc-insert-pre-hook' in BUFFER with `erc-insert-this' bound to +t. If the latter remains non-nil afterward, insert STRING into +BUFFER, ensuring a trailing newline. After that, narrow BUFFER +around STRING, along with its final line ending, and run +`erc-insert-modify' and `erc-insert-post-hook', respectively. In +all cases, run `erc-insert-done-hook' unnarrowed before exiting, +and update positions in `buffer-undo-list'. + +In general, expect to be called from a higher-level insertion +function, like `erc-display-message', especially when modules +should consider STRING as a candidate for formatting with +enhancements like indentation, fontification, timestamping, etc. +Otherwise, when called directly, allow built-in modules to ignore +STRING, which may make it appear incongruous in situ (unless +preformatted or anticipated by third-party members of the various +modification hooks)." (when string (with-current-buffer (or buffer (process-buffer erc-server-process)) (let ((insert-position (marker-position erc-insert-marker))) @@ -3021,7 +3034,7 @@ erc-display-line-1 (when (erc-string-invisible-p string) (erc-put-text-properties 0 (length string) '(invisible intangible) string))) - (erc-log (concat "erc-display-line: " string + (erc-log (concat "erc-display-message: " string (format "(%S)" string) " in buffer " (format "%s" buffer))) (setq erc-insert-this t) @@ -3091,39 +3104,45 @@ erc-is-valid-nick-p "Check if NICK is a valid IRC nickname." (string-match (concat "\\`" erc-valid-nick-regexp "\\'") nick)) =20 -(defun erc-display-line (string &optional buffer) - "Display STRING in the ERC BUFFER. -All screen output must be done through this function. If BUFFER is nil -or omitted, the default ERC buffer for the `erc-session-server' is used. -The BUFFER can be an actual buffer, a list of buffers, `all' or `active'. -If BUFFER =3D `all', the string is displayed in all the ERC buffers for the -current session. `active' means the current active buffer -\(`erc-active-buffer'). If the buffer can't be resolved, the current -buffer is used. `erc-display-line-1' is used to display STRING. - -If STRING is nil, the function does nothing." - (let (new-bufs) +(defun erc--route-insertion (string buffer) + "Insert STRING in BUFFER. +See `erc-display-message' for acceptable BUFFER types." + (let (seen msg-props) (dolist (buf (cond ((bufferp buffer) (list buffer)) - ((listp buffer) buffer) + ((consp buffer) + (setq msg-props erc--msg-props) + buffer) ((processp buffer) (list (process-buffer buffer))) ((eq 'all buffer) ;; Hmm, or all of the same session server? (erc-buffer-list nil erc-server-process)) - ((and (eq 'active buffer) (erc-active-buffer)) - (list (erc-active-buffer))) + ((and-let* (((eq 'active buffer)) + (b (erc-active-buffer))) + (list b))) ((erc-server-buffer-live-p) (list (process-buffer erc-server-process))) (t (list (current-buffer))))) (when (buffer-live-p buf) - (erc-display-line-1 string buf) - (push buf new-bufs))) - (when (null new-bufs) - (erc-display-line-1 string (if (erc-server-buffer-live-p) - (process-buffer erc-server-process) - (current-buffer)))))) - -(defvar erc--compose-text-properties nil + (when msg-props + (setq erc--msg-props (copy-hash-table msg-props))) + (erc-insert-line string buf) + (setq seen t))) + (unless (or seen (null buffer)) + (erc--route-insertion string nil)))) + +(defun erc-display-line (string &optional buffer) + "Insert STRING in BUFFER as a plain \"local\" message. +Take pains to ensure modification hooks see messages created by +the old pattern (erc-display-line (erc-make-notice) my-buffer) as +being equivalent to a `erc-display-message' TYPE of `notice'." + (let ((erc--msg-prop-overrides erc--msg-prop-overrides)) + (when (eq 'erc-notice-face (get-text-property 0 'font-lock-face string= )) + (unless (assq 'erc-msg erc--msg-prop-overrides) + (push '(erc-msg . notice) erc--msg-prop-overrides))) + (erc-display-message nil nil buffer string))) + +(defvar erc--merge-text-properties-p nil "Non-nil when `erc-put-text-property' defers to `erc--merge-prop'.") =20 ;; To save space, we could maintain a map of all readable property @@ -3432,14 +3451,24 @@ erc-display-message Insert MSG or text derived from MSG into an ERC buffer, possibly after applying formatting by way of either a `format-spec' known to a message-catalog entry or a TYPE known to a specialized -string handler. Additionally, derive internal metadata, faces, -and other text properties from the various overloaded parameters, -such as PARSED, when it's an `erc-response' object, and MSG, when -it's a key (symbol) for a \"message catalog\" entry. Expect -ARGS, when applicable, to be `format-spec' args known to such an -entry, and TYPE, when non-nil, to be a symbol handled by +string handler. Additionally, derive metadata, faces, and other +text properties from the various overloaded parameters, such as +PARSED, when it's an `erc-response' object, and MSG, when it's a +key (symbol) for a \"message catalog\" entry. Expect ARGS, when +applicable, to be `format-spec' args known to such an entry, and +TYPE, when non-nil, to be a symbol handled by `erc-display-message-highlight' (necessarily accompanied by a -string MSG). +string MSG). Expect BUFFER to be among the sort accepted by the +function `erc-display-line'. + +Expect BUFFER to be a live `erc-mode' buffer, a list of such +buffers, or the symbols `all' or `active'. If `all', insert +STRING in all buffers for the current session. If `active', +defer to the function `erc-active-buffer', which may return the +session's server buffer if the previously active buffer has been +killed. If BUFFER is nil or a network process, pretend it's set +to the appropriate server buffer. Otherwise, use the current +buffer. =20 When TYPE is a list of symbols, call handlers from left to right without influencing how they behave when encountering existing @@ -3451,24 +3480,31 @@ erc-display-message being (erc-error-face erc-notice-face) throughout MSG when `erc-notice-highlight-type' is left at its default, `all'. =20 -As of ERC 5.6, assume user code will use this function instead of -`erc-display-line' when it's important that insert hooks treat -MSG in a manner befitting messages received from a server. That -is, expect to process most nontrivial informational messages, for -which PARSED is typically nil, when the caller desires -buttonizing and other effects." +As of ERC 5.6, assume third-party code will use this function +instead of lower-level ones, like `erc-insert-line', when needing +ERC to process arbitrary informative messages as if they'd been +sent from a server. That is, guarantee \"local\" messages, for +which PARSED is typically nil, will be subject to buttonizing, +filling, and other effects." (let ((string (if (symbolp msg) (apply #'erc-format-message msg args) msg)) (erc--msg-props (or erc--msg-props - (let* ((table (make-hash-table :size 5)) - (cmd (and parsed (erc--get-eq-comparable-cmd - (erc-response.command parsed)))) - (m (cond ((and msg (symbolp msg)) msg) - ((and cmd (memq cmd '(PRIVMSG NOTICE)) 'msg)) - (t 'unknown)))) - (puthash 'erc-msg m table) + (let ((table (make-hash-table :size 5)) + (cmd (and parsed (erc--get-eq-comparable-cmd + (erc-response.command parsed))))) + (puthash 'erc-msg + (cond ((and msg (symbolp msg)) msg) + ((and cmd (memq cmd '(PRIVMSG NOTICE)) 'msg)) + (type (pcase type + ((pred symbolp) type) + ((pred listp) + (intern (mapconcat #'prin1-to-string + type "-"))) + (_ 'unknown))) + (t 'unknown)) + table) (when cmd (puthash 'erc-cmd cmd table)) (and erc--msg-prop-overrides @@ -3481,7 +3517,7 @@ erc-display-message ((null type) string) ((listp type) - (let ((erc--compose-text-properties + (let ((erc--merge-text-properties-p (and (eq (car type) t) (setq type (cdr type))))) (dolist (type type) (setq string (erc-display-message-highlight type string)))) @@ -3490,13 +3526,13 @@ erc-display-message (erc-display-message-highlight type string)))) =20 (if (not (erc-response-p parsed)) - (erc-display-line string buffer) + (erc--route-insertion string buffer) (unless (erc-hide-current-message-p parsed) (erc-put-text-property 0 (length string) 'erc-parsed parsed string) (when (erc-response.tags parsed) (erc-put-text-property 0 (length string) 'tags (erc-response.tags parse= d) string)) - (erc-display-line string buffer))))) + (erc--route-insertion string buffer))))) =20 (defun erc-message-type-member (position list) "Return non-nil if the erc-parsed text-property at POSITION is in LIST. @@ -6481,7 +6517,7 @@ erc-put-text-property =20 You can redefine or `defadvice' this function in order to add EmacsSpeak support." - (if erc--compose-text-properties + (if erc--merge-text-properties-p (erc--merge-prop start end property value object) (put-text-property start end property value object))) =20 diff --git a/test/lisp/erc/erc-networks-tests.el b/test/lisp/erc/erc-networ= ks-tests.el index e95d99c128f..45ef0d10a6e 100644 --- a/test/lisp/erc/erc-networks-tests.el +++ b/test/lisp/erc/erc-networks-tests.el @@ -1206,7 +1206,7 @@ erc-networks--set-name calls) (erc-mode) =20 - (cl-letf (((symbol-function 'erc-display-line) + (cl-letf (((symbol-function 'erc--route-insertion) (lambda (&rest r) (push r calls)))) =20 (ert-info ("Signals when `erc-server-announced-name' unset") diff --git a/test/lisp/erc/erc-scenarios-display-message.el b/test/lisp/erc= /erc-scenarios-display-message.el new file mode 100644 index 00000000000..51bdf305ad5 --- /dev/null +++ b/test/lisp/erc/erc-scenarios-display-message.el @@ -0,0 +1,64 @@ +;;; erc-scenarios-display-message.el --- erc-display-message -*- lexical-b= inding: t -*- + +;; Copyright (C) 2023 Free Software Foundation, Inc. + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see . + +;;; Code: + +(require 'ert-x) +(eval-and-compile + (let ((load-path (cons (ert-resource-directory) load-path))) + (require 'erc-scenarios-common))) + +(ert-deftest erc-scenarios-display-message--multibuf () + :tags '(:expensive-test) + (erc-scenarios-common-with-cleanup + ((erc-scenarios-common-dialog "base/display-message") + (dumb-server (erc-d-run "localhost" t 'multibuf)) + (port (process-contact dumb-server :service)) + (erc-server-flood-penalty 0.1) + (erc-modules (cons 'fill-wrap erc-modules)) + (erc-autojoin-channels-alist '((foonet "#chan"))) + (expect (erc-d-t-make-expecter))) + + (ert-info ("Connect to foonet") + (with-current-buffer (erc :server "127.0.0.1" + :port port + :nick "tester" + :full-name "tester") + (funcall expect 10 "debug mode"))) + + (ert-info ("User dummy is a member of #chan") + (with-current-buffer (erc-d-t-wait-for 5 (get-buffer "#chan")) + (funcall expect 10 "dummy"))) + + (ert-info ("Dummy's QUIT notice in query contains metadata props") + (with-current-buffer (erc-d-t-wait-for 5 (get-buffer "dummy")) + (funcall expect 10 " hi") + (funcall expect 10 "*** dummy (~u@rdjcgiwfuwqmc.irc) has quit") + (should (eq 'QUIT (get-text-property (match-beginning 0) 'erc-msg)= )))) + + (ert-info ("Dummy's QUIT notice in #chan contains metadata props") + (with-current-buffer (erc-d-t-wait-for 5 (get-buffer "#chan")) + (funcall expect 10 "*** dummy (~u@rdjcgiwfuwqmc.irc) has quit") + (should (eq 'QUIT (get-text-property (match-beginning 0) 'erc-msg)= )))) + + (erc-cmd-QUIT ""))) + +(eval-when-compile (require 'erc-join)) + +;;; erc-scenarios-display-message.el ends here diff --git a/test/lisp/erc/erc-tests.el b/test/lisp/erc/erc-tests.el index 4f4662f5075..02dfc55b6d5 100644 --- a/test/lisp/erc/erc-tests.el +++ b/test/lisp/erc/erc-tests.el @@ -1938,6 +1938,69 @@ erc-format-privmessage 2 5 (erc-speaker "Bob" font-lock-face erc-nick-default-face) 5 12 (font-lock-face erc-default-face)))))) =20 +(ert-deftest erc--route-insertion () + (erc-tests--send-prep) + (erc-tests--set-fake-server-process "sleep" "1") + (setq erc-networks--id (erc-networks--id-create 'foonet)) + + (let* ((erc-modules) ; for `erc--open-target' + (server-buffer (current-buffer)) + (spam-buffer (save-excursion (erc--open-target "#spam"))) + (chan-buffer (save-excursion (erc--open-target "#chan"))) + calls) + (cl-letf (((symbol-function 'erc-insert-line) + (lambda (&rest r) (push (cons 'line-1 r) calls)))) + + (with-current-buffer chan-buffer + + (ert-info ("Null `buffer' routes to live server-buffer") + (erc--route-insertion "null" nil) + (should (equal (pop calls) `(line-1 "null" ,server-buffer))) + (should-not calls)) + + (ert-info ("Cons `buffer' routes to live members") + ;; Copies a let-bound `erc--msg-props' before mutating. + (let* ((table (map-into '(erc-msg msg) 'hash-table)) + (erc--msg-props table)) + (erc--route-insertion "cons" (list server-buffer spam-buffer)) + (should-not (eq table erc--msg-props))) + (should (equal (pop calls) `(line-1 "cons" ,spam-buffer))) + (should (equal (pop calls) `(line-1 "cons" ,server-buffer))) + (should-not calls)) + + (ert-info ("Variant `all' inserts in all session buffers") + (erc--route-insertion "all" 'all) + (should (equal (pop calls) `(line-1 "all" ,chan-buffer))) + (should (equal (pop calls) `(line-1 "all" ,spam-buffer))) + (should (equal (pop calls) `(line-1 "all" ,server-buffer))) + (should-not calls)) + + (ert-info ("Variant `active' routes to active buffer if alive") + (should (eq chan-buffer (erc-with-server-buffer erc-active-buffe= r))) + (erc-set-active-buffer spam-buffer) + (erc--route-insertion "act" 'active) + (should (equal (pop calls) `(line-1 "act" ,spam-buffer))) + (should (eq (erc-active-buffer) spam-buffer)) + (should-not calls)) + + (ert-info ("Variant `active' falls back to current buffer") + (should (eq spam-buffer (erc-active-buffer))) + (kill-buffer "#spam") + (erc--route-insertion "nact" 'active) + (should (equal (pop calls) `(line-1 "nact" ,server-buffer))) + (should (eq (erc-with-server-buffer erc-active-buffer) + server-buffer)) + (should-not calls)) + + (ert-info ("Dead single buffer defaults to live server-buffer") + (should-not (get-buffer "#spam")) + (erc--route-insertion "dead" 'spam-buffer) + (should (equal (pop calls) `(line-1 "dead" ,server-buffer))) + (should-not calls)))) + + (should-not (buffer-live-p spam-buffer)) + (kill-buffer chan-buffer))) + (defvar erc-tests--ipv6-examples '("1:2:3:4:5:6:7:8" "::ffff:10.0.0.1" "::ffff:1.2.3.4" "::ffff:0.0.0.0" diff --git a/test/lisp/erc/resources/base/display-message/multibuf.eld b/te= st/lisp/erc/resources/base/display-message/multibuf.eld new file mode 100644 index 00000000000..e49a654cd06 --- /dev/null +++ b/test/lisp/erc/resources/base/display-message/multibuf.eld @@ -0,0 +1,45 @@ +;; -*- mode: lisp-data; -*- +((nick 10 "NICK tester")) +((user 10 "USER user 0 * :tester") + (0.00 ":irc.foonet.org 001 tester :Welcome to the foonet IRC Network test= er") + (0.01 ":irc.foonet.org 002 tester :Your host is irc.foonet.org, running v= ersion ergo-v2.11.1") + (0.01 ":irc.foonet.org 003 tester :This server was created Sat, 14 Oct 20= 23 16:08:20 UTC") + (0.02 ":irc.foonet.org 004 tester irc.foonet.org ergo-v2.11.1 BERTZios CE= IMRUabefhiklmnoqstuv Iabefhkloqv") + (0.00 ":irc.foonet.org 005 tester AWAYLEN=3D390 BOT=3DB CASEMAPPING=3Dasc= ii CHANLIMIT=3D#:100 CHANMODES=3DIbe,k,fl,CEMRUimnstu CHANNELLEN=3D64 CHANT= YPES=3D# CHATHISTORY=3D1000 ELIST=3DU EXCEPTS EXTBAN=3D,m FORWARD=3Df INVEX= :are supported by this server") + (0.01 ":irc.foonet.org 005 tester KICKLEN=3D390 MAXLIST=3DbeI:60 MAXTARGE= TS=3D4 MODES MONITOR=3D100 NETWORK=3Dfoonet NICKLEN=3D32 PREFIX=3D(qaohv)~&= @%+ STATUSMSG=3D~&@%+ TARGMAX=3DNAMES:1,LIST:1,KICK:,WHOIS:1,USERHOST:10,PR= IVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100 TOPICLEN=3D390 UTF8ONLY WHOX :are sup= ported by this server") + (0.01 ":irc.foonet.org 005 tester draft/CHATHISTORY=3D1000 :are supported= by this server") + (0.00 ":irc.foonet.org 251 tester :There are 0 users and 5 invisible on 1= server(s)") + (0.00 ":irc.foonet.org 252 tester 0 :IRC Operators online") + (0.00 ":irc.foonet.org 253 tester 0 :unregistered connections") + (0.00 ":irc.foonet.org 254 tester 2 :channels formed") + (0.00 ":irc.foonet.org 255 tester :I have 5 clients and 0 servers") + (0.00 ":irc.foonet.org 265 tester 5 5 :Current local users 5, max 5") + (0.02 ":irc.foonet.org 266 tester 5 5 :Current global users 5, max 5") + (0.01 ":irc.foonet.org 422 tester :MOTD File is missing") + (0.00 ":irc.foonet.org 221 tester +i") + (0.01 ":irc.foonet.org NOTICE tester :This server is in debug mode and is= logging all user I/O. If you do not wish for everything you send to be rea= dable by the server owner(s), please disconnect.")) + +((mode 10 "MODE tester +i") + (0.00 ":irc.foonet.org 221 tester +i")) + +((join 10 "JOIN #chan") + (0.03 ":tester!~u@rdjcgiwfuwqmc.irc JOIN #chan") + (0.03 ":irc.foonet.org 353 tester =3D #chan :@fsbot bob alice dummy teste= r") + (0.01 ":irc.foonet.org 366 tester #chan :End of NAMES list") + (0.00 ":bob!~u@uee7kge7ua5sy.irc PRIVMSG #chan :tester, welcome!") + (0.01 ":alice!~u@uee7kge7ua5sy.irc PRIVMSG #chan :tester, welcome!")) + +((mode 10 "MODE #chan") + (0.01 ":bob!~u@uee7kge7ua5sy.irc PRIVMSG #chan :alice: Persuade this rude= wretch willingly to die.") + (0.01 ":irc.foonet.org 324 tester #chan +Cnt") + (0.01 ":irc.foonet.org 329 tester #chan 1697299707") + (0.03 ":alice!~u@uee7kge7ua5sy.irc PRIVMSG #chan :bob: It might be yours = or hers, for aught I know.") + (0.07 ":bob!~u@uee7kge7ua5sy.irc PRIVMSG #chan :Would all themselves laug= h mortal.") + (0.04 ":dummy!~u@rdjcgiwfuwqmc.irc PRIVMSG tester :hi") + (0.06 ":bob!~u@uee7kge7ua5sy.irc PRIVMSG #chan :alice: It hath pleased th= e devil drunkenness to give place to the devil wrath; one unperfectness sho= ws me another, to make me frankly despise myself.") + (0.05 ":dummy!~u@rdjcgiwfuwqmc.irc QUIT :Quit: \2ERC\2 5.6-git (IRC clien= t for GNU Emacs 30.0.50)") + (0.08 ":alice!~u@uee7kge7ua5sy.irc PRIVMSG #chan :You speak of him when h= e was less furnished than now he is with that which makes him both without = and within.")) + +((quit 10 "QUIT :\2ERC\2") + (0.04 ":tester!~u@rdjcgiwfuwqmc.irc QUIT :Quit: \2ERC\2 5.x (IRC client f= or GNU Emacs)") + (0.02 "ERROR :Quit: \2ERC\2 5.x (IRC client for GNU Emacs)")) diff --git a/test/lisp/erc/resources/fill/snapshots/merge-01-start.eld b/te= st/lisp/erc/resources/fill/snapshots/merge-01-start.eld index 238d8cc73c2..8a6f2289f5d 100644 --- a/test/lisp/erc/resources/fill/snapshots/merge-01-start.eld +++ b/test/lisp/erc/resources/fill/snapshots/merge-01-start.eld @@ -1 +1 @@ -#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n\n[= Sat Apr 1 2023]\n zero.[07:00]\n one.\n two.\n thr= ee.\n four.\n five.\n six.\n" 2 3 (erc-msg datestamp erc= -ts 0 field erc-timestamp) 3 20 (field erc-timestamp wrap-prefix #1=3D(spac= e :width 27) line-prefix (space :width (- 27 (18)))) 21 22 (erc-msg unknown= erc-ts 0 wrap-prefix #1# line-prefix #2=3D(space :width (- 27 (4)))) 22 18= 3 (wrap-prefix #1# line-prefix #2#) 183 190 (field erc-timestamp wrap-prefi= x #1# line-prefix #2# display (#6=3D(margin right-margin) #("[00:00]" 0 7 (= invisible timestamp)))) 191 192 (erc-msg msg erc-ts 0 erc-cmd PRIVMSG wrap-= prefix #1# line-prefix #3=3D(space :width (- 27 (8)))) 192 197 (wrap-prefix= #1# line-prefix #3#) 197 199 (wrap-prefix #1# line-prefix #3#) 199 202 (wr= ap-prefix #1# line-prefix #3#) 202 315 (wrap-prefix #1# line-prefix #3#) 31= 6 348 (wrap-prefix #1# line-prefix #3#) 349 350 (erc-msg msg erc-ts 0 erc-c= md PRIVMSG wrap-prefix #1# line-prefix #4=3D(space :width (- 27 (6)))) 350 = 353 (wrap-prefix #1# line-prefix #4#) 353 355 (wrap-prefix #1# line-prefix = #4#) 355 360 (wrap-prefix #1# line-prefix #4#) 360 435 (wrap-prefix #1# lin= e-prefix #4#) 436 437 (erc-msg datestamp erc-ts 1680332400 field erc-timest= amp) 437 454 (field erc-timestamp wrap-prefix #1# line-prefix (space :width= (- 27 (18)))) 455 456 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-= prefix #1# line-prefix #5=3D(space :width (- 27 (6)))) 456 459 (wrap-prefix= #1# line-prefix #5#) 459 466 (wrap-prefix #1# line-prefix #5#) 466 473 (fi= eld erc-timestamp wrap-prefix #1# line-prefix #5# display (#6# #("[07:00]" = 0 7 (invisible timestamp)))) 474 475 (erc-msg msg erc-ts 1680332400 erc-cmd= PRIVMSG wrap-prefix #1# line-prefix #7=3D(space :width (- 27 (8)))) 475 48= 0 (wrap-prefix #1# line-prefix #7#) 480 486 (wrap-prefix #1# line-prefix #7= #) 487 488 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-prefix #1# l= ine-prefix #8=3D(space :width (- 27 0)) display #9=3D"") 488 493 (wrap-pref= ix #1# line-prefix #8# display #9#) 493 495 (wrap-prefix #1# line-prefix #8= # display #9#) 495 499 (wrap-prefix #1# line-prefix #8#) 500 501 (erc-msg m= sg erc-ts 1680332400 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #10=3D(spa= ce :width (- 27 (6)))) 501 504 (wrap-prefix #1# line-prefix #10#) 504 512 (= wrap-prefix #1# line-prefix #10#) 513 514 (erc-msg msg erc-ts 1680332400 er= c-cmd PRIVMSG wrap-prefix #1# line-prefix #11=3D(space :width (- 27 0)) dis= play #9#) 514 517 (wrap-prefix #1# line-prefix #11# display #9#) 517 519 (w= rap-prefix #1# line-prefix #11# display #9#) 519 524 (wrap-prefix #1# line-= prefix #11#) 525 526 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-pr= efix #1# line-prefix #12=3D(space :width (- 27 (8)))) 526 531 (wrap-prefix = #1# line-prefix #12#) 531 538 (wrap-prefix #1# line-prefix #12#) 539 540 (e= rc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #1= 3=3D(space :width (- 27 0)) display #9#) 540 545 (wrap-prefix #1# line-pref= ix #13# display #9#) 545 547 (wrap-prefix #1# line-prefix #13# display #9#)= 547 551 (wrap-prefix #1# line-prefix #13#)) \ No newline at end of file +#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n\n[= Sat Apr 1 2023]\n zero.[07:00]\n one.\n two.\n thr= ee.\n four.\n five.\n six.\n" 2 3 (erc-msg datestamp erc= -ts 0 field erc-timestamp) 3 20 (field erc-timestamp wrap-prefix #1=3D(spac= e :width 27) line-prefix (space :width (- 27 (18)))) 21 22 (erc-msg notice = erc-ts 0 wrap-prefix #1# line-prefix #2=3D(space :width (- 27 (4)))) 22 183= (wrap-prefix #1# line-prefix #2#) 183 190 (field erc-timestamp wrap-prefix= #1# line-prefix #2# display (#6=3D(margin right-margin) #("[00:00]" 0 7 (i= nvisible timestamp)))) 191 192 (erc-msg msg erc-ts 0 erc-cmd PRIVMSG wrap-p= refix #1# line-prefix #3=3D(space :width (- 27 (8)))) 192 197 (wrap-prefix = #1# line-prefix #3#) 197 199 (wrap-prefix #1# line-prefix #3#) 199 202 (wra= p-prefix #1# line-prefix #3#) 202 315 (wrap-prefix #1# line-prefix #3#) 316= 348 (wrap-prefix #1# line-prefix #3#) 349 350 (erc-msg msg erc-ts 0 erc-cm= d PRIVMSG wrap-prefix #1# line-prefix #4=3D(space :width (- 27 (6)))) 350 3= 53 (wrap-prefix #1# line-prefix #4#) 353 355 (wrap-prefix #1# line-prefix #= 4#) 355 360 (wrap-prefix #1# line-prefix #4#) 360 435 (wrap-prefix #1# line= -prefix #4#) 436 437 (erc-msg datestamp erc-ts 1680332400 field erc-timesta= mp) 437 454 (field erc-timestamp wrap-prefix #1# line-prefix (space :width = (- 27 (18)))) 455 456 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-p= refix #1# line-prefix #5=3D(space :width (- 27 (6)))) 456 459 (wrap-prefix = #1# line-prefix #5#) 459 466 (wrap-prefix #1# line-prefix #5#) 466 473 (fie= ld erc-timestamp wrap-prefix #1# line-prefix #5# display (#6# #("[07:00]" 0= 7 (invisible timestamp)))) 474 475 (erc-msg msg erc-ts 1680332400 erc-cmd = PRIVMSG wrap-prefix #1# line-prefix #7=3D(space :width (- 27 (8)))) 475 480= (wrap-prefix #1# line-prefix #7#) 480 486 (wrap-prefix #1# line-prefix #7#= ) 487 488 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-prefix #1# li= ne-prefix #8=3D(space :width (- 27 0)) display #9=3D"") 488 493 (wrap-prefi= x #1# line-prefix #8# display #9#) 493 495 (wrap-prefix #1# line-prefix #8#= display #9#) 495 499 (wrap-prefix #1# line-prefix #8#) 500 501 (erc-msg ms= g erc-ts 1680332400 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #10=3D(spac= e :width (- 27 (6)))) 501 504 (wrap-prefix #1# line-prefix #10#) 504 512 (w= rap-prefix #1# line-prefix #10#) 513 514 (erc-msg msg erc-ts 1680332400 erc= -cmd PRIVMSG wrap-prefix #1# line-prefix #11=3D(space :width (- 27 0)) disp= lay #9#) 514 517 (wrap-prefix #1# line-prefix #11# display #9#) 517 519 (wr= ap-prefix #1# line-prefix #11# display #9#) 519 524 (wrap-prefix #1# line-p= refix #11#) 525 526 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-pre= fix #1# line-prefix #12=3D(space :width (- 27 (8)))) 526 531 (wrap-prefix #= 1# line-prefix #12#) 531 538 (wrap-prefix #1# line-prefix #12#) 539 540 (er= c-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #13= =3D(space :width (- 27 0)) display #9#) 540 545 (wrap-prefix #1# line-prefi= x #13# display #9#) 545 547 (wrap-prefix #1# line-prefix #13# display #9#) = 547 551 (wrap-prefix #1# line-prefix #13#)) diff --git a/test/lisp/erc/resources/fill/snapshots/merge-02-right.eld b/te= st/lisp/erc/resources/fill/snapshots/merge-02-right.eld index d1ce9198e69..3eb4be4919b 100644 --- a/test/lisp/erc/resources/fill/snapshots/merge-02-right.eld +++ b/test/lisp/erc/resources/fill/snapshots/merge-02-right.eld @@ -1 +1 @@ -#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n\n[= Sat Apr 1 2023]\n zero.[07:00]\n one.\n two.\n thr= ee.\n four.\n five.\n six.\n" 2 3 (erc-msg datestamp erc= -ts 0 field erc-timestamp) 3 20 (field erc-timestamp wrap-prefix #1=3D(spac= e :width 29) line-prefix (space :width (- 29 (18)))) 21 22 (erc-msg unknown= erc-ts 0 wrap-prefix #1# line-prefix #2=3D(space :width (- 29 (4)))) 22 18= 3 (wrap-prefix #1# line-prefix #2#) 183 190 (field erc-timestamp wrap-prefi= x #1# line-prefix #2# display (#6=3D(margin right-margin) #("[00:00]" 0 7 (= invisible timestamp)))) 191 192 (erc-msg msg erc-ts 0 erc-cmd PRIVMSG wrap-= prefix #1# line-prefix #3=3D(space :width (- 29 (8)))) 192 197 (wrap-prefix= #1# line-prefix #3#) 197 199 (wrap-prefix #1# line-prefix #3#) 199 202 (wr= ap-prefix #1# line-prefix #3#) 202 315 (wrap-prefix #1# line-prefix #3#) 31= 6 348 (wrap-prefix #1# line-prefix #3#) 349 350 (erc-msg msg erc-ts 0 erc-c= md PRIVMSG wrap-prefix #1# line-prefix #4=3D(space :width (- 29 (6)))) 350 = 353 (wrap-prefix #1# line-prefix #4#) 353 355 (wrap-prefix #1# line-prefix = #4#) 355 360 (wrap-prefix #1# line-prefix #4#) 360 435 (wrap-prefix #1# lin= e-prefix #4#) 436 437 (erc-msg datestamp erc-ts 1680332400 field erc-timest= amp) 437 454 (field erc-timestamp wrap-prefix #1# line-prefix (space :width= (- 29 (18)))) 455 456 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-= prefix #1# line-prefix #5=3D(space :width (- 29 (6)))) 456 459 (wrap-prefix= #1# line-prefix #5#) 459 466 (wrap-prefix #1# line-prefix #5#) 466 473 (fi= eld erc-timestamp wrap-prefix #1# line-prefix #5# display (#6# #("[07:00]" = 0 7 (invisible timestamp)))) 474 475 (erc-msg msg erc-ts 1680332400 erc-cmd= PRIVMSG wrap-prefix #1# line-prefix #7=3D(space :width (- 29 (8)))) 475 48= 0 (wrap-prefix #1# line-prefix #7#) 480 486 (wrap-prefix #1# line-prefix #7= #) 487 488 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-prefix #1# l= ine-prefix #8=3D(space :width (- 29 0)) display #9=3D"") 488 493 (wrap-pref= ix #1# line-prefix #8# display #9#) 493 495 (wrap-prefix #1# line-prefix #8= # display #9#) 495 499 (wrap-prefix #1# line-prefix #8#) 500 501 (erc-msg m= sg erc-ts 1680332400 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #10=3D(spa= ce :width (- 29 (6)))) 501 504 (wrap-prefix #1# line-prefix #10#) 504 512 (= wrap-prefix #1# line-prefix #10#) 513 514 (erc-msg msg erc-ts 1680332400 er= c-cmd PRIVMSG wrap-prefix #1# line-prefix #11=3D(space :width (- 29 0)) dis= play #9#) 514 517 (wrap-prefix #1# line-prefix #11# display #9#) 517 519 (w= rap-prefix #1# line-prefix #11# display #9#) 519 524 (wrap-prefix #1# line-= prefix #11#) 525 526 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-pr= efix #1# line-prefix #12=3D(space :width (- 29 (8)))) 526 531 (wrap-prefix = #1# line-prefix #12#) 531 538 (wrap-prefix #1# line-prefix #12#) 539 540 (e= rc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #1= 3=3D(space :width (- 29 0)) display #9#) 540 545 (wrap-prefix #1# line-pref= ix #13# display #9#) 545 547 (wrap-prefix #1# line-prefix #13# display #9#)= 547 551 (wrap-prefix #1# line-prefix #13#)) \ No newline at end of file +#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n\n[= Sat Apr 1 2023]\n zero.[07:00]\n one.\n two.\n thr= ee.\n four.\n five.\n six.\n" 2 3 (erc-msg datestamp erc= -ts 0 field erc-timestamp) 3 20 (field erc-timestamp wrap-prefix #1=3D(spac= e :width 29) line-prefix (space :width (- 29 (18)))) 21 22 (erc-msg notice = erc-ts 0 wrap-prefix #1# line-prefix #2=3D(space :width (- 29 (4)))) 22 183= (wrap-prefix #1# line-prefix #2#) 183 190 (field erc-timestamp wrap-prefix= #1# line-prefix #2# display (#6=3D(margin right-margin) #("[00:00]" 0 7 (i= nvisible timestamp)))) 191 192 (erc-msg msg erc-ts 0 erc-cmd PRIVMSG wrap-p= refix #1# line-prefix #3=3D(space :width (- 29 (8)))) 192 197 (wrap-prefix = #1# line-prefix #3#) 197 199 (wrap-prefix #1# line-prefix #3#) 199 202 (wra= p-prefix #1# line-prefix #3#) 202 315 (wrap-prefix #1# line-prefix #3#) 316= 348 (wrap-prefix #1# line-prefix #3#) 349 350 (erc-msg msg erc-ts 0 erc-cm= d PRIVMSG wrap-prefix #1# line-prefix #4=3D(space :width (- 29 (6)))) 350 3= 53 (wrap-prefix #1# line-prefix #4#) 353 355 (wrap-prefix #1# line-prefix #= 4#) 355 360 (wrap-prefix #1# line-prefix #4#) 360 435 (wrap-prefix #1# line= -prefix #4#) 436 437 (erc-msg datestamp erc-ts 1680332400 field erc-timesta= mp) 437 454 (field erc-timestamp wrap-prefix #1# line-prefix (space :width = (- 29 (18)))) 455 456 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-p= refix #1# line-prefix #5=3D(space :width (- 29 (6)))) 456 459 (wrap-prefix = #1# line-prefix #5#) 459 466 (wrap-prefix #1# line-prefix #5#) 466 473 (fie= ld erc-timestamp wrap-prefix #1# line-prefix #5# display (#6# #("[07:00]" 0= 7 (invisible timestamp)))) 474 475 (erc-msg msg erc-ts 1680332400 erc-cmd = PRIVMSG wrap-prefix #1# line-prefix #7=3D(space :width (- 29 (8)))) 475 480= (wrap-prefix #1# line-prefix #7#) 480 486 (wrap-prefix #1# line-prefix #7#= ) 487 488 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-prefix #1# li= ne-prefix #8=3D(space :width (- 29 0)) display #9=3D"") 488 493 (wrap-prefi= x #1# line-prefix #8# display #9#) 493 495 (wrap-prefix #1# line-prefix #8#= display #9#) 495 499 (wrap-prefix #1# line-prefix #8#) 500 501 (erc-msg ms= g erc-ts 1680332400 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #10=3D(spac= e :width (- 29 (6)))) 501 504 (wrap-prefix #1# line-prefix #10#) 504 512 (w= rap-prefix #1# line-prefix #10#) 513 514 (erc-msg msg erc-ts 1680332400 erc= -cmd PRIVMSG wrap-prefix #1# line-prefix #11=3D(space :width (- 29 0)) disp= lay #9#) 514 517 (wrap-prefix #1# line-prefix #11# display #9#) 517 519 (wr= ap-prefix #1# line-prefix #11# display #9#) 519 524 (wrap-prefix #1# line-p= refix #11#) 525 526 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-pre= fix #1# line-prefix #12=3D(space :width (- 29 (8)))) 526 531 (wrap-prefix #= 1# line-prefix #12#) 531 538 (wrap-prefix #1# line-prefix #12#) 539 540 (er= c-msg msg erc-ts 1680332400 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #13= =3D(space :width (- 29 0)) display #9#) 540 545 (wrap-prefix #1# line-prefi= x #13# display #9#) 545 547 (wrap-prefix #1# line-prefix #13# display #9#) = 547 551 (wrap-prefix #1# line-prefix #13#)) diff --git a/test/lisp/erc/resources/fill/snapshots/merge-wrap-01.eld b/tes= t/lisp/erc/resources/fill/snapshots/merge-wrap-01.eld index d70184724ba..82c6d52cf7c 100644 --- a/test/lisp/erc/resources/fill/snapshots/merge-wrap-01.eld +++ b/test/lisp/erc/resources/fill/snapshots/merge-wrap-01.eld @@ -1 +1 @@ -#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n\n[= Sat Apr 1 2023]\n zero.[07:00]\n* bob one\n two.\n* bob three\n<= bob> four.\n" 2 3 (erc-msg datestamp erc-ts 0 field erc-timestamp) 3 20 (fi= eld erc-timestamp wrap-prefix #1=3D(space :width 27) line-prefix (space :wi= dth (- 27 (18)))) 21 22 (erc-msg unknown erc-ts 0 wrap-prefix #1# line-pref= ix #2=3D(space :width (- 27 (4)))) 22 183 (wrap-prefix #1# line-prefix #2#)= 183 190 (field erc-timestamp wrap-prefix #1# line-prefix #2# display (#6= =3D(margin right-margin) #("[00:00]" 0 7 (invisible timestamp)))) 191 192 (= erc-msg msg erc-ts 0 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #3=3D(spac= e :width (- 27 (8)))) 192 197 (wrap-prefix #1# line-prefix #3#) 197 199 (wr= ap-prefix #1# line-prefix #3#) 199 202 (wrap-prefix #1# line-prefix #3#) 20= 2 315 (wrap-prefix #1# line-prefix #3#) 316 348 (wrap-prefix #1# line-prefi= x #3#) 349 350 (erc-msg msg erc-ts 0 erc-cmd PRIVMSG wrap-prefix #1# line-p= refix #4=3D(space :width (- 27 (6)))) 350 353 (wrap-prefix #1# line-prefix = #4#) 353 355 (wrap-prefix #1# line-prefix #4#) 355 360 (wrap-prefix #1# lin= e-prefix #4#) 360 435 (wrap-prefix #1# line-prefix #4#) 436 437 (erc-msg da= testamp erc-ts 1680332400 field erc-timestamp) 437 454 (field erc-timestamp= wrap-prefix #1# line-prefix (space :width (- 27 (18)))) 455 456 (erc-msg m= sg erc-ts 1680332400 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #5=3D(spac= e :width (- 27 (6)))) 456 459 (wrap-prefix #1# line-prefix #5#) 459 466 (wr= ap-prefix #1# line-prefix #5#) 466 473 (field erc-timestamp wrap-prefix #1#= line-prefix #5# display (#6# #("[07:00]" 0 7 (invisible timestamp)))) 474 = 475 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG erc-ctcp ACTION wrap-pre= fix #1# line-prefix #7=3D(space :width (- 27 (6)))) 475 476 (wrap-prefix #1= # line-prefix #7#) 476 479 (wrap-prefix #1# line-prefix #7#) 479 483 (wrap-= prefix #1# line-prefix #7#) 484 485 (erc-msg msg erc-ts 1680332400 erc-cmd = PRIVMSG wrap-prefix #1# line-prefix #8=3D(space :width (- 27 0)) display #9= =3D"") 485 488 (wrap-prefix #1# line-prefix #8# display #9#) 488 490 (wrap-= prefix #1# line-prefix #8# display #9#) 490 494 (wrap-prefix #1# line-prefi= x #8#) 495 496 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG erc-ctcp ACTI= ON wrap-prefix #1# line-prefix #10=3D(space :width (- 27 (2)))) 496 497 (wr= ap-prefix #1# line-prefix #10#) 497 500 (wrap-prefix #1# line-prefix #10#) = 500 506 (wrap-prefix #1# line-prefix #10#) 507 508 (erc-msg msg erc-ts 1680= 332400 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #11=3D(space :width (- 2= 7 0)) display #9#) 508 511 (wrap-prefix #1# line-prefix #11# display #9#) 5= 11 513 (wrap-prefix #1# line-prefix #11# display #9#) 513 518 (wrap-prefix = #1# line-prefix #11#)) \ No newline at end of file +#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n\n[= Sat Apr 1 2023]\n zero.[07:00]\n* bob one\n two.\n* bob three\n<= bob> four.\n" 2 3 (erc-msg datestamp erc-ts 0 field erc-timestamp) 3 20 (fi= eld erc-timestamp wrap-prefix #1=3D(space :width 27) line-prefix (space :wi= dth (- 27 (18)))) 21 22 (erc-msg notice erc-ts 0 wrap-prefix #1# line-prefi= x #2=3D(space :width (- 27 (4)))) 22 183 (wrap-prefix #1# line-prefix #2#) = 183 190 (field erc-timestamp wrap-prefix #1# line-prefix #2# display (#6=3D= (margin right-margin) #("[00:00]" 0 7 (invisible timestamp)))) 191 192 (erc= -msg msg erc-ts 0 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #3=3D(space := width (- 27 (8)))) 192 197 (wrap-prefix #1# line-prefix #3#) 197 199 (wrap-= prefix #1# line-prefix #3#) 199 202 (wrap-prefix #1# line-prefix #3#) 202 3= 15 (wrap-prefix #1# line-prefix #3#) 316 348 (wrap-prefix #1# line-prefix #= 3#) 349 350 (erc-msg msg erc-ts 0 erc-cmd PRIVMSG wrap-prefix #1# line-pref= ix #4=3D(space :width (- 27 (6)))) 350 353 (wrap-prefix #1# line-prefix #4#= ) 353 355 (wrap-prefix #1# line-prefix #4#) 355 360 (wrap-prefix #1# line-p= refix #4#) 360 435 (wrap-prefix #1# line-prefix #4#) 436 437 (erc-msg dates= tamp erc-ts 1680332400 field erc-timestamp) 437 454 (field erc-timestamp wr= ap-prefix #1# line-prefix (space :width (- 27 (18)))) 455 456 (erc-msg msg = erc-ts 1680332400 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #5=3D(space := width (- 27 (6)))) 456 459 (wrap-prefix #1# line-prefix #5#) 459 466 (wrap-= prefix #1# line-prefix #5#) 466 473 (field erc-timestamp wrap-prefix #1# li= ne-prefix #5# display (#6# #("[07:00]" 0 7 (invisible timestamp)))) 474 475= (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG erc-ctcp ACTION wrap-prefix= #1# line-prefix #7=3D(space :width (- 27 (6)))) 475 476 (wrap-prefix #1# l= ine-prefix #7#) 476 479 (wrap-prefix #1# line-prefix #7#) 479 483 (wrap-pre= fix #1# line-prefix #7#) 484 485 (erc-msg msg erc-ts 1680332400 erc-cmd PRI= VMSG wrap-prefix #1# line-prefix #8=3D(space :width (- 27 0)) display #9=3D= "") 485 488 (wrap-prefix #1# line-prefix #8# display #9#) 488 490 (wrap-pre= fix #1# line-prefix #8# display #9#) 490 494 (wrap-prefix #1# line-prefix #= 8#) 495 496 (erc-msg msg erc-ts 1680332400 erc-cmd PRIVMSG erc-ctcp ACTION = wrap-prefix #1# line-prefix #10=3D(space :width (- 27 (2)))) 496 497 (wrap-= prefix #1# line-prefix #10#) 497 500 (wrap-prefix #1# line-prefix #10#) 500= 506 (wrap-prefix #1# line-prefix #10#) 507 508 (erc-msg msg erc-ts 1680332= 400 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #11=3D(space :width (- 27 0= )) display #9#) 508 511 (wrap-prefix #1# line-prefix #11# display #9#) 511 = 513 (wrap-prefix #1# line-prefix #11# display #9#) 513 518 (wrap-prefix #1#= line-prefix #11#)) diff --git a/test/lisp/erc/resources/fill/snapshots/monospace-01-start.eld = b/test/lisp/erc/resources/fill/snapshots/monospace-01-start.eld index def97738ce6..84a1e34670c 100644 --- a/test/lisp/erc/resources/fill/snapshots/monospace-01-start.eld +++ b/test/lisp/erc/resources/fill/snapshots/monospace-01-start.eld @@ -1 +1 @@ -#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n" 2= 3 (erc-msg datestamp erc-ts 0 field erc-timestamp) 3 20 (field erc-timesta= mp wrap-prefix #1=3D(space :width 27) line-prefix (space :width (- 27 (18))= )) 21 22 (erc-msg unknown erc-ts 0 wrap-prefix #1# line-prefix #2=3D(space = :width (- 27 (4)))) 22 183 (wrap-prefix #1# line-prefix #2#) 183 190 (field= erc-timestamp wrap-prefix #1# line-prefix #2# display ((margin right-margi= n) #("[00:00]" 0 7 (invisible timestamp)))) 191 192 (erc-msg msg erc-ts 0 e= rc-cmd PRIVMSG wrap-prefix #1# line-prefix #3=3D(space :width (- 27 (8)))) = 192 197 (wrap-prefix #1# line-prefix #3#) 197 199 (wrap-prefix #1# line-pre= fix #3#) 199 202 (wrap-prefix #1# line-prefix #3#) 202 315 (wrap-prefix #1#= line-prefix #3#) 316 348 (wrap-prefix #1# line-prefix #3#) 349 350 (erc-ms= g msg erc-ts 0 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #4=3D(space :wid= th (- 27 (6)))) 350 353 (wrap-prefix #1# line-prefix #4#) 353 355 (wrap-pre= fix #1# line-prefix #4#) 355 360 (wrap-prefix #1# line-prefix #4#) 360 435 = (wrap-prefix #1# line-prefix #4#)) \ No newline at end of file +#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n" 2= 3 (erc-msg datestamp erc-ts 0 field erc-timestamp) 3 20 (field erc-timesta= mp wrap-prefix #1=3D(space :width 27) line-prefix (space :width (- 27 (18))= )) 21 22 (erc-msg notice erc-ts 0 wrap-prefix #1# line-prefix #2=3D(space := width (- 27 (4)))) 22 183 (wrap-prefix #1# line-prefix #2#) 183 190 (field = erc-timestamp wrap-prefix #1# line-prefix #2# display ((margin right-margin= ) #("[00:00]" 0 7 (invisible timestamp)))) 191 192 (erc-msg msg erc-ts 0 er= c-cmd PRIVMSG wrap-prefix #1# line-prefix #3=3D(space :width (- 27 (8)))) 1= 92 197 (wrap-prefix #1# line-prefix #3#) 197 199 (wrap-prefix #1# line-pref= ix #3#) 199 202 (wrap-prefix #1# line-prefix #3#) 202 315 (wrap-prefix #1# = line-prefix #3#) 316 348 (wrap-prefix #1# line-prefix #3#) 349 350 (erc-msg= msg erc-ts 0 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #4=3D(space :widt= h (- 27 (6)))) 350 353 (wrap-prefix #1# line-prefix #4#) 353 355 (wrap-pref= ix #1# line-prefix #4#) 355 360 (wrap-prefix #1# line-prefix #4#) 360 435 (= wrap-prefix #1# line-prefix #4#)) diff --git a/test/lisp/erc/resources/fill/snapshots/monospace-02-right.eld = b/test/lisp/erc/resources/fill/snapshots/monospace-02-right.eld index be3e2b33cfd..83394f2f639 100644 --- a/test/lisp/erc/resources/fill/snapshots/monospace-02-right.eld +++ b/test/lisp/erc/resources/fill/snapshots/monospace-02-right.eld @@ -1 +1 @@ -#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n" 2= 3 (erc-msg datestamp erc-ts 0 field erc-timestamp) 3 20 (field erc-timesta= mp wrap-prefix #1=3D(space :width 29) line-prefix (space :width (- 29 (18))= )) 21 22 (erc-msg unknown erc-ts 0 wrap-prefix #1# line-prefix #2=3D(space = :width (- 29 (4)))) 22 183 (wrap-prefix #1# line-prefix #2#) 183 190 (field= erc-timestamp wrap-prefix #1# line-prefix #2# display ((margin right-margi= n) #("[00:00]" 0 7 (invisible timestamp)))) 191 192 (erc-msg msg erc-ts 0 e= rc-cmd PRIVMSG wrap-prefix #1# line-prefix #3=3D(space :width (- 29 (8)))) = 192 197 (wrap-prefix #1# line-prefix #3#) 197 199 (wrap-prefix #1# line-pre= fix #3#) 199 202 (wrap-prefix #1# line-prefix #3#) 202 315 (wrap-prefix #1#= line-prefix #3#) 316 348 (wrap-prefix #1# line-prefix #3#) 349 350 (erc-ms= g msg erc-ts 0 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #4=3D(space :wid= th (- 29 (6)))) 350 353 (wrap-prefix #1# line-prefix #4#) 353 355 (wrap-pre= fix #1# line-prefix #4#) 355 360 (wrap-prefix #1# line-prefix #4#) 360 435 = (wrap-prefix #1# line-prefix #4#)) \ No newline at end of file +#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n" 2= 3 (erc-msg datestamp erc-ts 0 field erc-timestamp) 3 20 (field erc-timesta= mp wrap-prefix #1=3D(space :width 29) line-prefix (space :width (- 29 (18))= )) 21 22 (erc-msg notice erc-ts 0 wrap-prefix #1# line-prefix #2=3D(space := width (- 29 (4)))) 22 183 (wrap-prefix #1# line-prefix #2#) 183 190 (field = erc-timestamp wrap-prefix #1# line-prefix #2# display ((margin right-margin= ) #("[00:00]" 0 7 (invisible timestamp)))) 191 192 (erc-msg msg erc-ts 0 er= c-cmd PRIVMSG wrap-prefix #1# line-prefix #3=3D(space :width (- 29 (8)))) 1= 92 197 (wrap-prefix #1# line-prefix #3#) 197 199 (wrap-prefix #1# line-pref= ix #3#) 199 202 (wrap-prefix #1# line-prefix #3#) 202 315 (wrap-prefix #1# = line-prefix #3#) 316 348 (wrap-prefix #1# line-prefix #3#) 349 350 (erc-msg= msg erc-ts 0 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #4=3D(space :widt= h (- 29 (6)))) 350 353 (wrap-prefix #1# line-prefix #4#) 353 355 (wrap-pref= ix #1# line-prefix #4#) 355 360 (wrap-prefix #1# line-prefix #4#) 360 435 (= wrap-prefix #1# line-prefix #4#)) diff --git a/test/lisp/erc/resources/fill/snapshots/monospace-03-left.eld b= /test/lisp/erc/resources/fill/snapshots/monospace-03-left.eld index 098257d0b49..1605628b29f 100644 --- a/test/lisp/erc/resources/fill/snapshots/monospace-03-left.eld +++ b/test/lisp/erc/resources/fill/snapshots/monospace-03-left.eld @@ -1 +1 @@ -#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n" 2= 3 (erc-msg datestamp erc-ts 0 field erc-timestamp) 3 20 (field erc-timesta= mp wrap-prefix #1=3D(space :width 25) line-prefix (space :width (- 25 (18))= )) 21 22 (erc-msg unknown erc-ts 0 wrap-prefix #1# line-prefix #2=3D(space = :width (- 25 (4)))) 22 183 (wrap-prefix #1# line-prefix #2#) 183 190 (field= erc-timestamp wrap-prefix #1# line-prefix #2# display ((margin right-margi= n) #("[00:00]" 0 7 (invisible timestamp)))) 191 192 (erc-msg msg erc-ts 0 e= rc-cmd PRIVMSG wrap-prefix #1# line-prefix #3=3D(space :width (- 25 (8)))) = 192 197 (wrap-prefix #1# line-prefix #3#) 197 199 (wrap-prefix #1# line-pre= fix #3#) 199 202 (wrap-prefix #1# line-prefix #3#) 202 315 (wrap-prefix #1#= line-prefix #3#) 316 348 (wrap-prefix #1# line-prefix #3#) 349 350 (erc-ms= g msg erc-ts 0 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #4=3D(space :wid= th (- 25 (6)))) 350 353 (wrap-prefix #1# line-prefix #4#) 353 355 (wrap-pre= fix #1# line-prefix #4#) 355 360 (wrap-prefix #1# line-prefix #4#) 360 435 = (wrap-prefix #1# line-prefix #4#)) \ No newline at end of file +#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n" 2= 3 (erc-msg datestamp erc-ts 0 field erc-timestamp) 3 20 (field erc-timesta= mp wrap-prefix #1=3D(space :width 25) line-prefix (space :width (- 25 (18))= )) 21 22 (erc-msg notice erc-ts 0 wrap-prefix #1# line-prefix #2=3D(space := width (- 25 (4)))) 22 183 (wrap-prefix #1# line-prefix #2#) 183 190 (field = erc-timestamp wrap-prefix #1# line-prefix #2# display ((margin right-margin= ) #("[00:00]" 0 7 (invisible timestamp)))) 191 192 (erc-msg msg erc-ts 0 er= c-cmd PRIVMSG wrap-prefix #1# line-prefix #3=3D(space :width (- 25 (8)))) 1= 92 197 (wrap-prefix #1# line-prefix #3#) 197 199 (wrap-prefix #1# line-pref= ix #3#) 199 202 (wrap-prefix #1# line-prefix #3#) 202 315 (wrap-prefix #1# = line-prefix #3#) 316 348 (wrap-prefix #1# line-prefix #3#) 349 350 (erc-msg= msg erc-ts 0 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #4=3D(space :widt= h (- 25 (6)))) 350 353 (wrap-prefix #1# line-prefix #4#) 353 355 (wrap-pref= ix #1# line-prefix #4#) 355 360 (wrap-prefix #1# line-prefix #4#) 360 435 (= wrap-prefix #1# line-prefix #4#)) diff --git a/test/lisp/erc/resources/fill/snapshots/monospace-04-reset.eld = b/test/lisp/erc/resources/fill/snapshots/monospace-04-reset.eld index def97738ce6..84a1e34670c 100644 --- a/test/lisp/erc/resources/fill/snapshots/monospace-04-reset.eld +++ b/test/lisp/erc/resources/fill/snapshots/monospace-04-reset.eld @@ -1 +1 @@ -#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n" 2= 3 (erc-msg datestamp erc-ts 0 field erc-timestamp) 3 20 (field erc-timesta= mp wrap-prefix #1=3D(space :width 27) line-prefix (space :width (- 27 (18))= )) 21 22 (erc-msg unknown erc-ts 0 wrap-prefix #1# line-prefix #2=3D(space = :width (- 27 (4)))) 22 183 (wrap-prefix #1# line-prefix #2#) 183 190 (field= erc-timestamp wrap-prefix #1# line-prefix #2# display ((margin right-margi= n) #("[00:00]" 0 7 (invisible timestamp)))) 191 192 (erc-msg msg erc-ts 0 e= rc-cmd PRIVMSG wrap-prefix #1# line-prefix #3=3D(space :width (- 27 (8)))) = 192 197 (wrap-prefix #1# line-prefix #3#) 197 199 (wrap-prefix #1# line-pre= fix #3#) 199 202 (wrap-prefix #1# line-prefix #3#) 202 315 (wrap-prefix #1#= line-prefix #3#) 316 348 (wrap-prefix #1# line-prefix #3#) 349 350 (erc-ms= g msg erc-ts 0 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #4=3D(space :wid= th (- 27 (6)))) 350 353 (wrap-prefix #1# line-prefix #4#) 353 355 (wrap-pre= fix #1# line-prefix #4#) 355 360 (wrap-prefix #1# line-prefix #4#) 360 435 = (wrap-prefix #1# line-prefix #4#)) \ No newline at end of file +#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n" 2= 3 (erc-msg datestamp erc-ts 0 field erc-timestamp) 3 20 (field erc-timesta= mp wrap-prefix #1=3D(space :width 27) line-prefix (space :width (- 27 (18))= )) 21 22 (erc-msg notice erc-ts 0 wrap-prefix #1# line-prefix #2=3D(space := width (- 27 (4)))) 22 183 (wrap-prefix #1# line-prefix #2#) 183 190 (field = erc-timestamp wrap-prefix #1# line-prefix #2# display ((margin right-margin= ) #("[00:00]" 0 7 (invisible timestamp)))) 191 192 (erc-msg msg erc-ts 0 er= c-cmd PRIVMSG wrap-prefix #1# line-prefix #3=3D(space :width (- 27 (8)))) 1= 92 197 (wrap-prefix #1# line-prefix #3#) 197 199 (wrap-prefix #1# line-pref= ix #3#) 199 202 (wrap-prefix #1# line-prefix #3#) 202 315 (wrap-prefix #1# = line-prefix #3#) 316 348 (wrap-prefix #1# line-prefix #3#) 349 350 (erc-msg= msg erc-ts 0 erc-cmd PRIVMSG wrap-prefix #1# line-prefix #4=3D(space :widt= h (- 27 (6)))) 350 353 (wrap-prefix #1# line-prefix #4#) 353 355 (wrap-pref= ix #1# line-prefix #4#) 355 360 (wrap-prefix #1# line-prefix #4#) 360 435 (= wrap-prefix #1# line-prefix #4#)) diff --git a/test/lisp/erc/resources/fill/snapshots/spacing-01-mono.eld b/t= est/lisp/erc/resources/fill/snapshots/spacing-01-mono.eld index 360b3dafafd..7a7e01de49d 100644 --- a/test/lisp/erc/resources/fill/snapshots/spacing-01-mono.eld +++ b/test/lisp/erc/resources/fill/snapshots/spacing-01-mono.eld @@ -1 +1 @@ -#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n This buffer is for text.\n*** one two three\n*** four five six\n So= mebody stop me\n" 2 3 (erc-msg datestamp erc-ts 0 field erc-timestamp) 3 20= (field erc-timestamp wrap-prefix #1=3D(space :width 27) line-prefix (space= :width (- 27 (18)))) 21 22 (erc-msg unknown erc-ts 0 wrap-prefix #1# line-= prefix #2=3D(space :width (- 27 (4)))) 22 183 (wrap-prefix #1# line-prefix = #2#) 183 190 (field erc-timestamp wrap-prefix #1# line-prefix #2# display (= (margin right-margin) #("[00:00]" 0 7 (invisible timestamp)))) 190 191 (lin= e-spacing 0.5) 191 192 (erc-msg msg erc-cmd PRIVMSG erc-ts 0 wrap-prefix #1= # line-prefix #3=3D(space :width (- 27 (8)))) 192 197 (wrap-prefix #1# line= -prefix #3#) 197 199 (wrap-prefix #1# line-prefix #3#) 199 202 (wrap-prefix= #1# line-prefix #3#) 202 315 (wrap-prefix #1# line-prefix #3#) 316 348 (wr= ap-prefix #1# line-prefix #3#) 348 349 (line-spacing 0.5) 349 350 (erc-msg = msg erc-cmd PRIVMSG erc-ts 0 wrap-prefix #1# line-prefix #4=3D(space :width= (- 27 (6)))) 350 353 (wrap-prefix #1# line-prefix #4#) 353 355 (wrap-prefi= x #1# line-prefix #4#) 355 360 (wrap-prefix #1# line-prefix #4#) 360 435 (w= rap-prefix #1# line-prefix #4#) 435 436 (line-spacing 0.5) 436 437 (erc-msg= msg erc-cmd PRIVMSG erc-ts 0 wrap-prefix #1# line-prefix #5=3D(space :widt= h (- 27 0)) display #6=3D"") 437 440 (wrap-prefix #1# line-prefix #5# displ= ay #6#) 440 442 (wrap-prefix #1# line-prefix #5# display #6#) 442 466 (wrap= -prefix #1# line-prefix #5#) 466 467 (line-spacing 0.5) 467 468 (erc-msg un= known erc-ts 0 wrap-prefix #1# line-prefix #7=3D(space :width (- 27 (4)))) = 468 484 (wrap-prefix #1# line-prefix #7#) 485 486 (erc-msg unknown erc-ts 0= wrap-prefix #1# line-prefix #8=3D(space :width (- 27 (4)))) 486 502 (wrap-= prefix #1# line-prefix #8#) 502 503 (line-spacing 0.5) 503 504 (erc-msg msg= erc-cmd PRIVMSG erc-ts 0 wrap-prefix #1# line-prefix #9=3D(space :width (-= 27 (6)))) 504 507 (wrap-prefix #1# line-prefix #9#) 507 525 (wrap-prefix #= 1# line-prefix #9#)) +#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is loggin= g all user I/O. If you do not wish for everything you send to be readable b= y the server owner(s), please disconnect.[00:00]\n bob: come, you ar= e a tedious fool: to the purpose. What was done to Elbow's wife, that he ha= th cause to complain of? Come me to what was done to her.\n alice: Eit= her your unparagoned mistress is dead, or she's outprized by a trifle.\n This buffer is for text.\n*** one two three\n*** four five six\n So= mebody stop me\n" 2 3 (erc-msg datestamp erc-ts 0 field erc-timestamp) 3 20= (field erc-timestamp wrap-prefix #1=3D(space :width 27) line-prefix (space= :width (- 27 (18)))) 21 22 (erc-msg notice erc-ts 0 wrap-prefix #1# line-p= refix #2=3D(space :width (- 27 (4)))) 22 183 (wrap-prefix #1# line-prefix #= 2#) 183 190 (field erc-timestamp wrap-prefix #1# line-prefix #2# display ((= margin right-margin) #("[00:00]" 0 7 (invisible timestamp)))) 190 191 (line= -spacing 0.5) 191 192 (erc-msg msg erc-cmd PRIVMSG erc-ts 0 wrap-prefix #1#= line-prefix #3=3D(space :width (- 27 (8)))) 192 197 (wrap-prefix #1# line-= prefix #3#) 197 199 (wrap-prefix #1# line-prefix #3#) 199 202 (wrap-prefix = #1# line-prefix #3#) 202 315 (wrap-prefix #1# line-prefix #3#) 316 348 (wra= p-prefix #1# line-prefix #3#) 348 349 (line-spacing 0.5) 349 350 (erc-msg m= sg erc-cmd PRIVMSG erc-ts 0 wrap-prefix #1# line-prefix #4=3D(space :width = (- 27 (6)))) 350 353 (wrap-prefix #1# line-prefix #4#) 353 355 (wrap-prefix= #1# line-prefix #4#) 355 360 (wrap-prefix #1# line-prefix #4#) 360 435 (wr= ap-prefix #1# line-prefix #4#) 435 436 (line-spacing 0.5) 436 437 (erc-msg = msg erc-cmd PRIVMSG erc-ts 0 wrap-prefix #1# line-prefix #5=3D(space :width= (- 27 0)) display #6=3D"") 437 440 (wrap-prefix #1# line-prefix #5# displa= y #6#) 440 442 (wrap-prefix #1# line-prefix #5# display #6#) 442 466 (wrap-= prefix #1# line-prefix #5#) 466 467 (line-spacing 0.5) 467 468 (erc-msg not= ice erc-ts 0 wrap-prefix #1# line-prefix #7=3D(space :width (- 27 (4)))) 46= 8 484 (wrap-prefix #1# line-prefix #7#) 485 486 (erc-msg notice erc-ts 0 wr= ap-prefix #1# line-prefix #8=3D(space :width (- 27 (4)))) 486 502 (wrap-pre= fix #1# line-prefix #8#) 502 503 (line-spacing 0.5) 503 504 (erc-msg msg er= c-cmd PRIVMSG erc-ts 0 wrap-prefix #1# line-prefix #9=3D(space :width (- 27= (6)))) 504 507 (wrap-prefix #1# line-prefix #9#) 507 525 (wrap-prefix #1# = line-prefix #9#)) diff --git a/test/lisp/erc/resources/fill/snapshots/stamps-left-01.eld b/te= st/lisp/erc/resources/fill/snapshots/stamps-left-01.eld index cd3537d3c94..bb248ffb28e 100644 --- a/test/lisp/erc/resources/fill/snapshots/stamps-left-01.eld +++ b/test/lisp/erc/resources/fill/snapshots/stamps-left-01.eld @@ -1 +1 @@ -#("\n\n[00:00]*** This server is in debug mode and is logging all user I/O= . If you do not wish for everything you send to be readable by the server o= wner(s), please disconnect.\n[00:00] bob: come, you are a tedious fo= ol: to the purpose. What was done to Elbow's wife, that he hath cause to co= mplain of? Come me to what was done to her.\n[00:00] alice: Either you= r unparagoned mistress is dead, or she's outprized by a trifle.\n" 2 3 (erc= -msg unknown erc-ts 0 display #3=3D(#5=3D(margin left-margin) #("[00:00]" 0= 7 (invisible timestamp font-lock-face erc-timestamp-face))) field erc-time= stamp wrap-prefix #1=3D(space :width 27) line-prefix #2=3D(space :width (- = 27 (4)))) 3 9 (display #3# field erc-timestamp wrap-prefix #1# line-prefix = #2#) 9 171 (wrap-prefix #1# line-prefix #2#) 172 173 (erc-msg msg erc-ts 0 = erc-cmd PRIVMSG display #6=3D(#5# #("[00:00]" 0 7 (invisible timestamp font= -lock-face erc-timestamp-face))) field erc-timestamp wrap-prefix #1# line-p= refix #4=3D(space :width (- 27 (8)))) 173 179 (display #6# field erc-timest= amp wrap-prefix #1# line-prefix #4#) 179 180 (wrap-prefix #1# line-prefix #= 4#) 180 185 (wrap-prefix #1# line-prefix #4#) 185 187 (wrap-prefix #1# line= -prefix #4#) 187 190 (wrap-prefix #1# line-prefix #4#) 190 303 (wrap-prefix= #1# line-prefix #4#) 304 336 (wrap-prefix #1# line-prefix #4#) 337 338 (er= c-msg msg erc-ts 0 erc-cmd PRIVMSG display #8=3D(#5# #("[00:00]" 0 7 (invis= ible timestamp font-lock-face erc-timestamp-face))) field erc-timestamp wra= p-prefix #1# line-prefix #7=3D(space :width (- 27 (6)))) 338 344 (display #= 8# field erc-timestamp wrap-prefix #1# line-prefix #7#) 344 345 (wrap-prefi= x #1# line-prefix #7#) 345 348 (wrap-prefix #1# line-prefix #7#) 348 350 (w= rap-prefix #1# line-prefix #7#) 350 355 (wrap-prefix #1# line-prefix #7#) 3= 55 430 (wrap-prefix #1# line-prefix #7#)) \ No newline at end of file +#("\n\n[00:00]*** This server is in debug mode and is logging all user I/O= . If you do not wish for everything you send to be readable by the server o= wner(s), please disconnect.\n[00:00] bob: come, you are a tedious fo= ol: to the purpose. What was done to Elbow's wife, that he hath cause to co= mplain of? Come me to what was done to her.\n[00:00] alice: Either you= r unparagoned mistress is dead, or she's outprized by a trifle.\n" 2 3 (erc= -msg notice erc-ts 0 display #3=3D(#5=3D(margin left-margin) #("[00:00]" 0 = 7 (invisible timestamp font-lock-face erc-timestamp-face))) field erc-times= tamp wrap-prefix #1=3D(space :width 27) line-prefix #2=3D(space :width (- 2= 7 (4)))) 3 9 (display #3# field erc-timestamp wrap-prefix #1# line-prefix #= 2#) 9 171 (wrap-prefix #1# line-prefix #2#) 172 173 (erc-msg msg erc-ts 0 e= rc-cmd PRIVMSG display #6=3D(#5# #("[00:00]" 0 7 (invisible timestamp font-= lock-face erc-timestamp-face))) field erc-timestamp wrap-prefix #1# line-pr= efix #4=3D(space :width (- 27 (8)))) 173 179 (display #6# field erc-timesta= mp wrap-prefix #1# line-prefix #4#) 179 180 (wrap-prefix #1# line-prefix #4= #) 180 185 (wrap-prefix #1# line-prefix #4#) 185 187 (wrap-prefix #1# line-= prefix #4#) 187 190 (wrap-prefix #1# line-prefix #4#) 190 303 (wrap-prefix = #1# line-prefix #4#) 304 336 (wrap-prefix #1# line-prefix #4#) 337 338 (erc= -msg msg erc-ts 0 erc-cmd PRIVMSG display #8=3D(#5# #("[00:00]" 0 7 (invisi= ble timestamp font-lock-face erc-timestamp-face))) field erc-timestamp wrap= -prefix #1# line-prefix #7=3D(space :width (- 27 (6)))) 338 344 (display #8= # field erc-timestamp wrap-prefix #1# line-prefix #7#) 344 345 (wrap-prefix= #1# line-prefix #7#) 345 348 (wrap-prefix #1# line-prefix #7#) 348 350 (wr= ap-prefix #1# line-prefix #7#) 350 355 (wrap-prefix #1# line-prefix #7#) 35= 5 430 (wrap-prefix #1# line-prefix #7#)) --=20 2.41.0 --=-=-=--