diff options
| author | Helmut Eller | 2026-04-04 20:59:46 +0200 |
|---|---|---|
| committer | Helmut Eller | 2026-04-04 20:59:46 +0200 |
| commit | 6eec001187e8551f32b6498e6dc60cdc58c2e515 (patch) | |
| tree | 13233de9f0a05ef86a51500e8b1870b75ff20c81 /src/xdisp.c | |
| parent | e4ea27119e79012f9d651cb61d1115589d91ef39 (diff) | |
| parent | 01a9d78a7e4c7d7fa5b799e4fdc2caf77a012734 (diff) | |
| download | emacs-feature/igc3.tar.gz emacs-feature/igc3.zip | |
Merge branch 'master' into feature/igc3feature/igc3
Diffstat (limited to 'src/xdisp.c')
| -rw-r--r-- | src/xdisp.c | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/src/xdisp.c b/src/xdisp.c index fd2ce49e031..3251750cd2a 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -13665,7 +13665,7 @@ clear_garbaged_frames (void) | |||
| 13665 | selected frame, and might leave the selected | 13665 | selected frame, and might leave the selected |
| 13666 | frame with corrupted display, if it happens not | 13666 | frame with corrupted display, if it happens not |
| 13667 | to be marked garbaged. */ | 13667 | to be marked garbaged. */ |
| 13668 | && !(f != sf && (FRAME_TERMCAP_P (f) || FRAME_MSDOS_P (f)))) | 13668 | && !(f != sf && is_tty_frame (f))) |
| 13669 | redraw_frame (f); | 13669 | redraw_frame (f); |
| 13670 | else | 13670 | else |
| 13671 | clear_current_matrices (f); | 13671 | clear_current_matrices (f); |
| @@ -16653,11 +16653,8 @@ hscroll_window_tree (Lisp_Object window) | |||
| 16653 | } | 16653 | } |
| 16654 | } | 16654 | } |
| 16655 | if (cursor_row->truncated_on_left_p) | 16655 | if (cursor_row->truncated_on_left_p) |
| 16656 | { | 16656 | /* On TTY frames, don't count the left truncation glyph. */ |
| 16657 | /* On TTY frames, don't count the left truncation glyph. */ | 16657 | x_offset -= is_tty_frame (XFRAME (WINDOW_FRAME (w))); |
| 16658 | struct frame *f = XFRAME (WINDOW_FRAME (w)); | ||
| 16659 | x_offset -= (FRAME_TERMCAP_P (f) || FRAME_MSDOS_P (f)); | ||
| 16660 | } | ||
| 16661 | 16658 | ||
| 16662 | text_area_width = window_box_width (w, TEXT_AREA); | 16659 | text_area_width = window_box_width (w, TEXT_AREA); |
| 16663 | 16660 | ||
| @@ -17391,7 +17388,7 @@ redisplay_internal (void) | |||
| 17391 | windows_or_buffers_changed = 47; | 17388 | windows_or_buffers_changed = 47; |
| 17392 | 17389 | ||
| 17393 | struct frame *previous_frame; | 17390 | struct frame *previous_frame; |
| 17394 | if ((FRAME_TERMCAP_P (sf) || FRAME_MSDOS_P (sf)) | 17391 | if (is_tty_frame (sf) |
| 17395 | && (previous_frame = FRAME_TTY (sf)->previous_frame, | 17392 | && (previous_frame = FRAME_TTY (sf)->previous_frame, |
| 17396 | previous_frame != sf)) | 17393 | previous_frame != sf)) |
| 17397 | { | 17394 | { |
| @@ -17836,8 +17833,7 @@ redisplay_internal (void) | |||
| 17836 | } | 17833 | } |
| 17837 | 17834 | ||
| 17838 | retry_frame: | 17835 | retry_frame: |
| 17839 | if (FRAME_WINDOW_P (f) | 17836 | if (FRAME_WINDOW_P (f) || is_tty_frame (f) || f == sf) |
| 17840 | || FRAME_TERMCAP_P (f) || FRAME_MSDOS_P (f) || f == sf) | ||
| 17841 | { | 17837 | { |
| 17842 | /* Only GC scrollbars when we redisplay the whole frame. */ | 17838 | /* Only GC scrollbars when we redisplay the whole frame. */ |
| 17843 | bool gcscrollbars = f->redisplay || !REDISPLAY_SOME_P (); | 17839 | bool gcscrollbars = f->redisplay || !REDISPLAY_SOME_P (); |
| @@ -32864,6 +32860,8 @@ produce_special_glyphs (struct it *it, enum display_element_type what, | |||
| 32864 | /* Mirror for R2L. */ | 32860 | /* Mirror for R2L. */ |
| 32865 | if (direction == R2L) | 32861 | if (direction == R2L) |
| 32866 | { | 32862 | { |
| 32863 | face_id = GLYPH_CODE_FACE (gc); | ||
| 32864 | |||
| 32867 | /* Try bidi mirroring first. */ | 32865 | /* Try bidi mirroring first. */ |
| 32868 | int c = bidi_mirror_char (GLYPH_CODE_CHAR (gc)); | 32866 | int c = bidi_mirror_char (GLYPH_CODE_CHAR (gc)); |
| 32869 | 32867 | ||
| @@ -32877,16 +32875,23 @@ produce_special_glyphs (struct it *it, enum display_element_type what, | |||
| 32877 | { | 32875 | { |
| 32878 | c = XFIXNUM (val); | 32876 | c = XFIXNUM (val); |
| 32879 | 32877 | ||
| 32880 | /* If something goes wrong defaults to '/'. */ | 32878 | /* If something goes wrong, fall back to '/'. */ |
| 32881 | if (CHAR_VALID_P (c)) | 32879 | if (CHAR_VALID_P (c)) |
| 32882 | SET_GLYPH (glyph, c, face_id); | 32880 | SET_GLYPH (glyph, c, face_id); |
| 32883 | else | 32881 | else |
| 32884 | SET_GLYPH (glyph, '/', face_id); | 32882 | SET_GLYPH (glyph, '/', face_id); |
| 32885 | } | 32883 | } |
| 32884 | else | ||
| 32885 | SET_GLYPH_FROM_GLYPH_CODE (glyph, gc); | ||
| 32886 | } | 32886 | } |
| 32887 | else | 32887 | else |
| 32888 | { | ||
| 32889 | struct face *face = FACE_FROM_ID (it->f, face_id); | ||
| 32890 | int id = FACE_FOR_CHAR (it->f, face, c, -1, Qnil); | ||
| 32891 | |||
| 32888 | /* Bidi mirroring. */ | 32892 | /* Bidi mirroring. */ |
| 32889 | SET_GLYPH (glyph, c, face_id); | 32893 | SET_GLYPH (glyph, c, id); |
| 32894 | } | ||
| 32890 | } | 32895 | } |
| 32891 | else | 32896 | else |
| 32892 | /* No mirroring. */ | 32897 | /* No mirroring. */ |
| @@ -32925,6 +32930,8 @@ produce_special_glyphs (struct it *it, enum display_element_type what, | |||
| 32925 | if (((it->bidi_it.paragraph_dir == R2L) && !left_edge_p) || | 32930 | if (((it->bidi_it.paragraph_dir == R2L) && !left_edge_p) || |
| 32926 | ((it->bidi_it.paragraph_dir == L2R) && left_edge_p)) | 32931 | ((it->bidi_it.paragraph_dir == L2R) && left_edge_p)) |
| 32927 | { | 32932 | { |
| 32933 | face_id = GLYPH_CODE_FACE (gc); | ||
| 32934 | |||
| 32928 | /* Try bidi mirroring first. */ | 32935 | /* Try bidi mirroring first. */ |
| 32929 | int c = bidi_mirror_char (GLYPH_CODE_CHAR (gc)); | 32936 | int c = bidi_mirror_char (GLYPH_CODE_CHAR (gc)); |
| 32930 | 32937 | ||
| @@ -32938,12 +32945,14 @@ produce_special_glyphs (struct it *it, enum display_element_type what, | |||
| 32938 | { | 32945 | { |
| 32939 | c = XFIXNUM (val); | 32946 | c = XFIXNUM (val); |
| 32940 | 32947 | ||
| 32941 | /* If something goes wrong defaults to '$'. */ | 32948 | /* If something goes wrong, fall back to '$'. */ |
| 32942 | if (CHAR_VALID_P (c)) | 32949 | if (CHAR_VALID_P (c)) |
| 32943 | SET_GLYPH (glyph, c, face_id); | 32950 | SET_GLYPH (glyph, c, face_id); |
| 32944 | else | 32951 | else |
| 32945 | SET_GLYPH (glyph, '$', face_id); | 32952 | SET_GLYPH (glyph, '$', face_id); |
| 32946 | } | 32953 | } |
| 32954 | else | ||
| 32955 | SET_GLYPH_FROM_GLYPH_CODE (glyph, gc); | ||
| 32947 | } | 32956 | } |
| 32948 | else | 32957 | else |
| 32949 | { | 32958 | { |