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

[MD:1135]Meadow.plan file



mule-ucs 0.50と、Meadow-1.04a1を近く出します。^^;;;

TODOでは、あんまり柔軟性がないので、こんなファイルを
作って置く事にしました。出来上がっていく一方です。^^;;;

まあ、このファイルを見てわかるとおり、まだpendingの山です。^^;;;

## このファイル編集するための major-modeを作ってくれたら歓迎します。^^;;;

from himi

; "Transaction" choises are
;                Bug report.
;                Patch for Bug Fix.
;                Patch for New feature.
;                Request for New feature.

; "Status" choises are
;               pending.
;               working.
;               done.
;               confirmed.
;

------------------------------------------------------------
Submitter: Kobayashi
Subject: Meadow hung up.
X-ML-COUNT: 1111
Transaction: Bug report.
Status: pending
------------------------------------------------------------

こばやしです。
昨日、再現性のあるmeadowの落しかたを経験(発見)しました。

 1.ediff-files等でediffのframeを表示する。
 2.ediffのframeの最大化ボタンを押す。
 3.ediffのframeのresizeボタンを押す。
  ここで、僕の設定では文字が豆腐表示になってしまいます。
 4.meadowのframeをマウスでつつく。
 5.ワトソン先生の登場

------------------------------------------------------------
Submitter: Horiguchi Kyotaro
Subject: Frame and input event synclonization.
X-ML-COUNT:
Transaction: Bug report
Status: pending
------------------------------------------------------------

At Tue, 06 Apr 1999 22:53:28 +0900 (JST), kyota@xxxxxxxxxxxxx (Kyotaro HORIGUCHI) wrote in <19990406225328M.kyota@xxxxxxxxxxxxx>
>  なんとなくですがフレームを新しく作る瞬間にナニかすると起きること
> があるような気がします.

 まさにこのまんまでした. 新しいフレームの初期設定かなにかをしてい
るときに async_handle_message (だったかな?)が WM_MOVE とかを処理
してしまうのが原因のようです. ちなみに新しいフレームのメニューバー
をつついても固まります.

 で固める手順は以下の通りです. 他の方はこれで固められますか?

 1) とりあえず meadow を起動して, C-x 5 f でたとえば ~/.emacs な
    んかを読みこもうとします.

 2) 新しいフレーム(Windows のウインドウ)が出てきた瞬間を狙ってそ
    の新しいフレームのタイトルバーをつつきます. (WM_MOVE ですね多
    分)

 これで全フレームが真っ白です. コレだけだとなんだかわたしがケンシ
ロウみたいに聞こえかねないのでコツを言っておきますと.

 a) 最初に出てきたフレームをタイトルバー一つ分だけ下にずらしておく.

 b) これで新規のフレームはフレームの上側のすぐ外に現れることがわ
    かっているので, C-x 5 f ~/.emacs でリターンを押す前にマウスカー
    ソルをそこに持って行く.

 c) あとはリターンを押してマウスカーソルの下の景色が変わった瞬間
    にクリック. タイミングはそんなにシビアじゃありません. シビア
    なときもありますが, そのときはバッファとフレームを消して再度
    やり直せば何回かやるうちに引っかかると思います.
    わたしがこれを試した環境は NT on P-II 266 です.

 meadow -q で立ち上げた時でも同じことができます.

# そもそもなんで普通に操作しているときにこんなタイミングでウィン
# ドウをつつけるんだ? > 自分
# それもちょくちょくやるらしい. せっかちなのか..

------------------------------------------------------------
Submitter: Suzuki Keiichi
Subject: Select-Frame problem
X-ML-COUNT: 
Transaction: Bug report
Status: pending
------------------------------------------------------------

圭一です。

;; いくらなんでもこれは Semi-gnus の問題ではないと思いますので。 ^^;;;

実害はそれほどないのですが、動きが怪しいところがありますので報告します。

具体的な操作の方がわかりやすいと思いますので、手順を説明します。

1. Frame が一つの状態で gnus の *Group* を表示する。
2. C-x 5 2 で frame を作る。
3. 新しい frame に表示する buffer を *scratch* に切り替える。
4. WINDOW(MS-Windowの ^^;;;)の右上の (compose-chars ?□ ?X) を click し
   て WINDOW を閉じる。(Do not use C-x 5 0)
5. q を入力する。
6. Buffer is read-only: #<buffer *Group*> となる。

;; そのほかに WINDOW の focus が変った直後の、一発目のキー入力処理がおか
;; しいような気がします。

------------------------------------------------------------
Submitter: Mori Kesuke
Subject: registry configuration
X-ML-COUNT: 
Transaction: Request for new feature. 
Status: pending
------------------------------------------------------------

> で、もう一つ、急ぎではありませんが、環境変数を設定しておくレジス
> トリの位置も、バージョン毎に分けませんか? 複数バージョンを使い分
> けるときに共有できないので、今のところ片方は必ずバッチファイルを
> 使わざるを得ないので。

よさげなので、1.04で入れます。

------------------------------------------------------------
Submitter: HORIGUCHI Kyotaro
Subject Drag and Drop
X-ML-COUNT:
Transaction: Patch for New Feature.
Status: Pending
------------------------------------------------------------

== src/ChangeLog.Meadow ==============================
1999-04-22  Horiguchi Kyotaro  <kyota@xxxxxxxxxxxxx>

	* w32term.c (w32_drag_n_drop_handler, W32read_socket
	  [case WM_EMACS_CREATE_WINDOW, WM_DROP_FILES],
	  keyboard.c (make_lispy_event [case drag_n_drop])
	Added support for Drag and Drop.

	* w32term.c (w32read_socket [case WM_EMACS_POPUP_MENU])
	Bug Fix: Fix handling of messages not to fall into infinite loop
	when releasing mouse button out of pop-up menu.

== lisp/ChangeLog.Meadow =============================
1999-04-22  Horiguchi Kyotaro  <kyota@xxxxxxxxxxxxx>

	* term/w32-win.el (w32-drag-n-drop):
	Set target window with event object.

--- mw32term.c.org	Sun Feb 21 07:41:00 1999
+++ mw32term.c	Fri Mar 26 20:18:54 1999
@@ -27,4 +27,6 @@
 #include "blockinput.h"
 #ifdef MEADOW
+#include <windows.h>
+#include <shellapi.h>
 #include "mw32sync.h"
 #endif
@@ -2539,4 +2541,29 @@
 #endif
 
+#ifdef MEADOW
+int 
+w32_drag_n_drop_handler (frame, msg, emacs_event)
+     FRAME_PTR frame;
+     MSG* msg;
+     struct input_event* emacs_event;
+{
+  HDROP hDrop;
+  POINT pt;
+
+  hDrop = (HANDLE)msg->wParam;
+  DragQueryPoint(hDrop, &pt);
+  /* DragQueryPoint returns position based on window coordination */
+  emacs_event->kind = drag_n_drop;
+  emacs_event->code = (int)hDrop;
+  emacs_event->modifiers = W32GETMODIFIER;
+  XSETINT (emacs_event->x, pt.x);
+  XSETINT (emacs_event->y, pt.y);
+  XSETFRAME (emacs_event->frame_or_window, frame);
+  emacs_event->timestamp = msg->time;
+
+  return 1;
+}
+#endif
+
 
 /* Scroll bar support.  */
@@ -2986,5 +3013,5 @@
 	emacs_event->part = scroll_bar_handle;
 #if 0
-	printf("Scroll Bar Tracking...%d\n", y);
+	printf("Scroll Bar Positioning...%d\n", y);
 	fflush(stdout);
 #endif
@@ -3522,4 +3549,5 @@
 	    POST_THREAD_INFORM_MESSAGE(main_thread_id, WM_EMACS_CREATE_WINDOW_REPLY,
 				       (WPARAM) hwnd, (LPARAM) 0);
+	    DragAcceptFiles(hwnd, TRUE);
 	    break;
 	  }
@@ -3586,4 +3614,5 @@
 	    UINT track_flag;
 	    LPPOINT lppos;
+	    MSG msg2;
 
 	    lppos = (LPPOINT)msg.lParam;
@@ -3602,23 +3631,22 @@
 					  WM_EMACS_POPUP_MENU_REPLY,
 					  (WPARAM) 0, (LPARAM) 0);
-	    while(1)
+	    
+	    if (!PeekMessage(&msg2, msg.hwnd, 0, 0, PM_REMOVE))
 	      {
-		MSG msg2;
-
-		if (!PeekMessage(&msg2, msg.hwnd, 0, 0, PM_REMOVE))
-		  {
-		    POST_THREAD_INFORM_MESSAGE (main_thread_id,
-						WM_EMACS_POPUP_MENU_REPLY,
-						(WPARAM) 0, (LPARAM) 0);
-		    break;
-		  }
-		if ((msg2.message == WM_COMMAND) && (HIWORD(msg2.wParam) == 0))
-		  {
-		    POST_THREAD_INFORM_MESSAGE (main_thread_id,
-						WM_EMACS_POPUP_MENU_REPLY,
-						(WPARAM) msg2.wParam, (LPARAM) 0);
-		    break;
-		  }
+		POST_THREAD_INFORM_MESSAGE (main_thread_id,
+					    WM_EMACS_POPUP_MENU_REPLY,
+					    (WPARAM) 0, (LPARAM) 0);
+	      }
+	    else if ((msg2.message == WM_COMMAND) && 
+		     (HIWORD(msg2.wParam) == 0))
+	      {
+		POST_THREAD_INFORM_MESSAGE (main_thread_id,
+					    WM_EMACS_POPUP_MENU_REPLY,
+					    (WPARAM) msg2.wParam, (LPARAM) 0);
 	      }
+	    else
+	      POST_THREAD_INFORM_MESSAGE (main_thread_id,
+					  WM_EMACS_POPUP_MENU_REPLY,
+					  (WPARAM) 0, (LPARAM) 0);
 	    break;
 	  }
@@ -3640,4 +3668,16 @@
 					  LOWORD(msg.wParam));
 	    }
+	  break;
+
+	case WM_DROPFILES:
+          {
+            if(f && !f->iconified && f->visible &&
+	       (w32_drag_n_drop_handler(f, &msg, bufp)))
+	      {
+		bufp++;
+		count++;
+		numchars--;
+	      }
+          }
 	  break;
 
--- keyboard.c.org	Wed Mar 03 10:38:48 1999
+++ keyboard.c	Fri Mar 26 20:36:56 1999
@@ -41,4 +41,6 @@
 #include "blockinput.h"
 #ifdef MEADOW
+#include <windows.h>
+#include <shellapi.h>
 #include "mw32sync.h"
 #endif
@@ -4583,9 +4585,38 @@
 	   which the event occurred and a list of the filenames
 	   dropped.  */
+
+#ifdef MEADOW
+	f = XFRAME (event->frame_or_window);
+#else
 	if (! CONSP (event->frame_or_window))
 	  abort ();
 
 	f = XFRAME (XCONS (event->frame_or_window)->car);
+#endif
+
+#ifdef MEADOW
+	{
+	  HDROP hDrop;
+	  char fname[MAXPATHLEN+1];
+	  int nfiles, i;
+
+	  hDrop = (HDROP)event->code;
+	  nfiles = DragQueryFile(hDrop, 0xffffffff, fname, MAXPATHLEN+1);
+	  if (nfiles > 0)
+	    {
+	      DragQueryFile(hDrop, 0, fname, MAXPATHLEN+1);
+	      files = Fcons(build_string(fname), Qnil);
+	      for(i = 1 ; i < nfiles ; i++){
+		DragQueryFile(hDrop, i, fname, MAXPATHLEN+1);
+		files = Fcons(build_string(fname), files);
+	      }
+	    }
+	  else
+	    files = Qnil;
+	  DragFinish(hDrop);
+	}
+#else
 	files = XCONS (event->frame_or_window)->cdr;
+#endif
 
 	/* Ignore mouse events that were made on frames that
--- w32-win.el.org	Thu Feb 18 01:21:28 1999
+++ w32-win.el	Fri Mar 26 20:29:18 1999
@@ -157,4 +157,5 @@
 Switch to a buffer editing the last file dropped."
   (interactive "e")
+  (select-window (car (car (cdr event))))
   (mapcar 'find-file (car (cdr (cdr event))))
   (raise-frame))



------------------------------------------------------------
Submitter: HORIGUCHI Kyotaro
Subject: for argument editing and m17n filename.
X-ML-COUNT:
Transaction: Patch for Bug fix.
Status: Pending
------------------------------------------------------------

*** callproc.c.org	Wed Feb 24 18:49:48 1999
--- callproc.c	Mon Mar 08 21:59:54 1999
***************
*** 383,388 ****
--- 383,389 ----
  
    display = nargs >= 4 ? args[3] : Qnil;
  
+   infile = ENCODE_FILE (infile);
    filefd = open (XSTRING (infile)->data, O_RDONLY, 0);
    if (filefd < 0)
      {
***************
*** 393,409 ****
      struct gcpro gcpro1;
  
      GCPRO1 (current_dir);
      openp (Vexec_path, args[0], EXEC_SUFFIXES, &path, 1);
      UNGCPRO;
    }
    if (NILP (path))
      {
- #ifndef MEADOW /* For argument editing, check it later. */
        close (filefd);
        report_file_error ("Searching for program", Fcons (args[0], Qnil));
- #else
-       path = args[0];
- #endif
      }
    new_argv[0] = XSTRING (path)->data;
    if (nargs > 4)
--- 394,412 ----
      struct gcpro gcpro1;
  
      GCPRO1 (current_dir);
+ #ifndef MEADOW
      openp (Vexec_path, args[0], EXEC_SUFFIXES, &path, 1);
+ #else
+     /* for script execution on MSWindows, not apply exec_only for openp */
+     /* openp without exec_only returns fd not used, free it immediately */
+     close(openp (Vexec_path, args[0], EXEC_SUFFIXES, &path, 0));
+ #endif
      UNGCPRO;
    }
    if (NILP (path))
      {
        close (filefd);
        report_file_error ("Searching for program", Fcons (args[0], Qnil));
      }
    new_argv[0] = XSTRING (path)->data;
    if (nargs > 4)
***************
*** 511,516 ****
--- 514,520 ----
      else if (STRINGP (error_file))
        {
  #ifdef DOS_NT
+ 	error_file = ENCODE_FILE (error_file);
  	fd_error = open (XSTRING (error_file)->data,
  			 O_WRONLY | O_TRUNC | O_CREAT | O_TEXT,
  			 S_IREAD | S_IWRITE);
*** process.c.org	Thu Feb 04 15:43:36 1999
--- process.c	Mon Mar 08 21:52:00 1999
***************
*** 1162,1168 ****
--- 1162,1174 ----
  
        tem = Qnil;
        GCPRO4 (name, program, buffer, current_dir);
+ #ifndef MEADOW
        openp (Vexec_path, program, EXEC_SUFFIXES, &tem, 1);
+ #else
+       /* for script execution on Windows, not apply exec_only for openp */
+       /* openp without exec_only returns fd not used, free it immediately */
+       close(openp (Vexec_path, program, EXEC_SUFFIXES, &tem, 0));
+ #endif
        UNGCPRO;
        if (NILP (tem))
  	report_file_error ("Searching for program", Fcons (program, Qnil));
*** w32proc.c.org	Sat Feb 27 19:36:26 1999
--- w32proc.c	Mon Mar 08 21:54:16 1999
***************
*** 859,864 ****
--- 859,865 ----
        struct gcpro gcpro1;
  
        GCPRO1 (program);
+ #ifndef MEADOW
        openp (Vexec_path, program, EXEC_SUFFIXES, &full, 1);
        UNGCPRO;
        if (NILP (full))
***************
*** 868,875 ****
  	    errno = ENOEXEC;
  	  return -1;
  	}
      }
! 
      unixtodos_filename(cmdname);
    }
  #else /* not MEADOW */
--- 869,883 ----
  	    errno = ENOEXEC;
  	  return -1;
  	}
+ #else
+       /* for script execution on Windows, not apply exec_only for openp */
+       /* openp without exec_only returns fd not used, free it immediately */
+       close(openp (Vexec_path, program, EXEC_SUFFIXES, &full, 0));
+       UNGCPRO;
+       if (NILP (full))
+ 	  return -1;
      }
! #endif
      unixtodos_filename(cmdname);
    }
  #else /* not MEADOW */
*** lread.c.org	Thu Feb 04 15:43:28 1999
--- lread.c	Mon Mar 08 21:45:06 1999
***************
*** 35,40 ****
--- 35,41 ----
  #include "commands.h"
  #include "keyboard.h"
  #include "termhooks.h"
+ #include "coding.h"
  #endif
  
  #ifdef lint
***************
*** 882,887 ****
--- 883,889 ----
  	    continue;
  	}
  
+       filename = ENCODE_FILE (filename);
        /* Calculate maximum size of any filename made from
  	 this path element/specified file name and any possible suffix.  */
        want_size = strlen (suffix) + XSTRING (filename)->size + 1;
*** ChangeLog.Meadow.org	Sat Feb 27 01:17:24 1999
--- ChangeLog.Meadow	Mon Mar 08 22:06:48 1999
***************
*** 1,3 ****
--- 1,18 ----
+ 1999-03-08  Horiguchi Kyotaro  <kyota@xxxxxxxxxxxxx>
+ 
+ 	* callproc.c (Fcall_process), process.c (Fstart_process)
+           w32proc.c (sys_spawnve), 
+ 	PROGRAM, INFILE, STDERR-FILE and cmdname are allowed to be a
+ 	string containing mutibyte characters (Using ENCODE_FILE to encode
+ 	string)
+       For argument editing, any program pathes are allowed to pass
+	argument editing program. (Addition to changes on 1999-02-24.)
+ 
+ 	* lread.c (openp)
+ 	str is allowed to be a string containig multibyte characters. This
+ 	change allows to check files correctly whose names are such strings.
+ 
  1999-02-28  Miyashita Hisashi  <himi@xxxxxxxxxxxxxxxxxxxxxxxxx>
  
  	* w32.c (w32_get_long_filename):