From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Juanma Barranquero Newsgroups: gmane.emacs.devel Subject: Re: Lexbind (was: Emacs 23.3 released) Date: Sat, 19 Mar 2011 01:54:43 +0100 Message-ID: References: <87sjuulr20.fsf@gmail.com> <87aah2p1s1.fsf@gmail.com> <83vczhsg7l.fsf@gnu.org> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Trace: dough.gmane.org 1300496147 16304 80.91.229.12 (19 Mar 2011 00:55:47 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Sat, 19 Mar 2011 00:55:47 +0000 (UTC) Cc: monnier@iro.umontreal.ca, emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Mar 19 01:55:41 2011 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Q0kS8-00023P-5c for ged-emacs-devel@m.gmane.org; Sat, 19 Mar 2011 01:55:40 +0100 Original-Received: from localhost ([127.0.0.1]:48393 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Q0kS6-0007D5-Ex for ged-emacs-devel@m.gmane.org; Fri, 18 Mar 2011 20:55:34 -0400 Original-Received: from [140.186.70.92] (port=35934 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Q0kRz-0007Cz-NK for emacs-devel@gnu.org; Fri, 18 Mar 2011 20:55:29 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Q0kRy-0003G8-61 for emacs-devel@gnu.org; Fri, 18 Mar 2011 20:55:27 -0400 Original-Received: from mail-gx0-f169.google.com ([209.85.161.169]:63481) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Q0kRw-0003Fu-CH; Fri, 18 Mar 2011 20:55:24 -0400 Original-Received: by gxk23 with SMTP id 23so2226676gxk.0 for ; Fri, 18 Mar 2011 17:55:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-type:content-transfer-encoding; bh=04orKFKLT6tkYsIyiJ0ekTXZ2Aqt26P6zDRUDg4ciog=; b=Ui84zjtperjNxUl7PrslzAbqYgzbUQ4DEyxGjhQnWsmkWxza8jDAKrS/nhnE+PMi5x LqDeWootuMEL+vQAow0Q6nj97WwHUDYeLbERya2u2W6PIXk5yP9wjKl1KpQ+NuAaO7CT VLv0+JPVib78lmCGNRzGVESu6/rDP1CV05k3U= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type:content-transfer-encoding; b=kTSnFbJUzmUq2kJDffCprKw0D/JujmBVmV/yseCtof3fdauyppZa+lmzdTI2s1N2pk AGdSTYq92sI+bv7nvWfeD5Wrm00q2jP86eb9zkyNU0MCUYtjU5BFW1vZ3+mL3shGyqTf tQzxZQ997jnfXjOxn7eI2h+8FkLl7piHprzws= Original-Received: by 10.236.181.163 with SMTP id l23mr2437828yhm.153.1300496123141; Fri, 18 Mar 2011 17:55:23 -0700 (PDT) Original-Received: by 10.147.34.11 with HTTP; Fri, 18 Mar 2011 17:54:43 -0700 (PDT) In-Reply-To: <83vczhsg7l.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 209.85.161.169 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:137411 Archived-At: On Thu, Mar 17, 2011 at 20:24, Eli Zaretskii wrote: > It would make sense to turn off bidi reordering and see if the hangs > still happen. Yes, it hangs with bidi turned off. > Which means it loops inside try_scrolling. =C2=A0Next step is to see wher= e > it loops there, and why it doesn't return. It's looping here (in the else part, obviously): start_display (&it, w, startp); if (scroll_max < INT_MAX) move_it_vertically (&it, amount_to_scroll); else { /* Extra precision for users who set scroll-conservatively to most-positive-fixnum: make sure the amount we scroll the window start is never less than amount_to_scroll, which was computed as distance from window bottom to point. This matters when lines at window top and lines below window bottom have different height. */ struct it it1 =3D it; /* We use a temporary it1 because line_bottom_y can modify its argument, if it moves one line down; see there. */ int start_y =3D line_bottom_y (&it1); do { move_it_by_lines (&it, 1, 1); it1 =3D it; } while (line_bottom_y (&it1) - start_y < amount_to_scroll); } In my current session, line_bottom_y (&it1) =3D=3D 15, start_y =3D=3D 15, amount_to_scroll =3D=3D 15, forever and ever and ever. =C2=A0 =C2=A0 Juanma (gdb) p it $2 =3D { window =3D 55221765, w =3D 0x34a9e00, f =3D 0x343c800, method =3D GET_FROM_BUFFER, stop_charpos =3D 53, prev_stop =3D 0, base_level_stop =3D 0, end_charpos =3D 53, s =3D 0x0, string_nchars =3D 0, region_beg_charpos =3D -1, region_end_charpos =3D -1, redisplay_end_trigger_charpos =3D 0, multibyte_p =3D 1, header_line_p =3D 0, string_from_display_prop_p =3D 0, ellipsis_p =3D 0, avoid_cursor_p =3D 0, dp =3D 0x343cc00, dpvec =3D 0x0, dpend =3D 0x0, dpvec_char_len =3D 0, dpvec_face_id =3D 0, saved_face_id =3D 12, ctl_chars =3D {0 }, start =3D { pos =3D { charpos =3D 1, bytepos =3D 1 }, overlay_string_index =3D -1, string_pos =3D { charpos =3D -1, bytepos =3D -1 }, dpvec_index =3D -1 }, current =3D { pos =3D { charpos =3D 53, bytepos =3D 53 }, overlay_string_index =3D -1, string_pos =3D { charpos =3D -1, bytepos =3D -1 }, dpvec_index =3D -1 }, n_overlay_strings =3D 0, overlay_strings_charpos =3D 53, overlay_strings =3D {84671601, 0 }, string_overlays =3D {81053227, 0 }, string =3D 52250650, from_overlay =3D 0, stack =3D {{ string =3D 52250650, string_nchars =3D 0, end_charpos =3D 53, stop_charpos =3D 2, prev_stop =3D 0, base_level_stop =3D 0, cmp_it =3D { stop_pos =3D 50, id =3D -1, ch =3D -2, rule_idx =3D 0, lookback =3D 0, nglyphs =3D 0, reversed_p =3D 0, charpos =3D 0, nchars =3D 0, nbytes =3D 0, from =3D 0, to =3D 0, width =3D 0 }, face_id =3D 12, u =3D { image =3D { object =3D 0, slice =3D { x =3D 0, y =3D 0, width =3D 0, height =3D 0 }, image_id =3D 0 }, comp =3D { object =3D 0 }, stretch =3D { object =3D 0 } }, position =3D { charpos =3D 1, bytepos =3D 1 }, current =3D { pos =3D { charpos =3D 1, bytepos =3D 1 }, overlay_string_index =3D 0, string_pos =3D { charpos =3D -1, bytepos =3D -1 }, dpvec_index =3D -1 }, from_overlay =3D 0, area =3D TEXT_AREA, method =3D GET_FROM_BUFFER, multibyte_p =3D 1, string_from_display_prop_p =3D 0, display_ellipsis_p =3D 0, avoid_cursor_p =3D 0, line_wrap =3D WINDOW_WRAP, voffset =3D 0, space_width =3D 52250650, font_height =3D 52250650 }, { string =3D 0, string_nchars =3D 0, end_charpos =3D 0, stop_charpos =3D 0, prev_stop =3D 0, base_level_stop =3D 0, cmp_it =3D { stop_pos =3D 0, id =3D 0, ch =3D 0, rule_idx =3D 0, lookback =3D 0, nglyphs =3D 0, reversed_p =3D 0, charpos =3D 0, nchars =3D 0, nbytes =3D 0, from =3D 0, to =3D 0, width =3D 0 }, face_id =3D 0, u =3D { image =3D { object =3D 0, slice =3D { x =3D 0, y =3D 0, width =3D 0, height =3D 0 }, image_id =3D 0 }, comp =3D { object =3D 0 }, stretch =3D { object =3D 0 } }, position =3D { charpos =3D 0, bytepos =3D 0 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 0 }, overlay_string_index =3D 0, string_pos =3D { charpos =3D 0, bytepos =3D 0 }, dpvec_index =3D 0 }, from_overlay =3D 0, area =3D LEFT_MARGIN_AREA, method =3D GET_FROM_BUFFER, multibyte_p =3D 0, string_from_display_prop_p =3D 0, display_ellipsis_p =3D 0, avoid_cursor_p =3D 0, line_wrap =3D TRUNCATE, voffset =3D 0, space_width =3D 0, font_height =3D 0 }, { string =3D 0, string_nchars =3D 0, end_charpos =3D 0, stop_charpos =3D 0, prev_stop =3D 0, base_level_stop =3D 0, cmp_it =3D { stop_pos =3D 0, id =3D 0, ch =3D 0, rule_idx =3D 0, lookback =3D 0, nglyphs =3D 0, reversed_p =3D 0, charpos =3D 0, nchars =3D 0, nbytes =3D 0, from =3D 0, to =3D 0, width =3D 0 }, face_id =3D 0, u =3D { image =3D { object =3D 0, slice =3D { x =3D 0, y =3D 0, width =3D 0, height =3D 0 }, image_id =3D 0 }, comp =3D { object =3D 0 }, stretch =3D { object =3D 0 } }, position =3D { charpos =3D 0, bytepos =3D 0 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 0 }, overlay_string_index =3D 0, string_pos =3D { charpos =3D 0, bytepos =3D 0 }, dpvec_index =3D 0 }, from_overlay =3D 0, area =3D LEFT_MARGIN_AREA, method =3D GET_FROM_BUFFER, multibyte_p =3D 0, string_from_display_prop_p =3D 0, display_ellipsis_p =3D 0, avoid_cursor_p =3D 0, line_wrap =3D TRUNCATE, voffset =3D 0, space_width =3D 0, font_height =3D 0 }, { string =3D 0, string_nchars =3D 0, end_charpos =3D 0, stop_charpos =3D 0, prev_stop =3D 0, base_level_stop =3D 0, cmp_it =3D { stop_pos =3D 0, id =3D 0, ch =3D 0, rule_idx =3D 0, lookback =3D 0, nglyphs =3D 0, reversed_p =3D 0, charpos =3D 0, nchars =3D 0, nbytes =3D 0, from =3D 0, to =3D 0, width =3D 0 }, face_id =3D 0, u =3D { image =3D { object =3D 0, slice =3D { x =3D 0, y =3D 0, width =3D 0, height =3D 0 }, image_id =3D 0 }, comp =3D { object =3D 0 }, stretch =3D { object =3D 0 } }, position =3D { charpos =3D 0, bytepos =3D 0 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 0 }, overlay_string_index =3D 0, string_pos =3D { charpos =3D 0, bytepos =3D 0 }, dpvec_index =3D 0 }, from_overlay =3D 0, area =3D LEFT_MARGIN_AREA, method =3D GET_FROM_BUFFER, multibyte_p =3D 0, string_from_display_prop_p =3D 0, display_ellipsis_p =3D 0, avoid_cursor_p =3D 0, line_wrap =3D TRUNCATE, voffset =3D 0, space_width =3D 0, font_height =3D 0 }, { string =3D 0, string_nchars =3D 0, end_charpos =3D 0, stop_charpos =3D 0, prev_stop =3D 0, base_level_stop =3D 0, cmp_it =3D { stop_pos =3D 0, id =3D 0, ch =3D 0, rule_idx =3D 0, lookback =3D 0, nglyphs =3D 0, reversed_p =3D 0, charpos =3D 0, nchars =3D 0, nbytes =3D 0, from =3D 0, to =3D 0, width =3D 0 }, face_id =3D 0, u =3D { image =3D { object =3D 0, slice =3D { x =3D 0, y =3D 0, width =3D 0, height =3D 0 }, image_id =3D 0 }, comp =3D { object =3D 0 }, stretch =3D { object =3D 0 } }, position =3D { charpos =3D 0, bytepos =3D 0 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 0 }, overlay_string_index =3D 0, string_pos =3D { charpos =3D 0, bytepos =3D 0 }, dpvec_index =3D 0 }, from_overlay =3D 0, area =3D LEFT_MARGIN_AREA, method =3D GET_FROM_BUFFER, multibyte_p =3D 0, string_from_display_prop_p =3D 0, display_ellipsis_p =3D 0, avoid_cursor_p =3D 0, line_wrap =3D TRUNCATE, voffset =3D 0, space_width =3D 0, font_height =3D 0 }}, sp =3D 0, selective =3D 0, what =3D IT_EOB, face_id =3D 0, selective_display_ellipsis_p =3D 1, ctl_arrow_p =3D 1, face_box_p =3D 0, start_of_box_run_p =3D 0, end_of_box_run_p =3D 0, overlay_strings_at_end_processed_p =3D 1, ignore_overlay_strings_at_pos_p =3D 0, glyph_not_available_p =3D 0, starts_in_middle_of_char_p =3D 0, face_before_selective_p =3D 0, constrain_row_ascent_descent_p =3D 0, line_wrap =3D WINDOW_WRAP, base_face_id =3D 0, c =3D 101, len =3D 1, cmp_it =3D { stop_pos =3D 50, id =3D -1, ch =3D -2, rule_idx =3D 0, lookback =3D 0, nglyphs =3D 0, reversed_p =3D 0, charpos =3D 0, nchars =3D 0, nbytes =3D 0, from =3D 0, to =3D 0, width =3D 0 }, char_to_display =3D 101, glyphless_method =3D GLYPHLESS_DISPLAY_THIN_SPACE, image_id =3D 0, slice =3D { x =3D 52250650, y =3D 52250650, width =3D 52250650, height =3D 52250650 }, space_width =3D 52250650, voffset =3D 0, tab_width =3D 8, font_height =3D 52250650, object =3D 80814597, position =3D { charpos =3D 53, bytepos =3D 53 }, truncation_pixel_width =3D 0, continuation_pixel_width =3D 0, first_visible_x =3D 0, last_visible_x =3D 928, last_visible_y =3D 15, extra_line_spacing =3D 0, max_extra_line_spacing =3D 0, override_ascent =3D -1, override_descent =3D 0, override_boff =3D 0, glyph_row =3D 0x4ce0800, area =3D TEXT_AREA, nglyphs =3D 1, pixel_width =3D 8, ascent =3D 12, descent =3D 3, max_ascent =3D 12, max_descent =3D 3, phys_ascent =3D 12, phys_descent =3D 3, max_phys_ascent =3D 12, max_phys_descent =3D 3, current_x =3D 432, continuation_lines_width =3D 0, eol_pos =3D { charpos =3D 0, bytepos =3D 0 }, current_y =3D 0, first_vpos =3D 0, vpos =3D 0, hpos =3D 54, left_user_fringe_bitmap =3D 0, right_user_fringe_bitmap =3D 0, left_user_fringe_face_id =3D 0, right_user_fringe_face_id =3D 0, bidi_p =3D 0, bidi_it =3D { bytepos =3D 0, charpos =3D 0, ch =3D 0, ch_len =3D 0, type =3D UNKNOWN_BT, type_after_w1 =3D UNKNOWN_BT, orig_type =3D UNKNOWN_BT, resolved_level =3D 0, invalid_levels =3D 0, invalid_rl_levels =3D 0, prev_was_pdf =3D 0, prev =3D { bytepos =3D 0, charpos =3D 0, type =3D UNKNOWN_BT, type_after_w1 =3D UNKNOWN_BT, orig_type =3D UNKNOWN_BT }, last_strong =3D { bytepos =3D 0, charpos =3D 0, type =3D UNKNOWN_BT, type_after_w1 =3D UNKNOWN_BT, orig_type =3D UNKNOWN_BT }, next_for_neutral =3D { bytepos =3D 0, charpos =3D 0, type =3D UNKNOWN_BT, type_after_w1 =3D UNKNOWN_BT, orig_type =3D UNKNOWN_BT }, prev_for_neutral =3D { bytepos =3D 0, charpos =3D 0, type =3D UNKNOWN_BT, type_after_w1 =3D UNKNOWN_BT, orig_type =3D UNKNOWN_BT }, next_for_ws =3D { bytepos =3D 0, charpos =3D 0, type =3D UNKNOWN_BT, type_after_w1 =3D UNKNOWN_BT, orig_type =3D UNKNOWN_BT }, next_en_pos =3D 0, ignore_bn_limit =3D 0, sor =3D NEUTRAL_DIR, scan_dir =3D 0, stack_idx =3D 0, level_stack =3D {{ level =3D 0, override =3D NEUTRAL_DIR } }, first_elt =3D 0, paragraph_dir =3D NEUTRAL_DIR, new_paragraph =3D 0, separator_limit =3D 0 }, paragraph_embedding =3D NEUTRAL_DIR } (gdb) n 13129 it1 =3D it; (gdb) n 13130 } while (line_bottom_y (&it1) - start_y < amount_to_scrol= l); (gdb) p start_y $3 =3D 15 (gdb) p amount_to_scroll $4 =3D 15 (gdb) p line_bottom_y (&it1) $5 =3D 15 (gdb) n 13128 move_it_by_lines (&it, 1, 1); (gdb) 13129 it1 =3D it; (gdb) 13130 } while (line_bottom_y (&it1) - start_y < amount_to_scrol= l); (gdb) 13128 move_it_by_lines (&it, 1, 1); (gdb) 13129 it1 =3D it; (gdb) 13130 } while (line_bottom_y (&it1) - start_y < amount_to_scrol= l); (gdb) p line_bottom_y (&it1) $6 =3D 15 (gdb)