[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

Re: 「M-x」+「変換キー」 で落ちる?



惜しいけどちょっと足りません.

> > ということで、read-only な文字列がある場合には再変換を行なわないように
> > する仕組を入れるべきなのではないかと考えます。
> 
> read_onlyの時は考慮していたのですが、ミニバッファは
> current_bufferとは見なされないようです。
> 
> ミニバッファが選択されている時の処理を入れて見ました。

 これだとミニバッファで本来可能な再変換もできなくなってしまいます.
 これだけだと, 普通のバッファの 'read-only 属性でもこけるのが直っ
 ていません.

 問題はread-only かどうかなので, 多分これでOKだと思います.

Index: mw32ime.c
===================================================================
--- mw32ime.c	(revision 3934)
+++ mw32ime.c	(working copy)
@@ -316,7 +316,12 @@
   char *lpstr;
   Lisp_Object str, start, end;
   struct frame *f = SELECTED_FRAME ();
+  extern int waiting_for_input;
 
+  if (!NILP (current_buffer->read_only))
+    return FALSE;  /* Cannot signal here */
+
+
   if (!NILP (current_buffer->mark_active))
     {
       start = (marker_position (current_buffer->mark) < PT
@@ -333,7 +338,15 @@
       end = Fpoint_marker ();
     }
 
-  str = Fbuffer_substring_no_properties (start, end);
+  str = Fbuffer_substring (start, end);
+  if (!NILP (Ftext_property_any (make_number (0),
+				 Flength (str),
+				 intern ("read-only"),
+				 Qt,
+				 str)))
+    return FALSE;  /* Cannot signal here */
+  
+  str = Fsubstring_no_properties (str);
 
   MW32_ENCODE_TEXT (str, Vlocale_coding_system, &lpstr, &len);

-- 
堀口恭太郎