>>>>> On Sun, 27 May 2007 19:21:28 -0400, Richard Stallman <[EMAIL PROTECTED]> >>>>> said:
> Where is the actual call to `current_column' for which you > specifically want to bind this? Could you bind > Qinhibit_point_motion_hooks for just that? I meant the only direct call to `current_column' from redisplay_internal: /* If %c is in the mode line, update it if needed. */ if (!NILP (w->column_number_displayed) /* This alternative quickly identifies a common case where no change is needed. */ && !(PT == XFASTINT (w->last_point) && XFASTINT (w->last_modified) >= MODIFF && XFASTINT (w->last_overlay_modified) >= OVERLAY_MODIFF) && (XFASTINT (w->column_number_displayed) != (int) current_column ())) /* iftc */ w->update_mode_line = Qt; and as I said, binding Qinhibit_point_motion_hooks just around this part as the following patch also works for me on Mac OS X. Could someone check if this works on Windows for the original problem? Index: src/xdisp.c =================================================================== RCS file: /cvsroot/emacs/emacs/src/xdisp.c,v retrieving revision 1.1149.2.2 diff -c -p -r1.1149.2.2 xdisp.c *** src/xdisp.c 24 May 2007 23:21:32 -0000 1.1149.2.2 --- src/xdisp.c 28 May 2007 00:33:00 -0000 *************** redisplay_internal (preserve_echo_area) *** 10836,10842 **** int must_finish = 0; struct text_pos tlbufpos, tlendpos; int number_of_visible_frames; ! int count; struct frame *sf; int polling_stopped_here = 0; --- 10836,10842 ---- int must_finish = 0; struct text_pos tlbufpos, tlendpos; int number_of_visible_frames; ! int count, count1; struct frame *sf; int polling_stopped_here = 0; *************** redisplay_internal (preserve_echo_area) *** 10974,10979 **** --- 10974,10983 ---- update_mode_lines++; } + /* Avoid invocation of point motion hooks by `current_column' below. */ + count1 = SPECPDL_INDEX (); + specbind (Qinhibit_point_motion_hooks, Qt); + /* If %c is in the mode line, update it if needed. */ if (!NILP (w->column_number_displayed) /* This alternative quickly identifies a common case *************** redisplay_internal (preserve_echo_area) *** 10985,10990 **** --- 10989,10996 ---- != (int) current_column ())) /* iftc */ w->update_mode_line = Qt; + unbind_to (count1, Qnil); + FRAME_SCROLL_BOTTOM_VPOS (XFRAME (w->frame)) = -1; /* The variable buffer_shared is set in redisplay_window and > Or what about binding it in `current_column_1'? Maybe that is the > right thing to do. Sorry, I'm afraid I'm not familiar enough with this matter. YAMAMOTO Mitsuharu [EMAIL PROTECTED] _______________________________________________ emacs-pretest-bug mailing list emacs-pretest-bug@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-pretest-bug