/[emacs]/emacs/src/xdisp.c
ViewVC logotype

Diff of /emacs/src/xdisp.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.952 by kfstorm, Thu Dec 30 18:07:07 2004 UTC revision 1.953 by rms, Sat Jan 1 01:34:22 2005 UTC
# Line 3270  setup_for_ellipsis (it, len) Line 3270  setup_for_ellipsis (it, len)
3270       IT's face is restored in set_iterator_to_next.  */       IT's face is restored in set_iterator_to_next.  */
3271    it->saved_face_id = it->face_id;    it->saved_face_id = it->face_id;
3272    it->method = next_element_from_display_vector;    it->method = next_element_from_display_vector;
3273      it->ellipsis_p = 1;
3274  }  }
3275    
3276    
# Line 4912  get_next_display_element (it) Line 4913  get_next_display_element (it)
4913                    it->current.dpvec_index = 0;                    it->current.dpvec_index = 0;
4914                    it->saved_face_id = it->face_id;                    it->saved_face_id = it->face_id;
4915                    it->method = next_element_from_display_vector;                    it->method = next_element_from_display_vector;
4916                      it->ellipsis_p = 0;
4917                  }                  }
4918                else                else
4919                  {                  {
# Line 5062  get_next_display_element (it) Line 5064  get_next_display_element (it)
5064                it->current.dpvec_index = 0;                it->current.dpvec_index = 0;
5065                it->saved_face_id = it->face_id;                it->saved_face_id = it->face_id;
5066                it->method = next_element_from_display_vector;                it->method = next_element_from_display_vector;
5067                  it->ellipsis_p = 0;
5068                goto get_next;                goto get_next;
5069              }              }
5070          }          }
# Line 5703  move_it_in_display_line_to (it, to_charp Line 5706  move_it_in_display_line_to (it, to_charp
5706    saved_glyph_row = it->glyph_row;    saved_glyph_row = it->glyph_row;
5707    it->glyph_row = NULL;    it->glyph_row = NULL;
5708    
5709  #define BUFFER_POS_REACHED_P()                      \  #define BUFFER_POS_REACHED_P()                  \
5710    ((op & MOVE_TO_POS) != 0                          \    ((op & MOVE_TO_POS) != 0                      \
5711     && BUFFERP (it->object)                          \     && BUFFERP (it->object)                      \
5712     && IT_CHARPOS (*it) >= to_charpos)     && IT_CHARPOS (*it) >= to_charpos            \
5713       && it->method == next_element_from_buffer)
5714    
5715    while (1)    while (1)
5716      {      {
# Line 10812  set_cursor_from_row (w, row, matrix, del Line 10816  set_cursor_from_row (w, row, matrix, del
10816        glyph = cursor;        glyph = cursor;
10817        x = cursor_x;        x = cursor_x;
10818      }      }
10819      else if (row->ends_in_ellipsis_p && glyph == end)
10820        {
10821          /* Scan back over the ellipsis glyphs, decrementing positions.  */
10822          while (glyph > row->glyphs[TEXT_AREA]
10823                 && (glyph - 1)->charpos == last_pos)
10824            glyph--, x -= glyph->pixel_width;
10825          /* That loop always goes one position too far,
10826             including the glyph before the ellipsis.
10827             So scan forward over that one.  */
10828          x += glyph->pixel_width;
10829          glyph++;
10830        }
10831    else if (string_start    else if (string_start
10832             && (glyph == end || !BUFFERP (glyph->object) || last_pos > pt_old))             && (glyph == end || !BUFFERP (glyph->object) || last_pos > pt_old))
10833      {      {
# Line 14613  cursor_row_p (w, row) Line 14629  cursor_row_p (w, row)
14629        /* If the row ends with a newline from a string, we don't want        /* If the row ends with a newline from a string, we don't want
14630           the cursor there (if the row is continued it doesn't end in a           the cursor there (if the row is continued it doesn't end in a
14631           newline).  */           newline).  */
14632        if (CHARPOS (row->end.string_pos) >= 0        if (CHARPOS (row->end.string_pos) >= 0)
           || MATRIX_ROW_ENDS_IN_MIDDLE_OF_CHAR_P (row))  
14633          cursor_row_p = row->continued_p;          cursor_row_p = row->continued_p;
14634          else if (MATRIX_ROW_ENDS_IN_MIDDLE_OF_CHAR_P (row))
14635            {
14636              /* If the row ends in middle of a real character,
14637                 and the line is continued, we want the cursor here.
14638                 That's because MATRIX_ROW_END_CHARPOS would equal
14639                 PT if PT is before the character.  */
14640              if (!row->ends_in_ellipsis_p)
14641                cursor_row_p = row->continued_p;
14642              else
14643              /* If the row ends in an ellipsis, then
14644                 MATRIX_ROW_END_CHARPOS will equal point after the invisible text.
14645                 We want that position to be displayed after the ellipsis.  */
14646                cursor_row_p = 0;
14647            }
14648        /* If the row ends at ZV, display the cursor at the end of that        /* If the row ends at ZV, display the cursor at the end of that
14649           row instead of at the start of the row below.  */           row instead of at the start of the row below.  */
14650        else if (row->ends_at_zv_p)        else if (row->ends_at_zv_p)
# Line 15093  display_line (it) Line 15121  display_line (it)
15121    /* Remember the position at which this line ends.  */    /* Remember the position at which this line ends.  */
15122    row->end = it->current;    row->end = it->current;
15123    
15124      /* Record whether this row ends inside an ellipsis.  */
15125      row->ends_in_ellipsis_p
15126        = (it->method == next_element_from_display_vector
15127           && it->ellipsis_p);
15128    
15129    /* Save fringe bitmaps in this row.  */    /* Save fringe bitmaps in this row.  */
15130    row->left_user_fringe_bitmap = it->left_user_fringe_bitmap;    row->left_user_fringe_bitmap = it->left_user_fringe_bitmap;
15131    row->left_user_fringe_face_id = it->left_user_fringe_face_id;    row->left_user_fringe_face_id = it->left_user_fringe_face_id;

Legend:
Removed from v.1.952  
changed lines
  Added in v.1.953

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26