Date   --/--/--  
No.   Ads by Google
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
* edit
Date   2009/01/05  
No.11   ibus ep. 3
東西每次暫時放下了,儘管只是很短的一段時間,都好像重新去理解另一個人的記錄一樣,是不是記憶力開始衰退的跡象?

續上回, add_input() 傳回負值,表示 self.update_candidates() 也傳回否值 (add_input() 最後一行)。

還是不行,必須應用一些 debug 工具去提高效率: pdb

import pdb;
pdb.set_trace()
(when pgm encounters pdb.set_trace() it will start tracing)

彈出 (pdb)

- 'p': print [var]
- 'n': next
- 'l': list
- 'q': quit
- 'c': countinue
- 's': step in
- 'r': return

timechen119 @ #python.tw (freenode.net) 教了顯示行號的方法:

python -m trace -t --ignore-dir /usr/lib/python2.5 xxxdaemon.py

找到了更土法的方法,以 ibus 在 gcode 上的 dev guide 的步驟為依據。 在 consold 裏:

$ ibus-setup (先把 daemon 跑起來)

$ GTK_IM_MODULE=ibus gedit (在 gedit 上測試 ibus)

完成後在 console 殺掉進程:

$ killall python

(或者有更好的命令,殺 python 也許有殺掉的嫌疑 :P)

在 table.py 的任一處加入 print "xxxx" 就能得知到達那一行代碼。

請教了 ibus 作者 phuang ,在 terminal 運行:

$ ibus-daemon && ibus-ui-gtk && ibus-conf && ibus-engine-xxxx

或者 DBUS_DEBUG=true ibus-engine-table ,就會列出 dbus client 的 exception。

(那個 ‘四步曲’ 執行了,不過沒有東西發生。)

ibus-setup = ibus-daemon + ibus-conf + ibus-ui-gtk +ibus-x11 ?

用 ibus-setup -> GTK_IM_MODULE=ibus gedit 的方法加上 pdb.set_trace() 還是不行, gedit 會停在 set_trace() 的地方,不過 (pdb) 沒有在 console 出來,而是死當。

_update_ui() = _update_lookup_table() -> _update_preedit() -> _update_aux()

get_aux_strings() = get_input_chars()

get_input_chars() = self._chars[0] + self._chars[1]

能組字的會一直放在 self._chars[0] 直至不能組的會放在 self._chars[1] ,'*' 還是直接被 commit 。

ok 了,在 table_mode_process_key 裏抓 valid_char 裏加另一個 or 來抓 '*' ,再在 add_input() 裏再加個 elif 把 '*' 加到 self._chars[0] ,現在 '*' 出現在 aux 。

'*' 雖然在 aux ,但是被忽略:應該在以 self._chars[0] 呼叫 select_words 的地方加工:

當 '*' 在 self._chars[0] 的時候,用 select_words_wildcard() 而不是 select_words(),這之後也要改進成使用者選項之一。

... db 好像被弄爛了 ...
CM:0 * edit













 管理者にだけ表示を許可する

Copyright 2007 けい・よん・いち・れい all rights reserved.
Designed by from fm in blog. Powered by FC2ブログ
VPS