[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: weird bug with `Russian-computer'?
From: |
Paul Pogonyshev |
Subject: |
Re: weird bug with `Russian-computer'? |
Date: |
Mon, 4 Jul 2005 19:03:01 +0300 |
User-agent: |
KMail/1.4.3 |
Juri Linkov wrote:
> > With the `Russian-computer' input method, S-/ combination produces a
> > comma (instead of a question mark with standard English.) That is OK and
> > the way it should be.
>
> Perhaps you have a US keyboard layout with `?' on the same key as `/'.
> Finnish keyboards have quite a different layout where `?' is on the
> same key as `+', and it is produced by `S-+'. Other keyboards have
> other layouts, but anyhow I understand how to reproduce the problem.
> What is essential here is to press shift with the `?' key, because the
> `russian-computer' input method maps `?' to `,'.
Yes, I use US and Russian keyboard layouts.
> > However, when I start incremental search, the key works as in
> > English, while the rest of the keyboard keeps producing Russian
> > letters etc.
>
> The root of the problem is in `isearch-mode-map' which binds `?' to
> `isearch-*-char'. When you type a key corresponding to `?' with
> the input method, `isearch-*-char' intercepts it and interprets as
> the regexp special character `?'.
>
> The following patch fixes this problem by sending the input character
> to `isearch-process-search-char' which takes care of processing the
> character according to the current input method. Also a new condition
> was added before processing a regexp character. If an input method is
> active, it processes a regexp character only if a typed character is
> the same with and without an input method, so that all input methods
> that don't redefine regexp characters won't be affected.
Works for me, thanks. However, why ``only if a typed character is the
same with and without an input method''? Maybe it should just process
the character _after_ it has been processed/converted by the input method,
as opposed to processing it _before_, as currently. So, S-7 in `russian-
computer' would trigger special '?' character processing.
(I don't know how input methods works in Emacs, though...)
Paul