aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKaroly Lorentey2005-06-21 15:42:45 +0000
committerKaroly Lorentey2005-06-21 15:42:45 +0000
commita3fbb8977ddcc3f913058d323af6034cb70561a9 (patch)
treed5b0488432b505d2a36ee2890f8727c8ac7506f5 /src
parentef85512e51f043d73788f00a2aed13cccde0682c (diff)
parent0ff13af938126dca16ec0e1e80e3ac38e177e5d3 (diff)
downloademacs-a3fbb8977ddcc3f913058d323af6034cb70561a9.tar.gz
emacs-a3fbb8977ddcc3f913058d323af6034cb70561a9.zip
Merged from miles@gnu.org--gnu-2005 (patch 423-434)
Patches applied: * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-423 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-424 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-425 Remove "-face" suffix from gnus faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-426 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-427 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-428 Remove "-face" suffix from MH-E faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-429 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-430 Remove "-face" suffix from cc-mode faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-431 Remove "-face" suffix from eshell faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-432 Remove "-face" suffix from ediff faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-433 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-434 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-351
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog28
-rw-r--r--src/buffer.c4
-rw-r--r--src/dispextern.h4
-rw-r--r--src/dispnew.c22
-rw-r--r--src/keyboard.c3
-rw-r--r--src/term.c64
-rw-r--r--src/xdisp.c2
-rw-r--r--src/xselect.c6
8 files changed, 107 insertions, 26 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 46cab9c1cba..12e52237e9b 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,30 @@
12005-06-17 Richard M. Stallman <rms@gnu.org>
2
3 * xdisp.c (get_next_display_element): Reverse
4 test of Vshow_nonbreak_escape.
5
6 * term.c (produce_special_glyphs): Use spec_glyph_lookup_face.
7 (Ftty_no_underline): New function.
8 (syms_of_term): defsubr it.
9
10 * keyboard.c (read_char): Call restore_getcjmp after jump occurs.
11
12 * dispnew.c (spec_glyph_lookup_face): New function.
13 (build_frame_matrix_from_leaf_window): Use it.
14
15 * dispextern.h (spec_glyph_lookup_face): Add declaration.
16
17 * buffer.c (syms_of_buffer) <cursor-type>: Doc fix.
18
192005-06-12 Richard M. Stallman <rms@gnu.org>
20
21 * keyboard.c (read_char): After catching a longjmp,
22 call restore_getcjmp.
23
242005-06-17 Juanma Barranquero <lekktu@gmail.com>
25
26 * xselect.c (lisp_data_to_selection_data): Fix spelling.
27
12005-06-15 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> 282005-06-15 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
2 29
3 * macterm.c (mac_compute_glyph_string_overhangs): Don't set 30 * macterm.c (mac_compute_glyph_string_overhangs): Don't set
@@ -101,7 +128,6 @@
101 128
102 * xdisp.c (note_mode_line_or_margin_highlight): Call clear_mouse_face 129 * xdisp.c (note_mode_line_or_margin_highlight): Call clear_mouse_face
103 when mouse_face is not given. 130 when mouse_face is not given.
104 Remove unnecessary tabs.
105 131
1062005-06-09 Luc Teirlinck <teirllm@auburn.edu> 1322005-06-09 Luc Teirlinck <teirllm@auburn.edu>
107 133
diff --git a/src/buffer.c b/src/buffer.c
index a287e45df78..ed05daf77ec 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -5934,8 +5934,8 @@ Values are interpreted as follows:
5934 hollow display a hollow box cursor 5934 hollow display a hollow box cursor
5935 bar display a vertical bar cursor with default width 5935 bar display a vertical bar cursor with default width
5936 (bar . WIDTH) display a vertical bar cursor with width WIDTH 5936 (bar . WIDTH) display a vertical bar cursor with width WIDTH
5937 hbar display a horizontal bar cursor with default width 5937 hbar display a horizontal bar cursor with default height
5938 (hbar . WIDTH) display a horizontal bar cursor with width WIDTH 5938 (hbar . HEIGHT) display a horizontal bar cursor with height HEIGHT
5939 ANYTHING ELSE display a hollow box cursor. 5939 ANYTHING ELSE display a hollow box cursor.
5940 5940
5941When the buffer is displayed in a nonselected window, 5941When the buffer is displayed in a nonselected window,
diff --git a/src/dispextern.h b/src/dispextern.h
index df6bbd00eec..8648303af8c 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -366,7 +366,8 @@ struct glyph
366 366
367#define FACE_ID_BITS 21 367#define FACE_ID_BITS 21
368 368
369 /* Face of the glyph. */ 369 /* Face of the glyph. This is a realized face ID,
370 an index in the face cache of the frame. */
370 unsigned face_id : FACE_ID_BITS; 371 unsigned face_id : FACE_ID_BITS;
371 372
372 /* Type of font used to display the character glyph. May be used to 373 /* Type of font used to display the character glyph. May be used to
@@ -2903,6 +2904,7 @@ Lisp_Object sit_for P_ ((int, int, int, int, int));
2903void init_display P_ ((void)); 2904void init_display P_ ((void));
2904void syms_of_display P_ ((void)); 2905void syms_of_display P_ ((void));
2905extern Lisp_Object Qredisplay_dont_pause; 2906extern Lisp_Object Qredisplay_dont_pause;
2907GLYPH spec_glyph_lookup_face P_ ((struct window *, GLYPH));
2906 2908
2907/* Defined in term.c */ 2909/* Defined in term.c */
2908 2910
diff --git a/src/dispnew.c b/src/dispnew.c
index b0e9944868b..30897a7a78f 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -2711,6 +2711,7 @@ build_frame_matrix_from_leaf_window (frame_matrix, w)
2711 right_border_glyph = (dp && INTEGERP (DISP_BORDER_GLYPH (dp)) 2711 right_border_glyph = (dp && INTEGERP (DISP_BORDER_GLYPH (dp))
2712 ? XINT (DISP_BORDER_GLYPH (dp)) 2712 ? XINT (DISP_BORDER_GLYPH (dp))
2713 : '|'); 2713 : '|');
2714 right_border_glyph = spec_glyph_lookup_face (w, right_border_glyph);
2714 } 2715 }
2715 } 2716 }
2716 else 2717 else
@@ -2791,6 +2792,27 @@ build_frame_matrix_from_leaf_window (frame_matrix, w)
2791 } 2792 }
2792} 2793}
2793 2794
2795/* Given a user-specified glyph, possibly including a Lisp-level face
2796 ID, return a glyph that has a realized face ID.
2797 This is used for glyphs displayed specially and not part of the text;
2798 for instance, vertical separators, truncation markers, etc. */
2799
2800GLYPH
2801spec_glyph_lookup_face (w, glyph)
2802 struct window *w;
2803 GLYPH glyph;
2804{
2805 int lface_id = FAST_GLYPH_FACE (glyph);
2806 /* Convert the glyph's specified face to a realized (cache) face. */
2807 if (lface_id > 0)
2808 {
2809 int face_id = merge_faces (XFRAME (w->frame),
2810 Qt, lface_id, DEFAULT_FACE_ID);
2811 glyph
2812 = FAST_MAKE_GLYPH (FAST_GLYPH_CHAR (glyph), face_id);
2813 }
2814 return glyph;
2815}
2794 2816
2795/* Add spaces to a glyph row ROW in a window matrix. 2817/* Add spaces to a glyph row ROW in a window matrix.
2796 2818
diff --git a/src/keyboard.c b/src/keyboard.c
index 135c3313a7b..7f81dde35c7 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -2610,6 +2610,9 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu)
2610 2610
2611 if (_setjmp (local_getcjmp)) 2611 if (_setjmp (local_getcjmp))
2612 { 2612 {
2613 /* We must have saved the outer value of getcjmp here,
2614 so restore it now. */
2615 restore_getcjmp (save_jump);
2613 XSETINT (c, quit_char); 2616 XSETINT (c, quit_char);
2614 internal_last_event_frame = selected_frame; 2617 internal_last_event_frame = selected_frame;
2615 Vlast_event_frame = internal_last_event_frame; 2618 Vlast_event_frame = internal_last_event_frame;
diff --git a/src/term.c b/src/term.c
index 8aa3b3969ee..774373e82f9 100644
--- a/src/term.c
+++ b/src/term.c
@@ -1695,6 +1695,7 @@ produce_special_glyphs (it, what)
1695 enum display_element_type what; 1695 enum display_element_type what;
1696{ 1696{
1697 struct it temp_it; 1697 struct it temp_it;
1698 GLYPH glyph;
1698 1699
1699 temp_it = *it; 1700 temp_it = *it;
1700 temp_it.dp = NULL; 1701 temp_it.dp = NULL;
@@ -1710,15 +1711,11 @@ produce_special_glyphs (it, what)
1710 && INTEGERP (DISP_CONTINUE_GLYPH (it->dp)) 1711 && INTEGERP (DISP_CONTINUE_GLYPH (it->dp))
1711 && GLYPH_CHAR_VALID_P (XINT (DISP_CONTINUE_GLYPH (it->dp)))) 1712 && GLYPH_CHAR_VALID_P (XINT (DISP_CONTINUE_GLYPH (it->dp))))
1712 { 1713 {
1713 temp_it.c = FAST_GLYPH_CHAR (XINT (DISP_CONTINUE_GLYPH (it->dp))); 1714 glyph = XINT (DISP_CONTINUE_GLYPH (it->dp));
1714 temp_it.len = CHAR_BYTES (temp_it.c); 1715 glyph = spec_glyph_lookup_face (XWINDOW (it->window), glyph);
1715 } 1716 }
1716 else 1717 else
1717 temp_it.c = '\\'; 1718 glyph = '\\';
1718
1719 produce_glyphs (&temp_it);
1720 it->pixel_width = temp_it.pixel_width;
1721 it->nglyphs = temp_it.pixel_width;
1722 } 1719 }
1723 else if (what == IT_TRUNCATION) 1720 else if (what == IT_TRUNCATION)
1724 { 1721 {
@@ -1727,18 +1724,22 @@ produce_special_glyphs (it, what)
1727 && INTEGERP (DISP_TRUNC_GLYPH (it->dp)) 1724 && INTEGERP (DISP_TRUNC_GLYPH (it->dp))
1728 && GLYPH_CHAR_VALID_P (XINT (DISP_TRUNC_GLYPH (it->dp)))) 1725 && GLYPH_CHAR_VALID_P (XINT (DISP_TRUNC_GLYPH (it->dp))))
1729 { 1726 {
1730 temp_it.c = FAST_GLYPH_CHAR (XINT (DISP_TRUNC_GLYPH (it->dp))); 1727 glyph = XINT (DISP_TRUNC_GLYPH (it->dp));
1731 temp_it.len = CHAR_BYTES (temp_it.c); 1728 glyph = spec_glyph_lookup_face (XWINDOW (it->window), glyph);
1732 } 1729 }
1733 else 1730 else
1734 temp_it.c = '$'; 1731 glyph = '$';
1735
1736 produce_glyphs (&temp_it);
1737 it->pixel_width = temp_it.pixel_width;
1738 it->nglyphs = temp_it.pixel_width;
1739 } 1732 }
1740 else 1733 else
1741 abort (); 1734 abort ();
1735
1736 temp_it.c = FAST_GLYPH_CHAR (glyph);
1737 temp_it.face_id = FAST_GLYPH_FACE (glyph);
1738 temp_it.len = CHAR_BYTES (temp_it.c);
1739
1740 produce_glyphs (&temp_it);
1741 it->pixel_width = temp_it.pixel_width;
1742 it->nglyphs = temp_it.pixel_width;
1742} 1743}
1743 1744
1744 1745
@@ -1757,7 +1758,8 @@ produce_special_glyphs (it, what)
1757 ? (tty->TN_no_color_video & (ATTR)) == 0 \ 1758 ? (tty->TN_no_color_video & (ATTR)) == 0 \
1758 : 1) 1759 : 1)
1759 1760
1760/* Turn appearances of face FACE_ID on tty frame F on. */ 1761/* Turn appearances of face FACE_ID on tty frame F on.
1762 FACE_ID is a realized face ID number, in the face cache. */
1761 1763
1762static void 1764static void
1763turn_on_face (f, face_id) 1765turn_on_face (f, face_id)
@@ -2195,7 +2197,7 @@ DEFUN ("display-name", Fdisplay_name, Sdisplay_name, 0, 1, 0,
2195 doc: /* Return the name of the device that DISPLAY uses. 2197 doc: /* Return the name of the device that DISPLAY uses.
2196It is not guaranteed that the returned value is unique among opened displays. 2198It is not guaranteed that the returned value is unique among opened displays.
2197 2199
2198DISPLAY can be a display, a frame, or nil (meaning the selected 2200DISPLAY may be a display, a frame, or nil (meaning the selected
2199frame's display). */) 2201frame's display). */)
2200 (display) 2202 (display)
2201 Lisp_Object display; 2203 Lisp_Object display;
@@ -2209,7 +2211,10 @@ frame's display). */)
2209} 2211}
2210 2212
2211DEFUN ("display-tty-type", Fdisplay_tty_type, Sdisplay_tty_type, 0, 1, 0, 2213DEFUN ("display-tty-type", Fdisplay_tty_type, Sdisplay_tty_type, 0, 1, 0,
2212 doc: /* Return the type of the TTY device that DISPLAY uses. */) 2214 doc: /* Return the type of the TTY device that DISPLAY uses.
2215
2216DISPLAY may be a display, a frame, or nil (meaning the selected
2217frame's display). */)
2213 (display) 2218 (display)
2214 Lisp_Object display; 2219 Lisp_Object display;
2215{ 2220{
@@ -2225,7 +2230,10 @@ DEFUN ("display-tty-type", Fdisplay_tty_type, Sdisplay_tty_type, 0, 1, 0,
2225} 2230}
2226 2231
2227DEFUN ("display-controlling-tty-p", Fdisplay_controlling_tty_p, Sdisplay_controlling_tty_p, 0, 1, 0, 2232DEFUN ("display-controlling-tty-p", Fdisplay_controlling_tty_p, Sdisplay_controlling_tty_p, 0, 1, 0,
2228 doc: /* Return non-nil if DISPLAY is on the controlling tty of the Emacs process. */) 2233 doc: /* Return non-nil if DISPLAY is on the controlling tty of the Emacs process.
2234
2235DISPLAY may be a display, a frame, or nil (meaning the selected
2236frame's display). */)
2229 (display) 2237 (display)
2230 Lisp_Object display; 2238 Lisp_Object display;
2231{ 2239{
@@ -2237,6 +2245,25 @@ DEFUN ("display-controlling-tty-p", Fdisplay_controlling_tty_p, Sdisplay_control
2237 return Qt; 2245 return Qt;
2238} 2246}
2239 2247
2248DEFUN ("tty-no-underline", Ftty_no_underline, Stty_no_underline, 0, 1, 0,
2249 doc: /* Declare that the tty used by DISPLAY does not handle underlining.
2250This is used to override the terminfo data, for certain terminals that
2251do not really do underlining, but say that they do. This function has
2252no effect if used on a non-tty display.
2253
2254DISPLAY may be a display, a frame, or nil (meaning the selected
2255frame's display). */)
2256 (display)
2257 Lisp_Object display;
2258{
2259 struct display *d = get_display (display, 1);
2260
2261 if (d->type == output_termcap)
2262 d->display_info.tty->TS_enter_underline_mode = 0;
2263 return Qnil;
2264}
2265
2266
2240 2267
2241/*********************************************************************** 2268/***********************************************************************
2242 Initialization 2269 Initialization
@@ -3384,6 +3411,7 @@ See `resume-tty'. */);
3384 3411
3385 defsubr (&Stty_display_color_p); 3412 defsubr (&Stty_display_color_p);
3386 defsubr (&Stty_display_color_cells); 3413 defsubr (&Stty_display_color_cells);
3414 defsubr (&Stty_no_underline);
3387 defsubr (&Sdisplay_name); 3415 defsubr (&Sdisplay_name);
3388 defsubr (&Sdisplay_tty_type); 3416 defsubr (&Sdisplay_tty_type);
3389 defsubr (&Sdisplay_controlling_tty_p); 3417 defsubr (&Sdisplay_controlling_tty_p);
diff --git a/src/xdisp.c b/src/xdisp.c
index a7ce6159a01..6c11440dd1a 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -5139,7 +5139,7 @@ get_next_display_element (it)
5139 /* Handle non-break space in the mode where it only gets 5139 /* Handle non-break space in the mode where it only gets
5140 highlighting. */ 5140 highlighting. */
5141 5141
5142 if (! EQ (Vshow_nonbreak_escape, Qt) 5142 if (EQ (Vshow_nonbreak_escape, Qt)
5143 && (it->c == 0x8a0 || it->c == 0x920 5143 && (it->c == 0x8a0 || it->c == 0x920
5144 || it->c == 0xe20 || it->c == 0xf20)) 5144 || it->c == 0xe20 || it->c == 0xf20))
5145 { 5145 {
diff --git a/src/xselect.c b/src/xselect.c
index 5a899cfa389..7a1ceaabbb0 100644
--- a/src/xselect.c
+++ b/src/xselect.c
@@ -2048,7 +2048,7 @@ lisp_data_to_selection_data (display, obj,
2048 2048
2049 /* Use sizeof(long) even if it is more than 32 bits. See comment 2049 /* Use sizeof(long) even if it is more than 32 bits. See comment
2050 in x_get_window_property and x_fill_property_data. */ 2050 in x_get_window_property and x_fill_property_data. */
2051 2051
2052 if (*format_ret == 32) data_size = sizeof(long); 2052 if (*format_ret == 32) data_size = sizeof(long);
2053 *data_ret = (unsigned char *) xmalloc (*size_ret * data_size); 2053 *data_ret = (unsigned char *) xmalloc (*size_ret * data_size);
2054 for (i = 0; i < *size_ret; i++) 2054 for (i = 0; i < *size_ret; i++)
@@ -2062,7 +2062,7 @@ lisp_data_to_selection_data (display, obj,
2062 } 2062 }
2063 else 2063 else
2064 Fsignal (Qerror, /* Qselection_error */ 2064 Fsignal (Qerror, /* Qselection_error */
2065 Fcons (build_string ("unrecognised selection data"), 2065 Fcons (build_string ("unrecognized selection data"),
2066 Fcons (obj, Qnil))); 2066 Fcons (obj, Qnil)));
2067 2067
2068 *type_ret = symbol_to_x_atom (dpyinfo, display, type); 2068 *type_ret = symbol_to_x_atom (dpyinfo, display, type);
@@ -2864,7 +2864,7 @@ are ignored. */)
2864 when sending to the root window. */ 2864 when sending to the root window. */
2865 event.xclient.window = to_root ? FRAME_OUTER_WINDOW (f) : wdest; 2865 event.xclient.window = to_root ? FRAME_OUTER_WINDOW (f) : wdest;
2866 2866
2867 2867
2868 memset (event.xclient.data.b, 0, sizeof (event.xclient.data.b)); 2868 memset (event.xclient.data.b, 0, sizeof (event.xclient.data.b));
2869 x_fill_property_data (dpyinfo->display, values, event.xclient.data.b, 2869 x_fill_property_data (dpyinfo->display, values, event.xclient.data.b,
2870 event.xclient.format); 2870 event.xclient.format);