GNU bug report logs - #79514
31.0.50; ispell-find-aspell-dictionaries should filter dups from "aspell dicts"

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: emacs; Reported by: Jens Schmidt <jschmidt4gnu@HIDDEN>; dated Thu, 25 Sep 2025 19:07:02 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.

Message received at 79514 <at> debbugs.gnu.org:


Received: (at 79514) by debbugs.gnu.org; 2 Oct 2025 11:56:26 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Oct 02 07:56:26 2025
Received: from localhost ([127.0.0.1]:39795 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1v4Hv7-0000ql-QK
	for submit <at> debbugs.gnu.org; Thu, 02 Oct 2025 07:56:26 -0400
Received: from coconut.lockywolf.net ([213.165.252.157]:35420)
 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 1v4Huv-0000q0-32
 for 79514 <at> debbugs.gnu.org; Thu, 02 Oct 2025 07:56:15 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=lockywolf.net;
 s=2024-10-06; t=1759406171;
 bh=q/PRVJicLL3GLIAM1DgCSVPHvMNAyh+xYvsCckX1dHY=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date;
 b=kz+KW0o6Fo0KV9vgOSSw2LbZDvE8tHqTWBwCXvHTvYKYCEOXACa3UG+9eDWg6gSkO
 gMs3P3LOU+VDpI4EaKwux+VzV0G+CkFsV+aCpQLgjFb2+90KVt8faiNCzRGFp4KwgS
 16KNu3sgkanCgMkLFUWdZ4O2ogcugbjVd0b877A3d8dnBGfNdOxjrL9XO0MeVi+ZVA
 VdJno/5KiK3QfQil9lD8wXMru1uY1FPtK8xc1yZlwKaj8shffETNuWpYHC6sVSwnPI
 WyNISsGdD6bpQzyQXDlY7QYjJ/nI+gNl/wtARMwzKrhwd/xgF3PDDqVZaz2+XBjcfw
 5glByt7WONc3Q==
Received: from laptop.lockywolf.net (unknown
 [IPv6:2408:824e:d2e:8ed0:a941:e1c:c5b7:df52])
 by coconut.lockywolf.net (postfix-encrypted) with ESMTPSA id EEDD13903D;
 Thu,  2 Oct 2025 19:56:08 +0800 (CST)
From: Lockywolf <for_emacs_1@HIDDEN>
To: Jens Schmidt <jschmidt4gnu@HIDDEN>
Subject: Re: 31.0.50; ispell-find-aspell-dictionaries should filter dups
 from "aspell dicts"
In-Reply-To: <f145a7cf-6420-4409-8ea4-3bc6dac7cbc7@HIDDEN>
References: <175724665403.6018.1750734078039941115@HIDDEN>
 <20250907120419.0C700C008BB@HIDDEN>
 <87wm67h5q8.fsf@HIDDEN> <87segvrqo8.fsf@HIDDEN>
 <87plbyhi0h.fsf@HIDDEN> <87y0qmr68b.fsf@HIDDEN>
 <87qzwer59s.fsf@HIDDEN> <87o6rifrou.fsf@HIDDEN>
 <87ikhqqyj2.fsf@HIDDEN> <87y0qlduxf.fsf@HIDDEN>
 <87cy7xf78u.fsf@HIDDEN> <87ikhnua2c.fsf@HIDDEN>
 <87plbvajcm.fsf@HIDDEN> <87zfazsqfk.fsf@HIDDEN>
 <31225e6a-c01e-4cb5-9d61-1597f0cc17e7@HIDDEN>
 <87ldm3e6hr.fsf@HIDDEN>
 <5d6115f2-0c03-45ce-8368-bca704ed1057@HIDDEN>
 <87segaavjd.fsf@HIDDEN>
 <87plbe9b7u.fsf@HIDDEN>
 <f145a7cf-6420-4409-8ea4-3bc6dac7cbc7@HIDDEN>
User-Agent: mu4e 1.12.12; emacs 31.0.50
Date: Thu, 02 Oct 2025 19:56:01 +0800
Message-ID: <878qht4iwe.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="==-=-=";
 micalg=pgp-sha256; protocol="application/pgp-signature"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79514
Cc: Eli Zaretskii <eliz@HIDDEN>, Lockywolf <for_emacs_1@HIDDEN>,
 79514 <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: -1.0 (-)

--==-=-=
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Jens Schmidt <jschmidt4gnu@HIDDEN> writes:

> For Debian, the de_XX.alias and de_XX.multi should be identically:
>
>   [~]$ cat /usr/lib/aspell/de_DE.alias
>   add de_DE.multi
>   [~]$ cat /usr/lib/aspell/de_DE.multi
>   add de-common.rws
>   add de_DE-only.rws
>
> So it does not really matter which one of the both "de_DE"s you
> choose.  This might be as well a packaging issue.  I'll open a
> Debian bug on that on Monday.
>
> Regardless of that, I think Emacs should remove these duplicates,
> since aspell variants that produce these duplicates are out there
> in the wild.  I've attached a patch for that, Lockywolf and Eli,
> WDYT?  (Not surprisingly, that patch makes the first of the test
> failures go away.)

I do not think this is an issue that should be solved on the Emacs's
side.  There are many ways in which the backend's installation can be
mangled by the installing party (the distribution probably), we cannot
expect to compensate for all such issues.

Moreover, imagine that the contents of de_DE.alias were like this:
add en_EN.multi (presumably my mistake).

This would have created a dictionary with an identical name, but a
totally different meaning. So if the first one is selected, the
experience would be totally broken, and if the second one is selected,
the mistake would forever go unnoticed. I do not think we should no it.


> Your patch unfortunately does not help in the case of the ispell
> problem (nor does the updated one you sent today).  You seem to
> assume in at least one place that there is always an English
> dictionary called "english".  With Debian, neither of these
> assumptions is true: There is not necessarily an English
> dictionary (true for ispell, aspell, or hunspell), and if there
> is one, it is not necessarily called "english" (this one is only
> true for ispell).

Fair enough, I need to think more about how to select the default
dictionary better.

> Here is a minimal, docker-based test case to demonstrate that:

Thank you!

>   # no dictionary at all for ispell
>   root@d345dec430e1:/# ispell -a
>   Can't open /usr/lib/ispell/default.hash

This is clearly a bug in Debian. I am not sure how their "recommends"
system works, but ispell is always expecting that at least its default
dictionary is present (by default it is called "americanmed"). This
"can't open" happens not because we, as the users, forgot to give it
some required parameter, but because the installation is broken, and the
built-in defaults do not work.

>   # no dictionary at all for aspell
>   root@d345dec430e1:/# aspell -a
>   Error: No word lists can be found for the language "en_US".

Same argument. We are not giving aspell any invalid setting or a broken
path, we are asking it to launch with its default (presumably,
minimally-working) settings, so if it is broken with such settings, it
is the packager's problem.

>   # only German dictionary for hunspell
>   root@d345dec430e1:/# hunspell -a
>   Can't open affix or dictionary files for dictionary named "default".

Same argument. A program should work according to its reasonable
defaults as implied by the developer setting reasonable defaults.

>   apt -y install ibritish iamerican
>
>   # british: yes, american: yes, default: yes (american), english: NO
>   root@d345dec430e1:/# echo colour | ispell -a -d british
>   @(#) International Ispell Version 3.4.06 30 Oct 2023
>   *
>
>   root@d345dec430e1:/# echo color | ispell -a -d american
>   @(#) International Ispell Version 3.4.06 30 Oct 2023
>   *
>
>   root@d345dec430e1:/# echo color | ispell -a -d default
>   @(#) International Ispell Version 3.4.06 30 Oct 2023
>   *
>
>   root@d345dec430e1:/# echo color | ispell -a -d english
>   Can't open /usr/lib/ispell/english.hash

I think that these tests are missing the point. Of course there might be
some dictionaries other than the default available. (The second example
would not work with ispell.el as it is at the moment, because "default"
has special meaning for ispell.el.) But the engine, as it is developed
by the developer, is expected to be behaving according to the
developer's intentions and in accordance with the official
documentation. Could you show your
"ispell -vv | grep -E '(DEFHASH|DEFLANG)'", so that we could see which
dictionary is actually the default for ispell in Debian?

> The following patch searches for "english", "british", "american"
> and, if none of these is present, skips the (otherwise) failing
> test.

Sorry, but I think your patch sort of misses the point. You are probably
right that it might be not correct to rely on actually having a
dictionary called "ispell", but this test is not doing anything
english-specific and not testing ispell.el's performance with English.
If you look at this test more carefully, you will see that it is
imitating a plain-text file with "english" set as a buffer-local
dictionary specification. Even if you have no English dictionary on your
machine, you could have received such a file from your friend over
email. So in fact you have found a bug, but it is not a bug in ispell
tests, it is a bug in ispell.el, in that given a valid file with a valid
buffer-local dictionary, it produces an error.

I think that it would be better if you file a separate bug with Emacs,
this time not with ispell-tests, but with ispell.el itself, and say
something like this:

"I am editing a file received from Lockywolf over email, which looks the
following":

#+begin_example
[comment]: <>(-*- mode:markdown; -*-)

This is a test.

[comment]: <>( Local IspellDict: english )
#+end_example

"I have flyspell-mode enabled, because I want all my texts to be
perfect, but flyspell cannot start the spellchecker on visiting this
file with a cryptic error message. Could you fix this?"

=2D-=20
Your sincerely,
Vladimir Nikishkin (MiEr, lockywolf)
(Laptop)

--==-=-=
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iHUEARYIAB0WIQSWBebxCAoqaJP8N/j71sGyD+xtqgUCaN5oUgAKCRD71sGyD+xt
qqJ4AQCrCBeCc8DlDQC60rKvtsxPHWvkQx6nOeS4h7MpWKe6EgEAvAu+beMPzUKX
q9l3RLU6Pea/DpoKpwVSwUbLFDGhVwg=
=JY+Z
-----END PGP SIGNATURE-----
--==-=-=--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79514; Package emacs. Full text available.

Message received at 79514 <at> debbugs.gnu.org:


Received: (at 79514) by debbugs.gnu.org; 27 Sep 2025 20:07:58 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 27 16:07:58 2025
Received: from localhost ([127.0.0.1]:42493 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1v2bD0-0002GB-Rd
	for submit <at> debbugs.gnu.org; Sat, 27 Sep 2025 16:07:58 -0400
Received: from mr5.vodafonemail.de ([145.253.228.165]:39192)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <jschmidt4gnu@HIDDEN>)
 id 1v2bCv-0002Fu-AG
 for 79514 <at> debbugs.gnu.org; Sat, 27 Sep 2025 16:07:50 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vodafonemail.de;
 s=vfde-mb-mr2-23sep; t=1759003662;
 bh=C3179WozAFwKA7mPHYcavxBxsQ2PTdpxUNVyHREZQbc=;
 h=Content-Type:Message-ID:Date:User-Agent:Subject:To:References:
 From:Content-Language:In-Reply-To:From;
 b=y7DTco9IMUVHOxj0UsqxXgcl26ppjuul/nZlEM93y3VbfBc42X3GTyC/sqnnDzRz0
 mLK2uR1HaxNluWGQxxvXt+UHPL6HOSr1vIspTbtsrwxd0/oJi9QbXiytie4jPiqIwq
 Ipa8tY/hC1PSLsmlR1l4DBdHThFF6WZHtIQZu20A=
Received: from smtp.vodafone.de (unknown [10.0.0.2])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits))
 (No client certificate requested)
 by mr5.vodafonemail.de (Postfix) with ESMTPS id 4cYz5V379Dz1y8b;
 Sat, 27 Sep 2025 20:07:42 +0000 (UTC)
Received: from [192.168.178.42] (port-92-199-130-153.dynamic.as20676.net
 [92.199.130.153])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp.vodafone.de (Postfix) with ESMTPSA id 4cYz5H2HnXz8sXK;
 Sat, 27 Sep 2025 20:07:28 +0000 (UTC)
Content-Type: multipart/mixed; boundary="------------YQ3hvD3CnQGdZk0wOR8Ww31y"
Message-ID: <f145a7cf-6420-4409-8ea4-3bc6dac7cbc7@HIDDEN>
Date: Sat, 27 Sep 2025 22:07:27 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: 31.0.50; ispell-find-aspell-dictionaries should filter dups from
 "aspell dicts"
To: Lockywolf <for_emacs_1@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>
References: <175724665403.6018.1750734078039941115@HIDDEN>
 <20250907120419.0C700C008BB@HIDDEN> <87wm67h5q8.fsf@HIDDEN>
 <87segvrqo8.fsf@HIDDEN> <87plbyhi0h.fsf@HIDDEN>
 <87y0qmr68b.fsf@HIDDEN> <87qzwer59s.fsf@HIDDEN>
 <87o6rifrou.fsf@HIDDEN> <87ikhqqyj2.fsf@HIDDEN>
 <87y0qlduxf.fsf@HIDDEN> <87cy7xf78u.fsf@HIDDEN>
 <87ikhnua2c.fsf@HIDDEN> <87plbvajcm.fsf@HIDDEN>
 <87zfazsqfk.fsf@HIDDEN>
 <31225e6a-c01e-4cb5-9d61-1597f0cc17e7@HIDDEN>
 <87ldm3e6hr.fsf@HIDDEN>
 <5d6115f2-0c03-45ce-8368-bca704ed1057@HIDDEN>
 <87segaavjd.fsf@HIDDEN> <87plbe9b7u.fsf@HIDDEN>
From: Jens Schmidt <jschmidt4gnu@HIDDEN>
Content-Language: de-DE-frami, en-US
In-Reply-To: <87plbe9b7u.fsf@HIDDEN>
X-purgate-type: clean
X-purgate: clean
X-purgate-size: 7148
X-purgate-ID: 155817::1759003658-D6641F98-2888C17D/0/0
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 79514
Cc: 79514 <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: -1.7 (-)

This is a multi-part message in MIME format.
--------------YQ3hvD3CnQGdZk0wOR8Ww31y
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 2025-09-26  04:52, Lockywolf wrote:

> 1. Regarding Aspell:
> So yeah, apparently the common practice by distro developers is to give
> each dictionary a separate name. This probably is a bug in Aspell,
> though, not in Debian, because even if "aspell dump dicts" produces
> de_AT twice, how would it know which one to select when called with -d?

For Debian, the de_XX.alias and de_XX.multi should be identically:

  [~]$ cat /usr/lib/aspell/de_DE.alias
  add de_DE.multi
  [~]$ cat /usr/lib/aspell/de_DE.multi
  add de-common.rws
  add de_DE-only.rws

So it does not really matter which one of the both "de_DE"s you
choose.  This might be as well a packaging issue.  I'll open a
Debian bug on that on Monday.

Regardless of that, I think Emacs should remove these duplicates,
since aspell variants that produce these duplicates are out there
in the wild.  I've attached a patch for that, Lockywolf and Eli,
WDYT?  (Not surprisingly, that patch makes the first of the test
failures go away.)

> 2. Regarding ispell:
> 
> Could you re-run the tests with the patch I have also sent to Alan
> Mackenzie, please? I have introduced a few robustness improvements.

Your patch unfortunately does not help in the case of the ispell
problem (nor does the updated one you sent today).  You seem to
assume in at least one place that there is always an English
dictionary called "english".  With Debian, neither of these
assumptions is true: There is not necessarily an English
dictionary (true for ispell, aspell, or hunspell), and if there
is one, it is not necessarily called "english" (this one is only
true for ispell).

Here is a minimal, docker-based test case to demonstrate that:

  docker run -it --rm debian:trixie
  apt update
  # required to silence some warnings during installation
  apt -y install dialog whiptail

  # one can install ispell and aspell completely w/o
  # dictionaries, hunspell requires at least some dictionary
  apt -y install --no-install-recommends ispell aspell hunspell hunspell-de-de-frami

  # no dictionary at all for ispell
  root@d345dec430e1:/# ispell -a
  Can't open /usr/lib/ispell/default.hash

  # no dictionary at all for aspell
  root@d345dec430e1:/# aspell -a
  Error: No word lists can be found for the language "en_US".

  # only German dictionary for hunspell
  root@d345dec430e1:/# hunspell -a
  Can't open affix or dictionary files for dictionary named "default".

  apt -y install ibritish iamerican

  # british: yes, american: yes, default: yes (american), english: NO
  root@d345dec430e1:/# echo colour | ispell -a -d british
  @(#) International Ispell Version 3.4.06 30 Oct 2023
  *

  root@d345dec430e1:/# echo color | ispell -a -d american
  @(#) International Ispell Version 3.4.06 30 Oct 2023
  *

  root@d345dec430e1:/# echo color | ispell -a -d default
  @(#) International Ispell Version 3.4.06 30 Oct 2023
  *

  root@d345dec430e1:/# echo color | ispell -a -d english
  Can't open /usr/lib/ispell/english.hash

The following patch searches for "english", "british", "american"
and, if none of these is present, skips the (otherwise) failing
test.

diff --git a/test/lisp/textmodes/ispell-tests/ispell-tests.el b/test/lisp/textmodes/ispell-tests/ispell-tests.el
index d4f3c281e95..f9d18d695b5 100644
--- a/test/lisp/textmodes/ispell-tests/ispell-tests.el
+++ b/test/lisp/textmodes/ispell-tests/ispell-tests.el
@@ -775,7 +775,17 @@ ispell/ispell-accept-buffer-local-defs/simple
   (with-environment-variables (("HOME" temporary-file-directory))
     (with-temp-buffer
       (letopt ((ispell-program-name (ispell-tests--some-backend)))
-        (let ((test-dictname "english")
+        ;; Not all distributions deliver an English dictionary called
+        ;; "english".  Try the most reasonable English variants, and if
+        ;; none of these is good enough, skip this test.
+        (let ((test-dictname (catch 'found
+                               (dolist (lang '("english" "british" "american"))
+                                 (when (equal 0
+                                              (call-process
+                                               ispell-program-name
+                                               nil nil nil "-a" "-d" lang))
+                                   (throw 'found lang)))
+                               (skip-when t)))
               (test-extcharmode "~latin3")
               (test-parser "~testparser")
               (test-localword1 "aaaaaaaaaaaaa")

That patch makes the second of my test failures go away.

WDYT?
--------------YQ3hvD3CnQGdZk0wOR8Ww31y
Content-Type: text/x-patch; charset=UTF-8;
 name="0001-Delete-duplicate-dictionaries-reported-by-aspell.patch"
Content-Disposition: attachment;
 filename*0="0001-Delete-duplicate-dictionaries-reported-by-aspell.patch"
Content-Transfer-Encoding: base64

RnJvbSA2ZjgxYTlmMzZjMjBiMDQ4YzI1MWYwZmQyOTZjZTYxOWU4YWYxOWMyIE1vbiBTZXAg
MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKZW5zIFNjaG1pZHQgPGZhcmJsb3NAdm9kYWZvbmVt
YWlsLmRlPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDIwOjUxOjE1ICswMjAwClN1YmplY3Q6
IFtQQVRDSF0gRGVsZXRlIGR1cGxpY2F0ZSBkaWN0aW9uYXJpZXMgcmVwb3J0ZWQgYnkgYXNw
ZWxsCgpGcm9tOiBKZW5zIFNjaG1pZHQgPGpzY2htaWR0NGdudUB2b2RhZm9uZW1haWwuZGU+
CgpBdCBsZWFzdCBvbiBEZWJpYW4gR05VL0xpbnV4LCAiYXNwZWxsIGRpY3RzIiBjYW4gcmVw
b3J0IGR1cGxpY2F0ZQpkaWN0aW9uYXJpZXMgaW4gaXRzIG91dHB1dC4gIFdoaWxlIHRoYXQg
ZG9lcyBub3QgY29uZnVzZSBmdW5jdGlvbgpgaXNwZWxsLWZpbmQtYXNwZWxsLWRpY3Rpb25h
cmllcycgcGVyIHNlLCBpdCBtaWdodCBjb25mdXNlIGNhbGxlcnMgb2YKdGhhdCBmdW5jdGlv
bi4KCiogbGlzcC90ZXh0bW9kZXMvaXNwZWxsLmVsIChpc3BlbGwtZmluZC1hc3BlbGwtZGlj
dGlvbmFyaWVzKTogRGVsZXRlCmR1cGxpY2F0ZSBkaWN0aW9uYXJpZXMgcmVwb3J0ZWQgYnkg
ImFzcGVsbCBkaWN0cyIuICAoQnVnIzc5NTE0KQotLS0KIGxpc3AvdGV4dG1vZGVzL2lzcGVs
bC5lbCB8IDkgKysrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA0
IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpc3AvdGV4dG1vZGVzL2lzcGVsbC5lbCBi
L2xpc3AvdGV4dG1vZGVzL2lzcGVsbC5lbAppbmRleCBiMzdkMDdmNWU2Mi4uNjU3YjBiZjYz
MDEgMTAwNjQ0Ci0tLSBhL2xpc3AvdGV4dG1vZGVzL2lzcGVsbC5lbAorKysgYi9saXNwL3Rl
eHRtb2Rlcy9pc3BlbGwuZWwKQEAgLTgxOSwxMCArODE5LDExIEBAIGlzcGVsbC0tYXNwZWxs
LWZvdW5kLWRpY3Rpb25hcmllcwogKGRlZnVuIGlzcGVsbC1maW5kLWFzcGVsbC1kaWN0aW9u
YXJpZXMgKCkKICAgIkZpbmQgQXNwZWxsJ3MgZGljdGlvbmFyaWVzLCBhbmQgcmVjb3JkIGlu
IGBpc3BlbGwtYXNwZWxsLWRpY3Rpb25hcnktYWxpc3QnLiIKICAgKGxldCogKChkaWN0aW9u
YXJpZXMKLQkgIChzcGxpdC1zdHJpbmcKLQkgICAod2l0aC10ZW1wLWJ1ZmZlcgotCSAgICAg
KGlzcGVsbC1jYWxsLXByb2Nlc3MgaXNwZWxsLXByb2dyYW0tbmFtZSBuaWwgdCBuaWwgImRp
Y3RzIikKLQkgICAgIChidWZmZXItc3RyaW5nKSkpKQorICAgICAgICAgIChkZWxldGUtZHVw
cworCSAgIChzcGxpdC1zdHJpbmcKKwkgICAgKHdpdGgtdGVtcC1idWZmZXIKKwkgICAgICAo
aXNwZWxsLWNhbGwtcHJvY2VzcyBpc3BlbGwtcHJvZ3JhbS1uYW1lIG5pbCB0IG5pbCAiZGlj
dHMiKQorCSAgICAgIChidWZmZXItc3RyaW5nKSkpKSkKIAkgOzsgU2VhcmNoIGZvciB0aGUg
bmFtZWQgZGljdGlvbmFyaWVzLgogCSAoZm91bmQKIAkgIChkZWxxIG5pbAotLSAKMi4zOS41
Cgo=

--------------YQ3hvD3CnQGdZk0wOR8Ww31y--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79514; Package emacs. Full text available.

Message received at 79514 <at> debbugs.gnu.org:


Received: (at 79514) by debbugs.gnu.org; 26 Sep 2025 02:52:54 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Sep 25 22:52:54 2025
Received: from localhost ([127.0.0.1]:33084 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1v1yZq-0007JC-1F
	for submit <at> debbugs.gnu.org; Thu, 25 Sep 2025 22:52:54 -0400
Received: from coconut.lockywolf.net
 ([2a04:c5c0:0:d7:f816:3eff:fe6b:287f]:44258)
 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 1v1yZl-0007Iz-34
 for 79514 <at> debbugs.gnu.org; Thu, 25 Sep 2025 22:52:50 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=lockywolf.net;
 s=2024-10-06; t=1758855166;
 bh=h/ty8n05fyUrUJRJpq1sAJw9x21IaUMGisY33f+Ej4U=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date;
 b=ZakwCCElV+IDY71re6HZweVQigoHGlDOE8O1Ylx8LTuFVYh68BuumyltPBNgc8DXj
 hNoFS4FfpiSUBYbYQLQHwlYfAGA3x1sxScUn4fwys2tqwwzEgulV8vZUrndXT+mVQq
 2ap0fSLpQTlWJK+KfPPyoXk3UVyG5fkGWqGlMNIwRKUyaIGY9T4iwCGiJ3Rrfp3/yJ
 HQtTXxzZLYo56i0f4rJwzicQ3UOND8lAeQ2cSTUBiMnPoUc8ol7qAhiwcZ/JuPMD+K
 /bd0CXAlYFItpErAlVl9REL9mLcL/JiVezKGev07tOPSVeuDfcLwMYmUMU7xJSkEjx
 vQcqz2ONQlIfQ==
Received: from laptop.lockywolf.net (unknown [IPv6:2001:470:24:315::102])
 by coconut.lockywolf.net (postfix-encrypted) with ESMTPSA id 876E838F22;
 Fri, 26 Sep 2025 10:52:44 +0800 (CST)
From: Lockywolf <for_emacs_1@HIDDEN>
To: Jens Schmidt <jschmidt4gnu@HIDDEN>
Subject: Re: 31.0.50; ispell-find-aspell-dictionaries should filter dups
 from "aspell dicts"
In-Reply-To: <87segaavjd.fsf@HIDDEN>
References: <175724665403.6018.1750734078039941115@HIDDEN>
 <20250907120419.0C700C008BB@HIDDEN>
 <87wm67h5q8.fsf@HIDDEN> <87segvrqo8.fsf@HIDDEN>
 <87plbyhi0h.fsf@HIDDEN> <87y0qmr68b.fsf@HIDDEN>
 <87qzwer59s.fsf@HIDDEN> <87o6rifrou.fsf@HIDDEN>
 <87ikhqqyj2.fsf@HIDDEN> <87y0qlduxf.fsf@HIDDEN>
 <87cy7xf78u.fsf@HIDDEN> <87ikhnua2c.fsf@HIDDEN>
 <87plbvajcm.fsf@HIDDEN> <87zfazsqfk.fsf@HIDDEN>
 <31225e6a-c01e-4cb5-9d61-1597f0cc17e7@HIDDEN>
 <87ldm3e6hr.fsf@HIDDEN>
 <5d6115f2-0c03-45ce-8368-bca704ed1057@HIDDEN>
 <87segaavjd.fsf@HIDDEN>
User-Agent: mu4e 1.12.12; emacs 31.0.50
Date: Fri, 26 Sep 2025 10:52:37 +0800
Message-ID: <87plbe9b7u.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 79514
Cc: Lockywolf <for_emacs_1@HIDDEN>, 79514 <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: -1.0 (-)

--=-=-=
Content-Type: multipart/signed; boundary="==-=-=";
	micalg=pgp-sha256; protocol="application/pgp-signature"

--==-=-=
Content-Type: text/plain

Lockywolf <for_emacs_1@HIDDEN> writes:

1. Regarding Aspell:

On my machine, I have:

find /usr/lib64/aspell/ -regex '.*\/de.*'
/usr/lib64/aspell/de-common.rws
/usr/lib64/aspell/de.multi
/usr/lib64/aspell/de_phonet.dat
/usr/lib64/aspell/de_CH.multi
/usr/lib64/aspell/de_CH-only.rws
/usr/lib64/aspell/deutsch.alias
/usr/lib64/aspell/de_DE.multi
/usr/lib64/aspell/de.dat
/usr/lib64/aspell/de_DE-only.rws
/usr/lib64/aspell/de_affix.dat
/usr/lib64/aspell/de_AT-only.rws
/usr/lib64/aspell/de_AT.multi

and for English, which is more abundant:

/usr/lib64/aspell/en_GB-variant_0.multi
/usr/lib64/aspell/en_GB-variant_0.rws
/usr/lib64/aspell/en_GB-variant_1.multi
/usr/lib64/aspell/en_GB-variant_1.rws
/usr/lib64/aspell/en_GB-w_accents.multi
/usr/lib64/aspell/en_GB-wo_accents.multi
/usr/lib64/aspell/en_GB.multi
/usr/lib64/aspell/en_US-variant_0.multi
/usr/lib64/aspell/en_US-variant_1.multi
/usr/lib64/aspell/en_US-w_accents-only.rws
/usr/lib64/aspell/en_US-w_accents.multi
/usr/lib64/aspell/en_US-wo_accents-only.rws
/usr/lib64/aspell/en_US-wo_accents.multi
/usr/lib64/aspell/en_US.multi
/usr/lib64/aspell/en_affix.dat
/usr/lib64/aspell/en_phonet.dat
/usr/lib64/aspell/english-variant_0.alias
/usr/lib64/aspell/english-variant_1.alias
/usr/lib64/aspell/english-variant_2.alias
/usr/lib64/aspell/english-w_accents.alias
/usr/lib64/aspell/english-wo_accents.alias
/usr/lib64/aspell/english.alias

where ".alias" files are mostly just similar to:
add en-variant_0.multi

So yeah, apparently the common practice by distro developers is to give
each dictionary a separate name. This probably is a bug in Aspell,
though, not in Debian, because even if "aspell dump dicts" produces
de_AT twice, how would it know which one to select when called with -d?

2. Regarding ispell:

Could you re-run the tests with the patch I have also sent to Alan
Mackenzie, please? I have introduced a few robustness improvements.

(Attaching it here anyway, no need to search the mailing list for the
patch.)


--==-=-=
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iHUEARYIAB0WIQSWBebxCAoqaJP8N/j71sGyD+xtqgUCaNX/9wAKCRD71sGyD+xt
qgTUAP9rtqGj+Fskgkv+Utc/JkX/+gzkdjpNZ0QoNkn+P65obgD+I71iEPsPS0AV
hf+RbrX4u+dt2GOITRuCoJTcAMtenwE=
=Mgr9
-----END PGP SIGNATURE-----
--==-=-=--

--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0001-Fix-detecting-a-working-hunspell-on-systems-without-.patch

From 339003c9db6a4d48734f199e955e2d9caa26a8f8 Mon Sep 17 00:00:00 2001
From: Lockywolf <for_emacs_1@HIDDEN>
Date: Mon, 22 Sep 2025 12:46:03 +0800
Subject: [PATCH] Fix detecting a working hunspell on systems without a
 dictionary.

* test/lisp/textmodes/ispell-tests/ispell-hunspell-tests.el
  (ispell-tests-hunspell--hunspell-working): Implement checker.
  (ispell/hunspell/ispell-word/russian/check-only): Add skip-check.
  (ispell/hunspell/ispell-word/english/check-only): Add skip-check.
  (ispell/hunspell/ispell-word/language-switch/check-only): Add
  skip-check.
  (ispell/hunspell/ispell-word/russian/check-only/wrong-language): Add
  skip-check.
  (ispell/hunspell/ispell-word/multilang): Add skip-check.

* test/lisp/textmodes/ispell-tests/ispell-tests-common.el
  (fake-aspell-path): Improve checking that an engine works.
  (letopt): Make restoring variables more robust.
---
 .../ispell-tests/ispell-hunspell-tests.el       | 16 ++++++++++++++--
 .../ispell-tests/ispell-tests-common.el         | 17 ++++++++++-------
 2 files changed, 24 insertions(+), 9 deletions(-)

diff --git a/test/lisp/textmodes/ispell-tests/ispell-hunspell-tests.el b/test/lisp/textmodes/ispell-tests/ispell-hunspell-tests.el
index 18206b08608..530a542ef1d 100644
--- a/test/lisp/textmodes/ispell-tests/ispell-hunspell-tests.el
+++ b/test/lisp/textmodes/ispell-tests/ispell-hunspell-tests.el
@@ -34,12 +34,22 @@
                          load-path)))
     (require 'ispell-tests-common)))
 
+(defun ispell-tests-hunspell--hunspell-working ()
+  (if (not (equal
+            0
+            (call-process "hunspell" nil nil nil "-a")))
+      (progn
+        (message "Hunspell installation is broken and does not support a default dictionary!")
+        nil)
+    t))
+
 (ert-deftest ispell/hunspell/ispell-word/english/check-only ()
 "This test checks that Russian spellchecking works for Hunspell."
   (skip-unless (executable-find "hunspell"))
   (skip-unless (equal
                 0
                 (call-process "hunspell" nil nil nil "-vv")))
+  (skip-unless (ispell-tests-hunspell--hunspell-working))
   (skip-unless (equal
                 0
                 (with-temp-buffer
@@ -108,6 +118,7 @@ ispell/hunspell/ispell-word/russian/check-only
   (skip-unless (equal
                 0
                 (call-process "hunspell" nil nil nil "-vv")))
+  (skip-unless (ispell-tests-hunspell--hunspell-working))
   (skip-unless (equal
                 0
                 (let ((retval (with-temp-buffer
@@ -160,6 +171,7 @@ ispell/hunspell/ispell-word/language-switch/check-only
   (skip-unless (equal
                 0
                 (call-process "hunspell" nil nil nil "-vv")))
+  (skip-unless (ispell-tests-hunspell--hunspell-working))
   (skip-unless (equal
                 0
                 (with-temp-buffer
@@ -227,6 +239,7 @@ ispell/hunspell/ispell-word/russian/check-only/wrong-language
   (skip-unless (equal
                 0
                 (call-process "hunspell" nil nil nil "-vv")))
+  (skip-unless (ispell-tests-hunspell--hunspell-working))
   (skip-unless (equal
                 0
                 (with-temp-buffer
@@ -264,6 +277,7 @@ ispell/hunspell/ispell-word/multilang
   (skip-unless (equal
                 0
                 (call-process "hunspell" nil nil nil "-vv")))
+  (skip-unless (ispell-tests-hunspell--hunspell-working))
   (skip-unless (equal
                 0
                 (with-temp-buffer
@@ -336,7 +350,5 @@ ispell/hunspell/ispell-word/multilang
           ))))
 )
 
-
-
 (provide 'ispell-hunspell-tests)
 ;;; ispell-hunspell-tests.el ends here
diff --git a/test/lisp/textmodes/ispell-tests/ispell-tests-common.el b/test/lisp/textmodes/ispell-tests/ispell-tests-common.el
index 0692e11e567..801bb6e6b6f 100644
--- a/test/lisp/textmodes/ispell-tests/ispell-tests-common.el
+++ b/test/lisp/textmodes/ispell-tests/ispell-tests-common.el
@@ -21,10 +21,9 @@ fake-aspell-path
                            (lambda (b)
                              (and
                               (executable-find b)
-                              ;; (equal 0
-                              ;;        (with-temp-buffer
-                              ;;          (call-process b nil t "-v")))
-                              ))
+                              (equal 0
+                                     (with-temp-buffer
+                                       (call-process b nil t "-a")))))
                            backend-binaries)))
 
   (defun ispell-tests--some-backend-available-p ()
@@ -42,14 +41,18 @@ letopt
   (declare (indent 1))
   (let* ((binding-var (lambda (binding) (car binding)))
 	 (binding-val (lambda (binding) (cadr binding)))
-	 (make-setopt (lambda (a b)
-			(list 'setopt a b)))
+	 (make-setopt
+          (lambda (a b)
+	    (list 'setopt a b)))
+         (add-ignore-errors
+          (lambda (a)
+            (list 'ignore-errors a)))
 	 (vars (seq-map binding-var bindings))
 	 (values (seq-map binding-val bindings))
 	 (temp-vars (seq-map #'gensym vars))
 	 (savebindings (seq-mapn #'list temp-vars vars))
 	 (tempbindings (seq-mapn make-setopt vars values))
-	 (restorebindings (seq-mapn make-setopt vars temp-vars)))
+	 (restorebindings (seq-mapn add-ignore-errors (seq-mapn make-setopt vars temp-vars))))
     `(let ,savebindings
        (unwind-protect (progn ,@tempbindings
 			      ,@body)
-- 
2.46.4


--=-=-=
Content-Type: text/plain



-- 
Your sincerely,
Vladimir Nikishkin (MiEr, lockywolf)
(Laptop)

>  LocalWords:  distro

--=-=-=--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79514; Package emacs. Full text available.

Message received at 79514 <at> debbugs.gnu.org:


Received: (at 79514) by debbugs.gnu.org; 26 Sep 2025 00:48:40 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Sep 25 20:48:40 2025
Received: from localhost ([127.0.0.1]:60518 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1v1wdb-0002HF-C6
	for submit <at> debbugs.gnu.org; Thu, 25 Sep 2025 20:48:40 -0400
Received: from coconut.lockywolf.net ([213.165.252.157]:54596)
 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 1v1wdV-0002Gt-PZ
 for 79514 <at> debbugs.gnu.org; Thu, 25 Sep 2025 20:48:34 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=lockywolf.net;
 s=2024-10-06; t=1758847711;
 bh=D2tnv2syQdsWF5mld0r6S7k5ZTZDv6u5qWWdvWFaDLY=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date;
 b=JXlvozwPcUfmqCxnCnddXGXDNqfOJLRpUB1hqO4H/gPSPiYBZAIEQ7CLwuo9K5BOO
 tuxlEpYaxTQAkV3uLz5blJuRd4RtgR4vWtaBP0zQ9kp0s0GsOqJcGEqcKqbkZlgega
 cxtztfssqD/nZPkkcYgz2tzzybEABuKQ9H1cwS0ISGuCFxhxANa3bS3aztjAe6O2+d
 naYiKkec3I6S53GxCJ31iIXO12Nerxy+YA05eo77V5ZLpz5DStk0zduhlD69F9MxTI
 49FJ+SaBo9uk/f8te3+SRkJ9C9McXLzMkY+8CGVg2Gmj66iHAseZ4yuYhT/hIaX2M0
 zhjUhzGmLlvZw==
Received: from laptop.lockywolf.net (unknown [IPv6:2001:470:24:315::102])
 by coconut.lockywolf.net (postfix-encrypted) with ESMTPSA id 6596338E84;
 Fri, 26 Sep 2025 08:48:28 +0800 (CST)
From: Lockywolf <for_emacs_1@HIDDEN>
To: Jens Schmidt <jschmidt4gnu@HIDDEN>
Subject: Re: 31.0.50; ispell-find-aspell-dictionaries should filter dups
 from "aspell dicts"
In-Reply-To: <5d6115f2-0c03-45ce-8368-bca704ed1057@HIDDEN>
References: <175724665403.6018.1750734078039941115@HIDDEN>
 <20250907120419.0C700C008BB@HIDDEN>
 <87wm67h5q8.fsf@HIDDEN> <87segvrqo8.fsf@HIDDEN>
 <87plbyhi0h.fsf@HIDDEN> <87y0qmr68b.fsf@HIDDEN>
 <87qzwer59s.fsf@HIDDEN> <87o6rifrou.fsf@HIDDEN>
 <87ikhqqyj2.fsf@HIDDEN> <87y0qlduxf.fsf@HIDDEN>
 <87cy7xf78u.fsf@HIDDEN> <87ikhnua2c.fsf@HIDDEN>
 <87plbvajcm.fsf@HIDDEN> <87zfazsqfk.fsf@HIDDEN>
 <31225e6a-c01e-4cb5-9d61-1597f0cc17e7@HIDDEN>
 <87ldm3e6hr.fsf@HIDDEN>
 <5d6115f2-0c03-45ce-8368-bca704ed1057@HIDDEN>
User-Agent: mu4e 1.12.12; emacs 31.0.50
Date: Fri, 26 Sep 2025 08:48:22 +0800
Message-ID: <87segaavjd.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="=-=-=";
 micalg=pgp-sha256; protocol="application/pgp-signature"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79514
Cc: Lockywolf <for_emacs_1@HIDDEN>, 79514 <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: -1.0 (-)

--=-=-=
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Jens Schmidt <jschmidt4gnu@HIDDEN> writes:

> On 2025-09-25  02:11, Lockywolf wrote:
>
>
> Well, I don't know whether ispell.el is at fault here, but it turns out
> that Debian's aspell already returns duplicates on "aspell dicts":
>
>   [emacs-master]$ aspell dicts
>   de
>   de-1901
>   de-neu
>   de_AT            <<<<<
>   de_AT            <<<<<
>   de_AT-neu
>   de_CH            <<<<<
>   de_CH            <<<<<
>   de_CH-1901
>   de_CH-neu
>   de_DE            <<<<<
>   de_DE            <<<<<
>   de_DE-1901
>   de_DE-neu
>   en
>   [...]
>
> Which is probably a result of its particular dictionary layout:
>
>   [emacs-master]$ ls -al /usr/lib/aspell/de_??.*
>   -rw-r--r-- 1 root root 16 Dec 17  2022 /usr/lib/aspell/de_AT.alias
>   lrwxrwxrwx 1 root root 29 Feb  6  2022 /usr/lib/aspell/de_AT.multi -> /=
etc/alternatives/de_AT.multi
>   -rw-r--r-- 1 root root 16 Dec 17  2022 /usr/lib/aspell/de_CH.alias
>   lrwxrwxrwx 1 root root 29 Feb  6  2022 /usr/lib/aspell/de_CH.multi -> /=
etc/alternatives/de_CH.multi
>   -rw-r--r-- 1 root root 16 Dec 17  2022 /usr/lib/aspell/de_DE.alias
>   lrwxrwxrwx 1 root root 29 Feb  6  2022 /usr/lib/aspell/de_DE.multi -> /=
etc/alternatives/de_DE.multi
>
> I guess it should be easy to screen these duplicates in function
> `ispell-find-aspell-dictionaries'.  Would you care about that?
>
> I can open in parallel a bug/RFE against Debian's aspell package.

I can have a look at way aspell is looking for a dictionary.
Are those de_AT.alias and de_AT.multi representing two different
dictionaries?

> All default on Debian 12, which (IIUC) generates the hash files (below
> /var/lib) from some other representation (below /usr/lib) during package
> installation.  In general, Debian has invested a lot of effort (read as:
> a lot of installation time scripting and patches on top of the upstream
> packages) to make this spelling a more stream-lined (?) affair.

Apparently they fail :D.

> Test ispell/ispell-accept-buffer-local-defs/simple seems to fail
> since I haven't /usr/lib/ispell/english.hash on my system.

The presence of actual files is of secondary importance. You have
"english.aff", which, I presume, implies that Debian expects ispell to
work with the English language by using "ispell -d english". They
probably intended that "american.hash" be used with "english.aff". Does
"ispell -d english" work on your machine? If not, it is probably worth
filing a bug with Debian, I probably should add a check to the tests
that verifies that "ispell -d english" is working as well.

Out of curiosity, what does "ispell -vv | grep -E '(DEFHASH|DEFLANG)'"
produce on your machine?

=2D-=20
Your sincerely,
Vladimir Nikishkin (MiEr, lockywolf)
(Laptop)

--=-=-=
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iHUEARYIAB0WIQSWBebxCAoqaJP8N/j71sGyD+xtqgUCaNXi2AAKCRD71sGyD+xt
qrcDAP9WBIg37YwKx/IlDdykasBYe+4ci07OYEM12kS2ODvVBgEA0NZ/5Z47Snnd
jJnMDRKDk5c6FoH7UuJ1ma5oatUrSQk=
=3ShA
-----END PGP SIGNATURE-----
--=-=-=--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79514; Package emacs. Full text available.

Message received at 79514 <at> debbugs.gnu.org:


Received: (at 79514) by debbugs.gnu.org; 25 Sep 2025 19:23:54 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Sep 25 15:23:54 2025
Received: from localhost ([127.0.0.1]:58839 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1v1rZJ-0002p2-1Q
	for submit <at> debbugs.gnu.org; Thu, 25 Sep 2025 15:23:54 -0400
Received: from mr5.vodafonemail.de ([145.253.228.165]:41612)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <jschmidt4gnu@HIDDEN>)
 id 1v1rYq-0002mg-RD
 for 79514 <at> debbugs.gnu.org; Thu, 25 Sep 2025 15:23:26 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vodafonemail.de;
 s=vfde-mb-mr2-23sep; t=1758828196;
 bh=Vn6tiNe707Ki4t0dVHudglLrBv3NyvjlPxvApGh4vQU=;
 h=Message-ID:Date:User-Agent:Subject:To:References:From:
 Content-Language:In-Reply-To:Content-Type:From;
 b=fZlsDiZQaZAKhnXqeCfYfNraF/n1cXyqIEd5RUOWIo0mQN/LuC17705QpVSaZRhRy
 vK5jOI0E7rlCNhkl3RIZLusDSoS1PRddOAeZrFmpyaxaQ21GP6wu1jSoiS7dCDjBob
 BFF2g+r5iDHxBdzV+Mo8ykhaPNV1H4CWY6OiEuKA=
Received: from smtp.vodafone.de (unknown [10.0.0.2])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits))
 (No client certificate requested)
 by mr5.vodafonemail.de (Postfix) with ESMTPS id 4cXkC76dcHz1yC1;
 Thu, 25 Sep 2025 19:23:15 +0000 (UTC)
Received: from [192.168.178.42] (port-92-196-205-8.dynamic.as20676.net
 [92.196.205.8])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp.vodafone.de (Postfix) with ESMTPSA id 4cXkBz69GZz8sXJ;
 Thu, 25 Sep 2025 19:23:04 +0000 (UTC)
Message-ID: <5d6115f2-0c03-45ce-8368-bca704ed1057@HIDDEN>
Date: Thu, 25 Sep 2025 21:23:03 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: 31.0.50; ispell-find-aspell-dictionaries should filter dups from
 "aspell dicts"
To: Lockywolf <for_emacs_1@HIDDEN>
References: <175724665403.6018.1750734078039941115@HIDDEN>
 <20250907120419.0C700C008BB@HIDDEN> <87wm67h5q8.fsf@HIDDEN>
 <87segvrqo8.fsf@HIDDEN> <87plbyhi0h.fsf@HIDDEN>
 <87y0qmr68b.fsf@HIDDEN> <87qzwer59s.fsf@HIDDEN>
 <87o6rifrou.fsf@HIDDEN> <87ikhqqyj2.fsf@HIDDEN>
 <87y0qlduxf.fsf@HIDDEN> <87cy7xf78u.fsf@HIDDEN>
 <87ikhnua2c.fsf@HIDDEN> <87plbvajcm.fsf@HIDDEN>
 <87zfazsqfk.fsf@HIDDEN>
 <31225e6a-c01e-4cb5-9d61-1597f0cc17e7@HIDDEN>
 <87ldm3e6hr.fsf@HIDDEN>
From: Jens Schmidt <jschmidt4gnu@HIDDEN>
Content-Language: de-DE-frami, en-US
In-Reply-To: <87ldm3e6hr.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-type: clean
X-purgate: clean
X-purgate-size: 2427
X-purgate-ID: 155817::1758828191-43675317-2348A145/0/0
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 79514
Cc: 79514 <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: -1.7 (-)

On 2025-09-25  02:11, Lockywolf wrote:

>> Turns out that ispell--aspell-found-dictionaries contains some
>> duplicates on my system:
>>
>>  ("de_AT" "[[:alpha:]]" "[^[:alpha:]]" "\\(?:\\`a\\`\\)" t
>>   ("-d" "de_AT") nil utf-8)
>>  ("de_AT" "[[:alpha:]]" "[^[:alpha:]]" "\\(?:\\`a\\`\\)" t
>>   ("-d" "de_AT") nil utf-8)
>>
>>  ("de_CH" "[[:alpha:]]" "[^[:alpha:]]" "\\(?:\\`a\\`\\)" t
>>   ("-d" "de_CH") nil utf-8)
>>  ("de_CH" "[[:alpha:]]" "[^[:alpha:]]" "\\(?:\\`a\\`\\)" t
>>   ("-d" "de_CH") nil utf-8)
>>
>>  ("de_DE" "[[:alpha:]]" "[^[:alpha:]]" "\\(?:\\`a\\`\\)" t
>>   ("-d" "de_DE") nil utf-8)
>>  ("de_DE" "[[:alpha:]]" "[^[:alpha:]]" "\\(?:\\`a\\`\\)" t
>>   ("-d" "de_DE") nil utf-8)
>>
> 
> I suspect that this is a bug with ispell.el, and we have just
> caught it with the test suite.  I think that this problem also deserves
> a separate issue, but please, tell me more specifically how to reproduce
> it. (Ideally by a Dockerfile :D, which would let me reproduce the system
> exactly on my machine, but in any case, I need more info about your
> aspell, ispell, dictionaries, and system config.)

Well, I don't know whether ispell.el is at fault here, but it turns out
that Debian's aspell already returns duplicates on "aspell dicts":

  [emacs-master]$ aspell dicts
  de
  de-1901
  de-neu
  de_AT            <<<<<
  de_AT            <<<<<
  de_AT-neu
  de_CH            <<<<<
  de_CH            <<<<<
  de_CH-1901
  de_CH-neu
  de_DE            <<<<<
  de_DE            <<<<<
  de_DE-1901
  de_DE-neu
  en
  [...]

Which is probably a result of its particular dictionary layout:

  [emacs-master]$ ls -al /usr/lib/aspell/de_??.*
  -rw-r--r-- 1 root root 16 Dec 17  2022 /usr/lib/aspell/de_AT.alias
  lrwxrwxrwx 1 root root 29 Feb  6  2022 /usr/lib/aspell/de_AT.multi -> /etc/alternatives/de_AT.multi
  -rw-r--r-- 1 root root 16 Dec 17  2022 /usr/lib/aspell/de_CH.alias
  lrwxrwxrwx 1 root root 29 Feb  6  2022 /usr/lib/aspell/de_CH.multi -> /etc/alternatives/de_CH.multi
  -rw-r--r-- 1 root root 16 Dec 17  2022 /usr/lib/aspell/de_DE.alias
  lrwxrwxrwx 1 root root 29 Feb  6  2022 /usr/lib/aspell/de_DE.multi -> /etc/alternatives/de_DE.multi

I guess it should be easy to screen these duplicates in function
`ispell-find-aspell-dictionaries'.  Would you care about that?

I can open in parallel a bug/RFE against Debian's aspell package.





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79514; Package emacs. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 25 Sep 2025 19:06:38 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Sep 25 15:06:38 2025
Received: from localhost ([127.0.0.1]:58801 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1v1rIb-0001eD-D6
	for submit <at> debbugs.gnu.org; Thu, 25 Sep 2025 15:06:37 -0400
Received: from lists.gnu.org ([2001:470:142::17]:56010)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <jschmidt4gnu@HIDDEN>)
 id 1v1rIW-0001ds-6y
 for submit <at> debbugs.gnu.org; Thu, 25 Sep 2025 15:06:33 -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 <jschmidt4gnu@HIDDEN>)
 id 1v1rIL-00067r-Da
 for bug-gnu-emacs@HIDDEN; Thu, 25 Sep 2025 15:06:23 -0400
Received: from mr5.vodafonemail.de ([145.253.228.165])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <jschmidt4gnu@HIDDEN>)
 id 1v1rI9-0003bN-DS
 for bug-gnu-emacs@HIDDEN; Thu, 25 Sep 2025 15:06:20 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vodafonemail.de;
 s=vfde-mb-mr2-23sep; t=1758827158;
 bh=uz46C0arHLuhToVxf6Pdd8//N2gq4wwmcPgO6q5InUc=;
 h=Message-ID:Date:User-Agent:To:Subject:From:Content-Language:
 Content-Type:From;
 b=xtwZD30YP7ZHospKhTjQUBWhaY/wKh+kZzBnZh3suKs8IfpK1KWR8MXtkeqcVZ13J
 AprtI5Yogl6Ol78icoasIBPG5zgfP4jLMx2JhnzgyVhdw1xTkmO60errZYO8MkSoKn
 AVKN6UX4MAF64ik/ahMaUZcW0pg/NigofDBEfudU=
Received: from smtp.vodafone.de (unknown [10.0.0.2])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits))
 (No client certificate requested)
 by mr5.vodafonemail.de (Postfix) with ESMTPS id 4cXjqB6TjDz1yHf
 for <bug-gnu-emacs@HIDDEN>; Thu, 25 Sep 2025 19:05:58 +0000 (UTC)
Received: from [192.168.178.42] (port-92-196-205-8.dynamic.as20676.net
 [92.196.205.8])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp.vodafone.de (Postfix) with ESMTPSA id 4cXjq6472Mz91vp
 for <bug-gnu-emacs@HIDDEN>; Thu, 25 Sep 2025 19:05:51 +0000 (UTC)
Message-ID: <e8ec74a4-9f0d-4147-930b-5ef35cf3a91d@HIDDEN>
Date: Thu, 25 Sep 2025 21:05:50 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
To: bug-gnu-emacs@HIDDEN
Subject: 31.0.50; ispell-find-aspell-dictionaries should filter dups from
 "aspell dicts"
From: Jens Schmidt <jschmidt4gnu@HIDDEN>
Content-Language: de-DE-frami, en-US
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-purgate-type: clean
X-purgate: clean
X-purgate-size: 3750
X-purgate-ID: 155817::1758827154-0DD85E7A-F32634A7/0/0
Received-SPF: pass client-ip=145.253.228.165;
 envelope-from=jschmidt4gnu@HIDDEN; helo=mr5.vodafonemail.de
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_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001,
 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, SPF_HELO_NONE=0.001,
 SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 0.0 (/)
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: -1.0 (-)

This is intended to continue a discussion from emacs-devel,
details to follow soon.



In GNU Emacs 31.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
 3.24.38, cairo version 1.16.0) of 2025-09-25 built on sappc2
Repository revision: 06d87e44cb614b846f37eb25ccafce2065e2e9d2
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12201009
System Description: Debian GNU/Linux 12 (bookworm)

Configured using:
 'configure -C --build x86_64-linux-gnu --sharedstatedir=/var/lib
 --localstatedir=/var/lib --with-cairo --with-libsystemd
 --with-mailutils --with-native-compilation --with-pop=yes
 --with-sound=alsa --with-toolkit-scroll-bars --with-x-toolkit=gtk3
 --with-x=yes --without-gconf build_alias=x86_64-linux-gnu'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NATIVE_COMP
NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF
TOOLKIT_SCROLL_BARS WEBP X11 XDBE XIM XINERAMA XINPUT2 XPM XRANDR GTK3
ZLIB

Important settings:
  value of $LC_COLLATE: POSIX
  value of $LC_TIME: POSIX
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  minibuffer-nonselected-mode: t
  minibuffer-regexp-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr compile comint ansi-osc ansi-color ring comp-run
bytecomp byte-compile comp-common rx emacsbug lisp-mnt message mailcap
yank-media puny dired dired-loaddefs rfc822 mml mml-sec password-cache
epa derived epg rfc6068 epg-config gnus-util text-property-search
time-date subr-x mm-decode mm-bodies mm-encode mail-parse rfc2231
mailabbrev gmm-utils mailheader cl-loaddefs cl-lib sendmail rfc2047
rfc2045 ietf-drums mm-util mail-prsvr mail-utils rmc iso-transl tooltip
cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
elisp-mode mwheel term/x-win x-win term/common-win x-dnd touch-screen
tool-bar dnd fontset image regexp-opt fringe tabulated-list replace
newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar
rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock
font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq
simple cl-generic indonesian philippine cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese composite emoji-zwj charscript charprop case-table
epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button
loaddefs theme-loaddefs faces cus-face macroexp files window
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget keymap hashtable-print-readable backquote threads dbusbind
inotify lcms2 dynamic-setting system-font-setting font-render-setting
cairo gtk x-toolkit xinput2 x multi-tty move-toolbar
make-network-process tty-child-frames native-compile emacs)

Memory information:
((conses 16 91206 10713) (symbols 48 6845 0) (strings 32 25501 1810)
 (string-bytes 1 761514) (vectors 16 16908)
 (vector-slots 8 194882 7725) (floats 8 35 2) (intervals 56 325 0)
 (buffers 984 12))




Acknowledgement sent to Jens Schmidt <jschmidt4gnu@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to bug-gnu-emacs@HIDDEN:
bug#79514; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Thu, 2 Oct 2025 12:00:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.