Received: (at 79417) by debbugs.gnu.org; 25 Nov 2025 20:31:52 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Nov 25 15:31:52 2025 Received: from localhost ([127.0.0.1]:42317 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vNzhX-0004qu-98 for submit <at> debbugs.gnu.org; Tue, 25 Nov 2025 15:31:51 -0500 Received: from fhigh-b8-smtp.messagingengine.com ([202.12.124.159]:51713) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <rudolf@HIDDEN>) id 1vNHYc-0005XM-S5 for 79417 <at> debbugs.gnu.org; Sun, 23 Nov 2025 16:23:43 -0500 Received: from phl-compute-05.internal (phl-compute-05.internal [10.202.2.45]) by mailfhigh.stl.internal (Postfix) with ESMTP id 3972B7A006D; Sun, 23 Nov 2025 16:23:37 -0500 (EST) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-05.internal (MEProxy); Sun, 23 Nov 2025 16:23:37 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adamkovic.org; h=cc:cc:content-transfer-encoding:content-type:content-type :date:date:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:subject:subject:to:to; s=fm2; t=1763933017; x=1764019417; bh=+AzYnbgpU78LL7X+6rYNgVJPDYQ1wvgM 84ijIc/2JbU=; b=hvXb0iq/FJ8eTXeQ479Fj59Z1FMT/ZzMcKzCr+6PBQJzVGRK gJNr+elAdC7A6rG5m8CAm9MeyjKCpX9bspN5qpmWYrZqWnP2KLMNpAS7Crlw6nXk J8MfX/5kJ3SDe4vswaDxKBU36kSnbJtFFtBnfxeQsca2niq+RhpE/EFKT76TvGU2 p2ixVEKq4jHcnDCiuo6TasYgnUFrGQNC9enNrDJHCEUN3cWPw7y/kgVZ0yRR3mvq 4tCbrGjBF4YQn8pQWQEuMQcVvkEc9cJ9z7ZY+ecX0mcKGZ66c8BOTzURUJnYwa3f xwQHS/vLKdte3puHK49SU1xTNcfjgH8GirkpFw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1763933017; x= 1764019417; bh=+AzYnbgpU78LL7X+6rYNgVJPDYQ1wvgM84ijIc/2JbU=; b=y 4DQe1ksh9mwj1ZmMHhmECcHVIZeg+rXHFLrIKnfhG0lkkxNdY7MpVMY6dwkoufxM UYBkFBhGk3WO5UCdfqxMMmbSaEGNgNLe5rtJIaIeYMdBA3Ju86egQWif83vAok5q GdXnAV6OYL3nYASE1cHXGYJUxk7BERFIcST0W4gasJ9DHhXv2pSpN8k9ZXQLMG1b kCHY6u8OadTtUaE/W/G0nV7icC5/+E5YImqm6nnt7g3A1eiu0ZU08SyO24iLB91l VtZUTlFXF/cmS/oteTcAmaJpIROdR5xKMFJKcdk8Pw7e3FOwjGyrECSKMChW3ilv GJ38dYlJzs2Py+jnC6Vdw== X-ME-Sender: <xms:WHsjaaENEMyVy3MuyICwakB5bqFayK9qoz6-xLxiuknH5dvjRPQ53Q> <xme:WHsjadl3TnxV3gCyiIX9MJEjrS8nW72OvOTQl1By9wmKJl7EMXHMdxBYyRyBrn9gv iSrd5zgfpSJxFF8CghAmP8d6c4y96BofY9tlZEza6eDNpodlNRgaAw> X-ME-Received: <xmr:WHsjaWbZZQKYcJTsKA7DURMeZ-Wde3-xDV3cZR8VuqwhKFkJ-a6BWFJR4rHEUN-nrgTZBFlhT72PuneI8I-rou9ku0t61wg> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdeggddvfeeijeelucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhephffvvefujghffffkgggtgfesthhqredttddtjeenucfhrhhomheptfhuugholhhf ucetuggrmhhkohhvihgtuceorhhuugholhhfsegruggrmhhkohhvihgtrdhorhhgqeenuc ggtffrrghtthgvrhhnpeeiueetheffudfghfeggeevheevvddtkefflefhueeludfgtefg ffeltdfhudejgeenucffohhmrghinheprggurghmkhhovhhitgdrohhrghenucevlhhush htvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehruhguohhlfhesrggu rghmkhhovhhitgdrohhrghdpnhgspghrtghpthhtohepjedpmhhouggvpehsmhhtphhouh htpdhrtghpthhtohepvghmrggtshdquggvvhgvlhesghhnuhdrohhrghdprhgtphhtthho pegrrhhsthhofhhfvghlsehgmhgrihhlrdgtohhmpdhrtghpthhtohepjeelgedujeesug gvsggsuhhgshdrghhnuhdrohhrghdprhgtphhtthhopeihrghnughrohhssehgmhgrihhl rdgtohhmpdhrtghpthhtoheprhhmshesghhnuhdrohhrghdprhgtphhtthhopehkrhhish gsrghlihhnthhonhgrsehgmhgrihhlrdgtohhmpdhrtghpthhtohepvghlihiisehgnhhu rdhorhhg X-ME-Proxy: <xmx:WHsjaaGiZvO12jP3GkjLMqFFY3z2VTqzkpatLWu-yPBruxU_74WzAQ> <xmx:WHsjafK48KpXXeZqV1iY9zBMTmfGECYS1zG9F7LaHwOWz-SoEhgy6Q> <xmx:WHsjadOKDbzDXGwU4myHZ9Au8gEEemmhRfHM267aXO7ppl0GRSWpOA> <xmx:WHsjaXkJ3KRCYJDKuZ1zCFT8-l8Aard8fMgEtSwhZMKPsIjS93pCYQ> <xmx:WXsjaWE6nARcFMcKJdmX5DqzYbF-NxxVagxenQTvOC3W8oLDEddsAVgb> Feedback-ID: i88214938:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 23 Nov 2025 16:23:35 -0500 (EST) From: Rudolf =?utf-8?Q?Adamkovi=C4=8D?= <rudolf@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN>, Kristoffer Balintona <krisbalintona@HIDDEN> Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? In-Reply-To: <86ecpqh2nk.fsf@HIDDEN> References: <87ecsft5qu.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <86ldkbrtin.fsf@HIDDEN> <CANVbq5m1zBV0M9aRn6kD_BRZ8miOV0rADHJvU+ernWB8CHdKvA@HIDDEN> <86jyzusdto.fsf@HIDDEN> <CANVbq5=vfgreuEdi02_unSPxqFmNV_hqNXP1Q8vRuvN8P+Dn3w@HIDDEN> <E1vKTQs-0003rt-NS@HIDDEN> <86h5uumq8m.fsf@HIDDEN> <CANVbq5=WDnTMjbnTQV2XA8XK-CfDWPX1_E69uB6Qa8+FsLcgZw@HIDDEN> <m2jyzmgx5k.fsf@HIDDEN> <865xb6jg3d.fsf@HIDDEN> <m2seeax89s.fsf@HIDDEN> <86see9j51y.fsf@HIDDEN> <m2ms4fxcwv.fsf@HIDDEN> <CANVbq5n+LpHfx7yU+KDU7G8qZfp3fQfwHObjOOY5vfndbTBM7w@HIDDEN> <86ecpqh2nk.fsf@HIDDEN> Date: Sun, 23 Nov 2025 22:23:32 +0100 Message-ID: <m2see4v3xn.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 79417 Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, arstoffel@HIDDEN, rms@HIDDEN, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) Eli Zaretskii <eliz@HIDDEN> writes: > I guess what this boils down to is that some people simply are > unaccustomed to menus, and prefer *Completions* style popup buffers. Eli, how can you say that? As explained multiple times, the popup does not offer the needed functionality, including basic visible and editable user input, and also fuzzy matching within the suggested words, ideally one that respects the completion style. It does not boil down to "some people are simply unaccustomed to menus", and if you think so, then I failed badly at communicating. > Which is fine by me, as personal preferences go (although I'd still > would like to hear from Richard why he considers menus inconvenient), > so feel free to offer optional completions-buffer UI for this. > There's no reason for us to argue about personal preferences. 1+ and thank you. Rudy --=20 "Programming reliably -- must be an activity of an undeniably mathematical nature [=E2=80=A6] You see, mathematics is about thinking, and doing mathematics is always trying to think as well as possible." --- Edsger W. Dijkstra, 1981 Rudolf Adamkovi=C4=8D <rudolf@HIDDEN> [he/him] http://adamkovic.org
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 25 Nov 2025 20:31:19 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Nov 25 15:31:18 2025 Received: from localhost ([127.0.0.1]:42287 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vNzgy-0004Td-Mh for submit <at> debbugs.gnu.org; Tue, 25 Nov 2025 15:31:18 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:48624) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vMjLA-0004Gn-TI for 79417 <at> debbugs.gnu.org; Sat, 22 Nov 2025 03:51:35 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vMjKb-0001Yd-E0; Sat, 22 Nov 2025 03:50:57 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=KHqNIyX2mnBrlz9LcBm6CX2I3fzpJ6FeV0Tq2S6KFU4=; b=I8Omk0IClM92BUHCVu1+ O/gLAGlN7Luxm4ueCmSJidN4cqjF2eOlYHOBvYgAA5Lf27E+eZRuiY8plgZiPUCgha6xDUgz4mHwM BruAYLoIjlZK4+r/vWPF697qy8BVbOOCnoHswLg2zBRLCqO9YSv6sk+4SeSEODsJXXz7vuI5CxR8+ wmWkzi0FHV6nLcK0rKOHUrGF3t1kPiqP2EhMqMWqVDvC9LyTMO28GZlfJGDBiKqAS24/HCxs2fSQJ nqAegfKtTNw9vfTS+TvlnKKbfQJOVvJAgMJADY7TqdfXhwLc+SjZidekRDknyeHQ6MQPcEO5o/2YI Ptv/0bbbEGvwWA==; Date: Sat, 22 Nov 2025 10:50:23 +0200 Message-Id: <86ecpqh2nk.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Kristoffer Balintona <krisbalintona@HIDDEN> In-Reply-To: <CANVbq5n+LpHfx7yU+KDU7G8qZfp3fQfwHObjOOY5vfndbTBM7w@HIDDEN> (message from Kristoffer Balintona on Fri, 21 Nov 2025 20:15:26 -0800) Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <86ldkbrtin.fsf@HIDDEN> <CANVbq5m1zBV0M9aRn6kD_BRZ8miOV0rADHJvU+ernWB8CHdKvA@HIDDEN> <86jyzusdto.fsf@HIDDEN> <CANVbq5=vfgreuEdi02_unSPxqFmNV_hqNXP1Q8vRuvN8P+Dn3w@HIDDEN> <E1vKTQs-0003rt-NS@HIDDEN> <86h5uumq8m.fsf@HIDDEN> <CANVbq5=WDnTMjbnTQV2XA8XK-CfDWPX1_E69uB6Qa8+FsLcgZw@HIDDEN> <m2jyzmgx5k.fsf@HIDDEN> <865xb6jg3d.fsf@HIDDEN> <m2seeax89s.fsf@HIDDEN> <86see9j51y.fsf@HIDDEN> <m2ms4fxcwv.fsf@HIDDEN> <CANVbq5n+LpHfx7yU+KDU7G8qZfp3fQfwHObjOOY5vfndbTBM7w@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 79417 Cc: rudolf@HIDDEN, rms@HIDDEN, 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN, yandros@HIDDEN, arstoffel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Kristoffer Balintona <krisbalintona@HIDDEN> > Date: Fri, 21 Nov 2025 20:15:26 -0800 > Cc: rms@HIDDEN, yandros@HIDDEN, 79417 <at> debbugs.gnu.org, arstoffel@HIDDEN, > emacs-devel@HIDDEN > > On Fri, Nov 21 2025, Rudolf Adamkovič wrote: > > >> Professional editors? MS Word shows a very similar menu, FWIW. Is > >> that professional enough for us? > > > > I have never used Word personally, so you know better in that regard. > > But in my mind, I expect a professional editor to have a spell checker > > with editable input, partial matching, and then more (built on top of > > a solid foundation, once in place). > > To add, I think in the context of Word it makes sense to only have a > popup-based word-correction UI, since using the mouse is the primary > means of navigation and interaction there (aside from using the keyboard > when typing). On the other hand, Emacs is very keyboard-centric (as a > fact and also as an expectation of many of its users), so it makes more > sense here for there to be a keyboard-only word-correction UI. You've changed the subject. I was responding to a claim that showing a menu with candidate replacements was "unprofessional". The claim about mouse interaction was already refuted earlier: > (Eli has already informed me that you can use your keyboard arrow keys > to select the candidates in the popup menu, but Rudy explained why that > popup menu may not be ideal/appealing for the purposes of > word-correction.) I guess what this boils down to is that some people simply are unaccustomed to menus, and prefer *Completions* style popup buffers. Which is fine by me, as personal preferences go (although I'd still would like to hear from Richard why he considers menus inconvenient), so feel free to offer optional completions-buffer UI for this. There's no reason for us to argue about personal preferences.
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 25 Nov 2025 20:16:58 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Nov 25 15:16:58 2025 Received: from localhost ([127.0.0.1]:55359 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vNzT7-0005Ck-RV for submit <at> debbugs.gnu.org; Tue, 25 Nov 2025 15:16:58 -0500 Received: from fout-b2-smtp.messagingengine.com ([202.12.124.145]:47823) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <rudolf@HIDDEN>) id 1vMZCt-0007HV-05 for 79417 <at> debbugs.gnu.org; Fri, 21 Nov 2025 17:02:35 -0500 Received: from phl-compute-11.internal (phl-compute-11.internal [10.202.2.51]) by mailfout.stl.internal (Postfix) with ESMTP id 3C5ED1D000FF; Fri, 21 Nov 2025 17:02:11 -0500 (EST) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-11.internal (MEProxy); Fri, 21 Nov 2025 17:02:11 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adamkovic.org; h=cc:cc:content-transfer-encoding:content-type:content-type :date:date:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:subject:subject:to:to; s=fm1; t=1763762531; x=1763848931; bh=p5OH9dR3qZ0e/kgCavoKvpJ6yXPyc4X9 GkRgiaSM4oY=; b=d47PTvUkuGsDdgga8hJpXDEMrke7HyS8jL+euSPgMT6fIOyS lq9GlcmSIpykFmr9uwDBBqmt04y+ujzaR/JhWgvCCl9kUSPWzMkGSe8zjvfcMJW3 ixa6yK7qRpLZD8LIXSFNBhnl2zSU+6oWwZO+6CW2Yt1Zo/DPOEEJzPzSBvCX5XaP 10eHnJjD7l92+dB2Ai9YJQel1L0xn3daYCHrMxyivi/XQfK1dM8o+u11rmHojDV/ 6/3aO79Gm7eBMinPixw5up9aghLX9r8Npop/1qeNyvG+tE+ozbHc0Lj2KmIZAxnt 8jFxQCRoLozyan56uck0ofyDCcljvuYyFTkk3g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1763762531; x= 1763848931; bh=p5OH9dR3qZ0e/kgCavoKvpJ6yXPyc4X9GkRgiaSM4oY=; b=Y fpyMh9/XSiWfCjl11i70kbvPtqqx0YXHMRCmlDVxuv3FhjXFDNpgjM/whSsey/ov xK6zlcZMHeYh8ccnmDAS53MRAWJJiiAF0gl52VaFSvDe+wj9jWSalJgMuJRvwbL3 FP/85P4pym3+bVORpHEiemkigVVTr4W9QaqHbLexzcSWXmDXkeGgkgFLu2Jv4qBs YeWT8tzGs2WC22XGQBYC9dPr2GWRx/n9Cg1KEFcsf44U7PV2orsrJo9TLuZAmVIO L0AFa5lApgH2j53RyAiDyPBy9II/J6Jw0a5YXSm8U4fG4rjpm6nOLvLQOfrDSxbX H4nTShAHqbDE+1hYiCfDQ== X-ME-Sender: <xms:YuEgaSJ2yEiu9XjPHiNgZQd8qPc2sXfVoK6wOkI1VTmW6jX-Ku59FQ> <xme:YuEgacbconmhegxL3mZjgHRQwBwO81d9VfFuchHlJ5MU3XzpZajf-KvWxwXeqSnjT 8oFpImKjjGIn0a8ovFbxQ5x8cQkQ2XfPJ6z9HXBlKcWz9qgOVwywEE> X-ME-Received: <xmr:YuEgaU_AfULh03sn_JcT5AP6ER5XS1avJm7TaXVyKK8McISbwRPDEGMvQR3tS1sBum1-7T3JvgUUg9WyUZanFJuwR0vz91I> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdeggddvfeduudduucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhephffvvefujghffffkgggtgfesthhqredttddtjeenucfhrhhomheptfhuugholhhf ucetuggrmhhkohhvihgtuceorhhuugholhhfsegruggrmhhkohhvihgtrdhorhhgqeenuc ggtffrrghtthgvrhhnpeeiueetheffudfghfeggeevheevvddtkefflefhueeludfgtefg ffeltdfhudejgeenucffohhmrghinheprggurghmkhhovhhitgdrohhrghenucevlhhush htvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehruhguohhlfhesrggu rghmkhhovhhitgdrohhrghdpnhgspghrtghpthhtohepjedpmhhouggvpehsmhhtphhouh htpdhrtghpthhtohepvghmrggtshdquggvvhgvlhesghhnuhdrohhrghdprhgtphhtthho pegrrhhsthhofhhfvghlsehgmhgrihhlrdgtohhmpdhrtghpthhtohepjeelgedujeesug gvsggsuhhgshdrghhnuhdrohhrghdprhgtphhtthhopeihrghnughrohhssehgmhgrihhl rdgtohhmpdhrtghpthhtoheprhhmshesghhnuhdrohhrghdprhgtphhtthhopehkrhhish gsrghlihhnthhonhgrsehgmhgrihhlrdgtohhmpdhrtghpthhtohepvghlihiisehgnhhu rdhorhhg X-ME-Proxy: <xmx:YuEgadZJ1aNbYCSXfjMHQhvwftLO81OD7_s4BX5hwoVwc35fX-OoGg> <xmx:YuEgaYOII0_a2eozVXZ3UuL2ifUacO3_f9mxCAO-lUqrIEGq8qZIdw> <xmx:YuEgaZAx2GMqmMIDrQFAqdYQUqzWUlpbkyWvFXkLXiqpfsd0uU-zFA> <xmx:YuEgafLVLsRAXbhZf2oL4HhqJB15HwQ8azroLZ-hCtuNgjU4vLLTMg> <xmx:Y-Egab5A0boaZCmmawyggKzTIVbB8OC172Om5V5DBw1NHtpVE7Ke07lP> Feedback-ID: i88214938:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri, 21 Nov 2025 17:02:09 -0500 (EST) From: Rudolf =?utf-8?Q?Adamkovi=C4=8D?= <rudolf@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? In-Reply-To: <86see9j51y.fsf@HIDDEN> References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <86ldkbrtin.fsf@HIDDEN> <CANVbq5m1zBV0M9aRn6kD_BRZ8miOV0rADHJvU+ernWB8CHdKvA@HIDDEN> <86jyzusdto.fsf@HIDDEN> <CANVbq5=vfgreuEdi02_unSPxqFmNV_hqNXP1Q8vRuvN8P+Dn3w@HIDDEN> <E1vKTQs-0003rt-NS@HIDDEN> <86h5uumq8m.fsf@HIDDEN> <CANVbq5=WDnTMjbnTQV2XA8XK-CfDWPX1_E69uB6Qa8+FsLcgZw@HIDDEN> <m2jyzmgx5k.fsf@HIDDEN> <865xb6jg3d.fsf@HIDDEN> <m2seeax89s.fsf@HIDDEN> <86see9j51y.fsf@HIDDEN> Date: Fri, 21 Nov 2025 23:02:08 +0100 Message-ID: <m2ms4fxcwv.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79417 Cc: krisbalintona@HIDDEN, 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN, yandros@HIDDEN, arstoffel@HIDDEN, rms@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) Eli Zaretskii <eliz@HIDDEN> writes: > And yes, I also sometimes have only vague idea of what is the correct > spelling of the word, so I just type the best approximation I can come > up with, and ask Flyspell to suggest how to fix it. Exactly. And sometimes, the resulting list of candidates is long, with a large number of distant suggestions. The problem is then to narrow that list down in seconds, ideally with fuzzy search. This can be done with Completing Read but not with the GUI popup. >> The GUI popup? The search is prefix-only, with hidden one-time input, >> which prevents any kind of word exploration. It may be good enough for >> a web browser, to quickly fix a typo. A professional text editor like >> Emacs should *default* to something better, IMHO. > > I think we are not talking about the same thing. The popup is not > "prefix-only", it's a menu that shows candidate replacements for the > misspelled word, one below the other. And I don't know what you mean > by "hidden one-time input". On my system (NS), I can navigate in the GUI popup with the keyboard, or type a couple couple of letters to jump to a particular a word that starts with them. However, the search is prefix-only, the user input is invisible, and nothing is undo/redo-able when a mistake is made. Put simply, the UI is too basic and error-prone. > Professional editors? MS Word shows a very similar menu, FWIW. Is > that professional enough for us? I have never used Word personally, so you know better in that regard. But in my mind, I expect a professional editor to have a spell checker with editable input, partial matching, and then more (built on top of a solid foundation, once in place). Rudy --=20 "Be especially critical of any statement following the word 'obviously.'" --- Anna Pell Wheeler, 1883-1966 Rudolf Adamkovi=C4=8D <rudolf@HIDDEN> [he/him] http://adamkovic.org
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 25 Nov 2025 20:16:30 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Nov 25 15:16:30 2025 Received: from localhost ([127.0.0.1]:55322 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vNzSf-0005AO-An for submit <at> debbugs.gnu.org; Tue, 25 Nov 2025 15:16:29 -0500 Received: from mail-lf1-x12a.google.com ([2a00:1450:4864:20::12a]:48491) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <krisbalintona@HIDDEN>) id 1vMf28-0005oD-5y for 79417 <at> debbugs.gnu.org; Fri, 21 Nov 2025 23:15:37 -0500 Received: by mail-lf1-x12a.google.com with SMTP id 2adb3069b0e04-5943b62c47dso2686136e87.1 for <79417 <at> debbugs.gnu.org>; Fri, 21 Nov 2025 20:15:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763784928; x=1764389728; darn=debbugs.gnu.org; h=content-transfer-encoding:cc:to:subject:message-id:date :mime-version:references:in-reply-to:from:from:to:cc:subject:date :message-id:reply-to; bh=szBQZP4g+auICYnPmOT90GgOGA71PcwNNuDeI4Lf7Fw=; b=S+WLc3lpAp6a363I6sPGEtD9G9b6xfOk1y5HWaH7EXjieBP5XzXxFyA5hSWvLKm9To GINrmavSripiICyUE9YLk8WmzkjuViKJ8zxd6fNP++koEtSzDpGApBEGsFXUreic3Mgv CdnFQ2h4HdZGxUu20VbDAfWhocvZ7xPFi2GTjMa8e3WvYDmMsL5gak8Weueko0LNPqdh yib6aDvdvdo6ntqBPzciVbVC77MSWejmI6Erm/n5qQ0EqvKHQPsLW8z5hNktb4a/sLk3 HxbmtmH1SYfzM5pdk3b/Lp6YkQ1n83tsSymyl0oilCWs3hRyCpb5sHNyIYxS2heuM0Wm ZywA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763784928; x=1764389728; h=content-transfer-encoding:cc:to:subject:message-id:date :mime-version:references:in-reply-to:from:x-gm-gg:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=szBQZP4g+auICYnPmOT90GgOGA71PcwNNuDeI4Lf7Fw=; b=JsGbWIDPeYdr1KSG2rfxObd5PCtsAhDOp9b4w0fGqwHIrJCQOiR/iL01EmgMotq8TL faaGEIkBFtFDODHUSa+MZgG/1CBJuIv0MBrqRikZ0zmQs+j19IRHxFExACZ3TkriGDgT 2puwQ/SvnKk3TPCTLfnuqlK3m9XLJVzvC7+Tzlq3d+0MopzCfzwOsmLoAcfMSVBuV2Pp pjbiNEvDXM21i7PgpJJ04NkhxvOqAbQu3utAWotBInygu01GuINqJvXO1ACRJEoePNql 81/vgTR6nxQ52tJdEDXOFdEtpbQ3vJiMd/9n8zoWhsfQOgakWXkvCva2wiXhS6LlIsF7 J8dA== X-Forwarded-Encrypted: i=1; AJvYcCX/TZmCEtu94aof+Fc7S0PvOaiKOy5NwcvoDFoVC1JAvSBetjL/9uwNsCNR9TCVvCclF/ytDg==@debbugs.gnu.org X-Gm-Message-State: AOJu0YzHwjOaEvEBtmUJWuUy5HBsvNBftxPp7OsVpq49sdIb/X/whfqv ITdeiiJVEW6sQuX916wvOgno/Mxecnx+2KgM5HQ0o8IFotry2KlWiH+xBX756TRBS0ckokPGoUC vTet7JAfC/Dm2muMo9B0Os6zp54LZT/c= X-Gm-Gg: ASbGncshDLMm5WWg0ROtjyU1MDzGvqBLfh4mGwLIFzg39+60E72cq9+6eU1Ayxcu/wu 4ViF53sUAY99EplbkaO6qlMjlDmFhsebEOlaOhPqp1o8FoFGkZ4dKQEsDxT/yX0IZsQLezeKSXF UyiBBqy4NNH8qlnnOLv698lmMqqHP0+99U1JbZL83lhGa0LC4BIYvG4WLNj3hXlqIgwLu7J+2LV fZQBjKCjf9BImUgUwY7ub1qDtyNlltb/N9jykuVLCcUaxS/4ehQ6VnWXdvwlD03RFkz2MI= X-Google-Smtp-Source: AGHT+IFdw1XkbIpOYaCTRJt7xTub0UVuJMOTi0oGh6mn0jU1OQTEwCZgHoSP/vgLZsIrfM+12pbpLYPnlpfD4VswFOw= X-Received: by 2002:a05:6512:3d1f:b0:594:2e7e:7897 with SMTP id 2adb3069b0e04-596a3ecee86mr1504587e87.29.1763784927445; Fri, 21 Nov 2025 20:15:27 -0800 (PST) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Fri, 21 Nov 2025 20:15:26 -0800 Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Fri, 21 Nov 2025 20:15:26 -0800 From: Kristoffer Balintona <krisbalintona@HIDDEN> In-Reply-To: <m2ms4fxcwv.fsf@HIDDEN> References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <86ldkbrtin.fsf@HIDDEN> <CANVbq5m1zBV0M9aRn6kD_BRZ8miOV0rADHJvU+ernWB8CHdKvA@HIDDEN> <86jyzusdto.fsf@HIDDEN> <CANVbq5=vfgreuEdi02_unSPxqFmNV_hqNXP1Q8vRuvN8P+Dn3w@HIDDEN> <E1vKTQs-0003rt-NS@HIDDEN> <86h5uumq8m.fsf@HIDDEN> <CANVbq5=WDnTMjbnTQV2XA8XK-CfDWPX1_E69uB6Qa8+FsLcgZw@HIDDEN> <m2jyzmgx5k.fsf@HIDDEN> <865xb6jg3d.fsf@HIDDEN> <m2seeax89s.fsf@HIDDEN> <86see9j51y.fsf@HIDDEN> <m2ms4fxcwv.fsf@HIDDEN> MIME-Version: 1.0 Date: Fri, 21 Nov 2025 20:15:26 -0800 X-Gm-Features: AWmQ_bmQmITMKHIdNvK1zZTwtQf6FJtipjSdGtQUfowTnh7AMinjo7XJuYHmLj0 Message-ID: <CANVbq5n+LpHfx7yU+KDU7G8qZfp3fQfwHObjOOY5vfndbTBM7w@HIDDEN> Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? To: =?UTF-8?Q?Rudolf_Adamkovi=C4=8D?= <rudolf@HIDDEN>, Eli Zaretskii <eliz@HIDDEN> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79417 Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, arstoffel@HIDDEN, rms@HIDDEN, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On Fri, Nov 21 2025, Rudolf Adamkovi=C4=8D wrote: >> Professional editors? MS Word shows a very similar menu, FWIW. Is >> that professional enough for us? > > I have never used Word personally, so you know better in that regard. > But in my mind, I expect a professional editor to have a spell checker > with editable input, partial matching, and then more (built on top of > a solid foundation, once in place). To add, I think in the context of Word it makes sense to only have a popup-based word-correction UI, since using the mouse is the primary means of navigation and interaction there (aside from using the keyboard when typing). On the other hand, Emacs is very keyboard-centric (as a fact and also as an expectation of many of its users), so it makes more sense here for there to be a keyboard-only word-correction UI. (Eli has already informed me that you can use your keyboard arrow keys to select the candidates in the popup menu, but Rudy explained why that popup menu may not be ideal/appealing for the purposes of word-correction.) --=20 Kind regards, Kristoffer
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 19 Nov 2025 17:39:07 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Nov 19 12:39:07 2025 Received: from localhost ([127.0.0.1]:39564 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vLm94-0007H6-O3 for submit <at> debbugs.gnu.org; Wed, 19 Nov 2025 12:39:07 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:56354) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vLm92-0007GU-G6 for 79417 <at> debbugs.gnu.org; Wed, 19 Nov 2025 12:39:05 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vLm8w-0005Vo-VM; Wed, 19 Nov 2025 12:38:58 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=5turRqXptbkWQugwlxOQ/YUn21/zlHKNVpuhx+Z+oys=; b=glEdvZmwlR2ux9jK1A2R CmDc0tObwd7sFf2YthS4aZjCjmTqgbvrhT8Lwh3ZXqiEYZHpoUQKa/3aQBdnfYm32OQaNYWRS/2fC vKQDSWsKrBVMXpcu71pVg2XYPZY/T1W5mN7mgXqfrdwuY1WuPGoqV83wV4xXl/gfGahFMbYIrIxa1 WhmIED8Aw1AYBPK41kdauLlQC480f5UYogZ3HqL+rVoVna/gPYtivNdIR+cX7rIktdGb2/bmqXwzw DiIczsbNd5Usk8tmBZ7QbLAVYrIXp75S/SFs6YxJCwpNp4DwGTo70HYbjoq+HgBd1EWrs4T3oP0wu CA1qwpE7jDQTfA==; Date: Wed, 19 Nov 2025 19:38:49 +0200 Message-Id: <86see9j51y.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Rudolf =?utf-8?Q?Adamkovi=C4=8D?= <rudolf@HIDDEN> In-Reply-To: <m2seeax89s.fsf@HIDDEN> (message from Rudolf =?utf-8?Q?Adamkovi=C4=8D?= on Wed, 19 Nov 2025 18:05:35 +0100) Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <86ldkbrtin.fsf@HIDDEN> <CANVbq5m1zBV0M9aRn6kD_BRZ8miOV0rADHJvU+ernWB8CHdKvA@HIDDEN> <86jyzusdto.fsf@HIDDEN> <CANVbq5=vfgreuEdi02_unSPxqFmNV_hqNXP1Q8vRuvN8P+Dn3w@HIDDEN> <E1vKTQs-0003rt-NS@HIDDEN> <86h5uumq8m.fsf@HIDDEN> <CANVbq5=WDnTMjbnTQV2XA8XK-CfDWPX1_E69uB6Qa8+FsLcgZw@HIDDEN> <m2jyzmgx5k.fsf@HIDDEN> <865xb6jg3d.fsf@HIDDEN> <m2seeax89s.fsf@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79417 Cc: krisbalintona@HIDDEN, 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN, yandros@HIDDEN, arstoffel@HIDDEN, rms@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Rudolf Adamkovič <rudolf@HIDDEN> > Cc: krisbalintona@HIDDEN, rms@HIDDEN, yandros@HIDDEN, > 79417 <at> debbugs.gnu.org, arstoffel@HIDDEN, emacs-devel@HIDDEN > Date: Wed, 19 Nov 2025 18:05:35 +0100 > > As a non-native speaker, I have two use-cases: > > - Case 1: I do not know how to spell the word. > - Case 2: I have a fuzzy recollection of the word in general. > > Here is a typical workflow for Case 1: > > (1) Flyspell marks a word as misspelled. > (2) I repeatedly filter the list of suggestions: > > - Maybe there are two "s". Nope. > - Maybe ... Nope, nope, nope. > - Dang, there are two "o" and two "s". Gotcha! > > This can be done in seconds with Completing Read, especially when > coupled with super-fast UI such as Vertico. The above tells me that you should probably switch to a better spelling back-end (I suggest Hunspell). In my case, the suggestions popped up by Flyspell always include the correct one, I need just to identify it and select it. And yes, I also sometimes have only vague idea of what is the correct spelling of the word, so I just type the best approximation I can come up with, and ask Flyspell to suggest how to fix it. > The GUI popup? The search is prefix-only, with hidden one-time input, > which prevents any kind of word exploration. It may be good enough for > a web browser, to quickly fix a typo. A professional text editor like > Emacs should *default* to something better, IMHO. I think we are not talking about the same thing. The popup is not "prefix-only", it's a menu that shows candidate replacements for the misspelled word, one below the other. And I don't know what you mean by "hidden one-time input". Professional editors? MS Word shows a very similar menu, FWIW. Is that professional enough for us?
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 19 Nov 2025 17:19:34 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Nov 19 12:19:33 2025 Received: from localhost ([127.0.0.1]:39416 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vLlq9-0005hX-1t for submit <at> debbugs.gnu.org; Wed, 19 Nov 2025 12:19:33 -0500 Received: from mail-lf1-x12e.google.com ([2a00:1450:4864:20::12e]:60893) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <krisbalintona@HIDDEN>) id 1vLlq6-0005ge-VZ for 79417 <at> debbugs.gnu.org; Wed, 19 Nov 2025 12:19:31 -0500 Received: by mail-lf1-x12e.google.com with SMTP id 2adb3069b0e04-59581e32163so7070169e87.1 for <79417 <at> debbugs.gnu.org>; Wed, 19 Nov 2025 09:19:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763572765; x=1764177565; darn=debbugs.gnu.org; h=content-transfer-encoding:cc:to:subject:message-id:date :mime-version:references:in-reply-to:from:from:to:cc:subject:date :message-id:reply-to; bh=FnOYDnQsc7WFoWSUvw1QJkwvZNZyIJV1FRozNiyOse0=; b=jt1gGGLSAaOg7fHP0f99WF1SiLiNYyNk/4xcLgzRev3e8cFlfY1hV0ZA+yBsNQ2A7t F6qx/bAuy3lSnv4eTy2gfRPhsR7aM6i3d/P4FPqtzP7DbYX5VvssVMMpXxMdexxr4L0T xeWQ0U9U85C3K8q8ezgwtxRZHYBoVP92IPreIMb9zaAm3C/vGnkXFUaGKgC8EYyF3Ozl AQXhnRN7YSgzMD0PyzHH7UadedHTeCbKdjVoj6qyTYTnA11/I7colIZTvrtJ600x+PBd GwAziLTKXJkO/iML/F4oDG/QyG6XGDRX1qORjWM3z0w0lAXOv8LoQ2CK3A0VLq/TwFp4 awyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763572765; x=1764177565; h=content-transfer-encoding:cc:to:subject:message-id:date :mime-version:references:in-reply-to:from:x-gm-gg:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=FnOYDnQsc7WFoWSUvw1QJkwvZNZyIJV1FRozNiyOse0=; b=HVjYN3uiW1gm0zdxoNBZE0QngH0bqlEk3TX4Z10seczmlJMEBosI8zsA+X4lBEK9ji QfQPdtH0F0JJUet+zKmOsUadYKFDXxsfOZ27B+07Dha5+CRn1uCZS3cq9ZKL7C8Csy2j M50XsK36xEUXLGDzEGDV3nqpT1T/MdagATk2p2v2XcZOnqGBBEOSjj2dWMwOrI1oJOxR lcASMlscNaMhDUWIKBkZQ4YLUX8Op+vLN5PsSXUMf1rqmgKCHY5R28guwS7X1b2p5bhQ hrcdSW1tgYysY4l0V6o7Ni1Y7EeVRctfCFelqkfOMEphKr9XhLB18EvZifxZr4oOZlO6 BxGw== X-Forwarded-Encrypted: i=1; AJvYcCXf8J3MAf4EAp+dd8d9v/HwC/kJjyGHyfwAiFIE86PqomR+QJRe9YhjGw5BfuM4DxsdDFyDKQ==@debbugs.gnu.org X-Gm-Message-State: AOJu0YxwbFfH8JFKfbzyF9kXDP2XctOYlM5ZwH+HAya1txZDEE6zo+M1 O7IkFDMbr5PtGTVnr+hBdGMaI/1uZPgr4brtFqkSfs0mEn1XcvB0klbCK3cJsB4WHWa2YNM6SFL cNN0tEPoBLTADNylrqhEgGaSKqLrQNjw= X-Gm-Gg: ASbGncvG7NBq3+Jaw9hQHXwkiroOAH4qhEvMCA57ZrnBZS6f0nV+r7oEd78fJh0oYVj VXfGp7molS7MwUbwLU793aIoaY3Mjy+S9HWnMJoh8+niH9WicM+JcqoiLBIEERuL7aYuwrTL1h5 cOvlNRvalOGOF04jYVWtf7NWpYANrlVSC3XtqiQBQX6yM8Mu0zRIdZLTR2h3Jp8GkNpWdviDHR3 QkP1+mKuAKOmXApviV4aOc/+qCHHWKwRy+ygn+GYdc4ktDT3hvoVJU6oY1ePbyBPulLn48= X-Google-Smtp-Source: AGHT+IGexOtXh+oMbbBFr/g5CXaJZlARb449p0qGO9s4Rjw774OHUN23BsGzqKTgq7ytv1EADnQNT7uiXD6Yb9SPxVs= X-Received: by 2002:a05:6512:3056:b0:595:8258:ccc7 with SMTP id 2adb3069b0e04-5958419ebccmr6368487e87.1.1763572764283; Wed, 19 Nov 2025 09:19:24 -0800 (PST) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Wed, 19 Nov 2025 17:19:23 +0000 Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Wed, 19 Nov 2025 17:19:23 +0000 From: Kristoffer Balintona <krisbalintona@HIDDEN> In-Reply-To: <m2seeax89s.fsf@HIDDEN> References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <86ldkbrtin.fsf@HIDDEN> <CANVbq5m1zBV0M9aRn6kD_BRZ8miOV0rADHJvU+ernWB8CHdKvA@HIDDEN> <86jyzusdto.fsf@HIDDEN> <CANVbq5=vfgreuEdi02_unSPxqFmNV_hqNXP1Q8vRuvN8P+Dn3w@HIDDEN> <E1vKTQs-0003rt-NS@HIDDEN> <86h5uumq8m.fsf@HIDDEN> <CANVbq5=WDnTMjbnTQV2XA8XK-CfDWPX1_E69uB6Qa8+FsLcgZw@HIDDEN> <m2jyzmgx5k.fsf@HIDDEN> <865xb6jg3d.fsf@HIDDEN> <m2seeax89s.fsf@HIDDEN> MIME-Version: 1.0 Date: Wed, 19 Nov 2025 17:19:23 +0000 X-Gm-Features: AWmQ_bmV79dJgZNbYFtjEifx3DjGXWOvq_cjYh0obpS0ag3aznYYi4YRZ1AAhWQ Message-ID: <CANVbq5=DVq-4jSXmaGO11A8TrxM-emw6Qzb141szpRHFZaPK9A@HIDDEN> Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? To: =?UTF-8?Q?Rudolf_Adamkovi=C4=8D?= <rudolf@HIDDEN>, Eli Zaretskii <eliz@HIDDEN> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79417 Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, arstoffel@HIDDEN, rms@HIDDEN, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On Wed, Nov 19 2025, Rudolf Adamkovi=C4=8D wrote: > Eli Zaretskii <eliz@HIDDEN> writes: > >> If you knew the correct word, why didn't you type it in the first >> place? (No, don't answer that.) > > Why not answer that? You asked a good question. > > As a non-native speaker, I have two use-cases: > > - Case 1: I do not know how to spell the word. > - Case 2: I have a fuzzy recollection of the word in general. > > Here is a typical workflow for Case 1: > > (1) Flyspell marks a word as misspelled. > (2) I repeatedly filter the list of suggestions: > > - Maybe there are two "s". Nope. > - Maybe ... Nope, nope, nope. > - Dang, there are two "o" and two "s". Gotcha! > > This can be done in seconds with Completing Read, especially when > coupled with super-fast UI such as Vertico. > > (I have seen my kids doing the same with Flyspell, but only after I > installed the Completion Read support and Vertico for them.) > > The GUI popup? The search is prefix-only, with hidden one-time input, > which prevents any kind of word exploration. It may be good enough for > a web browser, to quickly fix a typo. A professional text editor like > Emacs should *default* to something better, IMHO. > > Rudy Thank you for the detailed explanation, Rudy. I think you put into words my opinion/experience much better than I would've. Rudy expressed a significant motivation, I think, for users to install third-party packages like flyspell-correct and jinx: both use an interface more friendly or intuitive (many hold this opinion, anyway) to correcting words. Rudy observing his kids naturally using the minibuffer completion interface of vertico strongly support this, I think. --=20 Kind regards, Kristoffer
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.
Received: (at 79417) by debbugs.gnu.org; 19 Nov 2025 17:05:46 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Nov 19 12:05:46 2025
Received: from localhost ([127.0.0.1]:39315 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vLlcn-0004kM-NP
for submit <at> debbugs.gnu.org; Wed, 19 Nov 2025 12:05:46 -0500
Received: from fhigh-a4-smtp.messagingengine.com ([103.168.172.155]:46929)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <rudolf@HIDDEN>)
id 1vLlcl-0004jw-Ke
for 79417 <at> debbugs.gnu.org; Wed, 19 Nov 2025 12:05:43 -0500
Received: from phl-compute-05.internal (phl-compute-05.internal [10.202.2.45])
by mailfhigh.phl.internal (Postfix) with ESMTP id 6ED841400257;
Wed, 19 Nov 2025 12:05:38 -0500 (EST)
Received: from phl-mailfrontend-01 ([10.202.2.162])
by phl-compute-05.internal (MEProxy); Wed, 19 Nov 2025 12:05:38 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adamkovic.org;
h=cc:cc:content-transfer-encoding:content-type:content-type
:date:date:from:from:in-reply-to:in-reply-to:message-id
:mime-version:references:reply-to:subject:subject:to:to; s=fm1;
t=1763571938; x=1763658338; bh=nd69nlei2i01Z/mfF9xcoOLyGs1xShEY
zIkWs+JJ5qk=; b=bqo91OeSbpc9QH17bBcbDOQb1fzVbIle7BFP/KodgLcgcLLV
LvoX9GlKECiXHzUbuRz/AQUuepNapKVPlTJqcr2FRoiSZuUuj33qkDIducHHhmYu
5ZK1IkGepctOjieov20CERHqXeU9F5UiAXDyViXLylfujMmgYCejUiA+GBvang2J
PkPPtONZkIR1LHQLJXfQkX8YoLO84TbE9g+nLP4az32BoNtfv822yigukSgs2HvN
VP0xQMgm7u5OI8BiM24L2+bPfi/rXfMtc7MnS9ZZkeMsR3fIZo8BDq7y9Vz75hLy
XpE/ZbDQZoFJufeAw0NSJAi4VGaiZvY51AAx5w==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
messagingengine.com; h=cc:cc:content-transfer-encoding
:content-type:content-type:date:date:feedback-id:feedback-id
:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to:x-me-proxy
:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1763571938; x=
1763658338; bh=nd69nlei2i01Z/mfF9xcoOLyGs1xShEYzIkWs+JJ5qk=; b=M
ZFOFpVeES8vyjEXiE5eU07K6tWQAvUpNiftvg5CEuMBgwRF8AK5toiU95eK60wPf
t8uUgkwEC+z1vcj3VWIE8falLl1euksNi/kCcLkxyLs3dUyvMw1ZaP6wWgJcKu6W
pvFIpXTlXDqVWSs9gRjX02xuWC3Jq2n1Dsi4n4lKnynH4YLMrno9bU2OMtYfKXRh
qH/6o63QZtIt4/XVOO08Z3GL+gYEve844PDqnyVNVHQJRiMQgaDfWe6G526nf+94
UBhKs2bE+nw2ST8G7Oi/HIcVY8zZu4tInAl27O471y7qiXWraiSMuTNrlUit1iwE
p0ba/EtmivMfk8HG8P1qA==
X-ME-Sender: <xms:4vgdacHZXhZTDlzrhvB95PUTOlnIdPk75gVYm7yyo07H-aIWd0NNIw>
<xme:4vgdaXkhwNj-balihLxJ9Osm3zQSrZX4Eu05fgH27Bg8e1PPEbGrseefD8r_dlSYq
bKKMUEv5HqyChODttQOX9dkSNL_5XAFX0KRcpGECVoFPoEL22ERnQ4>
X-ME-Received: <xmr:4vgdaYbSsJz5r57Cq8N2GKspQh_u59LkdwDbAHW8Nt-q_1qnFhKvZAktug1FQDEzjvnHy86FK58l9g8nwkOSnAfEhbnCk-Q>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdeggddvvdegjeehucetufdoteggodetrf
dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu
rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf
gurhephffvvefujghffffkgggtgfesthhqredttddtjeenucfhrhhomheptfhuugholhhf
ucetuggrmhhkohhvihgtuceorhhuugholhhfsegruggrmhhkohhvihgtrdhorhhgqeenuc
ggtffrrghtthgvrhhnpeeiueetheffudfghfeggeevheevvddtkefflefhueeludfgtefg
ffeltdfhudejgeenucffohhmrghinheprggurghmkhhovhhitgdrohhrghenucevlhhush
htvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehruhguohhlfhesrggu
rghmkhhovhhitgdrohhrghdpnhgspghrtghpthhtohepjedpmhhouggvpehsmhhtphhouh
htpdhrtghpthhtohepvghmrggtshdquggvvhgvlhesghhnuhdrohhrghdprhgtphhtthho
pegrrhhsthhofhhfvghlsehgmhgrihhlrdgtohhmpdhrtghpthhtohepjeelgedujeesug
gvsggsuhhgshdrghhnuhdrohhrghdprhgtphhtthhopeihrghnughrohhssehgmhgrihhl
rdgtohhmpdhrtghpthhtoheprhhmshesghhnuhdrohhrghdprhgtphhtthhopehkrhhish
gsrghlihhnthhonhgrsehgmhgrihhlrdgtohhmpdhrtghpthhtohepvghlihiisehgnhhu
rdhorhhg
X-ME-Proxy: <xmx:4vgdaUF1pWoQ-_wFndmZQNCGjjp1uTKqfD7_JjDdYOKF98-cbiclzA>
<xmx:4vgdaRInbM1H8slMdT2oYZRa9bOZ7wLbUW1bWNdpfIzIzYfWDCZtRA>
<xmx:4vgdaXMuDJVA4_SUSjQzA1gv88MRQsDArj0yAGmhC2Jn0FPiRIhtOA>
<xmx:4vgdaZl0yWey_nvTXb9rjtqFOhRiIbVZIgHij4QWppTHKFjVX2-Y8Q>
<xmx:4vgdaQFSAAjv1ZkQaK4FOhNnGLyaCC2LjrAgEPBNWfFnljxBVhjzi5IZ>
Feedback-ID: i88214938:Fastmail
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed,
19 Nov 2025 12:05:37 -0500 (EST)
From: Rudolf =?utf-8?Q?Adamkovi=C4=8D?= <rudolf@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell
and flyspell)?
In-Reply-To: <865xb6jg3d.fsf@HIDDEN>
References: <87ecsft5qu.fsf@HIDDEN>
<87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN>
<87cy7xhi2k.fsf@HIDDEN>
<CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN>
<CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN>
<CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN>
<87ms4r8qbm.fsf@HIDDEN>
<CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN>
<86ldkbrtin.fsf@HIDDEN>
<CANVbq5m1zBV0M9aRn6kD_BRZ8miOV0rADHJvU+ernWB8CHdKvA@HIDDEN>
<86jyzusdto.fsf@HIDDEN>
<CANVbq5=vfgreuEdi02_unSPxqFmNV_hqNXP1Q8vRuvN8P+Dn3w@HIDDEN>
<E1vKTQs-0003rt-NS@HIDDEN> <86h5uumq8m.fsf@HIDDEN>
<CANVbq5=WDnTMjbnTQV2XA8XK-CfDWPX1_E69uB6Qa8+FsLcgZw@HIDDEN>
<m2jyzmgx5k.fsf@HIDDEN> <865xb6jg3d.fsf@HIDDEN>
Date: Wed, 19 Nov 2025 18:05:35 +0100
Message-ID: <m2seeax89s.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 79417
Cc: krisbalintona@HIDDEN, 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN,
yandros@HIDDEN, arstoffel@HIDDEN, rms@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)
Eli Zaretskii <eliz@HIDDEN> writes:
> If you knew the correct word, why didn't you type it in the first
> place? (No, don't answer that.)
Why not answer that? You asked a good question.
As a non-native speaker, I have two use-cases:
- Case 1: I do not know how to spell the word.
- Case 2: I have a fuzzy recollection of the word in general.
Here is a typical workflow for Case 1:
(1) Flyspell marks a word as misspelled.
(2) I repeatedly filter the list of suggestions:
- Maybe there are two "s". Nope.
- Maybe ... Nope, nope, nope.
- Dang, there are two "o" and two "s". Gotcha!
This can be done in seconds with Completing Read, especially when
coupled with super-fast UI such as Vertico.
(I have seen my kids doing the same with Flyspell, but only after I
installed the Completion Read support and Vertico for them.)
The GUI popup? The search is prefix-only, with hidden one-time input,
which prevents any kind of word exploration. It may be good enough for
a web browser, to quickly fix a typo. A professional text editor like
Emacs should *default* to something better, IMHO.
Rudy
--=20
"I have only made this letter longer because I have not had the time to
make it shorter."
--- Blaise Pascal, The Provincial Letters, 1657
Rudolf Adamkovi=C4=8D <rudolf@HIDDEN> [he/him]
http://adamkovic.org
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 19 Nov 2025 13:41:45 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Nov 19 08:41:44 2025 Received: from localhost ([127.0.0.1]:37111 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vLiRM-0007MC-Gh for submit <at> debbugs.gnu.org; Wed, 19 Nov 2025 08:41:44 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:33524) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vLiRK-0007La-3W for 79417 <at> debbugs.gnu.org; Wed, 19 Nov 2025 08:41:42 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vLiRE-0002Df-3l; Wed, 19 Nov 2025 08:41:36 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=Efp/NQ2Pgw0QhmX52806Crzm2yagAqmdZTVntJYYu5A=; b=ctIqD7+aEcC2xZ6UWfP7 forHiNs0nHHO+ZexNNnLjQZztCqzdnDSc6PCt/aT0Hw4NkEihHqM3NldatEhOvFaf3ZeEEN2WJUL0 OGjLsE0gTToTJvIM55WFfpn9Dr+38LCfCUK15WV/AVTM+TgSdq9TrcBDps7w62z5/dGA9aggi0QY0 F0hmGLrq5x3vbakNDW0iVVYWJqM+OEtj/d3rmoRcYYQk5LBK1x0yg8A+YKN4LfZuOqszWQ1r379sq 82mZFmaFmsB40YRDBoaggbqGHthekKKcAKYnnWKmtJ6GvPa5H+RWk/7HOEQssUR3czoE4IIzTOwAC ejCN6BdBOdzAOw==; Date: Wed, 19 Nov 2025 15:40:22 +0200 Message-Id: <865xb6jg3d.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Rudolf =?utf-8?Q?Adamkovi=C4=8D?= <rudolf@HIDDEN> In-Reply-To: <m2jyzmgx5k.fsf@HIDDEN> (message from Rudolf =?utf-8?Q?Adamkovi=C4=8D?= on Wed, 19 Nov 2025 11:00:07 +0100) Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <86ldkbrtin.fsf@HIDDEN> <CANVbq5m1zBV0M9aRn6kD_BRZ8miOV0rADHJvU+ernWB8CHdKvA@HIDDEN> <86jyzusdto.fsf@HIDDEN> <CANVbq5=vfgreuEdi02_unSPxqFmNV_hqNXP1Q8vRuvN8P+Dn3w@HIDDEN> <E1vKTQs-0003rt-NS@HIDDEN> <86h5uumq8m.fsf@HIDDEN> <CANVbq5=WDnTMjbnTQV2XA8XK-CfDWPX1_E69uB6Qa8+FsLcgZw@HIDDEN> <m2jyzmgx5k.fsf@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79417 Cc: krisbalintona@HIDDEN, 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN, yandros@HIDDEN, arstoffel@HIDDEN, rms@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Rudolf Adamkovič <rudolf@HIDDEN> > Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, arstoffel@HIDDEN, > emacs-devel@HIDDEN > Date: Wed, 19 Nov 2025 11:00:07 +0100 > > Kristoffer Balintona <krisbalintona@HIDDEN> writes: > > > Eli, what are your thoughts on a completing-read interface? All the > > recent spell-checking packages in ELPA/MELPA favor completing-read. > > This. While the Flyspell C-c $ popup is usable, it does not respect the > completion preferences of the user, such as fuzzy matching. I hear you, although it is strange for me to hear that people want to use completion when the suggestions are generated from a dictionary, using non-trivial guesswork, driven by the dictionary and language rules, of what could be the correct word. If you knew the correct word, why didn't you type it in the first place? (No, don't answer that.)
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 19 Nov 2025 13:24:09 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Nov 19 08:24:09 2025 Received: from localhost ([127.0.0.1]:36972 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vLiAK-0003DZ-VK for submit <at> debbugs.gnu.org; Wed, 19 Nov 2025 08:24:09 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55474) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vLiAJ-0003Cx-9Z for 79417 <at> debbugs.gnu.org; Wed, 19 Nov 2025 08:24:07 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vLiAD-0006rF-Pv for 79417 <at> debbugs.gnu.org; Wed, 19 Nov 2025 08:24:02 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=KRWg5ldzsRDslxt5qNOelkDdI3hFW3ECVodE7+TvvZo=; b=gQzKuxTxXs0E AdNtgjxNTAGTYlCkAVLqo0XVSVH6ftRLVDI9PR5kxfKNrG/pVBEeKr19E3LWVpLv7adp4wdfiKOYU LqbSqai7SFGvS+TYlN0TPwI/INQRYIYt4A3/yLOq5OczZqoy9FMqvX/pym4kNfrwwo3H472dmUdww Me6ccuDiF1w02WmyUnb13zeZm6OrlFrdSVy15nSzhuYISCuXHQMGZC5InYhkLZoy/qsAPLFq8H8VA IabBZ6ldxHK1ZhGndgUHV0ZOg5W7n9zA6C5oKR5FB4xoOklx/idyqwO2xIdLnxfh73/B3QccduYrT fN6fAPQIJ3ggMaTuUG2mjg==; Date: Wed, 19 Nov 2025 15:23:52 +0200 Message-Id: <868qg2jguv.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: rms@HIDDEN In-Reply-To: <E1vLYu6-0005pX-HG@HIDDEN> (message from Richard Stallman on Tue, 18 Nov 2025 22:30:46 -0500) Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <86ldkbrtin.fsf@HIDDEN> <CANVbq5m1zBV0M9aRn6kD_BRZ8miOV0rADHJvU+ernWB8CHdKvA@HIDDEN> <86jyzusdto.fsf@HIDDEN> <CANVbq5=vfgreuEdi02_unSPxqFmNV_hqNXP1Q8vRuvN8P+Dn3w@HIDDEN> <E1vKTQs-0003rt-NS@HIDDEN> <86h5uumq8m.fsf@HIDDEN> <E1vLYu6-0005pX-HG@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79417 Cc: 79417 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Richard Stallman <rms@HIDDEN> > Cc: 79417 <at> debbugs.gnu.org > Date: Tue, 18 Nov 2025 22:30:46 -0500 > > > > We could implement a keyboard-based method of specifying the > > > correction in this context. One interface it could support is to > > > choose the correction the same way ispell does it. > > > I don't see the rationale. > > I use ispell and I find that interface convenient. Text terminal menus > are not convenient for me. I might use flyspell if I could control > it the same way as ispell. Would you mind sharing what is inconvenient about using text-mode menus?
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 19 Nov 2025 10:00:20 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Nov 19 05:00:20 2025 Received: from localhost ([127.0.0.1]:35945 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vLez5-00048l-ST for submit <at> debbugs.gnu.org; Wed, 19 Nov 2025 05:00:20 -0500 Received: from fout-a6-smtp.messagingengine.com ([103.168.172.149]:60923) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <rudolf@HIDDEN>) id 1vLez3-00048K-PN for 79417 <at> debbugs.gnu.org; Wed, 19 Nov 2025 05:00:18 -0500 Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailfout.phl.internal (Postfix) with ESMTP id D714CEC01B0; Wed, 19 Nov 2025 05:00:11 -0500 (EST) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-02.internal (MEProxy); Wed, 19 Nov 2025 05:00:11 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adamkovic.org; h=cc:cc:content-transfer-encoding:content-type:content-type :date:date:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:subject:subject:to:to; s=fm1; t=1763546411; x=1763632811; bh=GLNRqPXEaRCEv8GEF4pAebyyVjscM2+w ezd5crLiSVs=; b=bxLtZ6nGrYqt5jjiPLz0LtVVJhbeES5+HC9R15FlTQ7wJFuf PFPJ4Mndit3OUebdLh2JznJrCRWCx4yza4Pogofpp2SmjgsUW6WEDYuctGLHiJM7 sAUchjatAZMr2WypYYAAA7XHPqwoRP160eDrtKcT0jKA2SHdDcyAdDNpuA8e6yxI rgdItvDiSw4Yfq9udldPnysRvWPeCJrQVBDf+2XzetkKwg+/H5XlDEQ7CK6bF8q5 mMviiuTH76OOJXQfrKUkWUWJwf0GdDdMfW/xgcO99UFbTniUA/WYaRdJgWSEnBc4 yjjlibRERJdeQCCdLWskoJzLCMRF0w4C3TuM+Q== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1763546411; x= 1763632811; bh=GLNRqPXEaRCEv8GEF4pAebyyVjscM2+wezd5crLiSVs=; b=v J1Idt2TF9dJXdrhOM7bEG8ZsKtGoy5LgPtBVs3z93ZF63KQYpvW2gy9NzELhGcc6 rNhrPQzWq6KrFRONveuKmWbQ0hK73W7Y2UJohy+O3yE2jfUEF7USFJu2EvQiS16A f7WQoEGWDy0dp4tEiJaPi0j1eImxAl9rkZGEsr2CyBVzzGCIicfXuCkOfV/GGFKI b4HFzJqVyDS+HuBj6wx2Bd3oY5ZTF6K4LBANqYmP/OdlW3lQqIN02Fs/TCroXjg8 8o7B0CcM6hGTrLBPxPf0pF7eHqqIR7DFH4tWUFrg6UgK5PduaWsNp/5R50Ipoye+ 3WgthLsWQZ/k/iTfDfvTQ== X-ME-Sender: <xms:K5UdaXWl6kfIPmXWwEteqbJW6A2i20XLuvx5no7vVYTefL4tltu6AQ> <xme:K5UdaR2VOWy2r0iT4eQ1GFRrDgiH1BKAZNSTmZ6fKZfEOHAlQi50NNfzOwtvrnBn0 WoLNIm2GwXE5jElRp3yyVZJeff2gI8liD4Sp6PVTRmwmScssyBmaOw> X-ME-Received: <xmr:K5UdaVpnfFjubYA-w6qk1cS4o871UVbP_K2a46TqzWtvoRpWZSRRbObwDmLEAUleRsbuwB6bmdVM9bXCAj0fGVj9LRZuQFE> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdeggddvvdefledtucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhephffvvefujghffffkgggtgfesthhqredttddtjeenucfhrhhomheptfhuugholhhf ucetuggrmhhkohhvihgtuceorhhuugholhhfsegruggrmhhkohhvihgtrdhorhhgqeenuc ggtffrrghtthgvrhhnpeeiueetheffudfghfeggeevheevvddtkefflefhueeludfgtefg ffeltdfhudejgeenucffohhmrghinheprggurghmkhhovhhitgdrohhrghenucevlhhush htvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehruhguohhlfhesrggu rghmkhhovhhitgdrohhrghdpnhgspghrtghpthhtohepjedpmhhouggvpehsmhhtphhouh htpdhrtghpthhtohepvghmrggtshdquggvvhgvlhesghhnuhdrohhrghdprhgtphhtthho pegrrhhsthhofhhfvghlsehgmhgrihhlrdgtohhmpdhrtghpthhtohepjeelgedujeesug gvsggsuhhgshdrghhnuhdrohhrghdprhgtphhtthhopeihrghnughrohhssehgmhgrihhl rdgtohhmpdhrtghpthhtoheprhhmshesghhnuhdrohhrghdprhgtphhtthhopegvlhhiii esghhnuhdrohhrghdprhgtphhtthhopehkrhhishgsrghlihhnthhonhgrsehgmhgrihhl rdgtohhm X-ME-Proxy: <xmx:K5UdaYVLelNBG09XMDjnzTjBSe3xvFNk30Y1MV-b9JaxeoW5WNH0YQ> <xmx:K5UdaQZ6PKeYzm5ISCYTfBPg7ozLlJCxqvDp_yqf8fjAFDa0ug465w> <xmx:K5UdaVe4No6-8wNmf_M2NjIgb-CS7GDLQkdW5i5udYDCNwOIAYxvAQ> <xmx:K5Udaa0C-YwuWFTdz6pTzCo4MaP4VYo5RtbezmGxMuxsLjoInH6gGw> <xmx:K5UdaWW4p5XJ-mziIJUUY9rk-KIy_Al61ZlYbLwAYxBJzbeVthaBNuJj> Feedback-ID: i88214938:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 19 Nov 2025 05:00:10 -0500 (EST) From: Rudolf =?utf-8?Q?Adamkovi=C4=8D?= <rudolf@HIDDEN> To: Kristoffer Balintona <krisbalintona@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>, rms@HIDDEN Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? In-Reply-To: <CANVbq5=WDnTMjbnTQV2XA8XK-CfDWPX1_E69uB6Qa8+FsLcgZw@HIDDEN> References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <86ldkbrtin.fsf@HIDDEN> <CANVbq5m1zBV0M9aRn6kD_BRZ8miOV0rADHJvU+ernWB8CHdKvA@HIDDEN> <86jyzusdto.fsf@HIDDEN> <CANVbq5=vfgreuEdi02_unSPxqFmNV_hqNXP1Q8vRuvN8P+Dn3w@HIDDEN> <E1vKTQs-0003rt-NS@HIDDEN> <86h5uumq8m.fsf@HIDDEN> <CANVbq5=WDnTMjbnTQV2XA8XK-CfDWPX1_E69uB6Qa8+FsLcgZw@HIDDEN> Date: Wed, 19 Nov 2025 11:00:07 +0100 Message-ID: <m2jyzmgx5k.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 79417 Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, arstoffel@HIDDEN, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) Kristoffer Balintona <krisbalintona@HIDDEN> writes: > Eli, what are your thoughts on a completing-read interface? All the > recent spell-checking packages in ELPA/MELPA favor completing-read. This. While the Flyspell C-c $ popup is usable, it does not respect the completion preferences of the user, such as fuzzy matching. Back when I was a new Emacs user, the Flyspell popup was one of the first problems I remember fixing. I ended up installing a package that extended Flyspell with Completing Read, and I still have it installed today. Put bluntly, the GUI popup in Flyspell was one of the so-called "bad defaults" for me personally. Rudy --=20 "The power of mathematics rests on its evasion of all unnecessary thought." --- Ernst Mach, 1838-1916 Rudolf Adamkovi=C4=8D <rudolf@HIDDEN> [he/him] http://adamkovic.org
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 19 Nov 2025 03:30:56 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Nov 18 22:30:56 2025 Received: from localhost ([127.0.0.1]:33233 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vLYuF-0000Gn-Ql for submit <at> debbugs.gnu.org; Tue, 18 Nov 2025 22:30:56 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:34204) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <rms@HIDDEN>) id 1vLYuD-0000GW-2e for 79417 <at> debbugs.gnu.org; Tue, 18 Nov 2025 22:30:54 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <rms@HIDDEN>) id 1vLYu7-00011t-Ng for 79417 <at> debbugs.gnu.org; Tue, 18 Nov 2025 22:30:47 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=Date:References:Subject:In-Reply-To:To:From: mime-version; bh=MGcfFT1ezMUQ1Vy9zjHsye8UEBuzaiMkUpeOVTT3Gno=; b=TDO4g5ButJ+1 Sgj9CeddujaN0q0CPvVQuNvgtKkbTf4CXWbGqmNvpVSZ5EG8VvYh75y94460QHfPkGyuVypqh9CbW TiBcrX1pfcxVdCoV4bmO4qKbIfB9p8nZlUf+6zpmj/ic/BJUgFx8n1RxoixjpwiYf43aMZCdR5iE9 eDMrKasejNHHBL/TYwNIPkO8PWCeTnsn9BHGMXNfSQGBCe6feOun61Oe6y3UIl2ZJOctnaS8xEnxI Kinp3780CDp0v2BI246DA2JTwigMkLv7w9AtIjgmIFSaHposTRppcA1CFFelPFJIjyBczP4O8RZRy pCaVmlPi/tBl8IKxnE4nWA==; Received: from rms by fencepost.gnu.org with local (Exim 4.90_1) (envelope-from <rms@HIDDEN>) id 1vLYu6-0005pX-HG; Tue, 18 Nov 2025 22:30:46 -0500 Content-Type: text/plain; charset=Utf-8 From: Richard Stallman <rms@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> In-Reply-To: <86h5uumq8m.fsf@HIDDEN> (message from Eli Zaretskii on Sun, 16 Nov 2025 08:43:53 +0200) Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <86ldkbrtin.fsf@HIDDEN> <CANVbq5m1zBV0M9aRn6kD_BRZ8miOV0rADHJvU+ernWB8CHdKvA@HIDDEN> <86jyzusdto.fsf@HIDDEN> <CANVbq5=vfgreuEdi02_unSPxqFmNV_hqNXP1Q8vRuvN8P+Dn3w@HIDDEN> <E1vKTQs-0003rt-NS@HIDDEN> <86h5uumq8m.fsf@HIDDEN> Message-Id: <E1vLYu6-0005pX-HG@HIDDEN> Date: Tue, 18 Nov 2025 22:30:46 -0500 X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79417 Cc: 79417 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Reply-To: rms@HIDDEN Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > > We could implement a keyboard-based method of specifying the > > correction in this context. One interface it could support is to > > choose the correction the same way ispell does it. > I don't see the rationale. I use ispell and I find that interface convenient. Text terminal menus are not convenient for me. I might use flyspell if I could control it the same way as ispell. I am not saying this should be the default interface for flyspell. -- Dr Richard Stallman (https://stallman.org) Chief GNUisance of the GNU Project (https://gnu.org) Founder, Free Software Foundation (https://fsf.org) Internet Hall-of-Famer (https://internethalloffame.org)
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 17 Nov 2025 12:35:24 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Nov 17 07:35:24 2025 Received: from localhost ([127.0.0.1]:51081 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vKyS4-00063H-A7 for submit <at> debbugs.gnu.org; Mon, 17 Nov 2025 07:35:24 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:54642) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vKyS2-00062q-6e for 79417 <at> debbugs.gnu.org; Mon, 17 Nov 2025 07:35:22 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vKyRw-00081Y-Tw; Mon, 17 Nov 2025 07:35:16 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=M1NrMIZelX7a6/Or1PlvdN5IbApWS8IZ+nHmKf2Kljc=; b=l1fhfRr3rixk 1M5KIPkmb5HAJX3vqIOna9hhI7X6Fnk8ArybLZ840OHQ8Qpx9UopXPNs9BnsjM9sXhmxasx3xGASI +doDraL0sJyV9AlD1YfhoMEmFn7smo75Jc3YnT1JiHU1UR2fEHTyguCL3goW4PrXUjOZgvsZQ3lbE zezj1spxl5T1sLJp3/WfPvJHJtL6KvLRRD9t2tYV6YnnbhgYajT34uHlDRaqyhtwHe22xLFeEpC2Z oEBfXadzW6edpA4I/2OIEk9iNJA1JL+Soz7Sb8NWmC/o1bjgh+VThSltx9dvmPyo+KqbKcdwOhYNJ MFCTF1Wd8AIPRTGIlQfvnA==; Date: Mon, 17 Nov 2025 14:35:01 +0200 Message-Id: <86jyzoltvu.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Kristoffer Balintona <krisbalintona@HIDDEN> In-Reply-To: <CANVbq5=WDnTMjbnTQV2XA8XK-CfDWPX1_E69uB6Qa8+FsLcgZw@HIDDEN> (message from Kristoffer Balintona on Sun, 16 Nov 2025 16:12:43 -0600) Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <86ldkbrtin.fsf@HIDDEN> <CANVbq5m1zBV0M9aRn6kD_BRZ8miOV0rADHJvU+ernWB8CHdKvA@HIDDEN> <86jyzusdto.fsf@HIDDEN> <CANVbq5=vfgreuEdi02_unSPxqFmNV_hqNXP1Q8vRuvN8P+Dn3w@HIDDEN> <E1vKTQs-0003rt-NS@HIDDEN> <86h5uumq8m.fsf@HIDDEN> <CANVbq5=WDnTMjbnTQV2XA8XK-CfDWPX1_E69uB6Qa8+FsLcgZw@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79417 Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, arstoffel@HIDDEN, rms@HIDDEN, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Kristoffer Balintona <krisbalintona@HIDDEN> > Date: Sun, 16 Nov 2025 16:12:43 -0600 > Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, arstoffel@HIDDEN, > emacs-devel@HIDDEN > > On Sun, Nov 16 2025, Eli Zaretskii wrote: > > >> From: Richard Stallman <rms@HIDDEN> > >> Cc: eliz@HIDDEN, yandros@HIDDEN, 79417 <at> debbugs.gnu.org, > >> arstoffel@HIDDEN, emacs-devel@HIDDEN > >> Date: Sat, 15 Nov 2025 22:28:06 -0500 > >> > >> We could implement a keyboard-based method of specifying the > >> correction in this context. One interface it could support is to > >> choose the correction the same way ispell does it. > > > > I don't see the rationale. Emacs supports menus on all terminals > > nowadays, including TTYs, and a menu is a very natural way of showing > > several short alternatives to be chosen from by the user. Adding a > > buffer-based selection (like *Completions*) would just bring > > gratuitous complexity, yet another user option, the need to document > > that, etc. etc. Sounds like net loss to me. > > Eli, what are your thoughts on a completing-read interface? All the > recent spell-checking packages in ELPA/MELPA favor completing-read. Such > packages include: > - flyspell-correct[1] > - jinx[2] > - jit-spell[3] > Do you believe it reasonable to have a new command that uses > completing-read? (Like how flyspell-correct-word-before-point and > flyspell-auto-correct-word are different word-correction commands in > flyspell-mode-map.) It's reasonable, but I explained why it isn't necessarily desirable. Each such new feature needs to be documented, advertised to make it discoverable, etc. etc. If we were implementing this feature from scratch, it would be a good idea to consider, but that's not the case. We already have an implementation with a good UI, so introducing one more UI for the same feature sounds like gratuitous overkill to me.
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 16 Nov 2025 22:12:53 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Nov 16 17:12:53 2025 Received: from localhost ([127.0.0.1]:47282 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vKkzN-0004kw-4M for submit <at> debbugs.gnu.org; Sun, 16 Nov 2025 17:12:53 -0500 Received: from mail-lf1-x132.google.com ([2a00:1450:4864:20::132]:57706) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <krisbalintona@HIDDEN>) id 1vKkzK-0004kf-T9 for 79417 <at> debbugs.gnu.org; Sun, 16 Nov 2025 17:12:51 -0500 Received: by mail-lf1-x132.google.com with SMTP id 2adb3069b0e04-59431f57bf6so3674565e87.3 for <79417 <at> debbugs.gnu.org>; Sun, 16 Nov 2025 14:12:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763331164; x=1763935964; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:from:to:cc:subject:date:message-id:reply-to; bh=SzPLf7ebqC8zFHgkrkvTCLrPyQbYD399yARJegAGhbI=; b=fQKDWk5gANAk+iwKc3QX6OgT50ccvuLxUDejfgzMEecB2HkYukcGJ7AOzQEaQGk506 67s98SJm0I/cVDMZvewmAXZ9BXaf1J5W2jzB+N4481B1g4r2ZxbEarncr85pLgw++t3j t6XB8MRwFORtdx4rRkaTP7oWp8he1dJ4DguaAZo6PHT2wBzM5vj080Munx0kFuTqpQUz dyKM3mn+oo3hjH5/2HNBpuh8l+fsZquVLBeOD+dWFnAmUXO1O3+24mRJmlcWuNcoLLqe TpEG/SXZD1n3hl1HnHnyVMrxCL9mlc4xyIhdj4tDqGIZWyhE/WlRi/RHGEqnFRwUJV6E 41Gg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763331164; x=1763935964; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=SzPLf7ebqC8zFHgkrkvTCLrPyQbYD399yARJegAGhbI=; b=Kmx0O2fONDeIKDxfetO+I1oDq0+GYFovGQKBPvwtBGzYyABGVkl1VyOEZ/Hs5b2IRS gOWp+6FTaHm6AJ5ymK6vZa/dsGY5X8DycEz03gJPS6jIJbrRjAJqAPdDUtqastJCF8Yj gvuTBQmvUqdp5lj5cKmqOpfkU0HZVcT803iH9aSpVf4A6x6yQoGCMjQwUv0BnmLkFFv7 P/nviY0EJ22T5jVDTpa+tnaYjYJcFmTMSAbtmAH1hERD4Yl0p8ACGt3XjBgRd3C9gW82 Z85nfak3AGlGHrokl31qSdXx+iRVfot7NcTAnPgbgsjmH1AxgTx1mB0VoxYT9a/Byo+J XbLw== X-Forwarded-Encrypted: i=1; AJvYcCWUXeusy1syhhNUqrTBjjMPBy3+yb+CyWPoPAN5nJ6lEW2BDxkGYj7YHl66Lj1D4+wm7HJ2dA==@debbugs.gnu.org X-Gm-Message-State: AOJu0YyZMmxNxKZ1ljmy3WOFQia+NvoPVZLXTPFc3lVk4o4468VkvjfR PdjcVkbsEkWGdhEio4vFo3PyNEGVmH0fUXbyWc7/ruvxDXXJ01jN8C34+b/8a/U5po4MbY9QQ1J LubJC5EfzssMvU0qENb5Cfo2SE3QLnX8= X-Gm-Gg: ASbGncsgTawUqy94UeoH8tlEg6fHwQH7ULpRgRK7fDtzfotN2opR2q7qm1ADvw82IzN nXXo7cVkq2wwXHJxXByUsUdqRAxGOictd8PV1d3Q/5UFSAHgV5KuJkcmEPZQZl0fCDz2+3PtMiN fovIqi+g3gJcO8YfZIc6wdHEm9gueyDNi+Xcy4tsoWDZfG2mWjk6PWS13/mIFJpSkYyuS6/ZvhU vnEeIp/jxz0CSTHp6f5lYqAYc89ce6bxmOEUH774BiFIgYbPioAIu8c7yliMQtTMwv/N1fQhyuv 5JSm5g== X-Google-Smtp-Source: AGHT+IFfvU5H83epHKePuZnzKEzc9juvF5RPVqrFMpYdUOjeUszKG3k+Ty/ft8nuff0ZF6D+mnqD3oHg3EUCbsJgFi0= X-Received: by 2002:a05:6512:1559:20b0:595:9152:b92f with SMTP id 2adb3069b0e04-5959152bc18mr473279e87.18.1763331163995; Sun, 16 Nov 2025 14:12:43 -0800 (PST) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Sun, 16 Nov 2025 16:12:43 -0600 Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Sun, 16 Nov 2025 16:12:43 -0600 From: Kristoffer Balintona <krisbalintona@HIDDEN> In-Reply-To: <86h5uumq8m.fsf@HIDDEN> References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <86ldkbrtin.fsf@HIDDEN> <CANVbq5m1zBV0M9aRn6kD_BRZ8miOV0rADHJvU+ernWB8CHdKvA@HIDDEN> <86jyzusdto.fsf@HIDDEN> <CANVbq5=vfgreuEdi02_unSPxqFmNV_hqNXP1Q8vRuvN8P+Dn3w@HIDDEN> <E1vKTQs-0003rt-NS@HIDDEN> <86h5uumq8m.fsf@HIDDEN> MIME-Version: 1.0 Date: Sun, 16 Nov 2025 16:12:43 -0600 X-Gm-Features: AWmQ_bngaS61Cmu5MBQVHmI4IaJssWQVhkiLXW-VnmBhCBwWNlw19S_clWiPRNw Message-ID: <CANVbq5=WDnTMjbnTQV2XA8XK-CfDWPX1_E69uB6Qa8+FsLcgZw@HIDDEN> Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? To: Eli Zaretskii <eliz@HIDDEN>, rms@HIDDEN Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79417 Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, arstoffel@HIDDEN, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On Sun, Nov 16 2025, Eli Zaretskii wrote: >> From: Richard Stallman <rms@HIDDEN> >> Cc: eliz@HIDDEN, yandros@HIDDEN, 79417 <at> debbugs.gnu.org, >> arstoffel@HIDDEN, emacs-devel@HIDDEN >> Date: Sat, 15 Nov 2025 22:28:06 -0500 >> >> > > It pops up a menu, yes. But you can navigate that menu with keyboard >> > > keys (arrow keys, RET and ESC), you don't have to use the mouse, at >> > > least with some toolkits and on TTY frames. So all-keyboard >> > > interaction is still possible with Flyspell, if someone must not use >> > > the mouse. >> >> > Ah, I hadn't known that you can interact with the pop up menu with the >> > keyboard. Thanks for informing me. >> >> We could implement a keyboard-based method of specifying the >> correction in this context. One interface it could support is to >> choose the correction the same way ispell does it. > > I don't see the rationale. Emacs supports menus on all terminals > nowadays, including TTYs, and a menu is a very natural way of showing > several short alternatives to be chosen from by the user. Adding a > buffer-based selection (like *Completions*) would just bring > gratuitous complexity, yet another user option, the need to document > that, etc. etc. Sounds like net loss to me. Eli, what are your thoughts on a completing-read interface? All the recent spell-checking packages in ELPA/MELPA favor completing-read. Such packages include: - flyspell-correct[1] - jinx[2] - jit-spell[3] Do you believe it reasonable to have a new command that uses completing-read? (Like how flyspell-correct-word-before-point and flyspell-auto-correct-word are different word-correction commands in flyspell-mode-map.) Footnotes: [1] https://github.com/d12frosted/flyspell-correct [2] https://github.com/minad/jinx [3] https://github.com/astoff/jit-spell -- Kind regards, Kristoffer
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 16 Nov 2025 06:44:29 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Nov 16 01:44:29 2025 Received: from localhost ([127.0.0.1]:41521 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vKWUv-0005uK-4H for submit <at> debbugs.gnu.org; Sun, 16 Nov 2025 01:44:29 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:53168) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vKWUt-0005u3-J7 for 79417 <at> debbugs.gnu.org; Sun, 16 Nov 2025 01:44:28 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vKWUn-0001Ba-Ql; Sun, 16 Nov 2025 01:44:22 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=gRO/n1x//ZYGZYycRTgvumYDfEFvm5gjllYz7U3s2MI=; b=VzkmXS4/rP6Z ycLlcwgNys/p1ko4QtE+9zH10JlrjFHWjrDM0MWTiP0BdK9LNFEgdVAvoSV+ePcGPYzBSHJf92Pet of9gekZjBtTTYJSDdwncN3Qo2BwXr76XRNhKGd6wyQ5XGAhd8xjLwXWLnvHtlJDIes1sSwbLcX5RB bPjjZTvJTi9MpStEz1aUt5X9gCcuTCEEBUXr3TRijgbl+rTZgJ/EFzUge91NbtUU1QeHsIkY7BxWx 3u1I6zJZZl04Ibrl1UtAy2Zt6XxyyLLKqR7838+abKWutveOnBqWeNM3uXWLqHEHQ23p0aCUPuoQB oAHzBpYbhdjiE7u/3Dw3Yw==; Date: Sun, 16 Nov 2025 08:43:53 +0200 Message-Id: <86h5uumq8m.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: rms@HIDDEN In-Reply-To: <E1vKTQs-0003rt-NS@HIDDEN> (message from Richard Stallman on Sat, 15 Nov 2025 22:28:06 -0500) Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <86ldkbrtin.fsf@HIDDEN> <CANVbq5m1zBV0M9aRn6kD_BRZ8miOV0rADHJvU+ernWB8CHdKvA@HIDDEN> <86jyzusdto.fsf@HIDDEN> <CANVbq5=vfgreuEdi02_unSPxqFmNV_hqNXP1Q8vRuvN8P+Dn3w@HIDDEN> <E1vKTQs-0003rt-NS@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79417 Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, arstoffel@HIDDEN, krisbalintona@HIDDEN, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Richard Stallman <rms@HIDDEN> > Cc: eliz@HIDDEN, yandros@HIDDEN, 79417 <at> debbugs.gnu.org, > arstoffel@HIDDEN, emacs-devel@HIDDEN > Date: Sat, 15 Nov 2025 22:28:06 -0500 > > > > It pops up a menu, yes. But you can navigate that menu with keyboard > > > keys (arrow keys, RET and ESC), you don't have to use the mouse, at > > > least with some toolkits and on TTY frames. So all-keyboard > > > interaction is still possible with Flyspell, if someone must not use > > > the mouse. > > > Ah, I hadn't known that you can interact with the pop up menu with the > > keyboard. Thanks for informing me. > > We could implement a keyboard-based method of specifying the > correction in this context. One interface it could support is to > choose the correction the same way ispell does it. I don't see the rationale. Emacs supports menus on all terminals nowadays, including TTYs, and a menu is a very natural way of showing several short alternatives to be chosen from by the user. Adding a buffer-based selection (like *Completions*) would just bring gratuitous complexity, yet another user option, the need to document that, etc. etc. Sounds like net loss to me.
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 16 Nov 2025 03:28:15 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Nov 15 22:28:15 2025 Received: from localhost ([127.0.0.1]:40042 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vKTR1-0006DA-8h for submit <at> debbugs.gnu.org; Sat, 15 Nov 2025 22:28:15 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:54544) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <rms@HIDDEN>) id 1vKTQz-0006Cs-4X for 79417 <at> debbugs.gnu.org; Sat, 15 Nov 2025 22:28:14 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <rms@HIDDEN>) id 1vKTQt-00057O-RK; Sat, 15 Nov 2025 22:28:07 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=Date:References:Subject:In-Reply-To:To:From: mime-version; bh=8Td3EFUEdT+nhkJ3JadLbm8o67gryJ0br+TN1/IaWW4=; b=op+Uc7W4cfut bj1p1Wsilj9H98qMI2gW+jthSKQ9wgh8zilm4O73gjUI3sOY9IVhtMmQZuN4zYRZo3OgHL+A1Ip0O HQdcRtZ5g8x0w9lOU8wZz2Q+cJBELiljf+wj/HnlitVORa2C2fbHf/sc1O7CBtKnCEEgBPcmL9Xis UnHWhdD42WQAWWpcg5ZjFc5szj3l3sNuLqt9n1Jv8kqCEuRsHEbM59lvUoWLre6Bq14VctxrQNu8f BJuIsoVn2+g3FhjXDrx0zROjhWR9Xp49yj7whqIhgEmi47dzqyZe9Mri7hnyiW5WBe93jghoNtDBJ /0yYNMJYR0rpW3uV0WK9DA==; Received: from rms by fencepost.gnu.org with local (Exim 4.90_1) (envelope-from <rms@HIDDEN>) id 1vKTQs-0003rt-NS; Sat, 15 Nov 2025 22:28:06 -0500 Content-Type: text/plain; charset=Utf-8 From: Richard Stallman <rms@HIDDEN> To: Kristoffer Balintona <krisbalintona@HIDDEN> In-Reply-To: <CANVbq5=vfgreuEdi02_unSPxqFmNV_hqNXP1Q8vRuvN8P+Dn3w@HIDDEN> (message from Kristoffer Balintona on Thu, 13 Nov 2025 07:38:15 -0800) Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <86ldkbrtin.fsf@HIDDEN> <CANVbq5m1zBV0M9aRn6kD_BRZ8miOV0rADHJvU+ernWB8CHdKvA@HIDDEN> <86jyzusdto.fsf@HIDDEN> <CANVbq5=vfgreuEdi02_unSPxqFmNV_hqNXP1Q8vRuvN8P+Dn3w@HIDDEN> Message-Id: <E1vKTQs-0003rt-NS@HIDDEN> Date: Sat, 15 Nov 2025 22:28:06 -0500 X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79417 Cc: eliz@HIDDEN, 79417 <at> debbugs.gnu.org, arstoffel@HIDDEN, yandros@HIDDEN, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Reply-To: rms@HIDDEN Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > > It pops up a menu, yes. But you can navigate that menu with keyboard > > keys (arrow keys, RET and ESC), you don't have to use the mouse, at > > least with some toolkits and on TTY frames. So all-keyboard > > interaction is still possible with Flyspell, if someone must not use > > the mouse. > Ah, I hadn't known that you can interact with the pop up menu with the > keyboard. Thanks for informing me. We could implement a keyboard-based method of specifying the correction in this context. One interface it could support is to choose the correction the same way ispell does it. -- Dr Richard Stallman (https://stallman.org) Chief GNUisance of the GNU Project (https://gnu.org) Founder, Free Software Foundation (https://fsf.org) Internet Hall-of-Famer (https://internethalloffame.org)
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 14 Nov 2025 18:40:55 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Nov 14 13:40:55 2025 Received: from localhost ([127.0.0.1]:60137 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vJyj8-0003pd-S0 for submit <at> debbugs.gnu.org; Fri, 14 Nov 2025 13:40:55 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:42704) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vJyj5-0003pX-My for 79417 <at> debbugs.gnu.org; Fri, 14 Nov 2025 13:40:52 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vJyis-0004p4-SV; Fri, 14 Nov 2025 13:40:44 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=8sgicz7UMmyQG1fdwMeHvY/QnZSW3jYc/WbMZweLGIY=; b=NBuwLmRuXYlU x85eIPr8zWZeRuKOYx9v/fKxMmS/FwYnUvdjcNR+PR4HxX+rUMzgPOtngH9oS18VxNL+JqFra9iXX 6UoUVHyjTpBz7zL/h4z0TW5eXYxtf7OHEAxgkndxlF8IxbCflI06sRw0s7DFDh0w259UXQjNQ7GrG fT9djguSzBgTCjVCC1X86AZTILOB8aPL6seoY7DTcFFwm2D2yoko0T+0RFkx0JoyJHB9RosFyapJd s+6942oxsQ/GV19xN7+cCTVmirBOX2jxrBBFUeKxXtzfG9olJhqmnzw6DV3Q7tKHf6UNM6LgqIUZ9 OlMBmqAh/4oVL2ZPTe+jIQ==; Date: Fri, 14 Nov 2025 20:39:43 +0200 Message-Id: <86346gqx00.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Augusto Stoffel <arstoffel@HIDDEN> In-Reply-To: <871pm0lfaz.fsf@HIDDEN> (message from Augusto Stoffel on Fri, 14 Nov 2025 18:00:52 +0100) Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <87ikff83x8.fsf@HIDDEN> <86fraisc34.fsf@HIDDEN> <87ecq28i21.fsf@HIDDEN> <86bjl6s4tu.fsf@HIDDEN> <87zf8q71ir.fsf@HIDDEN> <867bvus1j0.fsf@HIDDEN> <CANVbq5=6SSez-JDLjNA7TGjXHKW+F7GADdJf+r8vD69EDmg=WQ@HIDDEN> <86wm3trip0.fsf@HIDDEN> <87ldk9klci.fsf@HIDDEN> <86ecq0rgsw.fsf@HIDDEN> <87cy5klrcg.fsf@HIDDEN> <86a50or9lj.fsf@HIDDEN> <871pm0lfaz.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79417 Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, krisbalintona@HIDDEN, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Augusto Stoffel <arstoffel@HIDDEN> > Cc: Augusto Stoffel <arstoffel@HIDDEN>, krisbalintona@HIDDEN, > yandros@HIDDEN, 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN > Date: Fri, 14 Nov 2025 18:00:52 +0100 > > On Fri, 14 Nov 2025 at 16:07, Eli Zaretskii <eliz@HIDDEN> wrote: > > >> From: Augusto Stoffel <arstoffel@HIDDEN> > >> Cc: Augusto Stoffel <arstoffel@HIDDEN>, krisbalintona@HIDDEN, > >> yandros@HIDDEN, 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN > >> Date: Fri, 14 Nov 2025 13:40:47 +0100 > >> > >> On Fri, 14 Nov 2025 at 13:31, Eli Zaretskii <eliz@HIDDEN> wrote: > >> > >> > Earlier you seemed to be saying that a single defcustom could serve > >> > for both global and buffer-local values, even if they were different. > >> > So please describe how a user would go about customizing the global > >> > and the local values to different dictionaries. > >> > >> Let's imagine ispell-dictionary and ispell-local-dictionary get unified > >> under the name new-ispell-dict-var. > >> > >> Global: > >> Interactively: M-x customize-variable RET new-ispell-dict-var > >> Via Lisp: (setq-default new-ispell-dict-var VALUE) > >> > >> Local: > >> Interactively: M-x add-file-local-variable RET new-ispell-dict-var > >> Via Lisp: (setq-local new-ispell-dict-var VALUE) > > > > Thanks. But I was talking about interactive customizations using > > "M-x customize-variable" for both global and local customizations. > > Doing this in file-local variables is fine, but in many cases users > > want to use a specific dictionary when editing a buffer without having > > to add local variable, perhaps even without making that permanent. > > Okay, I see what you mean. Then you'd have the options > > To set globally: > - M-x customize-variable RET new-ispell-dict-var > > To set locally: > - M-x ispell-change-dictionary > - M-x set-variable RET new-ispell-dict-var > > I think what you have in mind doesn't work, because M-x > customize-variable sets the default value of a variable. This means > that after using M-x customize-variable RET ispell-local-dictionary, the > value of ispell-dictionary will be forever (in the current Emacs > session, at least) masked by ispell-local-dictionary. This is a sort of > undefined behavior, actually, and a good reason to not have 2 variables > for basically the same purpose. Now it's clear that we disagree, and so lets' agree to disagree.
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 14 Nov 2025 17:01:04 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Nov 14 12:01:03 2025 Received: from localhost ([127.0.0.1]:33242 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vJxAV-0003Cw-Ey for submit <at> debbugs.gnu.org; Fri, 14 Nov 2025 12:01:03 -0500 Received: from mail-ej1-x629.google.com ([2a00:1450:4864:20::629]:50605) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <arstoffel@HIDDEN>) id 1vJxAS-0003CQ-C2 for 79417 <at> debbugs.gnu.org; Fri, 14 Nov 2025 12:01:01 -0500 Received: by mail-ej1-x629.google.com with SMTP id a640c23a62f3a-b728a43e410so348045566b.1 for <79417 <at> debbugs.gnu.org>; Fri, 14 Nov 2025 09:01:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763139654; x=1763744454; darn=debbugs.gnu.org; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:from:to:cc:subject:date:message-id:reply-to; bh=HDZXcsvJcxJktIV8X5MLlzJrUsQJyV1GuqpfwR1ho30=; b=U++v/K/oNFs5CgBcEozELxCmV1xvT3va04JqBh8909AIloHwuShkHy1iUU7oRUuqRK TSf7QBoNWpcSxl8YyTsak76XPOq3noAkbNRzAxVVoa9MEio7dgi8DpRqoOhCiqhQ6BAk l4RjBbMnnz/7Om9tpgvwW/eA4WNc1WWiCvfk0fnOcOdQEkPSPMCEN/bewV4bRhjAcVby XlqsM1tqoCgBZhlr3VGQw2Cg6+y2eQ3jF7uJIyWwGoGEi+P6Gbwbr6KcpQgZo1UjDlEG Z6BCxRmqSn6dyNnIXQOcT2eAAdvzJxOu8/vTtCyGzn9mGqqQ70VkPqMhuKEcQOIpaZ8d e7yQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763139654; x=1763744454; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=HDZXcsvJcxJktIV8X5MLlzJrUsQJyV1GuqpfwR1ho30=; b=I4/B0/inhllLgZHU8IyWt+nY6DzP8dS+l6kK/JzgfYr4xrUrSn6MDQHnrHJoQKKooj p/9DVM+HQnMxSzRUovKjgOsbFewCxP+cQiGc0MrZ9s5NMj/Kerb4F2ZeXbcQX+FtzliY 1gk3RX6cYeo5wBznp9+dC0aFlG6oxXlmpXp1VRsJwbSms87uhe51l3cBl2kZyeBGBfxM XKk/WKe9HFJPJC4xPAKJNulqGfygKui3m9ngp+61eN2Wk46LE6UxZFrJxg4T45Qm8CAU RjoviMR/xOybzNCqoDQg2mZiFL8AfXq6O6//xhtiCkhRtnSJU4KPO53i8UueHjGb0mRO lmzg== X-Forwarded-Encrypted: i=1; AJvYcCWFCIvb8oeo5qrXkGf/GLoqMbqUfGuxNLTKkGTWFiA/51aBKp9iXRGOLu6cLoWj8D0RW/ulCg==@debbugs.gnu.org X-Gm-Message-State: AOJu0YxF7Ly+VaS3cPrpfayllcb0T0p1tZWEIQeVZOu+v4TtG0KeQ+XF bkoV4ItkPP0ngRz+zxBr3Dpo4yiOhm1MFc6AamKA4EWNnjk+DCITAvbq X-Gm-Gg: ASbGncui4CVoMHkSjmybgEMapcELmxmnqA0ieUUGBLdm2r/xns7ZyBjqFdSnuAhVU+h O22qxq0of/qBJyin46DCsgg2obQwq+wRbaz2STzX2Sa1QwwFdfOs7v7hkuT5QB1F7g9aXVx7z3X ZHK1Ro2sTehlvPamt4MuYfffKlt6zT7OJpZRtLQSJONsOIA+4fIgQ1aTv24TcVsH1nOuo5e6yWx N5r3K6tLuKqwltfqgGlauJKsrfLeR/ZeIYoP2ioH4Wl+znG2rT/e5L3y/nTeI127Sg0O6+fHZI/ i4+FntFxwtOCj7KxS7FLJqsLels1TonWia6LYiE6atrvzAa/8J/vkkS+vyOIxDRCS4ine7l9TSF thvA/Tg9LhgAXC/OIGLzRk9hNjkwge6iBzXk5iShnIv0dUnV4J0cYk0FPGBys01F1KlRtP+Y9Cw == X-Google-Smtp-Source: AGHT+IFIVJ/0TTANHg7SON6rTKfV9D03zd9kisEQmSaGoadycU6VRJgmzxHPVZvsERtqBB0U0KFg1w== X-Received: by 2002:a17:907:60d0:b0:b72:a5bd:c585 with SMTP id a640c23a62f3a-b7367bc68fbmr312749366b.46.1763139653978; Fri, 14 Nov 2025 09:00:53 -0800 (PST) Received: from ars3 ([2a02:8109:8a95:9a00::e45b]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b734fed80f0sm419901866b.66.2025.11.14.09.00.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Nov 2025 09:00:53 -0800 (PST) From: Augusto Stoffel <arstoffel@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? In-Reply-To: <86a50or9lj.fsf@HIDDEN> References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <87ikff83x8.fsf@HIDDEN> <86fraisc34.fsf@HIDDEN> <87ecq28i21.fsf@HIDDEN> <86bjl6s4tu.fsf@HIDDEN> <87zf8q71ir.fsf@HIDDEN> <867bvus1j0.fsf@HIDDEN> <CANVbq5=6SSez-JDLjNA7TGjXHKW+F7GADdJf+r8vD69EDmg=WQ@HIDDEN> <86wm3trip0.fsf@HIDDEN> <87ldk9klci.fsf@HIDDEN> <86ecq0rgsw.fsf@HIDDEN> <87cy5klrcg.fsf@HIDDEN> <86a50or9lj.fsf@HIDDEN> Date: Fri, 14 Nov 2025 18:00:52 +0100 Message-ID: <871pm0lfaz.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 79417 Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, Augusto Stoffel <arstoffel@HIDDEN>, krisbalintona@HIDDEN, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On Fri, 14 Nov 2025 at 16:07, Eli Zaretskii <eliz@HIDDEN> wrote: >> From: Augusto Stoffel <arstoffel@HIDDEN> >> Cc: Augusto Stoffel <arstoffel@HIDDEN>, krisbalintona@HIDDEN, >> yandros@HIDDEN, 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN >> Date: Fri, 14 Nov 2025 13:40:47 +0100 >> >> On Fri, 14 Nov 2025 at 13:31, Eli Zaretskii <eliz@HIDDEN> wrote: >> >> > Earlier you seemed to be saying that a single defcustom could serve >> > for both global and buffer-local values, even if they were different. >> > So please describe how a user would go about customizing the global >> > and the local values to different dictionaries. >> >> Let's imagine ispell-dictionary and ispell-local-dictionary get unified >> under the name new-ispell-dict-var. >> >> Global: >> Interactively: M-x customize-variable RET new-ispell-dict-var >> Via Lisp: (setq-default new-ispell-dict-var VALUE) >> >> Local: >> Interactively: M-x add-file-local-variable RET new-ispell-dict-var >> Via Lisp: (setq-local new-ispell-dict-var VALUE) > > Thanks. But I was talking about interactive customizations using > "M-x customize-variable" for both global and local customizations. > Doing this in file-local variables is fine, but in many cases users > want to use a specific dictionary when editing a buffer without having > to add local variable, perhaps even without making that permanent. Okay, I see what you mean. Then you'd have the options To set globally: - M-x customize-variable RET new-ispell-dict-var To set locally: - M-x ispell-change-dictionary - M-x set-variable RET new-ispell-dict-var I think what you have in mind doesn't work, because M-x customize-variable sets the default value of a variable. This means that after using M-x customize-variable RET ispell-local-dictionary, the value of ispell-dictionary will be forever (in the current Emacs session, at least) masked by ispell-local-dictionary. This is a sort of undefined behavior, actually, and a good reason to not have 2 variables for basically the same purpose.
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 14 Nov 2025 14:07:52 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Nov 14 09:07:52 2025 Received: from localhost ([127.0.0.1]:60537 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vJuSt-0003SP-Pe for submit <at> debbugs.gnu.org; Fri, 14 Nov 2025 09:07:52 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:57206) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vJuSr-0003SF-Ps for 79417 <at> debbugs.gnu.org; Fri, 14 Nov 2025 09:07:50 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vJuSk-0002PV-Tp; Fri, 14 Nov 2025 09:07:43 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=watanlflPH+bKRMB+k/UuW1A56uITXYvfIjDDyum3SI=; b=p0BZPTtSRN6C YYg+BD37phy1NGdzIvxB2qB9t0mPAxgeE5mx7xAL1EM39ZrqrKBNSLWt9PkAPtZuuo2JvZvAtuwj7 vUg6IFjkBr3WsElExjUe8C0WUpkGlH55qoiuOjycF+aehC2pQaUcEJWgDHc6GDPGMdudqUA5by9PV +kOZ7CcXSZhFj+jjouow9Qx+DlIvcC9VKGCpb7avnUh+aHt1XTLfyWIeerme/nw74otoydAYpd5nv AmwUS6EmX/UC8YAzWiWhtbT0GO0S0ZrhOygAoOelLlssKE5QAd1M0cpSdHbNw5aG6dgxazL2MqV3N 8dvvat7NxSAOOLalQYXWDQ==; Date: Fri, 14 Nov 2025 16:07:36 +0200 Message-Id: <86a50or9lj.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Augusto Stoffel <arstoffel@HIDDEN> In-Reply-To: <87cy5klrcg.fsf@HIDDEN> (message from Augusto Stoffel on Fri, 14 Nov 2025 13:40:47 +0100) Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <87ikff83x8.fsf@HIDDEN> <86fraisc34.fsf@HIDDEN> <87ecq28i21.fsf@HIDDEN> <86bjl6s4tu.fsf@HIDDEN> <87zf8q71ir.fsf@HIDDEN> <867bvus1j0.fsf@HIDDEN> <CANVbq5=6SSez-JDLjNA7TGjXHKW+F7GADdJf+r8vD69EDmg=WQ@HIDDEN> <86wm3trip0.fsf@HIDDEN> <87ldk9klci.fsf@HIDDEN> <86ecq0rgsw.fsf@HIDDEN> <87cy5klrcg.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79417 Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, krisbalintona@HIDDEN, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Augusto Stoffel <arstoffel@HIDDEN> > Cc: Augusto Stoffel <arstoffel@HIDDEN>, krisbalintona@HIDDEN, > yandros@HIDDEN, 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN > Date: Fri, 14 Nov 2025 13:40:47 +0100 > > On Fri, 14 Nov 2025 at 13:31, Eli Zaretskii <eliz@HIDDEN> wrote: > > > Earlier you seemed to be saying that a single defcustom could serve > > for both global and buffer-local values, even if they were different. > > So please describe how a user would go about customizing the global > > and the local values to different dictionaries. > > Let's imagine ispell-dictionary and ispell-local-dictionary get unified > under the name new-ispell-dict-var. > > Global: > Interactively: M-x customize-variable RET new-ispell-dict-var > Via Lisp: (setq-default new-ispell-dict-var VALUE) > > Local: > Interactively: M-x add-file-local-variable RET new-ispell-dict-var > Via Lisp: (setq-local new-ispell-dict-var VALUE) Thanks. But I was talking about interactive customizations using "M-x customize-variable" for both global and local customizations. Doing this in file-local variables is fine, but in many cases users want to use a specific dictionary when editing a buffer without having to add local variable, perhaps even without making that permanent.
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 14 Nov 2025 12:40:59 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Nov 14 07:40:59 2025 Received: from localhost ([127.0.0.1]:60405 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vJt6p-0008QV-6E for submit <at> debbugs.gnu.org; Fri, 14 Nov 2025 07:40:59 -0500 Received: from mail-ed1-x52a.google.com ([2a00:1450:4864:20::52a]:59595) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <arstoffel@HIDDEN>) id 1vJt6m-0008QP-3y for 79417 <at> debbugs.gnu.org; Fri, 14 Nov 2025 07:40:57 -0500 Received: by mail-ed1-x52a.google.com with SMTP id 4fb4d7f45d1cf-6419e6dab7fso2897573a12.2 for <79417 <at> debbugs.gnu.org>; Fri, 14 Nov 2025 04:40:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763124050; x=1763728850; darn=debbugs.gnu.org; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:from:to:cc:subject:date:message-id:reply-to; bh=PUfT1OaN8OV4fDh441KjocB7EBoZ9dh1vFnWRwnIaJw=; b=MLZp6TRZJlvexaLWEsOGb2ELViCWrJjJ0JAPDZ5z9T+ERo5qk+7PK24JXihmQjlb7E gGXA1NL9y4i8NVzWPYG0oAz8LIjC4rvhc6shW87vnd/NSr1pzCcx3kbjn4CONkEW1XDd IgiIfy71DKxnoLR7jcPyUq35wrECCYpSdbdNAML8BifNo80c7ju8pAWYvTMb+ur6kqxL EasJzl6M7Owlydzyj99plRBTSc/oZAitym7gHrORaDeyRQqJPW4hAVv+hTwKfRC6ltQI eIZVqLIZ0bgr4xQQ4Or9CPuzd5s8u2BxGXekegGSGm2efnLcowNbuTzifrur4VGpLIH8 9bXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763124050; x=1763728850; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=PUfT1OaN8OV4fDh441KjocB7EBoZ9dh1vFnWRwnIaJw=; b=p8QGJfC2kvGFefSabKqcphZlhAv0UYFElk+Z3Q7NjYJy4FS5z1genCbftqehJw9e3f myKwAePxzoIono2yggSCEF+ReXCXOtiKKLfU22fNCrP0VEkow9ciCl+Jh+8KYsh9VkGf 9yjfgv53XW/SYVisKNGSorJk7xydORzP6o33XlYHpr6YlBT63Lv7mMbm/Yzr7H/7TtzH yk41Nu4FaatIGEAEaJzfkL5Sai/czYjHGi1VfbCGV2l+inyn3yMlDqoZ5wZ93C8hK93N 5VR/e6crMrQAzNIfAackSXDwT1X4KZ4Q6F8jgGlaIoadj28W/kVKFZMNAe21VnJXAuGg Q7Sw== X-Forwarded-Encrypted: i=1; AJvYcCVaZRowgGPX2x6pIRmNOkI0NiGNkxA1ZQHmi2xuzzqk9El9JDrQZjLCvtR+Qyi3JODxgAEIJQ==@debbugs.gnu.org X-Gm-Message-State: AOJu0YziZkDdgUWkKU4MdRTom+pvBq+xo7H+ruXSwRV47JA2DrmnZ5qr EnU0JFvhVDYBh7KjuWSO8a9JsmnuQF/BWSCtXRo26lwUzOOD1GXZ+PO+ X-Gm-Gg: ASbGncviLMxV8l15IiPO8SdnrIlIdngVxW9MfUt42o2uvdNQCM1wYH0VGKZ14Dj0Fv4 mHnl26Ocsa/6a8S2JoxspQlRD5T+y72MimyhnH54JgsoQ/7EggeaCEBIa4FyWhpYGn1eCED710r pnKfy9muc0XqjWLZjmHUZF+bUmBQV+/5/is5QwHIGwYITKtt56Hl0pCmiHe4BGJkjhps3D7AKsV yX4OFVENkJ4hHMwmfMnR4YH98FsSZK8BD2ntjqCpK/BsKhLixXepRSsBGxv9Ng3+s3U5m+Q0TfJ izNcZgNnLX3mgexwPKv39hySSKWfJqzKH5UzzcdsngRixVIS8dgLd8mAE+CNaqW4ly1m7KdFDQf YHy+by4LbmEQf5dFBagZjXxkP2osoSOD+qMmE+Lh3OpoCCyoIJ5JXmDxeh3C9YnM= X-Google-Smtp-Source: AGHT+IHgRCfAImMEaurQRvsum7jUBUFFBudIRO7SvxEViCO92970p9umTZ+VjyYexTG4mH/HmgpiqQ== X-Received: by 2002:a17:907:1c81:b0:b71:2145:dfc8 with SMTP id a640c23a62f3a-b7367962422mr302125266b.39.1763124049420; Fri, 14 Nov 2025 04:40:49 -0800 (PST) Received: from ars3 ([2a02:8109:8a95:9a00::e45b]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b734fda8a7bsm371667766b.54.2025.11.14.04.40.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Nov 2025 04:40:48 -0800 (PST) From: Augusto Stoffel <arstoffel@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? In-Reply-To: <86ecq0rgsw.fsf@HIDDEN> References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <87ikff83x8.fsf@HIDDEN> <86fraisc34.fsf@HIDDEN> <87ecq28i21.fsf@HIDDEN> <86bjl6s4tu.fsf@HIDDEN> <87zf8q71ir.fsf@HIDDEN> <867bvus1j0.fsf@HIDDEN> <CANVbq5=6SSez-JDLjNA7TGjXHKW+F7GADdJf+r8vD69EDmg=WQ@HIDDEN> <86wm3trip0.fsf@HIDDEN> <87ldk9klci.fsf@HIDDEN> <86ecq0rgsw.fsf@HIDDEN> Date: Fri, 14 Nov 2025 13:40:47 +0100 Message-ID: <87cy5klrcg.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79417 Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, Augusto Stoffel <arstoffel@HIDDEN>, krisbalintona@HIDDEN, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On Fri, 14 Nov 2025 at 13:31, Eli Zaretskii <eliz@HIDDEN> wrote: > Earlier you seemed to be saying that a single defcustom could serve > for both global and buffer-local values, even if they were different. > So please describe how a user would go about customizing the global > and the local values to different dictionaries. Let's imagine ispell-dictionary and ispell-local-dictionary get unified under the name new-ispell-dict-var. Global: Interactively: M-x customize-variable RET new-ispell-dict-var Via Lisp: (setq-default new-ispell-dict-var VALUE) Local: Interactively: M-x add-file-local-variable RET new-ispell-dict-var Via Lisp: (setq-local new-ispell-dict-var VALUE) > Because what you say above left me confused, both about what you think > happens and whether (and why) it fits perfectly what users will want. > Apologies if I misunderstand something.
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 14 Nov 2025 11:32:25 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Nov 14 06:32:25 2025 Received: from localhost ([127.0.0.1]:60279 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vJs2T-0002nD-At for submit <at> debbugs.gnu.org; Fri, 14 Nov 2025 06:32:25 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55158) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vJs2R-0002n1-Q1 for 79417 <at> debbugs.gnu.org; Fri, 14 Nov 2025 06:32:24 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vJs2L-0000O7-Of; Fri, 14 Nov 2025 06:32:17 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=5wYZmVLB58QlMH3uDuktvsOBSGGyoBrurUb3LzBnlZs=; b=sR65DRos15NM V3kHPxEQrw9FdNnN+2GqxzSrZyc9SbWdXpKR+hkcOOPqhamZ5ZG4vAs9hmvm8Ry4bHHdzYa6NSJS/ cycz3h7uJxvU2RmIJDGGSy1QZ36Qtl8jF4/olmOj6cw5mmtx67U/Jbs2QN31P2ylJU1oqqNLXurvV 5zbKo2QMta2Q8Iq1z3AUlcl0OGakhIMoZI6k1ayi/9gtcnvckwefqqyUnMsMCl/j27eWB8Lgh9ymf c6lMe/643S+R756+lM9xHgpdtAhmkCPxIsC69aIZ0ILGgbO+leLn+VFfjInBJDnZPepW9hrLQL4Ju R5f6riy4bnlysefXPjttQQ==; Date: Fri, 14 Nov 2025 13:31:59 +0200 Message-Id: <86ecq0rgsw.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Augusto Stoffel <arstoffel@HIDDEN> In-Reply-To: <87ldk9klci.fsf@HIDDEN> (message from Augusto Stoffel on Fri, 14 Nov 2025 10:35:41 +0100) Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <87ikff83x8.fsf@HIDDEN> <86fraisc34.fsf@HIDDEN> <87ecq28i21.fsf@HIDDEN> <86bjl6s4tu.fsf@HIDDEN> <87zf8q71ir.fsf@HIDDEN> <867bvus1j0.fsf@HIDDEN> <CANVbq5=6SSez-JDLjNA7TGjXHKW+F7GADdJf+r8vD69EDmg=WQ@HIDDEN> <86wm3trip0.fsf@HIDDEN> <87ldk9klci.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79417 Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, arstoffel@HIDDEN, krisbalintona@HIDDEN, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Augusto Stoffel <arstoffel@HIDDEN> > Cc: Kristoffer Balintona <krisbalintona@HIDDEN>, arstoffel@HIDDEN, > yandros@HIDDEN, 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN > Date: Fri, 14 Nov 2025 10:35:41 +0100 > > On Thu, 13 Nov 2025 at 18:38, Eli Zaretskii <eliz@HIDDEN> wrote: > > >> In my opinion, the above state of affairs is simple and straightforward. > >> But I also know some elisp. Eli, were you imagining confusion for users > >> who may not know elisp? Is your idea to keep defcustoms not > >> buffer-local? > > > > A defcustom can be buffer-local, but that it is _only_ buffer-local, > > and becomes local once set. It doesn't fit well an MO where there's > > one global value and other local values. > > When you M-x customize a variable that automatically becomes > buffer-local when set, what is actually called under the hood is > set-default (setting the variable's value for the *Customize* buffer, or > the temp buffer is used to load the saved configuration during startup, > would indeed be silly and that's definitely not what happens). > > This to me fits perfectly the situation at hand. What else could one > possibly want to do? Earlier you seemed to be saying that a single defcustom could serve for both global and buffer-local values, even if they were different. So please describe how a user would go about customizing the global and the local values to different dictionaries. Because what you say above left me confused, both about what you think happens and whether (and why) it fits perfectly what users will want. Apologies if I misunderstand something.
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 14 Nov 2025 09:35:52 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Nov 14 04:35:52 2025 Received: from localhost ([127.0.0.1]:60075 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vJqDg-00068Z-B7 for submit <at> debbugs.gnu.org; Fri, 14 Nov 2025 04:35:52 -0500 Received: from mail-ed1-x535.google.com ([2a00:1450:4864:20::535]:51317) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <arstoffel@HIDDEN>) id 1vJqDe-00068R-At for 79417 <at> debbugs.gnu.org; Fri, 14 Nov 2025 04:35:50 -0500 Received: by mail-ed1-x535.google.com with SMTP id 4fb4d7f45d1cf-640ca678745so3311465a12.2 for <79417 <at> debbugs.gnu.org>; Fri, 14 Nov 2025 01:35:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763112944; x=1763717744; darn=debbugs.gnu.org; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:from:to:cc:subject:date:message-id:reply-to; bh=fErkn0dQNAyAdoSjAo6QlhxVSZzWVM9yZqBD6JPfXes=; b=hlJy4lfz+RzX6ocFObA3y64oNa5qiafeitqfX5t8C/thGIvjcDF7sD/OCL+2EyHQGp xrcdtEREaBoSFaSbrgOuGUwvT1mTjcN6zO2mlazuf3ikLJVay9f0l/njcVopBcU+2sjc auESK8bqsm2r7TM9D8841Zm6yW+BLEXunYNgZdGT0NukdLifWH3UzRvZ1nqt3rkKAm/g DvnlUn2jpWLJ/O5xoL66VPzOx7vDJwK3ZmlDEw7Jli4FRBbcfT2zej6UA/xhvvTXTKUC u/6TborBgAyoXutJtpzHGi2wCKprSN6UPllvfBwiOf4vyKVm3/1M4Tg+qqbBgMCy5B4K Z0FA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763112944; x=1763717744; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=fErkn0dQNAyAdoSjAo6QlhxVSZzWVM9yZqBD6JPfXes=; b=w7jYZoBFgjyObisvDs6Az2nk/5f/jMdGBqrOaiZBrQcmrMCCF764XXlGlDsIGQblzj 5rMjMibvCeZciYHuD7ZbHLPNgEGD+FwXZqyMF2wdPwpojINnMcbs4ZWn9YDmAdVZJ/Kc tKSPrt5Lg4IDTERyhtK4B36yGP9eZcD43qAWXPwUhh8r/3KTe+OUskmmXbwnU3vgFsLg 6o4Lp2T9dlwiu8Jwv2SSof8Rw1LxBv41r2ddHuX1hIT/GM/cCaZncBiZZLw77XH/NjIE cjjoRbr8AAalzw9PkpJepEyF5ZvyqETvBkORX8OIBStjSMdun0piewGr2vW4XbCsfqUf g+Yg== X-Forwarded-Encrypted: i=1; AJvYcCV4//XGeWyycWGk64CNigHVwDuJZrzO33Hd9J2vn2ML5JEM/Wbk19+q3LpNbM04fRJzFtx9Eg==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yz3bpkuljfoVBHcdat4c8/mGpfBClWuUokyluutEHQewi9e9A5m EwJEyhGTpLVQCnk+KF68SpD7jSAQ4uXUlWU1rxDOm8yyEdwQj1YmiugC X-Gm-Gg: ASbGncsfuUgxpWk4OiD+RD2c4T4mAhHHFLxJPMn1+EcbS2+avb9cuoyS2tdGI/liiuf vEh+9RKvpVdo4UK/951fyXK3Bnu3nIL0vEZ1zXZxCF0DR/vMaaj0Ys273JZT9vB5QhsoXZlBhwJ RXr5jop9Ih06KbrscvAhI+y0P/dJ9BvfAcySdqagNq7xJmI1JTDebMtuYVjSH6GfpvtmXfBwMOk CsgXLH+t6GQdkXt8OuC1rXTK3ctqkdkOxQjOXN5Lc1KXAPlu8z+SUJl/08EvitNPxAx26NAubb7 BT9Fxsh5Nni3g3FAqg1mlYcmxRR+Gn0qu9/gxWzvYniSrs9y1qineyxTgDGKIav51cln8WafJZC ExOEZCmzIUCEPe7z/jYPoIHP8Rr+D6Tffco/vllbwTPTMq13/CcWQ X-Google-Smtp-Source: AGHT+IEKktUlytYkH3GFRkcrmc5z4d6h4AFpVwfpt0/mQM8UH5hoA3m4YuUNvRENvs3P65yJ7WvthA== X-Received: by 2002:a05:6402:234c:b0:641:27d8:ec4c with SMTP id 4fb4d7f45d1cf-64350e06ef6mr2202946a12.16.1763112943809; Fri, 14 Nov 2025 01:35:43 -0800 (PST) Received: from ars3 ([2a02:8109:8a95:9a00::e45b]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6433a3f8eb0sm3434863a12.12.2025.11.14.01.35.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Nov 2025 01:35:42 -0800 (PST) From: Augusto Stoffel <arstoffel@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? In-Reply-To: <86wm3trip0.fsf@HIDDEN> References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <87ikff83x8.fsf@HIDDEN> <86fraisc34.fsf@HIDDEN> <87ecq28i21.fsf@HIDDEN> <86bjl6s4tu.fsf@HIDDEN> <87zf8q71ir.fsf@HIDDEN> <867bvus1j0.fsf@HIDDEN> <CANVbq5=6SSez-JDLjNA7TGjXHKW+F7GADdJf+r8vD69EDmg=WQ@HIDDEN> <86wm3trip0.fsf@HIDDEN> Date: Fri, 14 Nov 2025 10:35:41 +0100 Message-ID: <87ldk9klci.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79417 Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, arstoffel@HIDDEN, Kristoffer Balintona <krisbalintona@HIDDEN>, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On Thu, 13 Nov 2025 at 18:38, Eli Zaretskii <eliz@HIDDEN> wrote: >> In my opinion, the above state of affairs is simple and straightforward. >> But I also know some elisp. Eli, were you imagining confusion for users >> who may not know elisp? Is your idea to keep defcustoms not >> buffer-local? > > A defcustom can be buffer-local, but that it is _only_ buffer-local, > and becomes local once set. It doesn't fit well an MO where there's > one global value and other local values. When you M-x customize a variable that automatically becomes buffer-local when set, what is actually called under the hood is set-default (setting the variable's value for the *Customize* buffer, or the temp buffer is used to load the saved configuration during startup, would indeed be silly and that's definitely not what happens). This to me fits perfectly the situation at hand. What else could one possibly want to do? Concerning the other message about the quality of the docstring, I think the docstring is perfectly adequate. Some types of confusion shouldn't be solved by explaining things more, but rather by reducing complexity.
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 13 Nov 2025 18:15:46 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 13 13:15:46 2025 Received: from localhost ([127.0.0.1]:56300 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vJbrG-0004KY-BM for submit <at> debbugs.gnu.org; Thu, 13 Nov 2025 13:15:46 -0500 Received: from mail-wr1-x42a.google.com ([2a00:1450:4864:20::42a]:56565) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <paaguti@HIDDEN>) id 1vJbr9-0004KQ-Jd for 79417 <at> debbugs.gnu.org; Thu, 13 Nov 2025 13:15:40 -0500 Received: by mail-wr1-x42a.google.com with SMTP id ffacd0b85a97d-429ce7e79f8so955717f8f.0 for <79417 <at> debbugs.gnu.org>; Thu, 13 Nov 2025 10:15:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763057733; x=1763662533; darn=debbugs.gnu.org; h=references:to:cc:in-reply-to:date:subject:mime-version:message-id :from:from:to:cc:subject:date:message-id:reply-to; bh=zQAkP3r4ES3YVGec1LvFCRn8I+c26QUTBMa3aHLYnRU=; b=SViz9VA0BFD+cHuYt23fCDGwTLvYSTjNSH4S/Zfho9Zi/R0yFH7R1XCwDQNPRjRykM gNXtTq8SeHPg5zM81A4t4QaBqbFQTXqATkmHCm66pXhGqrGqnGrSYCAR/nR0sp7uFr0y /qZ/k/MyGtABk9f68tvLZzI3HF32giDqCt+5GwJMFtHVRKFVID1+j0lgIH3CCUrMvEzn uyixNtqZsFbuM2jFqH64YVbX4CaLnOlJuIUuwFt+Gyn5MOuG2lY/694o8CfKXq49JexT uzM5WBFdPrf94T3DtIoi5UiSVWgzCGJJBoF4SH9FQjL8nr+G/tWdfLYeWPsDcpLpCpEZ raEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763057733; x=1763662533; h=references:to:cc:in-reply-to:date:subject:mime-version:message-id :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=zQAkP3r4ES3YVGec1LvFCRn8I+c26QUTBMa3aHLYnRU=; b=gqJMkzM51NH1tWuiF8LX7/bGwHgYVGxNoEQ167bZ2btnCUFosE60rwafnT7uT6+5hw D9S9TFSDYOdAHepU7n0Wdr4sVWmu1C4GUvvPK2JH+PGtQ6aE9rNIIpaeWsaFPsZuDEzP qHUserfWjsPQ49ruoWQ1KPLmzSigg2/pLVg/zcXaap+ZbcBvGdY7kKGFIdheIcRj3rWm QVQBubkZkbzyyuSK7U5q80LLBPe5QW0oL7cidfyzlpnMHkR0O7tcswvLHEjD3AhDj4Hm fjMBXupi78ZLhnjwNaPvBnU44lTEz+Uy1x7xF6I4PqoTCZbiRiy5NGd/XbqdgjfJVCQF HgZA== X-Forwarded-Encrypted: i=1; AJvYcCUbTFee0Jlnj0Qeq53AWy2ZrZpknJCvNmKJ3PN03CsBUStK83PwsvOpwv2+04Sjy0XZD0vsfA==@debbugs.gnu.org X-Gm-Message-State: AOJu0YzJ6wHMBKYY45d5mlHaGl1xFTxpSovFOPW95BOB0LhmWt+gq04p ag5XwRD3aRA1x5ejxLKxfDnNtQhlgfSrNNlPfuyDIjjc1iD1IpEOnLtc X-Gm-Gg: ASbGnct/KGk7OrS8//7ZF0ACvPcV9qGc/E/E2S8yyCp8fnVgb0mp3/CH1KBhdNzF8xg Tq6qIT1YKge0/xdZBeqtSJLAZyHjPSZYRbsuSLclvNxelvWtZTasWMqBPJiAvqVUk9jOKjXwprH QpNK1214tPD11BBX2kqJU2Qz+KArzMcbe5mVYnqQjuDOYvbugza0XerSX/ciNaAXEuvM69ykodb TAUl7SIECXG/Vzb71NcYzZg32C6cgILnsnETwEZJoBQ5foSrpYlhHnsrgXru7V7C4NLnHfB2Dec yLTXFHeVABX/NVqAKNzZXGb5Uzy1avLyaFfH+cAlozF3GkBzWBd4yhhJvdB8TsRleViP2c89CdZ FR8hTnHazCX94I/xw/pJLth1WM2/RbrMmvUYxyk5UJG7538L1GAZx3Ra8aHNLr22dY8Nh50GStA TnXAK/B0is/cPVejtUfCth1K+qbz0sE31yBabikjZ3+J40dBschVDvxgOzeQ== X-Google-Smtp-Source: AGHT+IHc4Av9kIsn9HS7CypyaqUvayJs99UAdXI3D9cGVbzSM+DjgOvs6gUNU5A1JBBzc/ktSbA7sg== X-Received: by 2002:a05:6000:2001:b0:42b:4247:b07e with SMTP id ffacd0b85a97d-42b5934b278mr363500f8f.25.1763057732865; Thu, 13 Nov 2025 10:15:32 -0800 (PST) Received: from smtpclient.apple (101.red-79-148-71.dynamicip.rima-tde.net. [79.148.71.101]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-42b53f17cbfsm4981984f8f.35.2025.11.13.10.15.31 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 13 Nov 2025 10:15:32 -0800 (PST) From: Pedro Andres Aranda Gutierrez <paaguti@HIDDEN> Message-Id: <EF3F516E-38A2-489C-B34B-7010D4033979@HIDDEN> Content-Type: multipart/alternative; boundary="Apple-Mail=_41565496-7BE2-4B8A-B2A8-3E228429F79B" Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.700.81.1.3\)) Subject: Re: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? Date: Thu, 13 Nov 2025 19:15:21 +0100 In-Reply-To: <mailman.31.1763053210.1414.emacs-devel@HIDDEN> To: emacs-devel@HIDDEN References: <mailman.31.1763053210.1414.emacs-devel@HIDDEN> X-Mailer: Apple Mail (2.3826.700.81.1.3) X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 79417 Cc: 79417 <at> debbugs.gnu.org, krisbalintona@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --Apple-Mail=_41565496-7BE2-4B8A-B2A8-3E228429F79B Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Hi > El 13 nov 2025,Kristoffer Balintona <krisbalintona@HIDDEN = <mailto:krisbalintona@HIDDEN>> escribi=C3=B3: >=20 > Also, I should add that, IMO, the matter of whether we have two or > multiple dictionary user options is less significant than the = perceived > speed of ispell/flyspell and other UI-related things I listed earlier > (partly because we can take approach (2), which doesn't involve = changing > the packages themselves). Both are equally significant, IMHO=E2=80=A6=20 If you overcome responsiveness, there will be users troubles with the = =E2=80=98configuration dichotomy=E2=80=99. And on the other hand, when you consider activating a feature and you = are not sure about how to configure correctly, would you activate it? = Yours truly wouldn=E2=80=99t unless there is no other way.=20 Now I=E2=80=99m back on jinx-only everywhere, but I needed to activate = my old flyspell config in the (forced) transition to an Mx Mac and I = didn=E2=80=99t remember all these little details anymore, so it was = painful=E2=80=A6 Just my experience , /PA --Apple-Mail=_41565496-7BE2-4B8A-B2A8-3E228429F79B Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8 <html><head><meta http-equiv=3D"content-type" content=3D"text/html; = charset=3Dutf-8"></head><body style=3D"overflow-wrap: break-word; = -webkit-nbsp-mode: space; line-break: after-white-space;">Hi<br = id=3D"lineBreakAtBeginningOfMessage"><div><br><blockquote = type=3D"cite"><div>El 13 nov 2025,Kristoffer Balintona <<a = href=3D"mailto:krisbalintona@HIDDEN">krisbalintona@HIDDEN</a>> = escribi=C3=B3:</div></blockquote><blockquote type=3D"cite"><br = class=3D"Apple-interchange-newline"><div><span style=3D"caret-color: = rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: = normal; font-variant-caps: normal; font-weight: 400; letter-spacing: = normal; text-align: start; text-indent: 0px; text-transform: none; = white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; = text-decoration: none; float: none; display: inline !important;">Also, I = should add that, IMO, the matter of whether we have two or</span><br = style=3D"caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: = 14px; font-style: normal; font-variant-caps: normal; font-weight: 400; = letter-spacing: normal; text-align: start; text-indent: 0px; = text-transform: none; white-space: normal; word-spacing: 0px; = -webkit-text-stroke-width: 0px; text-decoration: none;"><span = style=3D"caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: = 14px; font-style: normal; font-variant-caps: normal; font-weight: 400; = letter-spacing: normal; text-align: start; text-indent: 0px; = text-transform: none; white-space: normal; word-spacing: 0px; = -webkit-text-stroke-width: 0px; text-decoration: none; float: none; = display: inline !important;">multiple dictionary user options is less = significant than the perceived</span><br style=3D"caret-color: rgb(0, 0, = 0); font-family: Helvetica; font-size: 14px; font-style: normal; = font-variant-caps: normal; font-weight: 400; letter-spacing: normal; = text-align: start; text-indent: 0px; text-transform: none; white-space: = normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; = text-decoration: none;"><span style=3D"caret-color: rgb(0, 0, 0); = font-family: Helvetica; font-size: 14px; font-style: normal; = font-variant-caps: normal; font-weight: 400; letter-spacing: normal; = text-align: start; text-indent: 0px; text-transform: none; white-space: = normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; = text-decoration: none; float: none; display: inline !important;">speed = of ispell/flyspell and other UI-related things I listed = earlier</span><br style=3D"caret-color: rgb(0, 0, 0); font-family: = Helvetica; font-size: 14px; font-style: normal; font-variant-caps: = normal; font-weight: 400; letter-spacing: normal; text-align: start; = text-indent: 0px; text-transform: none; white-space: normal; = word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: = none;"><span style=3D"caret-color: rgb(0, 0, 0); font-family: Helvetica; = font-size: 14px; font-style: normal; font-variant-caps: normal; = font-weight: 400; letter-spacing: normal; text-align: start; = text-indent: 0px; text-transform: none; white-space: normal; = word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: = none; float: none; display: inline !important;">(partly because we can = take approach (2), which doesn't involve changing</span><br = style=3D"caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: = 14px; font-style: normal; font-variant-caps: normal; font-weight: 400; = letter-spacing: normal; text-align: start; text-indent: 0px; = text-transform: none; white-space: normal; word-spacing: 0px; = -webkit-text-stroke-width: 0px; text-decoration: none;"><span = style=3D"caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: = 14px; font-style: normal; font-variant-caps: normal; font-weight: 400; = letter-spacing: normal; text-align: start; text-indent: 0px; = text-transform: none; white-space: normal; word-spacing: 0px; = -webkit-text-stroke-width: 0px; text-decoration: none; float: none; = display: inline !important;">the packages = themselves).</span></div></blockquote><br></div><div>Both are equally = significant, IMHO=E2=80=A6 </div><div><br></div><div>If you = overcome responsiveness, there will be users troubles with the = =E2=80=98configuration dichotomy=E2=80=99.</div><div>And on the other = hand, when you consider activating a feature and you are not sure about = how to configure correctly, would you activate it? Yours truly = wouldn=E2=80=99t unless there is no other = way. </div><div><br></div><div>Now I=E2=80=99m back on jinx-only = everywhere, but I needed to activate my old flyspell config in the = (forced) transition to an Mx Mac and I didn=E2=80=99t remember all these = little details anymore, so it was = painful=E2=80=A6</div><div><br></div><div>Just my experience , = /PA</div><br><div><br></div></body></html>= --Apple-Mail=_41565496-7BE2-4B8A-B2A8-3E228429F79B--
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 13 Nov 2025 16:39:02 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 13 11:39:02 2025 Received: from localhost ([127.0.0.1]:55663 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vJaLd-0005rw-VD for submit <at> debbugs.gnu.org; Thu, 13 Nov 2025 11:39:02 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:36088) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vJaLb-0005rl-Rl for 79417 <at> debbugs.gnu.org; Thu, 13 Nov 2025 11:39:00 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vJaLV-0005Dj-Vy; Thu, 13 Nov 2025 11:38:54 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=DsVTm+5MGIImkwdnNVcCrrpUOCgtYNihwqOP5AdVs4w=; b=G61EVohCs2qD QUaDNGfWRDF3sfx60S6xldSW0S8/jYk7rE198rtHJAi/q9YMSAEEtovVivpiL1FA1xtDD3SA0ROAz nd8RasY9Y0AHnrZiUrnXuNeBhm4qxv6b0qJAS3gqCEAufb69pilRx8m4d/65YYIzZJT9IlmTygwqF vS8AN7ldPaj3vKJpqdmYK2N3eALtQoPTQXoxLCxqt4MmTCAmG0eJEMscnZMUwcKvYuvleE5gJuDrl NjgDKoW8RLr8jLLS2kddSO82qNMFnRViqrR1LsU+MWq0fMz8AGPWtJbEk+vrv4sqG3j6AVDH3jRnu 1SXdVi5etMQSESsw5Rjryg==; Date: Thu, 13 Nov 2025 18:38:51 +0200 Message-Id: <86wm3trip0.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Kristoffer Balintona <krisbalintona@HIDDEN> In-Reply-To: <CANVbq5=6SSez-JDLjNA7TGjXHKW+F7GADdJf+r8vD69EDmg=WQ@HIDDEN> (message from Kristoffer Balintona on Thu, 13 Nov 2025 08:22:16 -0800) Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <87ikff83x8.fsf@HIDDEN> <86fraisc34.fsf@HIDDEN> <87ecq28i21.fsf@HIDDEN> <86bjl6s4tu.fsf@HIDDEN> <87zf8q71ir.fsf@HIDDEN> <867bvus1j0.fsf@HIDDEN> <CANVbq5=6SSez-JDLjNA7TGjXHKW+F7GADdJf+r8vD69EDmg=WQ@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79417 Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, arstoffel@HIDDEN, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Kristoffer Balintona <krisbalintona@HIDDEN> > Date: Thu, 13 Nov 2025 08:22:16 -0800 > Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN > > On Thu, Nov 13 2025, Eli Zaretskii wrote: > > > Doesn't calling setopt in file-local variables require to use 'eval'? > > And if so, doesn't it prompt the user to confirm (because 'eval' is > > not safe by default)? By contrast, ispell-local-dictionary is > > considered safe as a local variable if its value is a string. > > Maybe I've misunderstood something too? I think Augusto and I, when > speaking about merging ispell-dictionary and ispell-dictionary into one > user option, imagined something like the following situation: > 1. Have a singular ispell-dictionary user option that is buffer-local, > meaning it has a default (i.e., global) value as well as buffer-local > values. > 2. Users can set this option globally with either setopt or > setq-default. > 3. Users can set this option buffer-locally via setq-local or file-local > variable lines (e.g., with add-file-local-variable or > add-file-local-variable-prop-line), or even directory-locally (via > add-dir-local-variable). > 4. We may keep ispell-change-dictionary: it'll simply use setq-local to > change the buffer's value for ispell-dictionary. > 5. We lose no functionality with only having one option. > Were you imagining the same situation, Eli, or something else? Yes: what about the ability to set the dictionary from file-local variables? This is needed if you want the file to be spell-checked with a specific dictionary. > In my opinion, the above state of affairs is simple and straightforward. > But I also know some elisp. Eli, were you imagining confusion for users > who may not know elisp? Is your idea to keep defcustoms not > buffer-local? A defcustom can be buffer-local, but that it is _only_ buffer-local, and becomes local once set. It doesn't fit well an MO where there's one global value and other local values.
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 13 Nov 2025 16:22:26 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 13 11:22:26 2025 Received: from localhost ([127.0.0.1]:55522 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vJa5Z-0004zR-MN for submit <at> debbugs.gnu.org; Thu, 13 Nov 2025 11:22:26 -0500 Received: from mail-lf1-x12a.google.com ([2a00:1450:4864:20::12a]:52538) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <krisbalintona@HIDDEN>) id 1vJa5X-0004zC-KV for 79417 <at> debbugs.gnu.org; Thu, 13 Nov 2025 11:22:24 -0500 Received: by mail-lf1-x12a.google.com with SMTP id 2adb3069b0e04-5957753e0efso1137938e87.1 for <79417 <at> debbugs.gnu.org>; Thu, 13 Nov 2025 08:22:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763050937; x=1763655737; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:from:to:cc:subject:date:message-id:reply-to; bh=nrtYCzPgK5k/4v2vZixIfCVHhtgaM7+6X4ZS8I7dnG4=; b=YYFKQD8NFCSWXREV/fnNH2+ohPNGrNAh6TSOTjSQ/v4qCEAfmGOdwIGqwm3Rfpm6FW WnL7odf+c8P3poW0SDHJ1523YpGrGG8YOykbbpiw2GqgFgWTKDuhiQeQGn35ECIugZOQ r8BIT9ABXwPPZ3WRMvtH8dElVh7SqZdrpSu92iXATqxIHgr0UfakZktFCmNSnPo26Y5j n0RoUFI1g150zWFcqVwKRDR/4PLWg8kiUihUuUmksoq4RmFiTS8+1L2kInwRa+I7hZ55 fvSr+tg7Rt4j6vB2JtYiP7am3Zh2EfJUTL8Qaj0qnGnvU4Vr+oliMUzJL+lhI6A/NoyU S5SQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763050937; x=1763655737; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=nrtYCzPgK5k/4v2vZixIfCVHhtgaM7+6X4ZS8I7dnG4=; b=qKqD4xk/MHRIR75Fz3U2ndy5hF+9l5ygyF0Q22DhtjCnY71LkmA6FDnvSx40cTzXYV OoV9V8u7WbM8fHS6dSPDqLU9v7RAaDEYzRA1FpgbfGx73A+j3gdCQAY9qvhaGH31AIDV /WuuK4TB5ROKHBEYt388GUoD0RpMCCRR+o/F0DU8flWxTP+hmKkNdFwmKPqt9YbWFSdI +aqtXaAxjy0/Ej9XlmIAlLJ6hQVOJCmKTQSHbgjDQxLenAlJzruMX1ZL7zDbqohyMvVf GMZfvYwtEgdoZdMD9PL/6O8pouG73j0M5FyDciP9/m9eS76VU3m1Z0otWBKxqoiNNH6G cC3w== X-Forwarded-Encrypted: i=1; AJvYcCWjpWNJNae+fVNpj3O2q9r7k6nBkwyTro9KnAY6tep/vsrxtEqD/0ZvQ7NXohHzuh4m1M5ndw==@debbugs.gnu.org X-Gm-Message-State: AOJu0YxqLIpG5Wk62zr/Qoqvc0aW1VDtBG4zoBm95fQVpSDhy1b4ZWxb rRq+GL9nNMbY78nhPVsD0G2dy9SO5SsogD7rgXW49qeGG+SNLo+HHwt1x1kn8SdBha/BQGpEGA+ J4VKQz/zid+wpIjtelqWzR7A5EHZHH38= X-Gm-Gg: ASbGncuBkfBN/7XRkBoJ1llwvCgp5aAjcddEDEfC2SjP3TQ+UghgK+FxRaqRXP+gyPi 5EnwEEY93++F4ICduy8FRjni/0FgegO9kIf+lQ5bvUZOzfsVxymzlS3imrgrYJmRS6A+8mQ0ax7 5wL+Og9pd8JZGY8jkWV6ATa8qOv9tWFcPru8nPEIasa1XZS8Y5JAw6JxvO4RdC9kHXXFAfb4YqK bk+ZXv6Z/HQ3XqffqdCbmraqTO37VbAk8wihICLibmwe6lVVeUDpS2vYvoLmYWp71MXz9M= X-Google-Smtp-Source: AGHT+IF6i4AieJ3jEwIAEGRChhbQMx3/MqN9zLyXA2PuHMRFU37wuuXd4K8pLXbXIAekG4/1K1YtX71pur0MWB9hl6g= X-Received: by 2002:a05:6512:2248:b0:595:80d2:cfee with SMTP id 2adb3069b0e04-5958414c902mr48560e87.0.1763050936899; Thu, 13 Nov 2025 08:22:16 -0800 (PST) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Thu, 13 Nov 2025 08:22:16 -0800 Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Thu, 13 Nov 2025 08:22:16 -0800 From: Kristoffer Balintona <krisbalintona@HIDDEN> In-Reply-To: <867bvus1j0.fsf@HIDDEN> References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <87ikff83x8.fsf@HIDDEN> <86fraisc34.fsf@HIDDEN> <87ecq28i21.fsf@HIDDEN> <86bjl6s4tu.fsf@HIDDEN> <87zf8q71ir.fsf@HIDDEN> <867bvus1j0.fsf@HIDDEN> MIME-Version: 1.0 Date: Thu, 13 Nov 2025 08:22:16 -0800 X-Gm-Features: AWmQ_blbMF-9NxF1QjLUQo1DUbXv6DeuG1mBv_YBceCWxjl9LjutPXnZmnw6Q20 Message-ID: <CANVbq5=6SSez-JDLjNA7TGjXHKW+F7GADdJf+r8vD69EDmg=WQ@HIDDEN> Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? To: Eli Zaretskii <eliz@HIDDEN>, Augusto Stoffel <arstoffel@HIDDEN> Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 79417 Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On Thu, Nov 13 2025, Eli Zaretskii wrote: >> From: Augusto Stoffel <arstoffel@HIDDEN> >> Cc: krisbalintona@HIDDEN, yandros@HIDDEN, 79417 <at> debbugs.gnu.org, >> emacs-devel@HIDDEN >> Date: Thu, 13 Nov 2025 09:57:48 +0100 >> >> On Thu, 13 Nov 2025 at 10:40, Eli Zaretskii <eliz@HIDDEN> wrote: >> >> > Buffer-local values with global value different have subtle aspects >> > that even some Emacs developers trip upon. I wouldn't want users to >> > need to deal with that. Also, both variables are defcustom's, and >> > that doesn't handle buffer-local and global defaults too well, if at >> > all, AFAIK. >> > >> > In any case, the onus is on you to explain why it is bad to have two >> > separate variables, not why it's _possible_ to have just one. >> >> Kristoffer said he was confused about the existence of two similarly >> named variables. Which ones should I modify to achieve a particular >> end? What happens if I set ispell-dictionary locally of give >> ispell-local-dictionary a default value? Why isn't there just one >> variable like virtually every other user option? > > The doc strings say: > > (defcustom ispell-local-dictionary nil > "If non-nil, the dictionary to be used for Ispell commands in this buffer. > The value must be a string dictionary name, > or nil, which means use the global setting in `ispell-dictionary'. > Dictionary names are defined in `ispell-local-dictionary-alist' > and `ispell-dictionary-alist'. > > Setting `ispell-local-dictionary' to a value has the same effect as > calling \\[ispell-change-dictionary] with that value. This variable > is automatically set when defined in the file with either > `ispell-dictionary-keyword' or the Local Variable syntax." > > (defcustom ispell-dictionary nil > "Default dictionary to use if `ispell-local-dictionary' is nil." > > It seems to me that your questions are answered there, but maybe I'm > missing something. We could always improve the documentation if the > above is not clear enough. Regardless of whether there should be one or two ispell dictionary options, I agree with Eli's final remark. Lockywolf's patch (the origin of this thread) was motivated by the confusion he felt as a user and is also an aspect I expressed in my messages. Now, to address this confusion, we can either (1) modify ispell/flypell itself or (2) add explanations and clarity to the documentation (docstrings and the Emacs manual). Having one dictionary option would be approach (1), while leaving the multiple options we have now should mean we do (2). I say this for the sake of clarity in the conversation. Also, I should add that, IMO, the matter of whether we have two or multiple dictionary user options is less significant than the perceived speed of ispell/flyspell and other UI-related things I listed earlier (partly because we can take approach (2), which doesn't involve changing the packages themselves). >> >> If ispell-local-dictionary is removed, one would do setq-default >> >> ispell-dictionary in the init file and setq-local ispell-dictionary to >> >> switch to a different language in a specific buffer, just like any other >> >> option. >> > >> > Once again, these are defcustom's, so reasoning about them in terms of >> > setq-default etc. is not appropriate. setq-default and setq-local >> > make sense with defvars when we discuss Lisp programs, but here we are >> > talking about user options and user customizations. Asking users to >> > use these will probably increase the confusion, not decrease it. >> >> Sure, the end user will use M-x customize or setopt and file/dir-local >> variables, which ultimately set default and local values respectively. >> This works just fine in my experience; if not, that would be a somewhat >> severe bug. > > Doesn't calling setopt in file-local variables require to use 'eval'? > And if so, doesn't it prompt the user to confirm (because 'eval' is > not safe by default)? By contrast, ispell-local-dictionary is > considered safe as a local variable if its value is a string. Maybe I've misunderstood something too? I think Augusto and I, when speaking about merging ispell-dictionary and ispell-dictionary into one user option, imagined something like the following situation: 1. Have a singular ispell-dictionary user option that is buffer-local, meaning it has a default (i.e., global) value as well as buffer-local values. 2. Users can set this option globally with either setopt or setq-default. 3. Users can set this option buffer-locally via setq-local or file-local variable lines (e.g., with add-file-local-variable or add-file-local-variable-prop-line), or even directory-locally (via add-dir-local-variable). 4. We may keep ispell-change-dictionary: it'll simply use setq-local to change the buffer's value for ispell-dictionary. 5. We lose no functionality with only having one option. Were you imagining the same situation, Eli, or something else? In my opinion, the above state of affairs is simple and straightforward. But I also know some elisp. Eli, were you imagining confusion for users who may not know elisp? Is your idea to keep defcustoms not buffer-local? I can't recall any off the top of my head, but are there other built-in Emacs packages that have defcustoms that are buffer-locally set by that package? -- Kind regards, Kristoffer
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 13 Nov 2025 15:38:25 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 13 10:38:25 2025 Received: from localhost ([127.0.0.1]:55263 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vJZOz-0003El-Bn for submit <at> debbugs.gnu.org; Thu, 13 Nov 2025 10:38:25 -0500 Received: from mail-lf1-x132.google.com ([2a00:1450:4864:20::132]:49195) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <krisbalintona@HIDDEN>) id 1vJZOw-0003Eb-Kn for 79417 <at> debbugs.gnu.org; Thu, 13 Nov 2025 10:38:23 -0500 Received: by mail-lf1-x132.google.com with SMTP id 2adb3069b0e04-592ff1d80feso1017447e87.2 for <79417 <at> debbugs.gnu.org>; Thu, 13 Nov 2025 07:38:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763048296; x=1763653096; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:from:to:cc:subject:date:message-id:reply-to; bh=RCjjJuiYKPmoYJJsNyKjnwLnz2/eWGhD0tjPGfoLKNo=; b=VzPEyy8tvOI7Ic8ub4jSIbzu2wFjssOjKrSVDEY6CkOiYS+to1mk9RkjWFmZJXPHZj gV/Lt3uXerHd5+vfCh9SdPivWC1ln+R0CQ1s/n1OJ94hfXRS+tjbj57sJRRbf02edMsK QodTFMDoaU2cd6KO5glt9A1O3O+r51Z29hXTPPvBsXXYZqcqfbtnM6ovvGgqXGloTeTN dSSLq6NUW3ibL8rNkJnJGuTjUvj4yX3TFyCH9f7Wq0ltTW1vjlqUo9HQMU86HYBjRNwM y0eNEX3RkU9KnNk48V3b6rUcsdAmHafKg7pfUaF538gBP6t2dO3elATwO99jjza5ywFI UB1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763048296; x=1763653096; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=RCjjJuiYKPmoYJJsNyKjnwLnz2/eWGhD0tjPGfoLKNo=; b=Vs/o4nmbX6bmKmu4bmdfifXboIzW3gHxr+0HyuF5NGZ/gmdW/tR6c8Z471zHuer2vU W67omNUBo1MhIwHOY3aAgTfAUEgm4KY7V+ErAIeV6T+vHPgzCj1aOytz88XIucEZsPaB siYnhnayOzRarbAkOC0NXk8v5UKwe8+qLX/VJCwEYXxEkwI4uD3ktBVlzXs9b9NgxI+f rszW2OXbpZzEeBp7mpcitfCoNopVNOaX6lMPxuJkPHdnlGAzitVDjRQ2hzriLckfcJr8 RJR8gnoxenx+cLOFqBCUf2f3/D1kkn2bzuxCU1qVA3fSl7Co6JXm6y+2slbvP5CN/uJq 8HMg== X-Forwarded-Encrypted: i=1; AJvYcCUe7dcNkb1xjArYeq1Xmbxi08FJmS9+4o5ruKglyiaac0amPxYA0+dUcwvEfNQQcUvksMd1vA==@debbugs.gnu.org X-Gm-Message-State: AOJu0YxVFcszfO6JzJumwfQlKnz1HWdSK0f2ju4vmhDmRRgIP2KB/Qu+ dgSMfROQMdM1rAk5cDC1HG+HP0BFC4CM1yrzssD/bc9CQb3+fCRaAsdwF3EFHFuU9V1UXZKYZvP aLJbCuaVgXyrJFMSWGHkcVvDnNES9u6A= X-Gm-Gg: ASbGncsTL3JaQbMwH6KpNOaaIK3iF1b9hnjzhzoqCwzIRUvqFyu2PE6QGyQYwRy5vLG G9BioUJlvmjMcssGRe8HNqX+HE7XoNeYqUdT6I8wjw8EWk1oxOBGkDxv2Ztf1gvDoBsGOEIE2u7 Df8SIkuzx4KcGFK4qt1rL0StLr/AqDuaa9Rf+z/Kto6hPtkuRpLb9QAgvS0CTE8IMyCq27jWVqF d6Md31L9UUiaSdgvGR2YTcSsCqCtjg0mUYDZrvtxxkhxq3IFKew4qKB5L4uPFfIxHTHCqM= X-Google-Smtp-Source: AGHT+IEkjt+vv9sEHCp15EOQWLbPypGzVqKPMQRE+kWriRegY8qQbyvWUES0G3ZsGCt3iQUW8Khflytv74+dsrZ2WgI= X-Received: by 2002:a05:6512:3191:b0:594:2d8d:96b7 with SMTP id 2adb3069b0e04-59576e452f1mr2647889e87.55.1763048295824; Thu, 13 Nov 2025 07:38:15 -0800 (PST) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Thu, 13 Nov 2025 07:38:15 -0800 Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Thu, 13 Nov 2025 07:38:15 -0800 From: Kristoffer Balintona <krisbalintona@HIDDEN> In-Reply-To: <86jyzusdto.fsf@HIDDEN> References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <86ldkbrtin.fsf@HIDDEN> <CANVbq5m1zBV0M9aRn6kD_BRZ8miOV0rADHJvU+ernWB8CHdKvA@HIDDEN> <86jyzusdto.fsf@HIDDEN> MIME-Version: 1.0 Date: Thu, 13 Nov 2025 07:38:15 -0800 X-Gm-Features: AWmQ_bnjc3p0PbhghQN3duB-Kx__4-3J5ZFWq6NQb5gKvYMhHUHqakBNQUrDSFY Message-ID: <CANVbq5=vfgreuEdi02_unSPxqFmNV_hqNXP1Q8vRuvN8P+Dn3w@HIDDEN> Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? To: Eli Zaretskii <eliz@HIDDEN> Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 79417 Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, arstoffel@HIDDEN, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On Thu, Nov 13 2025, Eli Zaretskii wrote: >> From: Kristoffer Balintona <krisbalintona@HIDDEN> >> Date: Wed, 12 Nov 2025 11:10:41 -0800 >> Cc: arstoffel@HIDDEN, yandros@HIDDEN, 79417 <at> debbugs.gnu.org, >> emacs-devel@HIDDEN >> >> On Wed, Nov 12 2025, Eli Zaretskii wrote: >> >> >> Cc: chad <yandros@HIDDEN>, 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN >> >> From: Kristoffer Balintona <krisbalintona@HIDDEN> >> >> Date: Wed, 12 Nov 2025 10:10:11 -0800 >> >> >> >> - Flyspell does not only offers corrections by using the mouse. The only >> >> way to correct words with the keyboard only is through ispell. >> > >> > This is inaccurate: Flyspell has "C-c $". >> >> I am aware of flyspell-correct-word-before-point (bound to "C-c $"), but >> in my Emacs it opens a pop up menu that requires mouse interaction. > > It pops up a menu, yes. But you can navigate that menu with keyboard > keys (arrow keys, RET and ESC), you don't have to use the mouse, at > least with some toolkits and on TTY frames. So all-keyboard > interaction is still possible with Flyspell, if someone must not use > the mouse. Ah, I hadn't known that you can interact with the pop up menu with the keyboard. Thanks for informing me. -- Kind regards, Kristoffer
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.
Received: (at 79417) by debbugs.gnu.org; 13 Nov 2025 09:52:20 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 13 04:52:20 2025
Received: from localhost ([127.0.0.1]:54297 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vJU03-0005a7-Ha
for submit <at> debbugs.gnu.org; Thu, 13 Nov 2025 04:52:19 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:41596)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vJTzx-0005Zt-Ks
for 79417 <at> debbugs.gnu.org; Thu, 13 Nov 2025 04:52:17 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
id 1vJTzs-0003Yq-4j; Thu, 13 Nov 2025 04:52:08 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
mime-version; bh=KCnWMvlu9xRjtWY2G4v0S9Pf8+UHSNxVKPhkef49ukI=; b=HaUPCTZtxBVh
w6he6UQLOgwMetfxsg3qhU/9o78vq83dZOumDvN0JjvG5M/bwRp9GSaX8RElKTU7w9jvsWjRutfYx
VSdVane8KsZGK3gA0mq14wI9ygZfOqIvBFuRrRjRnLEGfTCEuGztYwKiCjlRGNwoLyTI9jdnqaJBE
yNdTIhh+oxwkKpVEDSjrfYqsgZAK/7eLpKL2f4bXfeh+cFSjvwgKo9/HPfwX0cYpXoJUzqgGjtEkY
a7CjseZNLMMESyrp76Mb5++KohnmmI9H5nEaXqpo+9JlyRM4YtwGlEDd4ppe/DIywVloWFkHzdgD3
iyr1rZ5QKuHcfEZAHSI+qA==;
Date: Thu, 13 Nov 2025 11:52:03 +0200
Message-Id: <867bvus1j0.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Augusto Stoffel <arstoffel@HIDDEN>
In-Reply-To: <87zf8q71ir.fsf@HIDDEN> (message from Augusto Stoffel on Thu,
13 Nov 2025 09:57:48 +0100)
Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell
and flyspell)?
References: <87ecsft5qu.fsf@HIDDEN>
<87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN>
<87cy7xhi2k.fsf@HIDDEN>
<CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN>
<CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN>
<CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN>
<87ms4r8qbm.fsf@HIDDEN>
<CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN>
<87ikff83x8.fsf@HIDDEN> <86fraisc34.fsf@HIDDEN>
<87ecq28i21.fsf@HIDDEN> <86bjl6s4tu.fsf@HIDDEN> <87zf8q71ir.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79417
Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, krisbalintona@HIDDEN,
emacs-devel@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> From: Augusto Stoffel <arstoffel@HIDDEN>
> Cc: krisbalintona@HIDDEN, yandros@HIDDEN, 79417 <at> debbugs.gnu.org,
> emacs-devel@HIDDEN
> Date: Thu, 13 Nov 2025 09:57:48 +0100
>
> On Thu, 13 Nov 2025 at 10:40, Eli Zaretskii <eliz@HIDDEN> wrote:
>
> > Buffer-local values with global value different have subtle aspects
> > that even some Emacs developers trip upon. I wouldn't want users to
> > need to deal with that. Also, both variables are defcustom's, and
> > that doesn't handle buffer-local and global defaults too well, if at
> > all, AFAIK.
> >
> > In any case, the onus is on you to explain why it is bad to have two
> > separate variables, not why it's _possible_ to have just one.
>
> Kristoffer said he was confused about the existence of two similarly
> named variables. Which ones should I modify to achieve a particular
> end? What happens if I set ispell-dictionary locally of give
> ispell-local-dictionary a default value? Why isn't there just one
> variable like virtually every other user option?
The doc strings say:
(defcustom ispell-local-dictionary nil
"If non-nil, the dictionary to be used for Ispell commands in this buffer.
The value must be a string dictionary name,
or nil, which means use the global setting in `ispell-dictionary'.
Dictionary names are defined in `ispell-local-dictionary-alist'
and `ispell-dictionary-alist'.
Setting `ispell-local-dictionary' to a value has the same effect as
calling \\[ispell-change-dictionary] with that value. This variable
is automatically set when defined in the file with either
`ispell-dictionary-keyword' or the Local Variable syntax."
(defcustom ispell-dictionary nil
"Default dictionary to use if `ispell-local-dictionary' is nil."
It seems to me that your questions are answered there, but maybe I'm
missing something. We could always improve the documentation if the
above is not clear enough.
> >> If ispell-local-dictionary is removed, one would do setq-default
> >> ispell-dictionary in the init file and setq-local ispell-dictionary to
> >> switch to a different language in a specific buffer, just like any other
> >> option.
> >
> > Once again, these are defcustom's, so reasoning about them in terms of
> > setq-default etc. is not appropriate. setq-default and setq-local
> > make sense with defvars when we discuss Lisp programs, but here we are
> > talking about user options and user customizations. Asking users to
> > use these will probably increase the confusion, not decrease it.
>
> Sure, the end user will use M-x customize or setopt and file/dir-local
> variables, which ultimately set default and local values respectively.
> This works just fine in my experience; if not, that would be a somewhat
> severe bug.
Doesn't calling setopt in file-local variables require to use 'eval'?
And if so, doesn't it prompt the user to confirm (because 'eval' is
not safe by default)? By contrast, ispell-local-dictionary is
considered safe as a local variable if its value is a string.
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 13 Nov 2025 08:58:00 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 13 03:58:00 2025 Received: from localhost ([127.0.0.1]:54178 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vJT9T-0002zz-Rg for submit <at> debbugs.gnu.org; Thu, 13 Nov 2025 03:58:00 -0500 Received: from mail-ej1-x62d.google.com ([2a00:1450:4864:20::62d]:53358) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <arstoffel@HIDDEN>) id 1vJT9Q-0002zp-HH for 79417 <at> debbugs.gnu.org; Thu, 13 Nov 2025 03:57:57 -0500 Received: by mail-ej1-x62d.google.com with SMTP id a640c23a62f3a-b714b1290aeso74592866b.2 for <79417 <at> debbugs.gnu.org>; Thu, 13 Nov 2025 00:57:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763024270; x=1763629070; darn=debbugs.gnu.org; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:from:to:cc:subject:date:message-id:reply-to; bh=rvD3i+bNPgVmS/PJVGDz8TCk3LHoSmqBos7ZD2aAraM=; b=UeA1wT89S0cU9UyupHfeQRGVqOXe8uS8wBU6uXbKIiXTWwNxsuiGyiiWo9DPrXwQUo 2iTqkJGpJlNkDPZOBzVkNSJkWqbo0f7CMQ19QCc1WznTK16IMnwo27cE/VXJnuMZuhXH 0nZ7om0ZymTw0Ed54wy9FOjXAVIOSklkirbcBTRLIPw3YdmWLriswSe+NRFdmCoDnjSf 87RxWSmYt7RjgIVppOcc+Fnxyw1ORDDwlavHcX45Ded8NwegEiahaZz6UEh8z64WwY5b +rhB/U0mfyXuY7dNB4uxh3YNG6TZaT3j4Z8WDBCRY2RZz9uePV8fTeYjOY96H2F47a7u n4jw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763024270; x=1763629070; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=rvD3i+bNPgVmS/PJVGDz8TCk3LHoSmqBos7ZD2aAraM=; b=fk5RK/saJqeVxgPGTYRWt+S1hFm1LaolEPrfPSlZUfzateHnLzsZx6QMHKmgLnqojI 0mJsajEURRjX42isiF3By2IapSji0mxa0tIhp+6t4hTtHC5hmklooui6Zp2MS28tZxuD 9r29SIWVOA2gCrgmN45ObKiKwokTZxzGXLQek5nVaKvj0toKAGSnmrVVn9joLKOt1Swr tVLjjTNjNitppNGpqZsEu0ZKgmOeGsyg4QspgKkw0hDtIoSsTV2k1eKNfHUO3dU/0flB /iLZQmgMbIaMCiGBP6di5f8N5mrJQA3TMtn8PRf7GPOAI1+8zaxhehIBmmdpCdxPv1Tu fFDw== X-Forwarded-Encrypted: i=1; AJvYcCWaoagA1I80Qy27dBHACaa++uQRjXRHIDBX8bSWC0q4D639X8itRZKX9LdSRGJiqiyq7poXqw==@debbugs.gnu.org X-Gm-Message-State: AOJu0YzJP8JaARGveca/ZMYowLl8HTmrnTQjlVvYbc4Suw6AThYcm1vQ OUl4tXKlRDzFgHr/BBeCU/ruur8FcTXGNHztWIiWhAOUAVyN0wYaKi7P X-Gm-Gg: ASbGncvaj7RG2XvZ2Wiq7jovo9TtyzzoGja/roxOsL8ZUbW527dP/FH3mFkgjnXUJm3 3dPQEo8kKe911xg6MFOdr4e/SMLJgSH7fOvAdGr9DRd9P9g8iutt0rjr7Ak5QmNSKrhzjWqGBke Jq/KpA3qCjR7i0+AjZI8QNVzxSsWfp9kF9yxWt59Epl/XFXIzBW+gHrDLGUL0muDH14lcTMWp1t z2ZaLsZYx9Bg5yRiFdIJIGfuhbcTPqMofjdXq/OtGU0338C4yAWtlbNew/5olmH86XHkgxBSMUt X1aMFyFnItir4XcjU20vL+OvdSnx6VMzxk3MYc69DzeSzPXZMoDqYOE2vdDnGMOK5goUO7TqJaQ ythg598qqyH5EedSqY46hOd+A+NDZVLna2Ec+1tjFvv4cooBhbori X-Google-Smtp-Source: AGHT+IG7uwbviwRyD+dtbpsYt3W37k2HymNEY1InK50KgNyGffjmRLmt4OvjPhVJbc2xlwaQ4MVqDg== X-Received: by 2002:a17:906:6a1b:b0:b70:df0d:e2e9 with SMTP id a640c23a62f3a-b7331aa2724mr585295966b.44.1763024269875; Thu, 13 Nov 2025 00:57:49 -0800 (PST) Received: from ars3 ([2a02:8109:8a95:9a00::31fb]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b734fd80a20sm117079066b.46.2025.11.13.00.57.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Nov 2025 00:57:49 -0800 (PST) From: Augusto Stoffel <arstoffel@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? In-Reply-To: <86bjl6s4tu.fsf@HIDDEN> References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <87ikff83x8.fsf@HIDDEN> <86fraisc34.fsf@HIDDEN> <87ecq28i21.fsf@HIDDEN> <86bjl6s4tu.fsf@HIDDEN> Date: Thu, 13 Nov 2025 09:57:48 +0100 Message-ID: <87zf8q71ir.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 79417 Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, krisbalintona@HIDDEN, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On Thu, 13 Nov 2025 at 10:40, Eli Zaretskii <eliz@HIDDEN> wrote: >> From: Augusto Stoffel <arstoffel@HIDDEN> >> Cc: krisbalintona@HIDDEN, yandros@HIDDEN, 79417 <at> debbugs.gnu.org, >> emacs-devel@HIDDEN >> Date: Thu, 13 Nov 2025 09:15:18 +0100 >> >> On Thu, 13 Nov 2025 at 08:03, Eli Zaretskii <eliz@HIDDEN> wrote: >> >> >> From: Augusto Stoffel <arstoffel@HIDDEN> >> >> Cc: chad <yandros@HIDDEN>, 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN >> >> Date: Wed, 12 Nov 2025 20:08:19 +0100 >> >> >> >> On Wed, 12 Nov 2025 at 10:10, Kristoffer Balintona <krisbalintona@HIDDEN> wrote: >> >> >> >> > - The various *-dictionary user options in ispell confuse users: which >> >> > ones should they modify to achieve a particular end? >> >> >> >> Right, the first step to fix this could be to obsolete >> >> ispell-local-dictionary. This is unnecessary as ispell-dictionary can >> >> be set buffer-locally to the same effect. >> > >> > IMO, this would be a step in the wrong direction. The current code >> > deliberately allows flexibility: ispell-local-dictionary with >> > ispell-dictionary as fallback. >> >> In Emacs variables already have an optional buffer-local value with a >> global fallback value. I don't understand why you think the spelling >> language is special in any way. > > Buffer-local values with global value different have subtle aspects > that even some Emacs developers trip upon. I wouldn't want users to > need to deal with that. Also, both variables are defcustom's, and > that doesn't handle buffer-local and global defaults too well, if at > all, AFAIK. > > In any case, the onus is on you to explain why it is bad to have two > separate variables, not why it's _possible_ to have just one. Kristoffer said he was confused about the existence of two similarly named variables. Which ones should I modify to achieve a particular end? What happens if I set ispell-dictionary locally of give ispell-local-dictionary a default value? Why isn't there just one variable like virtually every other user option? I also asked myself the same questions at some point. Perhaps most people who try to understand the details here do. >> > So one could have ispell-dictionary set to the main dictionary the >> > user wants to use, for whatever language is the main for the user, >> > with ispell-local-dictionary specific to some file (e.g., as >> > file-local variable). If ispell-local-dictionary is removed, users >> > will need to manually call ispell-change-dictionary each time they >> > switch to editing a buffer which needs to use a different dictionary >> > (e.g., due to language change, or because that buffer's text uses some >> > specialized terminology that requires a special dictionary). >> >> If ispell-local-dictionary is removed, one would do setq-default >> ispell-dictionary in the init file and setq-local ispell-dictionary to >> switch to a different language in a specific buffer, just like any other >> option. > > Once again, these are defcustom's, so reasoning about them in terms of > setq-default etc. is not appropriate. setq-default and setq-local > make sense with defvars when we discuss Lisp programs, but here we are > talking about user options and user customizations. Asking users to > use these will probably increase the confusion, not decrease it. Sure, the end user will use M-x customize or setopt and file/dir-local variables, which ultimately set default and local values respectively. This works just fine in my experience; if not, that would be a somewhat severe bug.
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 13 Nov 2025 08:41:14 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 13 03:41:14 2025 Received: from localhost ([127.0.0.1]:54117 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vJStG-0002OP-2z for submit <at> debbugs.gnu.org; Thu, 13 Nov 2025 03:41:14 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:37478) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vJStC-0002OH-UG for 79417 <at> debbugs.gnu.org; Thu, 13 Nov 2025 03:41:11 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vJSt6-0006Gy-EA; Thu, 13 Nov 2025 03:41:05 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=A6+TWsHlyTTGTR/KvQ3AKPRucPhwuNu3smISA769ORM=; b=q1gUpZG/vwC6 tOEwtyBSIZk2FDE3pOoLdfm59ziduWOg+vHnegxSQ7dOtRNZMwvouDiUySoyE7tteX03chWsMiXlh 99PYdbUKdLsw1UmyAr2TuTGXmBEPCoXhYTnNX4G7DMhu0pAcQtJr92VxvLSzPr4DWkm4nCnaPxVVL XheztGIZuiQtxyfBcqt7tm6OChJXQPY0KpvtsHH6cX7ojda72ZXBAU7++uspz+O9xonrZp4zapFMR 6tMCyoqrel0Rmx+6OrfrtnZV+9epwVf6jn7clU1v+/knHY4RgXJdiVw1gtU0qLAS7HtISrAXupXCq CDpyuAme3K6k9pajkjINhQ==; Date: Thu, 13 Nov 2025 10:40:45 +0200 Message-Id: <86bjl6s4tu.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Augusto Stoffel <arstoffel@HIDDEN> In-Reply-To: <87ecq28i21.fsf@HIDDEN> (message from Augusto Stoffel on Thu, 13 Nov 2025 09:15:18 +0100) Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <87ikff83x8.fsf@HIDDEN> <86fraisc34.fsf@HIDDEN> <87ecq28i21.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79417 Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, krisbalintona@HIDDEN, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Augusto Stoffel <arstoffel@HIDDEN> > Cc: krisbalintona@HIDDEN, yandros@HIDDEN, 79417 <at> debbugs.gnu.org, > emacs-devel@HIDDEN > Date: Thu, 13 Nov 2025 09:15:18 +0100 > > On Thu, 13 Nov 2025 at 08:03, Eli Zaretskii <eliz@HIDDEN> wrote: > > >> From: Augusto Stoffel <arstoffel@HIDDEN> > >> Cc: chad <yandros@HIDDEN>, 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN > >> Date: Wed, 12 Nov 2025 20:08:19 +0100 > >> > >> On Wed, 12 Nov 2025 at 10:10, Kristoffer Balintona <krisbalintona@HIDDEN> wrote: > >> > >> > - The various *-dictionary user options in ispell confuse users: which > >> > ones should they modify to achieve a particular end? > >> > >> Right, the first step to fix this could be to obsolete > >> ispell-local-dictionary. This is unnecessary as ispell-dictionary can > >> be set buffer-locally to the same effect. > > > > IMO, this would be a step in the wrong direction. The current code > > deliberately allows flexibility: ispell-local-dictionary with > > ispell-dictionary as fallback. > > In Emacs variables already have an optional buffer-local value with a > global fallback value. I don't understand why you think the spelling > language is special in any way. Buffer-local values with global value different have subtle aspects that even some Emacs developers trip upon. I wouldn't want users to need to deal with that. Also, both variables are defcustom's, and that doesn't handle buffer-local and global defaults too well, if at all, AFAIK. In any case, the onus is on you to explain why it is bad to have two separate variables, not why it's _possible_ to have just one. > > So one could have ispell-dictionary set to the main dictionary the > > user wants to use, for whatever language is the main for the user, > > with ispell-local-dictionary specific to some file (e.g., as > > file-local variable). If ispell-local-dictionary is removed, users > > will need to manually call ispell-change-dictionary each time they > > switch to editing a buffer which needs to use a different dictionary > > (e.g., due to language change, or because that buffer's text uses some > > specialized terminology that requires a special dictionary). > > If ispell-local-dictionary is removed, one would do setq-default > ispell-dictionary in the init file and setq-local ispell-dictionary to > switch to a different language in a specific buffer, just like any other > option. Once again, these are defcustom's, so reasoning about them in terms of setq-default etc. is not appropriate. setq-default and setq-local make sense with defvars when we discuss Lisp programs, but here we are talking about user options and user customizations. Asking users to use these will probably increase the confusion, not decrease it.
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 13 Nov 2025 08:15:28 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 13 03:15:28 2025 Received: from localhost ([127.0.0.1]:54063 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vJSUK-0001D2-6R for submit <at> debbugs.gnu.org; Thu, 13 Nov 2025 03:15:28 -0500 Received: from mail-ed1-x532.google.com ([2a00:1450:4864:20::532]:51586) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <arstoffel@HIDDEN>) id 1vJSUH-0001Ci-MK for 79417 <at> debbugs.gnu.org; Thu, 13 Nov 2025 03:15:26 -0500 Received: by mail-ed1-x532.google.com with SMTP id 4fb4d7f45d1cf-6406f3dcc66so866014a12.3 for <79417 <at> debbugs.gnu.org>; Thu, 13 Nov 2025 00:15:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763021719; x=1763626519; darn=debbugs.gnu.org; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:from:to:cc:subject:date:message-id:reply-to; bh=kBSGvOE3utRAHCwShJlurNSqqpmKFsEDNUOWCOrYho0=; b=JET93aQQ5GGxYWW8S+p/0Fm/Urt3SK0uZSOswMoSzcb7gBY9FwKDfiwaskwWvbB/lH 1PPGKJB9w0O86pQcPO98u5B777edCsPOb/3HfYKiljVBdVLigSr3xfk5DcAO7XnkgROu cK2bM4Jehgrrb74e1o4bZMdqG2J2zQpLpwWuMH1WIVBHQyos9sJDI3E1i1zSx9GN4i9g 2hpAzb1eRkvuT4NMuOg0YR7w13DKAI/qwCcGYsCVj1e9TJBU69FgT0mij43qgPqv74JT d6XlyhnKDJseRRea1zTDGZDlb9AUomy8Kh9t7NF2UUxypwigL1SfjYW/h3TnrIXVBL+S 2k2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763021719; x=1763626519; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=kBSGvOE3utRAHCwShJlurNSqqpmKFsEDNUOWCOrYho0=; b=s/pBpSEar3mIHMjGy85ta3sDXaQ4Vf0Bh0XDkH8mAo9P64/J31UqrDjIWz75+Y2fv/ lhQXkl738L5iyZMhjHJzWw0lacj+yOLY0mN02xLTDpxOGswq3B+sC+yexMtorOwgHHWc hCAN1iipRs39nF3fsx21YALuAlCbJlN9TDr9DRWCUgQVxyX0AzkeEwjLllxEdtz1RPda 9kY5zdz4diFd7KHy7mTKkiQmSWU6k6kEvKP6kL+DvzKShHVLwxWUbpXvZoMzLxTOnmyk 3TL5mrsXCLbvvmv/M0OoK6ceUUwe4Ykg4Dpa0xzl4WJB6vIvO0+JL4bd9anv9qRBqzmh 8Vag== X-Forwarded-Encrypted: i=1; AJvYcCWiSwVGC2XIZJdWaqucAljX2mCiCnwm/9a+qz3AykySBIolteScBRMAq6l2Jt/JQvnOiVxSGQ==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yx8jgmIPVay4uSO+IHSsMrKLZqUTILTjCN6WW8OlTJ2+taCwQre gY7yw3U0uCcfgs8gGEgenxvmmENYzY4u/WDkqAj6PGK7aA7uvIH4n/5S X-Gm-Gg: ASbGncth5d+hwp7rKE6MdxgR3Oa+CVmyqitSqax7zzygH93UpP/7pC9v9oUqOpkhRqV 2K3VswkWXe8XLP2CsCb4w8iiGd9KEO+ows4dNdQV7YPJj98aZxcxU4ijvnSGJAYoViWq610fkcT DMrQC0OoVmO/MVeih1/QYD0JIKSJmaREfTaj9NiRLYXz2ITZraDsOyn7O3eb9TLFkk03zXrRtj6 7JSSZJZbh1zv3d0cSrK4IS6VzcUl+jXmMDpoCnzQCwnUgzYKngs28kDF+sLM/w/jfNCT3mkocjx YtLpYIHJlfqA7vz+9WLUECd7UzAR36Ny7bXENVGCXvlNqxVbDp5ZgC69aEjHU6KocoPfNZtu3Lx 1wg/1j0hjIXZmtipmui1oc75gigr4WSPpu6ZU63dlgTEXIzpb3xHz X-Google-Smtp-Source: AGHT+IEFuwmjx4ZctOWpg6NVpnic6UHMhMUENqygLP0tNpe87Igs7H2duktvNOC4rXDeSceuItYPtw== X-Received: by 2002:a17:907:da6:b0:b4b:4f7:7a51 with SMTP id a640c23a62f3a-b7331b3bcb6mr703171166b.62.1763021719335; Thu, 13 Nov 2025 00:15:19 -0800 (PST) Received: from ars3 ([2a02:8109:8a95:9a00::31fb]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b734fd80a20sm110188166b.46.2025.11.13.00.15.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Nov 2025 00:15:18 -0800 (PST) From: Augusto Stoffel <arstoffel@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? In-Reply-To: <86fraisc34.fsf@HIDDEN> References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <87ikff83x8.fsf@HIDDEN> <86fraisc34.fsf@HIDDEN> Date: Thu, 13 Nov 2025 09:15:18 +0100 Message-ID: <87ecq28i21.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79417 Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, krisbalintona@HIDDEN, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On Thu, 13 Nov 2025 at 08:03, Eli Zaretskii <eliz@HIDDEN> wrote: >> From: Augusto Stoffel <arstoffel@HIDDEN> >> Cc: chad <yandros@HIDDEN>, 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN >> Date: Wed, 12 Nov 2025 20:08:19 +0100 >> >> On Wed, 12 Nov 2025 at 10:10, Kristoffer Balintona <krisbalintona@HIDDEN> wrote: >> >> > - The various *-dictionary user options in ispell confuse users: which >> > ones should they modify to achieve a particular end? >> >> Right, the first step to fix this could be to obsolete >> ispell-local-dictionary. This is unnecessary as ispell-dictionary can >> be set buffer-locally to the same effect. > > IMO, this would be a step in the wrong direction. The current code > deliberately allows flexibility: ispell-local-dictionary with > ispell-dictionary as fallback. In Emacs variables already have an optional buffer-local value with a global fallback value. I don't understand why you think the spelling language is special in any way. > So one could have ispell-dictionary set to the main dictionary the > user wants to use, for whatever language is the main for the user, > with ispell-local-dictionary specific to some file (e.g., as > file-local variable). If ispell-local-dictionary is removed, users > will need to manually call ispell-change-dictionary each time they > switch to editing a buffer which needs to use a different dictionary > (e.g., due to language change, or because that buffer's text uses some > specialized terminology that requires a special dictionary). If ispell-local-dictionary is removed, one would do setq-default ispell-dictionary in the init file and setq-local ispell-dictionary to switch to a different language in a specific buffer, just like any other option.
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 13 Nov 2025 06:55:25 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 13 01:55:25 2025 Received: from localhost ([127.0.0.1]:53878 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vJREr-0006Ha-22 for submit <at> debbugs.gnu.org; Thu, 13 Nov 2025 01:55:25 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:48374) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vJREn-0006EU-4R for 79417 <at> debbugs.gnu.org; Thu, 13 Nov 2025 01:55:23 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vJREh-0004qQ-NT; Thu, 13 Nov 2025 01:55:15 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=6Bu8Bi81hbvCurzPPKuV+w67Y1uCqLjew08wBVlBqwk=; b=rl3QqidwZpU4 E3Hrg6aKT50dtiAiY8vQTePgouieTSpJl22fJWvVvyLgPOsw+kehVBAEhwSg31nSvR7UN2XwAc12z yBXhjLwhCIKIT0d3pvvhGVE/sIq57HucGPL+ULPsMukJHg20n9f7a00P2RABikHCghs8i2iEKGCVn F4RvGac4PlAkCPMiQ4Udsg0kZXfmM0YyxYAF/+ntH0E/my6abzg9PlOzFZybcDwRR48eeqg2pyZJD zAGJhXfnHi9HvQQDFwyyKXT+nICE4rYpj98JA3uAbIcdSISXiXDEZmr4wlNKVocxSUf9+GTv5vswv 9mISMpRFd+3s7GegpWl9uw==; Date: Thu, 13 Nov 2025 08:55:13 +0200 Message-Id: <86ecq2s9pq.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Kristoffer Balintona <krisbalintona@HIDDEN> In-Reply-To: <CANVbq5mRnXrO++PCkXube-8uwuVVb_CKYBYC8N=2DC-xK_rzfA@HIDDEN> (message from Kristoffer Balintona on Wed, 12 Nov 2025 12:25:32 -0800) Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <87ikff83x8.fsf@HIDDEN> <CANVbq5mRnXrO++PCkXube-8uwuVVb_CKYBYC8N=2DC-xK_rzfA@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79417 Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, arstoffel@HIDDEN, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > Cc: chad <yandros@HIDDEN>, 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN > From: Kristoffer Balintona <krisbalintona@HIDDEN> > Date: Wed, 12 Nov 2025 12:25:32 -0800 > > > Right, the first step to fix this could be to obsolete > > ispell-local-dictionary. This is unnecessary as ispell-dictionary can > > be set buffer-locally to the same effect. > > For me, part of why the various *-dictionary options were confusing was > precisely because it wasn't clear why ispell-dictionary wasn't just a > buffer-locally set variable. I had assumed that there was a technical > reasoning to have separate options that I was missing. The reason is simple: when one starts editing a new buffer where spell-checking is needed, we don't want the user to set the dictionary (which in almost all the cases will be the same dictionary: the one used for the main/only language the user writes in). This means the default should be global, not buffer-local. A buffer-local variable then allows to tailor specific buffers where the default dictionary is not TRT.
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 13 Nov 2025 06:04:11 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 13 01:04:11 2025 Received: from localhost ([127.0.0.1]:53775 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vJQRH-0003ma-6o for submit <at> debbugs.gnu.org; Thu, 13 Nov 2025 01:04:11 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:43826) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vJQRE-0003mM-67 for 79417 <at> debbugs.gnu.org; Thu, 13 Nov 2025 01:04:08 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vJQR8-0005jS-Pu; Thu, 13 Nov 2025 01:04:02 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=NeCkdriTWM2Spb3yi5623X+fqJOZllwlebrnm0cEQak=; b=q/hzcC7avd47 i8SHZTp8dsSk0SOiv/OVqqZApgD/ipNzVgvAangpV0irmIopMeS6xW4vY4J73S3iJxXRiactOT4Ln qxxlsEFKQ+omdr6cUGP/X7jNuD5nbDXjBl3LQl7B2X8zb+FyN1YT6YhbOUYuH9LCAc2kJR3igpv6f /i6w4dr5yZrFb4Av1hKI3fITk8GHEhZeMCQRjZ5i6MjuSkQLZJjy23UldmRZUBhmB8H3CODEb4qmH UEKen+kAqs+aaFx2Bbgi0J0z7OarcPo2J4HHxYV4PaaoWtxjTIEMBfhkMSKLJ+4KZADZP2Aa9UIEc 3SnLbTEjt1tPWx9EppV1dA==; Date: Thu, 13 Nov 2025 08:03:59 +0200 Message-Id: <86fraisc34.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Augusto Stoffel <arstoffel@HIDDEN> In-Reply-To: <87ikff83x8.fsf@HIDDEN> (message from Augusto Stoffel on Wed, 12 Nov 2025 20:08:19 +0100) Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <87ikff83x8.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79417 Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, krisbalintona@HIDDEN, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Augusto Stoffel <arstoffel@HIDDEN> > Cc: chad <yandros@HIDDEN>, 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN > Date: Wed, 12 Nov 2025 20:08:19 +0100 > > On Wed, 12 Nov 2025 at 10:10, Kristoffer Balintona <krisbalintona@HIDDEN> wrote: > > > - The various *-dictionary user options in ispell confuse users: which > > ones should they modify to achieve a particular end? > > Right, the first step to fix this could be to obsolete > ispell-local-dictionary. This is unnecessary as ispell-dictionary can > be set buffer-locally to the same effect. IMO, this would be a step in the wrong direction. The current code deliberately allows flexibility: ispell-local-dictionary with ispell-dictionary as fallback. So one could have ispell-dictionary set to the main dictionary the user wants to use, for whatever language is the main for the user, with ispell-local-dictionary specific to some file (e.g., as file-local variable). If ispell-local-dictionary is removed, users will need to manually call ispell-change-dictionary each time they switch to editing a buffer which needs to use a different dictionary (e.g., due to language change, or because that buffer's text uses some specialized terminology that requires a special dictionary). > > - When flyspell-mode is enabled (underlining misspellings), when adding > > a word to the personal dictionary with either flyspell or ispell, the > > current misspelled word is no longer a misspelling but later > > repetitions of this word (just added to the personal dictionary) are > > still underlined but not recognized as misspellings (when you call > > ispell-word it reports that the word is correct). One has to call > > flyspell-buffer to remove these false underlines. > > - At least in org-mode buffers[3], the words that flyspell and ispell > > recognize as misspellings can differ because ispell ignores words > > according to ispell-skip-region-alist whereas flyspell offers > > flyspell-generic-check-word-predicate. > > This is a problem indeed. Patches are welcome to extend flyspell-do-correct so it removes the highlighting from all the occurrences of the saved word, at least as a user option. > > - At least in org-mode buffers, flyspell sometimes highlights words in > > comments as misspellings when calling flyspell-correct-word has no > > effect (because it is not a misspelling?). I'd love to see bug reports with examples of this. I don't think I've ever seen this kind of problems, and I use Flyspell all the time.
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 13 Nov 2025 05:26:38 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 13 00:26:38 2025 Received: from localhost ([127.0.0.1]:53695 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vJPqw-00027I-3I for submit <at> debbugs.gnu.org; Thu, 13 Nov 2025 00:26:38 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:50712) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vJPqt-000277-QU for 79417 <at> debbugs.gnu.org; Thu, 13 Nov 2025 00:26:36 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vJPqo-0002o0-GE; Thu, 13 Nov 2025 00:26:30 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=oZCruFETVOW6iv5NZjPiMZcrQkXHhkpg6d1X26A88Qc=; b=EX2yFZwd7sUV ijhZWT3lvO+SJ6AcIS/JZTWlRxOvCPiUBoTlGiOW65sFKrpCpdanmgdrUhE1oQg5AjDaXTh2g/K4s NrAXo/jBu0J9VypDOyvGqeZndI5Ksq9gF4hHU403Rt0wfmPuWx6GggBCjt5ycLbrnzxWKM2Te65bo T1RjXF5Z0vcckLj72qzeRqwr0LHNRKwmARTpQYxxndys2ZpL7bIK0gvfsvuJQX0rORSr4Q6Nzvwk2 mol2x8aBALtm49JFOP/WK63lXgpAuSsM7nvKX6G+s+6RrNq3Yb0UeE4QeiAAGagV+yk+yH3aEPcgb MjV0NQU1O6S2RJ96fxYIfA==; Date: Thu, 13 Nov 2025 07:26:27 +0200 Message-Id: <86jyzusdto.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Kristoffer Balintona <krisbalintona@HIDDEN> In-Reply-To: <CANVbq5m1zBV0M9aRn6kD_BRZ8miOV0rADHJvU+ernWB8CHdKvA@HIDDEN> (message from Kristoffer Balintona on Wed, 12 Nov 2025 11:10:41 -0800) Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <86ldkbrtin.fsf@HIDDEN> <CANVbq5m1zBV0M9aRn6kD_BRZ8miOV0rADHJvU+ernWB8CHdKvA@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79417 Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, arstoffel@HIDDEN, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Kristoffer Balintona <krisbalintona@HIDDEN> > Date: Wed, 12 Nov 2025 11:10:41 -0800 > Cc: arstoffel@HIDDEN, yandros@HIDDEN, 79417 <at> debbugs.gnu.org, > emacs-devel@HIDDEN > > On Wed, Nov 12 2025, Eli Zaretskii wrote: > > >> Cc: chad <yandros@HIDDEN>, 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN > >> From: Kristoffer Balintona <krisbalintona@HIDDEN> > >> Date: Wed, 12 Nov 2025 10:10:11 -0800 > >> > >> - Flyspell does not only offers corrections by using the mouse. The only > >> way to correct words with the keyboard only is through ispell. > > > > This is inaccurate: Flyspell has "C-c $". > > I am aware of flyspell-correct-word-before-point (bound to "C-c $"), but > in my Emacs it opens a pop up menu that requires mouse interaction. It pops up a menu, yes. But you can navigate that menu with keyboard keys (arrow keys, RET and ESC), you don't have to use the mouse, at least with some toolkits and on TTY frames. So all-keyboard interaction is still possible with Flyspell, if someone must not use the mouse.
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 13 Nov 2025 00:00:24 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Nov 12 19:00:24 2025 Received: from localhost ([127.0.0.1]:52403 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vJKlD-0000o9-Pw for submit <at> debbugs.gnu.org; Wed, 12 Nov 2025 19:00:24 -0500 Received: from mail-lf1-x136.google.com ([2a00:1450:4864:20::136]:59645) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <krisbalintona@HIDDEN>) id 1vJKlB-0000ma-4N for 79417 <at> debbugs.gnu.org; Wed, 12 Nov 2025 19:00:22 -0500 Received: by mail-lf1-x136.google.com with SMTP id 2adb3069b0e04-59457f79859so208522e87.2 for <79417 <at> debbugs.gnu.org>; Wed, 12 Nov 2025 16:00:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762992014; x=1763596814; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:from:to:cc:subject:date:message-id:reply-to; bh=vbC9pVFCdqLFH0kGJ0MPjj1fjjx2LbOhLoHD0LEiACc=; b=bfgUc1DjjjBC9EA+Gdk5UCX6m9oGSG3nbsQElWyz1vYgykRT4uVRAaRy8rEHPJHtTD QMLhq9FhXri+inPIEQ+51qCgmU7ZoEg5zzOGr9SV3RfHCb4ajz+tPTSC5zRaNp7/sTtR k+YBo1kvdrEH/ekE/5KJLJ7hmwLQ/EzAy7aTYbnIGf1iOs8rZpivGP6eaLdYDXMtb3eM 5I0t10FV1QhNoWs1oaOoD4xosjT0VtYsBxyBSs1dh1l3ZzSfDyoDAzd0Bz5d/mE80Rge 1SFZHcXwaWaDqLtvpO2OqukhDPe3WrJhsH+vEFJn8m3tpdnXZR9rZf59JrgfrNzPszcw O4oQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762992014; x=1763596814; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=vbC9pVFCdqLFH0kGJ0MPjj1fjjx2LbOhLoHD0LEiACc=; b=X4IG7DKLgVoMaJ2V63Ot+33qUWY5x41Tz9sOGSujHut9ZeCpYtJuwzYTSaYaEAJnGF XM2pa/M+QFM/bMWLZHuUez8mSN16YcbJEZmm5K5n0cGxdKFFLHDS4mVeCuvWW1Ra8PMt STeo0hYsOchu1gp187f1maq3BuHc+vzPMKnEkEKFnpY88NSreO9yxL1Q4/wrbZPfLBOJ cQd1027AklewRzFuKKUER6EmVfVSzTEpmzBh26fUdeG1oApy8zeEUCmqznZ1YK80wOiD D2j8CVjs/BT5CvEsLOcPs3CJ2AAwJxXSJKfCZaSRrBc+TqBLghJ2WDGFOWPy3GIx9YmD 0E+w== X-Forwarded-Encrypted: i=1; AJvYcCXfJ9jq9J57IQljM3tBeIR0Ga8OZOujg3wQa7FZcWz5CJVKiujRLqEUKsDcUE7oq9s8qXpbwQ==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yxfbw4w6IqNbKhzyy363sN45vRcQKE+swOQpC/dCfVk4XeAMhms xa0oggN2jqAvgMhLlV2787D9kuwsTsfjgPiUhQ/6AZKncqFTS45WcDHDsPHbiP3+u+zj7Z6WX98 Qe3blVfjVpzEdqeih/fa3fLaEXM1O4mY= X-Gm-Gg: ASbGncuf9Gqtzguk0+Ldq02SbH8ZxiKDff3ul1QkG61t1FnFpGAh2yHCDYJLULr8GNY KSy9pJB21twvKK2KoDVITPvr62jjbOsBm89lrposToGLoKXl/3prlBRdCAJoEHRHARo+bwuwSI2 r5uWJ3rXaylXNcTxSfTTG8fJYYzYt1Ft6AQc7fTHIuFCmWcel3rM1TJpoCtVzrJEbZyQZPGgOPc d7IDUk7NQ6zGD/o2MpXxFEkZT6KMT1C1te0EyUhFq7cArvoYw9rSfmnKankPWBL9wXU8vY= X-Google-Smtp-Source: AGHT+IFj9AhkxJqnaAoerAasSuHFY12QdAbOBI7hGqRlDNAyXoEbCVy+t8BN/SWZfY6XXA9cn1m3xOmJmOgHZ1Cu3KQ= X-Received: by 2002:a05:6512:3e07:b0:594:4a5a:34f with SMTP id 2adb3069b0e04-59576df8ad8mr1495277e87.18.1762992013985; Wed, 12 Nov 2025 16:00:13 -0800 (PST) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Wed, 12 Nov 2025 16:00:11 -0800 Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Wed, 12 Nov 2025 16:00:11 -0800 From: Kristoffer Balintona <krisbalintona@HIDDEN> In-Reply-To: <86346idev1.fsf@HIDDEN> References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <86346idev1.fsf@HIDDEN> MIME-Version: 1.0 Date: Wed, 12 Nov 2025 16:00:11 -0800 X-Gm-Features: AWmQ_blYI-VNoM2TcWhtHmuRmqb8sBO_IkbZynNBSVj5r-tUEc3qgpLzaxZgxRY Message-ID: <CANVbq5nQNcqojq9RW+amwT0eehPJ5r_VcLGDrOfrJurejUh6Zg@HIDDEN> Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? To: Joost Kremers <joostkremers@HIDDEN> Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79417 Cc: chad <yandros@HIDDEN>, 79417 <at> debbugs.gnu.org, Augusto Stoffel <arstoffel@HIDDEN>, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On Thu, Nov 13 2025, Joost Kremers wrote: > On Wed, Nov 12 2025, Kristoffer Balintona wrote: >> To give you a sense of what I have in mind, I've listed below specific >> gripes (IMO) and bugs I noticed in ispell + flyspell after having >> returned to them in these last few days:[1] >> - As a user, it wasn't clear to me whether to use ispell-word or >> flyspell-auto-correct-word. Should I use one in certain cases and the >> other in other cases? Is their purpose entirely the same? If so, why >> do these two commands defined in different packages, then? > > The two commands do slightly different things, and they have different UIs, > so I guess which one to use depends on personal preference and the situation > at hand. That might be the case, yes. But I think main takeaway from my remark was that there is a confusion in usage (and demarcation of the ispell and flyspell packages), even after becoming acquainted with both ispell and flyspell. > Though I have to say, I've never actually used > `flyspell-auto-correct-word`. What I do use, a lot in fact, is > `flyspell-auto-correct-previous-word`. Did you mean flyspell-correct-word (pop up menu) and flyspell-auto-correct-previous-word (cycle through suggestions)? > To me, that is Flyspell's killer feature, the one that I wouldn't want > to be without. In fact, when jinx first came out, I tried it and liked > it, it's definitely an improvement over ispell+flyspell in many > respects. But I went back to ispell+flyspell nonetheless, despite the > quirks, because jinx lacked a similar feature and Daniel Mendler > decided against implementing it. Yes, that feature is quite neat (which is another reason why I think it's worth investing time to upgrading our built-in ispell/flyspell). Its convenience reminds me of the convenience dabbrev-expand can bring. -- Kind regards, Kristoffer
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 12 Nov 2025 23:20:04 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Nov 12 18:20:04 2025 Received: from localhost ([127.0.0.1]:52181 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vJK8B-0007AF-MY for submit <at> debbugs.gnu.org; Wed, 12 Nov 2025 18:20:04 -0500 Received: from fout-a7-smtp.messagingengine.com ([103.168.172.150]:51123) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <joostkremers@HIDDEN>) id 1vJK85-00079c-Uh for 79417 <at> debbugs.gnu.org; Wed, 12 Nov 2025 18:20:01 -0500 Received: from phl-compute-12.internal (phl-compute-12.internal [10.202.2.52]) by mailfout.phl.internal (Postfix) with ESMTP id C079BEC028E; Wed, 12 Nov 2025 18:19:52 -0500 (EST) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-12.internal (MEProxy); Wed, 12 Nov 2025 18:19:52 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastmail.fm; h= cc:cc:content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm3; t=1762989592; x=1763075992; bh=XEwuArf6mg 8t/KHXxIkZ60Pu2Diyb7QNi32NYHCTX+4=; b=On0ErCu9iMyO1zrpe+yQSRCpch Auv7/Puz7fDpkK2E+MRFitXLJAeHkUXrIk6Xebd5RcF/50UZRP5d8Gn3qwSivgaX Ztpt9LOekoCnix8w4kd7/7H9k2cuuaFcMFvqWwW6DgO8CEbx3SD03aEyvQGf42BM 8o1GhmYgTJmxg1JDXJQN3CbYcxaotABacoW0W0IDRSve+B9uyB9ebR/jZhQvyAsr MYOMGEOwVYdnEoAXy3/gi1kHwoROpPFpbIjew1Ais29BZ+f5rlaoSq1jnVY5uc9k Ou/ajJiOUIGeX2O55e/7A6fwYVRsDdqsoRYdLJOzRlfMy1rkwxrKbuT7s73g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t= 1762989592; x=1763075992; bh=XEwuArf6mg8t/KHXxIkZ60Pu2Diyb7QNi32 NYHCTX+4=; b=dIdwtJ4ZEAl4l1oSzd2zCbLdQZMZnzW5U3Nnng2hzAWebg2eIuf AOc+loxzfQLGLrDl6tVUHJRDbGCLYFwKR8dPXnJTIQx/XIbbKlA+iUpFYr0bD2rX rQC947QjMauQXw+gUBho6LopjgBcMM0vGLR+HGz4nETBWRJqH/40XX18uNy7VoGe mJRH02qlHri/CQAynrzCuX01qwQkEq6uF0m6wDAiP05itRfcVQz/pFsC1YaHhrju XPxeP7BSfGEtYhCF3khVCKobihuyxVq0IN5NEm9ivJomnfwK1ow5QlxFcw2E9Tih YWNxJFerj5VNTnPCMeYgqI4DG7xM7smnekQ== X-ME-Sender: <xms:GBYVaZdvdGSbhRpieBnHLEEWoXgxvUBmftv3PEsSPmBek2Z1KUk0Cg> <xme:GBYVaeETNk6J4kokSIeV3kuoEPyUUCWcfw1NclcPW8itn4SdPQs69a_Ni5aPoyswJ heqYiIFpac7Vwjbs3ZS8Kt1abE_2Y8h14SoV2HyePKStLzvwQ> X-ME-Received: <xmr:GBYVaa0vYfdwX-FGBcADot1rbTZNHl-qZ3AsEDKVpc88CO-ieiRqOLCNDH1-uvBueZEFSZU> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdeggddvtdehfeejucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhephffvvefujghffgffkfggtgesthdtredttdertdenucfhrhhomheplfhoohhsthcu mfhrvghmvghrshcuoehjohhoshhtkhhrvghmvghrshesfhgrshhtmhgrihhlrdhfmheqne cuggftrfgrthhtvghrnhepfffhleffgfelkedtfeejleegffekteehlefffeffheetkeei tdekjeffudeuleejnecuffhomhgrihhnpehgihhthhhusgdrtghomhdpmhgvlhhprgdroh hrghenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehj ohhoshhtkhhrvghmvghrshesfhgrshhtmhgrihhlrdhfmhdpnhgspghrtghpthhtohephe dpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepvghmrggtshdquggvvhgvlhesghhn uhdrohhrghdprhgtphhtthhopeejleegudejseguvggssghughhsrdhgnhhurdhorhhgpd hrtghpthhtohephigrnhgurhhoshesghhmrghilhdrtghomhdprhgtphhtthhopehkrhhi shgsrghlihhnthhonhgrsehgmhgrihhlrdgtohhmpdhrtghpthhtoheprghrshhtohhffh gvlhesghhmrghilhdrtghomh X-ME-Proxy: <xmx:GBYVaenkUyS4DQpCKt9VW79v6RzAqQb1z63rd4XhWeqN7gWPy7QpQg> <xmx:GBYVaS-KQyEzst1YFHm8YRjyUH_vz9oXtjACnIkuafA4yyTf9RkIjg> <xmx:GBYVabppOAH5aPDGVRcv2j8YWV0RnlH0I4Tly-lUgNxzh7gYqqWgsQ> <xmx:GBYVaTlos01n-6PCnx8yhMsZ8JyVbXqld-Zc0imGiF9DMV1yrG9CgA> <xmx:GBYVae-zPh59jclpXI1X3merKTXDieYScOCik_BLF4D38nHh8u43In20> Feedback-ID: ie15541ac:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 12 Nov 2025 18:19:50 -0500 (EST) From: Joost Kremers <joostkremers@HIDDEN> To: Augusto Stoffel <arstoffel@HIDDEN> Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? In-Reply-To: <87ikff83x8.fsf@HIDDEN> (Augusto Stoffel's message of "Wed, 12 Nov 2025 20:08:19 +0100") References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <87ikff83x8.fsf@HIDDEN> User-Agent: mu4e 1.12.13; emacs 30.2 Date: Thu, 13 Nov 2025 00:19:48 +0100 Message-ID: <867bvubzzf.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 79417 Cc: chad <yandros@HIDDEN>, 79417 <at> debbugs.gnu.org, Kristoffer Balintona <krisbalintona@HIDDEN>, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) On Wed, Nov 12 2025, Augusto Stoffel wrote: > See also a proposal here which unfortunately was never brought up in > this mailing list: https://github.com/astoff/jit-spell/issues/20. As a small addition to that discussion: another use for the document language is for [typo](https://melpa.org/#/typo). Also, FWIW, I'd vote for `document-language` and `document-words`. -- Joost Kremers Life has its moments
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 12 Nov 2025 23:13:19 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Nov 12 18:13:19 2025 Received: from localhost ([127.0.0.1]:52142 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vJK1f-0006rj-6p for submit <at> debbugs.gnu.org; Wed, 12 Nov 2025 18:13:19 -0500 Received: from fhigh-a2-smtp.messagingengine.com ([103.168.172.153]:58115) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <joostkremers@HIDDEN>) id 1vJK1c-0006rY-5c for 79417 <at> debbugs.gnu.org; Wed, 12 Nov 2025 18:13:17 -0500 Received: from phl-compute-01.internal (phl-compute-01.internal [10.202.2.41]) by mailfhigh.phl.internal (Postfix) with ESMTP id CFD6D14001ED; Wed, 12 Nov 2025 18:13:10 -0500 (EST) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-01.internal (MEProxy); Wed, 12 Nov 2025 18:13:10 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastmail.fm; h= cc:cc:content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm3; t=1762989190; x=1763075590; bh=TpFNVIO7j6 ZS18d2sDmyZaha7AmdkXDmk0V+zVZSHwY=; b=F6WcG1bsXHAosiV4lFH2zFlR1X 66NBMsg9f6b2OTExvYTOGgFZ+be4FHjPDOOR9fCtmBqOHo91V+/TQfW/tdYGZ5wQ ehYAI8MoAGI7ZsXmWT9M7kAKJ9OMi2+A4xPnBys0hIwu1DRAhyLiiAZz2dvZNRs4 9Jc4Ihp26jXYdOelhpt/lEt1eziNNIQBm+W1BqG7XDnRTkv6DFArXe+FU3UCgnjl vMmULVgaSSr1ngs/8flh0fUN9BqwaOZ71ZECOz9A+UFWyFBzFa7wWwy1XIferSuq d/+uR5eUrmGFUG7rNz0s/gStPIyoed51942RMhYRcnlFk4KpUxDz+E52RhjA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t= 1762989190; x=1763075590; bh=TpFNVIO7j6ZS18d2sDmyZaha7AmdkXDmk0V +zVZSHwY=; b=eov39OwEh6aV21vYZT1GQ7SwZiajzuf6ja7dlc9XLtpQlWaG73k eXf1Au+5+4ApHr3P/w3YKUCwruZmSn7zUBjunDqy3UgPiruZuQXDhObKf8oLLGLD jOfm0M1ZxG/U/AS0zmVv9iq2r0EYwPSyzb1S+k+/G7S48h9Q+GhzMvIbWxli4L5Q Mx/+PNvFZYSNJy4qaUU7zdjnq9r5vw0SX1RbrhTr2KPTa6knK9FjAeGSIUAWSNi0 MJ3bGWReEGrdR3WYFzUIU2YkSkRqO06WtBJ4rR54AguhZC42XVVlpZ8hDvOIEKjk C1SwC3N2eB3BJo+0hvFPCqOR6vsrhSkrasQ== X-ME-Sender: <xms:hhQVaUbcwFk4vKPdwVcRockonpcBQ24kLRBfzjN0Xqz_jChLMlj2nw> <xme:hhQVaWSUuVxBwxl2w-yye4nfmsgi3JDJU1XvTZxAMCbn_hcEHtPi6w4TZvTOgTjFU fbDBzNwDWKTVrhbW_BminXcbneEM05iempKJyw0-n_j-1No_WM> X-ME-Received: <xmr:hhQVaXSZmF2MqiIzn88wWf7sYEzxg57UfK8EiSBDCgelinnCBtBF3wZ1Dc5RgJPRW7i-ock> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdeggddvtdehfeeiucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhephffvvefujghffgffkfggtgesthdtredttdertdenucfhrhhomheplfhoohhsthcu mfhrvghmvghrshcuoehjohhoshhtkhhrvghmvghrshesfhgrshhtmhgrihhlrdhfmheqne cuggftrfgrthhtvghrnhepfeekjefgffdtgfffjeduueekteehudfhveethffhheeihfel tdfghfegkeeivdehnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilh hfrhhomhepjhhoohhsthhkrhgvmhgvrhhssehfrghsthhmrghilhdrfhhmpdhnsggprhgt phhtthhopeehpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopegvmhgrtghsqdguvg hvvghlsehgnhhurdhorhhgpdhrtghpthhtohepjeelgedujeesuggvsggsuhhgshdrghhn uhdrohhrghdprhgtphhtthhopeihrghnughrohhssehgmhgrihhlrdgtohhmpdhrtghpth htoheprghrshhtohhffhgvlhesghhmrghilhdrtghomhdprhgtphhtthhopehkrhhishgs rghlihhnthhonhgrsehgmhgrihhlrdgtohhm X-ME-Proxy: <xmx:hhQVaaS4aIiykUk0aO8Syrpc4Z4UMwsmjQv70FqFb-65ocX44ff-gA> <xmx:hhQVac6yv84QI3hqKa_JqxjyK1YCljARD3qV7q-lJWeZIqJZ3ZnB4Q> <xmx:hhQVaW2PKMCVYxuLnDy5vIiPN74ZdZvJmdmPbJ0xxft1DHAafVzULg> <xmx:hhQVaXBH1lYN1ZzFGAU7boJWvOVm5hqIGYo3Gj4-El9XeNAlbHWI8Q> <xmx:hhQVaQo3u2FNzOCyLOF4SF2poO8Tn7HrRpavwHVpvk6QLZgtq5FA6mCE> Feedback-ID: ie15541ac:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 12 Nov 2025 18:13:09 -0500 (EST) From: Joost Kremers <joostkremers@HIDDEN> To: Kristoffer Balintona <krisbalintona@HIDDEN> Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? In-Reply-To: <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> (Kristoffer Balintona's message of "Wed, 12 Nov 2025 10:10:11 -0800") References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> User-Agent: mu4e 1.12.13; emacs 30.2 Date: Thu, 13 Nov 2025 00:13:06 +0100 Message-ID: <86346idev1.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 79417 Cc: chad <yandros@HIDDEN>, 79417 <at> debbugs.gnu.org, Augusto Stoffel <arstoffel@HIDDEN>, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) On Wed, Nov 12 2025, Kristoffer Balintona wrote: > To give you a sense of what I have in mind, I've listed below specific > gripes (IMO) and bugs I noticed in ispell + flyspell after having > returned to them in these last few days:[1] > - As a user, it wasn't clear to me whether to use ispell-word or > flyspell-auto-correct-word. Should I use one in certain cases and the > other in other cases? Is their purpose entirely the same? If so, why > do these two commands defined in different packages, then? The two commands do slightly different things, and they have different UIs, so I guess which one to use depends on personal preference and the situation at hand. Though I have to say, I've never actually used `flyspell-auto-correct-word`. What I do use, a lot in fact, is `flyspell-auto-correct-previous-word`. To me, that is Flyspell's killer feature, the one that I wouldn't want to be without. In fact, when jinx first came out, I tried it and liked it, it's definitely an improvement over ispell+flyspell in many respects. But I went back to ispell+flyspell nonetheless, despite the quirks, because jinx lacked a similar feature and Daniel Mendler decided against implementing it. I also use `ispell-word` occasionally, when I cannot use `flyspell-auto-correct-previous-word` or when I want to add a word to my local dictionary. -- Joost Kremers Life has its moments
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 12 Nov 2025 20:25:43 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Nov 12 15:25:43 2025 Received: from localhost ([127.0.0.1]:51285 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vJHPS-0007y4-V0 for submit <at> debbugs.gnu.org; Wed, 12 Nov 2025 15:25:43 -0500 Received: from mail-lf1-x134.google.com ([2a00:1450:4864:20::134]:42417) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <krisbalintona@HIDDEN>) id 1vJHPP-0007xq-Ub for 79417 <at> debbugs.gnu.org; Wed, 12 Nov 2025 15:25:41 -0500 Received: by mail-lf1-x134.google.com with SMTP id 2adb3069b0e04-5943f39bf9dso86624e87.1 for <79417 <at> debbugs.gnu.org>; Wed, 12 Nov 2025 12:25:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762979133; x=1763583933; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:from:to:cc:subject:date:message-id:reply-to; bh=fjjAchHYO+TQXiLznosPzscXtPYZYvh6/Ewpucp5h28=; b=AdU1YwefmVu5xtQBXgNGbWR2ghZnqw73/DTyJhZ+TpNzzlxcRYiWqT73qTTKmFuFS/ 51wVDsjBhYeBK3zroPnPWj1Tl0QC2syFNGyU3KdfkHnc7HAyTiLBNVe+3mw9SmTSQDt+ 8p4NJ0skhSMTs3+LniOBAUAWmDwqpN3lU/fuLlBt1cXOJkXrQhc6nk6eWYBwYnRTEfOY 97K1XzyyXMfvxHGyN3Yl0kS+3e61uyk7bSRFPZyhSx2jp2E/Aods6Vd1SRWfDlPLdEi1 iCcz2M2UdLUGttMRbM6cire3PiU+rKnYTrlzkE6vMMkm39WL47sOUPNrRnm9r9R8ih/B prXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762979133; x=1763583933; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=fjjAchHYO+TQXiLznosPzscXtPYZYvh6/Ewpucp5h28=; b=xRAVif5KwlPdUSxI7D1d/tyS4b8cbQCCj9TMYmrfTQ4s/bmo/7EUTsOxwwSaWqo+mL qfx+tTHgISvxGxmtJOpZjSRsOqDtSMAaNO2oc8Vp6eTxDj1ncgZQ17EZ+cUWeo6o9UsG u77xuhTEGNTL4Iw+fr8jdcxWLqO6r4LyFWrBJ5vISONtapDHaaYTIeRevMSaphhUZ2hJ 4BTa2C5AdVnHM4RtqkHyinxgsS56rdT9RZlBoFNC8FKUeQc/br5asuUl1eRU6GVVpZI1 oduA+TNkN2SMRcwen1hS2PLLfa9r+eR4zxhAu8zt3eQAlG9HXjOkpFiT8r+tbklTQEuj ffig== X-Forwarded-Encrypted: i=1; AJvYcCVBQKJTfl5C3C6Co/V0gFmabtqQns3Fry8qeR37skTGu8cTIH760RYNShRdxqxemHLnx6x+zw==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yzr7M4/rQhUeqAolNn8i8gh8IoWI6dHkySg2RjZEoot4iJpoWH5 qUJQEn+ItTke7MP3eHfvyFP1MrtdU99G6Ogup1DxRuaYGUHj6DwKGHR5Qs+KQ7de1kGz39a8ajw vkJJwUvBncKTVTCYBrwYo0bS5JgZVpI0= X-Gm-Gg: ASbGncuYTgucsKgOIFlu8D2PoL/m/Q3Cy6v9pR9pCJ6f1rhYuKm8ZMhCcx9JD2CXfLn o+9IUX0MuOUnXDZ8mCY3LJbuSB0gFUGq371SN6OXNDI54VHj27gTTV+px3KIk8+hOYueLPe2yMw /oLliXzqhCf6MkH3InvNWTkxL6cmoDfCkBiqcd/WW8eRt+BMDiLe33FxQMERKjr0ZqV0guvLu6F MLt14DWs7QMzxrqt3Sa1MRIf7iCs5axFSM5/m5C0v0NTtgfiEUubiXGTDLlAKejWPnC3d4= X-Google-Smtp-Source: AGHT+IEQs21MKLK7QB69bnmRNnb6U713DuXFFuv391pRJkYVz0LFjH4KSKydO2gw+7h2cjkJLhi5j42zXMQDNPU0tqw= X-Received: by 2002:ac2:51ca:0:b0:592:fabd:61f2 with SMTP id 2adb3069b0e04-5957ecbcf46mr203440e87.16.1762979133126; Wed, 12 Nov 2025 12:25:33 -0800 (PST) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Wed, 12 Nov 2025 12:25:32 -0800 Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Wed, 12 Nov 2025 12:25:32 -0800 From: Kristoffer Balintona <krisbalintona@HIDDEN> In-Reply-To: <87ikff83x8.fsf@HIDDEN> References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <87ikff83x8.fsf@HIDDEN> MIME-Version: 1.0 Date: Wed, 12 Nov 2025 12:25:32 -0800 X-Gm-Features: AWmQ_blRgiYprgxpXK8uUAwtE_EpkWHTZePhr-Ty27NGk9zJgZvN9cwqJBWWLrw Message-ID: <CANVbq5mRnXrO++PCkXube-8uwuVVb_CKYBYC8N=2DC-xK_rzfA@HIDDEN> Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? To: Augusto Stoffel <arstoffel@HIDDEN> Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79417 Cc: chad <yandros@HIDDEN>, 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On Wed, Nov 12 2025, Augusto Stoffel wrote: > On Wed, 12 Nov 2025 at 10:10, Kristoffer Balintona <krisbalintona@HIDDEN> wrote: > >> I think the existence of jit-spell again illustrates (in my opinion) my >> point that we should ideally extend ispell/flyspell to fulfill the user >> needs and expectations that drove users to install or develop >> third-party packages. > > Sure. For the record I originally intended to make Flyspell > asynchronous, and then I realized it would be very difficult to > implement that in a backwards compatible way, so I made jit-spell an > independent package. Good to know. > Apparently some people around here prefer Flyspell/Ispell as it is, > but I think you're objectively right that most users prefer something > more "modern". I think the (perhaps naive?) ideal should be to get ispell/flyspell to a state where those users happy while simultaneously making users of third-party spell-checking packages (jit-spell, jinx, etc.) happy. >> - As a user, it wasn't clear to me whether to use ispell-word or >> flyspell-auto-correct-word. Should I use one in certain cases and the >> other in other cases? Is their purpose entirely the same? If so, why >> do these two commands defined in different packages, then? >> - The ispell and ispell-word UI is custom-made. I think using a generic >> UI like completing-read or even something like transient (just >> spit-balling here) would better serve this purpose, especially when >> spell-checking is one of the first things users coming from other >> programs expect their text editor[2]. The UI should conform with the >> rest of Emacs's facilities IMO. >> - The popup window for ispell and ispell-word does not obey >> display-buffer-alist. >> - The various *-dictionary user options in ispell confuse users: which >> ones should they modify to achieve a particular end? > > Right, the first step to fix this could be to obsolete > ispell-local-dictionary. This is unnecessary as ispell-dictionary can > be set buffer-locally to the same effect. For me, part of why the various *-dictionary options were confusing was precisely because it wasn't clear why ispell-dictionary wasn't just a buffer-locally set variable. I had assumed that there was a technical reasoning to have separate options that I was missing. >> - When flyspell-mode is enabled (underlining misspellings), when adding >> a word to the personal dictionary with either flyspell or ispell, the >> current misspelled word is no longer a misspelling but later >> repetitions of this word (just added to the personal dictionary) are >> still underlined but not recognized as misspellings (when you call >> ispell-word it reports that the word is correct). One has to call >> flyspell-buffer to remove these false underlines. >> - At least in org-mode buffers[3], the words that flyspell and ispell >> recognize as misspellings can differ because ispell ignores words >> according to ispell-skip-region-alist whereas flyspell offers >> flyspell-generic-check-word-predicate. > > This is a problem indeed. I would argue Emacs should define an API for > spellchecking packages and major and minor modes to cooperate in > deciding what regions of the text to ignore. I had a proposal drafted > somewhere; I could post it here although I can't work on it right now. I think sharing that proposal draft (even if incomplete) would be worthwhile. If anything, I am interested in reading what you have in mind, since the idea is intriguing. Currently, jit-spell has jit-spell-ignored-faces and jinx has jinx-exclude-faces. Ignoring based on face (or: having a predicate that can check faces) felt adequate to me. >> - At least in org-mode buffers, flyspell sometimes highlights words in >> comments as misspellings when calling flyspell-correct-word has no >> effect (because it is not a misspelling?). >> - Flyspell does not only offers corrections by using the mouse. The only >> way to correct words with the keyboard only is through ispell. (This >> amplifies the confusion described above where ispell and flyspell both >> have their own means of correcting words.) Ideally, flyspell should >> have its own keyboard-centric way of correcting words. > > One more gripe I can mention is the LocalWords mechanism, which is > incompatible with dir-local variables. It would be better to just use a > regular file-local variable. Ah, yes. I agree. In jinx you can save words using file-local variables (see jinx--save-file) as well as save words using directory-local variables (see jinx--save-dir). > See also a proposal here which unfortunately was never brought up in > this mailing list: https://github.com/astoff/jit-spell/issues/20. Thanks for sharing your discussion with Daniel Mendler (the author of jinx). Daniel closed the issue after a few months: do you know if anything came out of the discussion you had with him? -- Kind regards, Kristoffer
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 12 Nov 2025 19:10:52 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Nov 12 14:10:52 2025 Received: from localhost ([127.0.0.1]:50917 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vJGF1-00052i-R3 for submit <at> debbugs.gnu.org; Wed, 12 Nov 2025 14:10:52 -0500 Received: from mail-lj1-x22a.google.com ([2a00:1450:4864:20::22a]:50275) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <krisbalintona@HIDDEN>) id 1vJGEz-00052W-3D for 79417 <at> debbugs.gnu.org; Wed, 12 Nov 2025 14:10:50 -0500 Received: by mail-lj1-x22a.google.com with SMTP id 38308e7fff4ca-36295d53a10so54351fa.0 for <79417 <at> debbugs.gnu.org>; Wed, 12 Nov 2025 11:10:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762974643; x=1763579443; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:from:to:cc:subject:date:message-id:reply-to; bh=cvg1ZXji0fz0+x1mL9T/Wmqx8F1HS1yf+mUaFGgwbLE=; b=JGYNv1uc56sLe8shBLuah/EuJr9vPUmD5skgli8rGxeAQzbk+poOm4tAi2Ap9YIrPJ c+RAMkog7rj0imgaWxscMJHL/DkvNoqipFvZAmyuwktgfi3Bu0DPHec9b6YqTGd/24rW r/yeblsNdMK3LXySsffe2b+zn2/nVwJvpZScmkKCoKAIQEOvykCb3+dcK9T6m2aT0+Cm /J6lYUxEY6jRTleKd0ygXGNi7MZair1/0PBtSsSW19pZZoNyljYnypPog0Sl3+bZVyjy yaccQA1vtWwAd6FGa+5dR9qJzFHIAQHkrMSSK47ADzd2aWVVzHb0fu/6QgQpGINhGPFh 5QmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762974643; x=1763579443; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=cvg1ZXji0fz0+x1mL9T/Wmqx8F1HS1yf+mUaFGgwbLE=; b=QmxMeJiBhtCDHA6ZWA/lsHySqauVG9pJW6mnuNNV/RLasWz/PViz6Povv5sUXEcP/J n8NkBe4FA3580J4ZEdXMc7Y/gpvC9frGhDrO664l+br+oolj8m9RPgHfuGFbgbLV2Foz x3uLbITThKmfmZqacgjwGUt3fkJjJ0/pwCu+mGZiFdvnr22FJEEqtPxtXAndFe7D9p4j KakJqHjN8MzVWOLdpXuBr7dg8U0qXqdwb7jUrh4sN9vNPZSzzBXjJgggpZTvw6S/aX/j Ic14oOkgoq7ViqQ/pGCYZsYqfeC4Ajk13MxDG8XUsm5f2iAV6Y232UKhuQL7+AxQY4qq 5aLQ== X-Forwarded-Encrypted: i=1; AJvYcCUM9hVqM7SL1vvJ+5T0mzdfngBjKODs6ty7jgkOzDy457x7Xr8b2ja1egLuRpPo4y5nzDDdDw==@debbugs.gnu.org X-Gm-Message-State: AOJu0YwD46gIyQUkeGqdjJ9Q1axyKTBzIbYHjlFi247SXUytBnWSkstl 03ZH+J0nWzwplRDgnBcbp47XKDDzjSK8TGPcXPvfFGWlQyTxggjxZsJXtzb1HibkehavUa+ei3p xl/6ju9haNG0Y7E74YVoJj1cvIdJVqI3bugoJdFA= X-Gm-Gg: ASbGncu4O7za0FwEVgyE4Nz8tZAZwkIoCMkK+Dn2lKegQ2dkHr5fMNJselpRR+YKDRl RO5rNnsYXmqRUvX0Ws5mL486h+zRMJusT8fmpYs++/f8Zaa8liimfB1vkkh080ITjyDnL9MfL8z yi1cxJ30mEuELl4RDA6ohjKZPpjKo9iEuG2XAPtLzeSG+SXVfCFIK+TIrCBvbnyIxr7nw+UNiFY Lp6LcJLmH2W7v0rrTtU4bzqWiTirMt5/PQGKoD2BFEfpw3EEFXcmd4l4osMIT2pRlFkM6MRtgFw R5spbg== X-Google-Smtp-Source: AGHT+IHNxVo8jCikJsB0zfFm6lI2Ia9fWyDnYJ7OJb8FtpKWNg4j/5CnZbf6LjRbcxiovXe9J9BICE3ItfXYgdh5OYk= X-Received: by 2002:a05:651c:25c4:20b0:37a:95c9:473c with SMTP id 38308e7fff4ca-37b8c45ac9dmr9942511fa.46.1762974642409; Wed, 12 Nov 2025 11:10:42 -0800 (PST) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Wed, 12 Nov 2025 11:10:41 -0800 Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Wed, 12 Nov 2025 11:10:41 -0800 From: Kristoffer Balintona <krisbalintona@HIDDEN> In-Reply-To: <86ldkbrtin.fsf@HIDDEN> References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <86ldkbrtin.fsf@HIDDEN> MIME-Version: 1.0 Date: Wed, 12 Nov 2025 11:10:41 -0800 X-Gm-Features: AWmQ_bkzCdQPo-qcwryW1Zl1lP5-OtP7Lp5EaFVBR0hJFWf0TA7hyTLkHkHNSq4 Message-ID: <CANVbq5m1zBV0M9aRn6kD_BRZ8miOV0rADHJvU+ernWB8CHdKvA@HIDDEN> Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? To: Eli Zaretskii <eliz@HIDDEN> Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79417 Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, arstoffel@HIDDEN, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On Wed, Nov 12 2025, Eli Zaretskii wrote: >> Cc: chad <yandros@HIDDEN>, 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN >> From: Kristoffer Balintona <krisbalintona@HIDDEN> >> Date: Wed, 12 Nov 2025 10:10:11 -0800 >> >> - Flyspell does not only offers corrections by using the mouse. The only >> way to correct words with the keyboard only is through ispell. > > This is inaccurate: Flyspell has "C-c $". I am aware of flyspell-correct-word-before-point (bound to "C-c $"), but in my Emacs it opens a pop up menu that requires mouse interaction. (Is it not like that by default? Is my init.el to blame for this behavior?) I had in mind a UI like in jinx or flyspell-correct[1] where the word correction candidates are able to be selected by keyboard alone. (In those packages, completing-read is used.) Footnotes: [1] https://github.com/d12frosted/flyspell-correct -- Kind regards, Kristoffer
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 12 Nov 2025 19:08:30 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Nov 12 14:08:30 2025 Received: from localhost ([127.0.0.1]:50898 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vJGCj-0004uE-Ma for submit <at> debbugs.gnu.org; Wed, 12 Nov 2025 14:08:30 -0500 Received: from mail-ed1-x536.google.com ([2a00:1450:4864:20::536]:57601) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <arstoffel@HIDDEN>) id 1vJGCh-0004tr-71 for 79417 <at> debbugs.gnu.org; Wed, 12 Nov 2025 14:08:27 -0500 Received: by mail-ed1-x536.google.com with SMTP id 4fb4d7f45d1cf-6417313bddaso2119395a12.3 for <79417 <at> debbugs.gnu.org>; Wed, 12 Nov 2025 11:08:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762974501; x=1763579301; darn=debbugs.gnu.org; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:from:to:cc:subject:date:message-id:reply-to; bh=LbrqARkn2nqaYv8lTmUAyiy6NWkpGs7Z1TE7B27l4Mk=; b=DFjA+LZMQkopTaXB+SRlvfRxaIoN2jQGj6M7HD9BOi2nfmO+Uzc5qLt8HlU599Vu6P mKixjoUh1ixM3OWyNUhDPXkFBlq0zkC3HrMsQQOOqL71qepAJCIQUuPX+COFyJINtloc fmC9JuZuPAx9Ps1gaOJB5nnYiLww9gPMce9BQuXIgcPusNEElnl3YC1lueaJj7pSdgjA QSXbuczAyuxa6O1sIqPvB9902gjYo3YLQHq5McAbbNMFvTC1dAj2j0MY4PPMuy4h3M7S lqxm4m7fg1SSTDPAM0a6KMj46OVbcgm/JSlV/yciOFkqa5acqC+MWgwno6qaHMkRAule 5oyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762974501; x=1763579301; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=LbrqARkn2nqaYv8lTmUAyiy6NWkpGs7Z1TE7B27l4Mk=; b=xCFsfM7aRjcIlVvkkqzhgl+XNuxKD23lHBxoffCN+2zNT0fR2Je4Y5Q+MVYYgwnhwM s6MYS8Rq/bxjeQ6rKQZ7KisL/7SnzZKwEJmkyJHQy20zdPy75DIbxjwf5IxkqI8q+uAu B3xQXaaLQ/1O8FzMrMwseyxSyS8WktWCOkn6BELset6GPgHB6PZ/vIA72OM/jq34PeNi //Js+5OEmSrgpyD8Sl6SGfK4LaiyVH0ge6e+jUH/jc99qzqS2Eepo3uHkBxSmPwmvHqK Cpcff/2/26L9WMPy2l+Y4KOw6muIsMifa2fHfoS+y8eVgkAGYLS6f89MqG354mzkuHTu C1sA== X-Forwarded-Encrypted: i=1; AJvYcCXXHeFvvwEREzVhGfEyCsX6okVRDkTbuS2/hUB6+j7JPzxubpxOJEkN1j0rYp7tHcXl2L+eGA==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yx9jHCarpI+1fjpwbjR7AhtwDimrmjSAjV0o3opXxh1ZqoU+W/x Kp347A7/M3Zx8eYefyTqnGcnY/EeJ5EoBwOaC+RIRGRXQN50j4Ae8JFg6Au9Nw1v X-Gm-Gg: ASbGncvZullLrnfIqJ4MqbwbOW0ryDtmppay63gN7yMg0tVl53Nn5jTz+wq/7TzXvR1 t/JfNW1L+D9kL36QMAYjvUEwvhWl8/SRVQ7neLbnY7Z5Vd7zMxXOBM57Sud2Kc/hBoUmOinvNU0 b8QSUKMFB4RtDq7PRI7NBj8ks94Qlzwe41VsWse6STyLj2xaxPJ7TCfyLAZroTlnLTQ8OaJ0yHj 33eRh4Pnc2sOpygw3K2Xq4kjiDDMQsWiFyv/NMKbff66Z84gjGUpy2eLaDGBeYTcbkfnEcKDZpw VEi/Hvz8ns9l9rZ3hwxnpxTHmUUvP3wcK3Q2ipaE0Lke1+6N260ECYF6b45iOoVpy0W4muCL+7E TK2NhW/vrWbcw3S/7n63jpum1ymWPhn71qBAglxolue9dKxkxGV1w X-Google-Smtp-Source: AGHT+IEiYG6cXh75BLA+mmxlyYGh3gN3MRqdOR41kX6WenYSZBvAoTc8C8y0KU01hu062IFPGUwYPg== X-Received: by 2002:a05:6402:27c8:b0:637:e2b8:605b with SMTP id 4fb4d7f45d1cf-6431a39740dmr3791506a12.5.1762974500662; Wed, 12 Nov 2025 11:08:20 -0800 (PST) Received: from ars3 ([2a02:8109:8a95:9a00::31fb]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6411f86e9d7sm16374805a12.36.2025.11.12.11.08.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Nov 2025 11:08:20 -0800 (PST) From: Augusto Stoffel <arstoffel@HIDDEN> To: Kristoffer Balintona <krisbalintona@HIDDEN> Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? In-Reply-To: <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> Date: Wed, 12 Nov 2025 20:08:19 +0100 Message-ID: <87ikff83x8.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79417 Cc: chad <yandros@HIDDEN>, 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On Wed, 12 Nov 2025 at 10:10, Kristoffer Balintona <krisbalintona@HIDDEN> wrote: > I think the existence of jit-spell again illustrates (in my opinion) my > point that we should ideally extend ispell/flyspell to fulfill the user > needs and expectations that drove users to install or develop > third-party packages. Sure. For the record I originally intended to make Flyspell asynchronous, and then I realized it would be very difficult to implement that in a backwards compatible way, so I made jit-spell an independent package. Apparently some people around here prefer Flyspell/Ispell as it is, but I think you're objectively right that most users prefer something more "modern". > It seems like your main pain-point with ispell + flyspell is perceived > performance (i.e. IO blocking), right? I agree that that aspect should > ideally be better, but in my initial email I had more in mind the UX of > ispell + flyspell. Yes, it's both the mechanics/performance and the UI. (AFAIK jinx has very similar UI as jit-spell. (Some background on that can be found at https://github.com/minad/jinx#alternatives -- although I don't agree with the performance assessments made in there.) > To give you a sense of what I have in mind, I've listed below specific > gripes (IMO) and bugs I noticed in ispell + flyspell after having > returned to them in these last few days:[1] I have the same gripes, and a few more :-). > - As a user, it wasn't clear to me whether to use ispell-word or > flyspell-auto-correct-word. Should I use one in certain cases and the > other in other cases? Is their purpose entirely the same? If so, why > do these two commands defined in different packages, then? > - The ispell and ispell-word UI is custom-made. I think using a generic > UI like completing-read or even something like transient (just > spit-balling here) would better serve this purpose, especially when > spell-checking is one of the first things users coming from other > programs expect their text editor[2]. The UI should conform with the > rest of Emacs's facilities IMO. > - The popup window for ispell and ispell-word does not obey > display-buffer-alist. > - The various *-dictionary user options in ispell confuse users: which > ones should they modify to achieve a particular end? Right, the first step to fix this could be to obsolete ispell-local-dictionary. This is unnecessary as ispell-dictionary can be set buffer-locally to the same effect. > - When flyspell-mode is enabled (underlining misspellings), when adding > a word to the personal dictionary with either flyspell or ispell, the > current misspelled word is no longer a misspelling but later > repetitions of this word (just added to the personal dictionary) are > still underlined but not recognized as misspellings (when you call > ispell-word it reports that the word is correct). One has to call > flyspell-buffer to remove these false underlines. > - At least in org-mode buffers[3], the words that flyspell and ispell > recognize as misspellings can differ because ispell ignores words > according to ispell-skip-region-alist whereas flyspell offers > flyspell-generic-check-word-predicate. This is a problem indeed. I would argue Emacs should define an API for spellchecking packages and major and minor modes to cooperate in deciding what regions of the text to ignore. I had a proposal drafted somewhere; I could post it here although I can't work on it right now. > - At least in org-mode buffers, flyspell sometimes highlights words in > comments as misspellings when calling flyspell-correct-word has no > effect (because it is not a misspelling?). > - Flyspell does not only offers corrections by using the mouse. The only > way to correct words with the keyboard only is through ispell. (This > amplifies the confusion described above where ispell and flyspell both > have their own means of correcting words.) Ideally, flyspell should > have its own keyboard-centric way of correcting words. One more gripe I can mention is the LocalWords mechanism, which is incompatible with dir-local variables. It would be better to just use a regular file-local variable. See also a proposal here which unfortunately was never brought up in this mailing list: https://github.com/astoff/jit-spell/issues/20. > On the other hand, in my many months of using jinx, I have experienced > none of the grips described above. > > Footnotes: > [1] Some of these may be because of some mistake or misconfiguration in > my init.el, but as far as I know, this is the current behavior of > ispell and flyspell on Emacs master. > [2] Emacs is much more than a mere "text editor," but a text editor is > one of the buckets Emacs can fill and that perception is what > shapes new users' expectations, which includes a well-functioning > and out-of-the-box spell-checker. > [3] I primarily write in org-mode buffers so the observed experience has > been mostly in those buffers, but this issue might show up in other > major modes, too.
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 12 Nov 2025 19:06:37 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Nov 12 14:06:37 2025 Received: from localhost ([127.0.0.1]:50883 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vJGAv-0004qs-86 for submit <at> debbugs.gnu.org; Wed, 12 Nov 2025 14:06:37 -0500 Received: from mail-lf1-x129.google.com ([2a00:1450:4864:20::129]:61899) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <krisbalintona@HIDDEN>) id 1vJGAt-0004qk-8T for 79417 <at> debbugs.gnu.org; Wed, 12 Nov 2025 14:06:35 -0500 Received: by mail-lf1-x129.google.com with SMTP id 2adb3069b0e04-591ec7af7a1so1112797e87.3 for <79417 <at> debbugs.gnu.org>; Wed, 12 Nov 2025 11:06:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762974389; x=1763579189; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:from:to:cc:subject:date:message-id:reply-to; bh=fjuhKFmgI3LP57m2SR7isXder5zVsK9e/wf6sDZr2lY=; b=EHhhUMrOlP+bkWph/5vw0T5Wbjuw9h/6erZZ/kSGfcJZ/cbcqBHCnue/DsTidiOkx4 /J2pykNTP9qrkdWVbkl5hWmVerOcYpFdyBINoX69jU1HjLDFPiEGic/GRwGcbfXyJkGn L5UEnOzgxBeq8tqsZw90CdMO2+7YZBXqDskZ5M+yzoeEmdGc73PTb45GKHqWPXejSFbq IspDJdQ8gVetAjkWDKYucoGtzPBUejrQruYBZQrY8rqD9tIbtMrOWK660HKWALDrGPZs eS5MfJC+epxQUEPppdVCW3uhStGKPcz0lqfl81bwy/7ux/KdqJhZYT+FDoh2f1cxnxFL oYbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762974389; x=1763579189; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=fjuhKFmgI3LP57m2SR7isXder5zVsK9e/wf6sDZr2lY=; b=oRDJNMUNSdXELc9k8qm207xleI6Nn7aZCwcHgyHoUvL/VlqW924nmKmI7zHyQyOKge incGXMTVfgkKiIsQPRXAltO4+njTVR+gDKSO7IdmAr0kXRTc+6+6yrjNlDpAVa5i5GIQ S/71J/wb5dM4z7bD6m3/i+ofMtVfkumArKKJkhksLnB6mnBe4uQcxbH2oeg0yu7tFFJ0 8VK9/17rRyZMbdxo7aV8EtSN+ABai5Ftd+XIontaq7BP7VIYRUVrF8/0tZ0SD5NmLaH7 jgEHVCzzMYuV5m7GoXL/HEk727DvLbh1vOz0zEna/TqiJY8E7iuSQKI6xDQCc8cGX3kA yctg== X-Forwarded-Encrypted: i=1; AJvYcCUYPZwEfJze7xetuWAu1E2xBmvI0PvIqAuE/omnCwmULR4A1es5DqA/cE9P85DzzOe5rkgUjQ==@debbugs.gnu.org X-Gm-Message-State: AOJu0YweXFBQclbfFHuv4ozFAkklAD09h4LQfoaZ5rHKwEHiFp4538aj DGew3bEXutgfOvOPpXId7BYkFn2qQlkPGaLwqQ4AJJQyFM7LjgXCS3HRkxDqAaxqDzg0fnLd0Ow Rd2I1D9teRh+vxuW9F5/pqCz8ZwSEbVM= X-Gm-Gg: ASbGncsGWuN7O5QTnWYBEZe/Xwa+/jLSvoNhL3N/EppIMzMDMgCA/G994gW59sYqABw Nmc92T/razVF9uu/V7Vrz71cVWCxlCw1aeRPrVAUFbog1IOoSqZWfTlkp0U9lOM3rZHnQZGAohC FLuASDEhOHy2LRLYY6U4cfig058HVkNrU1Wq46/IZs+v3gEVTWga3dju+Bqz05kDMNCYT4XFMGd Aurr7fyZfcft0/dQB9cWup8imYrlNkjaxQ/BxIPTSFBaRRUXyDt0hoIFt22w558+Vtq5bfp3HKh Ih6nYg== X-Google-Smtp-Source: AGHT+IHomM5NQflOw9Dvp+scuY00tQiNnNY2eKrDTdsR7irMuwWbSvfAGmQ+/Y3JGc92Htoqiz5T+aWeTx/dYMG0JSY= X-Received: by 2002:a05:6512:12c4:b0:594:25e6:8a61 with SMTP id 2adb3069b0e04-59576df8d00mr1266246e87.16.1762974388565; Wed, 12 Nov 2025 11:06:28 -0800 (PST) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Wed, 12 Nov 2025 11:06:28 -0800 Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Wed, 12 Nov 2025 11:06:28 -0800 From: Kristoffer Balintona <krisbalintona@HIDDEN> In-Reply-To: <86ms4rrtsf.fsf@HIDDEN> References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> <86ms4rrtsf.fsf@HIDDEN> MIME-Version: 1.0 Date: Wed, 12 Nov 2025 11:06:28 -0800 X-Gm-Features: AWmQ_blm2Xmzi-GSTICFPqHH6D8KBJiOj9_n-TVgk2Eh9R95RcqD8xv2wK20aCQ Message-ID: <CANVbq5kvV9eMa=NqgsPh=-M8w=hAw4uDndx_t0RyfzxM7goZtg@HIDDEN> Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? To: Eli Zaretskii <eliz@HIDDEN> Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79417 Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, arstoffel@HIDDEN, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On Wed, Nov 12 2025, Eli Zaretskii wrote: >> From: Kristoffer Balintona <krisbalintona@HIDDEN> >> Date: Wed, 12 Nov 2025 10:10:11 -0800 >> Cc: chad <yandros@HIDDEN>, 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN >> >> - The ispell and ispell-word UI is custom-made. > > It isn't. It deliberately mimics the UI of the spellers themselves. > Try running the speller interactively outside of Emacs, and you will > see that it uses almost the same UI. I see. That makes sense, thanks for the info. I suppose, then, my comment should be amended. Perhaps, ispell is right to keep it's UI (although, the window still doesn't obey display-buffer-alist as one would expect) but flyspell should have a generic UI. I'd also still say that there is confusion (in general but especially to newcomers) on which word-correct commands to use (the ones ispell offers or the ones flyspell offers). -- Kind regards, Kristoffer
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 12 Nov 2025 18:33:09 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Nov 12 13:33:08 2025 Received: from localhost ([127.0.0.1]:50693 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vJFeW-0003QV-JT for submit <at> debbugs.gnu.org; Wed, 12 Nov 2025 13:33:08 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:59806) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vJFeR-0003Q5-Cf for 79417 <at> debbugs.gnu.org; Wed, 12 Nov 2025 13:33:06 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vJFeF-0001F7-Ux; Wed, 12 Nov 2025 13:32:53 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=Luw3u2CgcA7F977GQL3/VefFzTkuRofIvkQs0QiMfjM=; b=dy3Ko2Bh/ABR p+I15cK0nEtBKFxSQFbLHrjlKi6FTpZS+RqBPb8IYKdhFI25QQ+2w6jQ4QDd9zuRpUEJG6p9+qrRC DGHVbXzsknjW8ajVY24cJlBGCwcTvUfEQzN0AyGDLD/EhKGm4+0nhdbjPt2tDpnseOCnHiVprvmOS YGUODmOBmqDDMEGIaaot8ei3CEKcbBuxUzTgoELMJ+RZ9wSZXybTWxLQ4SSlvudaQDSTGqnH1Wjcm hGXIxZtWkAERctvNezaQ3nj6xRSLIkaAMiAh4ThBgOvpE/jheMVOhJHo2lUEvvCXekwkHVzGF6kT4 gZn9P719aDt5+1nOvFEerQ==; Date: Wed, 12 Nov 2025 20:32:48 +0200 Message-Id: <86ldkbrtin.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Kristoffer Balintona <krisbalintona@HIDDEN> In-Reply-To: <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> (message from Kristoffer Balintona on Wed, 12 Nov 2025 10:10:11 -0800) Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79417 Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, arstoffel@HIDDEN, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > Cc: chad <yandros@HIDDEN>, 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN > From: Kristoffer Balintona <krisbalintona@HIDDEN> > Date: Wed, 12 Nov 2025 10:10:11 -0800 > > - Flyspell does not only offers corrections by using the mouse. The only > way to correct words with the keyboard only is through ispell. This is inaccurate: Flyspell has "C-c $".
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 12 Nov 2025 18:27:07 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Nov 12 13:27:07 2025 Received: from localhost ([127.0.0.1]:50662 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vJFYh-0003DV-4v for submit <at> debbugs.gnu.org; Wed, 12 Nov 2025 13:27:07 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:34072) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vJFYe-0003D4-Hc for 79417 <at> debbugs.gnu.org; Wed, 12 Nov 2025 13:27:04 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vJFYZ-0000aK-1l; Wed, 12 Nov 2025 13:26:59 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=QDUTyC8XLkQmhXl7D2iRYacYChQryzpdVFYSOAvuzh0=; b=nBHcUlAR+4YP BVHXUNEfeVyJqVoThDZevJCayk5P4FF6BIqWBrtxxpQTsrlzg51NBqhQ8M9mVkowuuhtY6P/Hicgi zqqZ9+X2kwjfI5ng/p1AXx898IfioRXTZN0rFs77/WrM4XhV1w2ZfIPTnDtm6RKMX+QCiZRQ6TDs6 rDsUXzpPYq+QlYQJfKr6Un/0h6aZRP6sqKPm3XoEIRaQ/PPXjm4uqCwssP/KUFLaecxQBnirycfQe wPUVhc1D3QoaZKxLuxpssvKP6AOcBGFJpU22CYdYd+Bb0GlE3KUmKlIqklxIvHQfJLJeYqhc6Lhp1 5iUyPGC4P7uChJwr1aUniA==; Date: Wed, 12 Nov 2025 20:26:56 +0200 Message-Id: <86ms4rrtsf.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Kristoffer Balintona <krisbalintona@HIDDEN> In-Reply-To: <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> (message from Kristoffer Balintona on Wed, 12 Nov 2025 10:10:11 -0800) Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> <87ms4r8qbm.fsf@HIDDEN> <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79417 Cc: yandros@HIDDEN, 79417 <at> debbugs.gnu.org, arstoffel@HIDDEN, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Kristoffer Balintona <krisbalintona@HIDDEN> > Date: Wed, 12 Nov 2025 10:10:11 -0800 > Cc: chad <yandros@HIDDEN>, 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN > > - The ispell and ispell-word UI is custom-made. It isn't. It deliberately mimics the UI of the spellers themselves. Try running the speller interactively outside of Emacs, and you will see that it uses almost the same UI.
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.
Received: (at 79417) by debbugs.gnu.org; 12 Nov 2025 18:10:22 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Nov 12 13:10:22 2025
Received: from localhost ([127.0.0.1]:50582 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vJFIT-0002fC-S0
for submit <at> debbugs.gnu.org; Wed, 12 Nov 2025 13:10:22 -0500
Received: from mail-lf1-x133.google.com ([2a00:1450:4864:20::133]:60851)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <krisbalintona@HIDDEN>)
id 1vJFIQ-0002f4-W1
for 79417 <at> debbugs.gnu.org; Wed, 12 Nov 2025 13:10:19 -0500
Received: by mail-lf1-x133.google.com with SMTP id
2adb3069b0e04-59469969bfeso1160734e87.1
for <79417 <at> debbugs.gnu.org>; Wed, 12 Nov 2025 10:10:18 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1762971012; x=1763575812; darn=debbugs.gnu.org;
h=cc:to:subject:message-id:date:mime-version:references:in-reply-to
:from:from:to:cc:subject:date:message-id:reply-to;
bh=7Fw67Gh3rwygQpolKE/OJq3I/kCT/MaEgRSeptx/H2w=;
b=NsXgdARlUSQDsTXZcIGo5EahXaXXUnOIXddAgbC0MUz6rqE2LMWPVkHVRLS32gpV6/
CD3AqyhqgkqhYcGoognLYAQJytv6M6NegyeqdYgymPWT8My8X/XcDpwy2tDyVa63EKwY
EDRATFUwTH1khvtrKupgJOYU2JYywkf6zLQEXLPcwNzgwbmpqG5N2Q9+NwwBLJoRTB+h
etR7GOD97X1Adve7CSlR/V0MNTAKzl7NPNMd89GM0j2s1gGYrOxKca36a3DiSOjkPLsi
FQFmjraBFO0xGFSotYY9X4yydwKRhNUKjbPeEx3Sq6JASe0MCF5cc4gwFSUbWOqUH9E2
qPjg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1762971012; x=1763575812;
h=cc:to:subject:message-id:date:mime-version:references:in-reply-to
:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id
:reply-to;
bh=7Fw67Gh3rwygQpolKE/OJq3I/kCT/MaEgRSeptx/H2w=;
b=u6NZyLNsw/FhBsFfUDfLgbW9Pwbl7TCIK2vSDTswaPe78XViHmUrJQcatB5xZUX2yj
1kYRkHrXKhAW1bML7faZUFjHw558x8ann0UHFqlfLGnIUYbHoWvSdprbWAKi7Z02f1it
BxHFJqny0yAIg1Qv12kh0R2s+pAbGiiJlzQDUpDoDd3QggGk0j53KDO6lXgtQaPd8Tnq
JXKiI1lyt5vFOCu/y2hRPK2aWWb/38C7c/lcDdSkaEZ1iX+hfIpZdsqxd+BgNgqoBlxF
KxzF6IRzgQc3h/4yoE8UQdU4ZRbQl+4Mnn6d6Gu5iQflJbhTPopEvuKIdD6wpYDhb5HP
iyJw==
X-Forwarded-Encrypted: i=1;
AJvYcCXV3SMm2CD+35IPHtwtXik5ZvKp0oz7WrMHm81XDPKNGFSJQV6bSeSYhbrCuKJdIff5xs27uQ==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YwUEedosI7Ho88XfrGVLNM8LD0zlraQyFzSULcfosLGimQPKhi4
4QHJe/oiMIGs1crf2/rDwPW6ley/Me7e90CoAGuZV6/aT8co9w7flgvfdG0BGIyJciJJXs0u+ge
nMK+eB2zXhMBgJGm7+injhqnoGwhya4k=
X-Gm-Gg: ASbGnctoWmcDgY86Cl9E1mUmJ0TwcE/Vb6YsxyfQBCpt75ixhBvfCCSBHBjfDgWJ6CT
Tp7IMDiL/uaHMO+gZN73e672Yr3uGrXwmE5C3Hw0YwpYt4vOD8UQowFhM5uk2kbe5IaDCkHRKFH
e9bmSm8wdsxksuzVXvwpHuHr0chc520fuPWQBGmUcSyarWSEGpOFfQMtZX3WyfXhy3aqwnyIHDr
PS1a7Fr+LPCSf2nSCdKh3B5hSGmpaAocJLjczPb338pQqRZPAOUdYcMNf7uwT8WkwNpV60=
X-Google-Smtp-Source: AGHT+IHywrWY2lAeLdQqhliPDZTF/8UT13KFFdoMve+34n3HZye10/w32oH0qsvvwjmH9oXXHqv7bqgIS569I2utWu0=
X-Received: by 2002:a05:6512:3d1b:b0:594:4e9f:98ec with SMTP id
2adb3069b0e04-59576df94e1mr1290736e87.20.1762971012159; Wed, 12 Nov 2025
10:10:12 -0800 (PST)
Received: from 753933720722 named unknown by gmailapi.google.com with
HTTPREST; Wed, 12 Nov 2025 10:10:11 -0800
Received: from 753933720722 named unknown by gmailapi.google.com with
HTTPREST; Wed, 12 Nov 2025 10:10:11 -0800
From: Kristoffer Balintona <krisbalintona@HIDDEN>
In-Reply-To: <87ms4r8qbm.fsf@HIDDEN>
References: <87ecsft5qu.fsf@HIDDEN>
<87jz27rpsb.fsf@HIDDEN>
<86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN>
<CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN>
<CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN>
<CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN>
<87ms4r8qbm.fsf@HIDDEN>
MIME-Version: 1.0
Date: Wed, 12 Nov 2025 10:10:11 -0800
X-Gm-Features: AWmQ_bkgfOAKa4hbaui750jEVK7uYATtV80cOAF1j5QtIe27Ii5dd4LHkNAVzKA
Message-ID: <CANVbq5=LFowVTQ0+jpRCT6ArHMS2jh5S8emO8A923w_1p99f4Q@HIDDEN>
Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and
flyspell)?
To: Augusto Stoffel <arstoffel@HIDDEN>
Content-Type: text/plain; charset="UTF-8"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79417
Cc: chad <yandros@HIDDEN>, 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
Thanks for chiming in.
On Wed, Nov 12 2025, Augusto Stoffel wrote:
> On Mon, 10 Nov 2025 at 21:53, Kristoffer Balintona <krisbalintona@HIDDEN> wrote:
>
>> On Mon, Nov 10 2025, chad wrote:
>>
>>> My understanding is that jinx requires an emacs with dynamic module support
>>> included, plus it needs the user to have installed a separate library
>>> (libenchant), and it needs to be able to compile the glue file during
>>> installation, which means the user needs a functioning dev environment
>>> where emacs can find it. Is that still true?
>>
>> Yes, that's exactly right.
>
> For the record, jit-spell (in ELPA) is similar and doesn't need a
> complied module.
Thanks for sharing. I haven't tried jit-spell yet, but will give it a
try soon.
I think the existence of jit-spell again illustrates (in my opinion) my
point that we should ideally extend ispell/flyspell to fulfill the user
needs and expectations that drove users to install or develop
third-party packages.
> Using a subprocess as jit-spell does of course has some overhead, but at
> least to me performance is more than adequate. A limitation of the
> ispell pipe communication protocol is that you can't check spelling
> without also computing correction suggestions at the same time, and this
> makes jit-spell use more CPU _outside_ of Emacs.
>
> So IMO in order to "solve" spell checking in Emacs one has to resign
> oneself to linking against some choice of spellchecking library or else
> accept the performance penalty of computing corrections eagerly.
It seems like your main pain-point with ispell + flyspell is perceived
performance (i.e. IO blocking), right? I agree that that aspect should
ideally be better, but in my initial email I had more in mind the UX of
ispell + flyspell.
To give you a sense of what I have in mind, I've listed below specific
gripes (IMO) and bugs I noticed in ispell + flyspell after having
returned to them in these last few days:[1]
- As a user, it wasn't clear to me whether to use ispell-word or
flyspell-auto-correct-word. Should I use one in certain cases and the
other in other cases? Is their purpose entirely the same? If so, why
do these two commands defined in different packages, then?
- The ispell and ispell-word UI is custom-made. I think using a generic
UI like completing-read or even something like transient (just
spit-balling here) would better serve this purpose, especially when
spell-checking is one of the first things users coming from other
programs expect their text editor[2]. The UI should conform with the
rest of Emacs's facilities IMO.
- The popup window for ispell and ispell-word does not obey
display-buffer-alist.
- The various *-dictionary user options in ispell confuse users: which
ones should they modify to achieve a particular end?
- When flyspell-mode is enabled (underlining misspellings), when adding
a word to the personal dictionary with either flyspell or ispell, the
current misspelled word is no longer a misspelling but later
repetitions of this word (just added to the personal dictionary) are
still underlined but not recognized as misspellings (when you call
ispell-word it reports that the word is correct). One has to call
flyspell-buffer to remove these false underlines.
- At least in org-mode buffers[3], the words that flyspell and ispell
recognize as misspellings can differ because ispell ignores words
according to ispell-skip-region-alist whereas flyspell offers
flyspell-generic-check-word-predicate.
- At least in org-mode buffers, flyspell sometimes highlights words in
comments as misspellings when calling flyspell-correct-word has no
effect (because it is not a misspelling?).
- Flyspell does not only offers corrections by using the mouse. The only
way to correct words with the keyboard only is through ispell. (This
amplifies the confusion described above where ispell and flyspell both
have their own means of correcting words.) Ideally, flyspell should
have its own keyboard-centric way of correcting words.
On the other hand, in my many months of using jinx, I have experienced
none of the grips described above.
Footnotes:
[1] Some of these may be because of some mistake or misconfiguration in
my init.el, but as far as I know, this is the current behavior of
ispell and flyspell on Emacs master.
[2] Emacs is much more than a mere "text editor," but a text editor is
one of the buckets Emacs can fill and that perception is what
shapes new users' expectations, which includes a well-functioning
and out-of-the-box spell-checker.
[3] I primarily write in org-mode buffers so the observed experience has
been mostly in those buffers, but this issue might show up in other
major modes, too.
--
Kind regards,
Kristoffer
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 12 Nov 2025 11:04:40 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Nov 12 06:04:40 2025 Received: from localhost ([127.0.0.1]:48802 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vJ8eW-0004cb-2e for submit <at> debbugs.gnu.org; Wed, 12 Nov 2025 06:04:40 -0500 Received: from mail-ed1-x532.google.com ([2a00:1450:4864:20::532]:45127) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <arstoffel@HIDDEN>) id 1vJ8eT-0004cV-73 for 79417 <at> debbugs.gnu.org; Wed, 12 Nov 2025 06:04:37 -0500 Received: by mail-ed1-x532.google.com with SMTP id 4fb4d7f45d1cf-640bd9039fbso1233397a12.2 for <79417 <at> debbugs.gnu.org>; Wed, 12 Nov 2025 03:04:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762945471; x=1763550271; 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=C0e2VzXsFThoROaAUHfc9fpFI4Lt9rRNYlbhoYSjqbo=; b=CPY7BFjOh2/j3MrxF3V9YRoj6gjwqOniI5VUhH51ZX30Y6JMzZW2qDnJ7N7Xifd4xw heWpydl+XReyn8X0ZUhqKzbLLpSTXtWjmt97whpe8hXs3YXclkfuIxtWZ4rN3uOa+tL6 zJg8TnkGrmfEzHJYgLqV3KRkXgoxPWoK7mz94fdjTZIBwtt6126l3dPGdJS1vVJVwRaI o65N/yeyD3GE4xTOQHclh6WMpGsSWO43Rcj9DKPZ0F5YLf23OVFmNUzyjN9uGNw+XqDd SDkskt5ep6JtjnypS3AvAKfHBiUSUHAyMKQtkrCqm+rqRZ64yw1QDWirpFa3aIZEruwR 8QcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762945471; x=1763550271; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=C0e2VzXsFThoROaAUHfc9fpFI4Lt9rRNYlbhoYSjqbo=; b=LnaeqRjFSBKarbTmjVsmKQy+OTPOHn1YN/FIqZHrHRa7a6HYVzYCbDCjIt4Swjtmar rIa0cufSNp3Aw3RHsSG6+r3+l9jvY8V9xyLgFIKlabyzCmUDgQEpQntRkLHa5ULRjsbg B6DYZVmesOCPvx80zTD+s16UalBD3New6XjTfQ/lKsteDg2KdWrSIiZAnu+f2pa3NR52 7KMUGxCXTLwVA9P+X1mfTdQcg0HY32faZJWt/nlYrwNoK77/huTu/cGg44qfYa1085y3 1w7kv6bE8HDIFhSLvsjB+nJhtpgimRiOhsllqXtb9CXLHOaatmkTroMtFqQX+aFqQiT6 jv3g== X-Forwarded-Encrypted: i=1; AJvYcCVeXXPZ9BKfHJwVlpfLwpINT9jAr18MoyxE3NFEM9Q61IZBo6RLryeSKY3xGKX6RZIbYX35Aw==@debbugs.gnu.org X-Gm-Message-State: AOJu0YzLc1AvVPFgG7Xj9FSUomRfms3a0jGVrCByp1A68mtsraQB7yta fTjE2QEIH4YoFPpwc8YNkUiIP8m0N7HZpSlYCeCaWNpfFLEH70Gk87+g X-Gm-Gg: ASbGncunzaGYBluep/q+01nIL0HzcY3H3XDqk2WFNckJLzZ87sJwP1j0FT2e2itx7U+ h2wRhebeuTQb6P+Gg/f5nKgC+Dsopm8wAXaYlt7rpSaKCIWVx6Z4KjWlQe9Z3/ahK2bmdcnt9+j emyDxWUuTHNeATARuNmaH6bx38qlIjLKrZb6RN+NgxFjA0eyhRWocE+nthzT+j/8R1pXnn5fHWn MmYiyeCQ5uKU15CL4VBKkEFK5mO8QCfKEz4zT4yb1fizB+iMSR9+98Y14QXEm6KopBwOdd1iwae z8En9lqfHksMjB8++cvREmPCWnzOM18RwQmKohreEYBPP4ODifxJ7ZPxN46i58SvNJrdhiDV1Gp 1Md/cKPZAgpoVaiHb/7YmL+LLR7/7T7PFI7Dh7wz6uinAJesDdc8o X-Google-Smtp-Source: AGHT+IHWO9Q9GX17K+pHamJDzQNokV8vO74auRmPeKAhTMequ4LPS/h/dPsToo5IeXicTAJX5NTnng== X-Received: by 2002:a17:907:3ea9:b0:b04:c373:2833 with SMTP id a640c23a62f3a-b7331a60b3cmr289787666b.32.1762945470794; Wed, 12 Nov 2025 03:04:30 -0800 (PST) Received: from ars3 ([2a02:8109:8a95:9a00::31fb]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b7327a48bc7sm318199366b.71.2025.11.12.03.04.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Nov 2025 03:04:30 -0800 (PST) From: Augusto Stoffel <arstoffel@HIDDEN> To: Kristoffer Balintona <krisbalintona@HIDDEN> Subject: Re: bug#79417: How can we improve built-in spell-checking (ispell and flyspell)? In-Reply-To: <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> (Kristoffer Balintona's message of "Mon, 10 Nov 2025 21:53:33 -0500") References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> Date: Wed, 12 Nov 2025 12:04:29 +0100 Message-ID: <87ms4r8qbm.fsf@HIDDEN> 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: 79417 Cc: chad <yandros@HIDDEN>, 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On Mon, 10 Nov 2025 at 21:53, Kristoffer Balintona <krisbalintona@HIDDEN> wrote: > On Mon, Nov 10 2025, chad wrote: > >> My understanding is that jinx requires an emacs with dynamic module support >> included, plus it needs the user to have installed a separate library >> (libenchant), and it needs to be able to compile the glue file during >> installation, which means the user needs a functioning dev environment >> where emacs can find it. Is that still true? > > Yes, that's exactly right. For the record, jit-spell (in ELPA) is similar and doesn't need a complied module. Using a subprocess as jit-spell does of course has some overhead, but at least to me performance is more than adequate. A limitation of the ispell pipe communication protocol is that you can't check spelling without also computing correction suggestions at the same time, and this makes jit-spell use more CPU _outside_ of Emacs. So IMO in order to "solve" spell checking in Emacs one has to resign oneself to linking against some choice of spellchecking library or else accept the performance penalty of computing corrections eagerly.
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 11 Nov 2025 02:53:44 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Nov 10 21:53:44 2025 Received: from localhost ([127.0.0.1]:41996 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vIeVr-0006pm-SU for submit <at> debbugs.gnu.org; Mon, 10 Nov 2025 21:53:44 -0500 Received: from mail-lf1-x12d.google.com ([2a00:1450:4864:20::12d]:48528) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <krisbalintona@HIDDEN>) id 1vIeVo-0006pc-Gr for 79417 <at> debbugs.gnu.org; Mon, 10 Nov 2025 21:53:41 -0500 Received: by mail-lf1-x12d.google.com with SMTP id 2adb3069b0e04-5943b62c47dso3320684e87.1 for <79417 <at> debbugs.gnu.org>; Mon, 10 Nov 2025 18:53:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762829614; x=1763434414; darn=debbugs.gnu.org; h=content-transfer-encoding:cc:to:subject:message-id:date :mime-version:references:in-reply-to:from:from:to:cc:subject:date :message-id:reply-to; bh=TsfqRvNUMccucb8Yi8w5b/XyABbaUNcj1VXHwk1iXa4=; b=QRXRAH7FGWtR5tZJjXp+2KPgSAl0Qe5RD+k4cVpQM+AQWALdwUoICmjr7nr08HtQgh eEciW+fiuLVngyv03QMPJHmDZhj+1B2lzPdpTUJQeTHUQPx2YBSIUWB/A8afjy4O0Di+ Yg243xm3fD5M/63d0sAlkAo6Z+y8tDYEY4bf4oV1A9I3MQGqYUhpl8uyF+Cjlp45K07I cx4KW3poMbIVJjZqTecwS3V2jxVPOL0KcXdKGmtpasgdAUlz67kn2TaEEi23iAZSXl69 w+pECvY3CRn/KuSRbSIpH6l4auc8Nllea5J/D9udjL+ULG/iNu8tqES3AS/sapGmG4+e UwGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762829614; x=1763434414; h=content-transfer-encoding:cc:to:subject:message-id:date :mime-version:references:in-reply-to:from:x-gm-gg:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=TsfqRvNUMccucb8Yi8w5b/XyABbaUNcj1VXHwk1iXa4=; b=Fe82yRLlsKtRj9Ip67gw/Z6/QtpgG0MN3//Ei2Pxg7szvnAMN7vWAAECG+btav70RI 9BGpGbVkjCLXbwJCgTS+3TsKFV6u4Us1db98WXQbqweSPt5Qo0pD/jnR7wpZCIbnGKlK S3D1dg3HkBhaopXPk4KAhaVYjFt6NsdsrzjvL9tgKdLLpU+quyHxwio2zIOcLQsxFMf8 v/hPPIBdXcotzYONhQLBF245smCI++nMek3p3OiuwsBs+cGVdkf8Crsap0rqt8F3xbmC aywHJuZqA6Z6nDL4s0iWfcPuz7WNJ4d0dA4cn0bdNb+xc71fUSCTXwAcAxdEkmIRPwW7 5oSQ== X-Gm-Message-State: AOJu0YzNVRjAgoydrytk3cX2WLhCVVavVy+fyARBDeJCBHhCZ+62Wtc+ SkXy/upQEF5UAEExjbO98pvQTEGN5sVYmu/8eHCX3pFh/lAeafaFJ8QLjnuEKcot0uMO1SBgNM6 I0ujGnQ5go3S9NdF9emBhLJbk5/C5L6g= X-Gm-Gg: ASbGncuxF7M+7iAKXcsfGS6aeuDuG7dgb6r6JNVBmYAoYlD4w7eW+JX9/7gtrftPoCE 5Q8a5mQkTduHiJ0aNwcoEZ9G6YirIC7D0oBf3sLJc5FvvweK59xiWNNMnTv2JKHhKIWSFY2IhdC RLh56k0r6cLFfq/cEfWpOceJ39EN2BzyPlVXeQNGjPLfmpVOhnW7PAWIVzTwRxRbcfR9ziQwA3C v2BupgbC8rorENgbdsjAsMT7n4uB1p6k1WJGQhQV0C8sbzBMEcLUROJfG8ujbM0zOqQkEc= X-Google-Smtp-Source: AGHT+IEu0hLcx0J9JzerwUNFBVwzyp0liZqxHntrKaAXbFmtcZnLQF0Yt4n9KAnGZIWvkpLTjdMKFj09LuGpr3Uhx58= X-Received: by 2002:a05:6512:b92:b0:591:c473:5bc7 with SMTP id 2adb3069b0e04-5945f2065b2mr3324367e87.50.1762829613622; Mon, 10 Nov 2025 18:53:33 -0800 (PST) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Mon, 10 Nov 2025 21:53:33 -0500 Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Mon, 10 Nov 2025 21:53:33 -0500 From: Kristoffer Balintona <krisbalintona@HIDDEN> In-Reply-To: <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> MIME-Version: 1.0 Date: Mon, 10 Nov 2025 21:53:33 -0500 X-Gm-Features: AWmQ_bk9dp7rXyTsJ2b1agsTOjKuE9i9uOYMQ65bVIuaHaNV1unzsay8TVzKzIM Message-ID: <CANVbq5mwRFqOe-xfgiWH=GdvDuKyuKfuEmzDiZmycdXe65DAMA@HIDDEN> Subject: Re: How can we improve built-in spell-checking (ispell and flyspell)? (was: bug#79417: 31.0.50; Improve ispell.el documentation) To: chad <yandros@HIDDEN> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79417 Cc: 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On Mon, Nov 10 2025, chad wrote: > On Mon, Nov 10, 2025 at 4:06=E2=80=AFAM Kristoffer Balintona < > krisbalintona@HIDDEN> wrote: > >> And it is my opinion that jinx fulfills what most users would expect >> from spell-checking out of the box. It is fast, has a UI that integrates >> well with other Emacs packages[3], requires zero configuration, and is >> easily configured/extended if desired. > > > My understanding is that jinx requires an emacs with dynamic module suppo= rt > included, plus it needs the user to have installed a separate library > (libenchant), and it needs to be able to compile the glue file during > installation, which means the user needs a functioning dev environment > where emacs can find it. Is that still true? Yes, that's exactly right. I think my initial remark might've been misleading: I didn't mean to suggest that jinx is just a better version of ispell. The very fact that ispell doesn't need anything aside from a supported spell-checking program is a virtue jinx doesn't have. I only meant to point to the fact that when users have been in the position to freely choose between jinx and ispell + flyspell, many of them end up leaning toward jinx because it "just works" without any fuss. And my ultimate reason for mentioning jinx was that there's nothing blocking us from trying to make the built-in Emacs spell-checking so good that current jinx users can feel at home without jinx. (Like how in the last ~5 years many users have swapped over to completion frameworks that leverage the built-in completing-read, e.g., vertico.) > Are the people recommending it just not suggesting it for systems > linux Windows or Android, or is someone else distributing pieces that > bypass those requirements? If I had to guess, most of those users probably just mention jinx as =E2=80=9Cthe best option if you can use it.=E2=80=9D And if I had to guess = again, I=E2=80=99d say most Emacs users are likely in a position to meet jinx=E2=80=99s techni= cal requirements anyway. (But as I hopefully expressed adequately above, that's besides the point. My actual point is that I think there's opportunity for us to improve ispell + flyspell such that it better meets the expectations of users who go to jinx because of a perceived lack in ispell + flyspell.) --=20 Kind regards, Kristoffer
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 11 Nov 2025 01:31:09 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Nov 10 20:31:09 2025 Received: from localhost ([127.0.0.1]:41504 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vIdDx-0003jB-3l for submit <at> debbugs.gnu.org; Mon, 10 Nov 2025 20:31:09 -0500 Received: from mail-lf1-x12f.google.com ([2a00:1450:4864:20::12f]:42200) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <yandros@HIDDEN>) id 1vIdDr-0003ig-PG for 79417 <at> debbugs.gnu.org; Mon, 10 Nov 2025 20:31:07 -0500 Received: by mail-lf1-x12f.google.com with SMTP id 2adb3069b0e04-592f7e50da2so483987e87.0 for <79417 <at> debbugs.gnu.org>; Mon, 10 Nov 2025 17:31:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762824657; x=1763429457; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=UpvhvUs9I8tGhupC9mb7q3wKE3eHOGK80oeFR2iPHg8=; b=iUsyQoYjonnAlPOcHWPN8DZQvrHoeMN+NErcU+fsL+sjWb0DlhfJnQo7mv0PYyGVDQ atr+9XvdA4ZU69JzdqWvJqU0KXlV29+XRjPmDIXOjKbC54hpyjG/1eLUgHemXtt6TsFH PwEw/fGZnyoskl+Rhs5EeZRpc9o9Tb4ZBaj+wYEEid0awdI/l6WCqbHVNDhaF41i4wyj pzpl8Fi40+dA1Q0osXcqXDCIaxX7HMokhd8TeqmrBuTRjtadsJhiuneb7VKHeRRzrpTY jTlZiXntjHE61cAfotAIuSzlTbrAkOOgd5wBpEfbnxn/ZYNF9UASu0eB56xxRmbBhdfY IE5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762824657; x=1763429457; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=UpvhvUs9I8tGhupC9mb7q3wKE3eHOGK80oeFR2iPHg8=; b=sFG8jb3j0Vb7JMkvWkJwt+7bb4KQKFXt39WM1lWUsCRNAKuKiJ3JexbfMlmzgMEzFl Lp3WF4zO3YPsAILkztc7QSd4wNj8H++qmG/UiZjfnayLoe/BDYaGZH/9oa7GhMhK4P4B dWjGCP9QAYtZn7b4Nar2NHwErgBL7qjrSADFKScqo2tIBQWZ9g0ts9Ge6HWZSkV6MYhk 5jYLvQTUZwmqFI8i1YzmEzwZH6KadFqGz8ALixrfE1ad2VqDPhlouDNOLxoIk2MpdTAv faqrvf8KCRioIOInno/26X9s6o+0Yb8rOHwkC3n/vhPybRfawfUkD6g5UxcwyxEm2Rqc YhzA== X-Gm-Message-State: AOJu0YxenCpfoMHrFcFoCrCDJXabsSs7A22Huyowzi0JGvYFkEC7IdWX nU5pCSVRSgeiVKTwPgpdVAy+oLfnGT1LiXzaO3ntUrYcdkujEsHoyM8HslxRFbrJ9quNgkNOwCf Q2BBf5K960zaybR0hywJZEo1sMUVXLl0= X-Gm-Gg: ASbGncsZ0F3uN+GDWAY4qV9IPcTLRXt4b9aUx7I55roB5c2tLgd8zNPP6u6YaWFPt5F b/s7Drp42voGSekcj7TPzE2Le+BC7T3hnnUOggHIxDGi2ikpl9oBP5T7rsDoui8PjzAELrH6Zgb SWC4ngRCJP7IJMkgcJvkB6H/4JheGLUv2xF4VBq4BEGfP6qFWNI2jY4ogF0ax5MfLApQnksl/qg Rca7RTq38IHlGfxQCSf61rDKKFy3vHwyi5qT09lwvOtSgU0BBMi8ICSgSsl X-Google-Smtp-Source: AGHT+IFfLtpHBTAzIx8I7FMIMST+ImqR8oJt9wE+OIuV6dQS2WUTZ9B8vGKHEAZvfJfg3882F3jMUhvQ60H4m8x51Hk= X-Received: by 2002:a05:6512:15a6:b0:594:752e:8822 with SMTP id 2adb3069b0e04-594752e89f7mr160681e87.12.1762824656782; Mon, 10 Nov 2025 17:30:56 -0800 (PST) MIME-Version: 1.0 References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> In-Reply-To: <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN> From: chad <yandros@HIDDEN> Date: Mon, 10 Nov 2025 20:30:38 -0500 X-Gm-Features: AWmQ_bngW12R9JDbTTNoJTqn5WhW19XsPZCBg6Dje8tpxShY63a5Klpo3FIFors Message-ID: <CAO2hHWaTq1HjupV62YY1O+-j2iqjk=5UZAwFF4EK59f1Fa0FAw@HIDDEN> Subject: Re: How can we improve built-in spell-checking (ispell and flyspell)? (was: bug#79417: 31.0.50; Improve ispell.el documentation) To: Kristoffer Balintona <krisbalintona@HIDDEN> Content-Type: multipart/alternative; boundary="0000000000007809e5064347998f" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79417 Cc: 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --0000000000007809e5064347998f Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Nov 10, 2025 at 4:06=E2=80=AFAM Kristoffer Balintona < krisbalintona@HIDDEN> wrote: > And it is my opinion that jinx fulfills what most users would expect > from spell-checking out of the box. It is fast, has a UI that integrates > well with other Emacs packages[3], requires zero configuration, and is > easily configured/extended if desired. My understanding is that jinx requires an emacs with dynamic module support included, plus it needs the user to have installed a separate library (libenchant), and it needs to be able to compile the glue file during installation, which means the user needs a functioning dev environment where emacs can find it. Is that still true? Are the people recommending it just not suggesting it for systems linux Windows or Android, or is someone else distributing pieces that bypass those requirements? Thanks, ~Chad --0000000000007809e5064347998f Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><br></div><div class=3D"gmail_quote gmail= _quote_container"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 10, 202= 5 at 4:06=E2=80=AFAM Kristoffer Balintona <<a href=3D"mailto:krisbalinto= na@HIDDEN">krisbalintona@HIDDEN</a>> wrote:</div><blockquote class= =3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg= b(204,204,204);padding-left:1ex"> And it is my opinion that jinx fulfills what most users would expect<br> from spell-checking out of the box. It is fast, has a UI that integrates<br= > well with other Emacs packages[3], requires zero configuration, and is<br> easily configured/extended if desired.</blockquote><div><br></div><div>My u= nderstanding is that jinx requires an emacs with dynamic module support inc= luded, plus it needs the user to have installed a separate library (libench= ant), and it needs to be able to compile the glue file during installation,= which means the user needs a functioning dev environment where emacs can f= ind it. Is that still true? Are the people recommending it just not suggest= ing it for systems linux Windows or Android, or is someone else distributin= g pieces that bypass those requirements?=C2=A0</div><div><br></div><div>Tha= nks,</div><div>~Chad</div><div><br></div></div></div> --0000000000007809e5064347998f--
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 10 Nov 2025 18:55:31 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Nov 10 13:55:31 2025 Received: from localhost ([127.0.0.1]:39329 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vIX34-0002AG-QK for submit <at> debbugs.gnu.org; Mon, 10 Nov 2025 13:55:31 -0500 Received: from fout-a7-smtp.messagingengine.com ([103.168.172.150]:51075) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <rudolf@HIDDEN>) id 1vIX32-0002A7-29 for 79417 <at> debbugs.gnu.org; Mon, 10 Nov 2025 13:55:28 -0500 Received: from phl-compute-03.internal (phl-compute-03.internal [10.202.2.43]) by mailfout.phl.internal (Postfix) with ESMTP id D3880EC20EF; Mon, 10 Nov 2025 13:55:22 -0500 (EST) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-03.internal (MEProxy); Mon, 10 Nov 2025 13:55:22 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adamkovic.org; h=cc:cc:content-transfer-encoding:content-type:content-type :date:date:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:subject:subject:to:to; s=fm1; t=1762800922; x=1762887322; bh=x67CGXgIdg+rta6sOhXGqi1daTzwsJhm G4ZK/P5OUzM=; b=WJ42foVkw5WdVQjnSpJOCMJI/RC1Ht59kSnSlauvOvmGUvun 7efZZuNSBCYMgBufqgFl0OLX3zxNqa+eavKZ5/cqNZzt5MBwd5L5bK9biuNc5n/C V2VDFgUeDUF3JXD5Zz6/xBHvmOMF1uOs7PgvsRCoFDVkBNvIDcZBcIGoDR7u2mdf GWKr1yVJYc0N0M+lHo7Wqp4D8PPoy5ZhkSj2O0kJYM2I6O/9t3QwAc1Rl+GVKZgY rNo1TJKZ3lF++NoOHiyP4K0QJqKE3pDhy9ld/shSg3JDHMGaizgqP9h5n5UWo6cX I5L8l6DYEWhY9XzBt63qNermnm+BpG4GU9BB0g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1762800922; x= 1762887322; bh=x67CGXgIdg+rta6sOhXGqi1daTzwsJhmG4ZK/P5OUzM=; b=N ktL3eXFRx2mxmILx2dUoRsddSeptCoYmCqfephmPgxTOe4YT9Iks+w/l197v6pii qT6twfBEqfWSEnJ7SEJyWWKbRQwL2qQyBBVNWStO6zLX9Y9N/AimYAuBRab5RRXM ncaC8DT4FyIAASGjC+yYpyq43VyRfQWuEz0nOW4ZioBzqKdRxou7zaaWPPvdnbIP YRGdmkJKaZr1oBOa+M7X4CTriQzIJhjMpv8d1r7p7UF4DM/5xaCOhWMUD4ho0Nxo LWMEwJXO3oKoW+GuSpbKBxkmdfUSJQOgcZTW1mdk9vxU3ZPTdEp/r9AbtZSmWSGS yf9PLb9Giz8Ex4CaDz0SQ== X-ME-Sender: <xms:GjUSaWeuK-rbaIYBlvbUC02XIek6_TzUsNe89p9biKzZhB7NXFHpvA> <xme:GjUSaXrDD756_s_f_PiRyYPw9q_bUwbmazSc9FFUlqm8EAAQpA80DOM-rN0zWU4Qj gpOnoou7z2XXXuG9y1oQhUB-szYXZ8EKzMpjlWy1VPz13rw44sPXg> X-ME-Received: <xmr:GjUSaU7fS0tEISgCHQZdC-_sG5RT6VMA26n-1LcdJoZYCWyZkbaoTWFSjqYnwgkoCrTZVCiz6HmRSXNWQaoOJ7gnVBVkyU4> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdeggdduleeltdelucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucenucfjughrpefhvfevufgjfhffkfggtgfgsehtqhertd dttdejnecuhfhrohhmpeftuhguohhlfhcutegurghmkhhovhhitgcuoehruhguohhlfhes rggurghmkhhovhhitgdrohhrgheqnecuggftrfgrthhtvghrnhepieeuteehffdugffhge egveehvedvtdekffelhfeuledugfetgfffledthfdujeegnecuffhomhgrihhnpegruggr mhhkohhvihgtrdhorhhgnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrg hilhhfrhhomheprhhuugholhhfsegruggrmhhkohhvihgtrdhorhhgpdhnsggprhgtphht thhopeefpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopehfohhrpggvmhgrtghspg dusehlohgtkhihfiholhhfrdhnvghtpdhrtghpthhtohepjeelgedujeesuggvsggsuhhg shdrghhnuhdrohhrgh X-ME-Proxy: <xmx:GjUSadqroKK9CMLs6RPlBTfmroLoU-bw1L5KCO3yuHoZFoRw0xIoig> <xmx:GjUSaWiDKHwEcYSPj9QnZveAbjPymYZEMQMsFZN4MaNmHOTwj3y1AQ> <xmx:GjUSaXLkwKHG2mnsapSQkInu_3BLMcILkczNZmtwZr1y1C9vLQs1xA> <xmx:GjUSaWC6Sg8dMJvEsn82GRMVb-E6gAf_hNsjsAD5PYFNwrRqrJDwKQ> <xmx:GjUSaSUYDJ9lpDf2VEquJkYOHJtVKcOaNr3ikX9HYMudSxJ_lNK2v5aM> Feedback-ID: i88214938:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 10 Nov 2025 13:55:21 -0500 (EST) From: Rudolf =?utf-8?Q?Adamkovi=C4=8D?= <rudolf@HIDDEN> To: Lockywolf <for_emacs_1@HIDDEN>, 79417 <at> debbugs.gnu.org Subject: Re: bug#79417: 31.0.50; Improve ispell.el documentation In-Reply-To: <m2y0odbtvp.fsf@HIDDEN> References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <m2y0odbtvp.fsf@HIDDEN> Date: Mon, 10 Nov 2025 19:55:20 +0100 Message-ID: <m2v7jhbtuv.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 79417 Cc: Lockywolf <for_emacs_1@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) Rudolf Adamkovi=C4=8D <rudolf@HIDDEN> writes: > A-ha! I knew about the difference between Ispell and Flyspell, but I > have always seen Ispell as a feature, rather than historical baggage. s/always/never/ --=20 "To the unknown journeyman I promise to show courage in upholding my vows What is an adventure if not the commitment to keep going?" --- Protesilaos Stavrou, To the unknown journeyman, 2025 Rudolf Adamkovi=C4=8D <rudolf@HIDDEN> [he/him] http://adamkovic.org
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.
Received: (at 79417) by debbugs.gnu.org; 10 Nov 2025 18:55:04 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Nov 10 13:55:04 2025
Received: from localhost ([127.0.0.1]:39320 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vIX2e-00024L-4d
for submit <at> debbugs.gnu.org; Mon, 10 Nov 2025 13:55:04 -0500
Received: from fhigh-a2-smtp.messagingengine.com ([103.168.172.153]:47231)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <rudolf@HIDDEN>)
id 1vIX2a-00023b-Pt
for 79417 <at> debbugs.gnu.org; Mon, 10 Nov 2025 13:55:01 -0500
Received: from phl-compute-05.internal (phl-compute-05.internal [10.202.2.45])
by mailfhigh.phl.internal (Postfix) with ESMTP id 15C4C1400199;
Mon, 10 Nov 2025 13:54:55 -0500 (EST)
Received: from phl-mailfrontend-02 ([10.202.2.163])
by phl-compute-05.internal (MEProxy); Mon, 10 Nov 2025 13:54:55 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adamkovic.org;
h=cc:cc:content-transfer-encoding:content-type:content-type
:date:date:from:from:in-reply-to:in-reply-to:message-id
:mime-version:references:reply-to:subject:subject:to:to; s=fm1;
t=1762800895; x=1762887295; bh=okkR/gCRdrCbII7JfkOvwwIJWPMA2sdI
WFyklHyhFxA=; b=W0kbDMrAo2J1YCDEf8HAovhvnUabQ6LwZDSK6WJjpYOJX2Hy
4tj/w6lN9OwCtQafPhnxiReY/AJPBLblBpvA8w8dRE4kHnMeDUHs6AXHaqdLSmqw
FF6DQ1OrpUohqp8uTiwt/NHNrOoU/TfbvypJOQjZJagril2G+0aaiDGmAdS7DM2d
CeTiRYM/KtDrBYwYUzF3gXCA12ri6owMXKV0qnl6eNyHgFyeVCXRCgZFi0PBhBiI
vRahUr/U2bR3CKD8UeiB9mg3oloxqQoXEPkivXPBzHyFfoe7sTFyTZeb772cdLUQ
N13uA54hTyKd18YB0Dtu+BTbImoUxoX9wfEW7g==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
messagingengine.com; h=cc:cc:content-transfer-encoding
:content-type:content-type:date:date:feedback-id:feedback-id
:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to:x-me-proxy
:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1762800895; x=
1762887295; bh=okkR/gCRdrCbII7JfkOvwwIJWPMA2sdIWFyklHyhFxA=; b=r
2AXmnJLE3ul3yNfa5mU9l2P6GwhZpcfDMQmV2IUyrjTSDQaHqSwW3BNrIWNiaMKX
7o2ixmUqEy7Y1em1SRXnW81jQvON2QkgQDjsd4cSF23TAzQl+BpMgyj36rg7ONZI
QDmeM4wQ5241cpioFsbUiMBcM0EnpEVlXApFxM6XycToYunu4tm4GzhZYHPJ9gNK
n7e03SbIWBGlOYgg1lBOWGLwH0cCkixvRqAWvaE4N7/1vPAheQG1t0FiVXlxtz24
QKuY9bAdwzCrmhbMZ2YiYB6R4c2N+cmU5PiZJJ7EE3MDOibYPFTuvHMWpC8HRp5l
IuhSQxxdf2ee88LCfPRzA==
X-ME-Sender: <xms:_jQSaTVCUwRVHVjYv-FbNmz9xtEJjU2zB_EOr47XyhfudzMHnn41pQ>
<xme:_jQSaTDGnFXEqe1c-0me9SpG9jUxfw6G0e4Y1bk76uNGSBr0QPvFi06_KhOEdatIi
x7AMO2YDAhKe0OnksnWs7te_GEUyvAPBmEM4RZ9f3YANC35yoUNty-u>
X-ME-Received: <xmr:_jQSacyKjdZ4c99Om8uVHsKhZy2sBOJSHvZEAKODjYCAVKJVaygzY9t7bzfY85nXLFzLJrqlqLjPFvJwqBlBCBEhnVGO24U>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdeggdduleeltdekucetufdoteggodetrf
dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu
rghilhhouhhtmecufedttdenucenucfjughrpefhvfevufgjfhffkfggtgfgsehtqhertd
dttdejnecuhfhrohhmpeftuhguohhlfhcutegurghmkhhovhhitgcuoehruhguohhlfhes
rggurghmkhhovhhitgdrohhrgheqnecuggftrfgrthhtvghrnhepieeuteehffdugffhge
egveehvedvtdekffelhfeuledugfetgfffledthfdujeegnecuffhomhgrihhnpegruggr
mhhkohhvihgtrdhorhhgnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrg
hilhhfrhhomheprhhuugholhhfsegruggrmhhkohhvihgtrdhorhhgpdhnsggprhgtphht
thhopeefpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopehfohhrpggvmhgrtghspg
dusehlohgtkhihfiholhhfrdhnvghtpdhrtghpthhtohepjeelgedujeesuggvsggsuhhg
shdrghhnuhdrohhrgh
X-ME-Proxy: <xmx:_jQSaYDk0UllaE8EYztprSSI7gcCUx1YxZD8BVjkz63QEQKBWlw1ug>
<xmx:_jQSaRbGChK2e62HHAZmvW0c_xsf43OKQ7rpgJAjg0IZ077Bj4gQUw>
<xmx:_jQSaYicZxcMy4LGo-cwp1J_02l6e26Umx-OWcRoqjnSNIhvgFNfpA>
<xmx:_jQSab7f8rjM672HPSRWtX-w7__Uk7kYaSUMo2VLgUSPTeG8ntFh8A>
<xmx:_zQSaSqTBIRECtunAC0qoxfEnMdxSt9aIslaKieCmdSf-18344Vyucw0>
Feedback-ID: i88214938:Fastmail
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon,
10 Nov 2025 13:54:53 -0500 (EST)
From: Rudolf =?utf-8?Q?Adamkovi=C4=8D?= <rudolf@HIDDEN>
To: Lockywolf <for_emacs_1@HIDDEN>, 79417 <at> debbugs.gnu.org
Subject: Re: bug#79417: 31.0.50; Improve ispell.el documentation
In-Reply-To: <87jz27rpsb.fsf@HIDDEN>
References: <87ecsft5qu.fsf@HIDDEN>
<87jz27rpsb.fsf@HIDDEN>
Date: Mon, 10 Nov 2025 19:54:50 +0100
Message-ID: <m2y0odbtvp.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 79417
Cc: Lockywolf <for_emacs_1@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)
Lockywolf <for_emacs_1@HIDDEN> writes:
> +Emacs spell-checking subsystem is originally designed for purposeful
> +(synchronous) spell-checking, and expects ``writing'' and ``proofing''
> +to be two separate activities. If you need less rigorous asynchronous
> +spell-checking, @pxref{On-the-Fly Spell-Checking}.
A-ha! I knew about the difference between Ispell and Flyspell, but I
have always seen Ispell as a feature, rather than historical baggage.
Your patch is a goldmine of useful information. Practical and readable
but also theoretic and educational in the best possible way.
And, I may not need Jinx, after all. :)
As Eli said, the text might need a bit (not too much) of tightening, and
splitting into (much) smaller patches, but other than that, this is such
a fantastic addition to Emacs, IMO.
Rudy
--=20
"Thinking is a momentary dismissal of irrelevancies."
--- Richard Buckminster Fuller, 1969
Rudolf Adamkovi=C4=8D <rudolf@HIDDEN> [he/him]
http://adamkovic.org
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.
Received: (at 79417) by debbugs.gnu.org; 10 Nov 2025 09:02:38 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Nov 10 04:02:38 2025
Received: from localhost ([127.0.0.1]:36858 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vINnI-00076w-Kd
for submit <at> debbugs.gnu.org; Mon, 10 Nov 2025 04:02:38 -0500
Received: from mail-lf1-x133.google.com ([2a00:1450:4864:20::133]:58655)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <krisbalintona@HIDDEN>)
id 1vINjt-0006sy-Hk
for 79417 <at> debbugs.gnu.org; Mon, 10 Nov 2025 03:59:07 -0500
Received: by mail-lf1-x133.google.com with SMTP id
2adb3069b0e04-5942e61f001so2484372e87.1
for <79417 <at> debbugs.gnu.org>; Mon, 10 Nov 2025 00:59:05 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1762765137; x=1763369937; darn=debbugs.gnu.org;
h=cc:to:subject:message-id:date:mime-version:references:in-reply-to
:from:from:to:cc:subject:date:message-id:reply-to;
bh=hNuaoXKDqam2AfRoTxno0mRTKN37dQPDRY8JI8aLIBE=;
b=gM8YlJ3yb6pnqeYW/7c/K8fE4zD7ydxpupfZNsRdJa5ldfaNQq19nKKS6QHkoAl4Rj
l3yFCHttoOOpljFBNbokcPldVVzKzYhGnsNDyUIfjIlF74+SCbaRiPgbVWPeomcGBZnn
RAmJEsVZuLFdv9uLjXAlTAOGNKToHIvtmcS6+EGtRR1VKaGDtmB7KW7cL54jMSy99frj
e0FwrGupS0f4c+qwZIDLZm0TZRIG3TFhGKQ5fwOttsHzhSOPDte9uEd0Q+HbGKlnKzQs
jw6YT68wOWmDxUCssF1+DWCkhkY19WPIJah+MeZNS3j4Vf+ToY6qG5DeEBhIUS+mi+Ey
+iKQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1762765137; x=1763369937;
h=cc:to:subject:message-id:date:mime-version:references:in-reply-to
:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id
:reply-to;
bh=hNuaoXKDqam2AfRoTxno0mRTKN37dQPDRY8JI8aLIBE=;
b=iGDbb7dJBEW8HOx8r0wj7YUn5rInFYSOUCx9ril+/912pkaoYr7VDG+cvyYwy8hnKs
+8TX0de/Uo2baBhvLV1xEB+Zj83bE8ZkRXoVbRMMoTXM21AbC4lejtrMKI+0CyYXiebL
LIWub6Oc4kBOJhTRkxH1XUTDwON0LJKe/IPG2jklupIPR0pqWw8RnePsyWLllEFxMmP9
SNkIEAPyxdV6wZA8P61DPTSAg6QMqUKaze5CPb0z8kN9d37Nb9q1YuUUt+Aknse4axTL
X3Zz6Zrw8hpD4QjI496DSO8eYA8O1FuirUtI6vb8s8RGp1yBUbv0kfpFR7ryR7XnLLAQ
6amA==
X-Gm-Message-State: AOJu0Yxch7ETBFnfb9zSdgfyg4wQ/6pxeomhacG/pA5XOM+pGKxfWGFs
0IzMW3TweMWK/iOm7siUlzQad222UrmEmsYSFN/rgLe3LXxOBDzqivS/348+A4f+p7f2/aQi9mo
MD4Y8BbjpiUgerv4g+9rQMr7IP8E1rGZ9Wohc
X-Gm-Gg: ASbGnctS7liuUEgvEqZI8Vvmow9aCZZP1eXi0eP5gjuZ4M3H3XaTis4Jz0xSTRekUW4
6YsYDXvRGcOcyZVNG9+D7125gFV4pzEUSyUSU3EE2wg97bInReWgFmkqfx30R8zIHjAbbmhJlAg
DTxHaCcMMUZetoERdxgHZyadZ2lY5m0ZkSC7jP1FciuyXs1w01M4jeL8Gb/A3buLDghEAW7eVsF
cPzQRNDLxALMAtdxvWGzZU0qYMOZnRob++E/OacN6jKT2FD4enAFIKL2wxQnd8QIZTPgV4=
X-Google-Smtp-Source: AGHT+IEYPuy4YgX/rsjQ/vPkIeJaBaKnJR6PQqgBjYH5/qErUeV4yi4ZXqq27AIgd14PZje9OC3DU2ZfWutW3DpI4bo=
X-Received: by 2002:a05:6512:3d03:b0:594:292f:bbe9 with SMTP id
2adb3069b0e04-5945f1b7403mr1805335e87.36.1762765136413; Mon, 10 Nov 2025
00:58:56 -0800 (PST)
Received: from 753933720722 named unknown by gmailapi.google.com with
HTTPREST; Mon, 10 Nov 2025 03:58:55 -0500
Received: from 753933720722 named unknown by gmailapi.google.com with
HTTPREST; Mon, 10 Nov 2025 03:58:55 -0500
From: Kristoffer Balintona <krisbalintona@HIDDEN>
In-Reply-To: <87cy7xhi2k.fsf@HIDDEN>
References: <87ecsft5qu.fsf@HIDDEN>
<87jz27rpsb.fsf@HIDDEN>
<86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN>
MIME-Version: 1.0
Date: Mon, 10 Nov 2025 03:58:55 -0500
X-Gm-Features: AWmQ_blAZlzHaRO1H-8N9TkSuhVCqVN3BAQDnmqjy74YxV31_Op95AjEnrpgRlE
Message-ID: <CANVbq5mBD2tH6TA_iUuBj0vFXJx=6Ci1nb4Snn9YyJqXQDFHEA@HIDDEN>
Subject: How can we improve built-in spell-checking (ispell and flyspell)?
(was: bug#79417: 31.0.50; Improve ispell.el documentation)
To: Lockywolf <for_emacs_1@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>
Content-Type: text/plain; charset="UTF-8"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79417
Cc: 79417 <at> debbugs.gnu.org, emacs-devel@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
Hello Lockywolf,
Thank you for work on this patch! I am just another Emacs user, but I
would like to chime in to give some feedback on your patch as well as
share my own opinions on the state of spell-checking in Emacs.
Regarding feedback on your patch:
For the most part, I agree with Eli's comments. The various reasons you
had to include specific pieces of information in the manual are, I
think, evidence that the information about ispell is lacking. But like
Eli, I think much of the detailed specifics should be mostly be included
in docstrings and even the ispell file commentary. As I see it, the
Emacs manual is meant to be more like an entry-point or overview of
functionality. So the version we have right now is more-or-less good
enough, I think.
Still: I think most of the information you've put into words should be
included in the form of detailed docstrings. These docstrings will be
visible to users by the typical means: the describe-* commands and
customize-* commands.
Regarding the state of spell-checking in Emacs:
As I understand, a large part of your motivation to assemble this patch
was how convoluted and obtuse ispell is to the newcomer.
You wrote:
> Personally I embarked on the job of implementing ispell.el tests with
> the goal of writing good documentation, because I found the existing
> one insufficient. For years I failed to make ispell.el do what I
> expected a spell-checker module to do.
And I agree. Nearly all my personal learnings about ispell (that weren't
documented at all or were inadequately documented) were included in your
patch.
But I think the solution would not be to document the rough edges of
ispell but to fix/improve them. (Eli somewhat expressed this at points
in his feedback.)
You hit the nail on the head by mentioning how the creation of
third-party packages like jinx[1] and spell-fu[2] --- which completely
reimplement spell-checking in Emacs, as opposed to extending what is
already there --- is proof that users throughout the years have found
the built-in spell-checking lacking.
> As we can see, melpa has several packages essentially duplicating
> ispell.el's (+flyspell) functionality, such as "jinx", or "spell-fu", or
> "flycheck-ispell", largely because people, seemingly, failed to
> understand how to use ispell.el.
These last 2 or 3 years in particular I have noticed that in online
forums like Reddit, users almost only recommend jinx as the
spell-checking package. I almost never hear flyspell recommended over
jinx nowadays in those spaces (where users keep up with new packages),
and I don't recall ever hearing anyone mention ispell...
And it is my opinion that jinx fulfills what most users would expect
from spell-checking out of the box. It is fast, has a UI that integrates
well with other Emacs packages[3], requires zero configuration, and is
easily configured/extended if desired. All users need to know is
jinx-mode and jinx-correct, really. Whatever degree ispell + flyspell
fit that description, I think many new users would say jinx does it
better.[4] (In fact, that we have spell-checking functionality spread
across two packages seems confusing and even unnecessary.) This isn't to
say ispell and flyspell cannot be used in the same ways and for the same
purposes as jinx can, only that jinx appears simpler to weild and more
cleanly written.
These are just my two cents. I would be curious to hear other users of
ispell, flyspell, or jinx chime in, too. I suppose some specific
questions could be:
- How can we improve built-in spell-checking?
- What is lacking from ispell and flyspell?
- What improvements to UI could we take from third-party packages like
jinx?
Footnotes:
[1] https://github.com/minad/jinx
[2] https://codeberg.org/ideasman42/emacs-spell-fu
[3] As far as I know, with respect to spelling correction, flyspell only
has a mouse interface. And ispell implements a custom interface
instead of using completing-read or something like
read-multiple-choice.
[4] Relevantly, I recently came across this GitHub discussion
(https://github.com/minad/jinx/discussions/200) where the author of
ispell's Enchant (the spell checking program) support expressed how
he's recently discovered jinx and liked it enough that the author
of jinx should consider replacing the built-in ispell with it.
On Thu, Sep 11 2025, Lockywolf wrote:
> Eli Zaretskii <eliz@HIDDEN> writes:
>
>> Thanks, but this is too massive an addition for it to be accepted
>> as-is. The "Spelling" node is already 200+ lines long, and your
>> changes add 250 lines more.
>
> Let us adjust it to make it acceptable then!
>
> Personally I embarked on the job of implementing ispell.el tests with
> the goal of writing good documentation, because I found the existing one
> insufficient. For years I failed to make ispell.el do what I expected
> a spell-checker module to do.
>
> As we can see, melpa has several packages essentially duplicating
> ispell.el's (+flyspell) functionality, such as "jinx", or "spell-fu", or
> "flycheck-ispell", largely because people, seemingly, failed to
> understand how to use ispell.el.
>
>>This is too much for these features,
>> which are relatively minor, as Emacs features go.
>
> While the feature itself is not large, it adds a lot of convenience if
> implemented properly and a lot of frustration if it does not do what is
> natural and expected. I also think that alleged simplicity of the
> feature is a mis-perception, because human languages vastly exceed
> formal ones in complexity. Moreover, Emacs is not just used by people
> editing programs, it is also widely used by documentation writers and
> publishers, for whom a customizable and flexible spell-checker is one of
> the first things they are looking for in a text editor.
>
>> Would you agree to make the patch smaller, only mention important
>> features and issues, and describe those as succinctly as possible,
>> leaving the rest to the doc strings of the relevant commands and
>> variables?
>
> I am quite happy to make the patch smaller, as long as it remains being
> easily readable by people opening it while using Emacs for the first
> time. A spell-checker is such a commonplace feature that users are
> often asking for it on the very first day.
>
>> For example, why do we need to expand the documentation of
>> ispell-kill-ispell beyond what it already says?
>
> Firstly, I don think that there should be a need for a public
> ispell-kill-ispell command, so I would be happy to delete this part
> altogether. It should be called ispell--kill-ispell, and only be used
> internally. But, unfortunately, the user, at the moment, needs to be
> aware of it, because in a very common scenario the notification area is
> full with messages "Ispell process killed" and "Starting new Ispell
> process with ... dictionary". The scenario is the following: the user
> has two buffers open, one editing text in language A, another editing
> text in language B, and both have flyspell enabled. This is not just
> confusing, it also noticeably slows down buffer switching. This is
> probably not possible to avoid, because otherwise Emacs would have to
> keep a running spell-checker process per buffer, which is too much, or
> keep a pool of processes for the most recently used buffers, which is
> complicated, but in any case, this is not the only use-case for making
> the user aware of the fact that "some kind of background process is
> running and you might have to kill it manually if something goes wrong".
>
> Of course, it would have been much better if this function could be
> entirely removed from the public interface and the two start/kill
> messages be hidden from *Messages* unless some kind of a debug switch is
> enabled, but doing that is hard, and having one paragraph in the manual
> clariflying the issue seems like a small price to pay.
>
>> And why do we need to
>> describe how and in which directories to install dictionaries --
>> people should either a distro or, if they know what they are doing,
>> install the dictionaries themselves using the documentation provided
>> with the speller;
>
> Because dictionaries are given to the user as completions in the
> M-x change-ispell-dictionary command, which takes them from the
> ispell-dictionary-base-alist variable, which contains dictionaries which
> are not installed. This leads to a very confusing behaviour: the user is
> suggested to use, say, a "british" dictionary, whereas, in fact such
> a dicionary does not exist, and ispell.el generates errors. The
> situation becomes even more confusing, because other engines might
> actually have the "british" dictionary, so setting "british" with
> International Ispell works (because it is in the
> ispell-dictionary-base-alist) while using it fails, but with aspell
> setting the "british" dictionary fails (because there is no such
> dictionary in "aspell dicts") while actually using it (setf
> ispell-dictionary "british" without ispell-change-dictionary) works,
> because aspell is smart enough choose an english dictionary when called
> like "aspell -d british -a".
>
> Dictionary choice is a huge source of confusion, that is why I spend so
> much text explaining it.
>
>>we don't want to track changes in those
>> installations and update our manual each time they change.
>
> We are already doing that with the variable
> ispell-dictionary-base-alist, and the other code to get dictionary lists
> from the backends. And, of course, it is de-synchronised with the
> upsteam of the spell-checker programs. In my experience, explaining it
> in the manual with a necessary warning "things may change, examine the
> spell-checker documentation" is better than trying to be overly too
> smart in the code. After all, if the user just gives us the path to the
> correct dictionary, and we have to avoid extracting that info from the
> backends, it reduces the amount of heuristics in our code and makes
> things simpler. The user is doing it just once, and we have to ensure
> and test the work of ispell.el in various environments and different
> circumstances.
>
>> Or why
>> expand the description of local and personal dictionaries so much --
>> does the existing text lack some important information?
>
> Yes. When I was reading it the first time, I thought that
> "ispell-dictionary" is the dictionary shipped by the OS vendor, and the
> "ispell-personal-dictionary" is the dictionary I have to purchase
> elsewhere. For example, ispell-dictionary would be the systemwide
> English, and ispell-personal-dictionary would be the dictionary for
> Russian I could buy from, say, Abbyy or PROMT.
>
> In fact, ispell-personal-dictionary is not even a dictionary, it is a
> wordlist.
>
> It is also not immediately obvious whether it is better to have a
> personal dictionary per language (or per the spell-checking program), or
> the same personal dictionary for all dictionaries (or spell-checking
> programs).
>
> Moreover, the information about "Local Words" as a great alternative to
> a personal dictionary is entirely missing from the manual.
>
>> Same question
>> about selecting dictionaries for non-default languages.
>
> This is very important. Firstly, the information about the "Local
> IspellDict:" keyword is entirely missing from the present manual, even
> though it is a very useful tool.
>
> There is a huge confusion with the local dictionary variable.
>
> When both ispell-dictionary and ispell-local-dictionary are nil, ispell
> would use the so-called "default" dictionary, that is call the
> spell-checker program without the "-d" switch, which is fine in many
> cases.
>
> Now assume your ispell-dictionary is fr_FR, and your
> ispell-local-dictionary is ru_RU, and you call M-x
> ispell-change-dictionary RET nil RET.
>
> You would expect that ispell be called with a "default" dictionary,
> without -d switch, but, in fact, the opposite happens, ispell is called
> with -d fr_FR.
>
> This issue would not have appeared if ispell-dictionary would just
> become buffer-local when set, but this is not the case.
>
> The original design of ispell.el expects this issue to be solved by the
> "Local IspellDict: " keyword most of the time, but the information about
> it is missing from the manual.
>
>> Or why
>> describe the Ispell faces in the manual?
>
> Well, I added it because flyspell-mode changes the ispell.el highlight
> face from default "isearch" to "flyspell-error". This is
> hugely confusing, and I wanted to explain to the readers why this
> happens. And documenting this behaviour for flyspell-mode, I found
> myself referring to ispell-highlight-face, therefore needing to document
> it as well.
>
> If this behaviour is removed, ispell-highlight-face and flyspell-error
> become completely disjoint, this elaboration is unnecessary and can be
> removed.
>
>> Or the complete new section
>> about word-completion using ispell -- is that really so important to
>> warrant so much text?
>
> Yes, it is very important.
>
> At the moment, ispell.el has five dictionary defcustoms:
> ispell-dictionary, ispell-local-dictionary, ispell-personal-dictionary,
> ispell-complete-word-dict, and ispell-alternate-dictionary, and asome of
> them can become buffer-local.
>
> This is VERY confusing for a user, and deserves a thorough explanation.
>
> Completion functionality, while itself being very simple, appears in a
> lot of places: in the ispell menu, in CAPF functions, in
> hippie-expansion, and various third-party packages, such as
> company-mode, various completion frameworks, which are too numerous to
> enumerate.
>
> So, suppose, in the simplest default case, I am editing a file written
> in French, and invoke some completion command: my word is completed in
> Spanish. Bah! I made a mistake, my ispell-complete-word-dict is set to a
> Spanish wordlist. I run (setq-local ispell-complete-word-dict nil), and
> retry completion. Ah, what is going on, my word is completed in English,
> because ispell-alternate-dictionary is pointing to the Webster
> /usr/share/dict/words, which I didn't even know existed.
>
> It is better to be safe than sorry and to tell the user precisely what
> is going on.
>
>> And I'm not sure I understand the need for so much reshuffling of the
>> existing text. Perhaps if we don't extend existing descriptions so
>> much, the need to move the text around so much will also disappear?
>
> The current narrative of the manual starts from a seldom-expected
> nowadays feature of querying the backend to correct a word. This is not
> what most people expect from a spell-checking tool in 2025. First and
> foremost people expect to have their typos highlighted. Most people
> never even use the corrective feature, preferring to re-write the word
> themselves instead.
>
> However, using (asynchronous) flyspell-mode in Emacs is impossible
> without understanding the logic of synchronous spell-checking of
> ispell.el.
>
> Therefore, I tried to re-structure the narrative of the section in a
> layered way: more advanced features, building on top of simpler
> features, come later.
>
> Hence, the structure is the following:
>
> 1. Set up the engine. This is impossible to avoid, for any of the
> use-cases covered by the section. This section is short.
> 2. Set up the dictionaries. This is extremely confusing, and without
> properly set up dictionaries nothing else works, so it is better to give
> this subsubsection to the user first, while they is not yet tired and
> capable of reading attentively.
> 2a. In fact, the user may already stop here, if they are using some
> other front-end, not flyspell-mode or ispell.el's interactive features.
> 3. Proofreading section describes the actual paradigm of working with
> UNIX spellcheckers as backends. Of course it requires the engine and the
> dictionary to be configured correctly, but does not require
> flyspell-mode, hence comes earlier. It is also quite in handy to the
> users of flyspell, because, even though flyspell-mode has its own
> correction features, those open a GUI menu, which are not that
> convenient to use, so I suspect that most people would still use M-$ to
> open the ispell.el's corrections buffer, so it is better to introduce it
> earlier.
> 4. The Completion section describes a part of ispell.el, but is not as
> important as the Proofreading part, and hence comes later as it is a
> dedicated subsubsection, it can be skipped, and the user can go to the
> flyspell-mode directly.
> 5. Flyspell-mode is the most high-level layer, with asynchronous process
> running, and GUI menus involved, hence comes last.
>
> Now that I am writing it, I am realising that the Prooofreading
> functionality calls the Completion functionality (the "l" key in the
> interactive buffer), but not the other way round. It might be better to
> make the Completion subsubsection to come earlier.
>
>> I also don't like using @subsections that have no nodes: they make the
>> manual harder to navigate. If we must introduce new subsections,
>> let's make each one of them a separate node.
>
> No problem. New patch attached (nodes added, but faces not yet removed).
> [... 647 lines elided]
--
Kind regards,
Kristoffer
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 11 Sep 2025 06:05:59 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Sep 11 02:05:59 2025 Received: from localhost ([127.0.0.1]:41817 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uwaRR-0008Tm-NI for submit <at> debbugs.gnu.org; Thu, 11 Sep 2025 02:05:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50732) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1uwaRP-0008TO-0K for 79417 <at> debbugs.gnu.org; Thu, 11 Sep 2025 02:05:56 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1uwaRJ-00011z-4E; Thu, 11 Sep 2025 02:05:49 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=HE+8U5fjuxVqq+XGcNVaXJpvw91OOvgXexaNoUdfvfQ=; b=Bs3jgfXjpfyu LT/Xe3qihMCFF0IF6gsG/WdR6OfzS/uFv1rhZneIbD3cJqdsIYkesg/eLkglCzhFQ0CT6NJsj+yrD xYptmqXi+1niAAUV8W1/62xVp24TeXLYAEvXfyA05Xu3jXXAFcbJAwXOLTci1+rC2VrryCJN8rkVW blloJS7yzMH4QcH8edarv35V3M0b3lVuSG90gW+EkgC6R9LbrqnUPr09+1WOFlKwBjwfLX40QjyIu MIq6N1XUqUQxYJgbc4qnwdcXqqp74I7tAQ2e+JvZzEgO/8eXwyHuTfxOiooSWZ3ocCU1zyiwFm4vh xNwHaZ5dN/dxN5FgH1kQ1g==; Date: Thu, 11 Sep 2025 09:05:13 +0300 Message-Id: <86a531v812.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Lockywolf <for_emacs_1@HIDDEN> In-Reply-To: <87cy7xhi2k.fsf@HIDDEN> (message from Lockywolf on Thu, 11 Sep 2025 09:52:03 +0800) Subject: Re: bug#79417: 31.0.50; Improve ispell.el documentation References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN> <87cy7xhi2k.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79417 Cc: 79417 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Lockywolf <for_emacs_1@HIDDEN> > Cc: Lockywolf <for_emacs_1@HIDDEN>, 79417 <at> debbugs.gnu.org > Date: Thu, 11 Sep 2025 09:52:03 +0800 > > > For example, why do we need to expand the documentation of > > ispell-kill-ispell beyond what it already says? > > Firstly, I don think that there should be a need for a public > ispell-kill-ispell command, so I would be happy to delete this part > altogether. It should be called ispell--kill-ispell, and only be used > internally. But, unfortunately, the user, at the moment, needs to be > aware of it, because in a very common scenario the notification area is > full with messages "Ispell process killed" and "Starting new Ispell > process with ... dictionary". The scenario is the following: the user > has two buffers open, one editing text in language A, another editing > text in language B, and both have flyspell enabled. This is not just > confusing, it also noticeably slows down buffer switching. This is > probably not possible to avoid, because otherwise Emacs would have to > keep a running spell-checker process per buffer, which is too much, or > keep a pool of processes for the most recently used buffers, which is > complicated, but in any case, this is not the only use-case for making > the user aware of the fact that "some kind of background process is > running and you might have to kill it manually if something goes wrong". > > Of course, it would have been much better if this function could be > entirely removed from the public interface and the two start/kill > messages be hidden from *Messages* unless some kind of a debug switch is > enabled, but doing that is hard, and having one paragraph in the manual > clariflying the issue seems like a small price to pay. If the problem is the messages emitted by ispell-kill-ispell, we could make it do its job silently when invoked non-interactively. Would that solve the problem, and allow us to leave the description of ispell-kill-ispell in the manual alone? (We cannot easily remove or rename what has been an interactive command for so long, but if the problem is the messages, I don't think removal or renaming is necessary.) We could also make ispell-change-dictionary be silent when invoked non-interactively, although in this case I'd think the message is useful (so maybe we should have a user option to disable it, for those who are annoyed). IOW, this doesn't sound like a documentation problem. > > And why do we need to > > describe how and in which directories to install dictionaries -- > > people should either a distro or, if they know what they are doing, > > install the dictionaries themselves using the documentation provided > > with the speller; > > Because dictionaries are given to the user as completions in the > M-x change-ispell-dictionary command, which takes them from the > ispell-dictionary-base-alist variable, which contains dictionaries which > are not installed. This leads to a very confusing behaviour: the user is > suggested to use, say, a "british" dictionary, whereas, in fact such > a dicionary does not exist, and ispell.el generates errors. If that is the problem, let's change ispell-change-dictionary not to suggest dictionaries that aren't installed, or show something like "(not installed)" after dictionaries that are not installed. This is not a documentation problem, either. > Dictionary choice is a huge source of confusion, that is why I spend so > much text explaining it. If our commands cause confusion, we should fix those commands, not explain their confusing operation. > >we don't want to track changes in those > > installations and update our manual each time they change. > > We are already doing that with the variable > ispell-dictionary-base-alist, and the other code to get dictionary lists > from the backends. With any backend but Ispell, ispell-dictionary-base-alist is filled by querying the speller. This is exactly what we should do, and it doesn't entail stating the results in the manual. The speller will always correctly tell Emacs what are the dictionaries, so asking it doesn't add any maintenance burden for us. Having the directories in the manual _is_ a maintenance burden, and I'd like to avoid it. If we can do something similar with the recent versions of Ispell, let's do it (in the code). In any case, concluding from this that we need to describe in the manual the directories where dictionaries are installed is IMO wrong. > And, of course, it is de-synchronised with the > upsteam of the spell-checker programs. In my experience, explaining it > in the manual with a necessary warning "things may change, examine the > spell-checker documentation" is better than trying to be overly too > smart in the code. After all, if the user just gives us the path to the > correct dictionary, and we have to avoid extracting that info from the > backends, it reduces the amount of heuristics in our code and makes > things simpler. The user is doing it just once, and we have to ensure > and test the work of ispell.el in various environments and different > circumstances. Users should not need to specify the directories where dictionaries are installed, they should only specify the name of the dictionary to use. The code in ispell.el should be able to find the directory. AFAIK, with all the backends except Ispell, it already does so; if there are problems with that, let's fix the code to eliminate those problems. > > Or why > > expand the description of local and personal dictionaries so much -- > > does the existing text lack some important information? > > Yes. When I was reading it the first time, I thought that > "ispell-dictionary" is the dictionary shipped by the OS vendor, and the > "ispell-personal-dictionary" is the dictionary I have to purchase > elsewhere. For example, ispell-dictionary would be the systemwide > English, and ispell-personal-dictionary would be the dictionary for > Russian I could buy from, say, Abbyy or PROMT. Maybe we should just say that the personal dictionary adds the user's personal words to the standard dictionary. Would that be sufficient? We could say that in the doc string of ispell-personal-dictionary. > In fact, ispell-personal-dictionary is not even a dictionary, it is a > wordlist. This is an implementation detail, not really relevant to users. We don't (and shouldn't) explain how the standard dictionary is implemented, so neither should we explain how personal dictionaries are implemented. > It is also not immediately obvious whether it is better to have a > personal dictionary per language (or per the spell-checking program), or > the same personal dictionary for all dictionaries (or spell-checking > programs). The default is spell-checker dependent, AFAIK. Hunspell, for example, creates a personal dictionary for each language. If necessary for people who customize this option, we can recommend in the doc string to use separate values for different languages (although this is not convenient if one changes languages frequently, and thus best left to the backend). In any case, it should be enough to document this in the doc string. > Moreover, the information about "Local Words" as a great alternative to > a personal dictionary is entirely missing from the manual. We could add that, but the description should be much shorter. All that's needed is a mention of the local variable and its usage by ispell.e. > > Same question > > about selecting dictionaries for non-default languages. > > This is very important. Firstly, the information about the "Local > IspellDict:" keyword is entirely missing from the present manual, even > though it is a very useful tool. Again, a single sentence should be enough. > There is a huge confusion with the local dictionary variable. > > When both ispell-dictionary and ispell-local-dictionary are nil, ispell > would use the so-called "default" dictionary, that is call the > spell-checker program without the "-d" switch, which is fine in many > cases. > > Now assume your ispell-dictionary is fr_FR, and your > ispell-local-dictionary is ru_RU, and you call M-x > ispell-change-dictionary RET nil RET. It doesn't make much sense to do this, but again, the place to document what this special case does is in the doc string, not in the manual. FWIW, I spell-check in several languages, but never invoke ispell-change-dictionary with the argument of nil. > > Or why > > describe the Ispell faces in the manual? > > Well, I added it because flyspell-mode changes the ispell.el highlight > face from default "isearch" to "flyspell-error". This is > hugely confusing, and I wanted to explain to the readers why this > happens. And documenting this behaviour for flyspell-mode, I found > myself referring to ispell-highlight-face, therefore needing to document > it as well. I see no reason to have this in the manual. Not everything that has relevance to spell-checking must be in the manual: we have other documentation facilities in Emacs that can and should be used by someone who studies the spell-checking capabilities. > If this behaviour is removed, ispell-highlight-face and flyspell-error > become completely disjoint, this elaboration is unnecessary and can be > removed. They can be found by apropos commands and customize-group. We do this with most (all?) of the other faces. > > Or the complete new section > > about word-completion using ispell -- is that really so important to > > warrant so much text? > > Yes, it is very important. > > At the moment, ispell.el has five dictionary defcustoms: > ispell-dictionary, ispell-local-dictionary, ispell-personal-dictionary, > ispell-complete-word-dict, and ispell-alternate-dictionary, and asome of > them can become buffer-local. > > This is VERY confusing for a user, and deserves a thorough explanation. Why is that confusing? If their doc strings do a poor job, let's improve those doc strings. > Completion functionality, while itself being very simple, appears in a > lot of places: in the ispell menu, in CAPF functions, in > hippie-expansion, and various third-party packages, such as > company-mode, various completion frameworks, which are too numerous to > enumerate. > > So, suppose, in the simplest default case, I am editing a file written > in French, and invoke some completion command: my word is completed in > Spanish. Bah! I made a mistake, my ispell-complete-word-dict is set to a > Spanish wordlist. I run (setq-local ispell-complete-word-dict nil), and > retry completion. Ah, what is going on, my word is completed in English, > because ispell-alternate-dictionary is pointing to the Webster > /usr/share/dict/words, which I didn't even know existed. > > It is better to be safe than sorry and to tell the user precisely what > is going on. Let's first see how the related doc strings can be improved, and take it from there. I'm not yet convinced we need to dedicate so much text to word completion. The completion command(s) (which you didn't name in the above, btw) should tell in their doc strings which dictionaries and word lists they use, and in what order. If they don't, let's first improve that, instead of putting that burden on the manual. > > I also don't like using @subsections that have no nodes: they make the > > manual harder to navigate. If we must introduce new subsections, > > let's make each one of them a separate node. > > No problem. New patch attached (nodes added, but faces not yet removed). I suggest first to discuss an agree on what should and shouldn't be in the manual, and what should be fixed in other places (code and doc strings). Only after we have an agreement, it would make sense to post a patch according to the agreements. Thanks.
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.
Received: (at 79417) by debbugs.gnu.org; 11 Sep 2025 01:52:53 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Sep 10 21:52:53 2025
Received: from localhost ([127.0.0.1]:41205 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uwWUT-0006nA-PA
for submit <at> debbugs.gnu.org; Wed, 10 Sep 2025 21:52:53 -0400
Received: from coconut.lockywolf.net ([213.165.252.157]:37246)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <for_emacs_1@HIDDEN>)
id 1uwWUE-0006mg-Me
for 79417 <at> debbugs.gnu.org; Wed, 10 Sep 2025 21:52:44 -0400
Received: from laptop.lockywolf.net (unknown
[IPv6:2408:824e:d2e:8ed0:3cf7:f217:ceff:d8a4])
by coconut.lockywolf.net (Postfix) with ESMTPSA id E171E38BF9;
Thu, 11 Sep 2025 09:52:30 +0800 (CST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=lockywolf.net;
s=2024-10-06; t=1757555553;
bh=zAjAXO9hHLyGfJRVVhDqfFx5x/OL3pW4pcqZBaY42YI=;
h=From:To:Cc:Subject:In-Reply-To:References:Date;
b=AY6b0G9XJ96R62Ayd+QqyqujTTfYIjFltNNRj2IIgvVMuW03h91kU3LZX0S5ZH+O9
UIPHAmbAVPAVhMXPG16DdYXSwRTnGOCBn0t2YwU2N82/AW8kpbRG4+YLxdM0UY/TTA
5X7KH3MuPwR9xwDbxNkaww6bWZZp/C6onOPzj0RlxOOZuXKUrGYiARS/YWJMG47m8W
TC4VjRNLPjHVVAa6WymWZRXOlS7qTvgALT/c7wR6UwOuwCojhn2DbCJPHAXhgoDIrG
R+hTEMYBGCyE/ok1izAoVnHPFOgUj/Ag3CM8C+DfovpUaeZebwvFFW8odlpU49kgQ1
ZTI10U0KPUySA==
From: Lockywolf <for_emacs_1@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#79417: 31.0.50; Improve ispell.el documentation
In-Reply-To: <86ikhqbfrt.fsf@HIDDEN>
References: <87ecsft5qu.fsf@HIDDEN>
<87jz27rpsb.fsf@HIDDEN> <86ikhqbfrt.fsf@HIDDEN>
User-Agent: mu4e 1.12.9; emacs 31.0.50
Date: Thu, 11 Sep 2025 09:52:03 +0800
Message-ID: <87cy7xhi2k.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79417
Cc: 79417 <at> debbugs.gnu.org, Lockywolf <for_emacs_1@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
--=-=-=
Content-Type: multipart/signed; boundary="==-=-=";
micalg=pgp-sha256; protocol="application/pgp-signature"
--==-=-=
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable
Eli Zaretskii <eliz@HIDDEN> writes:
> Thanks, but this is too massive an addition for it to be accepted
> as-is. The "Spelling" node is already 200+ lines long, and your
> changes add 250 lines more.
Let us adjust it to make it acceptable then!
Personally I embarked on the job of implementing ispell.el tests with
the goal of writing good documentation, because I found the existing one
insufficient. For years I failed to make ispell.el do what I expected
a spell-checker module to do.
As we can see, melpa has several packages essentially duplicating
ispell.el's (+flyspell) functionality, such as "jinx", or "spell-fu", or
"flycheck-ispell", largely because people, seemingly, failed to
understand how to use ispell.el.
>This is too much for these features,
> which are relatively minor, as Emacs features go.
While the feature itself is not large, it adds a lot of convenience if
implemented properly and a lot of frustration if it does not do what is
natural and expected. I also think that alleged simplicity of the
feature is a mis-perception, because human languages vastly exceed
formal ones in complexity. Moreover, Emacs is not just used by people
editing programs, it is also widely used by documentation writers and
publishers, for whom a customizable and flexible spell-checker is one of
the first things they are looking for in a text editor.
> Would you agree to make the patch smaller, only mention important
> features and issues, and describe those as succinctly as possible,
> leaving the rest to the doc strings of the relevant commands and
> variables?
I am quite happy to make the patch smaller, as long as it remains being
easily readable by people opening it while using Emacs for the first
time. A spell-checker is such a commonplace feature that users are
often asking for it on the very first day.
> For example, why do we need to expand the documentation of
> ispell-kill-ispell beyond what it already says?
Firstly, I don think that there should be a need for a public
ispell-kill-ispell command, so I would be happy to delete this part
altogether. It should be called ispell--kill-ispell, and only be used
internally. But, unfortunately, the user, at the moment, needs to be
aware of it, because in a very common scenario the notification area is
full with messages "Ispell process killed" and "Starting new Ispell
process with ... dictionary". The scenario is the following: the user
has two buffers open, one editing text in language A, another editing
text in language B, and both have flyspell enabled. This is not just
confusing, it also noticeably slows down buffer switching. This is
probably not possible to avoid, because otherwise Emacs would have to
keep a running spell-checker process per buffer, which is too much, or
keep a pool of processes for the most recently used buffers, which is
complicated, but in any case, this is not the only use-case for making
the user aware of the fact that "some kind of background process is
running and you might have to kill it manually if something goes wrong".
Of course, it would have been much better if this function could be
entirely removed from the public interface and the two start/kill
messages be hidden from *Messages* unless some kind of a debug switch is
enabled, but doing that is hard, and having one paragraph in the manual
clariflying the issue seems like a small price to pay.
> And why do we need to
> describe how and in which directories to install dictionaries --
> people should either a distro or, if they know what they are doing,
> install the dictionaries themselves using the documentation provided
> with the speller;=20
Because dictionaries are given to the user as completions in the
M-x change-ispell-dictionary command, which takes them from the
ispell-dictionary-base-alist variable, which contains dictionaries which
are not installed. This leads to a very confusing behaviour: the user is
suggested to use, say, a "british" dictionary, whereas, in fact such
a dicionary does not exist, and ispell.el generates errors. The
situation becomes even more confusing, because other engines might
actually have the "british" dictionary, so setting "british" with
International Ispell works (because it is in the
ispell-dictionary-base-alist) while using it fails, but with aspell
setting the "british" dictionary fails (because there is no such
dictionary in "aspell dicts") while actually using it (setf
ispell-dictionary "british" without ispell-change-dictionary) works,
because aspell is smart enough choose an english dictionary when called
like "aspell -d british -a".
Dictionary choice is a huge source of confusion, that is why I spend so
much text explaining it.
>we don't want to track changes in those
> installations and update our manual each time they change.
We are already doing that with the variable
ispell-dictionary-base-alist, and the other code to get dictionary lists
from the backends. And, of course, it is de-synchronised with the
upsteam of the spell-checker programs. In my experience, explaining it
in the manual with a necessary warning "things may change, examine the
spell-checker documentation" is better than trying to be overly too
smart in the code. After all, if the user just gives us the path to the
correct dictionary, and we have to avoid extracting that info from the
backends, it reduces the amount of heuristics in our code and makes
things simpler. The user is doing it just once, and we have to ensure
and test the work of ispell.el in various environments and different
circumstances.
> Or why
> expand the description of local and personal dictionaries so much --
> does the existing text lack some important information?
Yes. When I was reading it the first time, I thought that
"ispell-dictionary" is the dictionary shipped by the OS vendor, and the
"ispell-personal-dictionary" is the dictionary I have to purchase
elsewhere. For example, ispell-dictionary would be the systemwide
English, and ispell-personal-dictionary would be the dictionary for
Russian I could buy from, say, Abbyy or PROMT.
In fact, ispell-personal-dictionary is not even a dictionary, it is a
wordlist.
It is also not immediately obvious whether it is better to have a
personal dictionary per language (or per the spell-checking program), or
the same personal dictionary for all dictionaries (or spell-checking
programs).
Moreover, the information about "Local Words" as a great alternative to
a personal dictionary is entirely missing from the manual.
> Same question
> about selecting dictionaries for non-default languages.
This is very important. Firstly, the information about the "Local
IspellDict:" keyword is entirely missing from the present manual, even
though it is a very useful tool.
There is a huge confusion with the local dictionary variable.
When both ispell-dictionary and ispell-local-dictionary are nil, ispell
would use the so-called "default" dictionary, that is call the
spell-checker program without the "-d" switch, which is fine in many
cases.
Now assume your ispell-dictionary is fr_FR, and your
ispell-local-dictionary is ru_RU, and you call M-x
ispell-change-dictionary RET nil RET.
You would expect that ispell be called with a "default" dictionary,
without -d switch, but, in fact, the opposite happens, ispell is called
with -d fr_FR.
This issue would not have appeared if ispell-dictionary would just
become buffer-local when set, but this is not the case.
The original design of ispell.el expects this issue to be solved by the
"Local IspellDict: " keyword most of the time, but the information about
it is missing from the manual.
> Or why
> describe the Ispell faces in the manual?
Well, I added it because flyspell-mode changes the ispell.el highlight
face from default "isearch" to "flyspell-error". This is
hugely confusing, and I wanted to explain to the readers why this
happens. And documenting this behaviour for flyspell-mode, I found
myself referring to ispell-highlight-face, therefore needing to document
it as well.
If this behaviour is removed, ispell-highlight-face and flyspell-error
become completely disjoint, this elaboration is unnecessary and can be
removed.
> Or the complete new section
> about word-completion using ispell -- is that really so important to
> warrant so much text?
Yes, it is very important.
At the moment, ispell.el has five dictionary defcustoms:
ispell-dictionary, ispell-local-dictionary, ispell-personal-dictionary,
ispell-complete-word-dict, and ispell-alternate-dictionary, and asome of
them can become buffer-local.
This is VERY confusing for a user, and deserves a thorough explanation.
Completion functionality, while itself being very simple, appears in a
lot of places: in the ispell menu, in CAPF functions, in
hippie-expansion, and various third-party packages, such as
company-mode, various completion frameworks, which are too numerous to
enumerate.
So, suppose, in the simplest default case, I am editing a file written
in French, and invoke some completion command: my word is completed in
Spanish. Bah! I made a mistake, my ispell-complete-word-dict is set to a
Spanish wordlist. I run (setq-local ispell-complete-word-dict nil), and
retry completion. Ah, what is going on, my word is completed in English,
because ispell-alternate-dictionary is pointing to the Webster
/usr/share/dict/words, which I didn't even know existed.
It is better to be safe than sorry and to tell the user precisely what
is going on.
> And I'm not sure I understand the need for so much reshuffling of the
> existing text. Perhaps if we don't extend existing descriptions so
> much, the need to move the text around so much will also disappear?
The current narrative of the manual starts from a seldom-expected
nowadays feature of querying the backend to correct a word. This is not
what most people expect from a spell-checking tool in 2025. First and
foremost people expect to have their typos highlighted. Most people
never even use the corrective feature, preferring to re-write the word
themselves instead.
However, using (asynchronous) flyspell-mode in Emacs is impossible
without understanding the logic of synchronous spell-checking of
ispell.el.
Therefore, I tried to re-structure the narrative of the section in a
layered way: more advanced features, building on top of simpler
features, come later.
Hence, the structure is the following:
1. Set up the engine. This is impossible to avoid, for any of the
use-cases covered by the section. This section is short.
2. Set up the dictionaries. This is extremely confusing, and without
properly set up dictionaries nothing else works, so it is better to give
this subsubsection to the user first, while they is not yet tired and
capable of reading attentively.
2a. In fact, the user may already stop here, if they are using some
other front-end, not flyspell-mode or ispell.el's interactive features.
3. Proofreading section describes the actual paradigm of working with
UNIX spellcheckers as backends. Of course it requires the engine and the
dictionary to be configured correctly, but does not require
flyspell-mode, hence comes earlier. It is also quite in handy to the
users of flyspell, because, even though flyspell-mode has its own
correction features, those open a GUI menu, which are not that
convenient to use, so I suspect that most people would still use M-$ to
open the ispell.el's corrections buffer, so it is better to introduce it
earlier.
4. The Completion section describes a part of ispell.el, but is not as
important as the Proofreading part, and hence comes later as it is a
dedicated subsubsection, it can be skipped, and the user can go to the
flyspell-mode directly.
5. Flyspell-mode is the most high-level layer, with asynchronous process
running, and GUI menus involved, hence comes last.
Now that I am writing it, I am realising that the Prooofreading
functionality calls the Completion functionality (the "l" key in the
interactive buffer), but not the other way round. It might be better to
make the Completion subsubsection to come earlier.
> I also don't like using @subsections that have no nodes: they make the
> manual harder to navigate. If we must introduce new subsections,
> let's make each one of them a separate node.
No problem. New patch attached (nodes added, but faces not yet removed).
--==-=-=
Content-Type: application/pgp-signature; name="signature.asc"
-----BEGIN PGP SIGNATURE-----
iHUEARYIAB0WIQSWBebxCAoqaJP8N/j71sGyD+xtqgUCaMIrWQAKCRD71sGyD+xt
qjHTAQCgJs4/wL+a3wAMDmvPOqsgS/T8wQU/0lG8B4U2aZ3NsQEA3l5TufIEsiFQ
WixzY0sJ1pcDrL1AIj6iq1NotwvEjwc=
=+7pK
-----END PGP SIGNATURE-----
--==-=-=--
--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
filename=0001-Improve-ispell-mode-and-flyspell-mode-documentation.patch
From 59085ac9abb11809cb17ac70aba53d5cda6dd418 Mon Sep 17 00:00:00 2001
From: Lockywolf <for_emacs_1@HIDDEN>
Date: Wed, 10 Sep 2025 10:05:31 +0800
Subject: [PATCH] Improve ispell-mode and flyspell-mode documentation.
* doc/emacs/fixit.texi (Checking and Correcting Spelling):
1. Fix documentation errors for various ispell-* functions.
2. Document ispell-minor-mode
3. Document ispell word completion functionality
4. Document LocalWords syntax
5. Expand dictionary selection documentation
---
doc/emacs/fixit.texi | 473 ++++++++++++++++++++++++++++++++++---------
1 file changed, 373 insertions(+), 100 deletions(-)
diff --git a/doc/emacs/fixit.texi b/doc/emacs/fixit.texi
index f240057aa69..924075f4a60 100644
--- a/doc/emacs/fixit.texi
+++ b/doc/emacs/fixit.texi
@@ -263,20 +263,224 @@ Spelling
@xref{Top, Aspell,, aspell, The Aspell Manual}.
@end ifnottex
+Note, however, that this section will only help you fix spelling errors,
+not grammatical or punctuation errors.
+
@vindex ispell-program-name
+@defvar ispell-program-name
+Choose the default spell-checking program by customizing this variable.
+@end defvar
If you have only one of the spelling checker programs installed,
Emacs will find it when you invoke for the first time one of the
commands described here. If you have more than one of them installed,
you can control which one is used by customizing the variable
-@code{ispell-program-name}.
+@code{ispell-program-name} or adding the following line into your init
+file: @code{(setopt ispell-program-name "hunspell")}.
+
+@cindex @code{ispell} program
+@findex ispell-kill-ispell
+@deffn Command ispell-kill-ispell
+Kill the spell-checker subprocess.
+@end deffn
+
+Once started, the spell-checker subprocess continues
+to run, waiting for something to do, so that subsequent spell-checking
+commands complete more quickly. If you want to get rid of the
+process, use @w{@kbd{M-x ispell-kill-ispell}}. This is not usually
+necessary, since the process uses no processor time except when you do
+spelling correction, but might come in handy when the process is used
+for the purposes other than interactive spell-checking by externally
+installed packages.
+
+Note that if you use Flyspell-mode for on-the-fly spell-checking
+@pxref{flyspell-mode}, and you frequently switch between buffers using
+different spell-checking dictionaries, the spell-checking program will
+be restarted on each buffer switch, which might be slowing down Emacs if
+creating new processes is expensive on your Operating System.
+
+@node Dictionary Selection
+@subsection Spelling Dictionary Selection
+@cindex spell-checking dictionary
+
+In addition to having the spell checker program installed it is also
+important to have spellchecking dictionaries matching the language and
+orthography of your preferred writing installed system-wide. You can
+check if a dictionary supporting the language you need to have checked
+is present by examining the contents of the library directories, usually
+printed by the commands in the left column in the following table. The
+typical values for GNU/Linux are shown in the right column.
+@table @samp
+@item @code{ispell -vv}
+@code{/usr/lib64/ispell}
+@item @code{aspell config}
+@code{/usr/lib64/aspell/}
+@item Hunspell
+@code{/usr/share/hunspell/}
+@item Enchant
+Uses dictionaries from either Aspell or Hunspell.
+@end table
+Dictionaries typically consist of two files, one @code{.aff} file with
+the grammar, and one @code{.hash} or @code{.dict} with the dictionary.
+
+ Spell-checkers look up spelling in two dictionaries: @emph{the dictionary
+installed together with the spell-checker program} (or as a system
+add-on) and your @emph{personal dictionary}, which is usually empty when you
+have not been using spell-checking for a long time.
+
+@cindex spell-checking different languages
+@cindex language for spell-checking
+ Usually, a dictionary used by a spell-checker is for a specific
+language. The default language is determined from your system's
+environment and locale. Both the standard dictionary and your personal
+dictionary should be changed if you want to spell-check text in a
+different language. You can use the @code{ispell-change-dictionary}
+command for that.
+
+@vindex ispell-dictionary
+@vindex ispell-local-dictionary
+@findex ispell-change-dictionary
+@defopt ispell-dictionary
+@defoptx ispell-local-dictionary
+The value of this variables shows the current selected spell-checking
+dictionary.
+@end defopt
+@deffn Command ispell-change-dictionary dictionary &optional globalp
+Change the spell-checking dictionary (language) for the current buffer.
+With a prefix argument change it globally instead.
+@end deffn
+
+ The system-wide dictionary (language) used by the spell-checker is
+chosen by using the command @w{@kbd{M-x ispell-change-dictionary}}.
+When called with a prefix argument or, in the lisp code, with
+@code{(ispell-change-dictionary "en_UK" t)}, it sets the value of the
+dictionary used for all new buffers saved in the variable
+@code{ispell-dictionary}, and without prefix argument it sets it
+buffer-locally, setting the variable @code{ispell-local-dictionary}.
+
+ Alternatively, it is possible to override the buffer-local value for
+the dictionary by adding @code{"Local IspellDict: en_UK"} at the bottom
+of the buffer, within a comment line, and reverting the buffer. This is
+useful if the same file has to be shared by multiple developers, some of
+which do not use Emacs. This value is usually passed to the spell
+checker program using the @code{-d} command-line switch.
+
+If both @code{ispell-dictionary} and @code{ispell-local-dictionary} are
+@code{nil}, that is, if a dictionary has never been changed, the system
+will call the spell-checking program without explicitly selecting a
+dictionary (language), and the language to be checked will be determined
+by the spell-checking program itself. This may be useful if you prefer
+to set the language there, so that all client programs using the same
+backend spell-checking program would have the same default setting.
+
+@cindex spell-checking multi-lingual text
+@findex ispell-hunspell-add-multi-dic
+@deffn Command ispell-hunspell-add-multi-dic
+Define a multi-language dictionary to be used with Hunspell.
+@end deffn
+ Hunspell is special in that it supports spell-checking using several
+different dictionaries in parallel. To use this feature, invoke the
+@w{@kbd{M-x ispell-hunspell-add-multi-dic}} command before you start
+using Hunspell for a particular combination of dictionaries. This
+command prompts for the dictionary combination, which should be a
+comma-separated list of language-specific dictionary names, such as
+@samp{en_US,de_DE,ru_RU}. Thereafter, you can spell-check text which
+mixes these languages without changing the dictionaries each time.
+(Caveat: when several languages use the same script, it is possible that
+a word that is mis-spelled in one language is found as a valid spelling
+in the dictionary of another language; in that case, the mis-spelled
+word might be missed.)
+
+For example, you can add the following to your Emacs init file:
+@lisp
+(use-package ispell
+ ;; uses (setopt ispell-set-spellchecker-params)
+ (setopt ispell-program-name "hunspell")
+ (ispell-hunspell-add-multi-dic "en_GB-ise,russian_aot_yo")
+ (ispell-change-dictionary "en_GB-ise,russian_aot_yo" t))
+@end lisp
+
+@vindex ispell-personal-dictionary
+@defvar ispell-personal-dictionary
+The value of this variable is either the name or the full path to the
+personal dictionary passed to the spell-checking program using the
+@code{-p} command-line switch.
+@end defvar
+
+ A ``personal dictionary'' is the file where you can add your own words
+to, for example, account for imperfections of the system-wide dictionary
+or to avoid less known proper nouns being marked as misspelled. Your
+personal dictionary is specified by the variable
+@code{ispell-personal-dictionary}. If that is @code{nil}, the spelling
+program looks for a personal dictionary in a default location, which is
+specific to each spell-checker. In particular Aspell will save the
+personal dictionary in @code{~/.aspell.<language_name>.pws}, Ispell uses
+@code{~/.ispell_<language-name>}, but it will also pick up a file with
+the same name if it is present in the current directory, so check the
+manual to your spell-checking program. A directory-local personal
+dictionary may happen to be useful for the case when you are
+contributing to a project which uses many domain-specific words which
+you might normally consider containing typos.
+
+@cindex adding spell-checking exceptions
+@cindex spell-checking exceptions
+@anchor{spell-checking local words}
+As opposed to defining a personal dictionary, which would be decoupled
+from the file being checked, sometimes it is advantageous to keep
+spelling exceptions stored in the same file, especially if the syntax
+used in the file allows that. File-local exceptions can be added
+interactively when using one of the proofreading commands
+(@pxref{Proofreading}), or manually by writing exceptions at the bottom
+of the file following the keyword @code{"LocalWords: "}. This allows
+preserving the list of exceptions when sending the file over electronic
+mail to your collaborators.
+
+It is also possible to add exceptions for the duration of the running
+Emacs session, using the interactive proofreading interface
+(@pxref{Proofreading}). These words will be lost after Emacs is
+restarted, so you are free to experiment with spelling exceptions
+without the fear that a careless addition might end up in a missed typo.
+
+@node Proofreading
+@subsection Synchronous Spell-Checking (Proofreading)
+@cindex proofreading
+@cindex spell-checking (synchronous)
+@anchor{Proofreading}
+
+Emacs spell-checking subsystem is originally designed for purposeful
+(synchronous) spell-checking, and expects ``writing'' and ``proofing''
+to be two separate activities. If you need less rigorous asynchronous
+spell-checking, @pxref{On-the-Fly Spell-Checking}.
+
+Proofreading in Emacs is usually broken into ``sessions'', which consist
+of selecting a piece of text in one way or another (for example, a
+region or a whole buffer) and feeding it all (sometimes de-formatted
+inside Emacs) to the spell-checking program, prompting the user for
+an action when a typo is discovered.
+
+Throughout the spelling session, the prompted word in question will be
+highlighted using the @code{ispell-highlight-face}, which can be
+customized.
+
+@deffn Face ispell-highlight-face
+@vindex ispell-highlight-face
+@anchor{ispell-highlight-face}
+Face to use for highlighting spelling mistakes as identified by
+@code{ispell-word} and similar functions.
+@end deffn
+
+@subsubsection Calling the Spell-Checker
@table @kbd
@item M-$
+@itemx M-x @code{ispell-word}
+@anchor{ispell-word}
Check and correct spelling of the word at point (@code{ispell-word}).
If the region is active, do it for all words in the region instead.
+(This is the most frequently used command.)
@item C-u M-$
+@itemx M-x @code{ispell-continue}
If a previous spelling operation was interrupted, continue that
-operation (@code{ispell-continue}).
+operation.
@item M-x ispell
Check and correct spelling of all words in the buffer. If the region
is active, do it for all words in the region instead.
@@ -286,25 +490,18 @@ Spelling
Check and correct spelling in the region.
@item M-x ispell-message
Check and correct spelling in a draft mail message, excluding cited
-material.
+material, header fields (@code{To:, From:, Cc:}).
@item M-x ispell-comments-and-strings
Check and correct spelling of comments and strings in the buffer or region.
@item M-x ispell-comment-or-string-at-point
Check the comment or string at point.
-@item M-x ispell-change-dictionary @key{RET} @var{dict} @key{RET}
-Restart the spell-checker process, using @var{dict} as the dictionary.
-@item M-x ispell-kill-ispell
-Kill the spell-checker subprocess.
-@item M-@key{TAB}
-@itemx @key{ESC} @key{TAB}
-@itemx C-M-i
-Complete the word before point based on the spelling dictionary and
-other completion sources (@code{completion-at-point}).
-@item M-x flyspell-mode
-Enable Flyspell mode, which highlights all misspelled words.
-@item M-x flyspell-prog-mode
-Enable Flyspell mode for comments and strings only.
@end table
+@defvar ispell-check-comments
+@vindex ispell-check-comments
+Adjust the aforementioned commands' behaviour in modes based on
+@code{text-mode}, but using a lot of structured markup, such as
+@code{org-mode}.
+@end defvar
@kindex M-$
@findex ispell-word
@@ -325,18 +522,30 @@ Spelling
@findex ispell-comments-and-strings
@findex ispell-comment-or-string-at-point
@cindex spell-checking the active region
- Similarly, the command @kbd{M-x ispell} performs spell-checking in
-the region if one is active, or in the entire buffer otherwise. The
+ Similarly, the command @kbd{M-x ispell} performs spell-checking in the
+region if one is active, or in the entire buffer otherwise. The
commands @w{@kbd{M-x ispell-buffer}} and @w{@kbd{M-x ispell-region}}
explicitly perform spell-checking on the entire buffer or the region
respectively. To check spelling in an email message you are writing,
use @w{@kbd{M-x ispell-message}}; that command checks the whole buffer,
-except for material that is indented or appears to be cited from other
-messages. @xref{Sending Mail}. When dealing with source code, you
+except for material that is indented, appears to be cited from other
+messages, or belongs to the email message formal syntax (@code{To:,
+From:, Cc:}). @xref{Sending Mail}. When dealing with source code, you
can use @kbd{M-x ispell-comments-and-strings} or @w{@kbd{M-x
ispell-comment-or-string-at-point}} to check only comments or string
literals.
+ By default in modes based on @code{text-mode}, the aforementioned
+commands will perform spell-checking on all of the text, even if is
+commented-out. Sometimes, however, you might want to comment-out pieces
+of structural markup, such as @code{org-mode}'s tags, which might not be
+proper words, but due to being commented-out are indistinguishable from
+normal comment text. To prevent checking of comments in text modes, set
+@code{ispell-check-comments} to @code{nil}. Setting it to
+@code{'exclusive} will make the spell-checker check @emph{only} comments.
+
+@subsubsection Correcting Spelling Mistakes
+@cindex spell-checking (correcting mistakes)
When one of these commands encounters what appears to be an
incorrect word, it asks you what to do. It usually displays a list of
numbered @dfn{near-misses}---words that are close to the incorrect word.
@@ -355,7 +564,8 @@ Spelling
@item r @var{new} @key{RET}
Replace the word, just this time, with @var{new}. (The replacement
-string will be rescanned for more spelling errors.)
+string will be rescanned for more spelling errors, thus marking other
+of the occurrences of the same spelling as correct.)
@item R @var{new} @key{RET}
Replace the word with @var{new}, and do a @code{query-replace} so you
@@ -368,11 +578,13 @@ Spelling
@item A
Accept the incorrect word---treat it as correct, but only in this
-editing session and for this buffer.
+file. (This adds @code{LocalWords: } syntax to the file footer
+(@pxref{spell-checking local words}).)
@item i
-Insert this word in your personal dictionary file so that it will be
-considered correct from now on, even in future sessions.
+Insert this word in your personal dictionary file (the spell-checking
+program does the insertion) so that it will be considered correct from
+now on, even in future sessions and even outside Emacs.
@item m
Like @kbd{i}, but you can also specify dictionary completion
@@ -383,10 +595,10 @@ Spelling
file.
@item l @var{word} @key{RET}
-Look in the dictionary for words that match @var{word}. These words
-become the new list of near-misses; you can select one of them as
-the replacement by typing a digit. You can use @samp{*} in @var{word} as a
-wildcard.
+Look up the words that match @var{word} in the completion dictionary
+(@pxref{plain-text completion}). These words become the new list of
+near-misses; you can select one of them as the replacement by typing a
+digit. You can use @samp{*} in @var{word} as a wildcard.
@item C-g
@itemx X
@@ -416,6 +628,52 @@ Spelling
@item ?
Show the list of options.
+@end table
+
+@node Plain-Text Completion
+@subsection Plain-Text Word Completion
+@cindex completion (plain-text)
+@cindex completion (words)
+@cindex word completion
+@anchor{plain-text completion}
+Emacs also supports words completion based on a simple plain-text list
+of words separated by newlines, with no support for morphology. Despite
+being quite primitive, this mechanism is often the only way of
+assistance a text editor can provide for the user writing a text without
+spending a lot of computational resources on syntactic and semantic
+analysis of the text.
+
+@vindex ispell-complete-word-dict
+@defvar ispell-complete-word-dict
+@defvarx ispell-alternate-dictionary
+ Primary and fallback dictionary for plain-text completion.
+@end defvar
+
+ A separate (from @code{ispell-dictionary} and
+@code{ispell-local-dictionary}) dictionary is used for plain-text word
+completion. The variable @code{ispell-complete-word-dict} specifies the
+file name of this dictionary. The completion dictionary must be
+different because it cannot use the information about roots and affixes
+of the words, which spell-checking uses to detect variations of words.
+For some languages, there is a spell-checking dictionary but no word
+completion dictionary. The variable @code{ispell-alternate-dictionary}
+serves the same purpose, but points to the system-wide dictionary, which
+is usually pre-installed by your Operating System vendor. On GNU/Linux
+this is often a wordlist extracted from the Webster dictionary (with
+definitions removed), shipped with some older editions of UNIX,
+installed at @code{/usr/share/dict/words}. The ``GNU Miscfiles''
+project provides a (relatively limited) sample of such a wordlist if
+necessary.
+
+@table @kbd
+@item M-@key{TAB}
+@itemx @key{ESC} @key{TAB}
+@itemx C-M-i
+@itemx @kbd{Tools -> Spell Checking -> Complete Word}
+@itemx @kbd{Tools -> Spell Checking -> Complete Word Fragment}
+Complete the word before point based on the spelling dictionary and
+other completion sources (@code{completion-at-point},
+@code{ispell-complete-word}, @code{ispell-complete-word-interior-frag}).
@end table
Use the command @kbd{M-@key{TAB}} (@code{completion-at-point}) to
@@ -424,68 +682,25 @@ Spelling
window manager intercepts @kbd{M-@key{TAB}}, type @w{@kbd{@key{ESC}
@key{TAB}}} or @kbd{C-M-i}.)
-@cindex @code{ispell} program
-@findex ispell-kill-ispell
- Once started, the spell-checker subprocess continues
-to run, waiting for something to do, so that subsequent spell-checking
-commands complete more quickly. If you want to get rid of the
-process, use @w{@kbd{M-x ispell-kill-ispell}}. This is not usually
-necessary, since the process uses no processor time except when you do
-spelling correction.
-
-@vindex ispell-dictionary
-@vindex ispell-local-dictionary
-@vindex ispell-personal-dictionary
-@findex ispell-change-dictionary
- Spell-checkers look up spelling in two dictionaries:
-the standard dictionary and your personal dictionary. The standard
-dictionary is specified by the variable @code{ispell-local-dictionary}
-or, if that is @code{nil}, by the variable @code{ispell-dictionary}.
-If both are @code{nil}, the spelling program's default dictionary is
-used. The command @w{@kbd{M-x ispell-change-dictionary}} sets the
-standard dictionary for the buffer and then restarts the subprocess,
-so that it will use a different standard dictionary. Your personal
-dictionary is specified by the variable
-@code{ispell-personal-dictionary}. If that is @code{nil}, the
-spelling program looks for a personal dictionary in a default
-location, which is specific to each spell-checker.
-
-@cindex spell-checking different languages
-@cindex language for spell-checking
- Usually, a dictionary used by a spell-checker is for a specific
-language. The default language is determined from your system's
-environment and locale. Both the standard dictionary and your personal
-dictionary should be changed if you want to spell-check text in a
-different language. You can use the @code{ispell-change-dictionary}
-command for that.
-
-@cindex spell-checking multi-lingual text
-@findex ispell-hunspell-add-multi-dic
- Hunspell is special in that it supports spell-checking using several
-different dictionaries in parallel. To use this feature, invoke the
-@kbd{M-x ispell-hunspell-add-multi-dic} command before you start using
-Hunspell for a particular combination of dictionaries. This command
-prompts for the dictionary combination, which should be a
-comma-separated list of language-specific dictionary names, such as
-@samp{en_US,de_DE,ru_RU}. Thereafter, you can spell-check text which
-mixes these languages without changing the dictionaries each time.
-(Caveat: when several languages use the same script, it is possible that
-a word that is mis-spelled in one language is found as a valid spelling
-in the dictionary of another language; in that case, the mis-spelled
-word might be missed.)
-
-@vindex ispell-complete-word-dict
- A separate dictionary is used for word completion. The variable
-@code{ispell-complete-word-dict} specifies the file name of this
-dictionary. The completion dictionary must be different because it
-cannot use the information about roots and affixes of the words, which
-spell-checking uses to detect variations of words. For some
-languages, there is a spell-checking dictionary but no word completion
-dictionary.
+@node Asynchronous Spell-Checking
+@subsection Asynchronous (On-the-Fly) Spell-Checking
+@cindex on-the-fly spell-checking
+@cindex spell-checking (on-the-fly)
+@anchor{On-the-Fly Spell-Checking}
@cindex Flyspell mode
@cindex mode, Flyspell
@findex flyspell-mode
+@anchor{flyspell-mode}
+@table @kbd
+@item M-x flyspell-mode
+Enable Flyspell mode, which highlights all misspelled words. (Most
+useful in modes based on @code{text-mode}.)
+
+Note that @code{flyspell-mode}, when enabled, will change the value of
+@code{ispell-highlight-face} (@pxref{ispell-highlight-face}).
+@end table
+
Flyspell mode is a minor mode that performs automatic spell-checking
of the text you type as you type it. When it finds a word that it
does not recognize, it highlights that word. Type @w{@kbd{M-x
@@ -493,31 +708,89 @@ Spelling
enable Flyspell mode in all text mode buffers, add
@code{flyspell-mode} to @code{text-mode-hook}. @xref{Hooks}. Note
that, as Flyspell mode needs to check each word across which you move,
-it will slow down cursor motion and scrolling commands. It also
-doesn't automatically check the text you didn't type or move across;
-use @code{flyspell-region} or @code{flyspell-buffer} for that.
+it will slow down cursor motion and scrolling commands.
@vindex flyspell-check-changes
- Normally, Flyspell mode highlights misspelled words that you typed or
-modified, but also words you move across without changing them. But if
-you customize the variable @code{flyspell-check-changes} to a
+@defvar flyspell-check-changes
+Enable spell-checking words you move across.
+@end defvar
+@deffn Face flyspell-error
+@deffnx Face flyspell-duplicate
+@vindex flyspell-error
+@vindex flyspell-duplicate
+These two faces define how the spelling mistake will be highlighted
+by @code{flyspell-mode}, the first being used for highlighting first
+occurrences of errors, and the second used for all subsequent identical
+misspellings. These will override @code{ispell-highlight-face}.
+@end deffn
+@deffn Command flyspell-region
+@deffnx Command flyspell-buffer
+Highlight spelling mistakes in a region or in a buffer.
+@end deffn
+ Normally, Flyspell mode highlights both misspelled words that you
+typed or modified, and also words you move across without changing them.
+But if you customize the variable @code{flyspell-check-changes} to a
non-@code{nil} value, Flyspell mode will check only the words you typed
-or edited in some way.
+or edited in some way. It @emph{doesn't automatically check the text you
+didn't type or move across}; use @code{flyspell-region} or
+@code{flyspell-buffer} for that.
+
@findex flyspell-correct-word
-@findex flyspell-auto-correct-word
@findex flyspell-correct-word-before-point
+@findex flyspell-auto-correct-word
+@table @kbd
+@item @kbd{mouse-2}
+@itemx @code{(flyspell-correct-word)}
+Display a menu of possible correction using mouse.
+@item @kbd{C-c $}
+@itemx @code{(flyspell-correct-word-before-point)}
+Display a menu of possible corrections using keyboard.
+@item @kbd{M-@key{TAB}}
+@itemx @kbd{C-M-i}
+@itemx @kbd{@key{ESC} @key{TAB}}
+@itemx @kbd{C-.}
+@itemx (@code{flyspell-auto-correct-word})
+Automatically correct word before point.
+@end table
When Flyspell mode highlights a word as misspelled, you can click on
it with @kbd{mouse-2} (@code{flyspell-correct-word}) to display a menu
of possible corrections and actions. If you want this menu on
-@kbd{mouse-3} instead, enable @code{context-menu-mode}. In addition,
-@kbd{C-.} or @kbd{@key{ESC} @key{TAB}} (@code{flyspell-auto-correct-word})
-will propose various successive corrections for the word at point, and
-@w{@kbd{C-c $}} (@code{flyspell-correct-word-before-point}) will pop
-up a menu of possible corrections. Of course, you can always correct
-the misspelled word by editing it manually in any way you like.
+@kbd{mouse-3} instead, enable @code{context-menu-mode}. Note, however,
+that @code{flyspell-mode} needs to be enable @emph{after}
+@code{context-menu-mode}, because it will @emph{redefine} the context
+menu already installed there by other modes. In addition, @kbd{C-.} or
+@kbd{@key{ESC} @key{TAB}} (@code{flyspell-auto-correct-word}) will
+propose various successive corrections for the word at point, and
+@w{@kbd{C-c $}} (@code{flyspell-correct-word-before-point}) will pop up
+a menu of possible corrections. Of course, you can always correct the
+misspelled word by editing it manually in any way you like, or use
+@w{@kbd{M-$}} @pxref{ispell-word}.
+
+@cindex Ispell Minor Mode
+@cindex mode, Ispell Minor
+@anchor{ispell-minor-mode}
+@findex ispell-minor-mode
+@table @kbd
+@item M-x ispell-minor-mode
+Enable spell-checking of the last typed word only.
+@end table
+
+If @code{flyspell-mode} proves to be too burdensome for your computer,
+or if it is producing too many false positives and visually clutters
+your display, @code{ispell-minor-mode} is a much more lightweight
+alternative, which only checks the last word as you are typing it, and
+shows a brief message in the echo area.
+@cindex Flyspell Prog mode
+@cindex mode, Flyspell Prog
+@anchor{flyspell-prog-mode}
@findex flyspell-prog-mode
+@table @kbd
+@item M-x flyspell-prog-mode
+Enable Flyspell mode for comments and strings only. (Most useful for
+modes based on @code{prog-mode}.)
+@end table
Flyspell Prog mode works just like ordinary Flyspell mode, except
that it only checks words in comments and string constants. This
feature is useful for editing programs. Type @w{@kbd{M-x
--
2.46.4
--=-=-=
Content-Type: text/plain
> May I suggest that, instead of posting a jumbo patch, you post a list
> of problems you see with important details and aspects of
> spell-checking, as they are currently documented (or not documented)
> in the manual, and we could then discuss these one by one and decide
> whether and how each one of them should be fixed? If nothing else, it
> will allow us to discuss the problems first, rather than start from a
> full-blown solution.
I never thought about this patch as "jumbo". As you said, it's just 250
lines, less than a single function of ispell.el (ispell-command-loop is
279 lines, ispell-region is 153 lines), and is less than 5% of
ispell.el+flyspell.el, which are 4345+2411=6756 lines long (5096 without
comments and empty lines).
After all, the whole documentation to Elisp ratio for Emacs is
find lisp -iname '*.el' -exec cat {} + | \
grep --binary-files=text -v '^;' | \
grep --binary-files=text -v '^$' | wc -l
1671287
find doc -iname '*.texi' -exec cat {} + | \
grep --binary-files=text -v '^%' | \
grep --binary-files=text -v '^$' | wc -l
354929
echo '354929/1671287' | bc -l
.21
So, roughly speaking ispell.el's documentation is 4 times terser than
Emacs' on average.
Even if you add all of the C code (which is much sparser documented)
without removing comments:
find src lisp \( -iname '*.el' -or -iname '*.c' \) -exec cat {} + | \
grep --binary-files=text -v '^;' | \
grep --binary-files=text -v '^$' | wc -l
2110316
echo '354929/2110316' | bc -l
.16
This is still three times more elaborate and detailed than the spelling
documentation in fixit.texi
--
Your sincerely,
Vladimir Nikishkin (MiEr, lockywolf)
(Laptop)
--=-=-=--
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.Received: (at 79417) by debbugs.gnu.org; 10 Sep 2025 13:26:17 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Sep 10 09:26:17 2025 Received: from localhost ([127.0.0.1]:37379 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uwKq1-00083H-4E for submit <at> debbugs.gnu.org; Wed, 10 Sep 2025 09:26:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46806) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1uwKpx-00082x-9D for 79417 <at> debbugs.gnu.org; Wed, 10 Sep 2025 09:26:13 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1uwKpr-0006MD-ES; Wed, 10 Sep 2025 09:26:07 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=Pz0LdGg51BymK+PeO3ZO8HQw80LcNnWCv8ytcsfAo9Y=; b=l0jfwfxBkmfK PczwZcNV+LgNDZ5r2HH6iISnTkn4LxkQaraA0T2R1x9Foui4CrA02hUFd8eojNGpBOqKfMAWmhRHw dNAX4vM8wuKRyI3iSMmPJLczWwaXWYXCXWXAUgIDUtCALCXsL6ZXSF8UlirB3OwBm+deDRaJILYkB h5yotCYGeouWaPNlrwxZUJZWB9hGBtRXS2QXyL9HZ328zq/YaCHopZSkN9vHdphiJJOUcI8rZVyDj +9CYRpC+KzLk7GjIAsmMsg2jyaaE+cPVenKHF1yc+LLLGjxSw63dCrm/NjbZK2Nv/vW708qli16H2 mVkrZpFW2QZ2/uNXzmGf0Q==; Date: Wed, 10 Sep 2025 16:25:58 +0300 Message-Id: <86ikhqbfrt.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Lockywolf <for_emacs_1@HIDDEN> In-Reply-To: <87jz27rpsb.fsf@HIDDEN> (message from Lockywolf on Wed, 10 Sep 2025 10:43:00 +0800) Subject: Re: bug#79417: 31.0.50; Improve ispell.el documentation References: <87ecsft5qu.fsf@HIDDEN> <87jz27rpsb.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79417 Cc: 79417 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > Cc: Lockywolf <for_emacs_1@HIDDEN> > From: Lockywolf <for_emacs_1@HIDDEN> > Date: Wed, 10 Sep 2025 10:43:00 +0800 > > Apologies, the previous patch got mangled, please see the patch attached > to this message. Thanks, but this is too massive an addition for it to be accepted as-is. The "Spelling" node is already 200+ lines long, and your changes add 250 lines more. This is too much for these features, which are relatively minor, as Emacs features go. Would you agree to make the patch smaller, only mention important features and issues, and describe those as succinctly as possible, leaving the rest to the doc strings of the relevant commands and variables? For example, why do we need to expand the documentation of ispell-kill-ispell beyond what it already says? And why do we need to describe how and in which directories to install dictionaries -- people should either a distro or, if they know what they are doing, install the dictionaries themselves using the documentation provided with the speller; we don't want to track changes in those installations and update our manual each time they change. Or why expand the description of local and personal dictionaries so much -- does the existing text lack some important information? Same question about selecting dictionaries for non-default languages. Or why describe the Ispell faces in the manual? Or the complete new section about word-completion using ispell -- is that really so important to warrant so much text? And I'm not sure I understand the need for so much reshuffling of the existing text. Perhaps if we don't extend existing descriptions so much, the need to move the text around so much will also disappear? I also don't like using @subsections that have no nodes: they make the manual harder to navigate. If we must introduce new subsections, let's make each one of them a separate node. May I suggest that, instead of posting a jumbo patch, you post a list of problems you see with important details and aspects of spell-checking, as they are currently documented (or not documented) in the manual, and we could then discuss these one by one and decide whether and how each one of them should be fixed? If nothing else, it will allow us to discuss the problems first, rather than start from a full-blown solution. Thanks.
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.
Received: (at 79417) by debbugs.gnu.org; 10 Sep 2025 02:43:17 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Sep 09 22:43:17 2025
Received: from localhost ([127.0.0.1]:34861 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uwAnj-0006jR-FH
for submit <at> debbugs.gnu.org; Tue, 09 Sep 2025 22:43:17 -0400
Received: from coconut.lockywolf.net ([213.165.252.157]:49030)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <for_emacs_1@HIDDEN>)
id 1uwAnd-0006jB-Vl
for 79417 <at> debbugs.gnu.org; Tue, 09 Sep 2025 22:43:12 -0400
Received: from laptop.lockywolf.net (unknown
[IPv6:2408:824e:d2e:8ed0:aafc:415e:4cd2:7b90])
by coconut.lockywolf.net (Postfix) with ESMTPSA id 2200537D8F;
Wed, 10 Sep 2025 10:43:05 +0800 (CST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=lockywolf.net;
s=2024-10-06; t=1757472187;
bh=OiVJxqLLxBdFr4HjDG06slAtlyOLVMAKWfD/aMDmJZk=;
h=From:To:Cc:Subject:In-Reply-To:References:Date;
b=jj2BijJe1ewaCfBHObe/7evYK78gdBgXBcTr+VVWeLb8xTFX3vxlQCTYIoBtIfRay
jsyZrrFI4HYytUFo7/58KLkJivU4ijeeuMO4AooAzjBlSMEPLdCKyuZKtmxt7nzDYn
JWUzbz4UFe8D1ortI1/NyfXVNlBtB3kzcWmUN6ATay/mDqtySVr6Rx0KrLKJO1BTTi
K01EXxSks8FT28z6JR8WHM4ei27zreVLJMRv7j1EPfr9W1fT6oCRB+Z67aWiKrEqfv
RfiiNW+CbdvgaFp2Ri55HI6XFhgLFatEoGN5IO6qc/DirFCfiZuBaN5SV26JBRjtt6
RnnAnrJXXUm1A==
From: Lockywolf <for_emacs_1@HIDDEN>
To: 79417 <at> debbugs.gnu.org.
Subject: Re: 31.0.50; Improve ispell.el documentation
In-Reply-To: <87ecsft5qu.fsf@HIDDEN>
References: <87ecsft5qu.fsf@HIDDEN>
User-Agent: mu4e 1.12.9; emacs 31.0.50
Date: Wed, 10 Sep 2025 10:43:00 +0800
Message-ID: <87jz27rpsb.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79417
Cc: Lockywolf <for_emacs_1@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
--=-=-=
Content-Type: multipart/signed; boundary="==-=-=";
micalg=pgp-sha256; protocol="application/pgp-signature"
--==-=-=
Content-Type: text/plain
Apologies, the previous patch got mangled, please see the patch attached
to this message.
--==-=-=
Content-Type: application/pgp-signature; name="signature.asc"
-----BEGIN PGP SIGNATURE-----
iHUEARYIAB0WIQSWBebxCAoqaJP8N/j71sGyD+xtqgUCaMDltgAKCRD71sGyD+xt
qqaQAP9VW2uKy5ua74c2yBbX3Zz6HOARt/wc/ueXaszP18NiIQEAxc5LZOGnr01q
rA8Rm6+KwQP5r30GwUevwy4VfW4zRw8=
=r1XL
-----END PGP SIGNATURE-----
--==-=-=--
--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
filename=0001-Improve-ispell-mode-and-flyspell-mode-documentation.patch
From 199ba4f08bf746a233a0bafd7bea62da77b88eea Mon Sep 17 00:00:00 2001
From: Lockywolf <for_emacs_1@HIDDEN>
Date: Wed, 10 Sep 2025 10:05:31 +0800
Subject: [PATCH] Improve ispell-mode and flyspell-mode documentation.
* doc/emacs/fixit.texi (Checking and Correcting Spelling):
1. Fix documentation errors for various ispell-* functions.
2. Document ispell-minor-mode
3. Document ispell word completion functionality
4. Document LocalWords syntax
5. Expand dictionary selection documentation
---
doc/emacs/fixit.texi | 468 ++++++++++++++++++++++++++++++++++---------
1 file changed, 369 insertions(+), 99 deletions(-)
diff --git a/doc/emacs/fixit.texi b/doc/emacs/fixit.texi
index f240057aa69..17fa71b7def 100644
--- a/doc/emacs/fixit.texi
+++ b/doc/emacs/fixit.texi
@@ -263,20 +263,222 @@ Spelling
@xref{Top, Aspell,, aspell, The Aspell Manual}.
@end ifnottex
+Note, however, that this section will only help you fix spelling errors,
+not grammatical or punctuation errors.
+
@vindex ispell-program-name
+@defvar ispell-program-name
+Choose the default spell-checking program by customizing this variable.
+@end defvar
If you have only one of the spelling checker programs installed,
Emacs will find it when you invoke for the first time one of the
commands described here. If you have more than one of them installed,
you can control which one is used by customizing the variable
-@code{ispell-program-name}.
+@code{ispell-program-name} or adding the following line into your init
+file: @code{(setopt ispell-program-name "hunspell")}.
+
+@cindex @code{ispell} program
+@findex ispell-kill-ispell
+@deffn Command ispell-kill-ispell
+Kill the spell-checker subprocess.
+@end deffn
+
+Once started, the spell-checker subprocess continues
+to run, waiting for something to do, so that subsequent spell-checking
+commands complete more quickly. If you want to get rid of the
+process, use @w{@kbd{M-x ispell-kill-ispell}}. This is not usually
+necessary, since the process uses no processor time except when you do
+spelling correction, but might come in handy when the process is used
+for the purposes other than interactive spell-checking by externally
+installed packages.
+
+Note that if you use Flyspell-mode for on-the-fly spell-checking
+@pxref{flyspell-mode}, and you frequently switch between buffers using
+different spell-checking dictionaries, the spell-checking program will
+be restarted on each buffer switch, which might be slowing down Emacs if
+creating new processes is expensive on your Operating System.
+
+@subsection Spelling Dictionary Selection
+@cindex spell-checking dictionary
+
+In addition to having the spell checker program installed it is also
+important to have spellchecking dictionaries matching the language and
+orthography of your preferred writing installed system-wide. You can
+check if a dictionary supporting the language you need to have checked
+is present by examining the contents of the library directories, usually
+printed by the commands in the left column in the following table. The
+typical values for GNU/Linux are shown in the right column.
+@table @samp
+@item @code{ispell -vv}
+@code{/usr/lib64/ispell}
+@item @code{aspell config}
+@code{/usr/lib64/aspell/}
+@item Hunspell
+@code{/usr/share/hunspell/}
+@item Enchant
+Uses dictionaries from either Aspell or Hunspell.
+@end table
+Dictionaries typically consist of two files, one @code{.aff} file with
+the grammar, and one @code{.hash} or @code{.dict} with the dictionary.
+
+ Spell-checkers look up spelling in two dictionaries: @emph{the dictionary
+installed together with the spell-checker program} (or as a system
+add-on) and your @emph{personal dictionary}, which is usually empty when you
+have not been using spell-checking for a long time.
+
+@cindex spell-checking different languages
+@cindex language for spell-checking
+ Usually, a dictionary used by a spell-checker is for a specific
+language. The default language is determined from your system's
+environment and locale. Both the standard dictionary and your personal
+dictionary should be changed if you want to spell-check text in a
+different language. You can use the @code{ispell-change-dictionary}
+command for that.
+
+@vindex ispell-dictionary
+@vindex ispell-local-dictionary
+@findex ispell-change-dictionary
+@defopt ispell-dictionary
+@defoptx ispell-local-dictionary
+The value of this variables shows the current selected spell-checking
+dictionary.
+@end defopt
+@deffn Command ispell-change-dictionary dictionary &optional globalp
+Change the spell-checking dictionary (language) for the current buffer.
+With a prefix argument change it globally instead.
+@end deffn
+
+ The system-wide dictionary (language) used by the spell-checker is
+chosen by using the command @w{@kbd{M-x ispell-change-dictionary}}.
+When called with a prefix argument or, in the lisp code, with
+@code{(ispell-change-dictionary "en_UK" t)}, it sets the value of the
+dictionary used for all new buffers saved in the variable
+@code{ispell-dictionary}, and without prefix argument it sets it
+buffer-locally, setting the variable @code{ispell-local-dictionary}.
+
+ Alternatively, it is possible to override the buffer-local value for
+the dictionary by adding @code{"Local IspellDict: en_UK"} at the bottom
+of the buffer, within a comment line, and reverting the buffer. This is
+useful if the same file has to be shared by multiple developers, some of
+which do not use Emacs. This value is usually passed to the spell
+checker program using the @code{-d} command-line switch.
+
+If both @code{ispell-dictionary} and @code{ispell-local-dictionary} are
+@code{nil}, that is, if a dictionary has never been changed, the system
+will call the spell-checking program without explicitly selecting a
+dictionary (language), and the language to be checked will be determined
+by the spell-checking program itself. This may be useful if you prefer
+to set the language there, so that all client programs using the same
+backend spell-checking program would have the same default setting.
+
+@cindex spell-checking multi-lingual text
+@findex ispell-hunspell-add-multi-dic
+@deffn Command ispell-hunspell-add-multi-dic
+Define a multi-language dictionary to be used with Hunspell.
+@end deffn
+ Hunspell is special in that it supports spell-checking using several
+different dictionaries in parallel. To use this feature, invoke the
+@w{@kbd{M-x ispell-hunspell-add-multi-dic}} command before you start
+using Hunspell for a particular combination of dictionaries. This
+command prompts for the dictionary combination, which should be a
+comma-separated list of language-specific dictionary names, such as
+@samp{en_US,de_DE,ru_RU}. Thereafter, you can spell-check text which
+mixes these languages without changing the dictionaries each time.
+(Caveat: when several languages use the same script, it is possible that
+a word that is mis-spelled in one language is found as a valid spelling
+in the dictionary of another language; in that case, the mis-spelled
+word might be missed.)
+
+For example, you can add the following to your Emacs init file:
+@lisp
+(use-package ispell
+ ;; uses (setopt ispell-set-spellchecker-params)
+ (setopt ispell-program-name "hunspell")
+ (ispell-hunspell-add-multi-dic "en_GB-ise,russian_aot_yo")
+ (ispell-change-dictionary "en_GB-ise,russian_aot_yo" t))
+@end lisp
+
+@vindex ispell-personal-dictionary
+@defvar ispell-personal-dictionary
+The value of this variable is either the name or the full path to the
+personal dictionary passed to the spell-checking program using the
+@code{-p} command-line switch.
+@end defvar
+
+ A ``personal dictionary'' is the file where you can add your own words
+to, for example, account for imperfections of the system-wide dictionary
+or to avoid less known proper nouns being marked as misspelled. Your
+personal dictionary is specified by the variable
+@code{ispell-personal-dictionary}. If that is @code{nil}, the spelling
+program looks for a personal dictionary in a default location, which is
+specific to each spell-checker. In particular Aspell will save the
+personal dictionary in @code{~/.aspell.<language_name>.pws}, Ispell uses
+@code{~/.ispell_<language-name>}, but it will also pick up a file with
+the same name if it is present in the current directory, so check the
+manual to your spell-checking program. A directory-local personal
+dictionary may happen to be useful for the case when you are
+contributing to a project which uses many domain-specific words which
+you might normally consider containing typos.
+
+@cindex adding spell-checking exceptions
+@cindex spell-checking exceptions
+@anchor{spell-checking local words}
+As opposed to defining a personal dictionary, which would be decoupled
+from the file being checked, sometimes it is advantageous to keep
+spelling exceptions stored in the same file, especially if the syntax
+used in the file allows that. File-local exceptions can be added
+interactively when using one of the proofreading commands
+(@pxref{Proofreading}), or manually by writing exceptions at the bottom
+of the file following the keyword @code{"LocalWords: "}. This allows
+preserving the list of exceptions when sending the file over electronic
+mail to your collaborators.
+
+It is also possible to add exceptions for the duration of the running
+Emacs session, using the interactive proofreading interface
+(@pxref{Proofreading}). These words will be lost after Emacs is
+restarted, so you are free to experiment with spelling exceptions
+without the fear that a careless addition might end up in a missed typo.
+
+@subsection Synchronous Spell-Checking (Proofreading)
+@cindex proofreading
+@cindex spell-checking (synchronous)
+@anchor{Proofreading}
+
+Emacs spell-checking subsystem is originally designed for purposeful
+(synchronous) spell-checking, and expects ``writing'' and ``proofing''
+to be two separate activities. If you need less rigorous asynchronous
+spell-checking, @pxref{On-the-Fly Spell-Checking}.
+
+Proofreading in Emacs is usually broken into ``sessions'', which consist
+of selecting a piece of text in one way or another (for example, a
+region or a whole buffer) and feeding it all (sometimes de-formatted
+inside Emacs) to the spell-checking program, prompting the user for
+an action when a typo is discovered.
+
+Throughout the spelling session, the prompted word in question will be
+highlighted using the @code{ispell-highlight-face}, which can be
+customized.
+
+@deffn Face ispell-highlight-face
+@vindex ispell-highlight-face
+@anchor{ispell-highlight-face}
+Face to use for highlighting spelling mistakes as identified by
+@code{ispell-word} and similar functions.
+@end deffn
+
+@subsubsection Calling the Spell-Checker
@table @kbd
@item M-$
+@itemx M-x @code{ispell-word}
+@anchor{ispell-word}
Check and correct spelling of the word at point (@code{ispell-word}).
If the region is active, do it for all words in the region instead.
+(This is the most frequently used command.)
@item C-u M-$
+@itemx M-x @code{ispell-continue}
If a previous spelling operation was interrupted, continue that
-operation (@code{ispell-continue}).
+operation.
@item M-x ispell
Check and correct spelling of all words in the buffer. If the region
is active, do it for all words in the region instead.
@@ -286,25 +488,18 @@ Spelling
Check and correct spelling in the region.
@item M-x ispell-message
Check and correct spelling in a draft mail message, excluding cited
-material.
+material, header fields (@code{To:, From:, Cc:}).
@item M-x ispell-comments-and-strings
Check and correct spelling of comments and strings in the buffer or region.
@item M-x ispell-comment-or-string-at-point
Check the comment or string at point.
-@item M-x ispell-change-dictionary @key{RET} @var{dict} @key{RET}
-Restart the spell-checker process, using @var{dict} as the dictionary.
-@item M-x ispell-kill-ispell
-Kill the spell-checker subprocess.
-@item M-@key{TAB}
-@itemx @key{ESC} @key{TAB}
-@itemx C-M-i
-Complete the word before point based on the spelling dictionary and
-other completion sources (@code{completion-at-point}).
-@item M-x flyspell-mode
-Enable Flyspell mode, which highlights all misspelled words.
-@item M-x flyspell-prog-mode
-Enable Flyspell mode for comments and strings only.
@end table
+@defvar ispell-check-comments
+@vindex ispell-check-comments
+Adjust the aforementioned commands' behaviour in modes based on
+@code{text-mode}, but using a lot of structured markup, such as
+@code{org-mode}.
+@end defvar
@kindex M-$
@findex ispell-word
@@ -325,18 +520,30 @@ Spelling
@findex ispell-comments-and-strings
@findex ispell-comment-or-string-at-point
@cindex spell-checking the active region
- Similarly, the command @kbd{M-x ispell} performs spell-checking in
-the region if one is active, or in the entire buffer otherwise. The
+ Similarly, the command @kbd{M-x ispell} performs spell-checking in the
+region if one is active, or in the entire buffer otherwise. The
commands @w{@kbd{M-x ispell-buffer}} and @w{@kbd{M-x ispell-region}}
explicitly perform spell-checking on the entire buffer or the region
respectively. To check spelling in an email message you are writing,
use @w{@kbd{M-x ispell-message}}; that command checks the whole buffer,
-except for material that is indented or appears to be cited from other
-messages. @xref{Sending Mail}. When dealing with source code, you
+except for material that is indented, appears to be cited from other
+messages, or belongs to the email message formal syntax (@code{To:,
+From:, Cc:}). @xref{Sending Mail}. When dealing with source code, you
can use @kbd{M-x ispell-comments-and-strings} or @w{@kbd{M-x
ispell-comment-or-string-at-point}} to check only comments or string
literals.
+ By default in modes based on @code{text-mode}, the aforementioned
+commands will perform spell-checking on all of the text, even if is
+commented-out. Sometimes, however, you might want to comment-out pieces
+of structural markup, such as @code{org-mode}'s tags, which might not be
+proper words, but due to being commented-out are indistinguishable from
+normal comment text. To prevent checking of comments in text modes, set
+@code{ispell-check-comments} to @code{nil}. Setting it to
+@code{'exclusive} will make the spell-checker check @emph{only} comments.
+
+@subsubsection Correcting Spelling Mistakes
+@cindex spell-checking (correcting mistakes)
When one of these commands encounters what appears to be an
incorrect word, it asks you what to do. It usually displays a list of
numbered @dfn{near-misses}---words that are close to the incorrect word.
@@ -355,7 +562,8 @@ Spelling
@item r @var{new} @key{RET}
Replace the word, just this time, with @var{new}. (The replacement
-string will be rescanned for more spelling errors.)
+string will be rescanned for more spelling errors, thus marking other
+of the occurrences of the same spelling as correct.)
@item R @var{new} @key{RET}
Replace the word with @var{new}, and do a @code{query-replace} so you
@@ -368,11 +576,13 @@ Spelling
@item A
Accept the incorrect word---treat it as correct, but only in this
-editing session and for this buffer.
+file. (This adds @code{LocalWords: } syntax to the file footer
+(@pxref{spell-checking local words}).)
@item i
-Insert this word in your personal dictionary file so that it will be
-considered correct from now on, even in future sessions.
+Insert this word in your personal dictionary file (the spell-checking
+program does the insertion) so that it will be considered correct from
+now on, even in future sessions and even outside Emacs.
@item m
Like @kbd{i}, but you can also specify dictionary completion
@@ -383,10 +593,10 @@ Spelling
file.
@item l @var{word} @key{RET}
-Look in the dictionary for words that match @var{word}. These words
-become the new list of near-misses; you can select one of them as
-the replacement by typing a digit. You can use @samp{*} in @var{word} as a
-wildcard.
+Look up the words that match @var{word} in the completion dictionary
+(@pxref{plain-text completion}). These words become the new list of
+near-misses; you can select one of them as the replacement by typing a
+digit. You can use @samp{*} in @var{word} as a wildcard.
@item C-g
@itemx X
@@ -416,6 +626,51 @@ Spelling
@item ?
Show the list of options.
+@end table
+
+@subsection Plain-Text Word Completion
+@cindex completion (plain-text)
+@cindex completion (words)
+@cindex word completion
+@anchor{plain-text completion}
+Emacs also supports words completion based on a simple plain-text list
+of words separated by newlines, with no support for morphology. Despite
+being quite primitive, this mechanism is often the only way of
+assistance a text editor can provide for the user writing a text without
+spending a lot of computational resources on syntactic and semantic
+analysis of the text.
+
+@vindex ispell-complete-word-dict
+@defvar ispell-complete-word-dict
+@defvarx ispell-alternate-dictionary
+ Primary and fallback dictionary for plain-text completion.
+@end defvar
+
+ A separate (from @code{ispell-dictionary} and
+@code{ispell-local-dictionary}) dictionary is used for plain-text word
+completion. The variable @code{ispell-complete-word-dict} specifies the
+file name of this dictionary. The completion dictionary must be
+different because it cannot use the information about roots and affixes
+of the words, which spell-checking uses to detect variations of words.
+For some languages, there is a spell-checking dictionary but no word
+completion dictionary. The variable @code{ispell-alternate-dictionary}
+serves the same purpose, but points to the system-wide dictionary, which
+is usually pre-installed by your Operating System vendor. On GNU/Linux
+this is often a wordlist extracted from the Webster dictionary (with
+definitions removed), shipped with some older editions of UNIX,
+installed at @code{/usr/share/dict/words}. The ``GNU Miscfiles''
+project provides a (relatively limited) sample of such a wordlist if
+necessary.
+
+@table @kbd
+@item M-@key{TAB}
+@itemx @key{ESC} @key{TAB}
+@itemx C-M-i
+@itemx @kbd{Tools -> Spell Checking -> Complete Word}
+@itemx @kbd{Tools -> Spell Checking -> Complete Word Fragment}
+Complete the word before point based on the spelling dictionary and
+other completion sources (@code{completion-at-point},
+@code{ispell-complete-word}, @code{ispell-complete-word-interior-frag}).
@end table
Use the command @kbd{M-@key{TAB}} (@code{completion-at-point}) to
@@ -424,68 +679,25 @@ Spelling
window manager intercepts @kbd{M-@key{TAB}}, type @w{@kbd{@key{ESC}
@key{TAB}}} or @kbd{C-M-i}.)
-@cindex @code{ispell} program
-@findex ispell-kill-ispell
- Once started, the spell-checker subprocess continues
-to run, waiting for something to do, so that subsequent spell-checking
-commands complete more quickly. If you want to get rid of the
-process, use @w{@kbd{M-x ispell-kill-ispell}}. This is not usually
-necessary, since the process uses no processor time except when you do
-spelling correction.
-
-@vindex ispell-dictionary
-@vindex ispell-local-dictionary
-@vindex ispell-personal-dictionary
-@findex ispell-change-dictionary
- Spell-checkers look up spelling in two dictionaries:
-the standard dictionary and your personal dictionary. The standard
-dictionary is specified by the variable @code{ispell-local-dictionary}
-or, if that is @code{nil}, by the variable @code{ispell-dictionary}.
-If both are @code{nil}, the spelling program's default dictionary is
-used. The command @w{@kbd{M-x ispell-change-dictionary}} sets the
-standard dictionary for the buffer and then restarts the subprocess,
-so that it will use a different standard dictionary. Your personal
-dictionary is specified by the variable
-@code{ispell-personal-dictionary}. If that is @code{nil}, the
-spelling program looks for a personal dictionary in a default
-location, which is specific to each spell-checker.
-
-@cindex spell-checking different languages
-@cindex language for spell-checking
- Usually, a dictionary used by a spell-checker is for a specific
-language. The default language is determined from your system's
-environment and locale. Both the standard dictionary and your personal
-dictionary should be changed if you want to spell-check text in a
-different language. You can use the @code{ispell-change-dictionary}
-command for that.
-
-@cindex spell-checking multi-lingual text
-@findex ispell-hunspell-add-multi-dic
- Hunspell is special in that it supports spell-checking using several
-different dictionaries in parallel. To use this feature, invoke the
-@kbd{M-x ispell-hunspell-add-multi-dic} command before you start using
-Hunspell for a particular combination of dictionaries. This command
-prompts for the dictionary combination, which should be a
-comma-separated list of language-specific dictionary names, such as
-@samp{en_US,de_DE,ru_RU}. Thereafter, you can spell-check text which
-mixes these languages without changing the dictionaries each time.
-(Caveat: when several languages use the same script, it is possible that
-a word that is mis-spelled in one language is found as a valid spelling
-in the dictionary of another language; in that case, the mis-spelled
-word might be missed.)
-@vindex ispell-complete-word-dict
- A separate dictionary is used for word completion. The variable
-@code{ispell-complete-word-dict} specifies the file name of this
-dictionary. The completion dictionary must be different because it
-cannot use the information about roots and affixes of the words, which
-spell-checking uses to detect variations of words. For some
-languages, there is a spell-checking dictionary but no word completion
-dictionary.
+@subsection Asynchronous (On-the-Fly) Spell-Checking
+@cindex on-the-fly spell-checking
+@cindex spell-checking (on-the-fly)
+@anchor{On-the-Fly Spell-Checking}
@cindex Flyspell mode
@cindex mode, Flyspell
@findex flyspell-mode
+@anchor{flyspell-mode}
+@table @kbd
+@item M-x flyspell-mode
+Enable Flyspell mode, which highlights all misspelled words. (Most
+useful in modes based on @code{text-mode}.)
+
+Note that @code{flyspell-mode}, when enabled, will change the value of
+@code{ispell-highlight-face} (@pxref{ispell-highlight-face}).
+@end table
+
Flyspell mode is a minor mode that performs automatic spell-checking
of the text you type as you type it. When it finds a word that it
does not recognize, it highlights that word. Type @w{@kbd{M-x
@@ -493,31 +705,89 @@ Spelling
enable Flyspell mode in all text mode buffers, add
@code{flyspell-mode} to @code{text-mode-hook}. @xref{Hooks}. Note
that, as Flyspell mode needs to check each word across which you move,
-it will slow down cursor motion and scrolling commands. It also
-doesn't automatically check the text you didn't type or move across;
-use @code{flyspell-region} or @code{flyspell-buffer} for that.
+it will slow down cursor motion and scrolling commands.
@vindex flyspell-check-changes
- Normally, Flyspell mode highlights misspelled words that you typed or
-modified, but also words you move across without changing them. But if
-you customize the variable @code{flyspell-check-changes} to a
+@defvar flyspell-check-changes
+Enable spell-checking words you move across.
+@end defvar
+@deffn Face flyspell-error
+@deffnx Face flyspell-duplicate
+@vindex flyspell-error
+@vindex flyspell-duplicate
+These two faces define how the spelling mistake will be highlighted
+by @code{flyspell-mode}, the first being used for highlighting first
+occurrences of errors, and the second used for all subsequent identical
+misspellings. These will override @code{ispell-highlight-face}.
+@end deffn
+@deffn Command flyspell-region
+@deffnx Command flyspell-buffer
+Highlight spelling mistakes in a region or in a buffer.
+@end deffn
+ Normally, Flyspell mode highlights both misspelled words that you
+typed or modified, and also words you move across without changing them.
+But if you customize the variable @code{flyspell-check-changes} to a
non-@code{nil} value, Flyspell mode will check only the words you typed
-or edited in some way.
+or edited in some way. It @emph{doesn't automatically check the text you
+didn't type or move across}; use @code{flyspell-region} or
+@code{flyspell-buffer} for that.
+
@findex flyspell-correct-word
-@findex flyspell-auto-correct-word
@findex flyspell-correct-word-before-point
+@findex flyspell-auto-correct-word
+@table @kbd
+@item @kbd{mouse-2}
+@itemx @code{(flyspell-correct-word)}
+Display a menu of possible correction using mouse.
+@item @kbd{C-c $}
+@itemx @code{(flyspell-correct-word-before-point)}
+Display a menu of possible corrections using keyboard.
+@item @kbd{M-@key{TAB}}
+@itemx @kbd{C-M-i}
+@itemx @kbd{@key{ESC} @key{TAB}}
+@itemx @kbd{C-.}
+@itemx (@code{flyspell-auto-correct-word})
+Automatically correct word before point.
+@end table
When Flyspell mode highlights a word as misspelled, you can click on
it with @kbd{mouse-2} (@code{flyspell-correct-word}) to display a menu
of possible corrections and actions. If you want this menu on
-@kbd{mouse-3} instead, enable @code{context-menu-mode}. In addition,
-@kbd{C-.} or @kbd{@key{ESC} @key{TAB}} (@code{flyspell-auto-correct-word})
-will propose various successive corrections for the word at point, and
-@w{@kbd{C-c $}} (@code{flyspell-correct-word-before-point}) will pop
-up a menu of possible corrections. Of course, you can always correct
-the misspelled word by editing it manually in any way you like.
+@kbd{mouse-3} instead, enable @code{context-menu-mode}. Note, however,
+that @code{flyspell-mode} needs to be enable @emph{after}
+@code{context-menu-mode}, because it will @emph{redefine} the context
+menu already installed there by other modes. In addition, @kbd{C-.} or
+@kbd{@key{ESC} @key{TAB}} (@code{flyspell-auto-correct-word}) will
+propose various successive corrections for the word at point, and
+@w{@kbd{C-c $}} (@code{flyspell-correct-word-before-point}) will pop up
+a menu of possible corrections. Of course, you can always correct the
+misspelled word by editing it manually in any way you like, or use
+@w{@kbd{M-$}} @pxref{ispell-word}.
+
+@cindex Ispell Minor Mode
+@cindex mode, Ispell Minor
+@anchor{ispell-minor-mode}
+@findex ispell-minor-mode
+@table @kbd
+@item M-x ispell-minor-mode
+Enable spell-checking of the last typed word only.
+@end table
+
+If @code{flyspell-mode} proves to be too burdensome for your computer,
+or if it is producing too many false positives and visually clutters
+your display, @code{ispell-minor-mode} is a much more lightweight
+alternative, which only checks the last word as you are typing it, and
+shows a brief message in the echo area.
+@cindex Flyspell Prog mode
+@cindex mode, Flyspell Prog
+@anchor{flyspell-prog-mode}
@findex flyspell-prog-mode
+@table @kbd
+@item M-x flyspell-prog-mode
+Enable Flyspell mode for comments and strings only. (Most useful for
+modes based on @code{prog-mode}.)
+@end table
Flyspell Prog mode works just like ordinary Flyspell mode, except
that it only checks words in comments and string constants. This
feature is useful for editing programs. Type @w{@kbd{M-x
--
2.46.4
--=-=-=
Content-Type: text/plain
--
Your sincerely,
Vladimir Nikishkin (MiEr, lockywolf)
(Laptop)
--=-=-=--
bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.
Received: (at submit) by debbugs.gnu.org; 10 Sep 2025 02:13:29 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Sep 09 22:13:29 2025
Received: from localhost ([127.0.0.1]:34751 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uwAKs-00052c-PD
for submit <at> debbugs.gnu.org; Tue, 09 Sep 2025 22:13:29 -0400
Received: from lists.gnu.org ([2001:470:142::17]:55888)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <for_emacs_1@HIDDEN>)
id 1uwAKn-00052D-Hj
for submit <at> debbugs.gnu.org; Tue, 09 Sep 2025 22:13:23 -0400
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 <for_emacs_1@HIDDEN>)
id 1uwAKh-0008Lo-Tw
for bug-gnu-emacs@HIDDEN; Tue, 09 Sep 2025 22:13:15 -0400
Received: from coconut.lockywolf.net ([213.165.252.157])
by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.90_1) (envelope-from <for_emacs_1@HIDDEN>)
id 1uwAKc-0001tV-J4
for bug-gnu-emacs@HIDDEN; Tue, 09 Sep 2025 22:13:15 -0400
Received: from laptop.lockywolf.net (unknown [58.19.0.46])
by coconut.lockywolf.net (Postfix) with ESMTPSA id 73CE438A00
for <bug-gnu-emacs@HIDDEN>; Wed, 10 Sep 2025 10:13:05 +0800 (CST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=lockywolf.net;
s=2024-10-06; t=1757470386;
bh=h41xziWW/RXIs62Fb4ndAhwnRaZ3P4G0HShAwEoYXZQ=;
h=From:To:Subject:Date;
b=jP4ccF1kKjTsuvJlwrnpbJJ79NMQGKcU9A6T7moRfTklvmRvSTrSDy8IbiMNqirpK
WzerVEovHDihYoki79Gzyb0uiwvAHEARArvtvZanITle0IcCuS00TE2vJ237bUHbks
wAr1fE4ZLt9ivNnBLjyfwXHlquPHJyOmB+val/eOO3vc9Tr9311+h+V46vbQkGVq2i
utH9r3u3fYTX2oAAgsdhaIEL3XG7cCrMyfpRHr9ewVXNgeedbVFn5rREYTrpyYZ7dw
4kFb/Bm4GA62kgjjdGoBjOlV1B/RVOaDkTWUicD1Y7Crl0wBCz2bJGS2m4Nvl1+W3f
PzaeIobeOSzDA==
From: Lockywolf <for_emacs_1@HIDDEN>
To: bug-gnu-emacs@HIDDEN
Subject: 31.0.50; Improve ispell.el documentation
User-Agent: mu4e 1.12.9; emacs 31.0.50
X-Debbugs-Cc:
Date: Wed, 10 Sep 2025 10:12:57 +0800
Message-ID: <87ecsft5qu.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
Received-SPF: pass client-ip=213.165.252.157;
envelope-from=for_emacs_1@HIDDEN; helo=coconut.lockywolf.net
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,
RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001,
SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 0.9 (/)
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.1 (/)
--=-=-=
Content-Type: text/plain
Dear Emacs developers,
The following patch contains what I consider to be an improvement to the
Emacs Manual with respect to the ~ispell.el~ spell-checking component.
The patch is attached.
--=-=-=
Content-Type: text/x-patch; charset=utf-8
Content-Disposition: attachment;
filename=0001-Add-tests-to-inspell.el-interactive-functions.patch
Content-Transfer-Encoding: quoted-printable
From e5661b558e1ea0c4dbcc1ceef0c0c760ec5060f3 Mon Sep 17 00:00:00 2001
From: Lockywolf <for_emacs_1@HIDDEN>
Date: Mon, 8 Sep 2025 13:13:25 +0800
Subject: [PATCH] Add tests to inspell.el interactive functions.
* test/lisp/textmodes/ispell-tests/ispell-tests.el:
Add tests for
1. ispell-kill-ispell
2. ispell-region
3. ispell-buffer
4. ispell-change-dictionary
5. ispell-comments-and-strings
6. ispell-comment-or-string-at-point
7. ispell-pdict-save
8. ispell-lookup-words
9. ispell-complete-word
10. ispell-complete-word-interior-frag
11. ispell-completion-at-point
12. ispell-minor-mode
13. ispell-message
* test/lisp/textmodes/ispell-tests/ispell-aspell-tests.el:
1. ispell-word
---
lisp/textmodes/ispell.el | 3 +-
.../ispell-resources/fake-aspell-new.bash | 64 +-
.../ispell-tests/ispell-aspell-tests.el | 106 +++
.../ispell-tests/ispell-hunspell-tests.el | 5 +
.../ispell-international-ispell-tests.el | 3 +
.../ispell-tests/ispell-tests-common.el | 41 +-
.../textmodes/ispell-tests/ispell-tests.el | 653 +++++++++++++++---
7 files changed, 758 insertions(+), 117 deletions(-)
diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el
index ad7c8571f67..b37d07f5e62 100644
--- a/lisp/textmodes/ispell.el
+++ b/lisp/textmodes/ispell.el
@@ -1803,7 +1803,8 @@ ispell-accept-output
(if (null ispell-process)
(error "No Ispell process to read output from!")
(let ((buf ispell-output-buffer)
- ispell-output)
+ (ispell-output nil))
+
(if (not (bufferp buf))
(setq ispell-filter nil)
(with-current-buffer buf
diff --git a/test/lisp/textmodes/ispell-resources/fake-aspell-new.bash b/te=
st/lisp/textmodes/ispell-resources/fake-aspell-new.bash
index 7dd935bac3c..e3fd91d5196 100755
--- a/test/lisp/textmodes/ispell-resources/fake-aspell-new.bash
+++ b/test/lisp/textmodes/ispell-resources/fake-aspell-new.bash
@@ -1,5 +1,15 @@
#!/bin/bash
=20
+#exec aspell "$@"
+
+#rm -rf ~/lwf_mock-aspell.log
+
+#printf 'date=3D"%s"\n' "$(date --iso=3Dseconds)" > /tmp/lwf_mock-aspell.l=
og
+
+#printf 'args=3D"%s"\n' "$*" >> /tmp/lwf_mock-aspell.log || { printf "lwf:=
ERROR\n" ; exit 3 ; }
+
+# coproc aspell { aspell "$@" ; }
+
vv=3D
=20
show_vv()
@@ -7,13 +17,51 @@ show_vv()
printf '%s\n' "@(#) International Ispell Version 3.1.20 (but really A=
spell 0.60.0)"
}
=20
-imitate_repl()
+imitate_pipe()
+{
+ local a
+ declare -A sessiondict
+ show_vv
+ while read a ; do
+ #printf 'pipe=3D"%s"\n' "$a" >> /tmp/lwf_mock-aspell.log
+ if [[ "$a" =3D=3D '' ]] ; then
+ printf ''
+ elif [[ "$a" =3D=3D '+' || "$a" =3D=3D '~nroff' || "$a" =3D=3D '~tex' || =
"$a" =3D=3D '!' || "$a" =3D=3D '-' || "$a" =3D=3D '%' ]] ; then
+ printf ''
+ elif [[ "${a:0:1}" =3D=3D '@' ]] ; then
+ sessiondict["${a:1}"]=3D"true"
+ printf ''
+ else
+ for b in $a ; do
+ if [[ "$b" =3D=3D '^' ]] ; then
+ printf ''
+ elif [[ ${sessiondict[$b]} =3D=3D 'true' || ${sessiondict[${b#^}]} =3D=
=3D 'true' ]] ; then
+ printf '*\n'
+ elif [[ "$b" =3D=3D '^tarampampamtararam' || "$b" =3D=3D 'tarampampamtar=
aram' ]] ; then
+ printf '# tarampampamtararam 0\n' # wrong word
+ elif [[ "$b" =3D=3D '^badworddd' || "$b" =3D=3D 'badworddd' ]] ; then
+ printf '# badworddd 0\n' # wrong word
+ elif [[ "$b" =3D=3D '^hellooooooo' || "$b" =3D=3D 'hellooooooo' ]] ; then
+ printf '# hellooooooo 0\n' # wrong word
+ elif [[ "$b" =3D=3D '^' ]] ; then
+ printf '\n'
+ else
+ printf "*\n"
+ fi
+ done
+ printf '\n'
+ fi
+ done
+}
+
+imitate_interactive()
{
+ exit 6
while true ; do
read a
-# printf 'debug=3D"%s"\n' "$a"
+# printf 'interactive=3D"%s"\n' "$a" >> /tmp/lwf_mock-aspell.log
if [[ "$a" =3D=3D '' ]] ; then
- printf ''
+ printf '\n'
elif [[ "$a" =3D=3D 'tarampampamtararam' ]] ; then
printf '# tarampampamtararam 0\n\n' # wrong word
else
@@ -22,16 +70,16 @@ imitate_repl()
done
}
=20
-show_vv
=20
while :; do
case $1 in
-vv|-v)
- #show_vv # for ispell.el error detection
+ show_vv # for ispell.el version detection
exit
;;
-a) # imitate REPL
- imitate_repl
+ imitate_pipe
+ exit
;;
-?*)
printf 'WARN: Unknown option (ignored): %s\n' "$1" >&2
@@ -41,3 +89,7 @@ while :; do
esac
shift
done
+
+printf 'Usage: aspell [options] <command>\n'
+
+#printf 'this place should be unreachable\n' >> /tmp/lwf_mock-aspell.log
diff --git a/test/lisp/textmodes/ispell-tests/ispell-aspell-tests.el b/test=
/lisp/textmodes/ispell-tests/ispell-aspell-tests.el
index c24d284f426..f8f954fd430 100644
--- a/test/lisp/textmodes/ispell-tests/ispell-aspell-tests.el
+++ b/test/lisp/textmodes/ispell-tests/ispell-aspell-tests.el
@@ -25,9 +25,15 @@
;;; Code:
=20
(require 'ispell)
+(require 'ert-x)
=20
+(eval-when-compile
+ (defconst ispell-tests-lib (expand-file-name "test/lisp/textmodes/ispell=
-tests/ispell-tests-common.el" source-directory))
+ (load ispell-tests-lib))
(load (expand-file-name "test/lisp/textmodes/ispell-tests/ispell-tests-com=
mon.el" source-directory))
=20
+(declare-function letopt (expand-file-name "test/lisp/textmodes/ispell-tes=
ts/ispell-tests-common.el" source-directory) t t)
+
(ert-deftest ispell/aspell/ispell-check-version/works ()
"Test that aspell is correctly detected."
(skip-unless (and (executable-find "aspell")
@@ -68,6 +74,106 @@ ispell/aspell/ispell-check-version/version-lowlow
(set-variable 'ispell-last-program-name
test-saved-ispell-last-program-name)))))
=20
+(ert-deftest ispell/aspell/ispell-word/english/correct ()
+"This test checks that Russian spellchecking works for Aspell."
+ (skip-unless (executable-find "aspell"))
+ (skip-unless (equal
+ 0
+ (call-process "aspell" nil nil nil "-vv")))
+ (skip-unless (equal
+ 0
+ (with-temp-buffer
+ (insert "test")
+ (call-process-region
+ nil
+ nil
+ "aspell" nil t nil "-a" "-denglish"))))
+ (with-environment-variables (("HOME" temporary-file-directory))
+ (let ((default-directory temporary-file-directory))
+ (letopt ((ispell-program-name "aspell")
+ (ispell-dictionary "english"))
+ (ignore-errors (ispell-kill-ispell t t))
+ (with-temp-buffer
+ (insert
+ "hello\n")
+ (goto-char 0)
+ (ispell-change-dictionary "english")
+ (let ((debugmessage ""))
+ (ert-with-message-capture lres
+ (let ((ispell-check-only t))
+ (ispell-word)
+ (setf debugmessage lres)
+ ;;(should (string-match "is correct" lres))
+ ))
+ (message "lwf:lres=3D%s" debugmessage)))
+ 'passed
+ )))
+ )
+
+(ert-deftest ispell/aspell/ispell-word/english/incorrect ()
+"This test checks that Russian spellchecking works for Aspell."
+ (skip-unless (executable-find "aspell"))
+ (skip-unless (equal
+ 0
+ (call-process "aspell" nil nil nil "-vv")))
+ (skip-unless (equal
+ 0
+ (with-temp-buffer
+ (insert "test")
+ (call-process-region
+ nil
+ nil
+ "aspell" nil t nil "-a" "-denglish"))))
+ (with-environment-variables (("HOME" temporary-file-directory))
+ (let ((default-directory temporary-file-directory))
+ (letopt ((ispell-program-name "aspell")
+ (ispell-dictionary "english"))
+ (ignore-errors (ispell-kill-ispell t t))
+ (with-temp-buffer
+ (insert
+ ;; there is no such a word in English, I swear.
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
+ )
+ (goto-char 0)
+ (ispell-change-dictionary "english")
+ (ert-with-message-capture lres
+ (let ((ispell-check-only t))
+ (ispell-word))
+ (should (string-match "is incorrect" lres))))
+ 'passed
+ )))
+ )
+
+(ert-deftest ispell/aspell/ispell-word/english/wrong-language ()
+ "This test checks that Russian spellchecking works for Aspell."
+ :expected-result :failed
+ (skip-unless (executable-find "aspell"))
+ (skip-unless (equal
+ 0
+ (call-process "aspell" nil nil nil "-vv")))
+ (skip-unless (equal
+ 0
+ (with-temp-buffer
+ (insert "test")
+ (call-process-region nil nil "aspell" nil '("*scratch*" =
t) nil "-a" "-denglish"))))
+ (with-environment-variables (("HOME" temporary-file-directory))
+ (let ((default-directory temporary-file-directory))
+ (letopt ((ispell-program-name "aspell"))
+ (ignore-errors (ispell-kill-ispell t t))
+ (with-temp-buffer
+ (insert
+ ;; giving Aspell a wrong language should not fail
+ "=D0=BF=D1=80=D0=B8=D0=B2=D0=B5=D1=82\n"
+ )
+ (goto-char 0)
+ (ispell-change-dictionary "english")
+ (ert-with-message-capture lres
+ (let ((ispell-check-only t))
+ (ispell-word))
+ (should (not (string-match "Error" lres)))))
+ 'passed
+ )))
+ )
=20
(provide 'tests-ispell-aspell)
;;; tests-ispell-aspell.el ends here
diff --git a/test/lisp/textmodes/ispell-tests/ispell-hunspell-tests.el b/te=
st/lisp/textmodes/ispell-tests/ispell-hunspell-tests.el
index ae3d6e303b3..ebdf10cc3f4 100644
--- a/test/lisp/textmodes/ispell-tests/ispell-hunspell-tests.el
+++ b/test/lisp/textmodes/ispell-tests/ispell-hunspell-tests.el
@@ -26,6 +26,11 @@
=20
(require 'ispell)
=20
+(eval-when-compile
+ (defconst ispell-tests-lib (expand-file-name "test/lisp/textmodes/ispell=
-tests/ispell-tests-common.el" source-directory))
+ (load ispell-tests-lib))
+
+
(load (expand-file-name "test/lisp/textmodes/ispell-tests/ispell-tests-com=
mon.el" source-directory))
(ert-deftest ispell/hunspell/ispell-word/english/check-only ()
"This test checks that Russian spellchecking works for Hunspell."
diff --git a/test/lisp/textmodes/ispell-tests/ispell-international-ispell-t=
ests.el b/test/lisp/textmodes/ispell-tests/ispell-international-ispell-test=
s.el
index f232f26d10d..bcd19e105a3 100644
--- a/test/lisp/textmodes/ispell-tests/ispell-international-ispell-tests.el
+++ b/test/lisp/textmodes/ispell-tests/ispell-international-ispell-tests.el
@@ -25,6 +25,9 @@
;;; Code:
=20
(require 'ispell)
+(eval-when-compile
+ (defconst ispell-tests-lib (expand-file-name "test/lisp/textmodes/ispell=
-tests/ispell-tests-common.el" source-directory))
+ (load ispell-tests-lib))
=20
(load (expand-file-name "test/lisp/textmodes/ispell-tests/ispell-tests-com=
mon.el" source-directory))
=20
diff --git a/test/lisp/textmodes/ispell-tests/ispell-tests-common.el b/test=
/lisp/textmodes/ispell-tests/ispell-tests-common.el
index a6c4f1247ee..e69e1a469e4 100644
--- a/test/lisp/textmodes/ispell-tests/ispell-tests-common.el
+++ b/test/lisp/textmodes/ispell-tests/ispell-tests-common.el
@@ -2,20 +2,35 @@
=20
(defvar tests-ispell-data-directory
(expand-file-name "test/lisp/textmodes/ispell-resources/" source-directo=
ry))
+(defvar fake-aspell-path
+ (expand-file-name
+ "./fake-aspell-new.bash"
+ tests-ispell-data-directory))
=20
-(let* ((backend-binaries (list "ispell" "aspell" "hunspell" "enchant-2"))
- (filter-binaries (lambda ()
- (seq-filter
- #'executable-find
- backend-binaries))))
+
+(let* ((backend-binaries (list "aspell" fake-aspell-path "hunspell" "e=
nchant-2")
+ )
+ (filter-binaries (seq-filter
+ (lambda (b)
+ (and
+ (executable-find b)
+ ;; (equal 0
+ ;; (with-temp-buffer
+ ;; (call-process b nil t "-v")))
+ ))
+ backend-binaries)))
=20
(defun ispell-tests--some-backend-available-p ()
(not
- (null (funcall filter-binaries))))
+ (null filter-binaries)))
=20
(defun ispell-tests--some-backend ()
- (car (funcall filter-binaries))))
+ (let ((retval (car filter-binaries)))
+ (message "available backend is:%s" retval)
+ retval)))
=20
+(eval-when-compile
+ (require 'cl-macs))
(cl-defmacro letopt (bindings &body body)
(declare (indent 1))
(let* ((binding-var (lambda (binding) (car binding)))
@@ -33,4 +48,16 @@ letopt
,@body)
,@(reverse restorebindings)))))
=20
+(cl-defmacro with-ispell-global-dictionary (bindings &body body)
+ "This macro should not really be needed, but `ispell.el'.
+Sets up dictionaries in a stupid way."
+ (declare (indent 1))
+ (let* ((dictionary-val (car bindings))
+ (temp-var (gensym 'old-dictionary)))
+ `(let ((,temp-var (symbol-value 'ispell-dictionary)))
+ (unwind-protect (progn (ispell-change-dictionary ,dictionary-val t)
+ ,@body)
+ (progn
+ (ispell-change-dictionary ,temp-var t))))))
+
(provide 'ispell-tests-common)
diff --git a/test/lisp/textmodes/ispell-tests/ispell-tests.el b/test/lisp/t=
extmodes/ispell-tests/ispell-tests.el
index 9e675443986..47816671475 100644
--- a/test/lisp/textmodes/ispell-tests/ispell-tests.el
+++ b/test/lisp/textmodes/ispell-tests/ispell-tests.el
@@ -24,9 +24,22 @@
=20
;;; Code:
=20
+(declare-function letopt ispell-tests-lib t t)
+(declare-function ispell-tests--some-backend ispell-tests-lib t t)
+(declare-function ispell-tests--some-backend-available-p ispell-tests-lib =
t t)
+
(require 'ispell)
-(load (expand-file-name "test/lisp/textmodes/ispell-tests/ispell-tests-com=
mon.el" source-directory))
+(defconst ispell-tests-lib (expand-file-name "test/lisp/textmodes/ispell-t=
ests/ispell-tests-common.el" source-directory))
+(eval-when-compile
+ (defconst ispell-tests-lib (expand-file-name "test/lisp/textmodes/ispell=
-tests/ispell-tests-common.el" source-directory))
+ (load ispell-tests-lib))
+(load ispell-tests-lib)
+
+(require 'ert)
+(require 'ert-x)
=20
+(setopt ispell-program-name "hunspell")
+(setopt ispell-dictionary "fr_FR")
=20
(defun warnings-buffer-exists-p ()
"Check if a buffer named \"*Warnings*\" exists."
@@ -450,18 +463,20 @@ ispell/ispell-buffer-local-words/ispell-words-keyword
Should pass regardless of the backend and the dictionary, because
presumably nobody will have `hellooooooo' in their dictionary."
(skip-unless (ispell-tests--some-backend-available-p))
- (letopt ((ispell-program-name (ispell-tests--some-backend)))
- (with-temp-buffer
- (nxml-mode)
- (ignore-errors (ispell-kill-ispell))
- (with-environment-variables (("HOME" temporary-file-directory))
- (ispell-init-process)
- (let ((test-output (ispell--run-on-word "hellooooooo")))
- (should (listp test-output))
- (should-not (equal t test-output)))
- (ispell-add-per-file-word-list "hellooooooo")
- (ispell-buffer-local-words)
- (should (equal t (ispell--run-on-word "hellooooooo")))))))
+ (with-environment-variables (("HOME" temporary-file-directory))
+ (with-ispell-global-dictionary nil
+ (letopt ((ispell-program-name (ispell-tests--some-backend)))
+ (with-temp-buffer
+ (nxml-mode)
+ (ignore-errors (ispell-kill-ispell))
+ (ispell-init-process)
+ (let ((test-output (ispell--run-on-word "hellooooooo")))
+ (should (listp test-output))
+ (should-not (equal t test-output)))
+ (ispell-add-per-file-word-list "hellooooooo")
+ (ispell-buffer-local-words)
+ (should (equal t (ispell--run-on-word "hellooooooo")))))))
+ )
=20
=20
(ert-deftest
@@ -470,21 +485,24 @@ ispell/ispell-buffer-local-words/ispell-words-keyword
Should pass regardless of the backend and the dictionary, because
presumably nobody will have `hellooooooo' in their dictionary."
(skip-unless (ispell-tests--some-backend-available-p))
- (letopt ((ispell-program-name (ispell-tests--some-backend)))
- (cd temporary-file-directory)
- (with-temp-buffer
- (nxml-mode)
- (ignore-errors (ispell-kill-ispell))
- (with-environment-variables (("HOME" temporary-file-directory))
- (ispell-init-process)
- (let ((test-output (ispell--run-on-word "hellooooooo")))
- (should (listp test-output))
- (should-not (equal t test-output)))
- (let ((ispell-buffer-session-localwords (list "hellooooooo")=
))
- (ispell-buffer-local-words)
- (should (equal t (ispell--run-on-word "hellooooooo"))))))))
-
-(ert-deftest ispell/ispell-init-process/works-nohome ()
+ (with-environment-variables (("HOME" temporary-file-directory))
+ (with-ispell-global-dictionary nil
+ (letopt ((ispell-program-name (ispell-tests--some-backend))
+ (ispell-dictionary nil))
+ (cd temporary-file-directory)
+ (with-temp-buffer
+ (nxml-mode)
+ (ignore-errors (ispell-kill-ispell))
+ (ispell-init-process)
+ (let ((test-output (ispell--run-on-word "hellooooooo")))
+ (should (listp test-output))
+ (should-not (equal t test-output)))
+ (let ((ispell-buffer-session-localwords (list "hellooooooo")))
+ (ispell-buffer-local-words)
+ (should (equal t (ispell--run-on-word "hellooooooo"))))))))
+ )
+
+(ert-deftest ispell/ispell-init-process/works-no-home ()
"Simple test to check that ispell-init-process works."
:expected-result :failed
(skip-unless (ispell-tests--some-backend-available-p))
@@ -492,13 +510,14 @@ ispell/ispell-init-process/works-nohome
(with-temp-buffer
(ispell-init-process))))
=20
-(ert-deftest ispell/ispell-init-process/works-withhome ()
+(ert-deftest ispell/ispell-init-process/works-with-home ()
"Simple test to check that ispell-init-process works."
(skip-unless (ispell-tests--some-backend-available-p))
- (letopt ((ispell-program-name (ispell-tests--some-backend)))
- (with-temp-buffer
- (with-environment-variables (("HOME" temporary-file-directory))
- (ispell-init-process)))))
+ (with-ispell-global-dictionary nil
+ (letopt ((ispell-program-name (ispell-tests--some-backend)))
+ (with-temp-buffer
+ (with-environment-variables (("HOME" temporary-file-directory))
+ (ispell-init-process))))))
=20
;; Some more tests for buffer-local stuff.
;; `ispell-buffer-local-dict'
@@ -742,18 +761,17 @@ ispell/ispell-accept-buffer-local-defs/simple
batch mode.
1. local words
2. dictionary and pdict
-3. parser and extcharmode"
- (skip-unless (executable-find "ispell"))
- (setq old-engine ispell-program-name)
- (setopt ispell-program-name "ispell")
- (ispell-check-version t)
- (skip-unless (and (null ispell-really-aspell)
- (null ispell-really-hunspell)
- (null ispell-really-enchant)))
- (setq ispell-program-name old-engine)
+3. parser and extcharmode.
+This does not work well on hunspell, because hunspell
+lies in their Man page, and in enchant-2 when it is using
+hunspell. Hence skipping."
+ (skip-unless (not (or (equal (ispell-tests--some-backend)
+ "hunspell")
+ (equal (ispell-tests--some-backend)
+ "enchant-2"))))
(with-environment-variables (("HOME" temporary-file-directory))
(with-temp-buffer
- (letopt ((ispell-program-name "ispell"))
+ (letopt ((ispell-program-name (ispell-tests--some-backend)))
(let ((test-dictname "english")
(test-extcharmode "~latin3")
(test-parser "~testparser")
@@ -806,9 +824,6 @@ ispell/ispell--run-on-word/default
"`ispell--run-on-word' should be the simplest interface
for checking a word."
(skip-unless (ispell-tests--some-backend-available-p))
- (skip-unless (equal
- 0
- (call-process (ispell-tests--some-backend) nil nil nil "-v=
v")))
(letopt ((ispell-program-name (ispell-tests--some-backend))
(ispell-dictionary "default"))
(let ((default-directory temporary-file-directory))
@@ -890,21 +905,18 @@ ispell/ispell-word/default/check-only/correct
(call-process (ispell-tests--some-backend) nil nil nil "-v=
v")))
(with-environment-variables (("HOME" temporary-file-directory))
(let ((default-directory temporary-file-directory))
- (letopt ((ispell-program-name (ispell-tests--some-backend)))
+ (letopt ((ispell-program-name (ispell-tests--some-backend))
+ (ispell-dictionary nil))
(ignore-errors (ispell-kill-ispell t t))
(with-temp-buffer
(insert
"hello\n")
(goto-char 0)
- (let ((ispell-check-only t)
- (current-point
- (with-current-buffer "*Messages*"
- (point))))
+ (ert-with-message-capture lres
(ispell-word)
- (with-current-buffer "*Messages*"
- (goto-char (point-max))
- (should ( > (search-backward "is correct" nil t)
- current-point)))))))))
+ (should (string-match "is correct" lres))))
+ 'passed)))
+ )
=20
(ert-deftest ispell/ispell-word/default/check-only/correct/add-init ()
"Check that `ispell-word' works with a default
@@ -920,23 +932,21 @@ ispell/ispell-word/default/check-only/correct/add-init
(call-process (ispell-tests--some-backend) nil nil nil "-v=
v")))
(with-environment-variables (("HOME" temporary-file-directory))
(let ((default-directory temporary-file-directory))
- (letopt ((ispell-program-name (ispell-tests--some-backend)))
+ (letopt ((ispell-program-name (ispell-tests--some-backend))
+ (ispell-dictionary nil)
+ (ispell-check-only t))
(ignore-errors (ispell-kill-ispell t t))
(with-temp-buffer
(ispell-init-process) ;; this is added
(insert
"hello\n")
(goto-char 0)
- (let ((ispell-check-only t)
- (current-point
- (with-current-buffer "*Messages*"
- (point))))
+ (ert-with-message-capture lres
(ispell-word)
- (with-current-buffer "*Messages*"
- (goto-char (point-max))
- (should (> (search-backward "is correct" nil t)
- current-point)))
- ))))))
+ (should (string-match "is correct" lres)))
+ 'passed
+ ))))
+ )
=20
(ert-deftest ispell/ispell-word/default/check-only/incorrect ()
"Check that `ispell-word' works with a default
@@ -945,75 +955,110 @@ ispell/ispell-word/default/check-only/incorrect
be rewritten with a mock.
This test gives it a word which does not exist."
(skip-unless (ispell-tests--some-backend-available-p))
- (skip-unless (equal
- 0
- (call-process (ispell-tests--some-backend) nil nil nil "-v=
v")))
(with-environment-variables (("HOME" temporary-file-directory))
(let ((default-directory temporary-file-directory))
- (letopt ((ispell-program-name (ispell-tests--some-backend)))
+ (letopt ((ispell-program-name (ispell-tests--some-backend))
+ (ispell-dictionary nil)
+ (ispell-check-only t))
(ignore-errors (ispell-kill-ispell t t))
(with-temp-buffer
(insert
- "helloooo\n")
+ "hellooooooo\n")
(goto-char 0)
- (let ((ispell-check-only t)
- (current-point
- (with-current-buffer "*Messages*"
- (point))))
+ (ert-with-message-capture lres
(ispell-word)
- (with-current-buffer "*Messages*"
- (goto-char (point-max))
- (should (> (search-backward "is incorrect" nil t)
- current-point)))
- ))))))
+ (should (string-match "is incorrect" lres))
+ 'passed)))))
+ )
=20
(ert-deftest ispell/ispell-region/correct ()
"The simplest test for `ispell-region'."
(skip-unless (ispell-tests--some-backend-available-p))
- (skip-unless (equal
- 0
- (call-process (ispell-tests--some-backend) nil nil nil "-v=
v")))
(with-environment-variables (("HOME" temporary-file-directory))
(let* ((default-directory temporary-file-directory)
- (fake-aspell-path (expand-file-name
- "./fake-aspell-new.bash"
- tests-ispell-data-directory))
(words '("hello" "test" "test" "more" "obvious" "word"))
(text (string-join words " ")))
- (letopt ((ispell-program-name fake-aspell-path))
+ (letopt ((ispell-program-name (ispell-tests--some-backend))
+ (ispell-dictionary nil))
(ignore-errors (ispell-kill-ispell t t))
(with-temp-buffer
- (insert
- text)
+ (insert text)
+ (goto-char (length (nth 0 words)))
+ (ert-with-message-capture lres
+ (ispell-region (point) (point-max))
+ (should (string-match "^Spell-checking region using .* with .*=
dictionary...done" lres))
+ 'passed)))))
+ )
+
+
+
+(ert-deftest ispell/ispell-region/incorrect ()
+ "The simplest test for `ispell-region'."
+ (skip-unless (ispell-tests--some-backend-available-p))
+ (with-environment-variables (("HOME" temporary-file-directory))
+ (let* ((default-directory temporary-file-directory)
+ (words '("hello" "tarampampamtararam" "world"))
+ (text (string-join words " ")))
+ (letopt ((ispell-program-name (ispell-tests--some-backend))
+ (ispell-dictionary nil)
+ (ispell-check-only t))
+ (ignore-errors (ispell-kill-ispell t t))
+ (with-temp-buffer
+ (insert text)
(goto-char (length (nth 0 words)))
- (let (;(ispell-check-only t)
- (current-point
+ (cl-labels ((checker ()
+ (user-error "expected error")))
+ (unwind-protect
+ (progn
+ (advice-add 'ispell-show-choices :override #'checker)
+ (should-error (ispell-region (point) (point-max))))
+ (advice-remove 'ispell-show-choices #'checker))))
+ 'passed)))
+ )
+
+(ert-deftest ispell/ispell-buffer/correct ()
+ "The simplest test for `ispell-buffer'.
+`ispell-buffer' is a very simple wrapper around `ispell-region',
+so this test virtually mirrors the previous one."
+ (skip-unless (ispell-tests--some-backend-available-p))
+ (with-environment-variables (("HOME" temporary-file-directory))
+ (let* ((default-directory temporary-file-directory)
+ (words '("hello" "test" "test" "more" "obvious" "word"))
+ (text (string-join words " ")))
+ (letopt ((ispell-dictionary nil)
+ (ispell-program-name (ispell-tests--some-backend)))
+ (ignore-errors (ispell-kill-ispell t t))
+ (with-temp-buffer
+ (insert text)
+ (goto-char (length (nth 0 words)))
+ (let ((current-point
(with-current-buffer "*Messages*"
(point))))
- (ispell-region (point) (point-max))
+ (ispell-buffer)
(with-current-buffer "*Messages*"
(goto-char (point-max))
- (should (> (re-search-backward "Spell-checking region using =
.* with .* dictionary...done" nil t) current-point))
+ (should (> (re-search-backward "^Spell-checking .* using .* =
with .* dictionary...done" nil t) current-point))
'passed)
)))))
)
=20
-(ert-deftest ispell/ispell-region/incorrect ()
- "The simplest test for `ispell-region'."
+(ert-deftest ispell/ispell-buffer/incorrect ()
+ "The simplest test for `ispell-buffer'.
+`ispell-buffer' is a very simple wrapper around `ispell-region',
+so this test virtually mirrors the previous one."
(skip-unless (ispell-tests--some-backend-available-p))
- (skip-unless (equal
- 0
- (call-process (ispell-tests--some-backend) nil nil nil "-v=
v")))
(with-environment-variables (("HOME" temporary-file-directory))
(let* ((default-directory temporary-file-directory)
- (fake-aspell-path "aspell")
- (words '("hello" "tarampampamtararam" "world"))
+ (words '("tarampampamtararam" "test" "test" "more" "obvious" "w=
ord" "badworddd"))
(text (string-join words " ")))
- (letopt ((ispell-program-name fake-aspell-path))
+ (letopt ((ispell-dictionary nil)
+ (ispell-program-name (ispell-tests--some-backend)))
(ignore-errors (ispell-kill-ispell t t))
(with-temp-buffer
- (insert
- text)
+ (insert text)
+ ;; This is intentional. The incorrect word is not in the region,
+ ;; but `ispell-buffer' should move the point to the beginning
+ ;; of the buffer.
(goto-char (length (nth 0 words)))
(cl-labels ((checker ()
(user-error "expected error")))
@@ -1021,11 +1066,413 @@ ispell/ispell-region/incorrect
(progn
(advice-add 'ispell-show-choices :override
#'checker)
- (should-error (ispell-region (point) (point-max)))
+ (should-error (ispell-buffer))
+ (ispell-kill-ispell nil t)
'passed)
(advice-remove 'ispell-show-choices #'checker)))
))))
)
=20
+(ert-deftest ispell/ispell-kill-ispell ()
+ "Test that killing ispell works."
+ (skip-unless (ispell-tests--some-backend-available-p))
+ (with-environment-variables (("HOME" temporary-file-directory))
+ (let* ((default-directory temporary-file-directory)
+ (words '("tarampampamtararam" "test" "test" "more" "obvious" "w=
ord"))
+ (text (string-join words " ")))
+ (with-temp-buffer
+ (with-ispell-global-dictionary nil
+ (letopt ((ispell-program-name (ispell-tests--some-backend)))
+ (insert text)
+ (ispell-init-process)
+ (should ispell-async-processp)
+ (should (eq (ispell-process-status) 'run))
+ (ispell-kill-ispell nil t)))
+ 'passed
+ )))
+ (message "lwf:debug2:ispell-program-name=3D%s:ispell-dictionary=3D%s"
+ ispell-program-name ispell-dictionary)
+ )
+
+(ert-deftest ispell/ispell/buffer ()
+ "`ispell' is just a wrapper around `ispell-region'
+and `ispell-buffer', which is also a wrapper around
+`ispell-buffer'.
+This test might seem confusing, as it does not check
+for the availability of the backend, but this does
+not matter `ispell' function does not use the
+backend."
+ (let ((transient-mark-mode t))
+ (with-temp-buffer
+ (insert "hello world test test")
+ (goto-char 2)
+ (set-mark (point))
+ (goto-char (point-max))
+ (deactivate-mark)
+ (cl-labels ((checker-buffer ()
+ t)
+ (checker-region (_a _b)
+ (user-error "test failed")))
+ (unwind-protect
+ (progn
+ (advice-add 'ispell-buffer :override #'checker-buffer)
+ (advice-add 'ispell-region :override #'checker-region)
+ (ispell)
+ )
+ (progn
+ (advice-remove 'ispell-buffer #'checker-buffer)
+ (advice-remove 'ispell-region #'checker-region))))
+ ))
+ )
+
+(ert-deftest ispell/ispell/region ()
+ "`ispell' is just a wrapper around `ispell-region'
+and `ispell-buffer', which is also a wrapper around
+`ispell-buffer'."
+ (let ((transient-mark-mode t))
+ (with-temp-buffer
+ (insert "hello world test test")
+ (goto-char 2)
+ (set-mark (point))
+ (goto-char (point-max))
+ (activate-mark)
+ (cl-labels ((checker-buffer ()
+ (user-error "test failed"))
+ (checker-region (_a _b)
+ t))
+ (unwind-protect
+ (progn
+ (advice-add 'ispell-buffer :override #'checker-buffer)
+ (advice-add 'ispell-region :override #'checker-region)
+ (ispell)
+ )
+ (progn
+ (advice-remove 'ispell-buffer #'checker-buffer)
+ (advice-remove 'ispell-region #'checker-region))))
+ ))
+ )
+
+(ert-deftest ispell/ispell-change-dictionary ()
+ "Simple test for changing a dictionary"
+ (skip-unless (ispell-tests--some-backend-available-p))
+ (with-environment-variables (("HOME" temporary-file-directory))
+ (let* ((default-directory temporary-file-directory))
+ (letopt ((ispell-program-name (ispell-tests--some-backend)))
+ (with-temp-buffer
+ (ispell-change-dictionary "english")
+ (should (equal ispell-local-dictionary "english"))
+ (ispell-change-dictionary "default")
+ (should (equal ispell-local-dictionary nil))
+ (ispell-change-dictionary "english")
+ (should (equal ispell-local-dictionary "english"))
+ 'passed
+ ))))
+ )
+
+(ert-deftest ispell/ispell-comments-and-strings/correct ()
+ "Test that `ispell-comments-and-strings' does not err
+on a correct buffer."
+ (skip-unless (ispell-tests--some-backend-available-p))
+ (with-environment-variables (("HOME" temporary-file-directory))
+ (let* ((default-directory temporary-file-directory))
+ (letopt ((ispell-dictionary nil)
+ (ispell-program-name (ispell-tests--some-backend)))
+ (with-temp-buffer
+ (ispell-kill-ispell t t)
+ (insert "#!/bin/bash\n"
+ "echo \"string to check\"\n"
+ "# commented line\n")
+ (sh-mode)
+ (ert-with-message-capture lres
+ (ispell-comments-and-strings)
+ (should (string-match "Spell-checking .* using .* with .* dict=
ionary...done" lres))))
+ 'passed
+ )))
+ )
+
+(ert-deftest ispell/ispell-comments-and-strings/incorrect ()
+ "Test that `ispell-comments-and-strings' errs
+on a correct buffer."
+ (skip-unless (ispell-tests--some-backend-available-p))
+ (with-environment-variables (("HOME" temporary-file-directory))
+ (let* ((default-directory temporary-file-directory))
+ (letopt ((ispell-program-name (ispell-tests--some-backend)))
+ (with-temp-buffer
+ (insert "#!/bin/bash\n"
+ "echo \"string to check\"\n"
+ "# tarampampamtararam\n")
+ (sh-mode)
+ (ert-with-message-capture lres
+ (should-error (ispell-comments-and-strings)))
+ 'passed
+ ))))
+ )
+
+(ert-deftest ispell/ispell-comment-or-string-at-point ()
+ "Test that `ispell-comment-or-string-at-point' runs two tests.
+One correct an one incorrect in the same buffer."
+ (skip-unless (ispell-tests--some-backend-available-p))
+ (with-environment-variables (("HOME" temporary-file-directory))
+ (let* ((default-directory temporary-file-directory))
+ (letopt ((ispell-dictionary nil)
+ (ispell-program-name (ispell-tests--some-backend)))
+ (with-temp-buffer
+ (insert "#!/bin/bash\n"
+ "echo \"string to check\"\n"
+ "# tarampampamtararam\n")
+ (sh-mode)
+ (goto-char 25)
+ (ert-with-message-capture lres
+ (ispell-comment-or-string-at-point)
+ (should (string-match "Spell-checking .* using .* with .* dict=
ionary...done" lres)))
+ (goto-char 47)
+ (should-error (ispell-comment-or-string-at-point))
+ 'passed))))
+ )
+
+(ert-deftest ispell/ispell-pdict-save ()
+ "Simple `ispell-pdict-save' test."
+ (skip-unless (ispell-tests--some-backend-available-p))
+ (with-environment-variables (("HOME" temporary-file-directory))
+ (let* ((default-directory temporary-file-directory))
+ (letopt ((ispell-program-name (ispell-tests--some-backend)))
+ (with-temp-buffer
+ (insert "test")
+ (ispell-kill-ispell t t)
+ (ispell-pdict-save t t)
+ 'passed))))
+ )
+
+(ert-deftest ispell/ispell-pdict-save/force ()
+ "Simple `ispell-pdict-save' test."
+ (skip-unless (ispell-tests--some-backend-available-p))
+ (with-environment-variables (("HOME" temporary-file-directory))
+ (let* ((default-directory temporary-file-directory))
+ (letopt ((ispell-program-name (ispell-tests--some-backend)))
+ (with-temp-buffer
+ (insert "testttttt")
+ (goto-char 1)
+ (ispell-kill-ispell t t)
+ (ispell-pdict-save t t)
+ 'passed))))
+ )
+
+(ert-deftest ispell/ispell-pdict-save/modified ()
+ "Simple `ispell-pdict-save' test."
+ (skip-unless (ispell-tests--some-backend-available-p))
+ (with-environment-variables (("HOME" temporary-file-directory))
+ (let* ((default-directory temporary-file-directory))
+ (letopt ((ispell-program-name (ispell-tests--some-backend-available-=
p)))
+ (with-temp-buffer
+ (insert "testttttt")
+ (goto-char 1)
+ (ispell-kill-ispell t t)
+ (cl-labels ((checker (s)
+ (should (equal s "#\n"))))
+ (unwind-protect (progn
+ (advice-add 'ispell-send-string :override
+ #'checker)
+ (let ((ispell-pdict-modified-p t))
+ (ispell-pdict-save t nil)))
+ (advice-remove 'ispell-send-string #'checker))))
+ 'passed)))
+ )
+
+(ert-deftest ispell/ispell-pdict-save/unmodified ()
+ "Simple `ispell-pdict-save' test."
+ (skip-unless (ispell-tests--some-backend-available-p))
+ (with-environment-variables (("HOME" temporary-file-directory))
+ (let* ((default-directory temporary-file-directory))
+ (letopt ((ispell-program-name (ispell-tests--some-backend)))
+ (with-temp-buffer
+ (insert "testttttt")
+ (goto-char 1)
+ (ispell-kill-ispell t t)
+ (cl-labels ((checker (_s)
+ (user-error "test failed")))
+ (unwind-protect (progn
+ (advice-add 'ispell-send-string :override
+ #'checker)
+ (let ((ispell-pdict-modified-p nil))
+ (ispell-pdict-save t nil)))
+ (advice-remove 'ispell-send-string #'checker))))
+ 'passed)))
+ )
+
+(ert-deftest ispell/ispell-lookup-words/simple ()
+ "Test if `ispell-lookup-words' is runnable."
+ (with-environment-variables (("HOME" temporary-file-directory))
+ (let* ((default-directory temporary-file-directory)
+ (tempfile (make-temp-file "emacs-ispell.el-test" nil nil "waveg=
uides")))
+ (letopt ((ispell-complete-word-dict tempfile))
+ (with-temp-buffer
+ (insert "waveguid")
+ (unwind-protect
+ (progn
+ (should (equal
+ (ispell-lookup-words "waveguid")
+ '("waveguides")))
+ (should (equal
+ (ispell-lookup-words "sdfsdfasdfsadfasdfasdf")
+ nil)))
+ (delete-file tempfile)))
+ 'passed)))
+ )
+
+(ert-deftest ispell/ispell-complete-word/ispell-completion-at-point ()
+ "Test if `ispell-complete-word' and `ispell-completion-at-point'
+are runnable."
+ (with-environment-variables (("HOME" temporary-file-directory))
+ (let* ((default-directory temporary-file-directory)
+ (tempfile (make-temp-file "emacs-ispell.el-test" nil nil "waveg=
uides")))
+ (ignore-errors (ispell-kill-ispell t t))
+ (with-ispell-global-dictionary nil
+ (letopt ((ispell-program-name (ispell-tests--some-backend))
+ (ispell-complete-word-dict tempfile))
+ (with-temp-buffer
+ (insert "waveguid")
+ (cl-labels ((my-ispell-command-loop (_p _n _w _s _e)
+ (car (nth 2 (ispell-completion-at-point)))))
+ (unwind-protect
+ (progn
+ (advice-add 'ispell-command-loop :override
+ #'my-ispell-command-loop)
+ (should (equal (car (nth 2 (ispell-completion-at-point=
)))
+ "waveguides"))
+ (ispell-complete-word)
+ (should (equal "waveguides" (buffer-string))))
+ (progn
+ (delete-file tempfile)
+ (advice-remove
+ 'ispell-command-loop
+ #'my-ispell-command-loop)))))
+ 'passed))))
+ )
+
+(ert-deftest ispell/ispell-complete-word-interior-frag/simple ()
+ "Test if `ispell-complete-word-interior-frag' is runnable."
+ (with-environment-variables (("HOME" temporary-file-directory))
+ (let* ((default-directory temporary-file-directory)
+ (tempfile (make-temp-file "emacs-ispell.el-test" nil nil "waveg=
uides")))
+ (with-ispell-global-dictionary nil
+ (letopt ((ispell-program-name (ispell-tests--some-backend))
+ (ispell-complete-word-dict tempfile))
+ (with-temp-buffer
+ (insert "waveguid")
+ (cl-labels ((my-ispell-command-loop (_p _n _w _s _e)
+ (car (nth 2 (ispell-completion-at-point)))))
+ (unwind-protect
+ (progn
+ (advice-add 'ispell-command-loop :override
+ #'my-ispell-command-loop)
+ (goto-char 4)
+ (ispell-complete-word-interior-frag)
+ (should (equal "waveguides" (buffer-string))))
+ (progn
+ (delete-file tempfile)
+ (advice-remove
+ 'ispell-command-loop
+ #'my-ispell-command-loop)))))
+ 'passed))))
+ )
+
+(ert-deftest ispell/ispell-minor-mode/simple ()
+ "Try enabling `ispell-minor-mode' and test
+one test file."
+ (skip-unless (ispell-tests--some-backend-available-p))
+ (with-environment-variables (("HOME" temporary-file-directory))
+ (let* ((default-directory temporary-file-directory))
+ (letopt ((ispell-program-name (ispell-tests--some-backend))
+ (ispell-dictionary nil))
+ (with-temp-buffer
+ (text-mode)
+ (ispell-minor-mode)
+ (insert "tarampampamtararam")
+ (set--this-command-keys " ")
+ (ert-with-message-capture lres
+ (ispell-minor-check)
+ (should (string-match "TARAMPAMPAMTARARAM is incorrect" lres)))
+ )
+ 'passed)))
+ )
+
+(ert-deftest ispell/ispell-message/correct ()
+ "Test that `ispell-message' works.
+`ispell-message' is intended to be run before
+a message is sent in `message-mode' or `mml-mode'."
+ (skip-unless (ispell-tests--some-backend-available-p))
+ (with-environment-variables (("HOME" temporary-file-directory))
+ (let* ((default-directory temporary-file-directory))
+ (letopt ((ispell-program-name (ispell-tests--some-backend))
+ (ispell-dictionary nil))
+ (with-temp-buffer
+ (insert
+ "To:
+Subject:
+From: Anon <anon@anon>
+Fcc: /tmp/234234.cb022f1a625b65b2.mainframe:2,S
+User-Agent: mu4e 1.12.9; emacs 31.0.50
+Date: Tue, 09 Sep 2025 07:43:58 +0800
+Message-ID: <878qiov7b5.fsf@mainframe>
+--text follows this line--
+Hello World
+--
+signature
+")
+ (message-mode)
+ (ert-with-message-capture lres
+ (ispell-message)
+ (should (not (string-match "is incorrect" lres)))
+ )
+ (set-buffer-modified-p nil)
+ )
+ 'passed)))
+ )
+(ert-deftest ispell/ispell-message/incorrect ()
+ "Test that `ispell-message' works.
+`ispell-message' is intended to be run before
+a message is sent in `message-mode' or `mml-mode'."
+ (skip-unless (ispell-tests--some-backend-available-p))
+ (with-environment-variables (("HOME" temporary-file-directory))
+ (let* ((default-directory temporary-file-directory))
+ (letopt ((ispell-program-name (ispell-tests--some-backend)))
+ (with-temp-buffer
+ (insert
+ "To:
+Subject:
+From: Anon <anon@anon>
+Fcc: /tmp/234234.cb022f1a625b65b2.mainframe:2,S
+User-Agent: mu4e 1.12.9; emacs 31.0.50
+Date: Tue, 09 Sep 2025 07:43:58 +0800
+Message-ID: <878qiov7b5.fsf@mainframe>
+--text follows this line--
+<#part sign=3Dpgpmime>
+tarampampamtararam
+--
+signature
+")
+ (message-mode)
+ (cl-labels ((checker ()
+ (user-error "expected error")))
+ (unwind-protect
+ (progn
+ (advice-add 'ispell-show-choices :override #'checker)
+ (should-error (ispell-message)))
+ (progn
+ (advice-remove 'ispell-show-choices #'checker)
+ (set-buffer-modified-p nil))))
+
+ )
+ 'passed)))
+ )
+
+
+
+;;=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
+;; On this "emacs page" I want to test that customise variables change
+;; function behavior in the way are intended to do.
+
+
+
(provide 'tests-ispell)
;;; tests-ispell.el ends here
--=20
2.46.4
--=-=-=
Content-Type: multipart/signed; boundary="==-=-=";
micalg=pgp-sha256; protocol="application/pgp-signature"
--==-=-=
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable
=2D-=20
Your sincerely,
Vladimir Nikishkin (MiEr, lockywolf)
(Laptop)
--==-=-=
Content-Type: application/pgp-signature; name="signature.asc"
-----BEGIN PGP SIGNATURE-----
iHUEARYIAB0WIQSWBebxCAoqaJP8N/j71sGyD+xtqgUCaMDeqwAKCRD71sGyD+xt
qskNAP93aaDh2wj3s6AkgIX3zmYzqqXHwZSbWSoI8glG33MjwwD/QAAMDyYGL1rG
YuQ5ZArhOqSPsAP3kPWb0B42RyhBmwg=
=1u9T
-----END PGP SIGNATURE-----
--==-=-=--
--=-=-=--
Lockywolf <for_emacs_1@HIDDEN>:bug-gnu-emacs@HIDDEN.
Full text available.bug-gnu-emacs@HIDDEN:bug#79417; Package emacs.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.