GNU bug report logs - #62048
30.0.50; Non-nil `line-spacing' takes precendence over 'line-height t text property

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: emacs; Reported by: Ihor Radchenko <yantar92@HIDDEN>; dated Wed, 8 Mar 2023 12:18:01 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.

Message received at 62048 <at> debbugs.gnu.org:


Received: (at 62048) by debbugs.gnu.org; 11 Mar 2023 12:29:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Mar 11 07:29:16 2023
Received: from localhost ([127.0.0.1]:56728 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1payLb-0006ll-Nb
	for submit <at> debbugs.gnu.org; Sat, 11 Mar 2023 07:29:16 -0500
Received: from eggs.gnu.org ([209.51.188.92]:57460)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1payLZ-0006lY-Dt
 for 62048 <at> debbugs.gnu.org; Sat, 11 Mar 2023 07:29:14 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1payLT-0003Mb-Cs; Sat, 11 Mar 2023 07:29:08 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=VwCSZTkvQHQ1ArGXyMkP2Nk1ow7VujPopuhEwDTY8YE=; b=ZgLglGmltIxG9VeAlNJ+
 pfvERgBc8WiclJTMM0W50sp2uBWEk9SYAhdORfuNA9sU6FzgdxdX6GoOHZMqMutwQUWHQsWINlGdE
 2ApB0MXjnYXfFejy59PG97n6OYuH6/y4zuhmQ72hc/vjNpiinf+x4F5mbv2/V2nVz/dsHLo6Ivev7
 GwO1ad5+tpOsIrpY5gjZy+QQuBD1zhfDSYM4ZgCyJ5EcfDfug8wCvBov+YEFhyD3fDf10Ig+r9bjm
 hDv+w9cK6r6nqOXoM85Kb9XAkA+wIvBEsWcTKS4t/4uFS+h7rREWxbuA30B4UbRTLyTM/pELABByQ
 rjmNv1pGCGCXEA==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1payLR-0006H0-3o; Sat, 11 Mar 2023 07:29:06 -0500
Date: Sat, 11 Mar 2023 14:28:51 +0200
Message-Id: <83pm9fwjy4.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
In-Reply-To: <87r0tvwnl9.fsf@localhost> (message from Ihor Radchenko on Sat,
 11 Mar 2023 11:10:10 +0000)
Subject: Re: bug#62048: 30.0.50; Non-nil `line-spacing' takes precendence
 over 'line-height t text property
References: <87ilfbe8r0.fsf@localhost> <83a60n40an.fsf@HIDDEN>
 <87y1o7cd6a.fsf@localhost> <834jqv3tv3.fsf@HIDDEN>
 <87v8jbc70u.fsf@localhost> <83v8ja2z4d.fsf@HIDDEN>
 <87sfeecmom.fsf@localhost> <83edpy2r3x.fsf@HIDDEN>
 <87o7p2chyq.fsf@localhost> <83zg8m15n5.fsf@HIDDEN> <87r0tvwnl9.fsf@localhost>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 62048
Cc: 62048 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Ihor Radchenko <yantar92@HIDDEN>
> Cc: 62048 <at> debbugs.gnu.org
> Date: Sat, 11 Mar 2023 11:10:10 +0000
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> >> Observed: top of the image is displayed
> >> Expected: bottom of the image is partially revealed
> >
> > I don't understand the expectation.  Scrolling by vscroll only happens
> > when before the scroll some part of the image is visible, which is not
> > what happens here.
> >
> > If you want to change that, feel free to hack on the code in
> > simple.el, but there was no intent to cover this particular use case,
> > and the code is already quite complicated (to say the least).
> > ...
> > You should always keep in mind that Emacs has no idea about what's
> > beyond the window, for display purposes.  There's no way of saying
> > whether a given 'display property whose value is an image spec will be
> > taller than the window, except by actually displaying that image (or
> > at least simulating the display internally).  So you expect something
> > that it is far from easy to do.
> >
> > Scrolling commands were never meant to allow smooth scrolling through
> > tall screen lines.
> 
> What if the code instead tries to vscroll standard line height first and
> only then decide if we want to scroll further, displaying tall line?

You mean, use vscroll even for lines whose height is the same as the
default font?  That'd be a waste, no?

And how do you propose to "decide if we want to scroll further"?

> > What do you want to customize, and in what terms?
> 
> I was referring to
> 
> >> 	      (if (and (< arg 0)
> >> 		       (< (point) (window-start))
> >> 		       (> lh winh))
> >> 		  (set-window-vscroll
> >> 		   nil
> >> 		   (- lh dlh) t)))
> 
> May we allow users to customize ~(> lh winh)~ condition?

I don't mind, but make sure some other place in this set of twisty
little passages don't assume we test against the window's height.

> Also, on the initial report. Is it possible to increase default
> buffer-wise line-spacing via text property? (AFAIU, decreasing is
> impossible).

The mechanism for overriding doesn't depend on the value, it depends
on the hierarchy of settings, as the ELisp manual describes.  When the
manual says "However, no matter what you specify, the actual line
height can never be less than the default", it means the default
height described in the previous paragraph:

     The height of the line contents is the maximum height of any
  character or image on that display line, including the final newline if
  there is one.  (A display line that is continued doesn’t include a final
  newline.)  That is the default line height, if you do nothing to specify
  a greater height.  (In the most common case, this equals the height of
  the corresponding frame’s default font, see *note Frame Font::.)




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#62048; Package emacs. Full text available.

Message received at 62048 <at> debbugs.gnu.org:


Received: (at 62048) by debbugs.gnu.org; 11 Mar 2023 11:08:52 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Mar 11 06:08:52 2023
Received: from localhost ([127.0.0.1]:56627 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pax5o-000207-2x
	for submit <at> debbugs.gnu.org; Sat, 11 Mar 2023 06:08:52 -0500
Received: from mout01.posteo.de ([185.67.36.65]:56125)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1pax5l-0001zu-Sw
 for 62048 <at> debbugs.gnu.org; Sat, 11 Mar 2023 06:08:50 -0500
Received: from submission (posteo.de [185.67.36.169]) 
 by mout01.posteo.de (Postfix) with ESMTPS id 04F442402EA
 for <62048 <at> debbugs.gnu.org>; Sat, 11 Mar 2023 12:08:41 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1678532924; bh=0wQwFGrbrGSAklzwxmUxPnMuea/4dePmxLdeJSC1RP8=;
 h=From:To:Cc:Subject:Date:From;
 b=SVNISmQLC8KpWH4T5XHTfHNyHCDqVJC9d3mWzQ0hfqgluVe7pzmLiYvSoGZ1hGfH7
 lBuUfPS/DsNlfn86CwFbT26g3jyPT+kx+Vj7sAhT3/djlpDuCaQnuB8Mtv2YilJEry
 n7xOuK05CHoOZ4Zecev5SZKAbjXWE2nXNLuAr8H7UOwODFZomGFTMtXIjULp8IG7DO
 KO3Tas8q1YQGNgAL62g0jRXQudcFRpcduOhFTwGWOYeMZiWTMGHs1DDtqXGt4OA+kX
 c+MVlcbUOaTk7sbvP2IkjKoe5vRbKii/31DaFMb156ulddeTIqMoFyY7X2cuRpV3LR
 Az2MtDQcFqISA==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4PYgCD5J9Wz6tqt;
 Sat, 11 Mar 2023 12:08:40 +0100 (CET)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#62048: 30.0.50; Non-nil `line-spacing' takes precendence
 over 'line-height t text property
In-Reply-To: <83zg8m15n5.fsf@HIDDEN>
References: <87ilfbe8r0.fsf@localhost> <83a60n40an.fsf@HIDDEN>
 <87y1o7cd6a.fsf@localhost> <834jqv3tv3.fsf@HIDDEN>
 <87v8jbc70u.fsf@localhost> <83v8ja2z4d.fsf@HIDDEN>
 <87sfeecmom.fsf@localhost> <83edpy2r3x.fsf@HIDDEN>
 <87o7p2chyq.fsf@localhost> <83zg8m15n5.fsf@HIDDEN>
Date: Sat, 11 Mar 2023 11:10:10 +0000
Message-ID: <87r0tvwnl9.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 62048
Cc: 62048 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

>> Observed: top of the image is displayed
>> Expected: bottom of the image is partially revealed
>
> I don't understand the expectation.  Scrolling by vscroll only happens
> when before the scroll some part of the image is visible, which is not
> what happens here.
>
> If you want to change that, feel free to hack on the code in
> simple.el, but there was no intent to cover this particular use case,
> and the code is already quite complicated (to say the least).
> ...
> You should always keep in mind that Emacs has no idea about what's
> beyond the window, for display purposes.  There's no way of saying
> whether a given 'display property whose value is an image spec will be
> taller than the window, except by actually displaying that image (or
> at least simulating the display internally).  So you expect something
> that it is far from easy to do.
>
> Scrolling commands were never meant to allow smooth scrolling through
> tall screen lines.

What if the code instead tries to vscroll standard line height first and
only then decide if we want to scroll further, displaying tall line?

> What do you want to customize, and in what terms?

I was referring to

>> 	      (if (and (< arg 0)
>> 		       (< (point) (window-start))
>> 		       (> lh winh))
>> 		  (set-window-vscroll
>> 		   nil
>> 		   (- lh dlh) t)))

May we allow users to customize ~(> lh winh)~ condition?
By providing a custom setting that will determine the threshold for
partial scroll: `line-move-height-threshold'. The default value will be
'window making lines taller than window height to trigger partial
scroll. Alternative values could be a subset of pixel specs, like (NUM)
or (X . UNIT).

Also, on the initial report. Is it possible to increase default
buffer-wise line-spacing via text property? (AFAIU, decreasing is
impossible).

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#62048; Package emacs. Full text available.

Message received at 62048 <at> debbugs.gnu.org:


Received: (at 62048) by debbugs.gnu.org; 9 Mar 2023 12:17:09 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Mar 09 07:17:09 2023
Received: from localhost ([127.0.0.1]:51087 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1paFCm-0003NM-LY
	for submit <at> debbugs.gnu.org; Thu, 09 Mar 2023 07:17:09 -0500
Received: from eggs.gnu.org ([209.51.188.92]:35028)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1paFCk-0003Ml-0X
 for 62048 <at> debbugs.gnu.org; Thu, 09 Mar 2023 07:17:07 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1paFCe-0004Y7-6A; Thu, 09 Mar 2023 07:17:00 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=TH9OGq7xNehIzmznnQbHwAuJbUVNqgFVZUtnfMPCmWQ=; b=WsmPZyYiyT0T
 GSRvEEFzFvtE4KO4UktW+A+XufSuaPZ8IX0XQkWgN1tpvBZrQKWtcUDsF7LXLbnC6hDc05zWkpg9X
 3vbc3fE2FFbEhLWNDWZHAA0HMaII5z1uVGHhwBaWKpZDXBRLaPNRZZYoydhUZw1P5vTZfQggPM1J5
 ch3+B6u0mbT8JZiNPHNGss0gzhZ9vaT5Xa6caBriwkB0OJM1w++F6dFyTsnOa5OYB8SknhzQJ2pHE
 mZw5WgOEKf/+ciKvvLiP4X+oTvDdT31xjErxvwwqFG00VfshZcXKVEkFHT1N0TxNLXPBNm/tOBo6X
 Z2/D9Ykr8l6pUtQh9lQ4uQ==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1paFCV-00030A-OZ; Thu, 09 Mar 2023 07:16:59 -0500
Date: Thu, 09 Mar 2023 14:16:46 +0200
Message-Id: <83zg8m15n5.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
In-Reply-To: <87o7p2chyq.fsf@localhost> (message from Ihor Radchenko on Thu,
 09 Mar 2023 10:55:09 +0000)
Subject: Re: bug#62048: 30.0.50; Non-nil `line-spacing' takes precendence
 over 'line-height t text property
References: <87ilfbe8r0.fsf@localhost> <83a60n40an.fsf@HIDDEN>
 <87y1o7cd6a.fsf@localhost> <834jqv3tv3.fsf@HIDDEN>
 <87v8jbc70u.fsf@localhost> <83v8ja2z4d.fsf@HIDDEN>
 <87sfeecmom.fsf@localhost> <83edpy2r3x.fsf@HIDDEN> <87o7p2chyq.fsf@localhost>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 62048
Cc: 62048 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Ihor Radchenko <yantar92@HIDDEN>
> Cc: 62048 <at> debbugs.gnu.org
> Date: Thu, 09 Mar 2023 10:55:09 +0000
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> >> Interesting. I did not notice this because this feature only manifests
> >> itself on really tall images. The images that are about screen height
> >> still feel jumpy.
> >
> > AFAIU the code, this is intentional: the goal of using vscroll in
> > C-n/C-p is to make sure the user can see all the parts of the tall
> > image.  Smooth scrolling is not the goal; if you want that, try
> > pixel-scroll-precision-mode.
> 
> I do use pixel-scroll-precision-mode myself. However, it only works with
> a mouse - not the most common interaction model with Emacs.
> 
> Further, the comment on top of `line-move' implies that it already
> performs a mixed role.
>     
>     ;; This is like line-move-1 except that it also performs
>     ;; vertical scrolling of tall images if appropriate.
>     ;; That is not really a clean thing to do, since it mixes
>     ;; scrolling with cursor motion.  But so far we don't have
>     ;; a cleaner solution to the problem of making C-n do something
>     ;; useful given a tall image.
> 
>     Documentation
>     Move forward ARG lines.
>     
>     If NOERROR, don't signal an error if we can't move ARG lines.
>     TO-END is unused.
>     TRY-VSCROLL controls whether to vscroll tall lines: if either
>     auto-window-vscroll or TRY-VSCROLL is nil, this function will
>     not vscroll.
> 
> So, smooth scrolling is partially a goal, de facto.

No, it isn't: the doc string never says anything about smooth
scrolling (and if it did, that would be a lie).  Also note the "if
appropriate" part.

> >> 2. Scrolling a very tall image with mouse https://0x0.st/Hibk.mkv
> >>    - Unexpectedly, most of the tall image is skipped upon mouse scroll.
> >>      Bug?
> >
> > I cannot reproduce this on my system, using drawing.svg you posted and
> > another large image I have here.  Mouse scrolls behave for me like
> > C-n/C-p does.
> 
> Exact steps:
> 1. emacs -Q
> 2. M-: (with-silent-modifications (insert-sliced-image (create-image "~/Downloads/drawing.svg")))
> 3. scroll up with mouse
> Observed: top of the image is displayed
> Expected: bottom of the image is partially revealed

I don't understand the expectation.  Scrolling by vscroll only happens
when before the scroll some part of the image is visible, which is not
what happens here.

If you want to change that, feel free to hack on the code in
simple.el, but there was no intent to cover this particular use case,
and the code is already quite complicated (to say the least).

> I can sometimes observe similar issue when scrolling across an image in
> other scenarios. I have a feeling that scrolling is always done properly
> when the point is on image line right before mouse scrolling. When point
> is on other lines, I sometimes see unexpected jumps of even a hang (C-g
> works).

You should always keep in mind that Emacs has no idea about what's
beyond the window, for display purposes.  There's no way of saying
whether a given 'display property whose value is an image spec will be
taller than the window, except by actually displaying that image (or
at least simulating the display internally).  So you expect something
that it is far from easy to do.

Scrolling commands were never meant to allow smooth scrolling through
tall screen lines.

> >> 3. Scrolling a near-screen tall image with C-n/C-p https://0x0.st/Hibn.mkv
> >>    - Note how the image goes across the screen in just a few "jumps"
> >>      (C-n strokes). This is the commonly observed behaviour in the images
> >>      I often deal with. Probably something to do with what initial
> >>      half-screen jump in (1).
> >
> > If it jumps after all the portions of the image have been seen, and
> > the last portion is completely visible, that's the intended behavior.
> 
> Sure. Can it be made customizable?

What do you want to customize, and in what terms?

> >>      I think that jumping half screen at the beginning/end of the image
> >>      is too drastic, especially for images near as tall as screen
> >>      height. It would help if this behaviour is fixed or made
> >>      customizable.
> >
> > That's because you expect something C-n/C-p weren't programmed to do,
> > see above.  If someone wants to work on making the scrolling more
> > smooth, I won't object, but the current code doesn't try to provide
> > smooth scrolling, only a chance to see the whole image part by part.
> 
> Is all the relevant code in `line-move'?

That in line-move-partial, AFAIR.

> I had difficulties with debugging `line-move' because debugger
> performs redisplay and I see image scrolled half-way even before
> entering `line-move' in the debugger.

Welcome to the club.  printf (a.k.a. "message") debugging is your
friend.

> > Please don't forget:
> >
> >   . The code in C-n/C-p that scrolls partially is not only for tall
> >     images, it is also for tall text (try using a very large font for
> >     some face or part of the buffer text).  The relevant parts of
> >     Emacs treat tall screen lines the same no matter what caused the
> >     large height, whether an image or some tall text.
> 
> Sure. But if we are talking about this much tall text, human eye will
> treat it as an image anyway. I see no problem with preferring more
> smooth scrolling here.

We are mis-communicating: I actually meant the situation where the
text is taller than the default, but not too tall.

I also disagree with your assessment of what the human eye will do: I
think that is only true if what you see in a single window-full is
illegible (because the text is too tall or the window too small in
height).  In all other cases, the human eye has no problem reading the
text if, for example, the window shows 3/4 of the text.  Images are
different in this respect.

> >   . The code in C-n/C-p needs to strike a fine balance between smooth
> >     scrolling and user expectation that text that is not too large be
> >     scrolled one line at a time, i.e. that you won't need several
> >     C-n/C-p key strokes to move the display by a single screen line.
> >     As image height goes smaller and smaller, at some point it is
> >     reasonable to expect that a single C-n/C-p will scroll across the
> >     entire line which contains the image, not just some part of that
> >     line.  The question is where to draw the line (pun intended); the
> >     code has some heuristic regarding that.
> 
> Are you referring to the follow excerpt from `line-move':
> 
> 	    ;; If we moved into a tall line, set vscroll to make
> 	    ;; scrolling through tall images more smooth.
> 	    (let ((lh (line-pixel-height))
> 		  (edges (window-inside-pixel-edges))
> 		  (dlh (default-line-height))
> 		  winh)
> 	      (setq winh (- (nth 3 edges) (nth 1 edges) 1))
> 	      (if (and (< arg 0)
> 		       (< (point) (window-start))
> 		       (> lh winh))
> 		  (set-window-vscroll
> 		   nil
> 		   (- lh dlh) t)))

There's a similar code in line-move-partial as well.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#62048; Package emacs. Full text available.

Message received at 62048 <at> debbugs.gnu.org:


Received: (at 62048) by debbugs.gnu.org; 9 Mar 2023 10:53:53 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Mar 09 05:53:53 2023
Received: from localhost ([127.0.0.1]:51048 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1paDuC-0000hH-Ih
	for submit <at> debbugs.gnu.org; Thu, 09 Mar 2023 05:53:53 -0500
Received: from mout01.posteo.de ([185.67.36.65]:36879)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1paDu9-0000gz-Ji
 for 62048 <at> debbugs.gnu.org; Thu, 09 Mar 2023 05:53:50 -0500
Received: from submission (posteo.de [185.67.36.169]) 
 by mout01.posteo.de (Postfix) with ESMTPS id 5E1CE240066
 for <62048 <at> debbugs.gnu.org>; Thu,  9 Mar 2023 11:53:43 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1678359223; bh=ZKTR9yOqcSV/TWdLA9nqSGRgVozIxRkVvXlANuaqXi0=;
 h=From:To:Cc:Subject:Date:From;
 b=IKmdaHhcsHSxzoWy1HVDq8HJbV0ylwfj/7RYJwr+WfCWCxEDsbaa71AH17ayucY1W
 FHQ8AOORgO0g9HuvuyPWeBiRlJSpSbmDl6lSbrZ3PngVPhvzl4X2YBucNEzg5GYX9L
 JOhNVCnHoKDGyb9c1itlCMkF1Vsj6T2xRr0jFFaiSHoRlkonGWEIqNVLDgqVBMK9QG
 idd1KJaGnzch13SZtV/iGr+96+ER48Xmu9ia7xMRlBv3COvLHhWh9vkH//mrrcjk42
 jL6Rsrexvujv5y6KqZxb5ZnMX2kSSD8dAXQqTcNeTYn8hoM1LHrsGOoQ2xbEoGtcUy
 enTC/noNwiKIg==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4PXQyt4tPRz9rxD;
 Thu,  9 Mar 2023 11:53:41 +0100 (CET)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#62048: 30.0.50; Non-nil `line-spacing' takes precendence
 over 'line-height t text property
In-Reply-To: <83edpy2r3x.fsf@HIDDEN>
References: <87ilfbe8r0.fsf@localhost> <83a60n40an.fsf@HIDDEN>
 <87y1o7cd6a.fsf@localhost> <834jqv3tv3.fsf@HIDDEN>
 <87v8jbc70u.fsf@localhost> <83v8ja2z4d.fsf@HIDDEN>
 <87sfeecmom.fsf@localhost> <83edpy2r3x.fsf@HIDDEN>
Date: Thu, 09 Mar 2023 10:55:09 +0000
Message-ID: <87o7p2chyq.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 62048
Cc: 62048 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

>> Interesting. I did not notice this because this feature only manifests
>> itself on really tall images. The images that are about screen height
>> still feel jumpy.
>
> AFAIU the code, this is intentional: the goal of using vscroll in
> C-n/C-p is to make sure the user can see all the parts of the tall
> image.  Smooth scrolling is not the goal; if you want that, try
> pixel-scroll-precision-mode.

I do use pixel-scroll-precision-mode myself. However, it only works with
a mouse - not the most common interaction model with Emacs.

Further, the comment on top of `line-move' implies that it already
performs a mixed role.
    
    ;; This is like line-move-1 except that it also performs
    ;; vertical scrolling of tall images if appropriate.
    ;; That is not really a clean thing to do, since it mixes
    ;; scrolling with cursor motion.  But so far we don't have
    ;; a cleaner solution to the problem of making C-n do something
    ;; useful given a tall image.

    Documentation
    Move forward ARG lines.
    
    If NOERROR, don't signal an error if we can't move ARG lines.
    TO-END is unused.
    TRY-VSCROLL controls whether to vscroll tall lines: if either
    auto-window-vscroll or TRY-VSCROLL is nil, this function will
    not vscroll.

So, smooth scrolling is partially a goal, de facto.

>> 2. Scrolling a very tall image with mouse https://0x0.st/Hibk.mkv
>>    - Unexpectedly, most of the tall image is skipped upon mouse scroll.
>>      Bug?
>
> I cannot reproduce this on my system, using drawing.svg you posted and
> another large image I have here.  Mouse scrolls behave for me like
> C-n/C-p does.

Exact steps:
1. emacs -Q
2. M-: (with-silent-modifications (insert-sliced-image (create-image "~/Downloads/drawing.svg")))
3. scroll up with mouse
Observed: top of the image is displayed
Expected: bottom of the image is partially revealed

I can sometimes observe similar issue when scrolling across an image in
other scenarios. I have a feeling that scrolling is always done properly
when the point is on image line right before mouse scrolling. When point
is on other lines, I sometimes see unexpected jumps of even a hang (C-g
works).

In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, cairo version
 1.17.6) of 2023-02-13 built on localhost
Repository revision: df5c1c9370ca3c6a6e119278ef6bb1e3bca4d578
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12101007
System Description: Gentoo Linux

Configured using:
 'configure --prefix=/usr --build=x86_64-pc-linux-gnu
 --host=x86_64-pc-linux-gnu --mandir=/usr/share/man
 --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc
 --localstatedir=/var/lib --datarootdir=/usr/share
 --disable-silent-rules --docdir=/usr/share/doc/emacs-30.0.9999
 --htmldir=/usr/share/doc/emacs-30.0.9999/html --libdir=/usr/lib64
 --program-suffix=-emacs-30-vcs --includedir=/usr/include/emacs-30-vcs
 --infodir=/usr/share/info/emacs-30-vcs --localstatedir=/var
 --enable-locallisppath=/etc/emacs:/usr/share/emacs/site-lisp
 --without-compress-install --without-hesiod --without-pop
 --with-file-notification=inotify --with-pdumper --enable-acl
 --with-dbus --with-modules --without-gameuser --with-libgmp
 --without-gpm --with-native-compilation=aot --with-json
 --without-kerberos --without-kerberos5 --without-lcms2 --with-xml2
 --without-mailutils --without-selinux --without-sqlite3 --with-gnutls
 --without-libsystemd --with-threads --without-tree-sitter
 --with-wide-int --with-sound=oss --with-zlib --with-x --without-pgtk
 --without-ns --without-gconf --without-gsettings
 --without-toolkit-scroll-bars --with-xpm --with-xft --with-cairo
 --with-harfbuzz --without-libotf --without-m17n-flt --with-x-toolkit=no
 --with-gif --with-jpeg --with-png --with-rsvg --with-tiff
 --without-webp --with-imagemagick --with-dumping=pdumper
 'CFLAGS=-march=native -O3 -pipe' 'LDFLAGS=-Wl,-O1 -Wl,--as-needed''

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS HARFBUZZ IMAGEMAGICK JPEG
JSON LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY OLDXMENU PDUMPER PNG
RSVG SECCOMP SOUND THREADS TIFF X11 XDBE XIM XINPUT2 XPM ZLIB

Important settings:
  value of $LANG: en_US.utf8
  locale-coding-system: utf-8-unix

>> 3. Scrolling a near-screen tall image with C-n/C-p https://0x0.st/Hibn.mkv
>>    - Note how the image goes across the screen in just a few "jumps"
>>      (C-n strokes). This is the commonly observed behaviour in the images
>>      I often deal with. Probably something to do with what initial
>>      half-screen jump in (1).
>
> If it jumps after all the portions of the image have been seen, and
> the last portion is completely visible, that's the intended behavior.

Sure. Can it be made customizable?

>>      I think that jumping half screen at the beginning/end of the image
>>      is too drastic, especially for images near as tall as screen
>>      height. It would help if this behaviour is fixed or made
>>      customizable.
>
> That's because you expect something C-n/C-p weren't programmed to do,
> see above.  If someone wants to work on making the scrolling more
> smooth, I won't object, but the current code doesn't try to provide
> smooth scrolling, only a chance to see the whole image part by part.

Is all the relevant code in `line-move'? I had difficulties with
debugging `line-move' because debugger performs redisplay and I see
image scrolled half-way even before entering `line-move' in the
debugger.

> Please don't forget:
>
>   . The code in C-n/C-p that scrolls partially is not only for tall
>     images, it is also for tall text (try using a very large font for
>     some face or part of the buffer text).  The relevant parts of
>     Emacs treat tall screen lines the same no matter what caused the
>     large height, whether an image or some tall text.

Sure. But if we are talking about this much tall text, human eye will
treat it as an image anyway. I see no problem with preferring more
smooth scrolling here.

>   . The code in C-n/C-p needs to strike a fine balance between smooth
>     scrolling and user expectation that text that is not too large be
>     scrolled one line at a time, i.e. that you won't need several
>     C-n/C-p key strokes to move the display by a single screen line.
>     As image height goes smaller and smaller, at some point it is
>     reasonable to expect that a single C-n/C-p will scroll across the
>     entire line which contains the image, not just some part of that
>     line.  The question is where to draw the line (pun intended); the
>     code has some heuristic regarding that.

Are you referring to the follow excerpt from `line-move':

	    ;; If we moved into a tall line, set vscroll to make
	    ;; scrolling through tall images more smooth.
	    (let ((lh (line-pixel-height))
		  (edges (window-inside-pixel-edges))
		  (dlh (default-line-height))
		  winh)
	      (setq winh (- (nth 3 edges) (nth 1 edges) 1))
	      (if (and (< arg 0)
		       (< (point) (window-start))
		       (> lh winh))
		  (set-window-vscroll
		   nil
		   (- lh dlh) t)))

This is only for moving up, and the threshold appears to be window
height. Do I understand correctly?

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#62048; Package emacs. Full text available.

Message received at 62048 <at> debbugs.gnu.org:


Received: (at 62048) by debbugs.gnu.org; 9 Mar 2023 09:47:55 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Mar 09 04:47:55 2023
Received: from localhost ([127.0.0.1]:50915 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1paCsN-0007KA-19
	for submit <at> debbugs.gnu.org; Thu, 09 Mar 2023 04:47:55 -0500
Received: from eggs.gnu.org ([209.51.188.92]:45726)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1paCsK-0007JM-Ks
 for 62048 <at> debbugs.gnu.org; Thu, 09 Mar 2023 04:47:53 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1paCsF-0001oJ-4T; Thu, 09 Mar 2023 04:47:47 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=Fxl8Bm1lvuSo+LnKq5maHZWhDTL2zwOPf6yfs4a1ZNc=; b=Gn1xuoDZl2wC
 N3puxx5CGQaf5ZLTruCDVDwdnl4V0w+XQWLsiTmzFPu5DMl6DrSGfLUdu9hWAAqduyFaYzcJJjfz6
 /ERXUs+J5dZglhMPyeKhPMQWYUZY2zwXWj4vddC/ueeKTem5kHIVj0/FAZsnfJAAb0X/zDF76kgpE
 l8pM/Qttm3O1c5QaUVETUTzRGIn2sqpv5mVzCnSjtWQ27WTf7h6333arleJZ8/ijXvS+6lnIpl/oN
 9UQdyj172v0oqSPw9aEB9pbNk7oyUcM7QkWB3wGd52Xu4uCgDHiBTWPZBzQS4ohRFboxk1xqGvxaG
 GTlkddG7A92gd92pzRYLMA==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1paCsE-0001IH-Il; Thu, 09 Mar 2023 04:47:46 -0500
Date: Thu, 09 Mar 2023 11:47:46 +0200
Message-Id: <83edpy2r3x.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
In-Reply-To: <87sfeecmom.fsf@localhost> (message from Ihor Radchenko on Thu,
 09 Mar 2023 09:13:13 +0000)
Subject: Re: bug#62048: 30.0.50; Non-nil `line-spacing' takes precendence
 over 'line-height t text property
References: <87ilfbe8r0.fsf@localhost> <83a60n40an.fsf@HIDDEN>
 <87y1o7cd6a.fsf@localhost> <834jqv3tv3.fsf@HIDDEN>
 <87v8jbc70u.fsf@localhost> <83v8ja2z4d.fsf@HIDDEN> <87sfeecmom.fsf@localhost>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 62048
Cc: 62048 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Ihor Radchenko <yantar92@HIDDEN>
> Cc: 62048 <at> debbugs.gnu.org
> Date: Thu, 09 Mar 2023 09:13:13 +0000
> 
> > That shouldn't happen: if an image is taller than the window, then
> > C-n/C-p use window-vscroll to scroll the image only partially, at
> > least as long as line-move-visual is non-nil (which it is by default).
> 
> Interesting. I did not notice this because this feature only manifests
> itself on really tall images. The images that are about screen height
> still feel jumpy.

AFAIU the code, this is intentional: the goal of using vscroll in
C-n/C-p is to make sure the user can see all the parts of the tall
image.  Smooth scrolling is not the goal; if you want that, try
pixel-scroll-precision-mode.

> 1. Scrolling a very tall image with C-n/C-p https://0x0.st/HibG.mkv
>    - Emacs behaves nicely, except at the beginning/end of the image
>    - At the beginning the image suddenly jumps half a screen
>      May this behaviour be somehow customized?
>    - At the end, the image disappears very quickly. Maybe something do
>      to with end of buffer.

No, it happens once the last part is seen in its entirety; see above
regarding the goal.

> 2. Scrolling a very tall image with mouse https://0x0.st/Hibk.mkv
>    - Unexpectedly, most of the tall image is skipped upon mouse scroll.
>      Bug?

I cannot reproduce this on my system, using drawing.svg you posted and
another large image I have here.  Mouse scrolls behave for me like
C-n/C-p does.

> 3. Scrolling a near-screen tall image with C-n/C-p https://0x0.st/Hibn.mkv
>    - Note how the image goes across the screen in just a few "jumps"
>      (C-n strokes). This is the commonly observed behaviour in the images
>      I often deal with. Probably something to do with what initial
>      half-screen jump in (1).

If it jumps after all the portions of the image have been seen, and
the last portion is completely visible, that's the intended behavior.

>      I think that jumping half screen at the beginning/end of the image
>      is too drastic, especially for images near as tall as screen
>      height. It would help if this behaviour is fixed or made
>      customizable.

That's because you expect something C-n/C-p weren't programmed to do,
see above.  If someone wants to work on making the scrolling more
smooth, I won't object, but the current code doesn't try to provide
smooth scrolling, only a chance to see the whole image part by part.

Please don't forget:

  . The code in C-n/C-p that scrolls partially is not only for tall
    images, it is also for tall text (try using a very large font for
    some face or part of the buffer text).  The relevant parts of
    Emacs treat tall screen lines the same no matter what caused the
    large height, whether an image or some tall text.
  . The code in C-n/C-p needs to strike a fine balance between smooth
    scrolling and user expectation that text that is not too large be
    scrolled one line at a time, i.e. that you won't need several
    C-n/C-p key strokes to move the display by a single screen line.
    As image height goes smaller and smaller, at some point it is
    reasonable to expect that a single C-n/C-p will scroll across the
    entire line which contains the image, not just some part of that
    line.  The question is where to draw the line (pun intended); the
    code has some heuristic regarding that.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#62048; Package emacs. Full text available.

Message received at 62048 <at> debbugs.gnu.org:


Received: (at 62048) by debbugs.gnu.org; 9 Mar 2023 09:12:04 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Mar 09 04:12:04 2023
Received: from localhost ([127.0.0.1]:50887 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1paCJg-0006Lj-2k
	for submit <at> debbugs.gnu.org; Thu, 09 Mar 2023 04:12:04 -0500
Received: from mout02.posteo.de ([185.67.36.66]:53149)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1paCJd-0006LD-7D
 for 62048 <at> debbugs.gnu.org; Thu, 09 Mar 2023 04:12:02 -0500
Received: from submission (posteo.de [185.67.36.169]) 
 by mout02.posteo.de (Postfix) with ESMTPS id 27D11240458
 for <62048 <at> debbugs.gnu.org>; Thu,  9 Mar 2023 10:11:54 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1678353115; bh=uTNG1TLzOJVxVYgXOD+6FEjKYBhOtfvzs0RIkaHv30k=;
 h=From:To:Cc:Subject:Date:From;
 b=oIAQbe/KoegtvkEt23q9L1FfFgAkxjOmHf+JhbhZbgFiEep24B78wxkADg292BnpB
 uqUIlNV1GmcHaKNN3PmdmFXokwV1mh0jZjXZn6fpLc/GuIOSdXytPiujyLLn8ZvtEI
 gaMTSHrHoLF2WVbVWHL7CnchMK+teWLV9gPUYgNE9lNqCjuSmrgK1uop0e4RPWSyXT
 wHdC844YxpdoObk2oSy6JH+HNyG1gvtxQNiZcxKV3NoXDblCqjvNuWePyADRGshgsJ
 lVDjcHQ5V82Y5Cj0252oD79Yxg2BRf72DyWRh0TM5y6D6bdB3gt3nZbU4swoGeYLla
 o1FcOur7/Hyxg==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4PXNjP6dQgz9rxD;
 Thu,  9 Mar 2023 10:11:51 +0100 (CET)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#62048: 30.0.50; Non-nil `line-spacing' takes precendence
 over 'line-height t text property
In-Reply-To: <83v8ja2z4d.fsf@HIDDEN>
References: <87ilfbe8r0.fsf@localhost> <83a60n40an.fsf@HIDDEN>
 <87y1o7cd6a.fsf@localhost> <834jqv3tv3.fsf@HIDDEN>
 <87v8jbc70u.fsf@localhost> <83v8ja2z4d.fsf@HIDDEN>
Date: Thu, 09 Mar 2023 09:13:13 +0000
Message-ID: <87sfeecmom.fsf@localhost>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 62048
Cc: 62048 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

--=-=-=
Content-Type: text/plain

Eli Zaretskii <eliz@HIDDEN> writes:

>> The real problem I am trying to solve is scrolling images with large
>> heights. C-n/C-p and default scrolling jumps over the whole images as
>> they appear on a single line. It is annoying, especially when the image
>> is taller than the window height.
>
> That shouldn't happen: if an image is taller than the window, then
> C-n/C-p use window-vscroll to scroll the image only partially, at
> least as long as line-move-visual is non-nil (which it is by default).

Interesting. I did not notice this because this feature only manifests
itself on really tall images. The images that are about screen height
still feel jumpy.

I have experimented a bit using a very tall image and about a
screen-tall image from emacs -Q and recorded screencasts:

1. Scrolling a very tall image with C-n/C-p https://0x0.st/HibG.mkv
   - Emacs behaves nicely, except at the beginning/end of the image
   - At the beginning the image suddenly jumps half a screen
     May this behaviour be somehow customized?
   - At the end, the image disappears very quickly. Maybe something do
     to with end of buffer.

2. Scrolling a very tall image with mouse https://0x0.st/Hibk.mkv
   - Unexpectedly, most of the tall image is skipped upon mouse scroll.
     Bug?

3. Scrolling a near-screen tall image with C-n/C-p https://0x0.st/Hibn.mkv
   - Note how the image goes across the screen in just a few "jumps"
     (C-n strokes). This is the commonly observed behaviour in the images
     I often deal with. Probably something to do with what initial
     half-screen jump in (1).

     I think that jumping half screen at the beginning/end of the image
     is too drastic, especially for images near as tall as screen
     height. It would help if this behaviour is fixed or made
     customizable.

For future reference, I did the following in the screencasts:
1. Add several screens of newlines in *scratch* buffer
2. Insert one of the attached images in the middle of the buffer via
   (with-silent-modifications (insert-sliced-image (create-image "~/Downloads/drawing.svg")))
3. M-<
4. Scroll with mouse or with C-n/C-p


--=-=-=
Content-Type: image/svg\+xml; charset=utf-8
Content-Disposition: attachment; filename=drawing.svg
Content-Transfer-Encoding: base64

PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjwh
LS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoK
PHN2ZwogICB3aWR0aD0iMzAuOTM1ODg4bW0iCiAgIGhlaWdodD0iOTI4LjA3NjY2bW0iCiAgIHZp
ZXdCb3g9IjAgMCAzMC45MzU4ODggOTI4LjA3NjY1IgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJz
dmc1IgogICBpbmtzY2FwZTp2ZXJzaW9uPSIxLjIuMiAoYjBhODQ4NjU0MSwgMjAyMi0xMi0wMSki
CiAgIHNvZGlwb2RpOmRvY25hbWU9ImRyYXdpbmcuc3ZnIgogICB4bWxuczppbmtzY2FwZT0iaHR0
cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgeG1sbnM6c29kaXBv
ZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgog
ICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zOnN2Zz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpZD0ibmFt
ZWR2aWV3NyIKICAgICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgICAgYm9yZGVyY29sb3I9IiM2NjY2
NjYiCiAgICAgYm9yZGVyb3BhY2l0eT0iMS4wIgogICAgIGlua3NjYXBlOnNob3dwYWdlc2hhZG93
PSIyIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiCiAgICAgaW5rc2NhcGU6cGFnZWNo
ZWNrZXJib2FyZD0iMCIKICAgICBpbmtzY2FwZTpkZXNrY29sb3I9IiNkMWQxZDEiCiAgICAgaW5r
c2NhcGU6ZG9jdW1lbnQtdW5pdHM9Im1tIgogICAgIHNob3dncmlkPSJmYWxzZSIKICAgICBpbmtz
Y2FwZTp6b29tPSIwLjgyODQ5MzI3IgogICAgIGlua3NjYXBlOmN4PSItNC44MjgwNDE2IgogICAg
IGlua3NjYXBlOmN5PSIxMzI4LjkxODUiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxODc4
IgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9Ijk2NiIKICAgICBpbmtzY2FwZTp3aW5kb3ct
eD0iMCIKICAgICBpbmtzY2FwZTp3aW5kb3cteT0iMzYiCiAgICAgaW5rc2NhcGU6d2luZG93LW1h
eGltaXplZD0iMSIKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJsYXllcjEiIC8+CiAgPGRl
ZnMKICAgICBpZD0iZGVmczIiIC8+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIK
ICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgdHJh
bnNmb3JtPSJ0cmFuc2xhdGUoLTMyLjQ1OTg0NywzNTQuNDU4NjMpIj4KICAgIDxlbGxpcHNlCiAg
ICAgICBzdHlsZT0iZmlsbDojZmYyYTJhO3N0cm9rZTojMDBmZjAwO3N0cm9rZS13aWR0aDo5LjY2
MTQ0O3BhaW50LW9yZGVyOnN0cm9rZSBmaWxsIG1hcmtlcnM7c3RvcC1jb2xvcjojMDAwMDAwIgog
ICAgICAgaWQ9InBhdGgyMzQiCiAgICAgICBjeD0iNDcuOTI3NzkyIgogICAgICAgY3k9IjEwOS41
Nzk3IgogICAgICAgcng9IjEwLjYzNzIyNCIKICAgICAgIHJ5PSI0NTkuMjA3NjEiIC8+CiAgPC9n
Pgo8L3N2Zz4K
--=-=-=
Content-Type: image/png
Content-Disposition: attachment; filename=wallpaper.png
Content-Transfer-Encoding: base64

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
AACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZ
cwAACxIAAAsSAdLdfvwAAIAASURBVHja7P3ZjyRZtu/3/dba29w9cqihu8/QPJKoS1K8FwJI6OFK
IAQR0LsA/ccCJEEACXGeNBK8vOJwzumuqq7MjMHdzPZaethmFhYRmdlV3dWVmZXfD7KzIz08PDzM
PRq91l6DBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPn32oZ8AAAAAfhpmP+7/2mXmh37KAICflX/o
JwAAAAAAAH4O9UM/AQAAAPxI/o7T/l0VwP6E/53VAfGOKgCKAwDgF4oUAAAAwEfqXaH7Txahvys1
QIPAR+md7wdeLwA/GCkAAACAT9i7wkIz2yJDQsdPy4+d6QAAPxwpAAAAgE9GDw5Tj2P75faHIf2W
Bfixof72sOQI/qL+/FCfFwjAj0WKEQAA4GP3KFZMe3Dj48/+4LDwXfe0/FMeDe/yU21qIDUD4M9H
FQAAAMAnYwkC7cktD+/zKET806oA+lc9fTS8y48N9Sn4B/Dz4393AAAAPmo9UHwQLvof/79wPyRu
f9d9XA9Om0kB/EDvmcvwU32L7bXgRQHwp6EKAAAA4CP1qNR/OZzfhZMhuRS7L/E/6fEfI7r8k/zY
FEBmpslSj/522fbxo/trK9AwUyavFIAfixQAAADAx+g+bnRbAr/dp5aw35S5K+vMjNy+6D583OcI
Hiz8y3zUXu7uZhYRkix3z+G9Z86ffhzqT6/TxkxmMilzF3S7LS0S/cqYlVL2V1Jxf1Xi4fjGh7UV
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
n97hdnZjll7cUjnjjMb9/VYgUOe71pbPD6fHy7v5ePfrh4/nyzrP5XR6OJ1O44k9M1qrtY70wu1D
j1LKPJfMXJexRURtrffeRwnAfsbkrsP/Oo3y1Xi/l983wT/wNVIAAAB/jH0wvN25zwtsAwJeRGi3
cPrpzoyMiG2b9+0powN8/FNKv/UXzLXWsZt9xJjAfxjpgzFJbvSiX5bH3mOaSkR9fLy8f/9+1P9H
xLIs2dfxDk+nU4syz/PxeLy/++n+/v58Xtb18/l83gLM12X/+0KG5xMSYx+lZ+Y0Tb3WdVmW0krJ
HjWil6nUzKjlMN8djnettbX3viylTLt0Q+6v8HbQUQw/qgBKKS37NE11inJNmkTvsfbLusZIAWwz
80ePQ+89R5lG1u1XY8rgbUE+tl33tqMvayt1jlIi18fL+vHT6f7+fll71Glt/XS+tIwsUeo4xHWX
h3jeuXA8Htd1zd7HB73VJqzruj3mxTz/7ZsWzyov8sWvpACAr5ECAAD4w3yxI2D71W886/bEjBiB
fSmltDXrlLeX7dOUYzf4yFrLfK0qz2u4WOvU+yj4r2N5fFSS11rv7u5qra0vDw+f57lmZi+xtCzT
oUeNiLW3ZVlba9F6Zql1OszHWqZ17efz8vj4+Pj4eLlcpvk4pvHvCgFenss0lXmeR0w7OurHI7cR
ibXWjMgSEVGnOuYHZmSPuL87Hu/vD4dDP5/b2ntmKbeChy8tdI/THDditxPe8XCImFqU62tM8zxH
75eeY5LB9X2OOQtxq5XYTmFLYGyNBmMW4HjM1rsxH6b1smaZWub7j6fpcHec51Lqw8P50+eH3vvh
UKdpKlON3kerwtOEv15KieXSWutbf8c43Ij/h/04wLhOJazxJdb/gW8kBQAA8Ed6UQvwLSHZi0eW
krWWiDifz/M8j0l1I7jNzOXSbmvY14ixrSOyXCPieDzM87GUWJZlVJXf3d29ffv2cDi0vjw8PKxr
7y17i3XtYx/7ZWlb8Lwube05lcwsl8u6rp+uh7itsUfECOmn66D/ks8H8o2pfltoPe6cpinzuk19
reVwrLfx+L33NSJuYfkUt4kJ01xKTFuT/xcTK2Ou/ovug9b7eV2O01xqiXxKDWwfzT7C389luG3K
8GRbkN8qEUZyJiJ6iVLK2rNE7RGnh/O7yxIxlZqnh/P7j5/PS8yH0qNMUUtMGU9N/pnZW9u/md57
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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAXFgzPQAAAEFJREFUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4Ef1f8nO8qLr/3v6AAABQGVYSWZNTQAqAAAACAAI
ARoABQAAAAEAAABuARsABQAAAAEAAAB2ASgAAwAAAAEAAgAAATEAAgAAABAAAAB+ATIAAgAAABQA
AACOATsAAgAAAAkAAACigpgAAgAAADoAAACsh2kABAAAAAEAAADmAAABBgAAAEgAAAABAAAASAAA
AAFwYWludC5uZXQgNC4wLjUAMjAxMDowMzowOSAyMjo0ODoyNwBNaW5oIFRhbgAAQ3JlYXRlZCBm
b3IgcHVibGljIHVzZSBieSBNaW5oIFRhbiwgYWthIGRpZ2l0YWxjaXRpemVuLmNhAAACoAIABAAA
AAEAAAUAoAMABAAAAAEAAAPAAAAAAAAAAAMBGgAFAAAAAQAAATABGwAFAAAAAQAAATgBKAADAAAA
AQACAAAAAAAAAAAASAAAAAEAAABIAAAAARp7h3YAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTctMDQt
MjZUMjE6MjE6MzgrMDg6MDCC5zvyAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE3LTAyLTA5VDIxOjQ5
OjQ3KzA4OjAwM1+M5wAAABR0RVh0ZXhpZjpBcnRpc3QATWluaCBUYW6taipmAAAASHRFWHRleGlm
OkNvcHlyaWdodABDcmVhdGVkIGZvciBwdWJsaWMgdXNlIGJ5IE1pbmggVGFuLCBha2EgZGlnaXRh
bGNpdGl6ZW4uY2HRBlLTAAAAIXRFWHRleGlmOkRhdGVUaW1lADIwMTA6MDM6MDkgMjI6NDg6MjfG
ktHCAAAAGHRFWHRleGlmOkV4aWZJbWFnZUxlbmd0aAA5NjBCJII/AAAAGHRFWHRleGlmOkV4aWZJ
bWFnZVdpZHRoADEyODC7vzJoAAAAE3RFWHRleGlmOkV4aWZPZmZzZXQAMjMwtCelEQAAAB10RVh0
ZXhpZjpTb2Z0d2FyZQBwYWludC5uZXQgNC4wLjUMXES9AAAAH3RFWHRleGlmOnRodW1ibmFpbDpS
ZXNvbHV0aW9uVW5pdAAyJUBe0wAAAB90RVh0ZXhpZjp0aHVtYm5haWw6WFJlc29sdXRpb24ANzIv
MdqHGCwAAAAfdEVYdGV4aWY6dGh1bWJuYWlsOllSZXNvbHV0aW9uADcyLzF074m9AAAAKXRFWHRp
Y2M6Y29weXJpZ2h0AENvcHlyaWdodCBBcHBsZSwgSW5jLiwgMjAwOdVZqnwAAAAUdEVYdGljYzpk
ZXNjcmlwdGlvbgBpTWFjHfmzywAAABV0RVh0aWNjOm1hbnVmYWN0dXJlcgBpTWFjjZvqowAAAA50
RVh0aWNjOm1vZGVsAGlNYWP8CYmPAAAAAElFTkSuQmCC
--=-=-=
Content-Type: text/plain


-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>

--=-=-=--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#62048; Package emacs. Full text available.

Message received at 62048 <at> debbugs.gnu.org:


Received: (at 62048) by debbugs.gnu.org; 9 Mar 2023 06:54:51 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Mar 09 01:54:51 2023
Received: from localhost ([127.0.0.1]:50728 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1paAAs-0000Dd-Rj
	for submit <at> debbugs.gnu.org; Thu, 09 Mar 2023 01:54:51 -0500
Received: from eggs.gnu.org ([209.51.188.92]:36922)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1paAAq-0000DN-Ag
 for 62048 <at> debbugs.gnu.org; Thu, 09 Mar 2023 01:54:49 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1paAAk-00088E-Sa; Thu, 09 Mar 2023 01:54:42 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=fczJtsMYodkVGSFZ+iZ4VbxuewnLNguraoXmAT5a3UM=; b=Hw0EkvVtzPKa
 DYsnNo+mvw7PZAPSH3B0n+yF6gz7u/yE4NuuTDYaaIF1UYINa/BKncueUjVsss/8oIBcfUSVPjg0X
 gXUCLmo810Q0LFzqKwTOXPSuYEnnKo+2fbC9uVQg53vqXu+md/Tl5ZviAyUpNxdqFCGuWjrE8H5KR
 PGihrx7Ve8DfEotYQ+h2kESpKfZBqZomAvFUUInuBJ3r9wOxiB616d8nLLaENvcNtpB/ThVz9v2Sr
 fTNHkKNvh6XfiLkHC2NxpKStGFRrKYsE7eAnhEOp2KjTCczNlaTKDzVL8Jtjo6hBfMEWnwPYAwgtQ
 VSe4SOr+Gs+18aCofV5p+Q==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1paAAk-0002dg-7e; Thu, 09 Mar 2023 01:54:42 -0500
Date: Thu, 09 Mar 2023 08:54:42 +0200
Message-Id: <83v8ja2z4d.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
In-Reply-To: <87v8jbc70u.fsf@localhost> (message from Ihor Radchenko on Wed,
 08 Mar 2023 20:39:13 +0000)
Subject: Re: bug#62048: 30.0.50; Non-nil `line-spacing' takes precendence
 over 'line-height t text property
References: <87ilfbe8r0.fsf@localhost> <83a60n40an.fsf@HIDDEN>
 <87y1o7cd6a.fsf@localhost> <834jqv3tv3.fsf@HIDDEN> <87v8jbc70u.fsf@localhost>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 62048
Cc: 62048 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Ihor Radchenko <yantar92@HIDDEN>
> Cc: 62048 <at> debbugs.gnu.org
> Date: Wed, 08 Mar 2023 20:39:13 +0000
> 
> The real problem I am trying to solve is scrolling images with large
> heights. C-n/C-p and default scrolling jumps over the whole images as
> they appear on a single line. It is annoying, especially when the image
> is taller than the window height.

That shouldn't happen: if an image is taller than the window, then
C-n/C-p use window-vscroll to scroll the image only partially, at
least as long as line-move-visual is non-nil (which it is by default).




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#62048; Package emacs. Full text available.

Message received at 62048 <at> debbugs.gnu.org:


Received: (at 62048) by debbugs.gnu.org; 8 Mar 2023 20:38:02 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Mar 08 15:38:02 2023
Received: from localhost ([127.0.0.1]:50299 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pa0Xx-0003sC-OO
	for submit <at> debbugs.gnu.org; Wed, 08 Mar 2023 15:38:02 -0500
Received: from mout02.posteo.de ([185.67.36.66]:33877)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1pa0Xv-0003rr-K8
 for 62048 <at> debbugs.gnu.org; Wed, 08 Mar 2023 15:38:00 -0500
Received: from submission (posteo.de [185.67.36.169]) 
 by mout02.posteo.de (Postfix) with ESMTPS id 417BE24018C
 for <62048 <at> debbugs.gnu.org>; Wed,  8 Mar 2023 21:37:52 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1678307873; bh=aXlOqYShy2my4gNIBOKITyfKdd2xYEsv97nCKdMWxqI=;
 h=From:To:Cc:Subject:Date:From;
 b=Ff4kGWgUiKhIRSnVpUelvWHLUMv7XmyY3rTb62tXjl90ZJXBawc2oGpMuFEVGMA7s
 R/ZzbVYAkcd+Mr7LocGgCttL/u4K/GWW7URfXMoYuBUr1BQVUihwF0WdZ0GBdoLxQs
 kl6q716Yz5r6wSUg93w89Dx/KQd2ylFwOHdU/deW2M9si4SBie9CnMTislagOH/iLo
 +xfHbcZpYE2qo2TrdBoSuCBf/k3+amHxKSAZTzAdK4/jHkjKP0k21xxQZld91dhoCN
 pzUTUFVG/O/YWpHL8COv9vBPkqed2NzEK4zxe13Bec9biryO/iI8TmdLzIDKQ22ftq
 kfQmpvj7T48MA==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4PX3zM3mLyz6tmB;
 Wed,  8 Mar 2023 21:37:50 +0100 (CET)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#62048: 30.0.50; Non-nil `line-spacing' takes precendence
 over 'line-height t text property
In-Reply-To: <834jqv3tv3.fsf@HIDDEN>
References: <87ilfbe8r0.fsf@localhost> <83a60n40an.fsf@HIDDEN>
 <87y1o7cd6a.fsf@localhost> <834jqv3tv3.fsf@HIDDEN>
Date: Wed, 08 Mar 2023 20:39:13 +0000
Message-ID: <87v8jbc70u.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 62048
Cc: 62048 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

>> However, I still see `insert-sliced-image' inserting image with gaps as
>> a bug. Would it be possible to change `insert-sliced-image' so that it
>> overrides buffer-local `line-spacing' and forces no gaps?
>
> Not easily, because the fact that the line-spacing variable affects
> _all_ lines is deeply entrenched in the implementation: it computes
> the corresponding metrics once and never changes that through the
> entire redisplay of the window.

I see.

The real problem I am trying to solve is scrolling images with large
heights. C-n/C-p and default scrolling jumps over the whole images as
they appear on a single line. It is annoying, especially when the image
is taller than the window height.

I was hoping to use `insert-sliced-image', but this `line-spacing' issue
makes the idea unreliable.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#62048; Package emacs. Full text available.

Message received at 62048 <at> debbugs.gnu.org:


Received: (at 62048) by debbugs.gnu.org; 8 Mar 2023 19:50:47 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Mar 08 14:50:47 2023
Received: from localhost ([127.0.0.1]:50259 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pZzoE-0000Cu-SP
	for submit <at> debbugs.gnu.org; Wed, 08 Mar 2023 14:50:47 -0500
Received: from eggs.gnu.org ([209.51.188.92]:52954)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1pZzoD-0000Cd-Tq
 for 62048 <at> debbugs.gnu.org; Wed, 08 Mar 2023 14:50:46 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pZzo8-0002kP-MI; Wed, 08 Mar 2023 14:50:40 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=Hqh4Nq+LX6E2rlKWO0VaTne2aWU91j7xiJZeZZXYw1I=; b=Bg6QzjQk9m1A
 d/QVczaF5AomaYfAgv8xzaXC/cRpx3TmjjA7M1aeisSzYW0xLDuG51pLrHDx+zTU4CtJgG1GeMqhw
 cfi/dbiJIy5Yf0Nana+3t6TgfI9zrn5ubrpYaqRX0NnJsXIhY6x5N+kHKavTpCn+R2+IcvAJL/+X2
 yqdJBjCpZWCYMeIAAqelN1F2LbhzMIvbijdPFpzUAK/7sJ7UAvc2Fz1Ow5zDuz4X08QtT0GQ8TSnn
 Fp1DSOyhCLQ5FQUVYFR9UkY1FT5beukz2EMHzgD+jQHtrd20krSIHQAGf5eeHaeTumolGfHp5njVw
 c1R0ueLBffu7e7/ufvKqWQ==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pZzo8-00040d-66; Wed, 08 Mar 2023 14:50:40 -0500
Date: Wed, 08 Mar 2023 21:50:40 +0200
Message-Id: <834jqv3tv3.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
In-Reply-To: <87y1o7cd6a.fsf@localhost> (message from Ihor Radchenko on Wed,
 08 Mar 2023 18:26:21 +0000)
Subject: Re: bug#62048: 30.0.50; Non-nil `line-spacing' takes precendence
 over 'line-height t text property
References: <87ilfbe8r0.fsf@localhost> <83a60n40an.fsf@HIDDEN>
 <87y1o7cd6a.fsf@localhost>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 62048
Cc: 62048 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Ihor Radchenko <yantar92@HIDDEN>
> Cc: 62048 <at> debbugs.gnu.org
> Date: Wed, 08 Mar 2023 18:26:21 +0000
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> > I've updated the manual to be more accurate about this.  But other
> > than that, this is not a bug in the code.
> 
> Thanks!
> 
> I agree that the current newline 'line-height property behaviour makes sense.
> However, I still see `insert-sliced-image' inserting image with gaps as
> a bug. Would it be possible to change `insert-sliced-image' so that it
> overrides buffer-local `line-spacing' and forces no gaps?

Not easily, because the fact that the line-spacing variable affects
_all_ lines is deeply entrenched in the implementation: it computes
the corresponding metrics once and never changes that through the
entire redisplay of the window.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#62048; Package emacs. Full text available.

Message received at 62048 <at> debbugs.gnu.org:


Received: (at 62048) by debbugs.gnu.org; 8 Mar 2023 18:25:06 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Mar 08 13:25:06 2023
Received: from localhost ([127.0.0.1]:50213 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pZyTJ-000416-L4
	for submit <at> debbugs.gnu.org; Wed, 08 Mar 2023 13:25:05 -0500
Received: from mout02.posteo.de ([185.67.36.66]:54267)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1pZyTH-00040U-QU
 for 62048 <at> debbugs.gnu.org; Wed, 08 Mar 2023 13:25:04 -0500
Received: from submission (posteo.de [185.67.36.169]) 
 by mout02.posteo.de (Postfix) with ESMTPS id C2D3F24065F
 for <62048 <at> debbugs.gnu.org>; Wed,  8 Mar 2023 19:24:55 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1678299897; bh=Z5Mdh76Ni3/ebVJK5bi3gJKfop8RzdvmPQ8bzL1Ktrk=;
 h=From:To:Cc:Subject:Date:From;
 b=TROHXzZ+o0I5/pgnx3sJlAmnUkurnvg1JozzHOonGvuVUMseSqzx2aJ0813vsAJ/p
 zTQes0lklOMTWITlmfS3uZJBPSF3uE1QqcraHkoIqz4ZXhh/Y6kaZZLhmtLCCXe3r5
 EL8CIVjSzSDMVSWk89DEq/WyUpSa0c5G2nlajrnQBt2dFJ6CBI/2KkJwDKSJiFLyVp
 JMtPf/v9i+kO6gg84aGxjGYTA3xLvJOEbZ3ScA64V34UCTTl0YbGQg90RoN2+xOvo9
 YvTEESMSBSUYsiGHNpDfu2v5eghImi295PoS2741qK3ttgDB1aDRD9O1h9+Qr5JSxZ
 KUrWUmTiv4I5w==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4PX11y49LYz6tmF;
 Wed,  8 Mar 2023 19:24:54 +0100 (CET)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#62048: 30.0.50; Non-nil `line-spacing' takes precendence
 over 'line-height t text property
In-Reply-To: <83a60n40an.fsf@HIDDEN>
References: <87ilfbe8r0.fsf@localhost> <83a60n40an.fsf@HIDDEN>
Date: Wed, 08 Mar 2023 18:26:21 +0000
Message-ID: <87y1o7cd6a.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 62048
Cc: 62048 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

> I've updated the manual to be more accurate about this.  But other
> than that, this is not a bug in the code.

Thanks!

I agree that the current newline 'line-height property behaviour makes sense.
However, I still see `insert-sliced-image' inserting image with gaps as
a bug. Would it be possible to change `insert-sliced-image' so that it
overrides buffer-local `line-spacing' and forces no gaps?

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#62048; Package emacs. Full text available.

Message received at 62048 <at> debbugs.gnu.org:


Received: (at 62048) by debbugs.gnu.org; 8 Mar 2023 17:31:57 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Mar 08 12:31:57 2023
Received: from localhost ([127.0.0.1]:50114 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pZxds-0002Yy-Lt
	for submit <at> debbugs.gnu.org; Wed, 08 Mar 2023 12:31:57 -0500
Received: from eggs.gnu.org ([209.51.188.92]:45448)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1pZxdr-0002Ym-28
 for 62048 <at> debbugs.gnu.org; Wed, 08 Mar 2023 12:31:55 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pZxdk-0004nx-4F; Wed, 08 Mar 2023 12:31:48 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=qBOHt03mrYwfB5pWcf5OJJoNOv1ebSDgQZq6GnG9Gi4=; b=GCEyWb5Hk72lhcJMT0E5
 wf4rs01shoEkMBH21xwTKBax6yIj4Z4NhJGgSXy8NCgPo8I4vr7nH3y6CjwmtKtGrLXr4+YwTGegQ
 SSxbFDHDLmn7sKUMQJlub0Y5BrfkKmMAbE7E3pNxfQrI7Cqx/fQT9seKjPSnUjFMZX2qHWAmmfVZp
 y9hONSAJ24POBgaTGDXXrIi7Ow6GqyI6Z3Pv+dpBOr2/7LG1wNc4IqRSZXi9+k8tBb7tJ26YDu1H1
 BJDWwLhgilVkS3CJF+YC/OoNDAPJtoG7yKSTQUIMKSLiU2Js8rzUvVfADGaL5hhilyQeL0Mx8YOXP
 kyRiwaQhIus9LQ==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pZxdh-0004I4-So; Wed, 08 Mar 2023 12:31:46 -0500
Date: Wed, 08 Mar 2023 19:31:44 +0200
Message-Id: <83a60n40an.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
In-Reply-To: <87ilfbe8r0.fsf@localhost> (message from Ihor Radchenko on Wed,
 08 Mar 2023 12:18:59 +0000)
Subject: Re: bug#62048: 30.0.50;
 Non-nil `line-spacing' takes precendence over 'line-height t text
 property
References: <87ilfbe8r0.fsf@localhost>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 62048
Cc: 62048 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Ihor Radchenko <yantar92@HIDDEN>
> Date: Wed, 08 Mar 2023 12:18:59 +0000
> 
> According to 41.11 Line Height section of Elisp manual,
> 
>        A newline can have a ‘line-height’ text or overlay property that
>     controls the total height of the display line ending in that newline.
>     The property value can be one of several forms:
>     
>     ‘t’
>          If the property value is ‘t’, the newline character has no effect
>          on the displayed height of the line—the visible contents alone
>          determine the height.  The ‘line-spacing’ property, described
>          below, is also ignored in this case.  This is useful for tiling
>          small images (or image slices) without adding blank areas between
>          the images.
> 
> AFAIU, it implies that buffer-local `line-spacing' value is also
> ignored.
> 
> Consider the following minimal example:
> 
> 1. emacs -Q
> 2. (setq-default line-spacing 0.15)
> 3. (with-silent-modifications (insert-sliced-image (create-image "/path/to/some/image") nil nil 10 nil))
> 
> Expected: the spliced image is displayed without gaps.
> Observed: visible gaps between image rows
> 
> If I understand correctly, `insert-sliced-image' tries to avoid the gaps
> by (insert (propertize "\n" 'line-height t)). But it does not seem to be
> working.
> 
> Am I missing something?

The above text in the manual is misleading: only the line-spacing
property of the same newline is ignored in this case.  (It makes no
sense to ignore the buffer-local value of line-spacing due to a single
newline, because the buffer-local value of line-spacing affects all
the lines in the buffer, not just one line.)  IOW, the line-height
property of the newline overrides the 'line-spacing' property of the
same newline.

I've updated the manual to be more accurate about this.  But other
than that, this is not a bug in the code.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#62048; Package emacs. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 8 Mar 2023 12:17:51 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Mar 08 07:17:51 2023
Received: from localhost ([127.0.0.1]:48000 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pZsju-0007yj-R0
	for submit <at> debbugs.gnu.org; Wed, 08 Mar 2023 07:17:51 -0500
Received: from lists.gnu.org ([209.51.188.17]:44582)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1pZsjs-0007yZ-Op
 for submit <at> debbugs.gnu.org; Wed, 08 Mar 2023 07:17:49 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10])
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <yantar92@HIDDEN>)
 id 1pZsjs-0000dN-J0
 for bug-gnu-emacs@HIDDEN; Wed, 08 Mar 2023 07:17:48 -0500
Received: from mout01.posteo.de ([185.67.36.65])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <yantar92@HIDDEN>)
 id 1pZsjp-0000R2-AQ
 for bug-gnu-emacs@HIDDEN; Wed, 08 Mar 2023 07:17:48 -0500
Received: from submission (posteo.de [185.67.36.169]) 
 by mout01.posteo.de (Postfix) with ESMTPS id C32A0240569
 for <bug-gnu-emacs@HIDDEN>; Wed,  8 Mar 2023 13:17:41 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1678277861; bh=AA/D/TO8kWNbce1Zx9AJ62hpYvyuO4W92LLiY09gXU8=;
 h=From:To:Subject:Date:From;
 b=V10QpjDyxp5Y91cSKqY6JuTmjki3yukSsxzFxfdNQGZpm6IazJmVWJ314MGJRGjly
 tcpX72COgsubLFeytjY3KtiWSwex8qh0Dg/m8wJzYR2i9tFzUsCU/udGUBE5BL8Hu+
 PTEkZis+wxr5zcqr/sf0GR+9RgMO5dRFrhYebAvZc0/gf42LI5xBImQWaKZgDYLca5
 ZG12GTv+WmcJJAdjBTExUT2nTwfHQLpaQdBot4QAtsrbgzqXqq/QyZkFE2ckBJBrGW
 7rnU9IAmNypBQdc4vuQXp9IUhJvOW+m5scokjiNP7E93KWWpauTo6qEasBMuey6XND
 DgrF9ianz1OgA==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4PWrtB6lWRz9rxQ
 for <bug-gnu-emacs@HIDDEN>; Wed,  8 Mar 2023 13:17:37 +0100 (CET)
From: Ihor Radchenko <yantar92@HIDDEN>
To: bug-gnu-emacs@HIDDEN
Subject: 30.0.50; Non-nil `line-spacing' takes precendence over 'line-height
 t text property
Date: Wed, 08 Mar 2023 12:18:59 +0000
Message-ID: <87ilfbe8r0.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Received-SPF: pass client-ip=185.67.36.65; envelope-from=yantar92@HIDDEN;
 helo=mout01.posteo.de
X-Spam_score_int: -43
X-Spam_score: -4.4
X-Spam_bar: ----
X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,
 RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001,
 SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: -1.3 (-)
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -2.3 (--)

Hi,

According to 41.11 Line Height section of Elisp manual,

       A newline can have a =E2=80=98line-height=E2=80=99 text or overlay p=
roperty that
    controls the total height of the display line ending in that newline.
    The property value can be one of several forms:
=20=20=20=20
    =E2=80=98t=E2=80=99
         If the property value is =E2=80=98t=E2=80=99, the newline characte=
r has no effect
         on the displayed height of the line=E2=80=94the visible contents a=
lone
         determine the height.  The =E2=80=98line-spacing=E2=80=99 property=
, described
         below, is also ignored in this case.  This is useful for tiling
         small images (or image slices) without adding blank areas between
         the images.

AFAIU, it implies that buffer-local `line-spacing' value is also
ignored.

Consider the following minimal example:

1. emacs -Q
2. (setq-default line-spacing 0.15)
3. (with-silent-modifications (insert-sliced-image (create-image "/path/to/=
some/image") nil nil 10 nil))

Expected: the spliced image is displayed without gaps.
Observed: visible gaps between image rows

If I understand correctly, `insert-sliced-image' tries to avoid the gaps
by (insert (propertize "\n" 'line-height t)). But it does not seem to be
working.

Am I missing something?

In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, cairo version
 1.17.6) of 2023-02-13 built on localhost
Repository revision: df5c1c9370ca3c6a6e119278ef6bb1e3bca4d578
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12101007
System Description: Gentoo Linux

--=20
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Acknowledgement sent to Ihor Radchenko <yantar92@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to bug-gnu-emacs@HIDDEN:
bug#62048; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Sat, 11 Mar 2023 12:30:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.