From unknown Wed Jun 18 00:22:27 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#75327 <75327@debbugs.gnu.org> To: bug#75327 <75327@debbugs.gnu.org> Subject: Status: 31.0.50; ERC 5.6.1-git: M-TAB not autocorrecting with erc-spelling module and flyspell Reply-To: bug#75327 <75327@debbugs.gnu.org> Date: Wed, 18 Jun 2025 07:22:27 +0000 retitle 75327 31.0.50; ERC 5.6.1-git: M-TAB not autocorrecting with erc-spe= lling module and flyspell reassign 75327 emacs submitter 75327 Trevor Arjeski severity 75327 normal thanks From debbugs-submit-bounces@debbugs.gnu.org Fri Jan 03 17:11:08 2025 Received: (at submit) by debbugs.gnu.org; 3 Jan 2025 22:11:08 +0000 Received: from localhost ([127.0.0.1]:52508 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tTpsp-0005q7-AW for submit@debbugs.gnu.org; Fri, 03 Jan 2025 17:11:08 -0500 Received: from lists.gnu.org ([2001:470:142::17]:51948) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1tTpsl-0005pX-GR for submit@debbugs.gnu.org; Fri, 03 Jan 2025 17:11:06 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tTpse-0007lE-JP for bug-gnu-emacs@gnu.org; Fri, 03 Jan 2025 17:10:57 -0500 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tTpsb-0006zf-Iu for bug-gnu-emacs@gnu.org; Fri, 03 Jan 2025 17:10:56 -0500 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-43618283dedso125579565e9.3 for ; Fri, 03 Jan 2025 14:10:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1735942251; x=1736547051; darn=gnu.org; h=mime-version:message-id:date:subject:to:from:from:to:cc:subject :date:message-id:reply-to; bh=A9oa1SbQCV3T1NVbeUmCNyWqOVMwQ3wuz/5ze6cRPo0=; b=TFXHfr5pFfsVcu7mP5M7aO6rrOSVj+YHWs45FG+aL5ELF6gCX7B5diZhmNoEJvfNHZ 0uKxq6aoSD7mUieTEl08mXMFKpjYvLgnJI0I68EHVlpmiZvlPDex1ikBCS9Tq9gNSeFG tyha6frk5dEqcTdxbV+0I6hrGniTqfW28Er6TjNw6JgmYeW1aXJ2H5tXxPgQaiKgVW/J WgAPTIbMOylOIzLYftJAI1nC+6FxUePwhdXNd9AJvqnKU5kBQMWV+tVWAsN+Dde6lvHU MzHaBmfS4VhAQzrkZOsqaVSV6W+kCBU0YhCBg6Mp1VGCamsrbIka9lqT4+VLxY1X9Asa 1RdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1735942251; x=1736547051; h=mime-version:message-id:date:subject:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=A9oa1SbQCV3T1NVbeUmCNyWqOVMwQ3wuz/5ze6cRPo0=; b=eII2IrV9Gxle6oM8A7Qxe2f3cW/9qZFTvYBPEsNW5Pc80dw63eXBNTVoZMghpUKttJ /whOVjP+NfNLX9pfk9hiSNax3uXWlNrwGw/cmBA95rP0uWTmNvgEAuO57MM0ODvXn77Q speKDkj3TIHQOpbACBbSC1ipFeKlLU0rCVS91a2mCXVCXfeIhvVHvJLoBTRUA1bB7nY8 BvzHD4KwjZCjm6AyVDEbJtLKTjFoiwwmLIEIjwZWt3ZbBr7Peam27Pdsv6JGo6V7WoUD 72pAQQjbTLiRIGHoJHStRcIfj1u5d2MPbLCgn3b/r0ngY91G1neZwx7VUg1WVBQJldIH i2ag== X-Gm-Message-State: AOJu0YwROgNb0aaLkVw6f+RHPwSAtdVKnqX38n1KEl2jJ0Du1mKqxGex nhFQ5ShD2sw+mpVY3piNiSznGDLaRb20ok/G1GwjmeZiO5638FrU6xmd4g== X-Gm-Gg: ASbGncszX1ZTiz8ePH2WtK2QXGbbJ7R647W1TcX11tl2ZE1RjUGrAi/9HJBT/YkIvHV Hy+mIgj6hUylc9m6bQ2Ip6tiLU7qPnFwHWyEsBc1TPL1oMHbdEBWn8jeKJlnJwZe6SHewi9mzgG XRBsXNKHNeY2ToDQgpBcVaMtygyii9CCTw8LLPZRT0yI1c4CdYlgXkT+DjuZxpO/xpH3qvfYY8q Zy4XDu2Lafh0+J8Y4h9cGkF2Mw+uU8LtJIgyhTIK77CTfKb9Vw/Q9s= X-Google-Smtp-Source: AGHT+IGlkhoHq2kzfE5PF/iwjBJqx/ey3370mQrtGnuw5bNS7aESNkcke+b5Y5ol+puR6a8FOYVZ4A== X-Received: by 2002:a05:600c:2312:b0:436:8a6f:b6db with SMTP id 5b1f17b1804b1-4368a6fb89fmr294493055e9.22.1735942250690; Fri, 03 Jan 2025 14:10:50 -0800 (PST) Received: from trevarch ([2a00:1370:817a:57c:3ad5:47ff:fe7e:7eb3]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43656b013e1sm522828035e9.12.2025.01.03.14.10.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Jan 2025 14:10:49 -0800 (PST) From: Trevor Arjeski To: bug-gnu-emacs@gnu.org Subject: 31.0.50; ERC 5.6.1-git: M-TAB not autocorrecting with erc-spelling module and flyspell X-Debbugs-CC: emacs-erc@gnu.org X-Debbugs-Cc: Date: Sat, 04 Jan 2025 01:10:48 +0300 Message-ID: <877c7bim53.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain Received-SPF: pass client-ip=2a00:1450:4864:20::32c; envelope-from=tmarjeski@gmail.com; helo=mail-wm1-x32c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) When using the erc-spelling module, pressing M-TAB to autocorrect a word does not trigger autocorrection, but using C-. or C-; does, even when `flyspell-use-meta-tab' is enabled. Minimal config: (use-package erc :config (setopt erc-modules '(spelling)) (erc-spelling-mode)) 1. Open an erc buffer 2. Type 'thier' and hit M-TAB 3. Notice it passes through to ispell - perhaps due to the command passthrough in `flyspell-auto-correct-word'. Setting `flyspell-generic-check-word-predicate' to nil in the erc buffer resolves the issue, but we lose verification that is done in `erc-spelling-flyspell-verify'. In GNU Emacs 31.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.43, cairo version 1.18.2) of 2024-12-31 built on trevarch Repository revision: 2f1052d9b0de551dc3a463ed54e21c63517497ab Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.12101015 System Description: Arch Linux Configured using: 'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib --localstatedir=/var --mandir=/usr/share/man --with-gameuser=:games --with-modules --without-m17n-flt --without-gconf --with-native-compilation=yes --with-xinput2 --with-x-toolkit=gtk3 --without-xaw3d --with-sound=no --with-tree-sitter --without-gpm --without-compress-install '--program-transform-name=s/\([ec]tags\)/\1.emacs/' 'CFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -Wno-implicit-function-declaration -g -ffile-prefix-map=/home/trev/Workspace/emacs-git/src=/usr/src/debug/emacs-git -flto=auto' 'LDFLAGS=-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,-z,pack-relative-relocs -flto=auto'' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG LCMS2 LIBOTF LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB Important settings: value of $LC_ALL: en_US.UTF-8 value of $LC_CTYPE: en_US.UTF-8 value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: ERC Minor modes in effect: erc-track-mode: t erc-track-minor-mode: t erc-spelling-mode: t flyspell-mode: t erc-ring-mode: t erc-nicks-mode: t erc-netsplit-mode: t erc-menu-mode: t erc-match-mode: t erc-list-mode: t erc-irccontrols-mode: t erc-move-to-prompt-mode: t erc-readonly-mode: t erc-scrolltobottom-mode: t erc-imenu-mode: t erc-pcomplete-mode: t erc-button--phantom-users-mode: t erc-button-mode: t erc-fill-mode: t erc-stamp-mode: t erc-autojoin-mode: t erc-networks-mode: t envrc-global-mode: t envrc-mode: t diff-hl-flydiff-mode: t global-diff-hl-mode: t ws-butler-global-mode: t ws-butler-mode: t global-treesit-auto-mode: t corfu-popupinfo-mode: t global-corfu-mode: t marginalia-mode: t savehist-mode: t vertico-mode: t auto-insert-mode: t undo-fu-session-global-mode: t undo-fu-session-mode: t which-key-mode: t electric-pair-mode: t global-auto-revert-mode: t desktop-save-mode: t recentf-mode: t save-place-mode: t override-global-mode: t global-eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t window-divider-mode: t minibuffer-regexp-mode: t column-number-mode: t line-number-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: ~/.emacs.d//lisp/aoc hides /home/trev/.emacs.d/elpa/aoc-1.0.0/aoc ~/.emacs.d//lisp/launch-program hides /home/trev/.emacs.d/elpa/launch-program-1.0.0/launch-program ~/.emacs.d//lisp/my-secrets hides /home/trev/.emacs.d/elpa/my-secrets-1.0.0/my-secrets /home/trev/.emacs.d/elpa/transient-20241201.1616/transient hides /usr/share/emacs/31.0.50/lisp/transient Features: (shadow sort mail-extr emacsbug cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine misearch multi-isearch pulse bug-reference eglot external-completion jsonrpc flymake ert pcase c++-ts-mode c-ts-mode c-ts-common xref undo-fu shortdoc project consult bookmark ace-window avy jka-compr comp comp-cstr warnings comp-run comp-common thingatpt helpful cc-langs cc-vars cc-defs trace cl-print edebug debug backtrace info-look find-func f help-fns radix-tree elisp-refs s orderless cape-char cape network-stream nsm erc-track erc-spelling flyspell ispell erc-ring erc-nicks erc-netsplit erc-menu erc-match erc-list erc-goodies erc-imenu imenu erc-pcomplete pcomplete erc-button erc-fill erc-stamp erc-join my-secrets cus-start epa-file erc format-spec erc-backend erc-networks erc-common erc-compat erc-loaddefs mule-util rainbow-mode envrc diff-hl-flydiff diff diff-hl log-view log-edit message sendmail yank-media puny dired dired-loaddefs rfc822 mml mml-sec epa derived epg rfc6068 epg-config mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev gmm-utils mailheader add-log pcvs-util vc-dir ewoc vc vc-git diff-mode track-changes files-x vc-dispatcher paredit display-line-numbers rx ligature rainbow-delimiters format-all language-id inheritenv init gnus nnheader gnus-util time-date mail-utils range mm-util mail-prsvr cus-edit pp ws-butler treesit-auto treesit corfu-popupinfo corfu marginalia savehist vertico compat autoinsert grep compile text-property-search comint ansi-osc ansi-color ring cus-load finder-inf undo-fu-session which-key diminish edmacro kmacro elec-pair autorevert filenotify desktop frameset recentf tree-widget wid-edit saveplace nord-theme autothemer color lisp-mnt dash use-package use-package-ensure use-package-delight use-package-diminish use-package-bind-key bind-key easy-mmode package browse-url xdg url url-proxy url-privacy url-expand url-methods url-history url-cookie generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse auth-source eieio eieio-core icons password-cache json subr-x map byte-opt url-vars cl-macs gv cl-extra help-mode cl-seq use-package-core cl-loaddefs cl-lib bytecomp byte-compile info 2048-game-autoloads ace-window-autoloads aoc-autoloads autothemer-autoloads avy-autoloads cape-autoloads consult-autoloads corfu-autoloads debbugs-autoloads diff-hl-autoloads diminish-autoloads elfeed-autoloads envrc-autoloads format-all-autoloads geiser-guile-autoloads geiser-autoloads git-modes-autoloads heap-autoloads helpful-autoloads elisp-refs-autoloads f-autoloads ht-autoloads inheritenv-autoloads language-id-autoloads launch-program-autoloads leetcode-autoloads aio-autoloads ligature-autoloads log4e-autoloads magit-autoloads magit-section-autoloads dash-autoloads marginalia-autoloads markdown-mode-autoloads memoize-autoloads my-secrets-autoloads nerd-icons-dired-autoloads nerd-icons-autoloads orderless-autoloads paredit-autoloads rainbow-delimiters-autoloads rainbow-mode-autoloads request-autoloads rust-mode-autoloads s-autoloads sly-autoloads transient-autoloads treesit-auto-autoloads undo-fu-autoloads undo-fu-session-autoloads vertico-autoloads vterm-autoloads with-editor-autoloads ws-butler-autoloads early-init rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd touch-screen tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic indonesian philippine cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget keymap hashtable-print-readable backquote threads dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting cairo gtk x-toolkit xinput2 x multi-tty move-toolbar make-network-process tty-child-frames native-compile emacs) Memory information: ((conses 16 712889 485226) (symbols 48 29999 54) (strings 32 127367 16380) (string-bytes 1 4530868) (vectors 16 60916) (vector-slots 8 1489370 389695) (floats 8 497 1213) (intervals 56 25972 6388) (buffers 992 41)) From debbugs-submit-bounces@debbugs.gnu.org Sat Jan 04 00:51:39 2025 Received: (at 75327) by debbugs.gnu.org; 4 Jan 2025 05:51:39 +0000 Received: from localhost ([127.0.0.1]:53052 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tTx4U-0003QL-UC for submit@debbugs.gnu.org; Sat, 04 Jan 2025 00:51:39 -0500 Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]:46203) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1tTx4S-0003QC-D7 for 75327@debbugs.gnu.org; Sat, 04 Jan 2025 00:51:37 -0500 Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-43622267b2eso135045565e9.0 for <75327@debbugs.gnu.org>; Fri, 03 Jan 2025 21:51:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1735969895; x=1736574695; darn=debbugs.gnu.org; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:to:from:from:to:cc:subject:date:message-id:reply-to; bh=5a2qZu7ZYhaIImTuvO2FlUC8ns1t1/Pfw1NBJgpme1U=; b=l7LfvfQWpbgN3r8IhVJFcMth/hBm8lNcxdjoy8wI0sRySO/Z18VUyTKe18p57d/jap c6yxi1ku3cCgHhQT2hqdVw+5AXdjwZgxtbi6X7mCZLStfnsbk33E9ME4QPxCobVtk6ym 0d6CqF85MnNzr/zI5NXGWi72yoi3IVJ8IpVScR1TyXNEkmw1WFiE6zovWi9LUSTL+gcl MI3U01Wvgl5TZY3n1PJa8w8V0I1Kd6hT5qyZifeyAFhg0meMa5QLmfzKrm2JCVcYiw96 6UhtiaLZRlUPv2EXrfUNkHV3W1Y3sbx0RpJiUb0gTjfHJKEtLy6kmXc3KdxteaM/vUNY PCXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1735969895; x=1736574695; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=5a2qZu7ZYhaIImTuvO2FlUC8ns1t1/Pfw1NBJgpme1U=; b=kYAG+UAQT1O/L2L5mglic/mTnJXCBaj4HO/GjafuF42HCYcJU7hX4k4TaarTbJoUt0 mZGr7XXDD33od8FF15sGdCPo658YTDrzlDj9NG1DAII5PjBV+bXpjbuW4KSGKYpgQ9LT uxDmFUp0+PXqvNqg87scRdaFVXTs1T6LhfOZCCpFaAMZTGiIKD8CX4oUfvFtCv4IYGa7 CP9xaWOQf9N+oMKdDpkhb2MwiYvQPEASHfH5c0EFgqd6UrXJHMKOXybT9RBh7TBG08kb z4mI2pncUZGtZOCjkZf5h6j2MffUddemvvBcArUad587xWMmdCXpsG/3vf1xoMA28q6s /WKQ== X-Gm-Message-State: AOJu0YzOMrCfh7HmwRJ1eeNrqVqdSvnFeckLo5BuA3G6CdrxDL3k11RK 13USML2sWBfG6INzWQHGjGVEqWjETFkuDmCO+9psXfCEvsgRnT0VH6vl7w== X-Gm-Gg: ASbGnctF5w2lHn7rveP4zR6LMDLKLOOyOTvZT4KGGc8TLVTZp/76U3InGcgNpGPXv3C pFykp50p1B1IAqg/hPL4icz77fUYsjNYBX3NVQMybs7nhtIGEnOscGj097s8W7HaWw7i+jhLsUn HNSTYuXZvTe6hZh26Z50tGXHZOSQcRk0gPQQPJEBqRfqxSgdtKZoqk7eTN3ztTIx9vg7gLcAV7W V+MRi58JiR61m49/wJlu8mgWBmsK/ispk4tMnh7kuzVDl5TAaOYy28= X-Google-Smtp-Source: AGHT+IFhxcqwfE+DJhIsBqHPRQaYpTIbN3tfD501lqCUjUJr6GSAfXx1Oo6vptvu5pGSxcQDeB+cjQ== X-Received: by 2002:a05:600c:4f11:b0:435:9ed3:5698 with SMTP id 5b1f17b1804b1-43668b5e09bmr397546395e9.24.1735969894770; Fri, 03 Jan 2025 21:51:34 -0800 (PST) Received: from trevarch ([2a00:1370:817a:57c:3ad5:47ff:fe7e:7eb3]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-436840b35b5sm355991545e9.39.2025.01.03.21.51.32 for <75327@debbugs.gnu.org> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Jan 2025 21:51:33 -0800 (PST) From: Trevor Arjeski To: 75327@debbugs.gnu.org Subject: Re: bug#75327: 31.0.50; ERC 5.6.1-git: M-TAB not autocorrecting with erc-spelling module and flyspell In-Reply-To: <877c7bim53.fsf@gmail.com> (Trevor Arjeski's message of "Sat, 04 Jan 2025 01:10:48 +0300") References: <877c7bim53.fsf@gmail.com> Date: Sat, 04 Jan 2025 08:51:31 +0300 Message-ID: <87zfk7qg7w.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 75327 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain Trevor Arjeski writes: Here is a patch to resolve this issue: --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-erc-bug-75327-fix-flyspell-verify.patch Content-Description: patch file >From 3d32aea96cc6ec020e35901d35f1d02994912215 Mon Sep 17 00:00:00 2001 From: Trevor Arjeski Date: Sat, 4 Jan 2025 08:45:29 +0300 Subject: [PATCH] erc: bug#75327 fix flyspell verify Slightly refactored `erc-spelling-flyspell-verify' to use `flyspell-get-word', which in turn, allows M-TAB to call `flyspell-auto-correct-word'. --- lisp/erc/erc-spelling.el | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/lisp/erc/erc-spelling.el b/lisp/erc/erc-spelling.el index 01e587af368..0bfb20fce2e 100644 --- a/lisp/erc/erc-spelling.el +++ b/lisp/erc/erc-spelling.el @@ -92,22 +92,19 @@ erc-spelling-unhighlight-word (defun erc-spelling-flyspell-verify () "Flyspell only the input line, nothing else." - ;; FIXME: Don't use `flyspell-word'! - (let ((word-data (and (boundp 'flyspell-word) - flyspell-word))) - (when word-data - (cond ((< (point) erc-input-marker) - nil) - ;; don't spell-check names of users - ((and erc-channel-users - (erc-get-channel-user (car word-data))) - (erc-spelling-unhighlight-word word-data) - nil) - ;; if '/' occurs before the word, don't spell-check it - ((eq (char-before (nth 1 word-data)) ?/) - (erc-spelling-unhighlight-word word-data) - nil) - (t t))))) + (when-let* (((>= (point) erc-input-marker)) + (word-data (flyspell-get-word))) + (cond + ;; don't spell-check names of users + ((and erc-channel-users + (erc-get-channel-user (car word-data))) + (erc-spelling-unhighlight-word word-data) + nil) + ;; if '/' occurs before the word, don't spell-check it + ((eq (char-before (nth 1 word-data)) ?/) + (erc-spelling-unhighlight-word word-data) + nil) + (t t)))) (put 'erc-mode 'flyspell-mode-predicate -- 2.47.1 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sun Jan 05 14:34:06 2025 Received: (at 75327) by debbugs.gnu.org; 5 Jan 2025 19:34:06 +0000 Received: from localhost ([127.0.0.1]:35307 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tUWNx-0005Em-0C for submit@debbugs.gnu.org; Sun, 05 Jan 2025 14:34:06 -0500 Received: from mail-108-mta142.mxroute.com ([136.175.108.142]:34527) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1tUWNs-0005EG-V8 for 75327@debbugs.gnu.org; Sun, 05 Jan 2025 14:34:03 -0500 Received: from filter006.mxroute.com ([136.175.111.3] filter006.mxroute.com) (Authenticated sender: mN4UYu2MZsgR) by mail-108-mta142.mxroute.com (ZoneMTA) with ESMTPSA id 19437f5b1ad000310e.001 for <75327@debbugs.gnu.org> (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384); Sun, 05 Jan 2025 19:33:56 +0000 X-Zone-Loop: 50f3e4bf23a639071dd23756d703a04ef13091d984c8 X-Originating-IP: [136.175.111.3] DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=neverwas.me ; s=x; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To: Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=6dek7iA0LC7hvPHZKp5bU3xTFQJ87P9Bw7X+A96MWbY=; b=SeifZNGQkuYUaf9OVu98WX4/ZS iThGNyiP71JG3s/5OlshrHI7Bln4Zh7wdlHuZnlC192rA7ovt+fl5jSqungbZoUA+MpayVUHE5esH TiHsflZJQfaV5qLmg/TYxGTaltFdMXBHU60j5d47rKQdxYdx75eQF8v9yHDFtYmmuamWxaaot0kc0 S9BPylvD6PTg5bWKmmJKLzYR1xxl0LMr/r8MKn5oXxqNDjBJYR9YtrHRrKmxfH7eVHB3sICG73QrZ Fx/3aIAAMY6runqHgFBgZfQsk21pMmnXDEXst2vnoMEB968W8h1vtF8fdnQySrwPyv4gqb5rA0wCD y9TQOgbQ==; From: "J.P." To: Trevor Arjeski Subject: Re: bug#75327: 31.0.50; ERC 5.6.1-git: M-TAB not autocorrecting with erc-spelling module and flyspell In-Reply-To: <87zfk7qg7w.fsf@gmail.com> (Trevor Arjeski's message of "Sat, 04 Jan 2025 08:51:31 +0300") References: <877c7bim53.fsf@gmail.com> <87zfk7qg7w.fsf@gmail.com> Date: Sun, 05 Jan 2025 11:33:53 -0800 Message-ID: <874j2drr6m.fsf@neverwas.me> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Authenticated-Id: masked@neverwas.me X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 75327 Cc: 75327@debbugs.gnu.org, emacs-erc@gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain Trevor Arjeski writes: > When using the erc-spelling module, pressing M-TAB to autocorrect a word > does not trigger autocorrection, but using C-. or C-; does, even when > `flyspell-use-meta-tab' is enabled. > > Minimal config: > > (use-package erc > :config > (setopt erc-modules '(spelling)) > (erc-spelling-mode)) > > 1. Open an erc buffer > 2. Type 'thier' and hit M-TAB > 3. Notice it passes through to ispell - perhaps due to the command > passthrough in `flyspell-auto-correct-word'. Regarding this "passthrough" behavior with "M-TAB" vs "C-.", I think what's happening is that when you type "C-.", the call to (let (flyspell-mode) (key-binding (kbd "C-."))) in `flyspell-auto-correct-word' returns nil because there's no global or `erc-mode' binding for that key, so `flyspell-word' ultimately runs further down in the function body. And so too does the predicate in question, `erc-spelling-flyspell-verify', with `flyspell-word' bound as a dynamic variable. By contrast, (let (flyspell-mode) (key-binding (kbd "C-M-i"))) ; or "M-TAB" yields a non-nil result, namely `ispell-complete-word', because that's the binding in `erc-mode-map'. And if you were to remove that with `local-unset-key', you'd observe `flyspell-auto-correct-word' deferring to `complete-symbol', which appeals to CAPF and `pcomplete'-related machinery in ERC buffers. > Setting `flyspell-generic-check-word-predicate' to nil in the erc buffer > resolves the issue, but we lose verification that is done in > `erc-spelling-flyspell-verify'. Right, that basically nullifies the integration. > Here is a patch to resolve this issue: > > From 3d32aea96cc6ec020e35901d35f1d02994912215 Mon Sep 17 00:00:00 2001 > From: Trevor Arjeski > Date: Sat, 4 Jan 2025 08:45:29 +0300 > Subject: [PATCH] erc: bug#75327 fix flyspell verify > > Slightly refactored `erc-spelling-flyspell-verify' to use > `flyspell-get-word', which in turn, allows M-TAB to call > `flyspell-auto-correct-word'. In the future, please use the GNU ChangeLog style for commit messages, as described in CONTRIBUTE. > --- > lisp/erc/erc-spelling.el | 29 +++++++++++++---------------- > 1 file changed, 13 insertions(+), 16 deletions(-) > > diff --git a/lisp/erc/erc-spelling.el b/lisp/erc/erc-spelling.el > index 01e587af368..0bfb20fce2e 100644 > --- a/lisp/erc/erc-spelling.el > +++ b/lisp/erc/erc-spelling.el > @@ -92,22 +92,19 @@ erc-spelling-unhighlight-word > > (defun erc-spelling-flyspell-verify () > "Flyspell only the input line, nothing else." [...] > + (when-let* (((>= (point) erc-input-marker)) > + (word-data (flyspell-get-word))) While calling `flyspell-get-word' definitely seems to work and is probably harmless, I'm not sure Flyspell's authors intended these predicates to know about the current candidate, much less modify existing overlays based on that info (both preexisting transgressions and obviously not your doing). There's also the small matter of `flyspell-get-word' running twice in quick succession during the course of a normal `flyspell-word' call. Again, probably harmless, but if there's a more idiomatic way to get at this, we should probably abide (see attached), just in case future flyspell.el hackers decide to assume all "consumers" of its API are well behaved citizens. > + (cond > + ;; don't spell-check names of users > + ((and erc-channel-users > + (erc-get-channel-user (car word-data))) > + (erc-spelling-unhighlight-word word-data) > + nil) > + ;; if '/' occurs before the word, don't spell-check it > + ((eq (char-before (nth 1 word-data)) ?/) > + (erc-spelling-unhighlight-word word-data) > + nil) > + (t t)))) > > (put 'erc-mode > 'flyspell-mode-predicate Please see the attached iteration, which has a few more changes than your v1 patch. If we go with something similar, that would, by my uninformed figuring, put you right at the copyright-exempt limit of 12-ish nontrivial lines (though we may be pushing the envelope a tad). Thanks. P.S. Have you already (or will you) put in for a copyright assignment? --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0000-v1-v2.diff >From ce275256955f20b2932ae50b9019394c8758b970 Mon Sep 17 00:00:00 2001 From: "F. Jason Park" Date: Sun, 5 Jan 2025 09:39:31 -0800 Subject: [PATCH 0/2] *** NOT A PATCH *** *** BLURB HERE *** F. Jason Park (1): [5.6.1] Declare unused functions in erc-spelling obsolete Trevor Arjeski (1): [5.6.1] Improve use of flyspell's API in erc-spelling etc/ERC-NEWS | 5 + lisp/erc/erc-spelling.el | 24 ++++- test/lisp/erc/erc-scenarios-spelling.el | 95 +++++++++++++++++++ .../erc/resources/spelling/auto-correct.eld | 35 +++++++ 4 files changed, 157 insertions(+), 2 deletions(-) create mode 100644 test/lisp/erc/erc-scenarios-spelling.el create mode 100644 test/lisp/erc/resources/spelling/auto-correct.eld Interdiff: diff --git a/etc/ERC-NEWS b/etc/ERC-NEWS index f79d45b94b6..d491c3e5132 100644 --- a/etc/ERC-NEWS +++ b/etc/ERC-NEWS @@ -96,6 +96,11 @@ Although this has always been the case, string values are now more likely to be seen because ERC no longer coerces service names to port numbers. +*** The 'spelling' module makes better use of Flyspell's API. +As a consequence, the library functions 'erc-spelling-flyspell-verify' +and 'erc-spelling-unhighlight-word' are now unused and have been marked +obsolete. + * Changes in ERC 5.6 diff --git a/lisp/erc/erc-spelling.el b/lisp/erc/erc-spelling.el index 0bfb20fce2e..f0a45683f4d 100644 --- a/lisp/erc/erc-spelling.el +++ b/lisp/erc/erc-spelling.el @@ -48,6 +48,7 @@ spelling (erc-spelling-init (current-buffer))))) ((remove-hook 'erc-connect-pre-hook #'erc-spelling-init) (dolist (buffer (erc-buffer-list)) + (remove-hook 'flyspell-incorrect-hook #'erc-spelling--flyspell-check t) (with-current-buffer buffer (flyspell-mode 0))))) (defcustom erc-spelling-dictionaries nil @@ -78,7 +79,7 @@ erc-spelling-init (if dicts (cadr (car dicts)) (erc-with-server-buffer ispell-local-dictionary))))) - (setq flyspell-generic-check-word-predicate #'erc-spelling-flyspell-verify) + (add-hook 'flyspell-incorrect-hook #'erc-spelling--flyspell-check 20 t) (flyspell-mode 1))) (defun erc-spelling-unhighlight-word (word) @@ -92,23 +93,45 @@ erc-spelling-unhighlight-word (defun erc-spelling-flyspell-verify () "Flyspell only the input line, nothing else." - (when-let* (((>= (point) erc-input-marker)) - (word-data (flyspell-get-word))) - (cond - ;; don't spell-check names of users - ((and erc-channel-users - (erc-get-channel-user (car word-data))) - (erc-spelling-unhighlight-word word-data) - nil) - ;; if '/' occurs before the word, don't spell-check it - ((eq (char-before (nth 1 word-data)) ?/) - (erc-spelling-unhighlight-word word-data) - nil) - (t t)))) + (declare (obsolete erc-spelling--flyspell-input-p "31.1")) + ;; FIXME: Don't use `flyspell-word'! + (let ((word-data (and (boundp 'flyspell-word) + flyspell-word))) + (when word-data + (cond ((< (point) erc-input-marker) + nil) + ;; don't spell-check names of users + ((and erc-channel-users + (erc-get-channel-user (car word-data))) + (erc-spelling-unhighlight-word word-data) + nil) + ;; if '/' occurs before the word, don't spell-check it + ((eq (char-before (nth 1 word-data)) ?/) + (erc-spelling-unhighlight-word word-data) + nil) + (t t))))) + +;; Do this down here to avoid adding `with-suppressed-warnings'. +(make-obsolete 'erc-spelling-unhighlight-word + "value from `flyspell-get-word' now unused" "31.1") + +(defun erc-spelling--flyspell-check (beg end _) + "Return non-nil and remove overlay if text between BEG and END is correct." + (or (and erc-channel-users + (erc-get-channel-user (buffer-substring-no-properties beg end)) + (always (flyspell-unhighlight-at beg))) + (and erc-input-marker (> beg erc-input-marker) (eq (char-before beg) ?/) + (or (= beg (1+ erc-input-marker)) ; allow /unknown if initial + (erc-command-symbol (buffer-substring-no-properties beg end))) + (always (flyspell-unhighlight-at beg))))) + +(defun erc-spelling--flyspell-input-p () + "Return non-nil if flyspell should check the prompt input at point." + (>= (point) erc-input-marker)) (put 'erc-mode 'flyspell-mode-predicate - #'erc-spelling-flyspell-verify) + #'erc-spelling--flyspell-input-p) (provide 'erc-spelling) diff --git a/test/lisp/erc/erc-scenarios-spelling.el b/test/lisp/erc/erc-scenarios-spelling.el new file mode 100644 index 00000000000..907fbd78de3 --- /dev/null +++ b/test/lisp/erc/erc-scenarios-spelling.el @@ -0,0 +1,95 @@ +;;; erc-scenarios-spelling.el --- Basic spelling scenarios -*- lexical-binding: t -*- + +;; Copyright (C) 2025 Free Software Foundation, Inc. + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see . + +;;; Code: + +(require 'ert-x) +(eval-and-compile + (let ((load-path (cons (ert-resource-directory) load-path))) + (require 'erc-scenarios-common))) + +(require 'erc-spelling) + +(ert-deftest erc-scenarios-spelling--auto-correct () + :tags '(:expensive-test + ;; FIXME make contingent upon a feature test for an English + ;; ispell setup in the current environment. + :unstable + ,@(and (getenv "ERC_TESTS_GRAPHICAL") '(:erc--graphical))) + + (ert-with-temp-directory erc-scenarios-spelling + + (erc-scenarios-common-with-noninteractive-in-term + ((erc-scenarios-common-dialog "spelling") + (process-environment (cons + (format "HOME=%s" erc-scenarios-spelling) + process-environment)) + (dumb-server (erc-d-run "localhost" t 'auto-correct)) + (port (process-contact dumb-server :service)) + (expect (erc-d-t-make-expecter)) + (erc-autojoin-channels-alist '((foonet "#chan"))) + (erc-modules (cons 'spelling erc-modules)) + (erc-server-flood-penalty 0.1)) + + (ert-info ("Connect to foonet") + (with-current-buffer (erc :server "127.0.0.1" + :port port + :nick "tester" + :full-name "tester") + (funcall expect 10 "no longer marked as being") + (should erc-spelling-mode) + (should flyspell-mode))) + + (with-current-buffer (erc-d-t-wait-for 10 (get-buffer "#chan")) + (should erc-spelling-mode) + (should flyspell-mode) + (funcall expect 10 " tester, welcome!") + + ;; Insert a command with one misspelled word. + (set-window-buffer nil (current-buffer)) + (execute-kbd-macro "\M->/AMSG an/dor /gmsg one fsbot two frob my shoe") + (funcall expect 10 "shoe") + + (let* ((ovs (overlays-in erc-input-marker (point))) + (ov1 (pop ovs)) + (ov2 (pop ovs))) + ;; At this point, flyspell should have done its thing. There + ;; should be two overlays: one on "dor" and the other on + ;; "frob". The spelling module's modifications should have + ;; prevented the two valid slash commands as well as "fsbot" + ;; from being highlighted. + (should-not ovs) + (should (flyspell-overlay-p ov1)) + (should (equal "dor" (buffer-substring (overlay-start ov1) + (overlay-end ov1)))) + (should (flyspell-overlay-p ov2)) + (should (equal "frob" (buffer-substring (overlay-start ov2) + (overlay-end ov2)))) + (goto-char (overlay-start ov2)) + + ;; Depending on the machine, this should become something + ;; like: "/AMSG an/dor /gmsg one fsbot two Rob my shoe". + (execute-kbd-macro (key-parse "M-TAB")) + (should (equal (overlays-in erc-input-marker (point-max)) + (list ov1))))) + + (when noninteractive + (erc-spelling-mode -1))))) + +;;; erc-scenarios-spelling.el ends here diff --git a/test/lisp/erc/resources/spelling/auto-correct.eld b/test/lisp/erc/resources/spelling/auto-correct.eld new file mode 100644 index 00000000000..0f00ee4825c --- /dev/null +++ b/test/lisp/erc/resources/spelling/auto-correct.eld @@ -0,0 +1,35 @@ +;; -*- mode: lisp-data; -*- +((nick 1 "NICK tester")) +((user 1 "USER user 0 * :tester") + (0 ":irc.foonet.org 001 tester :Welcome to the foonet IRC Network tester") + (0 ":irc.foonet.org 002 tester :Your host is irc.foonet.org, running version oragono-2.6.0-7481bf0385b95b16") + (0 ":irc.foonet.org 003 tester :This server was created Wed, 05 May 2021 09:05:34 UTC") + (0 ":irc.foonet.org 004 tester irc.foonet.org oragono-2.6.0-7481bf0385b95b16 BERTZios CEIMRUabefhiklmnoqstuv Iabefhkloqv") + (0 ":irc.foonet.org 005 tester AWAYLEN=390 BOT=B CASEMAPPING=ascii CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX KICKLEN=390 :are supported by this server") + (0 ":irc.foonet.org 005 tester MAXLIST=beI:60 MAXTARGETS=4 MODES MONITOR=100 NETWORK=foonet NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY WHOX :are supported by this server") + (0 ":irc.foonet.org 005 tester draft/CHATHISTORY=100 :are supported by this server") + (0 ":irc.foonet.org 251 tester :There are 0 users and 3 invisible on 1 server(s)") + (0 ":irc.foonet.org 252 tester 0 :IRC Operators online") + (0 ":irc.foonet.org 254 tester 1 :channels formed") + (0 ":irc.foonet.org 255 tester :I have 3 clients and 0 servers") + (0 ":irc.foonet.org 265 tester 3 3 :Current local users 3, max 3") + (0 ":irc.foonet.org 266 tester 3 3 :Current global users 3, max 3") + (0 ":irc.foonet.org 422 tester :MOTD File is missing")) + +((mode-user 10 "MODE tester +i") + (0 ":irc.foonet.org 221 tester +i") + (0 ":irc.foonet.org NOTICE tester :This server is in debug mode and is logging all user I/O. If you do not wish for everything you send to be readable by the server owner(s), please disconnect.") + (0 ":irc.foonet.org 305 tester :You are no longer marked as being away")) + +((join 10 "JOIN #chan") + (0 ":tester!~u@247eaxkrufj44.irc JOIN #chan") + (0 ":irc.foonet.org 353 tester = #chan :alice fsbot @bob tester") + (0 ":irc.foonet.org 366 tester #chan :End of /NAMES list.")) + +((mode-chan 10 "MODE #chan") + (0 ":irc.foonet.org 324 tester #chan +nt") + (0 ":irc.foonet.org 329 tester #chan 1620205534") + (0 ":alice!~u@yppdd5tt4admc.irc PRIVMSG #chan :tester, welcome!") + (0 ":bob!~u@yppdd5tt4admc.irc PRIVMSG #chan :tester, welcome!") + (0 ":bob!~u@yppdd5tt4admc.irc PRIVMSG #chan :alice: Nor I no strength to climb without thy help.") + (0 ":alice!~u@yppdd5tt4admc.irc PRIVMSG #chan :bob: Nothing, but let him have thanks.")) -- 2.47.1 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-5.6.1-Improve-use-of-flyspell-s-API-in-erc-spelling.patch >From 1329e0e05754bee70a8236d84d34d01ca42acea7 Mon Sep 17 00:00:00 2001 From: Trevor Arjeski Date: Sat, 4 Jan 2025 08:45:29 +0300 Subject: [PATCH 1/2] [5.6.1] Improve use of flyspell's API in erc-spelling * 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-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. (Bug#75327) Copyright-paperwork-exempt: yes --- lisp/erc/erc-spelling.el | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/lisp/erc/erc-spelling.el b/lisp/erc/erc-spelling.el index 01e587af368..d6099d4991c 100644 --- a/lisp/erc/erc-spelling.el +++ b/lisp/erc/erc-spelling.el @@ -48,6 +48,7 @@ spelling (erc-spelling-init (current-buffer))))) ((remove-hook 'erc-connect-pre-hook #'erc-spelling-init) (dolist (buffer (erc-buffer-list)) + (remove-hook 'flyspell-incorrect-hook #'erc-spelling--flyspell-check t) (with-current-buffer buffer (flyspell-mode 0))))) (defcustom erc-spelling-dictionaries nil @@ -78,7 +79,7 @@ erc-spelling-init (if dicts (cadr (car dicts)) (erc-with-server-buffer ispell-local-dictionary))))) - (setq flyspell-generic-check-word-predicate #'erc-spelling-flyspell-verify) + (add-hook 'flyspell-incorrect-hook #'erc-spelling--flyspell-check 20 t) (flyspell-mode 1))) (defun erc-spelling-unhighlight-word (word) @@ -109,9 +110,23 @@ erc-spelling-flyspell-verify nil) (t t))))) +(defun erc-spelling--flyspell-check (beg end _) + "Return non-nil and remove overlay if text between BEG and END is correct." + (or (and erc-channel-users + (erc-get-channel-user (buffer-substring-no-properties beg end)) + (always (flyspell-unhighlight-at beg))) + (and erc-input-marker (> beg erc-input-marker) (eq (char-before beg) ?/) + (or (= beg (1+ erc-input-marker)) ; allow /unknown if initial + (erc-command-symbol (buffer-substring-no-properties beg end))) + (always (flyspell-unhighlight-at beg))))) + +(defun erc-spelling--flyspell-input-p () + "Return non-nil if flyspell should check the prompt input at point." + (>= (point) erc-input-marker)) + (put 'erc-mode 'flyspell-mode-predicate - #'erc-spelling-flyspell-verify) + #'erc-spelling--flyspell-input-p) (provide 'erc-spelling) -- 2.47.1 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0002-5.6.1-Declare-unused-functions-in-erc-spelling-obsol.patch >From ce275256955f20b2932ae50b9019394c8758b970 Mon Sep 17 00:00:00 2001 From: "F. Jason Park" Date: Sat, 4 Jan 2025 11:40:01 -0800 Subject: [PATCH 2/2] [5.6.1] Declare unused functions in erc-spelling obsolete * 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 input, even those for which the slash served as mere punctuation (a "stroke"), as in "something/misspelt." Now, 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 (erc-spelling-flyspell-verify) (erc-spelling-unhighlight-word): Mark obsolete. * test/lisp/erc/erc-scenarios-spelling.el: New file. * test/lisp/erc/resources/spelling/auto-correct.eld: New file. (Bug#75327) --- etc/ERC-NEWS | 5 + lisp/erc/erc-spelling.el | 5 + test/lisp/erc/erc-scenarios-spelling.el | 95 +++++++++++++++++++ .../erc/resources/spelling/auto-correct.eld | 35 +++++++ 4 files changed, 140 insertions(+) create mode 100644 test/lisp/erc/erc-scenarios-spelling.el create mode 100644 test/lisp/erc/resources/spelling/auto-correct.eld diff --git a/etc/ERC-NEWS b/etc/ERC-NEWS index f79d45b94b6..d491c3e5132 100644 --- a/etc/ERC-NEWS +++ b/etc/ERC-NEWS @@ -96,6 +96,11 @@ Although this has always been the case, string values are now more likely to be seen because ERC no longer coerces service names to port numbers. +*** The 'spelling' module makes better use of Flyspell's API. +As a consequence, the library functions 'erc-spelling-flyspell-verify' +and 'erc-spelling-unhighlight-word' are now unused and have been marked +obsolete. + * Changes in ERC 5.6 diff --git a/lisp/erc/erc-spelling.el b/lisp/erc/erc-spelling.el index d6099d4991c..f0a45683f4d 100644 --- a/lisp/erc/erc-spelling.el +++ b/lisp/erc/erc-spelling.el @@ -93,6 +93,7 @@ erc-spelling-unhighlight-word (defun erc-spelling-flyspell-verify () "Flyspell only the input line, nothing else." + (declare (obsolete erc-spelling--flyspell-input-p "31.1")) ;; FIXME: Don't use `flyspell-word'! (let ((word-data (and (boundp 'flyspell-word) flyspell-word))) @@ -110,6 +111,10 @@ erc-spelling-flyspell-verify nil) (t t))))) +;; Do this down here to avoid adding `with-suppressed-warnings'. +(make-obsolete 'erc-spelling-unhighlight-word + "value from `flyspell-get-word' now unused" "31.1") + (defun erc-spelling--flyspell-check (beg end _) "Return non-nil and remove overlay if text between BEG and END is correct." (or (and erc-channel-users diff --git a/test/lisp/erc/erc-scenarios-spelling.el b/test/lisp/erc/erc-scenarios-spelling.el new file mode 100644 index 00000000000..907fbd78de3 --- /dev/null +++ b/test/lisp/erc/erc-scenarios-spelling.el @@ -0,0 +1,95 @@ +;;; erc-scenarios-spelling.el --- Basic spelling scenarios -*- lexical-binding: t -*- + +;; Copyright (C) 2025 Free Software Foundation, Inc. + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see . + +;;; Code: + +(require 'ert-x) +(eval-and-compile + (let ((load-path (cons (ert-resource-directory) load-path))) + (require 'erc-scenarios-common))) + +(require 'erc-spelling) + +(ert-deftest erc-scenarios-spelling--auto-correct () + :tags '(:expensive-test + ;; FIXME make contingent upon a feature test for an English + ;; ispell setup in the current environment. + :unstable + ,@(and (getenv "ERC_TESTS_GRAPHICAL") '(:erc--graphical))) + + (ert-with-temp-directory erc-scenarios-spelling + + (erc-scenarios-common-with-noninteractive-in-term + ((erc-scenarios-common-dialog "spelling") + (process-environment (cons + (format "HOME=%s" erc-scenarios-spelling) + process-environment)) + (dumb-server (erc-d-run "localhost" t 'auto-correct)) + (port (process-contact dumb-server :service)) + (expect (erc-d-t-make-expecter)) + (erc-autojoin-channels-alist '((foonet "#chan"))) + (erc-modules (cons 'spelling erc-modules)) + (erc-server-flood-penalty 0.1)) + + (ert-info ("Connect to foonet") + (with-current-buffer (erc :server "127.0.0.1" + :port port + :nick "tester" + :full-name "tester") + (funcall expect 10 "no longer marked as being") + (should erc-spelling-mode) + (should flyspell-mode))) + + (with-current-buffer (erc-d-t-wait-for 10 (get-buffer "#chan")) + (should erc-spelling-mode) + (should flyspell-mode) + (funcall expect 10 " tester, welcome!") + + ;; Insert a command with one misspelled word. + (set-window-buffer nil (current-buffer)) + (execute-kbd-macro "\M->/AMSG an/dor /gmsg one fsbot two frob my shoe") + (funcall expect 10 "shoe") + + (let* ((ovs (overlays-in erc-input-marker (point))) + (ov1 (pop ovs)) + (ov2 (pop ovs))) + ;; At this point, flyspell should have done its thing. There + ;; should be two overlays: one on "dor" and the other on + ;; "frob". The spelling module's modifications should have + ;; prevented the two valid slash commands as well as "fsbot" + ;; from being highlighted. + (should-not ovs) + (should (flyspell-overlay-p ov1)) + (should (equal "dor" (buffer-substring (overlay-start ov1) + (overlay-end ov1)))) + (should (flyspell-overlay-p ov2)) + (should (equal "frob" (buffer-substring (overlay-start ov2) + (overlay-end ov2)))) + (goto-char (overlay-start ov2)) + + ;; Depending on the machine, this should become something + ;; like: "/AMSG an/dor /gmsg one fsbot two Rob my shoe". + (execute-kbd-macro (key-parse "M-TAB")) + (should (equal (overlays-in erc-input-marker (point-max)) + (list ov1))))) + + (when noninteractive + (erc-spelling-mode -1))))) + +;;; erc-scenarios-spelling.el ends here diff --git a/test/lisp/erc/resources/spelling/auto-correct.eld b/test/lisp/erc/resources/spelling/auto-correct.eld new file mode 100644 index 00000000000..0f00ee4825c --- /dev/null +++ b/test/lisp/erc/resources/spelling/auto-correct.eld @@ -0,0 +1,35 @@ +;; -*- mode: lisp-data; -*- +((nick 1 "NICK tester")) +((user 1 "USER user 0 * :tester") + (0 ":irc.foonet.org 001 tester :Welcome to the foonet IRC Network tester") + (0 ":irc.foonet.org 002 tester :Your host is irc.foonet.org, running version oragono-2.6.0-7481bf0385b95b16") + (0 ":irc.foonet.org 003 tester :This server was created Wed, 05 May 2021 09:05:34 UTC") + (0 ":irc.foonet.org 004 tester irc.foonet.org oragono-2.6.0-7481bf0385b95b16 BERTZios CEIMRUabefhiklmnoqstuv Iabefhkloqv") + (0 ":irc.foonet.org 005 tester AWAYLEN=390 BOT=B CASEMAPPING=ascii CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX KICKLEN=390 :are supported by this server") + (0 ":irc.foonet.org 005 tester MAXLIST=beI:60 MAXTARGETS=4 MODES MONITOR=100 NETWORK=foonet NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY WHOX :are supported by this server") + (0 ":irc.foonet.org 005 tester draft/CHATHISTORY=100 :are supported by this server") + (0 ":irc.foonet.org 251 tester :There are 0 users and 3 invisible on 1 server(s)") + (0 ":irc.foonet.org 252 tester 0 :IRC Operators online") + (0 ":irc.foonet.org 254 tester 1 :channels formed") + (0 ":irc.foonet.org 255 tester :I have 3 clients and 0 servers") + (0 ":irc.foonet.org 265 tester 3 3 :Current local users 3, max 3") + (0 ":irc.foonet.org 266 tester 3 3 :Current global users 3, max 3") + (0 ":irc.foonet.org 422 tester :MOTD File is missing")) + +((mode-user 10 "MODE tester +i") + (0 ":irc.foonet.org 221 tester +i") + (0 ":irc.foonet.org NOTICE tester :This server is in debug mode and is logging all user I/O. If you do not wish for everything you send to be readable by the server owner(s), please disconnect.") + (0 ":irc.foonet.org 305 tester :You are no longer marked as being away")) + +((join 10 "JOIN #chan") + (0 ":tester!~u@247eaxkrufj44.irc JOIN #chan") + (0 ":irc.foonet.org 353 tester = #chan :alice fsbot @bob tester") + (0 ":irc.foonet.org 366 tester #chan :End of /NAMES list.")) + +((mode-chan 10 "MODE #chan") + (0 ":irc.foonet.org 324 tester #chan +nt") + (0 ":irc.foonet.org 329 tester #chan 1620205534") + (0 ":alice!~u@yppdd5tt4admc.irc PRIVMSG #chan :tester, welcome!") + (0 ":bob!~u@yppdd5tt4admc.irc PRIVMSG #chan :tester, welcome!") + (0 ":bob!~u@yppdd5tt4admc.irc PRIVMSG #chan :alice: Nor I no strength to climb without thy help.") + (0 ":alice!~u@yppdd5tt4admc.irc PRIVMSG #chan :bob: Nothing, but let him have thanks.")) -- 2.47.1 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sun Jan 05 15:34:39 2025 Received: (at 75327) by debbugs.gnu.org; 5 Jan 2025 20:34:39 +0000 Received: from localhost ([127.0.0.1]:35422 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tUXKY-0008QI-Q9 for submit@debbugs.gnu.org; Sun, 05 Jan 2025 15:34:39 -0500 Received: from mail-lf1-x12f.google.com ([2a00:1450:4864:20::12f]:54662) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1tUXKW-0008Q9-SY for 75327@debbugs.gnu.org; Sun, 05 Jan 2025 15:34:38 -0500 Received: by mail-lf1-x12f.google.com with SMTP id 2adb3069b0e04-54025432becso14623900e87.1 for <75327@debbugs.gnu.org>; Sun, 05 Jan 2025 12:34:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1736109275; x=1736714075; darn=debbugs.gnu.org; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=phFDHgzPV6kc1LEyqv2jTEA9zk+Vd5a/m5qQcDkndBc=; b=ib3e0H1SN53EYMgu4yPH/YFTvvVEVCfbMsLgOkSwJGV+FSiLAsNYtc++sO44yqfZlt NvA0zBnJhXZlf5bhknUSIIqA0m04Bi4GekuJU00pX0SyNk4BTTIaZq+CT+foQTVU6XD8 LeMqOR1+b4J2cXsMHOzgmcrgtVG4RgYNjlxv4gG26kbw61atwP1f56hh3ye7XoU+Xxon ABQpYGC8kR3ZQIGuzjhswtBO/UxhVfBS1IFEKgfkfHf8Jlmkn6ek/BKV6pjGcXRFCnv2 6leSWfUBtPthwHWVzR2iYh7Lj/dC2kXOygcAjsX4dz+lNSPyhXuCTjztC1HtDhG7CX/Q nuAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736109275; x=1736714075; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=phFDHgzPV6kc1LEyqv2jTEA9zk+Vd5a/m5qQcDkndBc=; b=QkykzlSxHl5rh/NVDK+0efo6HuoYUzTFCoKQYyiUsjaJ11chlLcI81qII5RZOSRFC8 8h+l3oi/iKhots5r3GB5q4tu5zzecAQFujlpzWiu5wfDcU8ZFUTrjfM9g8ARwvEFM/aN ZZk9uwX4maPAFJuOuqT1L9Zyf+pvJoG7XdntF1ueT/vEaHVVl7eOPzpKE3k/nFGA7Iov ltfTbjPPWeCPCPEuXsr+Upr0eol9aIUt6eRTShbgTNZiiY79T9fwx75NyTIUn+8aYU/r xW7VYzBLN5xw9JIQzopP6fw/2lkx1wuudz/tMXPFHR1Uc7xkRmuF88JgZ+hgwgyN55V3 o7kA== X-Gm-Message-State: AOJu0YxQgqLuzpKyT7A+c1NRgsG/VLP2dXEQftoMpZFtcVj+XxHZENWf WDSUsV8FVBMYTMzCwOtxAqqTjt6xfovj+m6le9YVI98TESadmZFlce9A9H45 X-Gm-Gg: ASbGncshtFqVGLnSmtjPXnDlAvOQweKd1p1dCTccBbZiUrqc18bFo2kDZblwoDtKlgE db01vrYeBfu6mp6YXvCj1fHkrh/UExUEaJFFDAztEWjNGNL9ScDql/OUZLG9tAz0sBiYjdAAE8y tab6iBIJElU9Z5FuD1t85pmKe3OF0ci8GXqnTn3spF4qypV3p7t20WSCR0iYc+B3BiPU8SAn2lp HPmgxZ7ICRTsRjeQXlymm44c/Yg3vLUKZJFzGQ1y3RAV2KGfg== X-Google-Smtp-Source: AGHT+IHjeq7kD4235sChIODVJXkFLT29WtGT9HDDE1O3ctrI94NraFdtErrc7w8jh0xB6qlK+x8Yiw== X-Received: by 2002:a05:6512:683:b0:542:2f0f:66d9 with SMTP id 2adb3069b0e04-5422f0f69d8mr18248578e87.16.1736109274741; Sun, 05 Jan 2025 12:34:34 -0800 (PST) Received: from trevarch ([193.42.63.43]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5423bfa6bbbsm3437450e87.276.2025.01.05.12.34.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jan 2025 12:34:33 -0800 (PST) From: Trevor Arjeski To: "J.P." Subject: Re: bug#75327: 31.0.50; ERC 5.6.1-git: M-TAB not autocorrecting with erc-spelling module and flyspell In-Reply-To: <874j2drr6m.fsf@neverwas.me> (J. P.'s message of "Sun, 05 Jan 2025 11:33:53 -0800") References: <877c7bim53.fsf@gmail.com> <87zfk7qg7w.fsf@gmail.com> <874j2drr6m.fsf@neverwas.me> Date: Sun, 05 Jan 2025 23:34:29 +0300 Message-ID: <87h66dgfu2.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 75327 Cc: 75327@debbugs.gnu.org, emacs-erc@gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) "J.P." writes: Thanks for the bug explanation! > In the future, please use the GNU ChangeLog style for commit messages, > as described in CONTRIBUTE. Noted. >> --- >> lisp/erc/erc-spelling.el | 29 +++++++++++++---------------- >> 1 file changed, 13 insertions(+), 16 deletions(-) >> >> diff --git a/lisp/erc/erc-spelling.el b/lisp/erc/erc-spelling.el >> index 01e587af368..0bfb20fce2e 100644 >> --- a/lisp/erc/erc-spelling.el >> +++ b/lisp/erc/erc-spelling.el >> @@ -92,22 +92,19 @@ erc-spelling-unhighlight-word >> >> (defun erc-spelling-flyspell-verify () >> "Flyspell only the input line, nothing else." > [...] >> + (when-let* (((>= (point) erc-input-marker)) >> + (word-data (flyspell-get-word))) > > While calling `flyspell-get-word' definitely seems to work and is > probably harmless, I'm not sure Flyspell's authors intended these > predicates to know about the current candidate, much less modify > existing overlays based on that info (both preexisting transgressions > and obviously not your doing). > > There's also the small matter of `flyspell-get-word' running twice in > quick succession during the course of a normal `flyspell-word' call. > Again, probably harmless, but if there's a more idiomatic way to get at > this, we should probably abide (see attached), just in case future > flyspell.el hackers decide to assume all "consumers" of its API are well > behaved citizens. > >> + (cond >> + ;; don't spell-check names of users >> + ((and erc-channel-users >> + (erc-get-channel-user (car word-data))) >> + (erc-spelling-unhighlight-word word-data) >> + nil) >> + ;; if '/' occurs before the word, don't spell-check it >> + ((eq (char-before (nth 1 word-data)) ?/) >> + (erc-spelling-unhighlight-word word-data) >> + nil) >> + (t t)))) >> >> (put 'erc-mode >> 'flyspell-mode-predicate > > Please see the attached iteration, which has a few more changes than > your v1 patch. If we go with something similar, that would, by my > uninformed figuring, put you right at the copyright-exempt limit of > 12-ish nontrivial lines (though we may be pushing the envelope a tad). > > Thanks. Looks good to me, as long as it fixes the issue I will be glad. You could just remove my name from the commit, since the changes in the patches don't really resemble my crude fix. > P.S. Have you already (or will you) put in for a copyright assignment? I have not. Not sure if I will do it. I am content with my patches just being guides to help a maintainer, since I am not really familiar with the true inner workings of emacs or erc. From debbugs-submit-bounces@debbugs.gnu.org Thu Jan 09 22:33:44 2025 Received: (at 75327-done) by debbugs.gnu.org; 10 Jan 2025 03:33:44 +0000 Received: from localhost ([127.0.0.1]:55969 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tW5mK-0007bB-Ds for submit@debbugs.gnu.org; Thu, 09 Jan 2025 22:33:44 -0500 Received: from mail-108-mta93.mxroute.com ([136.175.108.93]:43375) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1tW5mI-0007b1-F2 for 75327-done@debbugs.gnu.org; Thu, 09 Jan 2025 22:33:43 -0500 Received: from filter006.mxroute.com ([136.175.111.3] filter006.mxroute.com) (Authenticated sender: mN4UYu2MZsgR) by mail-108-mta93.mxroute.com (ZoneMTA) with ESMTPSA id 1944e4655cd000310e.001 for <75327-done@debbugs.gnu.org> (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384); Fri, 10 Jan 2025 03:33:39 +0000 X-Zone-Loop: 47291990abecf7fe1c6a8497a3f4ba2cf88f35b8cac5 X-Originating-IP: [136.175.111.3] DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=neverwas.me ; s=x; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To: Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=PybI5VTXylBcY1rdXElmoF4R+rnkrFNjdfBP3Z3pHZI=; b=JPtPh/ITjzwTmX4PqaJSzQTwHs rIlpeKXCxNOoFP6SGsZzDSfDQGspB+ymUdmXZyeqxbeFnIn3bUHWtCQIw/gO0G0bcah/85KoqEfgm eilAwpbILoMn6rLcM+wUV3Kh+/LDJ3Mqa/bLGC4OP9a4vEvJ5dmc6imQC9f4ukhXLCj7AjTNBolfT rKy9ufyTcg1RU50G49uQHysyRcJj+fLapLWF3HIx1xrQ1kT42q2AJr8h61+LbtSTXsOBTaYDlZ72k LAfOhhFG+fKLQg5EZT64r6jPpPls8HDFoSNCx9NOv5N8B+V0SRCGG8LyvYFJT6PKks7dryqkJm5Ti JGlf1/4g==; From: "J.P." To: Trevor Arjeski Subject: Re: bug#75327: 31.0.50; ERC 5.6.1-git: M-TAB not autocorrecting with erc-spelling module and flyspell In-Reply-To: <87h66dgfu2.fsf@gmail.com> (Trevor Arjeski's message of "Sun, 05 Jan 2025 23:34:29 +0300") References: <877c7bim53.fsf@gmail.com> <87zfk7qg7w.fsf@gmail.com> <874j2drr6m.fsf@neverwas.me> <87h66dgfu2.fsf@gmail.com> Date: Thu, 09 Jan 2025 19:33:36 -0800 Message-ID: <87plkvpckv.fsf@neverwas.me> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Authenticated-Id: masked@neverwas.me X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 75327-done Cc: 75327-done@debbugs.gnu.org, emacs-erc@gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Trevor Arjeski writes: > Looks good to me, as long as it fixes the issue I will be glad. You > could just remove my name from the commit, since the changes in the > patches don't really resemble my crude fix. Installed on master as: https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=f9ecde75 Closing for now (but will reopen if problems remain). >> P.S. Have you already (or will you) put in for a copyright assignment? > > I have not. Not sure if I will do it. I am content with my patches just > being guides to help a maintainer, since I am not really familiar with > the true inner workings of emacs or erc. Patches of this type are helpful indeed. Thanks! From unknown Wed Jun 18 00:22:27 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Fri, 07 Feb 2025 12:24:08 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator