1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-05 11:21:04 -08:00
emacs/test/lisp/erc
F. Jason Park 49bfea4386 Use templates for formatting chat messages in ERC
* doc/misc/erc.texi: Replace option `erc-format-nick-function' with
`erc-show-speaker-membership-status'.
* etc/ERC-NEWS: Mention shift to template-based speaker formatting.
Also mention in-buffer STATUSMSG support and various name changes and
new formatting-related options.
* lisp/erc/erc-backend.el (erc-format-privmessage): Remove forward
declaration.
(erc--determine-speaker-message-format-args): Add forward declaration.
(erc--statusmsg-target): New utility function for detecting whether
the current target is status-prefixed.
(erc-current-message-catalog): Move here from lisp/erc/erc.el.
(erc--message-speaker-catalog): New variable.
(erc--speaker-status-prefix-wanted-p): New variable specifically for
the function `erc-format-@nick' to signal it wants status-prefixes
prepended to the displayed nick.
(erc-server-PRIVMSG): Initialize `let'-bound value of
`erc--msg-prop-overrides' to a dummy `erc--tmp' property with a null
value that `erc-display-message' will "strip" before calling its
hooks.  Move away from the rather blunt symbol `msg' as a useful value
for `erc--msg'.  Instead, allow `erc-display-message' to assign the
most appropriate value based on context.  Also, bind the variable
`erc-current-message-catalog' to whatever the buffer's
`erc--message-speaker-catalog' happens to be.  Future internal modules
can set this to alternative catalogs as needed.  Additionally, detect
STATUSMSG prefixes on targets and inform the formatting logic of the
verdict.  Lastly, and most importantly, use the function
`erc--determine-speaker-message-format-args' instead of
`erc-format-privmessage' for message formatting.  Pass along the
returned "catalog key" and spec parameters to `erc-display-message'.
However, for NOTICEs, continue to render the string, as before, for
the two "echo notice" hooks.
* lisp/erc/erc-common.el (erc--ctcp-response): New "subsclass" of
`erc-response' for smuggling extra information to CTCP query handlers
in a mostly backwards-compatible way.  The same approach could be
taken with the "echo notice" hooks mentioned above.
* lisp/erc/erc-dcc.el (erc-dcc-chat-filter): Add `erc--spkr' and
`erc--speaker' properties even though these chat buffers are not
`erc-mode' buffers.
* lisp/erc/erc-fill.el (erc-fill--wrap-last-msg,
erc-fill--wrap-max-lull): Add doc strings.
(erc-fill--wrap-continued-message-p): Rework to look for `erc--spkr'-
`erc--msg' combinations as indicators of speaker continuity.
(erc-fill--wrap-rejigger-region): Remove reference to the no longer
relevant `erc-stamp-type'.  Instead, use the `erc--msg' property
combined with the `erc-timestamp' field to detect date stamps because
all are currently left-sided.
* lisp/erc/erc-stamp.el (erc-stamp--propertize-left-date-stamp): Don't
add superfluous `erc-stamp-type' property.
* lisp/erc/erc.el (erc--msg-props): Revise purpose and meaning of
`erc--msg' by removing possible value `msg', which was previously
meant to indicate that a message had a "speaker".  Instead, rely on
the separate `erc--spkr' property to convey this information, with
`erc--msg' now expressing a "type" or "role".
(erc--use-language-catalog-for-ctcp-action-p): New variable, a
compatibility switch to help transition from the `ACTION' entry of the
language catalog to the `ctcp-action' family of entries in the new
`-speaker' catalog.
(erc--ensure-spkr-prop): Update to include any passed-in environmental
overrides.
(erc--send-action-display): Restore pre-5.6 behavior when
compatibility flag enabled.  Otherwise, use new `-speaker' catalog for
formatting inserted message.
(erc--send-message-external): Overhaul to behave more faithfully in
mimicking a line submitted at the prompt of the current target buffer.
(erc--own-property-names): Remove `erc-stamp-type'.
(erc-ensure-target-buffer-on-privmsg): Add new choice variant for old
default behavior and change meaning of default to mean "except for
STATUSMSGs".  This option is newly revived for ERC 5.6.
(erc--message-speaker-statusmsg, erc--message-speaker-statusmsg-input,
erc--message-speaker-input, erc--message-speaker-input-chan-privmsg,
erc--message-speaker-input-chan-notice,
erc--message-speaker-input-query-privmsg,
erc--message-speaker-input-query-notice,
erc--message-speaker-chan-privmsg, erc--message-speaker-query-privmsg,
erc--message-speaker-chan-notice, erc--message-speaker-query-notice,
erc--message-speaker-ctcp-action,
erc--message-speaker-ctcp-action-input,
erc--message-speaker-ctcp-action-statusmsg,
erc--message-speaker-ctcp-action-statusmsg-input): New variables for
new `speaker' format-template catalog.
(erc--speakerize-nick): New helper function.
(erc--determine-speaker-message-format-args): New function to find the
appropriate format key from various contextual parameters.  Could
become the default of a function-valued variable for internal use.
(erc-show-speaker-membership-status): New option.
(erc-format-nick-function, erc-speaker-from-channel-member-function):
Declare former as an obsolete alias for the latter, and redefine
purpose slightly.
(erc-format-nick-function, erc-determine-speaker-from-user): Rename
former to latter and obsolete the old name.
(erc-format-nick, erc-determine-speaker-from-user): Rename former to
latter and obsolete old name.
(erc-format-@nick): Deprecate and adapt for use with new
template-based formatting paradigm.
(erc-format-my-nick): Move `erc-speaker' text prop toward head of
list, meaning it will end up beneath `font-lock-face' in the final
output.
(erc--format-speaker-input-message): New function to replace
`erc-format-my-nick' in-tree.
(erc-process-ctcp-query): Don't bind `erc--msg' to `msg'.  Instead,
rely on `erc-display-message' to set it to the current template key.
(erc-ctcp-query-ACTION): Prefer using formatting template, but attempt
to simulate pre-5.6 behavior when compatibility flag enabled.
(erc-display-msg): Use `erc--format-speaker-input-message' instead of
`erc-format-my-nick'.  Ignore `erc--msg-prop-overrides' with null
values.
(erc-current-message-catalog): Move to erc-backend.el.
* test/lisp/erc/erc-scenarios-base-statusmsg.el: New file.
* test/lisp/erc/erc-scenarios-stamp.el
(erc-scenarios-stamp--left/display-margin-mode): Expect format catalog
key instead of unhelpful `msg' as value of `erc--msg' prop.
* test/lisp/erc/erc-tests.el (erc-message): Render format template in
mock function and expect string in assertions.
(erc-tests--format-privmessage): New function, a helper for the
following test.
(erc-format-privmessage, erc--determine-speaker-message-format-args):
Rename former to latter and suppress deprecation warning.
(erc--determine-speaker-message-format-args/queries,
erc--determine-speaker-message-format-args/queries-as-channel): New
tests.
(erc-tests--format-my-nick): New helper function for the following
test.
(erc--format-speaker-input-message): New test.
* test/lisp/erc/resources/base/display-message/statusmsg.eld: New
file.  (Bug#67677)
; * test/lisp/erc/resources/fill/snapshots/merge-wrap-01.eld: Update.
; * test/lisp/erc/resources/fill/snapshots/merge-wrap-indicator-post-01.eld:
; Update.
; * test/lisp/erc/resources/fill/snapshots/merge-wrap-indicator-pre-01.eld:
; Update.
2023-12-17 20:17:55 -08:00
..
resources Use templates for formatting chat messages in ERC 2023-12-17 20:17:55 -08:00
erc-button-tests.el Ignore erc-response objects in error-notice helper 2023-08-25 14:47:07 -07:00
erc-dcc-tests.el Fix command-line parsing regression in erc-cmd-DCC 2023-07-13 18:45:31 -07:00
erc-fill-tests.el Add erc--spkr text property to chat messages 2023-12-17 20:17:55 -08:00
erc-goodies-tests.el Decouple keep-place-indicator from global ERC module 2023-07-13 18:45:31 -07:00
erc-join-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
erc-match-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
erc-networks-tests.el Prefer erc-target to erc-default-target 2023-10-20 15:24:06 -07:00
erc-nicks-tests.el Offer alternate pool-creation strategies in erc-nicks 2023-11-12 20:37:48 -08:00
erc-sasl-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
erc-scenarios-auth-source.el ; Mark test for erc--update-channel-modes as :unstable 2023-11-25 15:59:58 -08:00
erc-scenarios-base-association-nick.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
erc-scenarios-base-association-query.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
erc-scenarios-base-association-samenet.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
erc-scenarios-base-association.el ; Attempt to fix race in erc-buffer-display test 2023-11-01 16:14:10 -07:00
erc-scenarios-base-attach.el ; Fix typos 2023-12-10 13:22:04 +01:00
erc-scenarios-base-auto-recon.el Add probing erc-server-reconnect-function variant 2023-04-08 14:23:50 -07:00
erc-scenarios-base-buffer-display.el ; Mark test for erc--update-channel-modes as :unstable 2023-11-25 15:59:58 -08:00
erc-scenarios-base-chan-modes.el Favor ISUPPORT params for MODE processing in ERC 2023-11-18 12:34:56 -08:00
erc-scenarios-base-compat-rename-bouncer.el ; Fix filename mismatches in prop lines of ERC tests 2023-01-24 20:15:18 -08:00
erc-scenarios-base-local-module-modes.el Refactor marker initialization in erc-open 2023-04-08 14:23:51 -07:00
erc-scenarios-base-local-modules.el Refactor marker initialization in erc-open 2023-04-08 14:23:51 -07:00
erc-scenarios-base-misc-regressions.el Add test for erc-cmd-SQUERY 2023-11-18 12:34:56 -08:00
erc-scenarios-base-netid-bouncer-id.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
erc-scenarios-base-netid-bouncer-recon-base.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
erc-scenarios-base-netid-bouncer-recon-both.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
erc-scenarios-base-netid-bouncer-recon-id.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
erc-scenarios-base-netid-bouncer.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
erc-scenarios-base-netid-samenet.el ; Fix filename mismatches in prop lines of ERC tests 2023-01-24 20:15:18 -08:00
erc-scenarios-base-reconnect.el Sequester some special-variable declarations in ERC 2023-12-17 20:17:54 -08:00
erc-scenarios-base-renick.el Sequester some special-variable declarations in ERC 2023-12-17 20:17:54 -08:00
erc-scenarios-base-reuse-buffers.el Prefer erc-target to erc-default-target 2023-10-20 15:24:06 -07:00
erc-scenarios-base-send-message.el Revive erc-command-indicator as new module 2023-11-12 20:37:49 -08:00
erc-scenarios-base-split-line.el Redo line splitting for outgoing messages in ERC 2023-05-05 17:18:01 -07:00
erc-scenarios-base-statusmsg.el Use templates for formatting chat messages in ERC 2023-12-17 20:17:55 -08:00
erc-scenarios-base-unstable.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
erc-scenarios-base-upstream-recon-soju.el ; Fix filename mismatches in prop lines of ERC tests 2023-01-24 20:15:18 -08:00
erc-scenarios-base-upstream-recon-znc.el ; Fix filename mismatches in prop lines of ERC tests 2023-01-24 20:15:18 -08:00
erc-scenarios-display-message.el Double hyphenate internal ERC 5.6 text props 2023-12-17 20:17:54 -08:00
erc-scenarios-internal.el ; Prevent ERC-induced false positive in JUnit report 2023-02-15 08:34:04 -08:00
erc-scenarios-join-auth-source.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
erc-scenarios-join-display-context.el Allow custom display-buffer actions in ERC 2023-07-13 18:45:31 -07:00
erc-scenarios-join-netid-newcmd-id.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
erc-scenarios-join-netid-newcmd.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
erc-scenarios-join-netid-recon-id.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
erc-scenarios-join-netid-recon.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
erc-scenarios-log.el ; Mark erc-log test as :unstable 2023-10-20 14:53:23 -07:00
erc-scenarios-match.el Double hyphenate internal ERC 5.6 text props 2023-12-17 20:17:54 -08:00
erc-scenarios-misc-commands.el Add erc-server-396 response handler 2023-12-17 20:17:54 -08:00
erc-scenarios-misc.el ; Mark test for erc--update-channel-modes as :unstable 2023-11-25 15:59:58 -08:00
erc-scenarios-prompt-format.el Optionally allow substitution patterns in erc-prompt 2023-11-24 13:38:52 -08:00
erc-scenarios-sasl.el Split overlong outgoing messages in erc-sasl 2023-04-08 14:23:50 -07:00
erc-scenarios-scrolltobottom-relaxed.el Skip post-minibuffer restore in erc-scrolltobottom-all 2023-10-13 07:47:00 -07:00
erc-scenarios-scrolltobottom.el ; Increase ERC test server queue size 2023-10-02 17:26:27 -07:00
erc-scenarios-services-misc.el Redo erc-nickname-in-use-functions as a local module 2023-07-01 07:21:30 -07:00
erc-scenarios-stamp.el Use templates for formatting chat messages in ERC 2023-12-17 20:17:55 -08:00
erc-scenarios-status-sidebar.el Prevent unwanted recursion in erc-nickbar-disable 2023-08-25 14:47:07 -07:00
erc-services-tests.el Make auth-source erc-services tests more readable 2023-04-08 14:23:51 -07:00
erc-stamp-tests.el Double hyphenate internal ERC 5.6 text props 2023-12-17 20:17:54 -08:00
erc-tests.el Use templates for formatting chat messages in ERC 2023-12-17 20:17:55 -08:00
erc-track-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00