[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: xml.el



>> On Thu, 03 Jul 2003 11:12:34 +0900
>> 「山」== yamaoka@jpl.org (Katsumi Yamaoka) said as follows:

土> なるほど.私の手元の Mule2.3 は char-after() が built-in function 
土> だという変てこな代物なので気が付かなかったんですね.改造してしまう
土> と,動作確認向きではなくなるなあ….

山> いや、char-after() が built-in なのは変ではないです。

慌てて間違えました.

山> Mule 2.3 では char-after() は一つの引数を要求しますが、後期の
山> Emacsen は引数無しでも (point) に対して動作します。

そうなんです.でもって,手元の Mule2.3 には添付のパッチがあたっていて,
(char-after) が動いてしまうのです.変でしょ?

後は,when / unless / match-string / match-string-no-properties /
split-string 辺りを subr.el に突っ込んだら,かなり色んなものがそのまま
で動きそうですよね.

-- 
土屋 雅稔 ( 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)