aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKaroly Lorentey2005-11-01 06:23:08 +0000
committerKaroly Lorentey2005-11-01 06:23:08 +0000
commitcd0cf71c4f41023a8d9c20b3a26e44b980992b5a (patch)
treeb763cfec551254e2228335be4e218ed7a9a19109 /src
parentc40bb1ba81a5df164f0b9b61e3480c55808717b7 (diff)
parent895725e10c0fb68ed21abb48183cc8843bcaadf3 (diff)
downloademacs-cd0cf71c4f41023a8d9c20b3a26e44b980992b5a.tar.gz
emacs-cd0cf71c4f41023a8d9c20b3a26e44b980992b5a.zip
Merged from miles@gnu.org--gnu-2005 (patch 142-148, 615-628)
Patches applied: * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-615 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-616 Add lisp/mh-e/.arch-inventory * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-617 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-618 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-619 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-620 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-621 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-622 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-623 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-624 Update from CVS: lisp/smerge-mode.el: Add 'tools' to file keywords. * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-625 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-626 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-627 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-628 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-142 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-143 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-144 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-145 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-146 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-147 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-148 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-435
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog88
-rw-r--r--src/casetab.c5
-rw-r--r--src/charset.c9
-rw-r--r--src/charset.h3
-rw-r--r--src/coding.h2
-rw-r--r--src/data.c4
-rw-r--r--src/editfns.c10
-rw-r--r--src/fringe.c2
-rw-r--r--src/image.c36
-rw-r--r--src/lread.c39
-rw-r--r--src/macterm.c48
-rw-r--r--src/minibuf.c2
-rw-r--r--src/w32fns.c4
-rw-r--r--src/xterm.c49
14 files changed, 239 insertions, 62 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 213e7762485..61a10be80dd 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,88 @@
12005-10-27 Chong Yidong <cyd@stupidchicken.com>
2
3 * data.c (Fmake_variable_frame_local): Add clarification to
4 docstring.
5
6 * fringe.c (update_window_fringes): Handle case where buffer ends
7 with a newline.
8
92005-10-27 Kenichi Handa <handa@m17n.org>
10
11 * coding.h (DECODE_SYSTEM): Fix argument name; name->str.
12
132005-10-24 Kenichi Handa <handa@m17n.org>
14
15 * charset.h (charset_mule_unicode_0100_24ff)
16 (charset_mule_unicode_2500_33ff, charset_mule_unicode_e000_ffff):
17 Extern them.
18
19 * charset.c (charset_mule_unicode_0100_24ff)
20 (charset_mule_unicode_2500_33ff, charset_mule_unicode_e000_ffff):
21 New variables.
22 (Fsetup_special_charsets): Initialize them.
23
24 * xterm.c (handle_one_xevent): Handle keysyms directly mapped to
25 supported Unicode characters.
26
272005-10-25 Jason Rumney <jasonr@gnu.org>
28
29 * w32fns.c (w32_to_x_font): Avoid forcing font widths.
30
312005-10-25 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
32
33 * image.c [MAC_OS] (image_load_qt_1): Check image size.
34 Use GraphicsImportGetImageDescription instead of
35 GraphicsImportGetNaturalBounds.
36 [MAC_OSX] (image_load_quartz2d): Check image size.
37 [MAC_OS] (xpm_load_image): Likewise.
38
39 * macterm.c (last_mouse_glyph_frame): New var.
40 (note_mouse_movement): Say mouse moved if current frame differs
41 from last_mouse_glyph_frame, and update last_mouse_glyph_frame.
42 (XTmouse_position): Set last_mouse_glyph_frame.
43 (XTread_socket): Clear last_mouse_glyph_frame on mouse up/down event.
44 (mac_draw_string_common) [MAC_OSX && WORDS_BIG_ENDIAN]: Fix typo.
45 Use EndianU16_BtoN.
46 (mac_draw_string_common) [MAC_OSX]: Don't use ATSUClearLayoutControls.
47 (x_per_char_metric, XLoadQueryFont)
48 [MAC_OS_X_VERSION_MAX_ALLOWED < 1020]: Use device origins to get
49 glyph bounds.
50 (mac_to_x_fontname, mac_do_list_fonts)
51 (mac_initialize_display_info): Change screen resolutions to 72dpi.
52
532005-10-25 Masatake YAMATO <jet@gyve.org>
54
55 * minibuf.c (Fdisplay_completion_list): Small doc fix.
56
572005-10-24 Kim F. Storm <storm@cua.dk>
58
59 * xterm.c: Undo 2005-10-23 change.
60 (last_mouse_glyph_frame): New var.
61 (note_mouse_movement): Say mouse moved if current frame differs
62 from last_mouse_glyph_frame, and update last_mouse_glyph_frame.
63 (XTmouse_position): Set last_mouse_glyph_frame.
64 (handle_one_xevent): Clear last_mouse_glyph_frame [instead of
65 last_mouse_glyph] on mouse up/down event.
66
67 * editfns.c (Fcompare_buffer_substrings): Fix last change.
68
692005-10-23 Stefan Monnier <monnier@iro.umontreal.ca>
70
71 * editfns.c (Fcompare_buffer_substrings): Handle multibyte chars.
72
732005-10-23 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
74
75 * xterm.c (note_mouse_movement): Always call note_mouse_highlight
76 so tool tips don't interfere with press on tool bar button.
77
782005-10-23 Richard M. Stallman <rms@gnu.org>
79
80 * casetab.c (Fset_case_table): Doc fix.
81
82 * lread.c (build_load_history): Replace STREAM arg with ENTIRE.
83 (readevalloop): Compute ENTIRE properly.
84 (syms_of_lread) <load-history>: Doc fix.
85
12005-10-21 Richard M. Stallman <rms@gnu.org> 862005-10-21 Richard M. Stallman <rms@gnu.org>
2 87
3 * lread.c (Fload): Simplify gcpro structure. 88 * lread.c (Fload): Simplify gcpro structure.
@@ -8,8 +93,7 @@
8 93
92005-10-21 Kenichi Handa <handa@m17n.org> 942005-10-21 Kenichi Handa <handa@m17n.org>
10 95
11 * search.c (boyer_moore): Surround the '||' part of expression in 96 * search.c (boyer_moore): Add parens to fix and/or precedence bug.
12 `if' condition by parentheses explicitly.
13 97
142005-10-20 Kim F. Storm <storm@cua.dk> 982005-10-20 Kim F. Storm <storm@cua.dk>
15 99
diff --git a/src/casetab.c b/src/casetab.c
index 874bb7599f0..a1e8b5a68fb 100644
--- a/src/casetab.c
+++ b/src/casetab.c
@@ -97,8 +97,9 @@ A case table is a char-table which maps characters
97to their lower-case equivalents. It also has three \"extra\" slots 97to their lower-case equivalents. It also has three \"extra\" slots
98which may be additional char-tables or nil. 98which may be additional char-tables or nil.
99These slots are called UPCASE, CANONICALIZE and EQUIVALENCES. 99These slots are called UPCASE, CANONICALIZE and EQUIVALENCES.
100UPCASE maps each character to its upper-case equivalent; 100UPCASE maps each non-upper-case character to its upper-case equivalent.
101 if lower and upper case characters are in 1-1 correspondence, 101 (The value in UPCASE for an upper-case character is never used.)
102 If lower and upper case characters are in 1-1 correspondence,
102 you may use nil and the upcase table will be deduced from DOWNCASE. 103 you may use nil and the upcase table will be deduced from DOWNCASE.
103CANONICALIZE maps each character to a canonical equivalent; 104CANONICALIZE maps each character to a canonical equivalent;
104 any two characters that are related by case-conversion have the same 105 any two characters that are related by case-conversion have the same
diff --git a/src/charset.c b/src/charset.c
index 3676c9b8a71..b4f84a9e785 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -63,6 +63,9 @@ int charset_katakana_jisx0201; /* JISX0201.Kana (Japanese Katakana) */
63int charset_latin_jisx0201; /* JISX0201.Roman (Japanese Roman) */ 63int charset_latin_jisx0201; /* JISX0201.Roman (Japanese Roman) */
64int charset_big5_1; /* Big5 Level 1 (Chinese Traditional) */ 64int charset_big5_1; /* Big5 Level 1 (Chinese Traditional) */
65int charset_big5_2; /* Big5 Level 2 (Chinese Traditional) */ 65int charset_big5_2; /* Big5 Level 2 (Chinese Traditional) */
66int charset_mule_unicode_0100_24ff;
67int charset_mule_unicode_2500_33ff;
68int charset_mule_unicode_e000_ffff;
66 69
67Lisp_Object Qcharset_table; 70Lisp_Object Qcharset_table;
68 71
@@ -1688,6 +1691,12 @@ DEFUN ("setup-special-charsets", Fsetup_special_charsets,
1688 charset_latin_jisx0201 = charset_id_internal ("latin-jisx0201"); 1691 charset_latin_jisx0201 = charset_id_internal ("latin-jisx0201");
1689 charset_big5_1 = charset_id_internal ("chinese-big5-1"); 1692 charset_big5_1 = charset_id_internal ("chinese-big5-1");
1690 charset_big5_2 = charset_id_internal ("chinese-big5-2"); 1693 charset_big5_2 = charset_id_internal ("chinese-big5-2");
1694 charset_mule_unicode_0100_24ff
1695 = charset_id_internal ("mule-unicode-0100-24ff");
1696 charset_mule_unicode_2500_33ff
1697 = charset_id_internal ("mule-unicode-2500-33ff");
1698 charset_mule_unicode_e000_ffff
1699 = charset_id_internal ("mule-unicode-e000-ffff");
1691 return Qnil; 1700 return Qnil;
1692} 1701}
1693 1702
diff --git a/src/charset.h b/src/charset.h
index a5cdca21bbb..b487e1d220e 100644
--- a/src/charset.h
+++ b/src/charset.h
@@ -129,6 +129,9 @@ extern int charset_katakana_jisx0201; /* JISX0201.Kana (Japanese Katakana) */
129extern int charset_latin_jisx0201; /* JISX0201.Roman (Japanese Roman) */ 129extern int charset_latin_jisx0201; /* JISX0201.Roman (Japanese Roman) */
130extern int charset_big5_1; /* Big5 Level 1 (Chinese Traditional) */ 130extern int charset_big5_1; /* Big5 Level 1 (Chinese Traditional) */
131extern int charset_big5_2; /* Big5 Level 2 (Chinese Traditional) */ 131extern int charset_big5_2; /* Big5 Level 2 (Chinese Traditional) */
132extern int charset_mule_unicode_0100_24ff;
133extern int charset_mule_unicode_2500_33ff;
134extern int charset_mule_unicode_e000_ffff;
132 135
133/* Check if CH is an ASCII character or a base leading-code. 136/* Check if CH is an ASCII character or a base leading-code.
134 Nowadays, any byte can be the first byte of a character in a 137 Nowadays, any byte can be the first byte of a character in a
diff --git a/src/coding.h b/src/coding.h
index 158ebbf289f..42e73a36430 100644
--- a/src/coding.h
+++ b/src/coding.h
@@ -601,7 +601,7 @@ struct coding_system
601 601
602/* Decode the string STR using the specified coding system 602/* Decode the string STR using the specified coding system
603 for system functions, if any. */ 603 for system functions, if any. */
604#define DECODE_SYSTEM(name) \ 604#define DECODE_SYSTEM(str) \
605 (! NILP (Vlocale_coding_system) \ 605 (! NILP (Vlocale_coding_system) \
606 && !EQ (Vlocale_coding_system, make_number (0)) \ 606 && !EQ (Vlocale_coding_system, make_number (0)) \
607 ? code_convert_string_norecord (str, Vlocale_coding_system, 0) \ 607 ? code_convert_string_norecord (str, Vlocale_coding_system, 0) \
diff --git a/src/data.c b/src/data.c
index cb6c7d2c85c..9bb90ad2d6e 100644
--- a/src/data.c
+++ b/src/data.c
@@ -1726,7 +1726,9 @@ it is in effect whenever the current buffer has no buffer-local binding.
1726A frame-local binding is actually a frame parameter value; 1726A frame-local binding is actually a frame parameter value;
1727thus, any given frame has a local binding for VARIABLE if it has 1727thus, any given frame has a local binding for VARIABLE if it has
1728a value for the frame parameter named VARIABLE. Return VARIABLE. 1728a value for the frame parameter named VARIABLE. Return VARIABLE.
1729See `modify-frame-parameters' for how to set frame parameters. */) 1729
1730This function does not in itself create any frame-local bindings for
1731VARIABLE. See `modify-frame-parameters' for how to set frame parameters. */)
1730 (variable) 1732 (variable)
1731 register Lisp_Object variable; 1733 register Lisp_Object variable;
1732{ 1734{
diff --git a/src/editfns.c b/src/editfns.c
index c3982b10cea..e7b152726e3 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -2472,9 +2472,9 @@ determines whether case is significant or ignored. */)
2472{ 2472{
2473 register int begp1, endp1, begp2, endp2, temp; 2473 register int begp1, endp1, begp2, endp2, temp;
2474 register struct buffer *bp1, *bp2; 2474 register struct buffer *bp1, *bp2;
2475 register Lisp_Object *trt 2475 register Lisp_Object trt
2476 = (!NILP (current_buffer->case_fold_search) 2476 = (!NILP (current_buffer->case_fold_search)
2477 ? XCHAR_TABLE (current_buffer->case_canon_table)->contents : 0); 2477 ? current_buffer->case_canon_table : Qnil);
2478 int chars = 0; 2478 int chars = 0;
2479 int i1, i2, i1_byte, i2_byte; 2479 int i1, i2, i1_byte, i2_byte;
2480 2480
@@ -2593,10 +2593,10 @@ determines whether case is significant or ignored. */)
2593 i2++; 2593 i2++;
2594 } 2594 }
2595 2595
2596 if (trt) 2596 if (!NILP (trt))
2597 { 2597 {
2598 c1 = XINT (trt[c1]); 2598 c1 = CHAR_TABLE_TRANSLATE (trt, c1);
2599 c2 = XINT (trt[c2]); 2599 c2 = CHAR_TABLE_TRANSLATE (trt, c2);
2600 } 2600 }
2601 if (c1 < c2) 2601 if (c1 < c2)
2602 return make_number (- 1 - chars); 2602 return make_number (- 1 - chars);
diff --git a/src/fringe.c b/src/fringe.c
index 25de5aa604e..34c58db3674 100644
--- a/src/fringe.c
+++ b/src/fringe.c
@@ -861,7 +861,7 @@ update_window_fringes (w, keep_current_p)
861 861
862 if (!done_bot) 862 if (!done_bot)
863 { 863 {
864 if (MATRIX_ROW_END_CHARPOS (row) >= BUF_ZV (XBUFFER (w->buffer)) 864 if (row->ends_at_zv_p
865 && !MATRIX_ROW_PARTIALLY_VISIBLE_AT_BOTTOM_P (w, row)) 865 && !MATRIX_ROW_PARTIALLY_VISIBLE_AT_BOTTOM_P (w, row))
866 row->indicate_eob_p = !NILP (boundary_bot), done_bot = 1; 866 row->indicate_eob_p = !NILP (boundary_bot), done_bot = 1;
867 else if (y + row->height >= yb) 867 else if (y + row->height >= yb)
diff --git a/src/image.c b/src/image.c
index 1996d8477e9..fb3cdecaa54 100644
--- a/src/image.c
+++ b/src/image.c
@@ -2291,6 +2291,7 @@ image_load_qt_1 (f, img, type, fss, dh)
2291 GraphicsImportComponent gi; 2291 GraphicsImportComponent gi;
2292 Rect rect; 2292 Rect rect;
2293 int width, height; 2293 int width, height;
2294 ImageDescriptionHandle desc_handle;
2294 short draw_all_pixels; 2295 short draw_all_pixels;
2295 Lisp_Object specified_bg; 2296 Lisp_Object specified_bg;
2296 XColor color; 2297 XColor color;
@@ -2326,14 +2327,22 @@ image_load_qt_1 (f, img, type, fss, dh)
2326 goto error; 2327 goto error;
2327 } 2328 }
2328 } 2329 }
2329 err = GraphicsImportGetNaturalBounds (gi, &rect); 2330 err = GraphicsImportGetImageDescription (gi, &desc_handle);
2330 if (err != noErr) 2331 if (err != noErr || desc_handle == NULL)
2331 { 2332 {
2332 image_error ("Error reading `%s'", img->spec, Qnil); 2333 image_error ("Error reading `%s'", img->spec, Qnil);
2333 goto error; 2334 goto error;
2334 } 2335 }
2335 width = img->width = rect.right - rect.left; 2336 width = img->width = (*desc_handle)->width;
2336 height = img->height = rect.bottom - rect.top; 2337 height = img->height = (*desc_handle)->height;
2338 DisposeHandle ((Handle)desc_handle);
2339
2340 if (!check_image_size (f, width, height))
2341 {
2342 image_error ("Invalid image size", Qnil, Qnil);
2343 goto error;
2344 }
2345
2337 err = GraphicsImportDoesDrawAllPixels (gi, &draw_all_pixels); 2346 err = GraphicsImportDoesDrawAllPixels (gi, &draw_all_pixels);
2338#if 0 2347#if 0
2339 /* Don't check the error code here. It may have an undocumented 2348 /* Don't check the error code here. It may have an undocumented
@@ -2535,6 +2544,15 @@ image_load_quartz2d (f, img, png_p)
2535 image_error ("Error reading image `%s'", img->spec, Qnil); 2544 image_error ("Error reading image `%s'", img->spec, Qnil);
2536 return 0; 2545 return 0;
2537 } 2546 }
2547 width = img->width = CGImageGetWidth (image);
2548 height = img->height = CGImageGetHeight (image);
2549
2550 if (!check_image_size (f, width, height))
2551 {
2552 UNGCPRO;
2553 image_error ("Invalid image size", Qnil, Qnil);
2554 return 0;
2555 }
2538 2556
2539 if (png_p) 2557 if (png_p)
2540 { 2558 {
@@ -2548,8 +2566,7 @@ image_load_quartz2d (f, img, png_p)
2548 color.blue = BLUE16_FROM_ULONG (color.pixel); 2566 color.blue = BLUE16_FROM_ULONG (color.pixel);
2549 } 2567 }
2550 } 2568 }
2551 width = img->width = CGImageGetWidth (image); 2569
2552 height = img->height = CGImageGetHeight (image);
2553 if (!x_create_x_image_and_pixmap (f, width, height, 0, &ximg, &img->pixmap)) 2570 if (!x_create_x_image_and_pixmap (f, width, height, 0, &ximg, &img->pixmap))
2554 { 2571 {
2555 CGImageRelease (image); 2572 CGImageRelease (image);
@@ -4190,6 +4207,13 @@ xpm_load_image (f, img, contents, end)
4190 || width <= 0 || height <= 0 4207 || width <= 0 || height <= 0
4191 || num_colors <= 0 || chars_per_pixel <= 0) 4208 || num_colors <= 0 || chars_per_pixel <= 0)
4192 goto failure; 4209 goto failure;
4210
4211 if (!check_image_size (f, width, height))
4212 {
4213 image_error ("Invalid image size", Qnil, Qnil);
4214 goto failure;
4215 }
4216
4193 expect (','); 4217 expect (',');
4194 4218
4195 XSETFRAME (frame, f); 4219 XSETFRAME (frame, f);
diff --git a/src/lread.c b/src/lread.c
index 43c7bf6cfc2..d51e6443288 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -1199,33 +1199,34 @@ openp (path, str, suffixes, storeptr, predicate)
1199 1199
1200/* Merge the list we've accumulated of globals from the current input source 1200/* Merge the list we've accumulated of globals from the current input source
1201 into the load_history variable. The details depend on whether 1201 into the load_history variable. The details depend on whether
1202 the source has an associated file name or not. */ 1202 the source has an associated file name or not.
1203
1204 FILENAME is the file name that we are loading from.
1205 ENTIRE is 1 if loading that entire file, 0 if evaluating part of it. */
1203 1206
1204static void 1207static void
1205build_load_history (stream, source) 1208build_load_history (filename, entire)
1206 FILE *stream; 1209 Lisp_Object filename;
1207 Lisp_Object source; 1210 int entire;
1208{ 1211{
1209 register Lisp_Object tail, prev, newelt; 1212 register Lisp_Object tail, prev, newelt;
1210 register Lisp_Object tem, tem2; 1213 register Lisp_Object tem, tem2;
1211 register int foundit, loading; 1214 register int foundit = 0;
1212
1213 loading = stream || !NARROWED;
1214 1215
1215 tail = Vload_history; 1216 tail = Vload_history;
1216 prev = Qnil; 1217 prev = Qnil;
1217 foundit = 0; 1218
1218 while (CONSP (tail)) 1219 while (CONSP (tail))
1219 { 1220 {
1220 tem = XCAR (tail); 1221 tem = XCAR (tail);
1221 1222
1222 /* Find the feature's previous assoc list... */ 1223 /* Find the feature's previous assoc list... */
1223 if (!NILP (Fequal (source, Fcar (tem)))) 1224 if (!NILP (Fequal (filename, Fcar (tem))))
1224 { 1225 {
1225 foundit = 1; 1226 foundit = 1;
1226 1227
1227 /* If we're loading, remove it. */ 1228 /* If we're loading the entire file, remove old data. */
1228 if (loading) 1229 if (entire)
1229 { 1230 {
1230 if (NILP (prev)) 1231 if (NILP (prev))
1231 Vload_history = XCDR (tail); 1232 Vload_history = XCDR (tail);
@@ -1257,10 +1258,10 @@ build_load_history (stream, source)
1257 QUIT; 1258 QUIT;
1258 } 1259 }
1259 1260
1260 /* If we're loading, cons the new assoc onto the front of load-history, 1261 /* If we're loading an entire file, cons the new assoc onto the
1261 the most-recently-loaded position. Also do this if we didn't find 1262 front of load-history, the most-recently-loaded position. Also
1262 an existing member for the current source. */ 1263 do this if we didn't find an existing member for the file. */
1263 if (loading || !foundit) 1264 if (entire || !foundit)
1264 Vload_history = Fcons (Fnreverse (Vcurrent_load_list), 1265 Vload_history = Fcons (Fnreverse (Vcurrent_load_list),
1265 Vload_history); 1266 Vload_history);
1266} 1267}
@@ -1415,7 +1416,9 @@ readevalloop (readcharfun, stream, sourcename, evalfun,
1415 } 1416 }
1416 } 1417 }
1417 1418
1418 build_load_history (stream, sourcename); 1419 build_load_history (sourcename,
1420 stream || (start == BEG && end == Z));
1421
1419 UNGCPRO; 1422 UNGCPRO;
1420 1423
1421 unbind_to (count, Qnil); 1424 unbind_to (count, Qnil);
@@ -3897,8 +3900,8 @@ An element `(t . SYMBOL)' precedes an entry `(defun . FUNCTION)',
3897and means that SYMBOL was an autoload before this file redefined it 3900and means that SYMBOL was an autoload before this file redefined it
3898as a function. 3901as a function.
3899 3902
3900For a preloaded file, the file name recorded is relative to the main Lisp 3903During preloading, the file name recorded is relative to the main Lisp
3901directory. These names are converted to absolute by `file-loadhist-lookup'. */); 3904directory. These file names are converted to absolute at startup. */);
3902 Vload_history = Qnil; 3905 Vload_history = Qnil;
3903 3906
3904 DEFVAR_LISP ("load-file-name", &Vload_file_name, 3907 DEFVAR_LISP ("load-file-name", &Vload_file_name,
diff --git a/src/macterm.c b/src/macterm.c
index a4fe2342a63..70120bdf59d 100644
--- a/src/macterm.c
+++ b/src/macterm.c
@@ -165,6 +165,7 @@ struct frame *pending_autoraise_frame;
165/* Where the mouse was last time we reported a mouse event. */ 165/* Where the mouse was last time we reported a mouse event. */
166 166
167static Rect last_mouse_glyph; 167static Rect last_mouse_glyph;
168static FRAME_PTR last_mouse_glyph_frame;
168 169
169/* The scroll bar in which the last X motion event occurred. 170/* The scroll bar in which the last X motion event occurred.
170 171
@@ -716,10 +717,10 @@ mac_draw_string_common (f, gc, x, y, buf, nchars, mode, bytes_per_char)
716#ifndef WORDS_BIG_ENDIAN 717#ifndef WORDS_BIG_ENDIAN
717 { 718 {
718 int i; 719 int i;
719 Unichar *text = (Unichar *)buf; 720 UniChar *text = (UniChar *)buf;
720 721
721 for (i = 0; i < nchars; i++) 722 for (i = 0; i < nchars; i++)
722 text[i] = buf[2*i] << 8 | buf[2*i+1]; 723 text[i] = EndianU16_BtoN (text[i]);
723 } 724 }
724#endif 725#endif
725 err = atsu_get_text_layout_with_text_ptr ((ConstUniCharArrayPtr)buf, 726 err = atsu_get_text_layout_with_text_ptr ((ConstUniCharArrayPtr)buf,
@@ -773,11 +774,18 @@ mac_draw_string_common (f, gc, x, y, buf, nchars, mode, bytes_per_char)
773 ATSUDrawText (text_layout, 774 ATSUDrawText (text_layout,
774 kATSUFromTextBeginning, kATSUToTextEnd, 775 kATSUFromTextBeginning, kATSUToTextEnd,
775 Long2Fix (x), Long2Fix (port_height - y)); 776 Long2Fix (x), Long2Fix (port_height - y));
776 ATSUClearLayoutControls (text_layout,
777 sizeof (tags) / sizeof (tags[0]),
778 tags);
779 CGContextSynchronize (context); 777 CGContextSynchronize (context);
780 QDEndCGContext (port, &context); 778 QDEndCGContext (port, &context);
779#if 0
780 /* This doesn't work on Mac OS X 10.1. */
781 ATSUClearLayoutControls (text_layout,
782 sizeof (tags) / sizeof (tags[0]),
783 tags);
784#else
785 ATSUSetLayoutControls (text_layout,
786 sizeof (tags) / sizeof (tags[0]),
787 tags, sizes, values);
788#endif
781 } 789 }
782#endif 790#endif
783 } 791 }
@@ -1666,8 +1674,12 @@ x_per_char_metric (font, char2b)
1666 if (err == noErr) 1674 if (err == noErr)
1667 err = ATSUGetGlyphBounds (text_layout, 0, 0, 1675 err = ATSUGetGlyphBounds (text_layout, 0, 0,
1668 kATSUFromTextBeginning, kATSUToTextEnd, 1676 kATSUFromTextBeginning, kATSUToTextEnd,
1669 kATSUseFractionalOrigins, 1, 1677#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020
1670 &glyph_bounds, NULL); 1678 kATSUseFractionalOrigins,
1679#else
1680 kATSUseDeviceOrigins,
1681#endif
1682 1, &glyph_bounds, NULL);
1671 UNBLOCK_INPUT; 1683 UNBLOCK_INPUT;
1672 if (err != noErr) 1684 if (err != noErr)
1673 pcm = NULL; 1685 pcm = NULL;
@@ -3910,13 +3922,15 @@ note_mouse_movement (frame, pos)
3910 return 1; 3922 return 1;
3911 } 3923 }
3912 /* Has the mouse moved off the glyph it was on at the last sighting? */ 3924 /* Has the mouse moved off the glyph it was on at the last sighting? */
3913 if (!PtInRect (*pos, &last_mouse_glyph)) 3925 if (frame != last_mouse_glyph_frame
3926 || !PtInRect (*pos, &last_mouse_glyph))
3914 { 3927 {
3915 frame->mouse_moved = 1; 3928 frame->mouse_moved = 1;
3916 last_mouse_scroll_bar = Qnil; 3929 last_mouse_scroll_bar = Qnil;
3917 note_mouse_highlight (frame, pos->h, pos->v); 3930 note_mouse_highlight (frame, pos->h, pos->v);
3918 /* Remember which glyph we're now on. */ 3931 /* Remember which glyph we're now on. */
3919 remember_mouse_glyph (frame, pos->h, pos->v, &last_mouse_glyph); 3932 remember_mouse_glyph (frame, pos->h, pos->v, &last_mouse_glyph);
3933 last_mouse_glyph_frame = frame;
3920 return 1; 3934 return 1;
3921 } 3935 }
3922 3936
@@ -4021,6 +4035,7 @@ XTmouse_position (fp, insist, bar_window, part, x, y, time)
4021 GetMouse (&mouse_pos); 4035 GetMouse (&mouse_pos);
4022 remember_mouse_glyph (f1, mouse_pos.h, mouse_pos.v, 4036 remember_mouse_glyph (f1, mouse_pos.h, mouse_pos.v,
4023 &last_mouse_glyph); 4037 &last_mouse_glyph);
4038 last_mouse_glyph_frame = f1;
4024 4039
4025 *bar_window = Qnil; 4040 *bar_window = Qnil;
4026 *part = 0; 4041 *part = 0;
@@ -6572,7 +6587,7 @@ mac_to_x_fontname (name, size, style, charset)
6572 6587
6573 sprintf (xf, "%s-%c-normal--%d-%d-%d-%d-m-%d-%s", 6588 sprintf (xf, "%s-%c-normal--%d-%d-%d-%d-m-%d-%s",
6574 style & bold ? "bold" : "medium", style & italic ? 'i' : 'r', 6589 style & bold ? "bold" : "medium", style & italic ? 'i' : 'r',
6575 size, size * 10, size ? 75 : 0, size ? 75 : 0, size * 10, charset); 6590 size, size * 10, size ? 72 : 0, size ? 72 : 0, size * 10, charset);
6576 6591
6577 result = xmalloc (strlen (foundry) + strlen (family) + strlen (xf) + 3 + 1); 6592 result = xmalloc (strlen (foundry) + strlen (family) + strlen (xf) + 3 + 1);
6578 sprintf (result, "-%s-%s-%s", foundry, family, xf); 6593 sprintf (result, "-%s-%s-%s", foundry, family, xf);
@@ -7061,7 +7076,7 @@ mac_do_list_fonts (pattern, maxnames)
7061 continue; 7076 continue;
7062 memcpy (scaled, font_name_table[i], former_len); 7077 memcpy (scaled, font_name_table[i], former_len);
7063 sprintf (scaled + former_len, 7078 sprintf (scaled + former_len,
7064 "-%d-%d-75-75-m-%d-%s", 7079 "-%d-%d-72-72-m-%d-%s",
7065 scl_val[XLFD_SCL_PIXEL_SIZE], 7080 scl_val[XLFD_SCL_PIXEL_SIZE],
7066 scl_val[XLFD_SCL_POINT_SIZE], 7081 scl_val[XLFD_SCL_POINT_SIZE],
7067 scl_val[XLFD_SCL_AVGWIDTH], 7082 scl_val[XLFD_SCL_AVGWIDTH],
@@ -7409,8 +7424,12 @@ XLoadQueryFont (Display *dpy, char *fontname)
7409 if (err == noErr) 7424 if (err == noErr)
7410 err = ATSUGetGlyphBounds (text_layout, 0, 0, 7425 err = ATSUGetGlyphBounds (text_layout, 0, 0,
7411 kATSUFromTextBeginning, kATSUToTextEnd, 7426 kATSUFromTextBeginning, kATSUToTextEnd,
7412 kATSUseFractionalOrigins, 1, 7427#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020
7413 &glyph_bounds, NULL); 7428 kATSUseFractionalOrigins,
7429#else
7430 kATSUseDeviceOrigins,
7431#endif
7432 1, &glyph_bounds, NULL);
7414 if (err == noErr) 7433 if (err == noErr)
7415 { 7434 {
7416 xassert (glyph_bounds.lowerRight.x - glyph_bounds.lowerLeft.x 7435 xassert (glyph_bounds.lowerRight.x - glyph_bounds.lowerLeft.x
@@ -9501,6 +9520,7 @@ XTread_socket (sd, expected, hold_quit)
9501 != eventNotHandledErr) 9520 != eventNotHandledErr)
9502 break; 9521 break;
9503#endif 9522#endif
9523 last_mouse_glyph_frame = 0;
9504 9524
9505 if (dpyinfo->grabbed && last_mouse_frame 9525 if (dpyinfo->grabbed && last_mouse_frame
9506 && FRAME_LIVE_P (last_mouse_frame)) 9526 && FRAME_LIVE_P (last_mouse_frame))
@@ -10230,8 +10250,8 @@ mac_initialize_display_info ()
10230 main_device_handle = LMGetMainDevice(); 10250 main_device_handle = LMGetMainDevice();
10231 10251
10232 dpyinfo->reference_count = 0; 10252 dpyinfo->reference_count = 0;
10233 dpyinfo->resx = 75.0; 10253 dpyinfo->resx = 72.0;
10234 dpyinfo->resy = 75.0; 10254 dpyinfo->resy = 72.0;
10235 dpyinfo->color_p = TestDeviceAttribute (main_device_handle, gdDevType); 10255 dpyinfo->color_p = TestDeviceAttribute (main_device_handle, gdDevType);
10236#ifdef MAC_OSX 10256#ifdef MAC_OSX
10237 /* HasDepth returns true if it is possible to have a 32 bit display, 10257 /* HasDepth returns true if it is possible to have a 32 bit display,
diff --git a/src/minibuf.c b/src/minibuf.c
index cdee2ad8300..71a0f15b72a 100644
--- a/src/minibuf.c
+++ b/src/minibuf.c
@@ -2369,7 +2369,7 @@ properties of `highlight'.
2369At the end, this runs the normal hook `completion-setup-hook'. 2369At the end, this runs the normal hook `completion-setup-hook'.
2370It can find the completion buffer in `standard-output'. 2370It can find the completion buffer in `standard-output'.
2371The optional second arg COMMON-SUBSTRING is a string. 2371The optional second arg COMMON-SUBSTRING is a string.
2372It is used to put faces, `completions-first-difference` and 2372It is used to put faces, `completions-first-difference' and
2373`completions-common-part' on the completion buffer. The 2373`completions-common-part' on the completion buffer. The
2374`completions-common-part' face is put on the common substring 2374`completions-common-part' face is put on the common substring
2375specified by COMMON-SUBSTRING. If COMMON-SUBSTRING is nil, 2375specified by COMMON-SUBSTRING. If COMMON-SUBSTRING is nil,
diff --git a/src/w32fns.c b/src/w32fns.c
index 93469418137..e18ee3d43a9 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -5284,9 +5284,13 @@ w32_to_x_font (lplogfont, lpxstr, len, specific_charset)
5284 strcpy (height_pixels, "*"); 5284 strcpy (height_pixels, "*");
5285 strcpy (height_dpi, "*"); 5285 strcpy (height_dpi, "*");
5286 } 5286 }
5287
5288#if 0 /* Never put the width in the xfld. It fails on fonts with
5289 double-width characters. */
5287 if (lplogfont->lfWidth) 5290 if (lplogfont->lfWidth)
5288 sprintf (width_pixels, "%u", lplogfont->lfWidth * 10); 5291 sprintf (width_pixels, "%u", lplogfont->lfWidth * 10);
5289 else 5292 else
5293#endif
5290 strcpy (width_pixels, "*"); 5294 strcpy (width_pixels, "*");
5291 5295
5292 _snprintf (lpxstr, len - 1, 5296 _snprintf (lpxstr, len - 1,
diff --git a/src/xterm.c b/src/xterm.c
index 2aa1095f27c..1adcb4fb4d1 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -248,6 +248,7 @@ static unsigned long ignore_next_mouse_click_timeout;
248/* Where the mouse was last time we reported a mouse event. */ 248/* Where the mouse was last time we reported a mouse event. */
249 249
250static XRectangle last_mouse_glyph; 250static XRectangle last_mouse_glyph;
251static FRAME_PTR last_mouse_glyph_frame;
251static Lisp_Object last_mouse_press_frame; 252static Lisp_Object last_mouse_press_frame;
252 253
253/* The scroll bar in which the last X motion event occurred. 254/* The scroll bar in which the last X motion event occurred.
@@ -3602,20 +3603,24 @@ note_mouse_movement (frame, event)
3602 frame->mouse_moved = 1; 3603 frame->mouse_moved = 1;
3603 last_mouse_scroll_bar = Qnil; 3604 last_mouse_scroll_bar = Qnil;
3604 note_mouse_highlight (frame, -1, -1); 3605 note_mouse_highlight (frame, -1, -1);
3606 last_mouse_glyph_frame = 0;
3605 return 1; 3607 return 1;
3606 } 3608 }
3607 3609
3610
3608 /* Has the mouse moved off the glyph it was on at the last sighting? */ 3611 /* Has the mouse moved off the glyph it was on at the last sighting? */
3609 if (event->x < last_mouse_glyph.x 3612 if (frame != last_mouse_glyph_frame
3610 || event->x >= last_mouse_glyph.x + last_mouse_glyph.width 3613 || event->x < last_mouse_glyph.x
3611 || event->y < last_mouse_glyph.y 3614 || event->x >= last_mouse_glyph.x + last_mouse_glyph.width
3612 || event->y >= last_mouse_glyph.y + last_mouse_glyph.height) 3615 || event->y < last_mouse_glyph.y
3616 || event->y >= last_mouse_glyph.y + last_mouse_glyph.height)
3613 { 3617 {
3614 frame->mouse_moved = 1; 3618 frame->mouse_moved = 1;
3615 last_mouse_scroll_bar = Qnil; 3619 last_mouse_scroll_bar = Qnil;
3616 note_mouse_highlight (frame, event->x, event->y); 3620 note_mouse_highlight (frame, event->x, event->y);
3617 /* Remember which glyph we're now on. */ 3621 /* Remember which glyph we're now on. */
3618 remember_mouse_glyph (frame, event->x, event->y, &last_mouse_glyph); 3622 remember_mouse_glyph (frame, event->x, event->y, &last_mouse_glyph);
3623 last_mouse_glyph_frame = frame;
3619 return 1; 3624 return 1;
3620 } 3625 }
3621 3626
@@ -3827,6 +3832,7 @@ XTmouse_position (fp, insist, bar_window, part, x, y, time)
3827 the frame are divided into. */ 3832 the frame are divided into. */
3828 3833
3829 remember_mouse_glyph (f1, win_x, win_y, &last_mouse_glyph); 3834 remember_mouse_glyph (f1, win_x, win_y, &last_mouse_glyph);
3835 last_mouse_glyph_frame = f1;
3830 3836
3831 *bar_window = Qnil; 3837 *bar_window = Qnil;
3832 *part = 0; 3838 *part = 0;
@@ -6245,12 +6251,33 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
6245 { 6251 {
6246 inev.ie.kind = ASCII_KEYSTROKE_EVENT; 6252 inev.ie.kind = ASCII_KEYSTROKE_EVENT;
6247 inev.ie.code = keysym; 6253 inev.ie.code = keysym;
6248 goto done_keysym; 6254 goto done_keysym;
6249 } 6255 }
6250 6256
6251 /* Now non-ASCII. */ 6257 /* Keysyms directly mapped to supported Unicode characters. */
6252 if (HASH_TABLE_P (Vx_keysym_table) 6258 if ((keysym >= 0x01000100 && keysym <= 0x010033ff)
6253 && (NATNUMP (c = Fgethash (make_number (keysym), 6259 || (keysym >= 0x0100e000 && keysym <= 0x0100ffff))
6260 {
6261 int code, charset_id, c1, c2;
6262
6263 if (keysym < 0x01002500)
6264 charset_id = charset_mule_unicode_0100_24ff,
6265 code = (keysym & 0xFFFF) - 0x100;
6266 else if (keysym < 0x0100e000)
6267 charset_id = charset_mule_unicode_2500_33ff,
6268 code = (keysym & 0xFFFF) - 0x2500;
6269 else
6270 charset_id = charset_mule_unicode_e000_ffff,
6271 code = (keysym & 0xFFFF) - 0xe000;
6272 c1 = (code / 96) + 32, c2 = (code % 96) + 32;
6273 inev.ie.kind = MULTIBYTE_CHAR_KEYSTROKE_EVENT;
6274 inev.ie.code = MAKE_CHAR (charset_id, c1, c2);
6275 goto done_keysym;
6276 }
6277
6278 /* Now non-ASCII. */
6279 if (HASH_TABLE_P (Vx_keysym_table)
6280 && (NATNUMP (c = Fgethash (make_number (keysym),
6254 Vx_keysym_table, 6281 Vx_keysym_table,
6255 Qnil)))) 6282 Qnil))))
6256 { 6283 {
@@ -6649,7 +6676,7 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
6649 int tool_bar_p = 0; 6676 int tool_bar_p = 0;
6650 6677
6651 bzero (&compose_status, sizeof (compose_status)); 6678 bzero (&compose_status, sizeof (compose_status));
6652 bzero (&last_mouse_glyph, sizeof (last_mouse_glyph)); 6679 last_mouse_glyph_frame = 0;
6653 6680
6654 if (dpyinfo->grabbed 6681 if (dpyinfo->grabbed
6655 && last_mouse_frame 6682 && last_mouse_frame