[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: mule2 freeze
>> On Fri, 19 Apr 2002 18:31:35 +0900
>> 「山」== yamaoka@jpl.org (Katsumi Yamaoka) said as follows:
山> そういうわけで、Mule 2.3@19.34 をお使いのみなさまにおかれましては、
山> きのう幹の先端に CVS commit したパッチを当てて、再インストールして
山> いただくことを強くお勧めします。
このパッチですが,組み合わせる source によっては不具合が発生する可能性
があることを発見しました.
mule-2.3@19.34 を使っている皆さんは既にご存じのことと思いますが,この
版の mule-2.3 は決して正式版ではなく,alpha 版という扱いになっています.
そのためか,source も微妙に異なる複数の版が流通しているらしく,その中
には,半田さんによって既に current_column_1() が正常に動くように修正さ
れたものがあるようです.
ここで問題がうっとうしくなるのは,半田さんによって修正済の
current_column_1() に対して,emacs-w3m 同梱のパッチは警告無く適用され
てしまうばかりか,せっかく修正されたバグを復活させてしまう効果があると
いうことです.
;; 実は,debian の mule2 パッケージには同じパッチが当っているはずなの
;; に,w3m-bitmap.el が使えない問題を追求していて気が付いたのです.
この不具合を回避するため,current_column_1() に対する修正を置き換えた
パッチを先ほど commit しました.パッチを適用したのに w3m-bitmap.el が
うまく使えないと悩んでいた人は,新しいパッチを使って mule を作り直して
ください.半田さんによって修正済みの source に対してパッチを適用すると
「既に適用済みだよ,reverse patch と見なす?」という趣旨の質問を受ける
はずですが,構わずに適用すれば良いはずです.
おまけとして,mule2 の char-after() を Emacs20 以降と同じ動作にするた
めのパッチを添付しておきます.
;; それにしても,何やってんだか.
--
土屋 雅稔 ( TSUCHIYA Masatoshi )
--- mule-2.3-19.34/src/editfns.c.orig 1998-08-18 14:48:38.000000000 +0900
+++ mule-2.3-19.34/src/editfns.c 2002-10-27 22:41:13.000000000 +0900
@@ -591,7 +591,7 @@
return Qnil;
}
-DEFUN ("char-after", Fchar_after, Schar_after, 1, 1, 0,
+DEFUN ("char-after", Fchar_after, Schar_after, 0, 1, 0,
"Return character in current buffer at position POS.\n\
POS is an integer or a buffer pointer.\n\
If POS is out of range, the value is nil.\n\
@@ -603,9 +603,12 @@
register Lisp_Object val;
register int n;
- CHECK_NUMBER_COERCE_MARKER (pos, 0);
-
- n = XINT (pos);
+ if (NILP(pos))
+ n = PT;
+ else {
+ CHECK_NUMBER_COERCE_MARKER (pos, 0);
+ n = XINT (pos);
+ }
if (n < BEGV || n >= ZV) return Qnil;
if (NILP (current_buffer->mc_flag)) /* 91.11.14 by K.Handa */
@@ -620,7 +623,7 @@
return val;
}
-DEFUN ("char-before", Fchar_before, Schar_before, 1, 2, 0,
+DEFUN ("char-before", Fchar_before, Schar_before, 0, 2, 0,
"Return character in current buffer before position POS.\n\
POS is an integer or a buffer pointer.\n\
If POS is out of range, the value is nil.\n\
@@ -632,9 +635,12 @@
register Lisp_Object val;
register int n;
- CHECK_NUMBER_COERCE_MARKER (pos, 0);
-
- n = XINT (pos);
+ if (NILP(pos))
+ n = PT;
+ else {
+ CHECK_NUMBER_COERCE_MARKER (pos, 0);
+ n = XINT (pos);
+ }
if (n <= BEGV || n > ZV) return Qnil;
XSETFASTINT (val, FETCH_CHAR (n - 1));
--- mule-2.3-19.34/lisp/bytecomp.el.orig 1998-08-18 14:48:26.000000000 +0900
+++ mule-2.3-19.34/lisp/bytecomp.el 2002-10-27 23:39:44.000000000 +0900
@@ -2323,7 +2323,7 @@
(byte-defop-compiler (1+ byte-add1) 1)
(byte-defop-compiler (1- byte-sub1) 1)
(byte-defop-compiler goto-char 1)
-(byte-defop-compiler char-after 1)
+(byte-defop-compiler char-after 0-1)
(byte-defop-compiler set-buffer 1)
;;(byte-defop-compiler set-mark 1) ;; obsolete
(byte-defop-compiler19 forward-word 1)