aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/erc (follow)
Commit message (Collapse)AuthorAgeFilesLines
* WiPscratch/error-APIStefan Monnier21 hours1-1/+1
|
* WiPStefan Monnier21 hours1-3/+5
|
* Rename 'any' to 'member-if' and deprecate 'cl-member-if'Sean Whitton6 days1-2/+2
| | | | | | | | | | | | * lisp/subr.el (any): Rename from this ... (member-if): ... to this. All uses changed. (any): New function alias. * lisp/emacs-lisp/cl-seq.el (cl-member-if): Mark obsolete. * lisp/obsolete/cl.el (member-if): Delete obsolete function alias. * doc/lispref/lists.texi (List Elements): * doc/misc/cl.texi (Lists as Sets): * etc/NEWS: Document the change.
* Revert "Rename 'any' to 'member-if' and deprecate 'cl-member-if'"Mattias Engdegård7 days1-2/+2
| | | | | | This reverts commit 2bdf15f6d8293b21234cd236f39ce68f62e1f6c3. There is no consensus for this change.
* Rename 'any' to 'member-if' and deprecate 'cl-member-if'Sean Whitton7 days1-2/+2
| | | | | | | | | | | | | | * lisp/subr.el (any): Rename from this ... (member-if): ... to this. All uses changed. Implement '&key KEY-FN' for backwards compatibility. (any): New function alias. * lisp/emacs-lisp/cl-seq.el (cl-member-if): Make an alias for 'member-if'. * lisp/obsolete/cl.el (member-if): Delete obsolete function alias. * doc/lispref/lists.texi (List Elements): * doc/misc/cl.texi (Lists as Sets): * etc/NEWS: Document the change.
* Use seq-doseq for iterating over strings in ERCF. Jason Park2026-01-112-22/+3
| | | | | | | * 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 Whitton2026-01-0141-41/+41
|
* December 2025 spelling fixesPaul Eggert2025-12-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Fix regression involving erc-channel-user accessorsF. Jason Park2025-10-272-16/+32
| | | | | | | | | | | | | | | | | | | | | | | | | * 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)
* Change ERC version to 5.6.2-gitF. Jason Park2025-10-271-3/+4
| | | | | | | * doc/misc/erc.texi: Change ERCVER to 5.6.2. * lisp/erc/erc.el (erc-version): Change working version to 5.6.2-git. Do the same for the package Version header and the `customize-package-emacs-version-alist' mapping.
* Release ERC 5.6.1F. Jason Park2025-10-211-2/+2
| | | | | | | | | * lisp/erc/erc.el: Change "Version" header from 5.6.1-git to 5.6.1. A `customize-package-emacs-version-alist' mapping to Emacs 31.1 was already added at some point during the course of development for this release. The ERCVER variable in doc/misc/erc.texi was updated when moving to the "-git" suffixed version. (erc-version): Change version from 5.6.1-git to 5.6.1.
* Make function erc-scrolltobottom-mode idempotentF. Jason Park2025-09-041-0/+5
| | | | | | | | | | | | | | * lisp/erc/erc-goodies.el (erc-scrolltobottom-mode) (erc-scrolltobottom-enable): Always remove hook functions whose membership hinges on the value of `erc-scrolltobottom-all'. In ERC 5.6, an init file's `setopt' form containing an `erc-modules' assignment before an `erc-scrolltobottom-all' one would result in conflicting sets of hook members come `erc-open'. Having such option-dependent branching in module setup, while difficult to maintain, is a long held ERC practice, as seen in functions like `erc-nickserv-identify-mode'. Making all new modules "local" may be the most manageable solution because existing global modules can't be made to require prior deactivation.
* Don't touch window configuration in erc-fill prompt hookF. Jason Park2025-09-041-7/+4
| | | | | | | * lisp/erc/erc-fill.el (erc-fill--wrap-indent-prompt): While computing the prompt indentation's text size, don't bother saving and restoring the window configuration because unwanted scrolls are now believed to be unlikely because of other changes.
* Remove scrolltobottom dependency from erc-fill moduleF. Jason Park2025-08-251-12/+4
| | | | | | | | | | | | | | | 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.
* Prefer window-text-pixel-size in erc-fillF. Jason Park2025-08-251-2/+8
| | | | | | | | | * lisp/erc/erc-fill.el (erc-fill--wrap-measure): Using `buffer-text-pixel-size' for measuring text size in the selected window can end up triggering a scroll, which then requires imperfect countering by the scrolltobottom module, especially with regard to the option `erc-scrolltobottom-all'. Thanks to Alcor for reporting and helping with this bug, which was introduced along with fill-wrap in ERC 5.6.
* Don't set bufbar cursor-type in erc-mode buffersF. Jason Park2025-08-241-2/+2
| | | | | | | * lisp/erc/erc-status-sidebar.el (erc-status-sidebar-get-window): Set `cursor-type' in `erc-status-sidebar-mode' buffer instead. This bug was introduced along with the bufbar module for bug#63595 in ERC 5.6. It's a regression because it also affects the status-sidebar module.
* Use existing X-Debbugs-CC header in erc-bugF. Jason Park2025-08-241-2/+7
| | | | | | | | | | * lisp/erc/erc.el (erc-bug): On Emacs 30 and later, search for and ideally use an existing "X-Debbugs-CC" header instead of inserting a new one at the top. Section 4.5 Obsolete Header Fields of RFC 5322 says, "except for destination address fields (described in section 4.5.3), the interpretation of multiple occurrences of fields is unspecified." Anecdotal fiddling suggests the Savannah servers aren't confused by the second "empty" header field, so this change is probably just cosmetic.
* ; Improve some doc strings in erc-servicesF. Jason Park2025-07-271-16/+9
| | | | | | | | | | | | | * lisp/erc/erc-services.el: Fix shape of option in commentary example. Existing value didn't pass `setopt' validation and raised an error during successful lookup in `erc-nickserv-get-password'. (erc-nickserv-passwords, erc-nickserv-identify-autodetect): Update doc string by removing erroneous constraint, which was no longer applicable following c6eb114a42922af18818dce7317238e0af776958 "ERC: NickServ: Prompt for password last, overall simplifications (bug#46777)". (erc-nickserv-identify): Simplify doc and guarantee t as return value on success rather than rely on unadvertised behavior from other API functions.
* Use function-valued variable for ERC query predicateF. Jason Park2025-07-273-6/+21
| | | | | | | | | | | | | | | | * lisp/erc/erc-notify.el (erc-querypoll-mode, erc-querypoll-enable) (erc-querypoll-disable): Override `erc-query-table-synced-predicate' when mode is active. (erc--queries-current-p): Remove method. (erc--querypoll-active-p): New function. * lisp/erc/erc-speedbar.el (erc-speedbar-buttons) (erc-speedbar-insert-target): Call function-valued variable `erc--query-table-synced-predicate' instead of its now default value `erc--queries-current-p' directly. * lisp/erc/erc.el (erc--query-table-synced-predicate): New variable. (erc--queries-current-p, erc--query-participant-present-p): Convert former from method to normal function and rename to latter. Original was added as part of bug#70928.
* Cancel ERC autojoin timer in the server bufferF. Jason Park2025-07-271-13/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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)
* Don't round-trip auto-reconnect probe in ERCF. Jason Park2025-04-161-85/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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)
* Fix capitalization ELisp -> ElispSean Whitton2025-03-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * configure.ac (libgccjit_not_found_err) (libgccjit_dev_not_found_err): * doc/emacs/buffers.texi (List Buffers): * doc/lispref/elisp.texi (Tree-sitter C API): * doc/lispref/functions.texi (What Is a Function): * doc/lispref/parsing.texi (Parsing Program Source) (Tree-sitter C API): * doc/misc/gnus.texi (The Gnus Registry): * etc/DEBUG: * etc/NEWS: * etc/NEWS.25: * etc/NEWS.26: * etc/NEWS.28: * etc/NEWS.30: * etc/TODO: * lib-src/emacsclient.c (print_help_and_exit): * lisp/auth-source.el (auth-source-search): * lisp/cedet/semantic/bovine/el.el (emacs-lisp-mode): * lisp/cedet/semantic/wisent/comp.el (wisent-automaton-lisp-form): * lisp/cedet/srecode/el.el (srecode-semantic-apply-tag-to-dict): * lisp/editorconfig.el (editorconfig-get-local-variables-functions): * lisp/emacs-lisp/bindat.el (bindat-type): * lisp/emacs-lisp/byte-opt.el (byte-compile-inline-expand): * lisp/emacs-lisp/cconv.el (cconv-make-interpreted-closure): * lisp/emacs-lisp/cl-macs.el (cl--labels-convert): * lisp/emacs-lisp/lisp-mode.el (lisp-fdefs) (lisp-fill-paragraphs-as-doc-string): * lisp/emacs-lisp/macroexp.el (macroexp--fgrep): * lisp/emacs-lisp/oclosure.el (cconv--interactive-helper): * lisp/emacs-lisp/re-builder.el: * lisp/erc/erc-button.el (erc-emacswiki-lisp-url): * lisp/help-fns.el (help-fns--describe-function-or-command-prompt): * lisp/menu-bar.el (menu-bar-search-documentation-menu): * lisp/net/tramp-message.el (tramp-debug-font-lock-keywords): * lisp/org/org-capture.el (org-capture): * lisp/org/org.el (org-category, org-todo): * lisp/org/ox.el (org-export-async-start): * lisp/progmodes/elisp-mode.el (emacs-lisp-mode): * lisp/progmodes/peg.el (peg-translate-exp): * lisp/progmodes/ruby-ts-mode.el: * lisp/woman.el (woman-mode, woman-parse-numeric-arg): * src/chartab.c (map_char_table_for_charset): * src/fns.c (extract_data_from_object): * src/frame.c (do_switch_frame): * src/keyboard.c (make_lispy_event): * test/lisp/emacs-lisp/cl-macs-tests.el (cl-&key-arguments): * test/lisp/emacs-lisp/shortdoc-tests.el (shortdoc-help-fns-examples-function-test): * test/manual/etags/c-src/emacs/src/keyboard.c (make_lispy_event): Fix capitalization ELisp -> Elisp.
* Add erc-compat adapter for xml-escape-stringF. Jason Park2025-03-112-2/+14
| | | | | | | * lisp/erc/erc-compat.el (erc-compat--xml-escape-string): New macro to call `xml-escape-string' sans the NO-ERROR argument on Emacs 27. * lisp/erc/erc-desktop-notifications.el (erc-notifications-notify): Use compat macro.
* Suppress log module when inserting date stamps in ERCF. Jason Park2025-03-112-1/+6
| | | | | | | | | | | | | | | | | * 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 .pem extension for client certs in ERC docsF. Jason Park2025-02-211-9/+8
| | | | | | | | | * doc/misc/erc.texi (Connecting): Change file-name extensions to .pem in all examples, and explain that the key and the cert can be combined into one file. (SASL): Use .pem extension for certs. * lisp/erc/erc.el (erc--warn-once-before-connect): Revise doc. (erc-tls): Use .pem extension for certs. (Bug#76278)
* Don't kill window buffer in erc--split-lineF. Jason Park2025-02-211-28/+29
| | | | | * lisp/erc/erc-backend.el (erc--split-line): Restore original window buffer before killing temp buffer. (Bug#76404)
* Prefer cl-evenp/cl-oddp in some placesStefan Kangas2025-02-171-1/+1
| | | | | | | | | | | | | | * lisp/erc/erc.el (erc-format-message): * lisp/obsolete/thumbs.el (thumbs-emboss-image): * lisp/org/org-capture.el (org-capture-escaped-%): * lisp/org/org-element-ast.el (org-element-create): * lisp/org/org-macro.el (org-macro-extract-arguments): * lisp/org/org-persist.el (org-persist--get-collection): * lisp/org/ox-odt.el (org-odt-get-table-cell-styles): * lisp/org/ox.el (org-export--dispatch-ui): * lisp/progmodes/cperl-mode.el (cperl-forward-re) (cperl-find-pods-heres): Prefer 'cl-evenp/'cl-oddp' to free-coding them in some files that already depend on cl-lib in run-time.
* More clearly define local module behavior in ERCF. Jason Park2025-02-076-18/+24
| | | | | | | | | | | | | | | | | | | | | | * 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-021-6/+19
| | | | | | | | | | | | | * 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.
* ; Remove obsolete :options value from erc-mode-hookF. Jason Park2025-02-021-3/+4
| | | | | * lisp/erc/erc.el (erc-mode-hook): Remove `erc-add-scroll-to-bottom' from :options list because the function has been deprecated.
* Reuse client cert for connectivity probing in ERCF. Jason Park2025-01-222-76/+119
| | | | | | | | | | | | | | | | | | | | * lisp/erc/erc-backend.el (erc--server-connect-function) (erc--server-post-dial-function): Rename former to latter because the existing name is better suited for the eventual generalizing of `erc-server-connect' in a future version. (erc-server-connect): Use new name for `erc--server-connect-function', `erc--server-post-dial-function'. (erc--recon-probe-reschedule, erc--recon-probe-sentinel) (erc--recon-probe-filter, erc--recon-probe-check): New functions factored out of `erc-server-delayed-check-reconnect'. (erc-server-delayed-check-reconnect): Refactor, splitting off lambdas into top-level functions for improved tracing. * lisp/erc/erc.el (erc-message-english-recon-probe-hung-up) (erc-message-english-recon-probe-nobody-home): New variables. (Bug#62044) Thanks to Libera.Chat user arjan for reporting this bug, which is new in ERC 5.6 and Emacs 30.1.
* ; Don't quote localp argument to define-erc-moduleF. Jason Park2025-01-226-7/+7
| | | | | | | | | | | | | | | | * 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.
* Improve use of Flyspell's API in erc-spellingF. Jason Park2025-01-071-2/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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-14/+12
| | | | | | | | | | | | | * 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-0141-41/+41
| | | | Run "TZ=UTC0 admin/update-copyright".
* Merge from origin/emacs-30Eli Zaretskii2024-12-283-4/+4
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2ba6387d1d6 ; Fix inaccuracy in ELisp Reference manual 8ac6a178804 ; * etc/PROBLEMS: Mention problems with XPM support in GD... 624322d5f6a Add missing fontification matches for elixir-ts-mode 5bafb11b400 ; Fix copyright year 186ea407326 Don't start docstrings with "This function" or similar cb8ce2e68bb Enable indent-tabs-mode in obj-c-mode 54f35137096 Fix comment indent in 'lua-ts-mode' and old grammar 8b95549e908 * admin/nt/dist-build/build-dep-zips.py: (deps src) handl... 8064b2a6798 Document undocumented completion commands c29b798537e ; etc/w32-feature.el (harfbuzz): improve test 0e43e35f96e * admin/nt/dist-build/emacs.nsi: (Uninstall) delete only ... b83cd8a8fb0 ; * etc/tutorials/TUTORIAL.ko: Fix the beginning. 41caccc488b ; * etc/publicsuffix.txt: Update from upstream. e6fb18406ee ; Fix refcards 14e791f9ba2 ; Update acknowledgments for Emacs 30 861b7864fc4 ; Fix node name in emacs-lisp-intro.texi 77243ba5be8 ; Update version tags of defcustoms fe2ac33bae8 ;* doc/misc/efaq.texi (New in Emacs 30): Mention 'trusted... 8fb884f0dc0 ; * etc/NEWS: Fix wording. e281355a5e8 Improve D-Bus and Tramp manual # Conflicts: # doc/emacs/emacs.texi # etc/NEWS # lisp/erc/erc-log.el # lisp/eshell/esh-mode.el # lisp/which-key.el
| * Don't start docstrings with "This function" or similarStefan Kangas2024-12-263-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/calculator.el (calculator-add-operators): * lisp/erc/erc-backend.el (erc-server-ping-handler): * lisp/erc/erc-log.el (erc-generate-log-file-name-with-date): (erc-generate-log-file-name-short): * lisp/erc/erc-track.el (erc-track-shorten-function): * lisp/eshell/em-smart.el (eshell-where-to-jump): * lisp/eshell/esh-mode.el (eshell-begin-on-new-line): * lisp/gnus/gnus-art.el (gnus-prompt-before-saving): * lisp/mail/supercite.el (sc-cite-region-limit): * lisp/net/nsm.el (network-security-protocol-checks): * lisp/org/org-element.el (org-element--cache-avoid-synchronous-headline-re-parsing): * lisp/progmodes/hideif.el (hif-merge-ifdef-region): * lisp/progmodes/modula2.el (m2-indent): * lisp/progmodes/xscheme.el (xscheme-running-p): (xscheme-control-g-disabled-p): * lisp/tab-bar.el (tab-bar--event-to-item): * lisp/which-key.el (which-key--hide-popup): Don't start docstrings with "This function" or "This variable".
| * Backport: Don't autoload erc-modulesF. Jason Park2024-11-161-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * doc/misc/erc.texi (Modules): Recommend using `describe-variable' instead of `customize-option' because the latter needs the symbol to be loaded. * lisp/erc/erc.el (erc-modules): Remove autoload cookie because it caused customizations for this option to load the main library. This reverts the thrust of bb894845 "Teach customize-option about erc-modules", which was added in ERC 5.6 and Emacs 30. The motivation for the original offending change was to allow new users to run M-x customize-option RET erc-modules RET immediately after startup instead of M-x customize-group RET, followed by an I-search. (Bug#73812) (Cherry picked from commit 1854f2751e3f73e1e5f12f6de993b6357de1766b) Do not merge to master.
* | Add command to clear erc-track's mode-line indicatorAlex Bochannek2024-12-271-0/+6
| | | | | | | | | | | | * etc/ERC-NEWS: Mention new command `erc-track-clear'. * lisp/erc/erc-track.el (erc-track-clear): New command to reset buffer activity indicator in ERC's mode-line construct. (Bug#75014)
* | Reuse process in erc-server-delayed-check-reconnectF. Jason Park2024-12-271-18/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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-201-3/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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/+1
| | | | | | | | | | | | | | | | * 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.
* | Disable which-func-mode in erc-imenu buffersF. Jason Park2024-12-201-11/+24
| | | | | | | | | | | | | | | | | | * lisp/erc/erc-imenu.el (erc-imenu-setup): Move after module definition so the variable `erc-imenu-mode' is defined. Run teardown code when module is deactivated. Set `which-func-mode' to nil locally. (erc-imenu-mode, erc-imenu-enable, erc-imenu-disable): Manage membership of `erc-imenu--disable-which-func' in `which-function-mode-hook'. (erc-imenu--disable-which-func): New function. (Bug#74934)
* | ; Slightly improve test case for erc-parse-modesF. Jason Park2024-12-091-3/+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-011-25/+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)
* | Allow querying auth-source with port as string in ERCTrevor Arjeski2024-12-011-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/erc/erc.el (erc--auth-source-determine-params-defaults): Allow arbitrary strings for `ers-session-port'. Previously, if a port/service was any string other than "irc", the auth-source query would fail for a seemingly unknown reason. Restricting the value to "irc" is unnecessary since "irc" is already added to the list of ports, and `make-network-process' already consults /etc/services for well-known service names, like "ircs-u", etc. This change allows a user to (setopt erc-port "1234"), intentionally or accidentally, while still being able to use .authinfo for password management. (Bug#74516) Copyright-paperwork-exempt: yes
* | Clear buffer-undo-list after sending input in ERCF. Jason Park2024-12-011-6/+4
| | | | | | | | | | | | | | | | | | | | | | * 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 customization type of erc-spelling-dictionariesBruno Boal2024-11-151-5/+7
| | | | | | | | | | | | | | | | * lisp/erc/erc-spelling.el (erc-spelling-dictionaries): Update :type specification to reflect shape expected by `erc-spelling-init', and improve description in doc string. (Bug#74363) Copyright-paperwork-exempt: yes
* | Use helper to get erc-networks--id symbol as stringF. Jason Park2024-11-154-19/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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.
* | Don't start docstrings with "This function"Stefan Kangas2024-11-011-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/calculator.el (calculator-add-operators): * lisp/erc/erc-log.el (erc-generate-log-file-name-with-date) (erc-generate-log-file-name-short): * lisp/eshell/esh-mode.el (eshell-begin-on-new-line): * lisp/progmodes/hideif.el (hif-merge-ifdef-region): * lisp/tab-bar.el (tab-bar--event-to-item): * lisp/textmodes/artist.el (artist-no-rb-unset-point2) (artist-no-rb-unset-points): * lisp/which-key.el (which-key--hide-popup): Don't start function docstrings with "This function".