unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Kenichi Handa <handa@m17n.org>
Cc: emacs-devel@gnu.org
Subject: Re: reverting CJK input methods
Date: Fri, 30 Apr 2004 10:42:17 +0900 (JST)	[thread overview]
Message-ID: <200404300142.KAA01027@etlken.m17n.org> (raw)
In-Reply-To: <20040429.150303.42778779.wl@gnu.org> (message from Werner LEMBERG on Thu, 29 Apr 2004 15:03:03 +0200 (CEST))

In article <20040429.150303.42778779.wl@gnu.org>, Werner LEMBERG <wl@gnu.org> writes:

> Computers are much faster today, with much more memory.  Ken'ichi-san,
> what do you think about activating the decode maps for all CJK quail
> input methods, and adding a function like `show-input-method-input'
> which yields the current input method's input string for the current
> character.

It's a good idea.  But, as computers are much faster, I
think we can find a key for a specific character by looking
up the quail map.  Please evaluate the attached code,
activate some input method, input some character, go to that
character, and do M-x quail-find-key RET.

If that is too slow, another way is to generate the decode
map on demand.

---
Ken'ichi HANDA
handa@m17n.org

(defun quail-find-key (char map key)
  (when (consp map)
    (let ((translation (car map)))
      (cond ((integerp translation)
	     (if (= translation char)
		 (throw 'tag key)))
	    ((stringp translation)
	     (if (string-match (string char) translation)
		 (throw 'tag key)))
	    ((vectorp translation)
	     (dotimes (i (length translation))
	       (let ((target (aref translation i)))
		 (if (integerp target)
		     (if (= target char)
			 (throw 'tag key))
		   (if (and (= (length target) 1)
			    (= (aref target 0) char))
		       (throw 'tag key))))))
	    ((consp translation)
	     (setq translation (cdr translation))
	     (dotimes (i (length translation))
	       (let ((target (aref translation i)))
		 (if (integerp target)
		     (if (= target char)
			 (throw 'tag key))
		   (if (and (= (length target) 1)
			    (= (aref target 0) char))
		       (throw 'tag key)))))))))
  (dolist (elt (cdr map))
    (quail-find-key char (cdr elt) (cons (car elt) key))))

(defun quail-show-key ()
  (interactive)
  (let* ((char (following-char))
	 (key (catch 'tag
		(quail-find-key char (quail-map) nil))))
    (if key
	(message "%c can be input by typing \"%s\""
		 char (apply 'string (nreverse key)))
      (message "%c can't be input by the current input method" char))))

  reply	other threads:[~2004-04-30  1:42 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-04-29 13:03 reverting CJK input methods Werner LEMBERG
2004-04-30  1:42 ` Kenichi Handa [this message]
2004-04-30  2:03   ` Miles Bader
2004-04-30  2:59     ` Miles Bader
2004-04-30 11:27       ` Juri Linkov
2004-04-30 13:26         ` Kenichi Handa
2004-05-01  8:22           ` Juri Linkov
2004-05-02  1:57             ` Kenichi Handa
2004-05-06  5:05               ` with-output-to-temp-buffer [Re: reverting CJK input methods] Kenichi Handa
2004-05-06 11:48                 ` Richard Stallman
2004-05-06 13:10                   ` Kenichi Handa
2004-05-06 14:27                     ` Stefan Monnier
2004-05-06 15:49                       ` Kevin Rodgers
2004-05-06 16:50                         ` Stefan Monnier
2004-05-06 20:57                           ` Kevin Rodgers
2004-05-07  1:53                       ` Kenichi Handa
2004-05-08  1:20                     ` Richard Stallman
2004-05-10 12:13                       ` Kenichi Handa
2004-05-10 14:28                         ` Stefan Monnier
2004-05-11  7:04                           ` Richard Stallman
2004-05-11  7:49                             ` David Kastrup
2004-05-12  7:51                               ` Richard Stallman
2004-05-11 13:39                             ` erase-buffer (was: with-output-to-temp-buffer) Stefan Monnier
2004-05-11 14:44                               ` erase-buffer Juri Linkov
2004-05-11 16:17                                 ` erase-buffer Juri Linkov
2004-05-11 15:32                               ` erase-buffer (was: with-output-to-temp-buffer) David Kastrup
2004-05-11 16:22                                 ` Kevin Rodgers
2004-05-11 19:30                                   ` Stefan Monnier
2004-05-12 21:10                                     ` Kevin Rodgers
2004-05-11 19:37                                   ` Juanma Barranquero
2004-05-11 18:14                                 ` Juanma Barranquero
2004-05-11 23:06                               ` Kenichi Handa
2004-05-11 23:26                                 ` Miles Bader
2004-05-12 19:42                                   ` Richard Stallman
2004-05-12 22:34                                     ` Miles Bader
2004-05-14  9:21                                       ` Richard Stallman
2004-05-11 23:34                                 ` Stefan Monnier
2004-05-11 23:47                                   ` Kenichi Handa
2004-05-12 19:40                               ` Richard Stallman
2004-05-11  1:45                         ` with-output-to-temp-buffer [Re: reverting CJK input methods] Luc Teirlinck
2004-05-11  2:34                           ` Kenichi Handa
2004-05-11  7:01                             ` David Kastrup
2004-05-11  6:55                               ` Kim F. Storm
2004-05-11  8:00                               ` Kenichi Handa
2004-05-12  7:51                               ` Richard Stallman
2004-04-30  5:06     ` reverting CJK input methods Kenichi Handa
2004-04-30 16:50       ` Werner LEMBERG
2004-05-01  9:07         ` Miles Bader
2004-05-01 17:18           ` Werner LEMBERG
2004-05-08  2:56         ` Kenichi Handa
2004-05-08 16:38           ` Werner LEMBERG
2004-05-10  4:40             ` Kenichi Handa
2004-05-12  2:42               ` Kenichi Handa
2004-05-12  8:32                 ` Werner LEMBERG
2004-05-12 11:10                   ` Kenichi Handa
2004-05-01 17:21       ` Werner LEMBERG

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

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200404300142.KAA01027@etlken.m17n.org \
    --to=handa@m17n.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 public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).