aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPaul Eggert2011-02-24 22:42:06 -0800
committerPaul Eggert2011-02-24 22:42:06 -0800
commita07b892ff17e95e513c4bfe6e2dd73df1e589bf3 (patch)
treea3d1a40c919618c9a452a405838cff23819777fe /src
parentae0d725005539d9259efac6a81ff8fdd45eb69a6 (diff)
parentb18947669cd182ec8487b317460f6df5878d0f11 (diff)
downloademacs-a07b892ff17e95e513c4bfe6e2dd73df1e589bf3.tar.gz
emacs-a07b892ff17e95e513c4bfe6e2dd73df1e589bf3.zip
Merge from mainline.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog26
-rw-r--r--src/bidi.c2
-rw-r--r--src/dired.c2
-rw-r--r--src/font.c4
-rw-r--r--src/nsterm.m52
-rw-r--r--src/print.c32
-rw-r--r--src/xdisp.c2
7 files changed, 67 insertions, 53 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 6673a25f74f..3719b61b413 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,29 @@
12011-02-25 Paul Eggert <eggert@cs.ucla.edu>
2
3 * dired.c (Ffile_attributes): Increase size of modes from 10 to 12
4 as per recent filemodestring API change. Reported by Jonas Ă–ster in
5 <http://lists.gnu.org/archive/html/emacs-devel/2011-02/msg01069.html>.
6
72011-02-23 Ben Key <bkey76@gmail.com> (tiny change)
8
9 * nsterm.m (ns_draw_window_cursor): Obey the cursor_width argument
10 directly, for bar cursors.
11
122011-02-23 Chong Yidong <cyd@stupidchicken.com>
13
14 * xdisp.c (set_frame_cursor_types): Don't write an undefined value
15 into the frame's cursor_width.
16
172011-02-23 Stefan Monnier <monnier@iro.umontreal.ca>
18
19 * print.c (print_object): Never print old-style backquotes.
20 Obey escapeflag for hash tables as well.
21
222011-02-23 Kenichi Handa <handa@m17n.org>
23
24 * font.c (font_open_entity): Be sure to set scaled_pixel_size.
25 (font_find_for_lface): Check if attrs[LFACE_HEIGHT_INDEX] is integer.
26
12011-02-22 Paul Eggert <eggert@cs.ucla.edu> 272011-02-22 Paul Eggert <eggert@cs.ucla.edu>
2 28
3 Work around some portability problems with symlinks. 29 Work around some portability problems with symlinks.
diff --git a/src/bidi.c b/src/bidi.c
index 9740fe8f1d5..eeacf65bd5c 100644
--- a/src/bidi.c
+++ b/src/bidi.c
@@ -1520,7 +1520,7 @@ bidi_level_of_next_char (struct bidi_it *bidi_it)
1520 bidi_check_type (bidi_it->type); 1520 bidi_check_type (bidi_it->type);
1521 1521
1522 /* For L1 below, we need to know, for each WS character, whether 1522 /* For L1 below, we need to know, for each WS character, whether
1523 it belongs to a sequence of WS characters preceeding a newline 1523 it belongs to a sequence of WS characters preceding a newline
1524 or a TAB or a paragraph separator. */ 1524 or a TAB or a paragraph separator. */
1525 if (bidi_it->orig_type == NEUTRAL_WS 1525 if (bidi_it->orig_type == NEUTRAL_WS
1526 && bidi_it->next_for_ws.type == UNKNOWN_BT) 1526 && bidi_it->next_for_ws.type == UNKNOWN_BT)
diff --git a/src/dired.c b/src/dired.c
index eea4c7cfe40..ce2a3d105e5 100644
--- a/src/dired.c
+++ b/src/dired.c
@@ -937,7 +937,7 @@ so last access time will always be midnight of that day. */)
937 Lisp_Object dirname; 937 Lisp_Object dirname;
938 struct stat sdir; 938 struct stat sdir;
939#endif /* BSD4_2 */ 939#endif /* BSD4_2 */
940 char modes[10]; 940 char modes[12];
941 Lisp_Object handler; 941 Lisp_Object handler;
942 struct gcpro gcpro1; 942 struct gcpro gcpro1;
943 char *uname = NULL, *gname = NULL; 943 char *uname = NULL, *gname = NULL;
diff --git a/src/font.c b/src/font.c
index d77eafb6ad2..35821ae34f9 100644
--- a/src/font.c
+++ b/src/font.c
@@ -2806,7 +2806,7 @@ font_open_entity (FRAME_PTR f, Lisp_Object entity, int pixel_size)
2806 Lisp_Object objlist, size, val, font_object; 2806 Lisp_Object objlist, size, val, font_object;
2807 struct font *font; 2807 struct font *font;
2808 int min_width, height; 2808 int min_width, height;
2809 int scaled_pixel_size; 2809 int scaled_pixel_size = pixel_size;
2810 2810
2811 font_assert (FONT_ENTITY_P (entity)); 2811 font_assert (FONT_ENTITY_P (entity));
2812 size = AREF (entity, FONT_SIZE_INDEX); 2812 size = AREF (entity, FONT_SIZE_INDEX);
@@ -3121,7 +3121,7 @@ font_find_for_lface (FRAME_PTR f, Lisp_Object *attrs, Lisp_Object spec, int c)
3121 XSETFRAME (frame, f); 3121 XSETFRAME (frame, f);
3122 size = AREF (spec, FONT_SIZE_INDEX); 3122 size = AREF (spec, FONT_SIZE_INDEX);
3123 pixel_size = font_pixel_size (f, spec); 3123 pixel_size = font_pixel_size (f, spec);
3124 if (pixel_size == 0) 3124 if (pixel_size == 0 && INTEGERP (attrs[LFACE_HEIGHT_INDEX]))
3125 { 3125 {
3126 double pt = XINT (attrs[LFACE_HEIGHT_INDEX]); 3126 double pt = XINT (attrs[LFACE_HEIGHT_INDEX]);
3127 3127
diff --git a/src/nsterm.m b/src/nsterm.m
index 038709869a9..8e77c89c3f7 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -1072,7 +1072,7 @@ x_set_offset (struct frame *f, int xoff, int yoff, int change_grav)
1072 : f->left_pos; 1072 : f->left_pos;
1073 /* We use visibleFrame here to take menu bar into account. 1073 /* We use visibleFrame here to take menu bar into account.
1074 Ideally we should also adjust left/top with visibleFrame.origin. */ 1074 Ideally we should also adjust left/top with visibleFrame.origin. */
1075 1075
1076 f->top_pos = f->size_hint_flags & YNegative 1076 f->top_pos = f->size_hint_flags & YNegative
1077 ? ([screen visibleFrame].size.height + f->top_pos 1077 ? ([screen visibleFrame].size.height + f->top_pos
1078 - FRAME_PIXEL_HEIGHT (f) - FRAME_NS_TITLEBAR_HEIGHT (f) 1078 - FRAME_PIXEL_HEIGHT (f) - FRAME_NS_TITLEBAR_HEIGHT (f)
@@ -1154,7 +1154,7 @@ x_set_window_size (struct frame *f, int change_grav, int cols, int rows)
1154 FRAME_TOOLBAR_HEIGHT (f) = 0; 1154 FRAME_TOOLBAR_HEIGHT (f) = 0;
1155 1155
1156 wr.size.width = pixelwidth + f->border_width; 1156 wr.size.width = pixelwidth + f->border_width;
1157 wr.size.height = pixelheight + FRAME_NS_TITLEBAR_HEIGHT (f) 1157 wr.size.height = pixelheight + FRAME_NS_TITLEBAR_HEIGHT (f)
1158 + FRAME_TOOLBAR_HEIGHT (f); 1158 + FRAME_TOOLBAR_HEIGHT (f);
1159 1159
1160 /* Do not try to constrain to this screen. We may have multiple 1160 /* Do not try to constrain to this screen. We may have multiple
@@ -2230,11 +2230,8 @@ ns_draw_window_cursor (struct window *w, struct glyph_row *glyph_row,
2230 int x, int y, int cursor_type, int cursor_width, 2230 int x, int y, int cursor_type, int cursor_width,
2231 int on_p, int active_p) 2231 int on_p, int active_p)
2232/* -------------------------------------------------------------------------- 2232/* --------------------------------------------------------------------------
2233 External call (RIF): draw cursor 2233 External call (RIF): draw cursor.
2234 (modeled after x_draw_window_cursor 2234 Note that CURSOR_WIDTH is meaningful only for (h)bar cursors.
2235 FIXME: cursor_width is effectively bogus -- it sometimes gets set
2236 in xdisp.c set_frame_cursor_types, sometimes left uninitialized;
2237 DON'T USE IT (no other terms do)
2238 -------------------------------------------------------------------------- */ 2235 -------------------------------------------------------------------------- */
2239{ 2236{
2240 NSRect r, s; 2237 NSRect r, s;
@@ -2251,7 +2248,6 @@ ns_draw_window_cursor (struct window *w, struct glyph_row *glyph_row,
2251 and mini-buffer. */ 2248 and mini-buffer. */
2252 2249
2253 NSTRACE (dumpcursor); 2250 NSTRACE (dumpcursor);
2254//fprintf(stderr, "drawcursor (%d,%d) activep = %d\tonp = %d\tc_type = %d\twidth = %d\n",x,y, active_p,on_p,cursor_type,cursor_width);
2255 2251
2256 if (!on_p) 2252 if (!on_p)
2257 return; 2253 return;
@@ -2276,8 +2272,22 @@ ns_draw_window_cursor (struct window *w, struct glyph_row *glyph_row,
2276 return; 2272 return;
2277 } 2273 }
2278 2274
2275 /* We draw the cursor (with NSRectFill), then draw the glyph on top
2276 (other terminals do it the other way round). We must set
2277 w->phys_cursor_width to the cursor width. For bar cursors, that
2278 is CURSOR_WIDTH; for box cursors, it is the glyph width. */
2279 get_phys_cursor_geometry (w, glyph_row, phys_cursor_glyph, &fx, &fy, &h); 2279 get_phys_cursor_geometry (w, glyph_row, phys_cursor_glyph, &fx, &fy, &h);
2280 2280
2281 /* The above get_phys_cursor_geometry call set w->phys_cursor_width
2282 to the glyph width; replace with CURSOR_WIDTH for bar cursors. */
2283 if (cursor_type == BAR_CURSOR || cursor_type == HBAR_CURSOR)
2284 {
2285 if (cursor_width < 0)
2286 cursor_width = FRAME_CURSOR_WIDTH (f);
2287 cursor_width = min (cursor_width, 1);
2288 w->phys_cursor_width = cursor_width;
2289 }
2290
2281 r.origin.x = fx, r.origin.y = fy; 2291 r.origin.x = fx, r.origin.y = fy;
2282 r.size.height = h; 2292 r.size.height = h;
2283 r.size.width = w->phys_cursor_width; 2293 r.size.width = w->phys_cursor_width;
@@ -2285,7 +2295,7 @@ ns_draw_window_cursor (struct window *w, struct glyph_row *glyph_row,
2285 /* FIXME: if we overwrite the internal border area, it does not get erased; 2295 /* FIXME: if we overwrite the internal border area, it does not get erased;
2286 fix by truncating cursor, but better would be to erase properly */ 2296 fix by truncating cursor, but better would be to erase properly */
2287 overspill = r.origin.x + r.size.width - 2297 overspill = r.origin.x + r.size.width -
2288 WINDOW_TEXT_TO_FRAME_PIXEL_X (w, WINDOW_BOX_RIGHT_EDGE_X (w) 2298 WINDOW_TEXT_TO_FRAME_PIXEL_X (w, WINDOW_BOX_RIGHT_EDGE_X (w)
2289 - WINDOW_TOTAL_FRINGE_WIDTH (w) - FRAME_INTERNAL_BORDER_WIDTH (f)); 2299 - WINDOW_TOTAL_FRINGE_WIDTH (w) - FRAME_INTERNAL_BORDER_WIDTH (f));
2290 if (overspill > 0) 2300 if (overspill > 0)
2291 r.size.width -= overspill; 2301 r.size.width -= overspill;
@@ -2335,8 +2345,6 @@ ns_draw_window_cursor (struct window *w, struct glyph_row *glyph_row,
2335 break; 2345 break;
2336 case BAR_CURSOR: 2346 case BAR_CURSOR:
2337 s = r; 2347 s = r;
2338 s.size.width = min (cursor_width, 2); //FIXME(see above)
2339
2340 /* If the character under cursor is R2L, draw the bar cursor 2348 /* If the character under cursor is R2L, draw the bar cursor
2341 on the right of its glyph, rather than on the left. */ 2349 on the right of its glyph, rather than on the left. */
2342 cursor_glyph = get_phys_cursor_glyph (w); 2350 cursor_glyph = get_phys_cursor_glyph (w);
@@ -2984,7 +2992,7 @@ ns_draw_glyph_string (struct glyph_string *s)
2984 NS_FACE_BACKGROUND (s->face) = NS_FACE_FOREGROUND (s->face); 2992 NS_FACE_BACKGROUND (s->face) = NS_FACE_FOREGROUND (s->face);
2985 NS_FACE_FOREGROUND (s->face) = tmp; 2993 NS_FACE_FOREGROUND (s->face) = tmp;
2986 } 2994 }
2987 2995
2988 ns_tmp_font->font.driver->draw 2996 ns_tmp_font->font.driver->draw
2989 (s, 0, s->nchars, s->x, s->y, 2997 (s, 0, s->nchars, s->x, s->y,
2990 (ns_tmp_flags == NS_DUMPGLYPH_NORMAL && !s->background_filled_p) 2998 (ns_tmp_flags == NS_DUMPGLYPH_NORMAL && !s->background_filled_p)
@@ -3010,9 +3018,9 @@ ns_draw_glyph_string (struct glyph_string *s)
3010 else 3018 else
3011 ns_maybe_dumpglyphs_background 3019 ns_maybe_dumpglyphs_background
3012 (s, s->first_glyph->type == COMPOSITE_GLYPH); 3020 (s, s->first_glyph->type == COMPOSITE_GLYPH);
3013 /* ... */ 3021 /* ... */
3014 /* Not yet implemented. */ 3022 /* Not yet implemented. */
3015 /* ... */ 3023 /* ... */
3016 ns_unfocus (s->f); 3024 ns_unfocus (s->f);
3017 break; 3025 break;
3018 3026
@@ -3785,7 +3793,7 @@ ns_term_init (Lisp_Object display_name)
3785 strncpy (terminal->name, SDATA (display_name), SBYTES (display_name)); 3793 strncpy (terminal->name, SDATA (display_name), SBYTES (display_name));
3786 terminal->name[SBYTES (display_name)] = 0; 3794 terminal->name[SBYTES (display_name)] = 0;
3787 3795
3788 UNBLOCK_INPUT; 3796 UNBLOCK_INPUT;
3789 3797
3790 if (!inhibit_x_resources) 3798 if (!inhibit_x_resources)
3791 { 3799 {
@@ -3802,7 +3810,7 @@ ns_term_init (Lisp_Object display_name)
3802 stringForKey: @"AppleHighlightColor"]; 3810 stringForKey: @"AppleHighlightColor"];
3803 if (ns_selection_color == nil) 3811 if (ns_selection_color == nil)
3804 ns_selection_color = NS_SELECTION_COLOR_DEFAULT; 3812 ns_selection_color = NS_SELECTION_COLOR_DEFAULT;
3805 3813
3806 { 3814 {
3807 NSColorList *cl = [NSColorList colorListNamed: @"Emacs"]; 3815 NSColorList *cl = [NSColorList colorListNamed: @"Emacs"];
3808 3816
@@ -3898,7 +3906,7 @@ ns_term_init (Lisp_Object display_name)
3898 keyEquivalent: @"q" 3906 keyEquivalent: @"q"
3899 atIndex: 9]; 3907 atIndex: 9];
3900 3908
3901 item = [mainMenu insertItemWithTitle: ns_app_name 3909 item = [mainMenu insertItemWithTitle: ns_app_name
3902 action: @selector (menuDown:) 3910 action: @selector (menuDown:)
3903 keyEquivalent: @"" 3911 keyEquivalent: @""
3904 atIndex: 0]; 3912 atIndex: 0];
@@ -4103,7 +4111,7 @@ ns_term_shutdown (int sig)
4103 -appShouldTerminate 4111 -appShouldTerminate
4104 Cancel -> Nothing else 4112 Cancel -> Nothing else
4105 Accept -> 4113 Accept ->
4106 4114
4107 -terminate 4115 -terminate
4108 KEY_NS_POWER_OFF, (save-buffers-kill-emacs) 4116 KEY_NS_POWER_OFF, (save-buffers-kill-emacs)
4109 ns_term_shutdown() 4117 ns_term_shutdown()
@@ -4113,10 +4121,10 @@ ns_term_shutdown (int sig)
4113- (void) terminate: (id)sender 4121- (void) terminate: (id)sender
4114{ 4122{
4115 struct frame *emacsframe = SELECTED_FRAME (); 4123 struct frame *emacsframe = SELECTED_FRAME ();
4116 4124
4117 if (!emacs_event) 4125 if (!emacs_event)
4118 return; 4126 return;
4119 4127
4120 emacs_event->kind = NS_NONKEY_EVENT; 4128 emacs_event->kind = NS_NONKEY_EVENT;
4121 emacs_event->code = KEY_NS_POWER_OFF; 4129 emacs_event->code = KEY_NS_POWER_OFF;
4122 emacs_event->arg = Qt; /* mark as non-key event */ 4130 emacs_event->arg = Qt; /* mark as non-key event */
@@ -4418,7 +4426,7 @@ ns_term_shutdown (int sig)
4418 code = ([[theEvent charactersIgnoringModifiers] length] == 0) ? 4426 code = ([[theEvent charactersIgnoringModifiers] length] == 0) ?
4419 0 : [[theEvent charactersIgnoringModifiers] characterAtIndex: 0]; 4427 0 : [[theEvent charactersIgnoringModifiers] characterAtIndex: 0];
4420 /* (Carbon way: [theEvent keyCode]) */ 4428 /* (Carbon way: [theEvent keyCode]) */
4421 4429
4422 /* is it a "function key"? */ 4430 /* is it a "function key"? */
4423 fnKeysym = ns_convert_key (code); 4431 fnKeysym = ns_convert_key (code);
4424 if (fnKeysym) 4432 if (fnKeysym)
@@ -5446,7 +5454,7 @@ ns_term_shutdown (int sig)
5446 5454
5447 /* 5455 /*
5448 drawRect: may be called (at least in OS X 10.5) for invisible 5456 drawRect: may be called (at least in OS X 10.5) for invisible
5449 views as well for some reason. Thus, do not infer visibility 5457 views as well for some reason. Thus, do not infer visibility
5450 here. 5458 here.
5451 5459
5452 emacsframe->async_visible = 1; 5460 emacsframe->async_visible = 1;
diff --git a/src/print.c b/src/print.c
index 299cfd41814..29a4bfab790 100644
--- a/src/print.c
+++ b/src/print.c
@@ -1683,26 +1683,6 @@ print_object (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag
1683 { 1683 {
1684 PRINTCHAR ('('); 1684 PRINTCHAR ('(');
1685 1685
1686 /* If the first element is a backquote form,
1687 print it old-style so it won't be misunderstood. */
1688 if (print_quoted && CONSP (XCAR (obj))
1689 && CONSP (XCDR (XCAR (obj)))
1690 && NILP (XCDR (XCDR (XCAR (obj))))
1691 && EQ (XCAR (XCAR (obj)), Qbackquote))
1692 {
1693 Lisp_Object tem;
1694 tem = XCAR (obj);
1695 PRINTCHAR ('(');
1696
1697 print_object (Qbackquote, printcharfun, 0);
1698 PRINTCHAR (' ');
1699
1700 print_object (XCAR (XCDR (tem)), printcharfun, 0);
1701 PRINTCHAR (')');
1702
1703 obj = XCDR (obj);
1704 }
1705
1706 { 1686 {
1707 EMACS_INT print_length; 1687 EMACS_INT print_length;
1708 int i; 1688 int i;
@@ -1906,25 +1886,25 @@ print_object (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag
1906 if (!NILP (h->test)) 1886 if (!NILP (h->test))
1907 { 1887 {
1908 strout (" test ", -1, -1, printcharfun, 0); 1888 strout (" test ", -1, -1, printcharfun, 0);
1909 print_object (h->test, printcharfun, 0); 1889 print_object (h->test, printcharfun, escapeflag);
1910 } 1890 }
1911 1891
1912 if (!NILP (h->weak)) 1892 if (!NILP (h->weak))
1913 { 1893 {
1914 strout (" weakness ", -1, -1, printcharfun, 0); 1894 strout (" weakness ", -1, -1, printcharfun, 0);
1915 print_object (h->weak, printcharfun, 0); 1895 print_object (h->weak, printcharfun, escapeflag);
1916 } 1896 }
1917 1897
1918 if (!NILP (h->rehash_size)) 1898 if (!NILP (h->rehash_size))
1919 { 1899 {
1920 strout (" rehash-size ", -1, -1, printcharfun, 0); 1900 strout (" rehash-size ", -1, -1, printcharfun, 0);
1921 print_object (h->rehash_size, printcharfun, 0); 1901 print_object (h->rehash_size, printcharfun, escapeflag);
1922 } 1902 }
1923 1903
1924 if (!NILP (h->rehash_threshold)) 1904 if (!NILP (h->rehash_threshold))
1925 { 1905 {
1926 strout (" rehash-threshold ", -1, -1, printcharfun, 0); 1906 strout (" rehash-threshold ", -1, -1, printcharfun, 0);
1927 print_object (h->rehash_threshold, printcharfun, 0); 1907 print_object (h->rehash_threshold, printcharfun, escapeflag);
1928 } 1908 }
1929 1909
1930 strout (" data ", -1, -1, printcharfun, 0); 1910 strout (" data ", -1, -1, printcharfun, 0);
@@ -1943,9 +1923,9 @@ print_object (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag
1943 if (!NILP (HASH_HASH (h, i))) 1923 if (!NILP (HASH_HASH (h, i)))
1944 { 1924 {
1945 if (i) PRINTCHAR (' '); 1925 if (i) PRINTCHAR (' ');
1946 print_object (HASH_KEY (h, i), printcharfun, 1); 1926 print_object (HASH_KEY (h, i), printcharfun, escapeflag);
1947 PRINTCHAR (' '); 1927 PRINTCHAR (' ');
1948 print_object (HASH_VALUE (h, i), printcharfun, 1); 1928 print_object (HASH_VALUE (h, i), printcharfun, escapeflag);
1949 } 1929 }
1950 1930
1951 if (size < real_size) 1931 if (size < real_size)
diff --git a/src/xdisp.c b/src/xdisp.c
index e144237d34e..35f4859f1b3 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -23252,7 +23252,7 @@ get_specified_cursor_type (Lisp_Object arg, int *width)
23252void 23252void
23253set_frame_cursor_types (struct frame *f, Lisp_Object arg) 23253set_frame_cursor_types (struct frame *f, Lisp_Object arg)
23254{ 23254{
23255 int width; 23255 int width = 1;
23256 Lisp_Object tem; 23256 Lisp_Object tem;
23257 23257
23258 FRAME_DESIRED_CURSOR (f) = get_specified_cursor_type (arg, &width); 23258 FRAME_DESIRED_CURSOR (f) = get_specified_cursor_type (arg, &width);