From: Emanuel Berg <incal@dataswamp.org>
To: emacs-devel@gnu.org
Subject: Re: auto-detect multiple languages -- ispell-detect.el
Date: Sat, 03 Aug 2024 15:25:58 +0200 [thread overview]
Message-ID: <878qxdivq1.fsf@dataswamp.org> (raw)
In-Reply-To: 87wmkzl56a.fsf@no.lan
Gregor Zattler wrote:
> I don't use [guess-language] it, because I did not manage to
> configure it to integrate wcheck-mode.
Now you got me motivated ...
What is the optimal solution to this problem?
1. Detection
- is done _once_ for the entire material
- processes _everything_, so does not rely on incomplete and
error-prone polling/probing
2. Spelling
- is done _once_ for each detected language
- works for all Emacs spellcheckers
So for (1), we need a detect-languages to return a list like
this - if we for example envision a buffer with mixed English,
Latvian, and Swedish:
(("en" ((en-1-beg en-1-end) ... (en-n-beg en-n-end)))
("lv" ((lv-1-beg lv-1-end) ... (lv-m-beg lv-m-end)))
("sv" ((sv-1-beg sv-1-end) ... (sv-o-beg sv-o-end)))) ; [*]
For (2) we need the equivalence of not `narrow-to-region' but
narrow-to-regions (or virtual-buffer-from-regions or
something).
Then it is a matter of:
(cl-loop for (lang regs) in (detect-languages) do
(narrow-to-regions regs)
(funcall #'spellchecker-change-dictionary lang)
(funcall #'spellchecker-spell))
Tada, works for everything! \o/
So do we have detect-languages (maybe that is in
`guess-language'?) and narrow-to-regions?
[*] Language codes from ISO 639 set 1,
https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes
--
underground experts united
https://dataswamp.org/~incal
next prev parent reply other threads:[~2024-08-03 13:25 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-31 11:42 auto-detect multiple languages -- ispell-detect.el Emanuel Berg
2024-08-02 2:53 ` Richard Stallman
2024-08-02 8:06 ` Gregor Zattler
2024-08-02 22:32 ` Emanuel Berg
2024-08-03 2:02 ` Emanuel Berg
2024-08-04 6:52 ` Uwe Brauer via Emacs development discussions.
2024-08-03 13:25 ` Emanuel Berg [this message]
2024-08-03 17:14 ` Emanuel Berg
2024-08-03 19:58 ` Emanuel Berg
2024-08-04 5:09 ` Eli Zaretskii
2024-08-04 5:31 ` Emanuel Berg
2024-08-04 5:50 ` Eli Zaretskii
2024-08-04 6:14 ` Emanuel Berg
2024-08-04 6:27 ` Eli Zaretskii
2024-08-04 6:40 ` Emanuel Berg
2024-08-04 7:08 ` Eli Zaretskii
2024-08-04 10:30 ` Stefan Kangas
2024-08-04 15:25 ` Uwe Brauer via Emacs development discussions.
2024-08-04 15:56 ` Emanuel Berg
2024-08-04 17:45 ` tomas
2024-08-04 7:13 ` Emanuel Berg
2024-08-07 15:41 ` Björn Bidar
[not found] ` <87wmkspcgn.fsf@>
2024-08-08 2:01 ` guess-language package Richard Stallman
2024-08-08 6:42 ` Joost Kremers
2024-08-12 1:47 ` Richard Stallman
2024-08-08 6:55 ` auto-detect multiple languages -- ispell-detect.el Joost Kremers
2024-08-12 1:47 ` Richard Stallman
2024-08-04 11:03 ` Emanuel Berg
2024-08-04 5:42 ` Emanuel Berg
2024-08-04 5:52 ` Eli Zaretskii
2024-08-04 7:17 ` Uwe Brauer via Emacs development discussions.
2024-08-04 9:30 ` Emanuel Berg
2024-08-04 2:05 ` Richard Stallman
2024-08-07 15:36 ` Björn Bidar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=878qxdivq1.fsf@dataswamp.org \
--to=incal@dataswamp.org \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.