Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IMEで日本語を挿入したあと.でおかしな文字が挿入される #50

Closed
tyru opened this issue Sep 27, 2011 · 27 comments
Closed

Comments

@tyru
Copy link
Member

tyru commented Sep 27, 2011

uim-skkなどで日本語を入力し、.で同じテキストを挿入しようとするとおかしいテキストが挿入されたりします。
Windowsではどうなったか思い出せないのですがやはりうまくいかなかった覚えがあります。

「日本語<CR>」と挿入
「日本語<CR>」と挿入してから
.を押す
.を押すと「▼日本日本語<CR>」と挿入されてしまいます。

uim-skkの場合、「あいうえお」のように変換せずひらがなだけの入力だとうまくいきます。
これはなんとなくuim-skkだけの現象に思えますが...

@koron
Copy link
Member

koron commented Sep 27, 2011

画像入れといた。Linkの貼り方と一緒で、直前に!を書くだけ、らしいよ。

@mattn
Copy link
Member

mattn commented Sep 27, 2011

.png足しといた。Linkの貼り方と一緒で、直前に!と画像URLを書くだけ、らしいよ。

@koron
Copy link
Member

koron commented Sep 27, 2011

おせっかい二人www
(後に三人だったことが判明)

@thinca
Copy link
Member

thinca commented Sep 27, 2011

やばすw

@tyru
Copy link
Member Author

tyru commented Sep 27, 2011

ありがとうございますww

@mattn
Copy link
Member

mattn commented Sep 27, 2011

ちなみに?を足したのは、gyazoのアクセス制限レスポンスをamazonにキャッシュさせないworkaround

@tyru
Copy link
Member Author

tyru commented Sep 27, 2011

あれ、?足されてるみたいなんですが画像が表示されない...
gyazoやめた方がいいんですかね?

@mattn
Copy link
Member

mattn commented Sep 27, 2011

表示されてますお

@tyru
Copy link
Member Author

tyru commented Sep 27, 2011

うお、すみません今見たら表示されてましたorz

@mattn
Copy link
Member

mattn commented Sep 27, 2011

gvimですよね?であればなんとなく原因というか悪の根元というか、分かります。

@koron
Copy link
Member

koron commented Sep 27, 2011

@tyru
Copy link
Member Author

tyru commented Sep 27, 2011

です。あとスクリーンショットではgvimで起動しちゃったんですがgvim -u NONE -i NONEでも試して再現しました。

@mattn
Copy link
Member

mattn commented Sep 27, 2011

動作環境はLinuxですか?

@tyru
Copy link
Member Author

tyru commented Sep 27, 2011

です。

@mattn
Copy link
Member

mattn commented Sep 27, 2011

試したIMEを教えて下さい。skkinputとかは結構やばいです。

@tyru
Copy link
Member Author

tyru commented Sep 27, 2011

IMEってuim-skk...のことじゃないんですか...?
(eskk.vim作者なのにIMEの知識がないのがばれる!)

@mattn
Copy link
Member

mattn commented Sep 27, 2011

以下の結果を教えて下さい。

echo $GTK_IM_MODULE
echo $QT_IM_MODULE
echo $XMODIFIERS

@tyru
Copy link
Member Author

tyru commented Sep 27, 2011

$ echo $GTK_IM_MODULE
uim
$ echo $QT_IM_MODULE
uim
$ echo $XMODIFIERS
@im=uim

でした。

@mattn
Copy link
Member

mattn commented Sep 27, 2011

uimのエンジン、skk以外でも発生しますか?

@tyru
Copy link
Member Author

tyru commented Sep 27, 2011

uin-anthyで試したら
「にほんご(確定)<CR>」と入力して.を押すと「にほんご<CR>」(希望する動作)となり、
「日本語<CR>」と入力して.を押すと「日本語日本語<CR>」となってしまいました。

(念の為ログを...)

  1. sudo apt-get install uim-anthy
  2. ログアウト
  3. uim-toolbar-gtk &
  4. uim-toolbar-gtk経由でAnthy (UTF-8)に切り替える
  5. gvim -u NONE -i NONE
  6. 冒頭のテキストを入力してテストする

@mattn
Copy link
Member

mattn commented Sep 27, 2011

解析に入る前に、だいたい原因が分かっているので前もって解説

vimのIM制御は、gtk immoduleを使っているのだけど、vimはgtk immoduleの仮入力(プリエディット)としてon-the-spot(仮入力の描画をアプリケーション側で行う手法)を採用しています。
その実装方法として、通常のキー入力に伴う文字列挿入と同じ仕組みを流用していて、たしか仮入力中は入力されたキーはマップされない様にそのままgtk immoduleに渡しているはずなのですが、その仮入力最中の変更がundo/redoバッファに入ってしまっていて.で再生されてしまうというバグです。

僕としては、本当はon-the-spotをやめてover-the-spotにしたいんですが、過去にかなり議論して争った記憶があってあまりこの件で再燃したくないんですよねー苦笑

まぁやらないといけないものは、やらないといけないんですが...

@ghost ghost assigned mattn Sep 27, 2011
@mattn
Copy link
Member

mattn commented Sep 27, 2011

↑という経緯もあって、ちょっと時間下さい。

@koron
Copy link
Member

koron commented Sep 27, 2011 via email

@tyru
Copy link
Member Author

tyru commented Sep 27, 2011

@mattn なるほど。まぁとりあえず自分は技量的に無理っぽいので、よろしくお願いします。

過去にかなり議論して争った記憶

このスレッドっぽいですね。mattnさんいるし。
VIM 7.2a.10 (GTK2, cygwin) weird cursor color problem

@ynkdir
Copy link
Member

ynkdir commented Sep 27, 2011

:echo @. でなんか見えそう。

私は今の gtk2 での on-the-spot の実装を何とかするのは無理だと思っていて over-the-spot にして使ってます。

http://code.google.com/r/yukihironakadaira-vim/

ただまぁきっちり仕上げて vim-dev に持っていくパワーはないので完全に自分用ですが。

問題点は mbyte.c:im_preedit_changed_cb() のコメントにも書いてありますが
他にも
プリエディットに対してマップが適用される (:inoremap k hello -> "か" を入力)。
自動整形が走ったときにゴミが残る。
fFtT やノーマルモードで入力できない。
レジスタにゴミ。
いろいろ不安定な謎動作。
とかいろいろあります。

@mattn
Copy link
Member

mattn commented Oct 7, 2011

いったん僕にアサインされてたのを外しました。
もしかしたら @ynkdir さんの方が適任かもしれないので。

@k-takata
Copy link
Member

8.0.1026で直ったはず。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants