irodo****@irodo*****
irodo****@irodo*****
2005年 11月 11日 (金) 00:02:29 JST
本庄です。 現行の Carbon Emacs Package において、オートセーブ時にインライン入力を 行っていると CPU 使用率が MAX になり、かつ入力が表示されない問題を対処 するパッチを作成してみました。まだ十分なテストを行っていませんが、半日 程使った限りでは問題なく動作しているように見えます。 このパッチは Carbon Emacs Package 20051010 版を元に作成し、Carbon Emacs Package 20051101 版でも確認しています。サブジェクトにあるとおり、 inline_patch-20041229 に追加するパッチですので、それ以外のバージョンで の動作は保証できません。 パッチは、inline-patch-20041229 を適用した後に適用してください。 $ cd emacs $ patch -p1 < path/to/inine-patch-20041229/emacs-inline.patch $ patch -p0 < path/to/inline-patch-addition.patch -- Eiji Honjoh irodori RINGO - little tools for Mac OS X http://irodori.sakura.ne.jp/ -------------- next part -------------- *** src/keyboard.c.~1.839.~ Tue Oct 4 13:23:12 2005 --- src/keyboard.c Thu Nov 10 23:12:23 2005 *************** *** 114,119 **** --- 114,124 ---- #define abs(x) ((x) >= 0 ? (x) : -(x)) + /* Following variables defined in macim.c */ + #ifdef MAC_OSX + extern int mac_im_update_text; + #endif + /* Following definition copied from eval.c */ struct backtrace *************** *** 3893,3903 **** --- 3898,3919 ---- return obj; } + #ifdef MAC_OSX + /* Turn off this flag for detect inlne input event */ + mac_im_update_text = FALSE; + #endif + /* Wait until there is input available. */ for (;;) { if (kbd_fetch_ptr != kbd_store_ptr) break; + + #ifdef MAC_OSX + if (TRUE == mac_im_update_text) + break; + #endif + #ifdef HAVE_MOUSE if (!NILP (do_mouse_tracking) && some_mouse_moved ()) break; *** src/macim.c.orig Wed Nov 2 22:18:07 2005 --- src/macim.c Thu Nov 10 23:24:05 2005 *************** *** 111,116 **** --- 111,119 ---- #ifdef MAC_OSX + /* Variables for detect text input on keyboad.c */ + int mac_im_update_text = FALSE; + static EventTypeSpec events[] = { { kEventClassTextInput, kEventTextInputOffsetToPos }, { kEventClassTextInput, kEventTextInputUpdateActiveInputArea }, *************** *** 324,329 **** --- 327,333 ---- argv[argc++] = make_string("", 0); argv[argc++] = make_number(0); } + mac_im_update_text = TRUE; } break; case kEventTextInputGetSelectedText: