aboutsummaryrefslogtreecommitdiffstats
path: root/test/lisp/erc (follow)
Commit message (Collapse)AuthorAgeFilesLines
* ; Don't use cl-letf with generic function in ERC testF. Jason Park45 hours2-81/+82
| | | | | | | | | * test/lisp/erc/erc-tests.el (erc--update-channel-modes): Use advice instead. See 058bac45 "cl-generic.el: Avoid an O(N^2) behavior". (Bug#80175) * test/lisp/erc/resources/erc-d/erc-d-tests.el (erc-d-tests--start-server): Increase timeout to hopefully address anomalous EMBA failure. Unrelated to cited bug.
* Use seq-doseq for iterating over strings in ERCF. Jason Park45 hours1-13/+0
| | | | | | | * lisp/erc/erc-common.el (erc--doarray): Remove unused function. * lisp/erc/erc.el (erc--channel-mode-types, erc--process-channel-modes) (erc--parse-user-modes): Replace `erc--doarray' with `seq-doseq'. * test/lisp/erc/erc-tests.el (erc--doarray): Remove test.
* ; Add 2026 to copyright years.Sean Whitton12 days78-78/+78
|
* December 2025 spelling fixesPaul Eggert2025-12-263-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some of the fixes are to continue to use American rather than British spelling. * doc/misc/modus-themes.org (my-modus-themes-engraved-faces): Fix misspelled ‘:foreground’s. * etc/themes/modus-themes.el (modus-themes-faces): Fix misspelled ‘modus-themes-bold’. * lisp/emacs-lisp/rx.el (rx--normalize-char-pattern): Rename from rx--normalise-char-pattern. (rx--optimize-or-args): Rename from rx--optimise-or-args. * lisp/frame.el (frame--special-parameters): Fix misspelled "right-divider-width". * lisp/net/tramp.el (tramp-fingerprint-prompt-regexp): Use American spelling “centered”, to match current libfprintf. * lisp/org/org-fold-core.el (org-fold-core--optimize-for-huge-buffers): Rename from org-fold-core--optimise-for-huge-buffers. (org-fold-core-update-optimization): Rename from org-fold-core-update-optimisation, leaving an alias behind. (org-fold-core-remove-optimization): Rename from org-fold-core-remove-optimisation, leaving an alias behind. * lisp/org/org.el (org-advertized-archive-subtree): This alias is now obsolete. * lisp/play/zone.el (zone-ignored-buffers): Fix misspelling of ‘zone--buffer-encrypted-p’. * lisp/progmodes/csharp-mode.el (csharp-ts-mode-faces): Fix misspelling of ‘csharp’ group. * lisp/vc/vc.el (vc-clonable-backends-custom-type): Rename from vc-cloneable-backends-custom-type, leaving an alias behind. * test/lisp/emacs-lisp/bytecomp-tests.el: (bytecomp-tests--warn-arity-non-compiled-callee): Rename from bytecomp-tests--warn-arity-noncompiled-callee. (bytecomp-test-defface-spec): Reword a deliberate misspelling of “default” that is so common I don’t want it to pollute the spelling dictionary. * test/lisp/emacs-lisp/package-vc-tests.el: (package-vc-tests-preserve-artifacts): Rename from package-vc-tests-preserve-artifacts. * test/lisp/eshell/em-prompt-tests.el: (em-prompt-test/forward-backward-paragraph-1): Reword a deliberate misspelling of “goodbye” that is so common I don’t want it to pollute the spelling dictionary.
* ; Tweak failing autojoin display-context test for ERCF. Jason Park2025-12-173-17/+46
| | | | | | | | | | | | | | * test/lisp/erc/erc-scenarios-join-display-context.el (erc-scenarios-join-display-context--errors): Attempt to indirectly fix a reoccurring failure on EMBA. Instead of asserting the membership of `erc-join--requested-channels', have the client attempt to manually join an autojoined channel previously denied by an error response. But this time assert that the display context for the now successfully joined channel doesn't indicate it originated from the autojoin module. * test/lisp/erc/resources/base/gapless-connect/barnet.eld: Increase timeout. * test/lisp/erc/resources/join/buffer-display/mode-context.eld: Update accordingly.
* ; Skip erc-keep-place-indicator test on Emacs 27F. Jason Park2025-11-022-4/+5
| | | | | | | | | | * test/lisp/erc/erc-scenarios-base-reuse-buffers.el (erc-scenarios-common--base-reuse-buffers-channel-buffers): Extend some timeouts. * test/lisp/erc/erc-scenarios-keep-place-indicator.el (erc-scenarios-keep-place-indicator--follow): Prefer `ert-skip' here instead of an :unstable tag because ERC's tests can run locally on some systems with "SELECTOR=t".
* Fix regression involving erc-channel-user accessorsF. Jason Park2025-10-271-1/+157
| | | | | | | | | | | | | | | | | | | | | | | | | * etc/ERC-NEWS: New section for ERC 5.6.2 and new entry mentioning slight change in `erc-channel-user' accessor behavior. * lisp/erc/erc-common.el (erc-channel-user): Change type for status slot to natnum from integer. * lisp/erc/erc.el (erc-channel-user-signal-if-status-unknown): New variable. (erc--define-channel-user-status-compat-getter): Only use fallback in Non-ERC buffers because "obviously" a status flag is unusable if the server doesn't advertise it or, rather, advertises nonsupport via its absence. This regression was introduced in ERC 5.6. (erc-channel-begin-receiving-names): Sharp-quote function name. (erc--get-prefix-flag): Mention in doc that a return value of nil can also mean the status flag is not supported by the server. * test/lisp/erc/erc-tests.el (erc--parsed-prefix): Show that it returns nil in a non-ERC buffer. (erc-tests--make-combinations) (erc-tests--with-channel-user-status-accessors): New functions. (erc-channel-user/status-accessors/solo/default) (erc-channel-user/status-accessors/solo/ov) (erc-channel-user/status-accessors/multi/default) (erc-channel-user/status-accessors/multi/ov): New tests. (Bug#67220)
* ; Prefer EMACS_EMBA_CI for selecting ERC testsF. Jason Park2025-10-223-3/+6
| | | | | | | | | * test/lisp/erc/erc-scenarios-keep-place-indicator.el (erc-scenarios-keep-place-indicator--follow): * test/lisp/erc/erc-stamp-tests.el (erc-echo-timestamp): * test/lisp/erc/erc-tests.el (erc--channel-modes): Use "EMACS_EMBA_CI" for EMBA-specific test selection instead of "CI", which is a Gitlab "predefined" variable absent from .job-template's Docker subprocess.
* ; Remove unwanted noise from ERC test outputF. Jason Park2025-10-217-47/+77
| | | | | | | | | | | | | | | | | | | | | | | | | | | Omit newlines and other stray chars, such as "^G", from log output when running tests for ERC non-interactively. * test/lisp/erc/erc-match-tests.el (erc-add-entry-to-list, erc-pals) (erc-fools, erc-keywords, erc-dangerous-hosts): Make `inhibit-message' non-nil when `noninteractive'. * test/lisp/erc/erc-sasl-tests.el (erc-sasl--read-password--basic): Make `inhibit-message' non-nil when `noninteractive'. * test/lisp/erc/erc-scenarios-base-buffer-display.el (erc-scenarios-base-buffer-display--interactive-default): Make `inhibit-message' non-nil when `noninteractive'. * test/lisp/erc/erc-scenarios-services-misc.el (erc-scenarios-services-prompt): Make `inhibit-message' non-nil when `noninteractive'. * test/lisp/erc/erc-services-tests.el (erc-nickserv-get-password): Make `inhibit-message' non-nil when `noninteractive'. * test/lisp/erc/erc-stamp-tests.el (erc-timestamp-intangible--left): Make `inhibit-message' non-nil when `noninteractive'. * test/lisp/erc/erc-tests.el (erc-cmd-UNIGNORE, erc-hide-prompt) (erc--check-prompt-input-for-excess-lines, erc-select-read-args, erc-tls) (erc--interactive, erc-server-select): Make `inhibit-message' non-nil when `noninteractive'. (erc--modify-local-map): Inhibit call to `ding' because it inserts an 07 char, which shows up in the test result logs.
* Remove scrolltobottom dependency from erc-fill moduleF. Jason Park2025-08-252-2/+0
| | | | | | | | | | | | | | | This mostly reverts 9668b4f97c2fc6bfff83258861d455a6d02516a8 "Make erc-fill-wrap depend on scrolltobottom". * etc/ERC-NEWS: Mention removal of formal dependency. * lisp/erc/erc-fill.el (erc-fill--wrap-scrolltobottom-exempt-p): Remove unused variable. (erc-fill--wrap-ensure-dependencies): Remove unused dependency check. (erc-fill-wrap-mode): Remove scrolltobottom dependency from doc string. * test/lisp/erc/erc-fill-tests.el (erc-fill-tests--wrap-populate): Remove unused binding from var list. * test/lisp/erc/resources/erc-scenarios-common.el (erc-scenarios-common--make-bindings): Remove unused binding.
* ; Make erc-autojoin-channels-delayed tests more robustF. Jason Park2025-08-031-21/+23
| | | | | | * test/lisp/erc/erc-join-tests.el (erc-join-tests--autojoin-channels-ident): Be more flexible in checking assertion. (Bug#79017)
* ; Adjust sleep-for in erc-autojoin-channels testsF. Jason Park2025-07-291-3/+2
| | | | | | | | * test/lisp/erc/erc-join-tests.el (erc-join-tests--autojoin-channels-ident): A `sleep-for' value of 0.01 caused associated tests to fail on at least one setup involving Solaris 10. The new value is arbitrary and possibly temporary, pending further investigation. (Bug#79017)
* Redo erc-nicks track integration tests as scenariosF. Jason Park2025-07-274-275/+517
| | | | | | | | | | * test/lisp/erc/erc-nicks-tests.el (erc-nicks-tests--track-faces): Remove unused function. (erc-nicks-track-faces/prioritize, erc-nicks-track-faces/defer) (erc-nicks-track-faces/nil, erc-nicks-track-faces/t): Remove tests. * test/lisp/erc/erc-scenarios-nicks-track.el: New file. * test/lisp/erc/resources/nicks/track-prioritize.eld: New file. * test/lisp/erc/resources/nicks/track-t.eld: New file. (Bug#76188)
* Cancel ERC autojoin timer in the server bufferF. Jason Park2025-07-276-326/+487
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/erc/erc-join.el (erc-autojoin-channels-delayed): Only cancel `erc--autojoin-timer' in the server buffer in which it's local. After Emacs 28 brought commit fc66ec33226aeed0b745356363ed952c8ff1f7fd "Prefer defvar-local in erc", customizing `erc-autojoin-timing' to `ident' led to ERC emitting redundant JOINs before `erc-autojoin--join' was factored out. Additionally, don't bother binding options around the call to `erc-autojoin-channels' to shape its behavior, preferring instead to call the internal workhorse function directly. Ever since bug#5521 introduced those options, the logic in `erc-autojoin-channels' has ignored `erc-autojoin-delay' anyway, so long as `erc-autojoin-timing' isn't `ident'. This change may break third party advice. (erc-autojoin-after-ident): Restore code to cancel timer. It was erroneously deleted in 959fbcf34b5dd04e1b4bf87c0b73afd784a41f7f "favor network identities in erc-join". * test/lisp/erc/erc-join-tests.el: Require erc-tests-common atop file so tests can take advantage of common utilities. (erc-autojoin-channels--connect): Replace with a function and three separate tests. (erc-join-tests--autojoin-channels-connect): New function. (erc-autojoin-channels/server, erc-autojoin-channels/network) (erc-autojoin-channels/nomatch): New tests. (erc-autojoin-channels--delay): Replace with a function and three separate tests. Remove guard to skip test on Solaris. (erc-join-tests--autojoin-channels-ident): New function. (erc-autojoin-channels-delayed/server) (erc-autojoin-channels-delayed/network) (erc-autojoin-channels-delayed/nomatch): New tests. (erc-autojoin-channels--ident): Replace with function and two separate tests. (erc-join-tests--autojoin-after-ident): New function. (erc-autojoin-after-ident/server) (erc-autojoin-after-ident/network): New tests. (erc-join-tests--autojoin-add--common) (erc-join-tests--autojoin-add): Rename former to latter. (erc-autojoin-add--network) (erc-autojoin-add--network-extended-syntax) (erc-autojoin-add--network-id): Adjust arguments to fixture. (erc-autojoin-add--server): Use common utils. (erc-join-tests--autojoin-remove--common) (erc-join-tests--autojoin-remove): Rename former to latter. (erc-autojoin-remove--network) (erc-autojoin-remove--network-id): Adjust args for fixture. (erc-autojoin-remove--server): Use common utils. * test/lisp/erc/erc-scenarios-join-timing.el: New file. * test/lisp/erc/resources/erc-scenarios-common.el (erc-scenarios-common--run-in-term): In subprocess, don't use failure tally as exit status unless body form succeeds. * test/lisp/erc/resources/erc-tests-common.el (erc-tests-common-init-server-proc): Use `make-process' instead of `start-process'. (erc-tests-common-make-server-buf): Use `erc-server-current-nick' to create the `erc-networks--id' as a `erc-networks--id-qualifying' instance, which is more realistic than a "fixed" variant. * test/lisp/erc/resources/join/timing/connect-both.eld: New file. * test/lisp/erc/resources/join/timing/ident-both.eld: New file. (Bug#79017)
* ; Skip erc-autojoin-channels--delay test on SolarisF. Jason Park2025-07-161-0/+3
| | | | | | * test/lisp/erc/erc-join-tests.el (erc-autojoin-channels--delay): Skip for now on Solaris and UnixWare pending further investigation. (Bug#79017)
* Don't round-trip auto-reconnect probe in ERCF. Jason Park2025-04-162-12/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/erc/erc-backend.el (erc-server--reconnect-opened) (erc--server-reconnect-opened): Rename former to latter. Restore original buffer-local value of session connector for Emacs 29 and below. (erc--server-reconnect-timeout-check) (erc--server-reconnect-timeout-scale-function): Change from buffer-local to normal variables, which they should have been originally. (erc--recon-probe-reschedule): Ensure `erc-server-reconnect-timeout' is always non-nil to avoid seeing format specifier in admin message. Use current buffer when `proc' argument is nil. Perform cleanup when `proc' and `erc-server-process' differ. (erc-server-delayed-check-reconnect-reuse-process-p): New variable. (erc--recon-probe-sentinel): Run `erc--server-reconnect-opened' immediately because sending a speculative PING doesn't work on all servers and proxies, most crucially on ZNC, which replies with an error only after an extended timeout. (erc--recon-probe-filter): Remove unused function. (erc--recon-probe-check) Rework to not use fixed periodic timer, change second parameter to a Lisp time object. (erc-server-delayed-check-reconnect): Use realistic name when reusing process so that the session's process isn't "*erc-connectivity-check*". Set filter to `ignore'. Always run `erc--recon-probe-sentinel' when status is `open' or something other than `connect', but don't bother spawning a `erc--recon-probe-check' task as well because any problems creating the process should already be known. Handle quits during connect functions that perform blocking I/O, such as `socks-open-network-stream'. (erc-schedule-reconnect): Don't bother setting filter to nil. * test/lisp/erc/erc-scenarios-base-auto-recon.el (erc-scenarios-base-auto-recon-unavailable) (erc-scenarios-base-auto-recon-check/no-reuse): Rename former to latter. (erc-scenarios-base-auto-recon-no-proto) (erc-scenarios-base-auto-recon-check/reuse): Rename former to latter and rewrite not to expect a PING. * test/lisp/erc/resources/erc-d/erc-d.el (erc-d--forget-process): New function. (erc-d--process-sentinel): Stop serving when all dialogs have been exhausted. (Bug#62044)
* ; Don't assume snapshot exists in ERC test helperF. Jason Park2025-04-165-12/+15
| | | | | | | | | | | | | | * test/lisp/erc/erc-scenarios-base-association.el (erc-scenarios-common--base-association-multi-net): Increase timeout. * test/lisp/erc/erc-scenarios-base-compat-rename-bouncer.el (erc-scenarios-common--base-compat-no-rename-bouncer): Increase timeout. * test/lisp/erc/erc-scenarios-keep-place-indicator.el (erc-scenarios-keep-place-indicator--follow): Skip in CI. * test/lisp/erc/resources/erc-d/resources/incremental.eld: Increase timeout. * test/lisp/erc/resources/erc-tests-common.el (erc-tests-common-snapshot-compare): Forgo inserting file if generating snapshot interactively because it may not yet exist.
* Suppress log module when inserting date stamps in ERCF. Jason Park2025-03-111-19/+97
| | | | | | | | | | | | | | | | | * lisp/erc/erc-log.el (erc-truncate-buffer-on-save): Use `make-obsolete-variable' because `erc-truncate-buffer-on-save' is an option, not a function. Already mentioned in etc/ERC-NEWS. (erc-logging-enabled): Return nil if `log' appears in the `erc--skip' msg prop. * lisp/erc/erc-stamp.el (erc-stamp--defer-date-insertion-on-post-modify): Add `log' to `erc--skip' msg prop. This tells the log module to defer advancing the `erc-last-saved-position' marker until after stamps have been inserted, thus ensuring they're included in logs when `erc-log-write-after-insert' is non-nil. * test/lisp/erc/erc-scenarios-log.el (erc-scenarios-log--save-buffer-in-logs/truncate-on-save): Suppress warning for `erc-truncate-buffer-on-save'. (erc-scenarios-log--write-after-insert): New test. (Bug#76875)
* ; Use ert-skip instead of skip-when in erc-match testF. Jason Park2025-03-042-2/+4
| | | | | | | | | * test/lisp/erc/erc-match-tests.el (erc-add-entry-to-list): The local macro `skip-when' first appeared in Emacs 30, but ERC supports Emacs 27+ and runs its test suite on all supported versions. * test/lisp/erc/erc-scenarios-keep-place-indicator.el (erc-scenarios-keep-place-indicator--follow): Temporarily tag as :unstable in all CI environments.
* ; Adapt another test to AndroidPo Lu2025-03-031-0/+2
| | | | | * test/lisp/erc/erc-match-tests.el (erc-add-entry-to-list): Skip on Android as it hangs for reasons unknown.
* ; Adapt more tests for AndroidPo Lu2025-03-021-1/+4
| | | | | | | | | | | * test/infra/android/test-controller.el (ats-eval): Document new values of ats-eval. (ats-run-test): Report conditions where tests induce Emacs to exit. * test/lisp/erc/resources/erc-tests-common.el (erc-tests-common-kill-buffers): Bind kill-buffer-query-functions to nil.
* ; Tag all erc-nicks-track-faces tests as :unstableF. Jason Park2025-02-241-1/+6
| | | | | | | | | | * test/lisp/erc/erc-nicks-tests.el (erc-nicks-track-faces/prioritize): Tag as :unstable, regardless of environment, pending further investigation. This has reportedly failed on Emacs 31 and Emacs 28. (erc-nicks-track-faces/defer, erc-nicks-track-faces/nil): Tag as :unstable even though there haven't been any reported failures as yet. (erc-nicks-track-faces/t): Likewise. This test has failed on Emacs 31 on a GitLab.com runner. (Bug#76188)
* ; Mark erc-nicks test as :unstableF. Jason Park2025-02-101-0/+2
| | | | | * test/lisp/erc/erc-nicks-tests.el (erc-nicks-track-faces/prioritize): Mark as :unstable outside of EMBA and ERC's own CI. (Bug#76188)
* ; Make ERC test fixture more robustF. Jason Park2025-02-072-22/+35
| | | | | | | | | * test/lisp/erc/erc-tests.el (erc-tests--assert-printed-in-subprocess): Scan for sentinel before reading. (erc--find-mode, erc--essential-hook-ordering): Use contrived :result protocol expected by `erc-tests--assert-printed-in-subprocess'. * test/lisp/erc/resources/erc-tests-common.el (erc-tests-common-create-subprocess): Divert stderr to messages buffer.
* More clearly define local module behavior in ERCF. Jason Park2025-02-071-5/+11
| | | | | | | | | | | | | | | | | | | | | | * doc/misc/erc.texi (Modules): Label all local modules as being such. Move `querypoll' to the auxiliary section. Rework entire "Local Modules" portion. * lisp/erc/erc-goodies.el (erc-keep-place-indicator-mode) (erc-command-indicator-mode): Mention what buffer types they operate in. * lisp/erc/erc-nicks.el (erc-nicks-mode): Mention the mode is enabled in all buffers. * lisp/erc/erc-notify.el (erc-querypoll-mode): Mention which buffers it operates in. * lisp/erc/erc-sasl.el (erc-sasl-mode): Disable completely in target buffers so its mode variable is nil. * lisp/erc/erc-services.el (erc-services-regain-mode): Disable in target buffers. * lisp/erc/erc.el (erc-open): When activating local modules, skip those that have just been enabled by a fellow module. Do this even though their setup code is meant to be idempotent. * test/lisp/erc/erc-scenarios-base-local-modules.el (erc-scenarios-base-local-modules--toggle-helpers): Revise to assert current behavior. (Bug#57955)
* Run erc-services-regain-mode callback on a timerF. Jason Park2025-02-022-0/+67
| | | | | | | | | | | | | * lisp/erc/erc-services.el (erc-services-regain-timeout-seconds): New variable. (erc-services-regain-mode): Mention CertFP in doc string. (erc--nickname-in-use-make-request): Ensure the 900 RPL_LOGGEDIN callback always runs after `erc-services-regain-timeout-seconds', even when SASL isn't being used. * test/lisp/erc/erc-scenarios-services-misc.el (erc-scenarios-services-misc--regain-command/oftc): New test. * test/lisp/erc/resources/services/regain/taken-regain-oftc.eld: New file.
* ; Don't quote localp argument to define-erc-moduleF. Jason Park2025-01-222-1/+4
| | | | | | | | | | | | | | | | * etc/ERC-NEWS: Rearrange some entries for 5.6.1. * lisp/erc/erc-fill.el (erc-fill-wrap-mode): * lisp/erc/erc-goodies.el (erc-keep-place-indicator-mode) (erc-command-indicator-mode): * lisp/erc/erc-nicks.el (erc-nicks-mode): * lisp/erc/erc-notify.el (erc-querypoll-mode): * lisp/erc/erc-sasl.el (erc-sasl-mode): * lisp/erc/erc-services.el (erc-services-regain-mode): Don't quote localp argument. * test/lisp/erc/erc-scenarios-misc.el (erc-nicks-track-faces/defer): Skip on Emacs 27 due to recent CI failures. * test/lisp/erc/erc-scenarios-misc.el (erc-scenarios-base-flood): Adjust timeout.
* ; Mark ERC keep-place-indicator test as :unstableF. Jason Park2025-01-071-0/+1
| | | | | | * test/lisp/erc/erc-scenarios-keep-place-indicator.el (erc-scenarios-keep-place-indicator--follow): Don't run on EMBA pending investigation of test timing out.
* Improve use of Flyspell's API in erc-spellingF. Jason Park2025-01-072-0/+135
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * etc/ERC-NEWS: Announce deprecation of `erc-spelling-flyspell-verify' and `erc-spelling-unhighlight-word'. A slight behavioral change not worth mentioning is that, previously, ERC arranged for Flyspell to ignore any word immediately following a forward slash anywhere in the prompt input, even those for which the slash served as mere punctuation (a "stroke"), as in "something/misspelt." As of this change, Flyspell only unconditionally exempts an initial slash-prepended word, like "tableflip" in "ERC> /tableflip", and checks all others that follow against known slash commands. * lisp/erc/erc-spelling.el: Change top-level assignment of `erc-mode' symbol-property `flyspell-mode-predicate' from `erc-spelling-flyspell-verify' to `erc-spelling--flyspell-input-p'. (erc-spelling-mode, erc-spelling-disable): Remove local member from `flyspell-incorrect-hook'. (erc-spelling-init): Add `erc-spelling--flyspell-check' to `flyspell-incorrect-hook' locally. Don't bother explicitly setting `flyspell-generic-check-word-predicate' because Flyspell already does that for clients using the `flyspell-mode-predicte' interface. (erc-spelling-flyspell-verify, erc-spelling-unhighlight-word): Mark obsolete. (erc-spelling--flyspell-check, erc-spelling--flyspell-input-p): New functions, essentially the two halves of a reworked and bifurcated `erc-spelling-flyspell-verify'. Though used as a predicate, the first is not named as such because it performs side effects. * test/lisp/erc/erc-scenarios-spelling.el: New file. * test/lisp/erc/resources/spelling/auto-correct.eld: New file. (Bug#75327)
* Fix regression in erc-nicks involving color poolsF. Jason Park2025-01-071-0/+1
| | | | | | | | | | | | | * lisp/erc/erc-nicks.el (erc-nicks-colors): Tweak doc. (erc-nicks--create-pool-function): On graphic displays, set value to `erc-nicks--create-culled-pool', the original default. This fixes a bug in which ERC mapped all pool members to a primary color, thus excluding the bulk of them. Thanks to Trevor Arjeski for discovering it. (erc-nicks--create-coerced-pool): Mention the text-terminal-only requirement in doc. (erc-nicks-refresh): Improve doc. * test/lisp/erc/erc-nicks-tests.el (erc-nicks-tests--track-faces): Enable `erc-track-mode' prior to running body.
* Update copyright year to 2025Paul Eggert2025-01-0175-75/+75
| | | | Run "TZ=UTC0 admin/update-copyright".
* Reuse process in erc-server-delayed-check-reconnectF. Jason Park2024-12-274-17/+4
| | | | | | | | | | | | | | | | | | | | | | | | | * doc/misc/erc.texi (Integrations): Set `erc-server-reconnect-function' to `erc-server-delayed-check-reconnect' in SOCKS example, and add definition for `erc-open-socks-tls-stream'. Mention possible inaccuracies related to error detection with certain reconnect strategies. * lisp/erc/erc-backend.el (erc-server--reconnect-opened): New function. (erc-server-delayed-check-reconnect): Attempt to reuse process if server sends a complete PONG, and attempt to accommodate connectors that set :nowait to nil. (erc--server-delayed-check-connectors): Remove variable. (erc-server-prefer-check-reconnect): Inline what was the internal variable `erc--server-delayed-check-connectors' because it's no longer used in unit tests. Add `erc-open-socks-tls-stream' to the set of connector functions thought to be compatible with the "check" reconnect strategy. * test/lisp/erc/erc-scenarios-base-auto-recon.el (erc-scenarios-base-auto-recon-no-proto): Adapt to expect "reuse" behavior. * test/lisp/erc/resources/base/reconnect/ping-pong.eld: Delete unused file. * test/lisp/erc/resources/base/reconnect/unexpected-disconnect.eld: Capture PING cookie to send back to client. * test/lisp/erc/resources/erc-d/resources/proxy-solo.eld: Delete unused file. (Bug#62044)
* Use smarter default for erc-server-reconnect-functionF. Jason Park2024-12-209-7/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * doc/misc/erc.texi (Sample Configuration): Remove customization in `use-package' declaration for `erc-server-reconnect-function' as well as related language in the customization walk-through. Do this because the new default incorporates `erc-server-delayed-check-reconnect' behavior for compatible connect functions. * etc/ERC-NEWS: Announce new default for `erc-server-reconnect-function'. * lisp/erc/erc-backend.el (erc-server-reconnect-function): Change default to `erc-server-prefer-check-reconnect'. (erc-server-delayed-check-reconnect): Use `process-send-string' instead of `send-string'. (erc--server-delayed-check-connectors): New variable. (erc-server-prefer-check-reconnect): New function. * test/lisp/erc/erc-scenarios-base-auto-recon.el (erc-scenarios-base-auto-recon-unavailable) (erc-scenarios-base-auto-recon-no-proto): Remove unnecessary `erc-server-reconnect-function' binding because the new default incorporates the behavior being tested for. * test/lisp/erc/erc-scenarios-base-buffer-display.el (erc-scenarios-base-buffer-display--reconnect-common): * test/lisp/erc/erc-scenarios-base-compat-rename-bouncer.el (erc-scenarios-common--base-compat-no-rename-bouncer): * test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-base.el (erc-scenarios-base-netid-bouncer--recon-base): * test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-both.el (erc-scenarios-base-netid-bouncer--recon-both): * test/lisp/erc/erc-scenarios-base-netid-bouncer-recon-id.el (erc-scenarios-base-netid-bouncer--reconnect-id-foo) (erc-scenarios-base-netid-bouncer--reconnect-id-bar): * test/lisp/erc/erc-scenarios-base-reconnect.el (erc-scenarios-base-reconnect-timer) (erc-scenarios-base-cancel-reconnect): * test/lisp/erc/erc-scenarios-services-misc.el (erc-scenarios-services-misc--reconnect-retry-nick): * test/lisp/erc/erc-scenarios-stamp.el (erc-scenarios-stamp--date-mode/reconnect): Explicitly bind `erc-server-reconnect-function' to `erc-server-delayed-reconnect', the former default, which does not do any probing. (Bug#62044)
* Add command for teaching Imenu about ERC macrosF. Jason Park2024-12-201-0/+37
| | | | | | | | * lisp/erc/erc-backend.el (define-erc-response-handler): Add `doc-string' to `declare' specification. * test/lisp/erc/resources/erc-tests-common.el (erc-tests-common-add-imenu-expressions): New function for defining and undefining Imenu patterns useful to ERC developers.
* ; Mark failing tests in erc-scenarios-match.el as :unstableF. Jason Park2024-12-091-2/+3
| | | | | | | | * test/lisp/erc/erc-scenarios-match.el (erc-scenarios-match--stamp-both-invisible-fill-static) (erc-scenarios-match--stamp-both-invisible-fill-static--nooffset): Tag as :unstable for a `system-type' of `berkeley-unix'. (Bug#74722)
* ; Slightly improve test case for erc-parse-modesF. Jason Park2024-12-091-0/+3
| | | | | | | * lisp/erc/erc.el (erc--merge-local-modes): Look for a symbol's `erc-module' property before examining its name. * test/lisp/erc/erc-tests.el (erc-parse-modes): Expand case to cover alternating plus and minus mode changes.
* Reserve erc-normalize-port for equality comparisonsF. Jason Park2024-12-012-12/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * etc/ERC-NEWS: Add entry explaining changes to entry point 'erc-tls' and library functions `erc-normalize-port' and `erc-compute-port'. * lisp/erc/erc.el (erc-normalize-port): Map "ircu" to 6665 instead of 6667, and add related IANA service mappings. Return 0 for unknown nonempty strings. (erc-open): Pass `erc-session-port' through `erc-string-to-port' before handing it to `erc-server-connect'. This prevents the network machinery from ever seeing a numeric string, like "6667". (erc-select-read-args): Since `erc-compute-port' no longer relies on `erc-normalize-port', ensure its input is a number. Use `erc-port-equal' instead of `eql'. (erc-tls): Respect a configured non-nil `erc-port' option when the user does not provide a :port keyword argument from Lisp code. (erc-determine-parameters): Use `erc-compute-port' for initializing `erc-session-port'. (erc-compute-port): Don't pass the result through `erc-normalize-port', which can convert it to an unintuitive form. (erc--url-default-connect-function): Use `erc-compute-port' instead of `erc-normalize-port'. (erc-handle-irc-url): Use `erc-port-equal' for comparison. * test/lisp/erc/erc-scenarios-auth-source.el (erc-scenarios-common--auth-source): Allow tests to convey the automatic port number to `erc-open' via `erc-port'. (erc-scenarios-base-auth-source-server--dialed): Use `erc-port' option instead of passing a :port parameter to entry-point command. * test/lisp/erc/erc-tests.el (erc-normalize-port): New test. (Bug#74516)
* Clear buffer-undo-list after sending input in ERCF. Jason Park2024-12-011-0/+79
| | | | | | | | | | | * lisp/erc/erc.el (erc-insert-line): Assume `erc-insert-marker' points somewhere. (erc-send-current-line): Set `buffer-undo-list' to nil because it should only record editing changes in the prompt area, which has just been cleared. ERC did this via `erc-display-prompt' prior to 5.6, but it now leaves the prompt alone by default. * test/lisp/erc/erc-tests.el (erc-update-undo-list): New test. (Bug#74518)
* ; Fix typosStefan Kangas2024-11-212-2/+2
|
* Use helper to get erc-networks--id symbol as stringF. Jason Park2024-11-151-0/+8
| | | | | | | | | | | | | | * lisp/erc/erc-networks.el (erc-networks--id-string): New function. (erc-networks--construct-target-buffer-name) (erc-networks--ensure-unique-server-buffer-name) (erc-networks--rename-server-buffer): Use it. * lisp/erc/erc-nicks.el (erc-nicks-list-faces): Use it. * lisp/erc/erc-status-sidebar.el (erc-status-sidebar-pad-hierarchy): Use it. * lisp/erc/erc.el (erc-generate-new-buffer-name) (erc-log-irc-protocol) (erc--auth-source-determine-params-defaults) (erc-format-target-and/or-network): Use it. * test/lisp/erc/erc-networks-tests.el (erc-networks--id-string): New test.
* Mark if-let and when-let obsoleteSean Whitton2024-10-2411-32/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/subr.el (if-let*, when-let*, if-let, when-let): Mark if-let and when-let obsolete (bug#73853 and elsewhere). Move docstring text around so that if-let* and when-let* descriptions no longer refer to if-let and when-let. * etc/NEWS: Announce the change. * admin/admin.el (reminder-for-release-blocking-bugs): * doc/misc/erc.texi (display-buffer): * lisp/ansi-color.el (ansi-color-apply) (ansi-color--face-vec-face): * lisp/ansi-osc.el (ansi-osc-apply-on-region) (ansi-osc-hyperlink): * lisp/arc-mode.el (archive-goto-file) (archive-next-file-displayer): * lisp/auth-source-pass.el (auth-source-pass-search) (auth-source-pass--parse-data) (auth-source-pass--find-match-many): * lisp/autorevert.el (auto-revert-notify-rm-watch): * lisp/buff-menu.el (Buffer-menu-unmark-all-buffers) (Buffer-menu-group-by-root): * lisp/calendar/parse-time.el (parse-iso8601-time-string): * lisp/cedet/pulse.el (pulse-tick): * lisp/comint.el (comint--fontify-input-ppss-flush-indirect) (comint--intersect-regions): * lisp/completion-preview.el (completion-preview--try-table) (completion-preview--capf-wrapper, completion-preview--update): * lisp/cus-edit.el (setopt--set) (custom-dirlocals-maybe-update-cons, custom-dirlocals-validate): * lisp/custom.el (load-theme): * lisp/descr-text.el (describe-char): * lisp/desktop.el (desktop--emacs-pid-running-p): * lisp/dired-x.el (menu): * lisp/dired.el (dired-font-lock-keywords) (dired-insert-directory, dired--insert-disk-space, dired-mode): * lisp/dnd.el (dnd-handle-multiple-urls): * lisp/dom.el (dom-remove-attribute): * lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): * lisp/emacs-lisp/bytecomp.el (bytecomp--custom-declare): * lisp/emacs-lisp/comp-common.el (comp-function-type-spec): * lisp/emacs-lisp/comp-cstr.el (comp--all-classes) (comp-cstr-set-range-for-arithm, comp--cstr-union-1-no-mem) (comp-cstr-intersection-no-mem, comp-cstr-fixnum-p) (comp-cstr-type-p): * lisp/emacs-lisp/comp-run.el (comp-subr-trampoline-install) (native--compile-async): * lisp/emacs-lisp/comp.el (comp--get-function-cstr) (comp--function-pure-p, comp--intern-func-in-ctxt) (comp--addr-to-bb-name, comp--emit-assume, comp--maybe-add-vmvar) (comp--add-call-cstr, comp--compute-dominator-tree) (comp--dom-tree-walker, comp--ssa-rename) (comp--function-call-maybe-fold, comp--fwprop-call) (comp--call-optim-func): * lisp/emacs-lisp/edebug.el (edebug-global-prefix) (edebug-remove-instrumentation): * lisp/emacs-lisp/eieio.el (initialize-instance): * lisp/emacs-lisp/ert-x.el (ert-resource-directory): * lisp/emacs-lisp/ert.el (ert--expand-should-1) (ert-test-location, ert-write-junit-test-report) (ert-test--erts-test): * lisp/emacs-lisp/icons.el (icon-complete-spec, icon-string) (icons--create): * lisp/emacs-lisp/lisp-mode.el (lisp--local-defform-body-p): * lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--make-autoload) (loaddefs-generate--parse-file): * lisp/emacs-lisp/multisession.el (multisession-edit-mode--revert, multisession-edit-value): * lisp/emacs-lisp/package-vc.el (package-vc--read-archive-data) (package-vc--version, package-vc--clone): * lisp/emacs-lisp/package.el (package--reload-previously-loaded): * lisp/emacs-lisp/pp.el (pp--insert-lisp): * lisp/emacs-lisp/subr-x.el (add-display-text-property): * lisp/emacs-lisp/tabulated-list.el (tabulated-list-print): * lisp/emacs-lisp/timer.el (run-at-time): * lisp/emacs-lisp/vtable.el (vtable-goto-table) (vtable-goto-column, vtable-update-object, vtable--insert-line) (vtable--compute-widths, vtable--make-keymap): * lisp/emacs-lisp/warnings.el (display-warning): * lisp/epa-file.el (epa-file-insert-file-contents): * lisp/epa.el (epa-show-key): * lisp/erc/erc-backend.el (erc--split-line, erc--conceal-prompt) (PRIVMSG, erc--get-isupport-entry): * lisp/erc/erc-button.el (erc-button-add-nickname-buttons) (erc--button-next): * lisp/erc/erc-common.el (erc--find-group): * lisp/erc/erc-fill.el (erc-fill, erc-fill-static) (erc-fill--wrap-escape-hidden-speaker) (erc-fill--wrap-unmerge-on-date-stamp) (erc-fill--wrap-massage-initial-message-post-clear) (erc-fill-wrap, erc-fill--wrap-rejigger-region): * lisp/erc/erc-goodies.el (erc--scrolltobottom-all) (erc--keep-place-indicator-on-window-buffer-change) (keep-place-indicator, erc--keep-place-indicator-adjust-on-clear) (erc-keep-place-move, erc--command-indicator-display): * lisp/erc/erc-ibuffer.el (erc-members): * lisp/erc/erc-join.el (erc-join--remove-requested-channel) (erc-autojoin--join): * lisp/erc/erc-networks.el (erc-networks--id-qualifying-init-parts, erc-networks--id-reload) (erc-networks--id-ensure-comparable) (erc-networks--reclaim-orphaned-target-buffers) (erc-networks--server-select): * lisp/erc/erc-nicks.el (erc-nicks-invert) (erc-nicks--redirect-face-widget-link, erc-nicks--highlight) (erc-nicks--highlight-button) (erc-nicks--list-faces-help-button-action, erc-nicks-list-faces) (erc-nicks-refresh, erc-nicks--colors-from-faces) (erc-nicks--track-prioritize) (erc-nicks--remember-face-for-track): * lisp/erc/erc-notify.el (querypoll, erc--querypoll-get-next) (erc--querypoll-on-352, erc--querypoll-send): * lisp/erc/erc-sasl.el (erc-sasl--read-password): * lisp/erc/erc-services.el (erc-services-issue-ghost-and-retry-nick): * lisp/erc/erc-speedbar.el (erc-speedbar--ensure, nickbar) (erc-speedbar-toggle-nicknames-window-lock) (erc-speedbar--compose-nicks-face): * lisp/erc/erc-stamp.el (erc-stamp--recover-on-reconnect) (erc-stamp-prefix-log-filter, erc--conceal-prompt) (erc--insert-timestamp-left, erc-insert-timestamp-right) (erc-stamp--defer-date-insertion-on-post-modify) (erc-insert-timestamp-left-and-right) (erc-stamp--redo-right-stamp-post-clear) (erc-stamp--reset-on-clear, erc-stamp--dedupe-date-stamps): * lisp/erc/erc-status-sidebar.el (bufbar) (erc-status-sidebar-prefer-target-as-name) (erc-status-sidebar-default-allsort, erc-status-sidebar-click): * lisp/erc/erc-track.el (erc-track--shortened-names-get) (erc-track--setup, erc-track--select-mode-line-face) (erc-track-modified-channels, erc-track--collect-faces-in) (erc-track--switch-buffer, erc-track--replace-killed-buffer): * lisp/erc/erc-truncate.el (erc-truncate--setup) (erc-truncate-buffer): * lisp/erc/erc.el (erc--ensure-query-member) (erc--ensure-query-members, erc--remove-channel-users-but) (erc--cusr-change-status, erc--find-mode, erc--update-modules) (erc-log-irc-protocol, erc--refresh-prompt) (erc--restore-important-text-props) (erc--order-text-properties-from-hash, erc-send-input-line) (erc-cmd-IGNORE, erc--unignore-user, erc-cmd-QUERY) (erc-cmd-BANLIST, erc--speakerize-nick) (erc--format-speaker-input-message, erc-channel-receive-names) (erc-send-current-line, erc-format-target-and/or-network) (erc-kill-buffer-function, erc-restore-text-properties) (erc--get-eq-comparable-cmd): * lisp/eshell/em-alias.el (eshell-maybe-replace-by-alias--which) (eshell-maybe-replace-by-alias): * lisp/eshell/em-glob.el (eshell-glob-convert): * lisp/eshell/em-pred.el (eshell-pred-user-or-group) (eshell-pred-file-time, eshell-pred-file-type) (eshell-pred-file-mode, eshell-pred-file-links) (eshell-pred-file-size): * lisp/eshell/em-prompt.el (eshell-forward-paragraph) (eshell-next-prompt): * lisp/eshell/esh-arg.el (eshell-resolve-current-argument): * lisp/eshell/esh-cmd.el (eshell-do-eval, eshell/which) (eshell-plain-command--which, eshell-plain-command): * lisp/eshell/esh-io.el (eshell-duplicate-handles) (eshell-protect-handles, eshell-get-target, eshell-close-target): * lisp/eshell/esh-proc.el (eshell-sentinel): * lisp/eshell/esh-var.el (eshell-parse-variable-ref) (eshell-get-variable, eshell-set-variable): * lisp/faces.el (face-at-point): * lisp/ffap.el (ffap-in-project): * lisp/filenotify.el (file-notify--rm-descriptor): * lisp/files-x.el (read-dir-locals-file) (connection-local-update-profile-variables) (connection-local-value): * lisp/files.el (file-remote-p, abbreviate-file-name) (set-auto-mode, hack-local-variables) (revert-buffer-restore-read-only): * lisp/find-dired.el (find-dired-sort-by-filename): * lisp/font-lock.el (font-lock--filter-keywords): * lisp/gnus/gnus-art.el (article-emojize-symbols): * lisp/gnus/gnus-int.el (gnus-close-server): * lisp/gnus/gnus-search.el (gnus-search-transform) (gnus-search-indexed-parse-output, gnus-search-server-to-engine): * lisp/gnus/gnus-sum.el (gnus-collect-urls, gnus-shorten-url): * lisp/gnus/gnus.el (gnus-check-backend-function): * lisp/gnus/message.el (message-send-mail): * lisp/gnus/mml.el (mml-generate-mime, mml-insert-mime-headers): * lisp/gnus/nnatom.el (nnatom--read-feed, nnatom--read-article) (nnatom--read-article-or-group-authors, nnatom--read-publish) (nnatom--read-update, nnatom--read-links): * lisp/gnus/nnfeed.el (nnfeed--read-server, nnfeed--write-server) (nnfeed--parse-feed, nnfeed--group-data, nnfeed-retrieve-article) (nnfeed-retrieve-headers, nnfeed--print-part) (nnfeed-request-article, nnfeed-request-group) (nnfeed-request-list, nnfeed--group-description) (nnfeed-request-group-description) (nnfeed-request-list-newsgroups, nnfeed-request-rename-group): * lisp/gnus/nnmh.el (nnmh-update-gnus-unreads): * lisp/help-fns.el (help-find-source) (help-fns--insert-menu-bindings, help-fns--mention-first-release) (help-fns--mention-shortdoc-groups) (help-fns--customize-variable-version) (help-fns--face-custom-version-info, describe-mode): * lisp/help-mode.el (help-make-xrefs): * lisp/help.el (help-key-description, help--describe-command): * lisp/hfy-cmap.el (htmlfontify-load-rgb-file): * lisp/ibuf-ext.el (ibuffer-jump-to-filter-group) (ibuffer-kill-filter-group, ibuffer-kill-line) (ibuffer-save-filter-groups, ibuffer-save-filters, filename) (basename, file-extension, ibuffer-diff-buffer-with-file-1) (ibuffer-mark-by-file-name-regexp) (ibuffer-mark-by-content-regexp): * lisp/ibuf-macs.el (ibuffer-aif, ibuffer-awhen): * lisp/ibuffer.el (ibuffer-mouse-toggle-mark) (ibuffer-toggle-marks, ibuffer-mark-interactive) (ibuffer-compile-format, process, ibuffer-map-lines): * lisp/image.el (image--compute-map) (image--compute-original-map): * lisp/image/exif.el (exif-parse-buffer): * lisp/image/image-converter.el (image-convert-p, image-convert) (image-converter--find-converter): * lisp/image/image-dired-util.el (image-dired-file-name-at-point): * lisp/image/image-dired.el (image-dired-track-original-file) (image-dired--on-file-in-dired-buffer) (image-dired--with-thumbnail-buffer) (image-dired-jump-original-dired-buffer) (image-dired--slideshow-step, image-dired-display-image): * lisp/image/wallpaper.el (wallpaper--init-action-kill) (wallpaper--find-setter, wallpaper--find-command) (wallpaper--find-command-args, wallpaper--x-monitor-name): * lisp/info-look.el (info-lookup-interactive-arguments) (info-complete)::(:mode): * lisp/info.el (info-pop-to-buffer, Info-read-node-name-1): * lisp/international/emoji.el (emoji--adjust-displayable-1) (emoji--add-recent): * lisp/jsonrpc.el (jsonrpc--call-deferred) (jsonrpc--process-sentinel, jsonrpc--remove): * lisp/keymap.el (keymap-local-lookup): * lisp/mail/emacsbug.el (report-emacs-bug-hook) (submit-emacs-patch): * lisp/mail/ietf-drums.el (ietf-drums-parse-addresses): * lisp/mail/mailclient.el (mailclient-send-it): * lisp/mail/rfc6068.el (rfc6068-parse-mailto-url): * lisp/mail/undigest.el (rmail-digest-parse-mixed-mime): * lisp/minibuffer.el (completion-metadata-get) (completions--after-change) (minibuffer-visible-completions--filter): * lisp/net/browse-url.el (browse-url-url-at-point) (browse-url-file-url, browse-url-emacs): * lisp/net/dbus.el (dbus-byte-array-to-string) (dbus-monitor-goto-serial): * lisp/net/dictionary.el (dictionary-search): * lisp/net/eww.el (eww--download-directory) (eww-auto-rename-buffer, eww-open-in-new-buffer, eww-submit) (eww-follow-link, eww-read-alternate-url) (eww-copy-alternate-url): * lisp/net/goto-addr.el (goto-address-at-point): * lisp/net/mailcap.el (mailcap-mime-info): * lisp/net/rcirc.el (rcirc, rcirc-connect, rcirc-send-string) (rcirc-kill-buffer-hook, rcirc-print, rcirc-when) (rcirc-color-attributes, rcirc-handler-NICK) (rcirc-handler-TAGMSG, rcirc-handler-BATCH): * lisp/net/shr.el (shr-descend, shr-adaptive-fill-function) (shr-correct-dom-case, shr-tag-a): * lisp/net/sieve.el (sieve-manage-quit): * lisp/outline.el (outline-cycle-buffer): * lisp/pcmpl-git.el (pcmpl-git--tracked-file-predicate): * lisp/proced.el (proced-auto-update-timer): * lisp/progmodes/bug-reference.el (bug-reference-try-setup-from-vc): * lisp/progmodes/c-ts-common.el (c-ts-common--fill-paragraph): * lisp/progmodes/c-ts-mode.el (c-ts-mode--preproc-offset) (c-ts-mode--anchor-prev-sibling, c-ts-mode-indent-defun): * lisp/progmodes/compile.el (compilation-error-properties) (compilation-find-file-1): * lisp/progmodes/eglot.el (eglot--check-object) (eglot--read-server, eglot-upgrade-eglot) (eglot-handle-notification, eglot--CompletionParams) (eglot-completion-at-point, eglot--sig-info) (eglot-register-capability): * lisp/progmodes/elisp-mode.el (emacs-lisp-native-compile-and-load) (elisp-eldoc-var-docstring-with-value): * lisp/progmodes/erts-mode.el (erts-mode--goto-start-of-test): * lisp/progmodes/flymake.el (flymake--update-eol-overlays) (flymake-eldoc-function): * lisp/progmodes/gdb-mi.el (gdb-breakpoints-list-handler-custom) (gdb-frame-handler): * lisp/progmodes/go-ts-mode.el (go-ts-mode-docstring) (go-ts-mode--comment-on-previous-line-p) (go-ts-mode--get-test-regexp-at-point) (go-ts-mode-test-this-file): * lisp/progmodes/grep.el (lgrep, rgrep-default-command) (grep-file-at-point): * lisp/progmodes/perl-mode.el (perl--end-of-format-p): * lisp/progmodes/php-ts-mode.el (php-ts-mode--anchor-prev-sibling, php-ts-mode--indent-defun): * lisp/progmodes/project.el (project--other-place-command) (project--find-default-from, project--transplant-file-name) (project-prefixed-buffer-name, project--remove-from-project-list) (project-prompt-project-name, project-remember-projects-under) (project--switch-project-command) (project-uniquify-dirname-transform, project-mode-line-format): * lisp/progmodes/python.el (python-font-lock-keywords-maximum-decoration) (python--treesit-fontify-union-types) (python-shell-get-process-name, python-shell-restart) (python-shell-completion-at-point, python-ffap-module-path) (python-util-comint-end-of-output-p, python--import-sources) (python-add-import, python-remove-import, python-fix-imports): * lisp/progmodes/xref.el (xref--add-log-current-defun): * lisp/repeat.el (repeat-echo-message-string): * lisp/saveplace.el (save-place-dired-hook): * lisp/server.el (server-save-buffers-kill-terminal): * lisp/shadowfile.el (shadow-make-fullname) (shadow-contract-file-name, shadow-define-literal-group): * lisp/shell.el (shell-highlight-undef-mode): * lisp/simple.el (command-completion-using-modes-p) (command-execute, file-user-uid, file-group-gid) (first-completion, last-completion, switch-to-completions): * lisp/startup.el (startup--load-user-init-file): * lisp/tab-line.el (tab-line-tabs-buffer-group-by-project): * lisp/tar-mode.el (tar-goto-file, tar-next-file-displayer): * lisp/term/android-win.el (android-encode-select-string) (gui-backend-set-selection): * lisp/term/haiku-win.el (haiku-dnd-convert-string) (haiku-select-encode-xstring, haiku-select-encode-utf-8-string): * lisp/textmodes/emacs-news-mode.el (emacs-news--buttonize): * lisp/textmodes/ispell.el (ispell-completion-at-point): * lisp/textmodes/sgml-mode.el (sgml-validate) (html-mode--complete-at-point): * lisp/textmodes/tex-mode.el (tex-recenter-output-buffer) (xref-backend-references): * lisp/thingatpt.el (thing-at-point-file-at-point) (thing-at-point-face-at-point): * lisp/thread.el (thread-list--get-status): * lisp/time.el (world-clock-copy-time-as-kill, world-clock): * lisp/touch-screen.el (touch-screen-handle-touch): * lisp/treesit.el (treesit-language-at, treesit-node-at) (treesit-node-on, treesit-buffer-root-node) (treesit-node-field-name, treesit-local-parsers-at) (treesit-local-parsers-on, treesit--cleanup-local-range-overlays) (treesit-font-lock-recompute-features) (treesit-font-lock-fontify-region, treesit-transpose-sexps) (treesit-add-log-current-defun, treesit-major-mode-setup) (treesit--explorer-refresh, treesit-install-language-grammar): * lisp/url/url.el (url-retrieve-synchronously): * lisp/vc/smerge-mode.el (smerge-diff): * lisp/vc/vc-dir.el (vc-dir): * lisp/vc/vc-dispatcher.el (vc-do-async-command): * lisp/vc/vc-git.el (vc-git-dir--branch-headers) (vc-git-dir--stash-headers, vc-git--log-edit-summary-check) (vc-git-stash-list): * lisp/vc/vc.el (vc-responsible-backend, vc-buffer-sync-fileset) (vc-clone): * lisp/visual-wrap.el (visual-wrap--apply-to-line): * lisp/wid-edit.el (widget-text) (widget-editable-list-insert-before): * lisp/window-tool-bar.el (window-tool-bar--keymap-entry-to-string): * lisp/window.el (display-buffer, display-buffer-full-frame) (window-point-context-set, window-point-context-use) (window-point-context-use-default-function): * lisp/xdg.el (xdg-current-desktop): * lisp/xwidget.el (xwidget-webkit-callback): * lisp/yank-media.el (yank-media--get-selection) (yank-media-types): * test/lisp/comint-tests.el (comint-tests/test-password-function): * test/lisp/completion-preview-tests.el (completion-preview-tests--capf): * test/lisp/cus-edit-tests.el (with-cus-edit-test): * test/lisp/erc/erc-scenarios-base-local-modules.el (-phony-sblm-): * test/lisp/erc/erc-scenarios-stamp.el (erc-scenarios-stamp--on-post-modify): * test/lisp/erc/erc-services-tests.el (erc-services-tests--asp-parse-entry): * test/lisp/erc/erc-tests.el (erc-modules--internal-property) (erc--find-mode, erc-tests--update-modules): * test/lisp/erc/resources/erc-d/erc-d-i.el (erc-d-i--parse-message): * test/lisp/erc/resources/erc-d/erc-d-t.el (erc-d-t-kill-related-buffers, erc-d-t-with-cleanup): * test/lisp/erc/resources/erc-d/erc-d-tests.el (erc-d-i--parse-message--irc-parser-tests): * test/lisp/erc/resources/erc-d/erc-d-u.el (erc-d-u--read-exchange-slowly): * test/lisp/erc/resources/erc-d/erc-d.el (erc-d--expire) (erc-d--finalize-done, erc-d--command-handle-all): * test/lisp/erc/resources/erc-scenarios-common.el (erc-scenarios-common-with-cleanup): * test/lisp/erc/resources/erc-tests-common.el (erc-tests--common-display-message) (erc-tests-common-create-subprocess): * test/lisp/ibuffer-tests.el (ibuffer-test-Bug25058): * test/lisp/international/mule-tests.el (mule-cmds-tests--ucs-names-missing-names): * test/lisp/progmodes/python-tests.el (python-tests-get-shell-interpreter) (python-tests--get-interpreter-info): * test/lisp/progmodes/ruby-ts-mode-tests.el (ruby-ts-resource-file): * test/lisp/replace-tests.el (replace-tests-with-undo): * test/src/emacs-tests.el (emacs-tests--seccomp-debug): * test/src/process-tests.el (process-tests--emacs-command) (process-tests--emacs-binary, process-tests--dump-file): * test/src/treesit-tests.el (treesit--ert-test-defun-navigation): Replace use of the now-obsolete if-let and when-let.
* Move experimental module querypoll to erc-notifyF. Jason Park2024-10-182-57/+87
| | | | | | | | | | | | | | | | | | | | * etc/ERC-NEWS: Announce migration of misplaced `querypoll' module from erc-goodies.el to erc-notify.el. * lisp/erc/erc-goodies.el: Move all definitions associated with experimental module `querypoll' to erc-notify. * lisp/erc/erc-notify.el (erc--querypoll-ring) (erc--querypoll-timer, erc-querypoll-exclude-regexp) (erc-querypoll-mode, erc-querypoll-enable, erc-querypoll-disable) (erc--queries-current-p, erc-querypoll-period-params) (erc--querypoll-compute-period, erc--querypoll-target-in-chan-p) (erc--querypoll-get-length, erc--querypoll-get-next) (erc--querypoll-subscribe, erc--querypoll-on-352) (erc--querypoll-send): Move here from erc-goodies. * test/lisp/erc/erc-goodies-tests.el (erc--querypoll-compute-period) (erc--querypoll-target-in-chan-p, erc--querypoll-get-length) (erc--querypoll-get-next): Move to new file erc-notify-tests.el. * test/lisp/erc/erc-notify-tests.el: New file. The `querypoll' module was first introduced as part of bug#70928 in ERC 5.6.
* Fix trailing args bug in erc-d-i--parse-messageF. Jason Park2024-10-182-9/+39
| | | | | | | | | * test/lisp/erc/resources/erc-d/erc-d-i.el: Require `subr-x'. (erc-d-i--parse-message): Populate `contents' slot when lone trailing arg lacks a preceding colon. * test/lisp/erc/resources/erc-d/erc-d-tests.el (erc-d-i--parse-message): Fix expected result. (erc-d-i--parse-message/privmsg): New test.
* ; Undo erroneous change in ERC's sample configurationF. Jason Park2024-10-181-1/+2
| | | | | | | | | | | | | * doc/misc/erc.texi (Sample Configuration): Remove `erc-modules' from the `:custom' section of the `use-package' declaration for feature `erc' because its presence there depends on `:defer' being non-nil, and this configuration is supposed to be `:defer' agnostic. This reverts part of 3f1ce47f "; Add face customization to ERC's sample config". * etc/ERC-NEWS: Mention `erc-modules' no longer being autoloaded. * lisp/erc/erc-match.el (erc-text-matched-hooks): Explain expected format of non-NUH matches. * test/lisp/erc/erc-match-tests.el (test/lisp/erc/erc-match-tests.el): Inhibit messages when running non-interactively.
* Add baseline test coverage for erc-matchF. Jason Park2024-10-112-0/+436
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/erc/erc-match.el (erc-pal-highlight-type) (erc-fool-highlight-type, erc-dangerous-host-highlight-type): Clarify some areas in doc strings. * test/lisp/erc/erc-match-tests.el: Require `erc-test-common' library. (erc-match-tests--assert-face-absent) (erc-match-tests--assert-face-present) (erc-match-tests--assert-speaker-highlighted) (erc-match-tests--assert-speaker-only-highlighted) (erc-match-tests--perform) (erc-match-tests--hl-type-nick): New functions. (erc-match-message/pal/nick, erc-match-message/fool/nick) (erc-match-message/dangerous-host/nick): New tests. (erc-match-tests--hl-type-message): New function. (erc-match-message/pal/message) (erc-match-message/fool/message) (erc-match-message/dangerous-host/message): New tests. (erc-match-tests--hl-type-all): New function. (erc-match-message/pal/all, erc-match-message/fool/all) (erc-match-message/dangerous-host/all): New tests. (erc-match-tests--hl-type-nick-or-keyword): New function. (erc-match-message/current-nick/nick-or-keyword): New test. (erc-match-tests--hl-type-keyword): New function. (erc-match-message/keyword/keyword): New test. (erc-match-tests--log-matches): New function. (erc-log-matches): New test. * test/lisp/erc/resources/erc-tests-common.el: Require `erc-d-i'. (erc-tests-common-add-cmem, erc-tests-common-parse-line) (erc-tests-common-simulate-line) (erc-tests-common-simulate-privmsg): New functions.
* Crystallize erc-nicks-track-faces behaviorF. Jason Park2024-10-113-3/+571
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * etc/ERC-NEWS: Mention changes to `erc-track-faces-normal-list' and `erc-track-faces-priority-list'. Also mention new choice variant for option `erc-nicks-track-faces', although that's arguably just a bug fix because it makes good on previously unrealized behavior implied by the doc strings. * lisp/erc/erc-nicks.el (erc-nicks-skip-faces): Remove faces applied by the `match' module, namely, `erc-current-nick-face', `erc-pal-face', and `erc-fool-face'. That module runs its hooks after `button' on `erc-insert-modify-hook', and because `nicks' piggybacks on `button', it can never encounter those faces while assaying. (erc-nicks-track-faces): Update doc, and introduce new `t' value choice. (erc-nicks-mode, erc-nicks-disable): Update removals from `erc-track--alt-normals-function' to reflect recent renamings. (erc-nicks--reject-uninterned-faces): Use helper. (erc-nicks--oursp, erc-nicks--ours-p): Rename former to latter to respect project style guidelines regarding predicates. (erc-nicks-track-normal-max-rank): New variable. (erc-nicks--check-normals, erc-nicks--assess-track-faces): Rename former to latter, and change purpose to checking for "normals" membership, ranks position, and incumbent face ownership. Remove unused CONTENDERS parameter. Additionally, change behavior to consider replacing the current mode-line face when it's not `nicks' owned if it's explicitly ranked lower than `erc-default-face'. (erc-nicks--track-prioritize, erc-nicks--track-always): New complementary functions implementing the t and `prioritize' variants of `erc-nicks-track-faces'. Both make use of the factored-out `erc-nicks--check-normals' logic. (erc-nicks--setup-track-integration): Add `erc-nicks--track-always' to `erc-track--alt-normals-function' when `erc-track-normal-faces' is t. * lisp/erc/erc-track.el (erc-track--massage-nick-button-faces): Change type of symbol property `erc-track--obsolete-faces' for options `erc-track-faces-priority-list' and friends from a boolean to an alist. (erc-track-faces-priority-list): Add new face for buttonized speakers. (erc-track-faces-normal-list): Add new face for buttonized speakers. Also add `erc-notice-face'. (erc-track--priority-faces): New local variable to cache ranked faces and complement `erc-track--normal-faces'. (erc-track--setup): Initialize new `erc-track--priority-faces' variable, and refactor. (erc-track--alt-normals-function): Doc. (erc-track--select-mode-line-face): Update expected type of `ranks' parameter. (erc-track-modified-channels): Fix wrong-type bug occurring when `erc-track-ignore-normal-contenders-p' and `erc-track-priority-faces-only' are both non-nil. Also fix subtle compatibility oversight regarding an empty face list returned by `erc-track--collect-faces-in'. * test/lisp/erc/erc-nicks-tests.el: Load helpers and fixtures library. (erc-nicks-tests--track-faces): New function. (erc-nicks-track-faces/prioritize, erc-nicks-track-faces/defer) (erc-nicks-track-faces/nil, erc-nicks-track-faces/t): New tests. * test/lisp/erc/erc-track-tests.el (erc-track-tests--select-mode-line-face): Update expected type of mocked parameter. (erc-track-tests--modified-channels/baseline): New function. (erc-track-modified-channels/baseline) (erc-track-modified-channels/baseline/mention) (erc-track-modified-channels/baseline/ignore) (erc-track-modified-channels/baseline/mention/ignore) (erc-track-modified-channels/priority-only-all/baseline) (erc-track-modified-channels/priority-only-all/sans-notice): New tests. * test/lisp/erc/resources/erc-tests-common.el (erc-tests-common-track-modified-channels) (erc-tests-common-track-modified-channels-sans-setup): New functions. (Bug67767)
* Remove erc-fill binding for cycling visual movementF. Jason Park2024-09-291-4/+4
| | | | | | | | | | * etc/ERC-NEWS: Announce removal of troublesome key binding first introduced in ERC 5.6 as part of the `erc-fill-wrap' module. * lisp/erc/erc-fill.el (erc-fill-wrap-mode-map): Remove key binding for `erc-fill-wrap-cycle-visual-movement'. * test/lisp/erc/erc-fill-tests.el (erc-fill-wrap-visual-keys--body) (erc-fill-wrap-visual-keys--prompt): Replace "C-c a" key simulations. (Bug#73553)
* Skip indentation when gathering faces in erc-trackF. Jason Park2024-09-291-1/+125
| | | | | | | | | | | | | | | | * lisp/erc/erc-nicks.el (erc-nicks-mode, erc-nicks-enable) (erc-nicks-disable): Use correct name for `track' module hook. (erc-nicks--check-normals): Remove falsity from doc string. * lisp/erc/erc-track.el (erc-make-mode-line-buffer-name): Don't error when optional COUNT is nil. (erc-track-modified-channels): Use new name for preferred face-finding function. (erc-track--get-faces-in-current-message, erc-track--collect-faces-in): Rename former to latter to better reflect expanded utility, which now includes spanning gaps, including newlines and indentation that may be lacking in face-related properties. * test/lisp/erc/erc-track-tests.el (erc-track--collect-faces-in): New test. (Bug#73443)
* Make erc-keep-place-indicator aware of erc-truncateF. Jason Park2024-09-292-4/+97
| | | | | | | | | | | | | | | | | | | * etc/ERC-NEWS: Entry mentioning `erc-keep-place-indicator-truncation'. * lisp/erc/erc-goodies.el (erc-keep-place-indicator-truncation): New option. Something like this should have accompanied the module's introduction. (erc-keep-place-indicator-mode, erc-keep-place-indicator-enable) (erc-keep-place-indicator-disable): Arrange to take necessary measures to avoid losing the indicator on `erc--clear-function'. This module was first introduced by bug#59943. (erc--keep-place-move-hook): New variable. (erc--keep-place-indicator-adjust-on-clear): New function. (erc-keep-place-move): Try to ensure the overlay resides at the beginning of a message. Run hook `erc--keep-place-move-hook'. * test/lisp/erc/erc-scenarios-keep-place-indicator-trunc.el: New file. * test/lisp/erc/erc-scenarios-keep-place-indicator.el (erc-scenarios-keep-place-indicator--follow): Fix missing test description. (Bug#72736)
* Redo ERC truncation and /CLEAR hook mechanismF. Jason Park2024-09-291-18/+139
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * etc/ERC-NEWS: Mention option `erc-truncate-padding-size'. * lisp/erc/erc-fill.el (erc-fill-wrap-mode, erc-fill-wrap-enable) (erc-fill-wrap-disable): Manage membership in the `erc--clear-function' advice stack for own function that massages a buffer's oldest inserted message, post truncation. (erc-fill--wrap-massage-initial-message-post-clear): New function. * lisp/erc/erc-log.el (erc-log-mode, erc-log-enable): Don't add `erc-save-buffer-in-logs' to `erc--pre-clear-functions'. Use local advice around common interface variable instead, as noted below. (erc-log-disable): Likewise, don't remove `erc-save-buffer-in-logs' from `erc--pre-clear-functions'. (erc-log-setup-logging): Add `erc-log--save-on-clear' to `erc--clear-function'. (erc-log-disable-logging): Remove `erc-log--save-on-clear' to `erc-clear-function'. (erc-save-buffer-in-logs): Abort when `erc--insert-marker' is non-nil. (erc-log--save-on-clear): New function, a thin wrapper around `erc-save-buffer-in-logs', adapting it to the `erc--clear-function' advice interface. * lisp/erc/erc-stamp.el (erc-stamp-mode, erc-stamp-enable): Don't add `erc-stamp--reset-on-clear' to `erc--pre-clear-functions'. (erc-stamp-disable): Don't remove `erc-stamp--reset-on-clear' from `erc--pre-clear-functions'. (erc-stamp--find-insertion-point): Account for initial position being `bobp'. (erc-stamp--defer-date-insertion-on-post-modify): Accommodate the rare non-list `erc-insert-post-hook' when shadowing. (erc-stamp--setup): Add and remove `erc-stamp--reset-on-clear' to and from `erc--clear-function' advice stack. (erc-stamp--redo-right-stamp-post-clear): New function. (erc-stamp--update-saved-position): Remove unused function. This was originally added along with `erc-stamp--reset-on-clear' as part of bug#60936. (erc-stamp--reset-on-clear): Expect end of truncation boundary to be at `erc-insert-marker'. Rework to use new `erc--clear-function' interface and run on `erc-timer-hook' instead of `erc-insert-done-hook'. * lisp/erc/erc-truncate.el (erc-truncate-padding-size): New option to help tamp down on disruptions when reading scroll back caused by overly frequent truncation. (erc-truncate-enable, erc-truncate-disable): Add and remove `erc-truncate--setup' to and from `erc-mode-hook', and run it when needed. (erc-truncate--buffer-size): New variable. (erc-truncate--setup): New function. (erc-truncate-buffer-to-size): Guard execution with `erc-truncate--padding-size' and `erc--inhibit-clear-p'. Reflow for readability, removing obsolete comments. Call hooks with marker instead of buffer position, as per the new `erc--clear-function' interface. (erc-truncate-buffer): Defer execution to `erc-timer-hook' when running post-insertion via a response handler. (erc-truncate--inhibit-when-local-and-interactive): New function. * lisp/erc/erc.el (erc-mode): Add `erc--skip-past-headroom-on-clear' to `erc--clear-function' in all ERC buffers. (erc--with-spliced-insertion): Account for marker being `bobp'. (erc--insert-before-markers-transplanting-hidden): Make more robust by accommodating initial `point' possibly being `bobp'. (erc--clear-function): New variable, a function-valued local-advice interface to replace `erc--pre-clear-functions'. (erc--pre-clear-functions): Remove unused variable. (erc--skip-past-headroom-on-clear): New function. (erc--inhibit-clear-p): New variable. (erc-cmd-CLEAR): Call hooks with markers instead of position. Signal `user-error' when `erc--inhbiit-clear-p' is non-nil. * test/lisp/erc/erc-scenarios-log.el (erc-scenarios-log--clear-stamp) (erc-scenarios-log--cmd-clear/date-stamps): Rename former to latter, update assertions, and use common helper. (erc-scenarios-log--cmd-clear/left-stamps): New test. (erc-scenarios-log--truncate): Move body to function of the same name, and update assertions. (erc-scenarios-log--truncate/left-stamps): New test. (Bug#72736)