emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] Changes to emacs/src/xdisp.c


From: Kim F . Storm
Subject: [Emacs-diffs] Changes to emacs/src/xdisp.c
Date: Fri, 03 Sep 2004 09:05:43 -0400

Index: emacs/src/xdisp.c
diff -c emacs/src/xdisp.c:1.901 emacs/src/xdisp.c:1.902
*** emacs/src/xdisp.c:1.901     Thu Sep  2 17:01:20 2004
--- emacs/src/xdisp.c   Thu Sep  2 22:34:07 2004
***************
*** 306,311 ****
--- 306,312 ----
  extern Lisp_Object Qheight;
  extern Lisp_Object QCwidth, QCheight, QCascent;
  extern Lisp_Object Qscroll_bar;
+ extern Lisp_Object Qcursor;
  
  /* Non-nil means highlight trailing whitespace.  */
  
***************
*** 10647,10652 ****
--- 10648,10654 ----
  {
    struct glyph *glyph = row->glyphs[TEXT_AREA];
    struct glyph *end = glyph + row->used[TEXT_AREA];
+   struct glyph *cursor = NULL;
    /* The first glyph that starts a sequence of glyphs from string.  */
    struct glyph *string_start;
    /* The X coordinate of string_start.  */
***************
*** 10656,10661 ****
--- 10658,10664 ----
    /* The last known character position before string_start.  */
    int string_before_pos;
    int x = row->x;
+   int cursor_x = x;
    int pt_old = PT - delta;
  
    /* Skip over glyphs not having an object at the start of the row.
***************
*** 10688,10699 ****
          string_start = glyph;
          string_start_x = x;
          /* Skip all glyphs from string.  */
!         SKIP_GLYPHS (glyph, end, x, STRINGP (glyph->object));
        }
      }
  
!   if (string_start
!       && (glyph == end || !BUFFERP (glyph->object) || last_pos > pt_old))
      {
        /* We may have skipped over point because the previous glyphs
         are from string.  As there's no easy way to know the
--- 10691,10719 ----
          string_start = glyph;
          string_start_x = x;
          /* Skip all glyphs from string.  */
!         do
!           {
!             if ((cursor == NULL || glyph > cursor)
!                 && !NILP (Fget_char_property (make_number ((glyph)->charpos),
!                                               Qcursor, (glyph)->object)))
!               {
!                 cursor = glyph;
!                 cursor_x = x;
!               }
!             x += glyph->pixel_width;
!             ++glyph;
!           }
!         while (glyph < end && STRINGP (glyph->object));
        }
      }
  
!   if (cursor != NULL)
!     {
!       glyph = cursor;
!       x = cursor_x;
!     }
!   else if (string_start
!          && (glyph == end || !BUFFERP (glyph->object) || last_pos > pt_old))
      {
        /* We may have skipped over point because the previous glyphs
         are from string.  As there's no easy way to know the




reply via email to

[Prev in Thread] Current Thread [Next in Thread]