From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.devel Subject: Re: "... the window start at a meaningless point within a line." Date: Fri, 16 Oct 2015 21:36:10 +0300 Message-ID: <83612664px.fsf@gnu.org> References: <20150930204513.GA3174@acm.fritz.box> <83mvw39dp3.fsf@gnu.org> <20151001094138.GA2515@acm.fritz.box> <83h9maao7w.fsf@gnu.org> <20151001110204.GB2515@acm.fritz.box> <83egheaj9e.fsf@gnu.org> <20151015181642.GA6467@acm.fritz.box> <834mhr99e8.fsf@gnu.org> <20151016095535.GA2779@acm.fritz.box> <83a8ri67jg.fsf@gnu.org> <20151016181249.GC2779@acm.fritz.box> <837fmm65bl.fsf@gnu.org> Reply-To: Eli Zaretskii NNTP-Posting-Host: plane.gmane.org X-Trace: ger.gmane.org 1445020590 32558 80.91.229.3 (16 Oct 2015 18:36:30 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 16 Oct 2015 18:36:30 +0000 (UTC) Cc: emacs-devel@gnu.org To: acm@muc.de Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Oct 16 20:36:24 2015 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Zn9rZ-0000Ks-Ay for ged-emacs-devel@m.gmane.org; Fri, 16 Oct 2015 20:36:21 +0200 Original-Received: from localhost ([::1]:55390 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zn9rY-0001kD-Fn for ged-emacs-devel@m.gmane.org; Fri, 16 Oct 2015 14:36:20 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:38041) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zn9rT-0001iF-EN for emacs-devel@gnu.org; Fri, 16 Oct 2015 14:36:16 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Zn9rN-0005IW-IH for emacs-devel@gnu.org; Fri, 16 Oct 2015 14:36:15 -0400 Original-Received: from mtaout21.012.net.il ([80.179.55.169]:52889) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zn9rN-0005IN-9U for emacs-devel@gnu.org; Fri, 16 Oct 2015 14:36:09 -0400 Original-Received: from conversion-daemon.a-mtaout21.012.net.il by a-mtaout21.012.net.il (HyperSendmail v2007.08) id <0NWB00G00S43O300@a-mtaout21.012.net.il> for emacs-devel@gnu.org; Fri, 16 Oct 2015 21:36:08 +0300 (IDT) Original-Received: from HOME-C4E4A596F7 ([84.94.185.246]) by a-mtaout21.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0NWB00GQZT07LM70@a-mtaout21.012.net.il>; Fri, 16 Oct 2015 21:36:07 +0300 (IDT) In-reply-to: <837fmm65bl.fsf@gnu.org> X-012-Sender: halo1@inter.net.il X-detected-operating-system: by eggs.gnu.org: Solaris 10 X-Received-From: 80.179.55.169 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:191784 Archived-At: > Date: Fri, 16 Oct 2015 21:23:10 +0300 > From: Eli Zaretskii > Cc: emacs-devel@gnu.org > > . compute the horizontal difference, in pixels, between the position > which xdisp would use as window-start and the actual window-start > (the value should always be positive); let's call the result N > > . let Fvertical_motion do its thing exactly as it does now > > . move N more pixels to the right, i.e. in the direction of > increasing the X coordinate, or to the end of line, if it ends > before that coordinate > > If this should work, then all you need is to implement the 1st bullet, > which is very easy, nothing as complicated as your > maybe_move_to_exact_bol. It should just call move_it_in_display_line > to get to the actual window-start, and save the X coordinate wehen it > gets there. Btw, it might be a good idea to store the offset between the two window-start points as part of the window structure, instead of storing just the flag. The value of the offset will have to be recomputed whenever text is scrolled or the window dimensions change, but I suspect you recompute it in those situations anyway, so all you need to add is a primitive that stores the value. Then the 1st bullet above doesn't need to be implemented at all, you just need to use the value stored in w->window_start_offset in the 3rd bullet. Does this make sense?