all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Michael Welsh Duggan <mwd@md5i.com>
To: emacs-devel@gnu.org
Subject: Re: [conversion fails]
Date: Sun, 11 Feb 2018 22:53:24 -0500	[thread overview]
Message-ID: <87po5aoocr.fsf@md5i.com> (raw)
In-Reply-To: <8760750vz4.fsf_-_@mat.ucm.es> (Uwe Brauer's message of "Sat, 10 Feb 2018 15:18:07 +0100")

Uwe Brauer <oub@mat.ucm.es> writes:

>    > Uwe Brauer <oub@mat.ucm.es> writes:
>
>    > In the unaccentuate case (which is what your original question), it
>    > should be easy to write that functionality using `quail-find-key'
>    > as a base. You would have to decide how to handle failures
>    > (character can't be typed using the current input method).
>
> Actually taking iso-accentuate and un accuate as a reference it is the
> accentuate part which I want to implement, for example
> for the greek-ibycus
>
> I want to replace    a)  by  ἀ

Okay.

>    > The accentuate case looks more difficult.  Quail allows more than one
>    > translation candidate for a single key sequence, which leaves no good
>
> I am puzzled now, I thought any input method should be an bijection. So
> the old iso method was, wasn't it?

Not all input methods are bijections.  Especially not many of the Asian
input methods.

>    > way handle these characters.  A simple example from the ipa input
>    > method: tsh can translate into ʧ, tʃ, or t⁀ʃ.
>
> I tried that out, but I obtain  ʧ none of the others.

Really?  Try typing the following using the ipa input method:

  tsh1tsh2tsh3

The number selects the specific form.  If something else it typed rather
than the number, it will use the last remembered version, defaulting to
version 1.

I hacked up the following, which is minimally tested, but may work for
you.  I tried to use public functions from quail, but the (null (cdr
map)) is probably an implementation detail, and might break in a future
version.  There are almost certainly better ways to write this function.
If presented with an ambiguity (like above), it will choose the last
remembered variant (defaulting to 1).

(defun accentuate-region (start end)
  "Replace the region by using it as keys using the current input method"
  (interactive "r")
  (save-excursion 
    (goto-char start)
    (let* ((data (delete-and-extract-region start end))
           (size (length data))
           (idx 0) (cand ""))
      (while (< idx size)
        (let* ((next-cand (concat cand (list (aref data idx))))
               (map (quail-lookup-key next-cand))
               (def (and map (quail-map-definition map))))
          (if (null map)
              (progn
                (insert next-cand)
                (setq cand ""))
            (if (and def (null (cdr map)))
                (progn
                  (insert (quail-get-current-str (length next-cand) def))
                  (setq cand "")) 
              (setq cand next-cand)))
          (incf idx)))
      (insert cand))))

-- 
Michael Welsh Duggan
(md5i@md5i.com)



  reply	other threads:[~2018-02-12  3:53 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-02 21:58 quail input methods and conversion functions Uwe Brauer
2018-02-08  4:08 ` Michael Welsh Duggan
2018-02-08 15:16   ` Uwe Brauer
2018-02-09 18:26     ` Michael Welsh Duggan
2018-02-10 14:18       ` [conversion fails] (was: quail input methods and conversion functions) Uwe Brauer
2018-02-12  3:53         ` Michael Welsh Duggan [this message]
2018-02-12 10:07           ` [conversion fails] Uwe Brauer
2018-02-12 10:40           ` Uwe Brauer
2018-02-13  3:43             ` Michael Welsh Duggan
2018-02-13  8:43               ` Uwe Brauer
2018-02-13  8:51               ` Uwe Brauer
2018-02-13 20:58                 ` Michael Welsh Duggan
2018-02-13 21:41                   ` Uwe Brauer
2018-02-14  0:21                     ` Michael Welsh Duggan
2018-02-14  9:08                       ` Uwe Brauer
2018-02-19 21:26                       ` [MELPA] (was: [conversion fails]) Uwe Brauer
2018-02-20  2:12                         ` [MELPA] Michael Welsh Duggan

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=87po5aoocr.fsf@md5i.com \
    --to=mwd@md5i.com \
    --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.