[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: address@hidden: Cursor placement with mouse in long lines with wrapp
From: |
Chong Yidong |
Subject: |
Re: address@hidden: Cursor placement with mouse in long lines with wrapped tab] |
Date: |
Thu, 30 Nov 2006 13:33:44 -0500 |
User-agent: |
Gnus/5.11 (Gnus v5.11) Emacs/22.0.91 (gnu/linux) |
> When I try to set the cursor via mouse-1 on a long line that wraps in a tab
> character, the placement is off by a few characters depending on the number
> of columns of the emacs frame.
I think this is a bug in move_it_to. When a line ends in a tab, some
of the glyphs associated with the tab are displayed on the current
line, and some may be displayed on the next. In move_it_to, we call
move_it_in_display_line_to to move to an x position, check if the
y-position has been reached, and go to the next line if it hasn't.
For continued lines ending in a tab, at the end of
move_it_in_display_line_to the value of it->current_x is the x-value
of the beginning of the final tab, and does not include those tab
glyphs displayed on this line. This causes the algorithm to get
confused.
I propose the following patch. I think it shouldn't cause any harm in
other situations, but could someone please review it?
*** emacs/src/xdisp.c.~1.1130.~ 2006-11-26 16:47:55.000000000 -0500
--- emacs/src/xdisp.c 2006-11-30 13:27:12.000000000 -0500
***************
*** 6828,6834 ****
break;
case MOVE_LINE_CONTINUED:
! it->continuation_lines_width += it->current_x;
break;
default:
--- 6828,6834 ----
break;
case MOVE_LINE_CONTINUED:
! it->continuation_lines_width += it->last_visible_x;
break;
default: