all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
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




  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.