[Date Prev][Date Next][Thread Prev][][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)