emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] /srv/bzr/emacs/emacs-24 r111082: Fix bug #13277 with TTY c


From: Eli Zaretskii
Subject: [Emacs-diffs] /srv/bzr/emacs/emacs-24 r111082: Fix bug #13277 with TTY cursor positioning in a line with overlay arrow.
Date: Thu, 27 Dec 2012 19:29:14 +0200
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 111082
fixes bug: http://debbugs.gnu.org/13277
committer: Eli Zaretskii <address@hidden>
branch nick: emacs-24
timestamp: Thu 2012-12-27 19:29:14 +0200
message:
  Fix bug #13277 with TTY cursor positioning in a line with overlay arrow.
  
   src/xdisp.c (set_cursor_from_row): Don't confuse a truncation or
   continuation glyph on a TTY with an indication of an empty line.
   src/dispextern.h: Improve commentary to glyph->charpos and
   glyph->object.
modified:
  src/ChangeLog
  src/dispextern.h
  src/xdisp.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2012-12-27 07:55:14 +0000
+++ b/src/ChangeLog     2012-12-27 17:29:14 +0000
@@ -1,3 +1,9 @@
+2012-12-27  Eli Zaretskii  <address@hidden>
+
+       * xdisp.c (set_cursor_from_row): Don't confuse a truncation or
+       continuation glyph on a TTY with an indication of an empty line.
+       (Bug#13277)
+
 2012-12-27  Glenn Morris  <address@hidden>
 
        * cygw32.c (Fcygwin_convert_file_name_to_windows)

=== modified file 'src/dispextern.h'
--- a/src/dispextern.h  2012-10-07 22:31:58 +0000
+++ b/src/dispextern.h  2012-12-27 17:29:14 +0000
@@ -317,13 +317,18 @@
      Lisp string, this is a position in that string.  If it is a
      buffer, this is a position in that buffer.  A value of -1
      together with a null object means glyph is a truncation glyph at
-     the start of a row.  */
+     the start of a row.  Right truncation and continuation glyphs at
+     the right edge of a row have their position set to the next
+     buffer position that is not shown on this row.  Glyphs inserted
+     by redisplay, such as the empty space after the end of a line on
+     TTYs, have this set to -1.  */
   ptrdiff_t charpos;
 
-  /* Lisp object source of this glyph.  Currently either a buffer or
-     a string, if the glyph was produced from characters which came from
+  /* Lisp object source of this glyph.  Currently either a buffer or a
+     string, if the glyph was produced from characters which came from
      a buffer or a string; or 0 if the glyph was inserted by redisplay
-     for its own purposes such as padding.  */
+     for its own purposes such as padding or truncation/continuation
+     glyphs on TTYs.  */
   Lisp_Object object;
 
   /* Width in pixels.  */

=== modified file 'src/xdisp.c'
--- a/src/xdisp.c       2012-11-24 07:25:52 +0000
+++ b/src/xdisp.c       2012-12-27 17:29:14 +0000
@@ -14241,7 +14241,12 @@
         CHARPOS is zero or negative.  */
       int empty_line_p =
        (row->reversed_p ? glyph > glyphs_end : glyph < glyphs_end)
-       && INTEGERP (glyph->object) && glyph->charpos > 0;
+       && INTEGERP (glyph->object) && glyph->charpos > 0
+       /* On a TTY, continued and truncated rows also have a glyph at
+          their end whose OBJECT is zero and whose CHARPOS is
+          positive (the continuation and truncation glyphs), but such
+          rows are obviously not "empty".  */
+       && !(row->continued_p || row->truncated_on_right_p);
 
       if (row->ends_in_ellipsis_p && pos_after == last_pos)
        {


reply via email to

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