FSF Emacs を快適に使いたいために PC を高速なものに買い換え、 Emacs を使いたいがためにプログラムを書き、 Emacs を快適に動かせる OS を選ぶ。そんな Emacs 阿呆が Emacs に関することを書き殴るページです。
revision 103245 で直った模様。
xdisp.c で無限ループするバグもいつの間にか直ってるっぽいなあ。
この修正が悪さをしてるっぽいんだけどなあ。
=== modified file 'src/window.c'
--- src/window.c 2011-01-25 04:08:28 +0000
+++ src/window.c 2011-01-30 10:55:47 +0000
@@ -6108,6 +6108,10 @@
}
FRAME_ROOT_WINDOW (f) = data->root_window;
+ /* Prevent "swapping out point" in the old selected window
+ using the buffer that has been restored into it.
+ We already swapped out point that from that window's old buffer. */
+ selected_window = Qnil;
/* Arrange *not* to restore point in the buffer that was
current when the window configuration was saved. */
うちの環境だと画像表示をして list-buffers するとハングアップするんだけど、以下の周辺が怪しいみたい。無限ループしちゃってる。 retry してるのは何か意図があるんだろうけど、とりあえず goto を外して様子を見てみる。つうかこのあたりの構造はしばらく変わってないから、どっかでおかしなことしてるんだろうなあ。
=== modified file 'src/xdisp.c'
--- src/xdisp.c 2010-11-19 16:34:22 +0000
+++ src/xdisp.c 2010-11-20 10:11:37 +0000
@@ -13428,7 +13428,7 @@
{
clear_glyph_matrix (w->desired_matrix);
++extra_scroll_margin_lines;
- goto too_near_end;
+ /* goto too_near_end; */
}
rc = SCROLLING_SUCCESS;
}
ポイント x 10 の値を返す font_get() の値をそのまま使っちゃってるのが原因かな? 厳密にはピクセルではなく、ポイントを返すから 10 で割るだけじゃダメなような気はするけれど。
=== modified file 'src/xfont.c'
--- src/xfont.c 2010-01-13 08:35:10 +0000
+++ src/xfont.c 2010-03-04 03:11:55 +0000
@@ -861,7 +861,7 @@
val = Ffont_get (font_object, QCavgwidth);
if (INTEGERP (val))
- font->average_width = XINT (val);
+ font->average_width = XINT (val) / 10;
if (font->average_width < 0)
font->average_width = - font->average_width;
if (font->average_width == 0
とりあえず以下のパッチで直ることは直るけども、これが正しい対処法かどうかは不明。
Index: xftfont.c
===================================================================
RCS file: /sources/emacs/emacs/src/xftfont.c,v
retrieving revision 1.13
diff -c -r1.13 xftfont.c
*** xftfont.c 30 Jun 2008 07:40:40 -0000 1.13
--- xftfont.c 4 Jul 2008 04:35:45 -0000
***************
*** 317,322 ****
--- 317,327 ----
{
font->min_width = font->average_width = font->space_width
= xftfont->max_advance_width;
+ XftTextExtents8 (display, xftfont, ascii_printable, 1, &extents);
+ font->space_width = extents.xOff;
+ if (font->space_width <= 0)
+ /* dirty workaround */
+ font->space_width = pixel_size;
XftTextExtents8 (display, xftfont, ascii_printable + 1, 94, &extents);
}
elsecustomize で tramp-remote-process-environment に LC_ALL=ja_JP.utf8 などを追加すれば直るかも。ホストごとにコードが設定できればいいのにね。
微妙に安定した?
--enable-font-backend して configure すると xft が使えるようになるけど、一部のアプリが動かないので emacs-23.0.50 と共用した方がいいかも。
微妙に不安定?
lang = en_US
といった設定が必要になったような気がする。
Mercurial/Subversion の pcl-cvs(pcvs)/psvn ライクなインターフェースです。
開発サポート環境です。
modeline 関連の elisp です。
yaapm(20020624) / mline(20020715)
yaapm は modeline に APM まわりの情報を表示します。 mline は modeline にスクロールしながら情報を表示します。(とても重いです。)
これらの elisp よりも glmm2 の使用をおすすめします。(modeline は、このようなデータを表示するのに適していないと思われるため。)
ちょっとしたこととか。
emacs-w3m を画像付きで長時間操作していると X が際限なく太っていくことがあります。これは Emacs が内部で画像をキャッシュしているためで、関数 clear-image-cache を呼び出すことでキャッシュをクリアすることができます。