aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGerd Moellmann2000-06-06 20:03:57 +0000
committerGerd Moellmann2000-06-06 20:03:57 +0000
commit666852af779a33301b352898195df9b472143ce5 (patch)
treede976ae7293902ec999bad576875fced71af140f /src
parent91004049759c848b217a947f5043983bbc25f791 (diff)
downloademacs-666852af779a33301b352898195df9b472143ce5.tar.gz
emacs-666852af779a33301b352898195df9b472143ce5.zip
(struct it): Add starts_in_middle_of_char_p.
(struct glyph_row): Add starts_in_middle_of_char_p and ends_in_middle_of_char_p. (MATRIX_ROW_ENDS_IN_MIDDLE_OF_CHAR_P): Test row's ends_in_middle_of_char_p flag. (MATRIX_ROW_STARTS_IN_MIDDLE_OF_CHAR_P): Likewise.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog16
-rw-r--r--src/dispextern.h21
2 files changed, 35 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 654c9f221b8..51d4b7d1ee5 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,21 @@
12000-06-06 Gerd Moellmann <gerd@gnu.org> 12000-06-06 Gerd Moellmann <gerd@gnu.org>
2 2
3 * xdisp.c (display_line): Set row's and iterator's
4 starts_in_middle_of_char_p and ends_in_middle_of_char_p flags.
5 Set cursor even if row ends in the middle of a character.
6 (dump_glyph_row): Print values of new flags.
7 (redisplay_window) <cursor movement in unchanged window>: When
8 point has been moved forward, and PT is at the end of the cursor
9 row, don't place the cursor in the next row if the cursor row ends
10 in the middle of a character or at ZV.
11
12 * dispextern.h (struct it): Add starts_in_middle_of_char_p.
13 (struct glyph_row): Add starts_in_middle_of_char_p and
14 ends_in_middle_of_char_p.
15 (MATRIX_ROW_ENDS_IN_MIDDLE_OF_CHAR_P): Test row's
16 ends_in_middle_of_char_p flag.
17 (MATRIX_ROW_STARTS_IN_MIDDLE_OF_CHAR_P): Likewise.
18
3 * term.c (append_glyph): Revert change of 2000-06-06. 19 * term.c (append_glyph): Revert change of 2000-06-06.
4 20
5 * xdisp.c (display_line): Revert change of 2000-06-06. Treat 21 * xdisp.c (display_line): Revert change of 2000-06-06. Treat
diff --git a/src/dispextern.h b/src/dispextern.h
index 68334438676..459762132ce 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -667,6 +667,16 @@ struct glyph_row
667 /* 1 in a current row means this row is overlapped by another row. */ 667 /* 1 in a current row means this row is overlapped by another row. */
668 unsigned overlapped_p : 1; 668 unsigned overlapped_p : 1;
669 669
670 /* 1 means this line ends in the middle of a character consisting
671 of more than one glyph. Some glyphs have been put in this row,
672 the rest are put in rows below this one. */
673 unsigned ends_in_middle_of_char_p : 1;
674
675 /* 1 means this line starts in the middle of a character consisting
676 of more than one glyph. Some glyphs have been put in the
677 previoius row, the rest are put in this row. */
678 unsigned starts_in_middle_of_char_p : 1;
679
670 /* 1 in a current row means this row overlaps others. */ 680 /* 1 in a current row means this row overlaps others. */
671 unsigned overlapping_p : 1; 681 unsigned overlapping_p : 1;
672 682
@@ -795,7 +805,8 @@ struct glyph_row *matrix_row P_ ((struct glyph_matrix *, int));
795 805
796#define MATRIX_ROW_ENDS_IN_MIDDLE_OF_CHAR_P(ROW) \ 806#define MATRIX_ROW_ENDS_IN_MIDDLE_OF_CHAR_P(ROW) \
797 ((ROW)->end.dpvec_index >= 0 \ 807 ((ROW)->end.dpvec_index >= 0 \
798 || (ROW)->end.overlay_string_index >= 0) 808 || (ROW)->end.overlay_string_index >= 0 \
809 || (ROW)->ends_in_middle_of_char_p)
799 810
800/* Non-zero if ROW ends in the middle of an overlay string. */ 811/* Non-zero if ROW ends in the middle of an overlay string. */
801 812
@@ -806,6 +817,7 @@ struct glyph_row *matrix_row P_ ((struct glyph_matrix *, int));
806 817
807#define MATRIX_ROW_STARTS_IN_MIDDLE_OF_CHAR_P(ROW) \ 818#define MATRIX_ROW_STARTS_IN_MIDDLE_OF_CHAR_P(ROW) \
808 ((ROW)->start.dpvec_index >= 0 \ 819 ((ROW)->start.dpvec_index >= 0 \
820 || (ROW)->starts_in_middle_of_char_p \
809 || ((ROW)->start.overlay_string_index >= 0 \ 821 || ((ROW)->start.overlay_string_index >= 0 \
810 && (ROW)->start.string_pos.charpos > 0)) 822 && (ROW)->start.string_pos.charpos > 0))
811 823
@@ -1622,7 +1634,12 @@ struct it
1622 1634
1623 /* 1 means the actual glyph is not available in the current 1635 /* 1 means the actual glyph is not available in the current
1624 system. */ 1636 system. */
1625 unsigned glyph_not_available_p : 1; 1637 unsigned glyph_not_available_p : 1;
1638
1639 /* 1 means the next line in display_line continues a character
1640 consisting of more than one glyph, and some glyphs of this
1641 character have been put on the previous line. */
1642 unsigned starts_in_middle_of_char_p : 1;
1626 1643
1627 /* The ID of the default face to use. One of DEFAULT_FACE_ID, 1644 /* The ID of the default face to use. One of DEFAULT_FACE_ID,
1628 MODE_LINE_FACE_ID, or TOOL_BAR_FACE_ID, depending on what we 1645 MODE_LINE_FACE_ID, or TOOL_BAR_FACE_ID, depending on what we