all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: storm@cua.dk (Kim F. Storm)
Cc: "Jan D." <jan.h.d@swipnet.se>,
	emacs-devel@gnu.org, rms@gnu.org, Jason Rumney <jasonr@gnu.org>
Subject: Re: [hober0@gmail.com: Re: mode-line redisplay bug]
Date: Tue, 11 Oct 2005 12:21:50 +0200	[thread overview]
Message-ID: <m3k6gk9ww1.fsf@kfs-l.imdomain.dk> (raw)
In-Reply-To: <wl4q7odf1e.wl%mituharu@math.s.chiba-u.ac.jp> (YAMAMOTO Mitsuharu's message of "Tue, 11 Oct 2005 10:21:33 +0900")

YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> writes:

>>>>>> On Mon, 10 Oct 2005 20:40:18 +0100, Jason Rumney <jasonr@gnu.org> said:
>
>> "Jan D." <jan.h.d@swipnet.se> writes:
>>> AFAIK co-ordinates on W32 behave the same as on X, so your patch
>>> should be OK.  It is easy to confirm anyway.
>
>> OK, I've installed the patch, but as YAMAMOTO Mitsuharu pointed out,
>> it may not deal with the left fringe width - which might be an
>> explanation for the gx calculation being off by one, and possibly
>> also the explanation for why this patch does work as I expected.
>
> A simple debug code below shows the incorrectness of the calculated
> rectangle :-).  And if it is corrected, the problem I said in
> http://lists.gnu.org/archive/html/emacs-pretest-bug/2005-06/msg00148.html
> will appear.


I think this should be solved by making remember_mouse_glyph generic
for all platforms and handle all window parts sensibly (the old code
in glyph_rect had many problems).

Below is a patch which does this, but I have only tested it on X.
Could somebody test it on W32 and MAC?

But the MAC version doesn't actually call "remember_mouse_glyph"
anywhere (it uses pixel_to_glyph_coords as the other versions used to
do) so I don't expect this to have any effect on the Mac...?


*** dispextern.h	07 Oct 2005 23:39:34 +0200	1.210
--- dispextern.h	11 Oct 2005 12:01:06 +0200
***************
*** 2615,2620 ****
--- 2615,2622 ----
  void pixel_to_glyph_coords P_ ((struct frame *, int, int, int *, int *,
  				NativeRectangle *, int));
  int glyph_to_pixel_coords P_ ((struct window *, int, int, int *, int *));
+ void remember_mouse_glyph P_ ((struct frame *, int, int, NativeRectangle *));
+
  void mark_window_display_accurate P_ ((Lisp_Object, int));
  void redisplay_preserve_echo_area P_ ((int));
  void set_cursor_from_row P_ ((struct window *, struct glyph_row *,

*** xdisp.c	07 Oct 2005 10:53:12 +0200	1.1058
--- xdisp.c	11 Oct 2005 12:05:41 +0200
***************
*** 2027,2032 ****
--- 2027,2199 ----
    return WINDOW_TO_FRAME_PIXEL_Y (w, y);
  }

+ /*
+  * Remember which glyph the mouse is over.
+  */
+
+ void
+ remember_mouse_glyph (f, gx, gy, rect)
+      struct frame *f;
+      int gx, gy;
+      NativeRectangle *rect;
+ {
+   Lisp_Object window;
+   struct window *w;
+   struct glyph_row *r, *gr, *end_row;
+   enum window_part part;
+   enum glyph_row_area area;
+   int x, y, width, height;
+
+   /* Try to determine frame pixel position and size of the glyph under
+      frame pixel coordinates X/Y on frame F.  */
+
+   width = FRAME_SMALLEST_CHAR_WIDTH (f);
+   height = FRAME_SMALLEST_FONT_HEIGHT (f);
+
+   window = window_from_coordinates (f, gx, gy, &part, &x, &y, 0);
+   if (NILP (window))
+     goto virtual_glyph;
+
+   w = XWINDOW (window);
+   width = WINDOW_FRAME_COLUMN_WIDTH (w);
+   height = WINDOW_FRAME_LINE_HEIGHT (w);
+
+   r = MATRIX_FIRST_TEXT_ROW (w->current_matrix);
+   end_row = r + w->current_matrix->nrows - 1;
+
+   if (w->pseudo_window_p)
+     {
+       area = TEXT_AREA;
+       part = ON_MODE_LINE; /* Don't adjust margin. */
+       goto text_glyph;
+     }
+
+   switch (part)
+     {
+     case ON_LEFT_MARGIN:
+       area = LEFT_MARGIN_AREA;
+       goto text_glyph;
+
+     case ON_RIGHT_MARGIN:
+       area = RIGHT_MARGIN_AREA;
+       goto text_glyph;
+
+     case ON_TEXT:
+     case ON_MODE_LINE:
+     case ON_HEADER_LINE:
+       area = TEXT_AREA;
+       goto text_glyph;
+
+     case ON_LEFT_FRINGE:
+       x = (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w)
+ 	   ? WINDOW_LEFT_SCROLL_BAR_AREA_WIDTH (w)
+ 	   : window_box_right_offset (w, LEFT_MARGIN_AREA));
+       width = WINDOW_LEFT_FRINGE_WIDTH (w);
+       goto row_glyph;
+
+     case ON_RIGHT_FRINGE:
+       x = (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w)
+ 	   ? window_box_right_offset (w, RIGHT_MARGIN_AREA)
+ 	   : window_box_right_offset (w, TEXT_AREA));
+       width = WINDOW_RIGHT_FRINGE_WIDTH (w);
+       goto row_glyph;
+
+     case ON_SCROLL_BAR:
+       x = (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w)
+ 	   ? 0
+ 	   : (window_box_right_offset (w, RIGHT_MARGIN_AREA)
+ 	      + (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w)
+ 		 ? WINDOW_RIGHT_FRINGE_WIDTH (w)
+ 		 : 0)));
+       width = WINDOW_SCROLL_BAR_AREA_WIDTH (w);
+       goto row_glyph;
+
+     default:
+       goto virtual_glyph;
+     }
+
+  text_glyph:
+   gr = 0; gy = 0;
+   for (; r < end_row && r->enabled_p && r->y + r->height < y; ++r)
+     gr = r; gy = r->y;
+
+   if (gr && gy <= y && gy + gr->height > y)
+     {
+       struct glyph *g = gr->glyphs[area];
+       struct glyph *end = g + gr->used[area];
+
+       height = gr->height;
+       gx = gr->x;
+       while (g < end && gx < x)
+ 	gx += g->pixel_width, ++g;
+
+       if (g < end)
+ 	width = g->pixel_width;
+       else
+ 	{
+ 	  /* Use nominal char spacing at end of line.  */
+ 	  x -= gx;
+ 	  gx += (x / width) * width;
+ 	}
+
+       if (part != ON_MODE_LINE && part != ON_HEADER_LINE)
+ 	gx += window_box_left_offset (w, area);
+     }
+   else
+     {
+       /* Use nominal line height at end of window.  */
+       gx = (x / width) * width;
+       y -= gy;
+       gy += (y / height) * height;
+     }
+
+   STORE_NATIVE_RECT (*rect,
+ 		     WINDOW_TO_FRAME_PIXEL_X (w, gx),
+ 		     WINDOW_TO_FRAME_PIXEL_Y (w, gy),
+ 		     width,
+ 		     height);
+   return;
+
+  row_glyph:
+   gr = 0, gy = 0;
+   for (; r < end_row && r->enabled_p && r->y + r->height < y; ++r)
+     gr = r, gy = r->y;
+
+   if (gr && gy <= y && gy + gr->height > y)
+     height = gr->height;
+   else
+     {
+       /* Use nominal line height at end of window.  */
+       y -= gy;
+       gy += (y / height) * height;
+     }
+
+   STORE_NATIVE_RECT (*rect,
+ 		     WINDOW_TO_FRAME_PIXEL_X (w, gx),
+ 		     WINDOW_TO_FRAME_PIXEL_Y (w, gy),
+ 		     width,
+ 		     height);
+   return;
+
+
+  virtual_glyph:
+   /* If there is no glyph under the mouse, then we divide the screen
+      into a grid of the smallest glyph in the frame, and use that
+      as our "glyph".  */
+
+   /* Arrange for the division in FRAME_PIXEL_X_TO_COL etc. to
+      round down even for negative values.  */
+   if (gx < 0)
+     gx -= width - 1;
+   if (gy < 0)
+     gy -= height - 1;
+
+   gx = (gx / width) * width;
+   gy = (gy / width) * width;
+
+   STORE_NATIVE_RECT (*rect, gx, gy, width, height);
+ }
+

  #endif /* HAVE_WINDOW_SYSTEM */

*** xterm.c	11 Oct 2005 00:27:24 +0200	1.879
--- xterm.c	11 Oct 2005 12:00:11 +0200
***************
*** 3582,3589 ****
  static XMotionEvent last_mouse_motion_event;
  static Lisp_Object last_mouse_motion_frame;

- static void remember_mouse_glyph P_ ((struct frame *, int, int));
-
  static void
  note_mouse_movement (frame, event)
       FRAME_PTR frame;
--- 3582,3587 ----
***************
*** 3610,3616 ****
        last_mouse_scroll_bar = Qnil;
        note_mouse_highlight (frame, event->x, event->y);
        /* Remember which glyph we're now on.  */
!       remember_mouse_glyph (frame, event->x, event->y);
      }
  }

--- 3608,3614 ----
        last_mouse_scroll_bar = Qnil;
        note_mouse_highlight (frame, event->x, event->y);
        /* Remember which glyph we're now on.  */
!       remember_mouse_glyph (frame, event->x, event->y, &last_mouse_glyph);
      }
  }

***************
*** 3630,3727 ****
  }


- static int glyph_rect P_ ((struct frame *f, int, int, XRectangle *));
-
-
- /* Try to determine frame pixel position and size of the glyph under
-    frame pixel coordinates X/Y on frame F .  Return the position and
-    size in *RECT.  Value is non-zero if we could compute these
-    values.  */
-
- static int
- glyph_rect (f, x, y, rect)
-      struct frame *f;
-      int x, y;
-      XRectangle *rect;
- {
-   Lisp_Object window;
-   struct window *w;
-   struct glyph_row *r, *end_row;
-   enum window_part part;
-
-   window = window_from_coordinates (f, x, y, &part, &x, &y, 0);
-   if (NILP (window))
-     return 0;
-
-   w = XWINDOW (window);
-   r = MATRIX_FIRST_TEXT_ROW (w->current_matrix);
-   end_row = r + w->current_matrix->nrows - 1;
-
-   if (part != ON_TEXT)
-     return 0;
-
-   for (; r < end_row && r->enabled_p; ++r)
-     {
-       if (r->y >= y)
- 	{
- 	  struct glyph *g = r->glyphs[TEXT_AREA];
- 	  struct glyph *end = g + r->used[TEXT_AREA];
- 	  int gx = r->x;
- 	  while (g < end && gx < x)
- 	    gx += g->pixel_width, ++g;
- 	  if (g < end)
- 	    {
- 	      rect->width = g->pixel_width;
- 	      rect->height = r->height;
- 	      rect->x = WINDOW_TO_FRAME_PIXEL_X (w, gx);
- 	      rect->y = WINDOW_TO_FRAME_PIXEL_Y (w, r->y);
- 	      return 1;
- 	    }
- 	  break;
- 	}
-     }
-
-   return 0;
- }
-
-
- /* Remember which glyph the mouse is over.
-  */
- static void
- remember_mouse_glyph (f1, win_x, win_y)
-      FRAME_PTR f1;
-      int win_x, win_y;
- {
-   int width, height, gx, gy;
-
-   /* Try getting the rectangle of the actual glyph.  */
-   if (!glyph_rect (f1, win_x, win_y, &last_mouse_glyph))
-     {
-       /* If there is no glyph under the mouse, then we divide the screen
- 	 into a grid of the smallest glyph in the frame, and use that
- 	 as our "glyph".  */
-       width = FRAME_SMALLEST_CHAR_WIDTH (f1);
-       height = FRAME_SMALLEST_FONT_HEIGHT (f1);
-       gx = win_x;
-       gy = win_y;
-
-       /* Arrange for the division in FRAME_PIXEL_X_TO_COL etc. to
- 	 round down even for negative values.  */
-       if (gx < 0)
- 	gx -= width - 1;
-       if (gy < 0)
- 	gy -= height - 1;
-
-       gx = gx / width * width;
-       gy = gy / width * width;
-
-       last_mouse_glyph.width  = width;
-       last_mouse_glyph.height = height;
-       last_mouse_glyph.x = gx;
-       last_mouse_glyph.y = gy;
-     }
- }
-

  /* Return the current position of the mouse.
     *FP should be a frame which indicates which display to ask about.
--- 3628,3633 ----
***************
*** 3909,3915 ****
  	       on it, i.e. into the same rectangles that matrices on
  	       the frame are divided into.  */

! 	    remember_mouse_glyph (f1, win_x, win_y);

  	    *bar_window = Qnil;
  	    *part = 0;
--- 3815,3821 ----
  	       on it, i.e. into the same rectangles that matrices on
  	       the frame are divided into.  */

! 	    remember_mouse_glyph (f1, win_x, win_y, &last_mouse_glyph);

  	    *bar_window = Qnil;
  	    *part = 0;

*** w32term.c	07 Oct 2005 10:53:11 +0200	1.232
--- w32term.c	11 Oct 2005 12:11:18 +0200
***************
*** 3204,3211 ****
  static MSG last_mouse_motion_event;
  static Lisp_Object last_mouse_motion_frame;

- static void remember_mouse_glyph P_ ((struct frame *, int, int));
-
  static void
  note_mouse_movement (frame, msg)
       FRAME_PTR frame;
--- 3204,3209 ----
***************
*** 3227,3235 ****

    /* Has the mouse moved off the glyph it was on at the last sighting?  */
    else if (mouse_x < last_mouse_glyph.left
! 	   || mouse_x > last_mouse_glyph.right
  	   || mouse_y < last_mouse_glyph.top
! 	   || mouse_y > last_mouse_glyph.bottom)
      {
        frame->mouse_moved = 1;
        last_mouse_scroll_bar = Qnil;
--- 3225,3233 ----

    /* Has the mouse moved off the glyph it was on at the last sighting?  */
    else if (mouse_x < last_mouse_glyph.left
! 	   || mouse_x >= last_mouse_glyph.right
  	   || mouse_y < last_mouse_glyph.top
! 	   || mouse_y >= last_mouse_glyph.bottom)
      {
        frame->mouse_moved = 1;
        last_mouse_scroll_bar = Qnil;
***************
*** 3238,3244 ****
  	 gets called when mouse tracking is enabled but we also need
  	 to keep track of the mouse for help_echo and highlighting at
  	 other times.  */
!       remember_mouse_glyph (frame, mouse_x, mouse_y);
      }
  }

--- 3236,3242 ----
  	 gets called when mouse tracking is enabled but we also need
  	 to keep track of the mouse for help_echo and highlighting at
  	 other times.  */
!       remember_mouse_glyph (frame, mouse_x, mouse_y, &last_mouse_glyph);
      }
  }

***************
*** 3250,3257 ****
  static struct scroll_bar *x_window_to_scroll_bar ();
  static void x_scroll_bar_report_motion ();
  static void x_check_fullscreen P_ ((struct frame *));
- static int glyph_rect P_ ((struct frame *f, int, int, RECT *));
-

  static void
  redo_mouse_highlight ()
--- 3248,3253 ----
***************
*** 3270,3377 ****
  {
    PostMessage (window, WM_EMACS_SETCURSOR, (WPARAM) cursor, 0);
  }
-
- /* Try to determine frame pixel position and size of the glyph under
-    frame pixel coordinates X/Y on frame F .  Return the position and
-    size in *RECT.  Value is non-zero if we could compute these
-    values.  */
-
- static int
- glyph_rect (f, x, y, rect)
-      struct frame *f;
-      int x, y;
-      RECT *rect;
- {
-   Lisp_Object window;
-
-   window = window_from_coordinates (f, x, y, 0, &x, &y, 0);
-
-   if (!NILP (window))
-     {
-       struct window *w = XWINDOW (window);
-       struct glyph_row *r = MATRIX_FIRST_TEXT_ROW (w->current_matrix);
-       struct glyph_row *end = r + w->current_matrix->nrows - 1;
-
-       for (; r < end && r->enabled_p; ++r)
- 	if (r->y <= y && r->y + r->height > y)
- 	  {
- 	    /* Found the row at y.  */
- 	    struct glyph *g = r->glyphs[TEXT_AREA];
- 	    struct glyph *end = g + r->used[TEXT_AREA];
- 	    int gx;
-
- 	    rect->top = WINDOW_TO_FRAME_PIXEL_Y (w, r->y);
- 	    rect->bottom = rect->top + r->height;
-
- 	    if (x < r->x)
- 	      {
- 		/* x is to the left of the first glyph in the row.  */
- 		/* Shouldn't this be a pixel value?
- 		   WINDOW_LEFT_EDGE_X (w) seems to be the right value.
- 		   ++KFS */
- 		rect->left = WINDOW_LEFT_EDGE_COL (w);
- 		rect->right = WINDOW_TO_FRAME_PIXEL_X (w, r->x);
- 		return 1;
- 	      }
-
- 	    for (gx = r->x; g < end; gx += g->pixel_width, ++g)
- 	      if (gx <= x && gx + g->pixel_width > x)
- 		{
- 		  /* x is on a glyph.  */
- 		  rect->left = WINDOW_TO_FRAME_PIXEL_X (w, gx);
- 		  rect->right = rect->left + g->pixel_width;
- 		  return 1;
- 		}
-
- 	    /* x is to the right of the last glyph in the row.  */
- 	    rect->left = WINDOW_TO_FRAME_PIXEL_X (w, gx);
- 	    /* Shouldn't this be a pixel value?
- 	       WINDOW_RIGHT_EDGE_X (w) seems to be the right value.
- 	       ++KFS */
- 	    rect->right = WINDOW_RIGHT_EDGE_COL (w);
- 	    return 1;
- 	  }
-     }
-
-   /* The y is not on any row.  */
-   return 0;
- }
-
- /* Record the position of the mouse in last_mouse_glyph.  */
- static void
- remember_mouse_glyph (f1, gx, gy)
-      struct frame * f1;
-      int gx, gy;
- {
-   if (!glyph_rect (f1, gx, gy, &last_mouse_glyph))
-     {
-       int width = FRAME_SMALLEST_CHAR_WIDTH (f1);
-       int height = FRAME_SMALLEST_FONT_HEIGHT (f1);
-
-       /* Arrange for the division in FRAME_PIXEL_X_TO_COL etc. to
- 	 round down even for negative values.  */
-       if (gx < 0)
- 	gx -= width - 1;
-       if (gy < 0)
- 	gy -= height - 1;
- #if 0
-       /* This was the original code from XTmouse_position, but it seems
- 	 to give the position of the glyph diagonally next to the one
- 	 the mouse is over.  */
-       gx = (gx + width - 1) / width * width;
-       gy = (gy + height - 1) / height * height;
- #else
-       gx = gx / width * width;
-       gy = gy / height * height;
- #endif
-
-       last_mouse_glyph.left = gx;
-       last_mouse_glyph.top = gy;
-       last_mouse_glyph.right  = gx + width;
-       last_mouse_glyph.bottom = gy + height;
-     }
- }
-
  /* Return the current position of the mouse.
     *fp should be a frame which indicates which display to ask about.

--- 3266,3271 ----
***************
*** 3474,3480 ****
  				   || insist);
  #else
  	    ScreenToClient (FRAME_W32_WINDOW (f1), &pt);
! 	    remember_mouse_glyph (f1, pt.x, pt.y);
  #endif

  	    *bar_window = Qnil;
--- 3368,3374 ----
  				   || insist);
  #else
  	    ScreenToClient (FRAME_W32_WINDOW (f1), &pt);
! 	    remember_mouse_glyph (f1, pt.x, pt.y, &last_mouse_glyph);
  #endif

  	    *bar_window = Qnil;

*** macterm.c	11 Oct 2005 09:46:53 +0200	1.134
--- macterm.c	11 Oct 2005 12:17:44 +0200
***************
*** 4198,4206 ****
  			      Mouse Face
   ************************************************************************/

- static int glyph_rect P_ ((struct frame *f, int, int, Rect *));
-
-
  /* MAC TODO:  This should be called from somewhere (or removed)  ++KFS */

  static void
--- 4198,4203 ----
***************
*** 4214,4323 ****
  }


- /* Try to determine frame pixel position and size of the glyph under
-    frame pixel coordinates X/Y on frame F .  Return the position and
-    size in *RECT.  Value is non-zero if we could compute these
-    values.  */
-
- static int
- glyph_rect (f, x, y, rect)
-      struct frame *f;
-      int x, y;
-      Rect *rect;
- {
-   Lisp_Object window;
-
-   window = window_from_coordinates (f, x, y, 0, &x, &y, 0);
-
-   if (!NILP (window))
-     {
-       struct window *w = XWINDOW (window);
-       struct glyph_row *r = MATRIX_FIRST_TEXT_ROW (w->current_matrix);
-       struct glyph_row *end = r + w->current_matrix->nrows - 1;
-
-       for (; r < end && r->enabled_p; ++r)
- 	if (r->y <= y && r->y + r->height > y)
- 	  {
- 	    /* Found the row at y.  */
- 	    struct glyph *g = r->glyphs[TEXT_AREA];
- 	    struct glyph *end = g + r->used[TEXT_AREA];
- 	    int gx;
-
- 	    rect->top = WINDOW_TO_FRAME_PIXEL_Y (w, r->y);
- 	    rect->bottom = rect->top + r->height;
-
- 	    if (x < r->x)
- 	      {
- 		/* x is to the left of the first glyph in the row.  */
- 		/* Shouldn't this be a pixel value?
- 		   WINDOW_LEFT_EDGE_X (w) seems to be the right value.
- 		   ++KFS */
- 		rect->left = WINDOW_LEFT_EDGE_COL (w);
- 		rect->right = WINDOW_TO_FRAME_PIXEL_X (w, r->x);
- 		return 1;
- 	      }
-
- 	    for (gx = r->x; g < end; gx += g->pixel_width, ++g)
- 	      if (gx <= x && gx + g->pixel_width > x)
- 		{
- 		  /* x is on a glyph.  */
- 		  rect->left = WINDOW_TO_FRAME_PIXEL_X (w, gx);
- 		  rect->right = rect->left + g->pixel_width;
- 		  return 1;
- 		}
-
- 	    /* x is to the right of the last glyph in the row.  */
- 	    rect->left = WINDOW_TO_FRAME_PIXEL_X (w, gx);
- 	    /* Shouldn't this be a pixel value?
- 	       WINDOW_RIGHT_EDGE_X (w) seems to be the right value.
- 	       ++KFS */
- 	    rect->right = WINDOW_RIGHT_EDGE_COL (w);
- 	    return 1;
- 	  }
-     }
-
-   /* The y is not on any row.  */
-   return 0;
- }
-
- /* MAC TODO:  This should be called from somewhere (or removed)  ++KFS */
-
- /* Record the position of the mouse in last_mouse_glyph.  */
- static void
- remember_mouse_glyph (f1, gx, gy)
-      struct frame * f1;
-      int gx, gy;
- {
-   if (!glyph_rect (f1, gx, gy, &last_mouse_glyph))
-     {
-       int width = FRAME_SMALLEST_CHAR_WIDTH (f1);
-       int height = FRAME_SMALLEST_FONT_HEIGHT (f1);
-
-       /* Arrange for the division in FRAME_PIXEL_X_TO_COL etc. to
- 	 round down even for negative values.  */
-       if (gx < 0)
- 	gx -= width - 1;
-       if (gy < 0)
- 	gy -= height - 1;
- #if 0
-       /* This was the original code from XTmouse_position, but it seems
- 	 to give the position of the glyph diagonally next to the one
- 	 the mouse is over.  */
-       gx = (gx + width - 1) / width * width;
-       gy = (gy + height - 1) / height * height;
- #else
-       gx = gx / width * width;
-       gy = gy / height * height;
- #endif
-
-       last_mouse_glyph.left = gx;
-       last_mouse_glyph.top = gy;
-       last_mouse_glyph.right  = gx + width;
-       last_mouse_glyph.bottom = gy + height;
-     }
- }
-
-
  static struct frame *
  mac_focus_frame (dpyinfo)
       struct mac_display_info *dpyinfo;
--- 4211,4216 ----

--
Kim F. Storm <storm@cua.dk> http://www.cua.dk

  reply	other threads:[~2005-10-11 10:21 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-08-12 14:59 [hober0@gmail.com: Re: mode-line redisplay bug] Richard M. Stallman
2005-08-12 16:58 ` Eli Zaretskii
2005-08-12 17:19   ` Edward O'Connor
2005-08-12 17:31     ` Edward O'Connor
2005-08-12 18:58     ` Henrik Enberg
2005-08-16 12:58       ` Kim F. Storm
2005-08-12 18:19 ` Robert J. Chassell
2005-08-12 22:56 ` Jason Rumney
2005-08-13 21:54   ` Richard M. Stallman
2005-08-13 22:51   ` Jason Rumney
2005-10-08 21:26   ` Jason Rumney
2005-10-09  1:57     ` mituharu
2005-10-09  6:11     ` Jan D.
2005-10-10 19:40       ` Jason Rumney
     [not found]         ` <wlwtp6ijoz.wl%mituharu@math.s.chiba-u.ac.jp>
2005-10-11  1:21           ` YAMAMOTO Mitsuharu
2005-10-11 10:21             ` Kim F. Storm [this message]
2005-10-11 12:38               ` YAMAMOTO Mitsuharu
2005-10-11 15:14                 ` Kim F. Storm
2005-10-11 14:50               ` Jason Rumney
2005-10-11 22:43                 ` Kim F. Storm
2005-10-12  3:15                   ` YAMAMOTO Mitsuharu
2005-10-12  8:39                     ` Kim F. Storm
2005-10-12  8:41                     ` YAMAMOTO Mitsuharu
2005-10-12  9:29                       ` Kim F. Storm
2005-10-12  9:59                         ` YAMAMOTO Mitsuharu
2005-10-11 10:47             ` Jason Rumney
2005-10-11 11:25               ` Kim F. Storm

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m3k6gk9ww1.fsf@kfs-l.imdomain.dk \
    --to=storm@cua.dk \
    --cc=emacs-devel@gnu.org \
    --cc=jan.h.d@swipnet.se \
    --cc=jasonr@gnu.org \
    --cc=rms@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.