GNU bug report logs - #22404
25.1.50; Forcing `window-scroll-functions` to run.

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; Severity: wishlist; Reported by: Keith David Bershatsky <esq@HIDDEN>; dated Tue, 19 Jan 2016 05:50:01 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.

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


Received: (at 22404) by debbugs.gnu.org; 11 Mar 2016 16:21:37 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Mar 11 11:21:37 2016
Received: from localhost ([127.0.0.1]:45322 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aePon-0007aO-5y
	for submit <at> debbugs.gnu.org; Fri, 11 Mar 2016 11:21:37 -0500
Received: from cobb.liquidweb.com ([50.28.13.150]:53730)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <esq@HIDDEN>) id 1aePok-0007aB-Qb
 for 22404 <at> debbugs.gnu.org; Fri, 11 Mar 2016 11:21:35 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lawlist.com;
 s=default; 
 h=Content-Type:MIME-Version:Subject:Cc:To:From:Message-ID:Date;
 bh=0zgDdhtENCwQNaMKMRyF2JdyG6pontMOFQHYt/pZzGc=; 
 b=0E6RIW+RYTK9Jykh0s0tDJttW+RWjOIw+Gn/+Kt1RZF43GX6JvHddrbnhP9VuCnDWb9sCx7EG3+Jm4WkOOeCLjYtV6M+LR92UbduX/EPwvKPdCZ0LzILca0JiarLLQc0;
Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:50655
 helo=server.private.localhost)
 by cobb.liquidweb.com with esmtp (Exim 4.82)
 (envelope-from <esq@HIDDEN>)
 id 1aePoZ-000109-9W; Fri, 11 Mar 2016 11:21:23 -0500
Date: Fri, 11 Mar 2016 08:21:26 -0800
Message-ID: <m2r3fhyohl.wl%esq@HIDDEN>
From: Keith David Bershatsky <esq@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
MIME-Version: 1.0 (generated by   - "")
Content-Type: multipart/mixed; boundary="Multipart_Fri_Mar_11_08:21:24_2016-1"
X-AntiAbuse: This header was added to track abuse,
 please include it with any abuse report
X-AntiAbuse: Primary Hostname - cobb.liquidweb.com
X-AntiAbuse: Original Domain - debbugs.gnu.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - lawlist.com
X-Get-Message-Sender-Via: cobb.liquidweb.com: acl_c_relayhosts_text_entry:
 lawlist|lawlist.com
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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: -0.7 (/)

--Multipart_Fri_Mar_11_08:21:24_2016-1
Content-Type: text/plain; charset=US-ASCII

Attached is the next draft of the `window-start-end-hook`, which applies to the master branch as of commit "ea626c72e590aa7a45fd26df42240854e4225cef" on March 10, 2015.

The primary addition is a new location for the hook to be called when scrolling with the mouse-wheel.  A couple of pointers were added to store window/start-end values.  Miscellaneous unrelated new/experimental features have been removed from the patch.  The usage is as follows:


(defun window-start-end-hook-fn (win start end pbol-start peol-end fully-p)
  (message "win: %s | start: %s | end: %s | pbol-start: %s | peol-end: %s | fully-p: %s"
    win start end pbol-start peol-end fully-p))

(add-hook 'window-start-end-hook 'window-start-end-hook-fn nil t)



--Multipart_Fri_Mar_11_08:21:24_2016-1
Content-Type: application/diff; type=patch
Content-Disposition: attachment; filename="window_start_end_hook.diff"
Content-Transfer-Encoding: base64

ZGlmZiAtLWdpdCBhL3NyYy9idWZmZXIuYyBiL3NyYy9idWZmZXIuYwppbmRleCA5OGI2MWMzLi5i
YTM3Y2JjIDEwMDY0NAotLS0gYS9zcmMvYnVmZmVyLmMKKysrIGIvc3JjL2J1ZmZlci5jCkBAIC01
MDczLDYgKzUwNzMsNyBAQCBpbml0X2J1ZmZlcl9vbmNlICh2b2lkKQogICBYU0VURkFTVElOVCAo
QlZBUiAoJmJ1ZmZlcl9sb2NhbF9mbGFncywgZGlzcGxheV90YWJsZSksIGlkeCk7ICsraWR4Owog
ICBYU0VURkFTVElOVCAoQlZBUiAoJmJ1ZmZlcl9sb2NhbF9mbGFncywgc3ludGF4X3RhYmxlKSwg
aWR4KTsgKytpZHg7CiAgIFhTRVRGQVNUSU5UIChCVkFSICgmYnVmZmVyX2xvY2FsX2ZsYWdzLCBj
YWNoZV9sb25nX3NjYW5zKSwgaWR4KTsgKytpZHg7CisgIFhTRVRGQVNUSU5UIChCVkFSICgmYnVm
ZmVyX2xvY2FsX2ZsYWdzLCB3aW5kb3dfc3RhcnRfZW5kX2hvb2spLCBpZHgpOyArK2lkeDsKICAg
WFNFVEZBU1RJTlQgKEJWQVIgKCZidWZmZXJfbG9jYWxfZmxhZ3MsIGNhdGVnb3J5X3RhYmxlKSwg
aWR4KTsgKytpZHg7CiAgIFhTRVRGQVNUSU5UIChCVkFSICgmYnVmZmVyX2xvY2FsX2ZsYWdzLCBi
aWRpX2Rpc3BsYXlfcmVvcmRlcmluZyksIGlkeCk7ICsraWR4OwogICBYU0VURkFTVElOVCAoQlZB
UiAoJmJ1ZmZlcl9sb2NhbF9mbGFncywgYmlkaV9wYXJhZ3JhcGhfZGlyZWN0aW9uKSwgaWR4KTsg
KytpZHg7CkBAIC01MTY2LDYgKzUxNjcsNyBAQCBpbml0X2J1ZmZlcl9vbmNlICh2b2lkKQogICBY
U0VURkFTVElOVCAoQlZBUiAoJmJ1ZmZlcl9kZWZhdWx0cywgZmlsbF9jb2x1bW4pLCA3MCk7CiAg
IFhTRVRGQVNUSU5UIChCVkFSICgmYnVmZmVyX2RlZmF1bHRzLCBsZWZ0X21hcmdpbiksIDApOwog
ICBic2V0X2NhY2hlX2xvbmdfc2NhbnMgKCZidWZmZXJfZGVmYXVsdHMsIFF0KTsKKyAgYnNldF93
aW5kb3dfc3RhcnRfZW5kX2hvb2sgKCZidWZmZXJfZGVmYXVsdHMsIFFuaWwpOwogICBic2V0X2Zp
bGVfdHJ1ZW5hbWUgKCZidWZmZXJfZGVmYXVsdHMsIFFuaWwpOwogICBYU0VURkFTVElOVCAoQlZB
UiAoJmJ1ZmZlcl9kZWZhdWx0cywgZGlzcGxheV9jb3VudCksIDApOwogICBYU0VURkFTVElOVCAo
QlZBUiAoJmJ1ZmZlcl9kZWZhdWx0cywgbGVmdF9tYXJnaW5fY29scyksIDApOwpAQCAtNTM3OSw2
ICs1MzgxLDggQEAgc3ltc19vZl9idWZmZXIgKHZvaWQpCiAgIHN0YXRpY3BybyAoJlFTRnVuZGFt
ZW50YWwpOwogICBzdGF0aWNwcm8gKCZWYnVmZmVyX2FsaXN0KTsKIAorICBERUZTWU0gKFF3aW5k
b3dfc3RhcnRfZW5kX2hvb2ssICJ3aW5kb3ctc3RhcnQtZW5kLWhvb2siKTsKKwogICBERUZTWU0g
KFFjaG9pY2UsICJjaG9pY2UiKTsKICAgREVGU1lNIChRbGVmdCwgImxlZnQiKTsKICAgREVGU1lN
IChRcmlnaHQsICJyaWdodCIpOwpAQCAtNjE0OCw2ICs2MTUyLDExIEBAIG1haW50YWluZWQgaW50
ZXJuYWxseSBieSB0aGUgRW1hY3MgcHJpbWl0aXZlcy4gIEVuYWJsaW5nIG9yIGRpc2FibGluZwog
dGhlIGNhY2hlIHNob3VsZCBub3QgYWZmZWN0IHRoZSBiZWhhdmlvciBvZiBhbnkgb2YgdGhlIG1v
dGlvbgogZnVuY3Rpb25zOyBpdCBzaG91bGQgb25seSBhZmZlY3QgdGhlaXIgcGVyZm9ybWFuY2Uu
ICAqLyk7CiAKKyAgREVGVkFSX1BFUl9CVUZGRVIgKCJ3aW5kb3ctc3RhcnQtZW5kLWhvb2siLCAm
QlZBUiAoY3VycmVudF9idWZmZXIsIHdpbmRvd19zdGFydF9lbmRfaG9vayksIFFuaWwsCisgICAg
ZG9jOiAvKiBBIGJ1ZmVyLWxvY2FsIGhvb2sgdXNlZCB0byBvYnRhaW4gbmV3IGB3aW5kb3ctc3Rh
cnRgIGFuZCBgd2luZG93LWVuZGAKK2R1cmluZyByZWRpc3BsYXkuICBUaGUgZnVuY3Rpb24gYXR0
YWNoZWQgdG8gdGhpcyBob29rIGhhcyB0aGUgZm9sbG93aW5nIGFyZ3VtZW50czoKK1dJTkRPVywg
V0lORE9XLVNUQVJULCBXSU5ET1ctRU5ELCBQQk9MLVNUQVJULCBQRU9MLUVORCwgRlVMTFktUC4g
ICovKTsKKwogICBERUZWQVJfUEVSX0JVRkZFUiAoInBvaW50LWJlZm9yZS1zY3JvbGwiLCAmQlZB
UiAoY3VycmVudF9idWZmZXIsIHBvaW50X2JlZm9yZV9zY3JvbGwpLCBRbmlsLAogCQkgICAgIGRv
YzogLyogVmFsdWUgb2YgcG9pbnQgYmVmb3JlIHRoZSBsYXN0IHNlcmllcyBvZiBzY3JvbGwgb3Bl
cmF0aW9ucywgb3IgbmlsLiAgKi8pOwogCmRpZmYgLS1naXQgYS9zcmMvYnVmZmVyLmggYi9zcmMv
YnVmZmVyLmgKaW5kZXggNTc4M2JmYi4uMzVlZGRmYiAxMDA2NDQKLS0tIGEvc3JjL2J1ZmZlci5o
CisrKyBiL3NyYy9idWZmZXIuaApAQCAtNjQzLDYgKzY0Myw5IEBAIHN0cnVjdCBidWZmZXIKICAg
ICAgY2FjaGUgYXJlIGVuYWJsZWQuICBTZWUgc2VhcmNoLmMsIGluZGVudC5jIGFuZCBiaWRpLmMg
Zm9yIGRldGFpbHMuICAqLwogICBMaXNwX09iamVjdCBjYWNoZV9sb25nX3NjYW5zXzsKIAorICAv
KiBUaGUgbmFtZSBvZiB0aGUgaG9vay4gICovCisgIExpc3BfT2JqZWN0IHdpbmRvd19zdGFydF9l
bmRfaG9va187CisKICAgLyogSWYgdGhlIHdpZHRoIHJ1biBjYWNoZSBpcyBlbmFibGVkLCB0aGlz
IHRhYmxlIGNvbnRhaW5zIHRoZQogICAgICBjaGFyYWN0ZXIgd2lkdGhzIHdpZHRoX3J1bl9jYWNo
ZSAoc2VlIGFib3ZlKSBhc3N1bWVzLiAgV2hlbiB3ZQogICAgICBkbyBhIHRob3JvdWdoIHJlZGlz
cGxheSwgd2UgY29tcGFyZSB0aGlzIGFnYWluc3QgdGhlIGJ1ZmZlcidzCkBAIC04ODUsNiArODg4
LDExIEBAIHN0cnVjdCBidWZmZXIKICAgIGJ1ZmZlci4gIChTb21lIHNldHRlcnMgdGhhdCBhcmUg
cHJpdmF0ZSB0byBhIHNpbmdsZSAuYyBmaWxlIGFyZQogICAgZGVmaW5lZCBhcyBzdGF0aWMgaW4g
dGhvc2UgZmlsZXMuKSAgKi8KIElOTElORSB2b2lkCitic2V0X3dpbmRvd19zdGFydF9lbmRfaG9v
ayAoc3RydWN0IGJ1ZmZlciAqYiwgTGlzcF9PYmplY3QgdmFsKQoreworICBiLT53aW5kb3dfc3Rh
cnRfZW5kX2hvb2tfID0gdmFsOworfQorSU5MSU5FIHZvaWQKIGJzZXRfYmlkaV9wYXJhZ3JhcGhf
ZGlyZWN0aW9uIChzdHJ1Y3QgYnVmZmVyICpiLCBMaXNwX09iamVjdCB2YWwpCiB7CiAgIGItPmJp
ZGlfcGFyYWdyYXBoX2RpcmVjdGlvbl8gPSB2YWw7CmRpZmYgLS1naXQgYS9zcmMva2V5Ym9hcmQu
YyBiL3NyYy9rZXlib2FyZC5jCmluZGV4IDRlMWFjMTUuLjMyOWNiYTAgMTAwNjQ0Ci0tLSBhL3Ny
Yy9rZXlib2FyZC5jCisrKyBiL3NyYy9rZXlib2FyZC5jCkBAIC0xMjQ0LDYgKzEyNDQsMTUgQEAg
c3RhdGljIGludCByZWFkX2tleV9zZXF1ZW5jZSAoTGlzcF9PYmplY3QgKiwgaW50LCBMaXNwX09i
amVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wsIGJvb2wsIGJvb2wsIGJv
b2wpOwogc3RhdGljIHZvaWQgYWRqdXN0X3BvaW50X2Zvcl9wcm9wZXJ0eSAocHRyZGlmZl90LCBi
b29sKTsKIAorc3RhdGljIHZvaWQKK3NldF93aW5kb3dfc3RhcnRfZW5kX2hvb2sgKHZvaWQpCit7
CisgIExpc3BfT2JqZWN0IHdpbmRvdyA9IChzZWxlY3RlZF93aW5kb3cpOworICBzdHJ1Y3Qgd2lu
ZG93ICp3ID0gZGVjb2RlX2xpdmVfd2luZG93ICh3aW5kb3cpOworICB3LT53aW5kb3dfc3RhcnRf
ZW5kX2hvb2tfZm9yY2UgPSB0cnVlOworICB3LT53aW5kb3dfc3RhcnRfZW5kX2hvb2tfcGVuZGlu
ZyA9IHRydWU7Cit9CisKIExpc3BfT2JqZWN0CiBjb21tYW5kX2xvb3BfMSAodm9pZCkKIHsKQEAg
LTEyNjksNiArMTI3OCw4IEBAIGNvbW1hbmRfbG9vcF8xICh2b2lkKQogICAgICAgaWYgKCFOSUxQ
IChWcG9zdF9jb21tYW5kX2hvb2spICYmICFOSUxQIChWcnVuX2hvb2tzKSkKIAlzYWZlX3J1bl9o
b29rcyAoUXBvc3RfY29tbWFuZF9ob29rKTsKIAorICAgICAgc2V0X3dpbmRvd19zdGFydF9lbmRf
aG9vayAoKTsKKwogICAgICAgLyogSWYgZGlzcGxheWluZyBhIG1lc3NhZ2UsIHJlc2l6ZSB0aGUg
ZWNobyBhcmVhIHdpbmRvdyB0byBmaXQKIAkgdGhhdCBtZXNzYWdlJ3Mgc2l6ZSBleGFjdGx5LiAg
Ki8KICAgICAgIGlmICghTklMUCAoZWNob19hcmVhX2J1ZmZlclswXSkpCkBAIC0xNDg1LDYgKzE0
OTYsOCBAQCBjb21tYW5kX2xvb3BfMSAodm9pZCkKIAogICAgICAgc2FmZV9ydW5faG9va3MgKFFw
b3N0X2NvbW1hbmRfaG9vayk7CiAKKyAgICAgIHNldF93aW5kb3dfc3RhcnRfZW5kX2hvb2sgKCk7
CisKICAgICAgIC8qIElmIGRpc3BsYXlpbmcgYSBtZXNzYWdlLCByZXNpemUgdGhlIGVjaG8gYXJl
YSB3aW5kb3cgdG8gZml0CiAJIHRoYXQgbWVzc2FnZSdzIHNpemUgZXhhY3RseS4gICovCiAgICAg
ICBpZiAoIU5JTFAgKGVjaG9fYXJlYV9idWZmZXJbMF0pKQpkaWZmIC0tZ2l0IGEvc3JjL3dpbmRv
dy5oIGIvc3JjL3dpbmRvdy5oCmluZGV4IDJjMDMwMzMuLjVjZDU4YjUgMTAwNjQ0Ci0tLSBhL3Ny
Yy93aW5kb3cuaAorKysgYi9zcmMvd2luZG93LmgKQEAgLTM5NSw2ICszOTUsMTYgQEAgc3RydWN0
IHdpbmRvdwogICAgIC8qIFpfQllURSAtIGJ1ZmZlciBwb3NpdGlvbiBvZiB0aGUgbGFzdCBnbHlw
aCBpbiB0aGUgY3VycmVudCBtYXRyaXggb2YgVy4KICAgICAgICBTaG91bGQgYmUgbm9ubmVnYXRp
dmUsIGFuZCBvbmx5IHZhbGlkIGlmIHdpbmRvd19lbmRfdmFsaWQgaXMgdHJ1ZS4gICovCiAgICAg
cHRyZGlmZl90IHdpbmRvd19lbmRfYnl0ZXBvczsKKworICAgIC8qIFRydWUgbWVhbnMgZm9yY2Ug
YSBjYWxsIHRvIFZ3aW5kb3dfc3RhcnRfZW5kX2hvb2suICAqLworICAgIGJvb2xfYmYgd2luZG93
X3N0YXJ0X2VuZF9ob29rX2ZvcmNlIDogMTsKKworICAgIC8qIFRydWUgbWVhbnMgdGhlIGhvb2sg
aGFzIG5vdCB5ZXQgcnVuIHdpdGggcG9pbnQgZnVsbHkgdmlzaWJsZS4gICovCisgICAgYm9vbF9i
ZiB3aW5kb3dfc3RhcnRfZW5kX2hvb2tfcGVuZGluZyA6IDE7CisKKyAgICAvKiBWYWx1ZXMgZm9y
IHByZXZpb3VzIGFuZCBjdXJyZW50IGB3aW5kb3ctc3RhcnQnIGFuZCBgd2luZG93LWVuZCcuICAq
LworICAgIGludCB3aW5kb3dfc3RhcnRfZW5kX2hvb2tfaW50X3dpbmRvd19zdGFydCwgd2luZG93
X3N0YXJ0X2VuZF9ob29rX2ludF93aW5kb3dfZW5kLAorICAgICAgICB3aW5kb3dfc3RhcnRfZW5k
X2hvb2tfaW50X3ByZXZpb3VzX3dpbmRvd19zdGFydCwgd2luZG93X3N0YXJ0X2VuZF9ob29rX2lu
dF9wcmV2aW91c193aW5kb3dfZW5kOwogICB9OwogCiAvKiBNb3N0IGNvZGUgc2hvdWxkIHVzZSB0
aGVzZSBmdW5jdGlvbnMgdG8gc2V0IExpc3AgZmllbGRzIGluIHN0cnVjdApkaWZmIC0tZ2l0IGEv
c3JjL3hkaXNwLmMgYi9zcmMveGRpc3AuYwppbmRleCA1Yjk2MTQ0Li4wOWUwYzQ5IDEwMDY0NAot
LS0gYS9zcmMveGRpc3AuYworKysgYi9zcmMveGRpc3AuYwpAQCAtMTM0MTQsNiArMTM0MTQsOTEg
QEAgZG8geyBpZiAoISBwb2xsaW5nX3N0b3BwZWRfaGVyZSkgc3RvcF9wb2xsaW5nICgpOwlcCiBk
byB7IGlmIChwb2xsaW5nX3N0b3BwZWRfaGVyZSkgc3RhcnRfcG9sbGluZyAoKTsJXAogICAgICAg
IHBvbGxpbmdfc3RvcHBlZF9oZXJlID0gZmFsc2U7IH0gd2hpbGUgKGZhbHNlKQogCitzdGF0aWMg
dm9pZAorcnVuX3dpbmRvd19zdGFydF9lbmRfaG9vayAoTGlzcF9PYmplY3Qgd2luZG93LCBzdHJ1
Y3QgdGV4dF9wb3Mgc3RhcnRwLCBFTUFDU19JTlQgcG9zaW50LCBzdHJ1Y3QgaXQgaXQsIGNoYXIg
KnN0cmluZywgYm9vbCBmb3JjZSkKK3sKKyAgc3RydWN0IHdpbmRvdyAqdyA9IGRlY29kZV9saXZl
X3dpbmRvdyAod2luZG93KTsKKyAgTGlzcF9PYmplY3QgYnVmOworICBzdHJ1Y3QgYnVmZmVyICpi
OworICBidWYgPSB3LT5jb250ZW50czsKKyAgQ0hFQ0tfQlVGRkVSIChidWYpOworICBiID0gWEJV
RkZFUiAoYnVmKTsKKyAgc3RydWN0IGJ1ZmZlciAqb2xkX2J1ZmZlciA9IE5VTEw7CisgIHZvaWQg
Kml0ZGF0YSA9IE5VTEw7CisgIGJvb2wgZnVsbHlfcCA9IGZhbHNlOworICBpbnQgeCwgeSwgcnRv
cCwgcmJvdCwgcm93aCwgdnBvcywgc3RhcnRwX2ludGVnZXIsIGVuZHAsIHBib2xfc3RhcnRwLCBw
ZW9sX2VuZHA7CisgIHN0YXJ0cF9pbnRlZ2VyID0gQ0hBUlBPUyAoc3RhcnRwKTsKKyAgaWYgKGIg
IT0gY3VycmVudF9idWZmZXIpCisgICAgeworICAgICAgb2xkX2J1ZmZlciA9IGN1cnJlbnRfYnVm
ZmVyOworICAgICAgc2V0X2J1ZmZlcl9pbnRlcm5hbCAoYik7CisgICAgfQorICBpZiAody0+d2lu
ZG93X3N0YXJ0X2VuZF9ob29rX3BlbmRpbmcKKyAgICAgICYmICFOSUxQIChCVkFSIChjdXJyZW50
X2J1ZmZlciwgd2luZG93X3N0YXJ0X2VuZF9ob29rKSkpCisgICAgeworICAgICAgaWYgKCgocG9z
aW50ID49IENIQVJQT1MgKHN0YXJ0cCkgJiYgcG9zaW50IDw9IEJVRl9aViAoYikpCisgICAgICAg
ICAgICAmJiBDSEFSUE9TIChzdGFydHApID49IEJVRl9CRUdWIChiKQorICAgICAgICAgICAgJiYg
Q0hBUlBPUyAoc3RhcnRwKSA8PSBCVUZfWlYgKGIpCisgICAgICAgICAgICAmJiBwb3NfdmlzaWJs
ZV9wICh3LCBwb3NpbnQsICZ4LCAmeSwgJnJ0b3AsICZyYm90LCAmcm93aCwgJnZwb3MpKSkKKyAg
ICAgICAgZnVsbHlfcCA9ICFydG9wICYmICFyYm90OworICAgICAgaWYgKGZ1bGx5X3ApCisgICAg
ICAgIHsKKyAgICAgICAgICB3LT53aW5kb3dfc3RhcnRfZW5kX2hvb2tfaW50X3ByZXZpb3VzX3dp
bmRvd19zdGFydCA9IHctPndpbmRvd19zdGFydF9lbmRfaG9va19pbnRfd2luZG93X3N0YXJ0Owor
ICAgICAgICAgIHctPndpbmRvd19zdGFydF9lbmRfaG9va19pbnRfd2luZG93X3N0YXJ0ID0gc3Rh
cnRwX2ludGVnZXI7CisgICAgICAgICAgaXRkYXRhID0gYmlkaV9zaGVsdmVfY2FjaGUgKCk7Cisg
ICAgICAgICAgc3RhcnRfZGlzcGxheSAoJml0LCB3LCBzdGFydHApOworICAgICAgICAgIG1vdmVf
aXRfdmVydGljYWxseSAoJml0LCB3aW5kb3dfYm94X2hlaWdodCAodykpOworICAgICAgICAgIGlm
IChpdC5jdXJyZW50X3kgPCBpdC5sYXN0X3Zpc2libGVfeSkKKyAgICAgICAgICAgIG1vdmVfaXRf
cGFzdF9lb2wgKCZpdCk7CisgICAgICAgICAgZW5kcCA9IChJVF9DSEFSUE9TIChpdCkpOworICAg
ICAgICAgIHctPndpbmRvd19zdGFydF9lbmRfaG9va19pbnRfcHJldmlvdXNfd2luZG93X2VuZCA9
IHctPndpbmRvd19zdGFydF9lbmRfaG9va19pbnRfd2luZG93X2VuZDsKKyAgICAgICAgICB3LT53
aW5kb3dfc3RhcnRfZW5kX2hvb2tfaW50X3dpbmRvd19lbmQgPSBlbmRwOworICAgICAgICAgIGJp
ZGlfdW5zaGVsdmVfY2FjaGUgKGl0ZGF0YSwgZmFsc2UpOworICAgICAgICAgIFNFVF9QVCAoc3Rh
cnRwX2ludGVnZXIpOworICAgICAgICAgIHBib2xfc3RhcnRwID0gWElOVCAoRmxpbmVfYmVnaW5u
aW5nX3Bvc2l0aW9uIChRbmlsKSk7CisgICAgICAgICAgU0VUX1BUIChlbmRwKTsKKyAgICAgICAg
ICBwZW9sX2VuZHAgPSBYSU5UIChGbGluZV9lbmRfcG9zaXRpb24gKFFuaWwpKTsKKyAgICAgICAg
ICBTRVRfUFQgKHBvc2ludCk7CisjaWZkZWYgR0xZUEhfREVCVUcKKyAgICAgICAgICBkZWJ1Z19t
ZXRob2RfYWRkICh3LCAiJXMgLS0geDogJWQgfCB5OiAlZCB8IHN0YXJ0cDogJWQgfCBlbmRwOiAl
ZCB8IHBib2xfc3RhcnRwOiAlZCB8IHBlb2xfZW5kcDogJWQiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cmluZywgeCwgeSwgc3RhcnRwX2ludGVnZXIsIGVuZHAsIHBib2xfc3Rh
cnRwLCBwZW9sX2VuZHApOworI2VuZGlmCisgICAgICAgICAgLyogUmVzZXQgdGhlIGZsYWcgX2Jl
Zm9yZV8gY2FsbGluZyBMaXNwLCBub3QgYWZ0ZXIsIHNvIHRoYXQKKyAgICAgICAgICAgICBpZiBM
aXNwIGRvZXMgc2lnbmFsIGFuIGVycm9yLCB0aGUgZmxhZyB3aWxsIGJlIHJlc2V0LCBhbmQKKyAg
ICAgICAgICAgICB3b24ndCBjYXVzZSB0aGUgaG9vayB0byBiZSBjYWxsZWQgYWQgbmF1c2VhbS4g
ICovCisgICAgICAgICAgdy0+d2luZG93X3N0YXJ0X2VuZF9ob29rX3BlbmRpbmcgPSBmYWxzZTsK
KyAgICAgICAgICAvKiBXaGVuIGNhbGxpbmcgTGlzcCBmcm9tIHJlZGlzcGxheSwgYWx3YXlzIHVz
ZSBzYWZlX2NhbGwsIHRvIGJlCisgICAgICAgICAgICAgcHJvdGVjdGVkIGFnYWluc3QgZXJyb3Jz
IHNpZ25hbGVkIGJ5IHRoYXQgTGlzcC4gICovCisgICAgICAgICAgLyogc2FmZV9jYWxsOiAgZm4s
IGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUsIGFyZzYsIGFyZzcgICovCisgICAgICAgICAg
c2FmZV9jYWxsICg4LAorICAgICAgICAgICAgICBRcnVuX2hvb2tfd2l0aF9hcmdzLAorICAgICAg
ICAgICAgICBRd2luZG93X3N0YXJ0X2VuZF9ob29rLAorICAgICAgICAgICAgICB3aW5kb3csCisg
ICAgICAgICAgICAgIG1ha2VfbnVtYmVyIChzdGFydHBfaW50ZWdlciksCisgICAgICAgICAgICAg
IG1ha2VfbnVtYmVyIChlbmRwKSwKKyAgICAgICAgICAgICAgbWFrZV9udW1iZXIgKHBib2xfc3Rh
cnRwKSwKKyAgICAgICAgICAgICAgbWFrZV9udW1iZXIgKHBlb2xfZW5kcCksCisgICAgICAgICAg
ICAgIGZ1bGx5X3AgPyBRdCA6IFFuaWwpOworICAgICAgICAgIC8qIEF0IHRoZSBjYXRjaC1hbGwg
d2hlbiBzY3JvbGxpbmcgd2l0aCB0aGUgbW91c2Ugd2hlZWwsIHRoaXMgbmV4dCBzZWN0aW9uIGNh
dXNlcyBhIHZpc3VhbCBmbGFzaAorICAgICAgICAgIG9mIGN1cnNvciBpbiB0aGUgd3JvbmcgcG9z
aXRpb24gZHVlIHRvIFNFVF9QVCBhYm92ZS4gICovCisgICAgICAgICAgaWYgKGZvcmNlKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICBjbGVhcl9nbHlwaF9tYXRyaXggKHctPmRlc2lyZWRf
bWF0cml4KTsKKyAgICAgICAgICAgICAgdHJ5X3dpbmRvdyAod2luZG93LCBzdGFydHAsIDApOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICB7CisjaWZk
ZWYgR0xZUEhfREVCVUcKKyAgICAgICAgICAgIC8qIFNlZSB0aGUgZG9jLXN0cmluZyBmb3IgYHBv
cy12aXNpYmxlLWluLXdpbmRvdy1wJy4gICovCisgICAgICAgICAgICBkZWJ1Z19tZXRob2RfYWRk
ICh3LCAiJXMgLS0geDogJWQgfCB5OiAlZCB8IHJ0b3A6ICVkIHwgcmJvdCAlZCB8IHJvd2g6ICVk
IHwgdnBvczogJWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nLCB4
LCB5LCBydG9wLCByYm90LCByb3doLCB2cG9zKTsKKyNlbmRpZgorICAgICAgICAgIH0KKyAgICB9
CisgIGlmIChvbGRfYnVmZmVyKQorICAgIHNldF9idWZmZXJfaW50ZXJuYWwgKG9sZF9idWZmZXIp
OworfQogCiAvKiBQZXJoYXBzIGluIHRoZSBmdXR1cmUgYXZvaWQgcmVjZW50ZXJpbmcgd2luZG93
cyBpZiBpdAogICAgaXMgbm90IG5lY2Vzc2FyeTsgY3VycmVudGx5IHRoYXQgY2F1c2VzIHNvbWUg
cHJvYmxlbXMuICAqLwpAQCAtMTM2ODcsNiArMTM3NzIsNyBAQCByZWRpc3BsYXlfaW50ZXJuYWwg
KHZvaWQpCiAgICAgICAmJiBtYXRjaF9wCiAgICAgICAmJiAhdy0+Zm9yY2Vfc3RhcnQKICAgICAg
ICYmICF3LT5vcHRpb25hbF9uZXdfc3RhcnQKKyAgICAgICYmICF3LT53aW5kb3dfc3RhcnRfZW5k
X2hvb2tfZm9yY2UKICAgICAgIC8qIFBvaW50IG11c3QgYmUgb24gdGhlIGxpbmUgdGhhdCB3ZSBo
YXZlIGluZm8gcmVjb3JkZWQgYWJvdXQuICAqLwogICAgICAgJiYgUFQgPj0gQ0hBUlBPUyAodGxi
dWZwb3MpCiAgICAgICAmJiBQVCA8PSBaIC0gQ0hBUlBPUyAodGxlbmRwb3MpCkBAIC0xNTM4OCw2
ICsxNTQ3NCw4IEBAIHRyeV9zY3JvbGxpbmcgKExpc3BfT2JqZWN0IHdpbmRvdywgYm9vbCBqdXN0
X3RoaXNfb25lX3AsCiAgIC8qIFJ1biB3aW5kb3cgc2Nyb2xsIGZ1bmN0aW9ucy4gICovCiAgIHN0
YXJ0cCA9IHJ1bl93aW5kb3dfc2Nyb2xsX2Z1bmN0aW9ucyAod2luZG93LCBzdGFydHApOwogCisg
IHJ1bl93aW5kb3dfc3RhcnRfZW5kX2hvb2sgKHdpbmRvdywgc3RhcnRwLCBQVCwgaXQsICJ0cnlf
c2Nyb2xsaW5nIiwgZmFsc2UpOworCiAgIC8qIERpc3BsYXkgdGhlIHdpbmRvdy4gIEdpdmUgdXAg
aWYgbmV3IGZvbnRzIGFyZSBsb2FkZWQsIG9yIGlmIHBvaW50CiAgICAgIGRvZXNuJ3QgYXBwZWFy
LiAgKi8KICAgaWYgKCF0cnlfd2luZG93ICh3aW5kb3csIHN0YXJ0cCwgMCkpCkBAIC0xNjA1Myw2
ICsxNjE0MSw3IEBAIHJlZGlzcGxheV93aW5kb3cgKExpc3BfT2JqZWN0IHdpbmRvdywgYm9vbCBq
dXN0X3RoaXNfb25lX3ApCiAgIHB0cmRpZmZfdCBiZWdfdW5jaGFuZ2VkLCBlbmRfdW5jaGFuZ2Vk
OwogICBpbnQgZnJhbWVfbGluZV9oZWlnaHQ7CiAgIGJvb2wgdXNlX2Rlc2lyZWRfbWF0cml4Owor
ICBib29sIHdpbmRvd19zdGFydF9lbmRfaG9va19zdXBwcmVzc193c2YgPSBmYWxzZTsKIAogICBT
RVRfVEVYVF9QT1MgKGxwb2ludCwgUFQsIFBUX0JZVEUpOwogICBvcG9pbnQgPSBscG9pbnQ7CkBA
IC0xNjI0MywxMyArMTYzMzIsMTYgQEAgcmVkaXNwbGF5X3dpbmRvdyAoTGlzcF9PYmplY3Qgd2lu
ZG93LCBib29sIGp1c3RfdGhpc19vbmVfcCkKIAogICAvKiBJZiBzb21lb25lIHNwZWNpZmllZCBh
IG5ldyBzdGFydGluZyBwb2ludCBidXQgZGlkIG5vdCBpbnNpc3QsCiAgICAgIGNoZWNrIHdoZXRo
ZXIgaXQgY2FuIGJlIHVzZWQuICAqLwotICBpZiAoKHctPm9wdGlvbmFsX25ld19zdGFydCB8fCB3
aW5kb3dfZnJvemVuX3AgKHcpKQorICBpZiAoKHctPm9wdGlvbmFsX25ld19zdGFydCB8fCB3LT53
aW5kb3dfc3RhcnRfZW5kX2hvb2tfZm9yY2UgfHwgd2luZG93X2Zyb3plbl9wICh3KSkKICAgICAg
ICYmIENIQVJQT1MgKHN0YXJ0cCkgPj0gQkVHVgogICAgICAgJiYgQ0hBUlBPUyAoc3RhcnRwKSA8
PSBaVikKICAgICB7CisKKyAgICAgIGlmICh3LT53aW5kb3dfc3RhcnRfZW5kX2hvb2tfZm9yY2Ug
JiYgIXctPm9wdGlvbmFsX25ld19zdGFydCAmJiAhd2luZG93X2Zyb3plbl9wICh3KSAmJiAhdy0+
Zm9yY2Vfc3RhcnQpCisgICAgICAgIHdpbmRvd19zdGFydF9lbmRfaG9va19zdXBwcmVzc193c2Yg
PSB0cnVlOworCiAgICAgICBwdHJkaWZmX3QgaXRfY2hhcnBvczsKIAotICAgICAgdy0+b3B0aW9u
YWxfbmV3X3N0YXJ0ID0gZmFsc2U7CiAgICAgICBzdGFydF9kaXNwbGF5ICgmaXQsIHcsIHN0YXJ0
cCk7CiAgICAgICBtb3ZlX2l0X3RvICgmaXQsIFBULCAwLCBpdC5sYXN0X3Zpc2libGVfeSwgLTEs
CiAJCSAgTU9WRV9UT19QT1MgfCBNT1ZFX1RPX1ggfCBNT1ZFX1RPX1kpOwpAQCAtMTYyNzAsMTQg
KzE2MzYyLDI4IEBAIHJlZGlzcGxheV93aW5kb3cgKExpc3BfT2JqZWN0IHdpbmRvdywgYm9vbCBq
dXN0X3RoaXNfb25lX3ApCiAJICAgIHctPmZvcmNlX3N0YXJ0ID0gdHJ1ZTsKICNpZmRlZiBHTFlQ
SF9ERUJVRwogCSAgaWYgKHctPmZvcmNlX3N0YXJ0KQotCSAgICB7Ci0JICAgICAgaWYgKHdpbmRv
d19mcm96ZW5fcCAodykpCi0JCWRlYnVnX21ldGhvZF9hZGQgKHcsICJzZXQgZm9yY2Vfc3RhcnQg
ZnJvbSBmcm96ZW4gd2luZG93IHN0YXJ0Iik7Ci0JICAgICAgZWxzZQotCQlkZWJ1Z19tZXRob2Rf
YWRkICh3LCAic2V0IGZvcmNlX3N0YXJ0IGZyb20gb3B0aW9uYWxfbmV3X3N0YXJ0Iik7Ci0JICAg
IH0KKyAgICB7CisgICAgICBpZiAod2luZG93X2Zyb3plbl9wICh3KSkKKyAgICAgICAgeworICAg
ICAgICBkZWJ1Z19tZXRob2RfYWRkICh3LCAicmVkaXNwbGF5X3dpbmRvdyAoZm9yY2Vfc3RhcnQp
OiAgd2luZG93X2Zyb3plbl9wICh3KSIpOworICAgICAgfQorICAgICAgZWxzZSBpZiAody0+b3B0
aW9uYWxfbmV3X3N0YXJ0KQorICAgICAgICB7CisgICAgICAgIGRlYnVnX21ldGhvZF9hZGQgKHcs
ICJyZWRpc3BsYXlfd2luZG93IChmb3JjZV9zdGFydCk6ICB3LT5vcHRpb25hbF9uZXdfc3RhcnQi
KTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKHctPndpbmRvd19zdGFydF9lbmRfaG9va19mb3Jj
ZSkKKyAgICAgICAgeworICAgICAgICBkZWJ1Z19tZXRob2RfYWRkICh3LCAicmVkaXNwbGF5X3dp
bmRvdyAoZm9yY2Vfc3RhcnQpOiAgdy0+d2luZG93X3N0YXJ0X2VuZF9ob29rX2ZvcmNlIik7Cisg
ICAgICB9CisgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgZGVidWdfbWV0aG9kX2FkZCAo
dywgInJlZGlzcGxheV93aW5kb3cgKGZvcmNlX3N0YXJ0KTogIFRoaXMgc2l0dWF0aW9uIGlzIG5v
dCB5ZXQgY29udGVtcGxhdGVkLiIpOworICAgICAgfQorICAgIH0KICNlbmRpZgogCX0KKyAgICAg
IHctPm9wdGlvbmFsX25ld19zdGFydCA9IGZhbHNlOworICAgICAgdy0+d2luZG93X3N0YXJ0X2Vu
ZF9ob29rX2ZvcmNlID0gZmFsc2U7CiAgICAgfQogCiAgZm9yY2Vfc3RhcnQ6CkBAIC0xNjMwNSwx
MSArMTY0MTEsMTggQEAgcmVkaXNwbGF5X3dpbmRvdyAoTGlzcF9PYmplY3Qgd2luZG93LCBib29s
IGp1c3RfdGhpc19vbmVfcCkKIAkgdGhhbiB0byBnZXQgaW50byBhbiBpbmZpbml0ZSBsb29wIGNh
bGxpbmcgdGhlIGhvb2sgZnVuY3Rpb25zCiAJIGFuZCBoYXZpbmcgdGhlbSBnZXQgbW9yZSBlcnJv
cnMuICAqLwogICAgICAgaWYgKCF1cGRhdGVfbW9kZV9saW5lCi0JICB8fCAhIE5JTFAgKFZ3aW5k
b3dfc2Nyb2xsX2Z1bmN0aW9ucykpCisJICB8fCAhIE5JTFAgKFZ3aW5kb3dfc2Nyb2xsX2Z1bmN0
aW9ucykKKwkgIHx8ICEgTklMUCAoQlZBUiAoY3VycmVudF9idWZmZXIsIHdpbmRvd19zdGFydF9l
bmRfaG9vaykpKQogCXsKIAkgIHVwZGF0ZV9tb2RlX2xpbmUgPSB0cnVlOwogCSAgdy0+dXBkYXRl
X21vZGVfbGluZSA9IHRydWU7Ci0JICBzdGFydHAgPSBydW5fd2luZG93X3Njcm9sbF9mdW5jdGlv
bnMgKHdpbmRvdywgc3RhcnRwKTsKKworICAvKiBSdW4gd2luZG93IHNjcm9sbCBmdW5jdGlvbnMu
ICAqLworICBpZiAoIXdpbmRvd19zdGFydF9lbmRfaG9va19zdXBwcmVzc193c2YpCisgICAgc3Rh
cnRwID0gcnVuX3dpbmRvd19zY3JvbGxfZnVuY3Rpb25zICh3aW5kb3csIHN0YXJ0cCk7CisKKyAg
cnVuX3dpbmRvd19zdGFydF9lbmRfaG9vayAod2luZG93LCBzdGFydHAsIFBULCBpdCwgInJlZGlz
cGxheV93aW5kb3cgKGZvcmNlX3N0YXJ0KSIsIGZhbHNlKTsKKwogCX0KIAogICAgICAgaWYgKENI
QVJQT1MgKHN0YXJ0cCkgPCBCRUdWKQpAQCAtMTY0NjAsOSArMTY1NzMsMTMgQEAgcmVkaXNwbGF5
X3dpbmRvdyAoTGlzcF9PYmplY3Qgd2luZG93LCBib29sIGp1c3RfdGhpc19vbmVfcCkKIAkgIGdv
dG8gdHJ5X3RvX3Njcm9sbDsKIAl9CiAKKyAgLyogV2hlbiBzY3JvbGxpbmcgd2l0aCB0aGUgbW91
c2Ugd2hlZWwsIFBUIGhhcyBub3QgeWV0IGJlZW4gcmVzZXQgc28gd2UgdXNlIENIQVJQT1MgKHN0
YXJ0cCkuICAqLworICBydW5fd2luZG93X3N0YXJ0X2VuZF9ob29rICh3aW5kb3csIHN0YXJ0cCwg
Q0hBUlBPUyAoc3RhcnRwKSwgaXQsICJyZWRpc3BsYXlfd2luZG93OiAgY2F0Y2gtYWxsIiwgZmFs
c2UpOworCiAjaWZkZWYgR0xZUEhfREVCVUcKLSAgICAgIGRlYnVnX21ldGhvZF9hZGQgKHcsICJm
b3JjZWQgd2luZG93IHN0YXJ0Iik7CisgICAgICBkZWJ1Z19tZXRob2RfYWRkICh3LCAicmVkaXNw
bGF5X3dpbmRvdzogIGZvcmNlZCB3aW5kb3cgc3RhcnQiKTsKICNlbmRpZgorCiAgICAgICBnb3Rv
IGRvbmU7CiAgICAgfQogCkBAIC0xNjU3Nyw2ICsxNjY5NCw3IEBAIHJlZGlzcGxheV93aW5kb3cg
KExpc3BfT2JqZWN0IHdpbmRvdywgYm9vbCBqdXN0X3RoaXNfb25lX3ApCiAJICAgICBiZWNhdXNl
IGEgd2luZG93IHNjcm9sbCBmdW5jdGlvbiBjYW4gaGF2ZSBjaGFuZ2VkIHRoZQogCSAgICAgYnVm
ZmVyLiAgKi8KIAkgIHx8ICFOSUxQIChWd2luZG93X3Njcm9sbF9mdW5jdGlvbnMpCisJICB8fCAh
TklMUCAoQlZBUiAoY3VycmVudF9idWZmZXIsIHdpbmRvd19zdGFydF9lbmRfaG9vaykpCiAJICB8
fCBNSU5JX1dJTkRPV19QICh3KQogCSAgfHwgISh1c2VkX2N1cnJlbnRfbWF0cml4X3AKIAkgICAg
ICAgPSB0cnlfd2luZG93X3JldXNpbmdfY3VycmVudF9tYXRyaXggKHcpKSkKQEAgLTE2Nzc0LDYg
KzE2ODkyLDggQEAgcmVkaXNwbGF5X3dpbmRvdyAoTGlzcF9PYmplY3Qgd2luZG93LCBib29sIGp1
c3RfdGhpc19vbmVfcCkKICAgLyogUnVuIHNjcm9sbCBob29rcy4gICovCiAgIHN0YXJ0cCA9IHJ1
bl93aW5kb3dfc2Nyb2xsX2Z1bmN0aW9ucyAod2luZG93LCBpdC5jdXJyZW50LnBvcyk7CiAKKyAg
cnVuX3dpbmRvd19zdGFydF9lbmRfaG9vayAod2luZG93LCBzdGFydHAsIFBULCBpdCwgInJlZGlz
cGxheV93aW5kb3cgKHJlY2VudGVyKSIsIGZhbHNlKTsKKwogICAvKiBSZWRpc3BsYXkgdGhlIHdp
bmRvdy4gICovCiAgIHVzZV9kZXNpcmVkX21hdHJpeCA9IGZhbHNlOwogICBpZiAoIWN1cnJlbnRf
bWF0cml4X3VwX3RvX2RhdGVfcApAQCAtMTY3ODIsNiArMTY5MDIsNyBAQCByZWRpc3BsYXlfd2lu
ZG93IChMaXNwX09iamVjdCB3aW5kb3csIGJvb2wganVzdF90aGlzX29uZV9wKQogICAgICAgLyog
RG9uJ3QgdXNlIHRyeV93aW5kb3dfcmV1c2luZ19jdXJyZW50X21hdHJpeCBpbiB0aGlzIGNhc2UK
IAkgYmVjYXVzZSBpdCBjYW4gaGF2ZSBjaGFuZ2VkIHRoZSBidWZmZXIuICAqLwogICAgICAgfHwg
IU5JTFAgKFZ3aW5kb3dfc2Nyb2xsX2Z1bmN0aW9ucykKKyAgICAgIHx8ICFOSUxQIChCVkFSIChj
dXJyZW50X2J1ZmZlciwgd2luZG93X3N0YXJ0X2VuZF9ob29rKSkKICAgICAgIHx8ICFqdXN0X3Ro
aXNfb25lX3AKICAgICAgIHx8IE1JTklfV0lORE9XX1AgKHcpCiAgICAgICB8fCAhKHVzZWRfY3Vy
cmVudF9tYXRyaXhfcApAQCAtMTY5MDIsNyArMTcwMjMsMTMgQEAgcmVkaXNwbGF5X3dpbmRvdyAo
TGlzcF9PYmplY3Qgd2luZG93LCBib29sIGp1c3RfdGhpc19vbmVfcCkKIAkgIGNsZWFyX2dseXBo
X21hdHJpeCAody0+ZGVzaXJlZF9tYXRyaXgpOwogCSAgaWYgKDEgPT0gdHJ5X3dpbmRvdyAod2lu
ZG93LCBpdC5jdXJyZW50LnBvcywKIAkJCSAgICAgICBUUllfV0lORE9XX0NIRUNLX01BUkdJTlMp
KQotCSAgICBnb3RvIGRvbmU7CisgICAgeworICAgICAgLyogVG8gYXZvaWQgYSB2aXN1YWwgaGlj
ay11cCwgaXQgaXMgbmVjZXNzYXJ5IHRvIHNldCB0aGUgbGFzdCBhcmd1bWVudCB0byB0cnVlIC0t
IHRoYXQgdHJpZ2dlcnMKKyAgICAgIGBjbGVhcl9nbHlwaF9tYXRyaXgnIGFuZCBgdHJ5X3dpbmRv
dycgYWZ0ZXIgdGhlIGZ1bmN0aW9ucyBhdHRhY2hlZCB0byB0aGUgaG9vayBoYXZlIHJ1bi4gICov
CisgICAgICBydW5fd2luZG93X3N0YXJ0X2VuZF9ob29rICh3aW5kb3csIGl0LmN1cnJlbnQucG9z
LCBQVCwgaXQsICJyZWRpc3BsYXlfd2luZG93IChwb3N0LXJlY2VudGVyKSIsIHRydWUpOworICAg
ICAgZ290byBkb25lOworICAgIH0KKwogCX0KIAogICAgICAgLyogSWYgY2VudGVyaW5nIHBvaW50
IGZhaWxlZCB0byBtYWtlIHRoZSB3aG9sZSBsaW5lIHZpc2libGUsCg==

--Multipart_Fri_Mar_11_08:21:24_2016-1--




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

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


Received: (at 22404) by debbugs.gnu.org; 22 Feb 2016 06:05:27 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 22 01:05:27 2016
Received: from localhost ([127.0.0.1]:36768 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aXjcc-0003Fp-Vr
	for submit <at> debbugs.gnu.org; Mon, 22 Feb 2016 01:05:27 -0500
Received: from cobb.liquidweb.com ([50.28.13.150]:54614)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <esq@HIDDEN>) id 1aXjcb-0003Fd-7v
 for 22404 <at> debbugs.gnu.org; Mon, 22 Feb 2016 01:05:25 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lawlist.com;
 s=default; 
 h=Content-Type:MIME-Version:Subject:Cc:To:From:Message-ID:Date;
 bh=HgyCEsUQo+tWmjxdzpkWF/iekyWNbE1xn1UGvjJrCgQ=; 
 b=zVPAVxEDgVqUfy7IFWn6sIQbBQyq65ir8mE1pnbYCegKa3Hf81pHkOWbUMWkRNXNt27bTSB1ktc5sVUtChv84S4KxywpScynjGlMczUkSZYJPtOXoTOkXlEMgJwPmMFN;
Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:54926
 helo=server.private.localhost)
 by cobb.liquidweb.com with esmtp (Exim 4.82)
 (envelope-from <esq@HIDDEN>)
 id 1aXjcS-00067L-NV; Mon, 22 Feb 2016 01:05:17 -0500
Date: Sun, 21 Feb 2016 22:05:17 -0800
Message-ID: <m2mvqtb7qa.wl%esq@HIDDEN>
From: Keith David Bershatsky <esq@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
MIME-Version: 1.0 (generated by   - "")
Content-Type: multipart/mixed; boundary="Multipart_Sun_Feb_21_22:05:15_2016-1"
X-AntiAbuse: This header was added to track abuse,
 please include it with any abuse report
X-AntiAbuse: Primary Hostname - cobb.liquidweb.com
X-AntiAbuse: Original Domain - debbugs.gnu.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - lawlist.com
X-Get-Message-Sender-Via: cobb.liquidweb.com: acl_c_relayhosts_text_entry:
 lawlist|lawlist.com
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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: -0.7 (/)

--Multipart_Sun_Feb_21_22:05:15_2016-1
Content-Type: text/plain; charset=US-ASCII

Here is the latest draft of the window-start-end-hook.  This is probably about as far as I need to go, unless I discover bugs in the future.  It appears to be working well.

Thanks.

Keith


--Multipart_Sun_Feb_21_22:05:15_2016-1
Content-Type: application/diff; type=patch
Content-Disposition: attachment; filename="window_start_end_hook.diff"
Content-Transfer-Encoding: base64

ZGlmZiAtLWdpdCBhL3NyYy9idWZmZXIuYyBiL3NyYy9idWZmZXIuYwppbmRleCA5OGI2MWMzLi5i
YTM3Y2JjIDEwMDY0NAotLS0gYS9zcmMvYnVmZmVyLmMKKysrIGIvc3JjL2J1ZmZlci5jCkBAIC01
MDczLDYgKzUwNzMsNyBAQCBpbml0X2J1ZmZlcl9vbmNlICh2b2lkKQogICBYU0VURkFTVElOVCAo
QlZBUiAoJmJ1ZmZlcl9sb2NhbF9mbGFncywgZGlzcGxheV90YWJsZSksIGlkeCk7ICsraWR4Owog
ICBYU0VURkFTVElOVCAoQlZBUiAoJmJ1ZmZlcl9sb2NhbF9mbGFncywgc3ludGF4X3RhYmxlKSwg
aWR4KTsgKytpZHg7CiAgIFhTRVRGQVNUSU5UIChCVkFSICgmYnVmZmVyX2xvY2FsX2ZsYWdzLCBj
YWNoZV9sb25nX3NjYW5zKSwgaWR4KTsgKytpZHg7CisgIFhTRVRGQVNUSU5UIChCVkFSICgmYnVm
ZmVyX2xvY2FsX2ZsYWdzLCB3aW5kb3dfc3RhcnRfZW5kX2hvb2spLCBpZHgpOyArK2lkeDsKICAg
WFNFVEZBU1RJTlQgKEJWQVIgKCZidWZmZXJfbG9jYWxfZmxhZ3MsIGNhdGVnb3J5X3RhYmxlKSwg
aWR4KTsgKytpZHg7CiAgIFhTRVRGQVNUSU5UIChCVkFSICgmYnVmZmVyX2xvY2FsX2ZsYWdzLCBi
aWRpX2Rpc3BsYXlfcmVvcmRlcmluZyksIGlkeCk7ICsraWR4OwogICBYU0VURkFTVElOVCAoQlZB
UiAoJmJ1ZmZlcl9sb2NhbF9mbGFncywgYmlkaV9wYXJhZ3JhcGhfZGlyZWN0aW9uKSwgaWR4KTsg
KytpZHg7CkBAIC01MTY2LDYgKzUxNjcsNyBAQCBpbml0X2J1ZmZlcl9vbmNlICh2b2lkKQogICBY
U0VURkFTVElOVCAoQlZBUiAoJmJ1ZmZlcl9kZWZhdWx0cywgZmlsbF9jb2x1bW4pLCA3MCk7CiAg
IFhTRVRGQVNUSU5UIChCVkFSICgmYnVmZmVyX2RlZmF1bHRzLCBsZWZ0X21hcmdpbiksIDApOwog
ICBic2V0X2NhY2hlX2xvbmdfc2NhbnMgKCZidWZmZXJfZGVmYXVsdHMsIFF0KTsKKyAgYnNldF93
aW5kb3dfc3RhcnRfZW5kX2hvb2sgKCZidWZmZXJfZGVmYXVsdHMsIFFuaWwpOwogICBic2V0X2Zp
bGVfdHJ1ZW5hbWUgKCZidWZmZXJfZGVmYXVsdHMsIFFuaWwpOwogICBYU0VURkFTVElOVCAoQlZB
UiAoJmJ1ZmZlcl9kZWZhdWx0cywgZGlzcGxheV9jb3VudCksIDApOwogICBYU0VURkFTVElOVCAo
QlZBUiAoJmJ1ZmZlcl9kZWZhdWx0cywgbGVmdF9tYXJnaW5fY29scyksIDApOwpAQCAtNTM3OSw2
ICs1MzgxLDggQEAgc3ltc19vZl9idWZmZXIgKHZvaWQpCiAgIHN0YXRpY3BybyAoJlFTRnVuZGFt
ZW50YWwpOwogICBzdGF0aWNwcm8gKCZWYnVmZmVyX2FsaXN0KTsKIAorICBERUZTWU0gKFF3aW5k
b3dfc3RhcnRfZW5kX2hvb2ssICJ3aW5kb3ctc3RhcnQtZW5kLWhvb2siKTsKKwogICBERUZTWU0g
KFFjaG9pY2UsICJjaG9pY2UiKTsKICAgREVGU1lNIChRbGVmdCwgImxlZnQiKTsKICAgREVGU1lN
IChRcmlnaHQsICJyaWdodCIpOwpAQCAtNjE0OCw2ICs2MTUyLDExIEBAIG1haW50YWluZWQgaW50
ZXJuYWxseSBieSB0aGUgRW1hY3MgcHJpbWl0aXZlcy4gIEVuYWJsaW5nIG9yIGRpc2FibGluZwog
dGhlIGNhY2hlIHNob3VsZCBub3QgYWZmZWN0IHRoZSBiZWhhdmlvciBvZiBhbnkgb2YgdGhlIG1v
dGlvbgogZnVuY3Rpb25zOyBpdCBzaG91bGQgb25seSBhZmZlY3QgdGhlaXIgcGVyZm9ybWFuY2Uu
ICAqLyk7CiAKKyAgREVGVkFSX1BFUl9CVUZGRVIgKCJ3aW5kb3ctc3RhcnQtZW5kLWhvb2siLCAm
QlZBUiAoY3VycmVudF9idWZmZXIsIHdpbmRvd19zdGFydF9lbmRfaG9vayksIFFuaWwsCisgICAg
ZG9jOiAvKiBBIGJ1ZmVyLWxvY2FsIGhvb2sgdXNlZCB0byBvYnRhaW4gbmV3IGB3aW5kb3ctc3Rh
cnRgIGFuZCBgd2luZG93LWVuZGAKK2R1cmluZyByZWRpc3BsYXkuICBUaGUgZnVuY3Rpb24gYXR0
YWNoZWQgdG8gdGhpcyBob29rIGhhcyB0aGUgZm9sbG93aW5nIGFyZ3VtZW50czoKK1dJTkRPVywg
V0lORE9XLVNUQVJULCBXSU5ET1ctRU5ELCBQQk9MLVNUQVJULCBQRU9MLUVORCwgRlVMTFktUC4g
ICovKTsKKwogICBERUZWQVJfUEVSX0JVRkZFUiAoInBvaW50LWJlZm9yZS1zY3JvbGwiLCAmQlZB
UiAoY3VycmVudF9idWZmZXIsIHBvaW50X2JlZm9yZV9zY3JvbGwpLCBRbmlsLAogCQkgICAgIGRv
YzogLyogVmFsdWUgb2YgcG9pbnQgYmVmb3JlIHRoZSBsYXN0IHNlcmllcyBvZiBzY3JvbGwgb3Bl
cmF0aW9ucywgb3IgbmlsLiAgKi8pOwogCmRpZmYgLS1naXQgYS9zcmMvYnVmZmVyLmggYi9zcmMv
YnVmZmVyLmgKaW5kZXggNTc4M2JmYi4uMGUxMzI0NyAxMDA2NDQKLS0tIGEvc3JjL2J1ZmZlci5o
CisrKyBiL3NyYy9idWZmZXIuaApAQCAtNjQzLDYgKzY0Myw5IEBAIHN0cnVjdCBidWZmZXIKICAg
ICAgY2FjaGUgYXJlIGVuYWJsZWQuICBTZWUgc2VhcmNoLmMsIGluZGVudC5jIGFuZCBiaWRpLmMg
Zm9yIGRldGFpbHMuICAqLwogICBMaXNwX09iamVjdCBjYWNoZV9sb25nX3NjYW5zXzsKIAorICAv
KiBUaGUgbmFtZSBvZiB0aGUgaG9vay4gICovCisgIExpc3BfT2JqZWN0IHdpbmRvd19zdGFydF9l
bmRfaG9va187CisKICAgLyogSWYgdGhlIHdpZHRoIHJ1biBjYWNoZSBpcyBlbmFibGVkLCB0aGlz
IHRhYmxlIGNvbnRhaW5zIHRoZQogICAgICBjaGFyYWN0ZXIgd2lkdGhzIHdpZHRoX3J1bl9jYWNo
ZSAoc2VlIGFib3ZlKSBhc3N1bWVzLiAgV2hlbiB3ZQogICAgICBkbyBhIHRob3JvdWdoIHJlZGlz
cGxheSwgd2UgY29tcGFyZSB0aGlzIGFnYWluc3QgdGhlIGJ1ZmZlcidzCkBAIC04OTUsNiArODk4
LDExIEBAIGJzZXRfY2FjaGVfbG9uZ19zY2FucyAoc3RydWN0IGJ1ZmZlciAqYiwgTGlzcF9PYmpl
Y3QgdmFsKQogICBiLT5jYWNoZV9sb25nX3NjYW5zXyA9IHZhbDsKIH0KIElOTElORSB2b2lkCiti
c2V0X3dpbmRvd19zdGFydF9lbmRfaG9vayAoc3RydWN0IGJ1ZmZlciAqYiwgTGlzcF9PYmplY3Qg
dmFsKQoreworICBiLT53aW5kb3dfc3RhcnRfZW5kX2hvb2tfID0gdmFsOworfQorSU5MSU5FIHZv
aWQKIGJzZXRfY2FzZV9jYW5vbl90YWJsZSAoc3RydWN0IGJ1ZmZlciAqYiwgTGlzcF9PYmplY3Qg
dmFsKQogewogICBiLT5jYXNlX2Nhbm9uX3RhYmxlXyA9IHZhbDsKZGlmZiAtLWdpdCBhL3NyYy9r
ZXlib2FyZC5jIGIvc3JjL2tleWJvYXJkLmMKaW5kZXggMzQzMWNkOC4uM2Q4ZDU0ZiAxMDA2NDQK
LS0tIGEvc3JjL2tleWJvYXJkLmMKKysrIGIvc3JjL2tleWJvYXJkLmMKQEAgLTEyMzMsNiArMTIz
MywxNSBAQCBzdGF0aWMgaW50IHJlYWRfa2V5X3NlcXVlbmNlIChMaXNwX09iamVjdCAqLCBpbnQs
IExpc3BfT2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCwgYm9vbCwg
Ym9vbCwgYm9vbCk7CiBzdGF0aWMgdm9pZCBhZGp1c3RfcG9pbnRfZm9yX3Byb3BlcnR5IChwdHJk
aWZmX3QsIGJvb2wpOwogCitzdGF0aWMgdm9pZAorc2V0X3dpbmRvd19zdGFydF9lbmRfaG9vayAo
dm9pZCkKK3sKKyAgTGlzcF9PYmplY3Qgd2luZG93ID0gKHNlbGVjdGVkX3dpbmRvdyk7CisgIHN0
cnVjdCB3aW5kb3cgKncgPSBkZWNvZGVfbGl2ZV93aW5kb3cgKHdpbmRvdyk7CisgIHctPndpbmRv
d19zdGFydF9lbmRfaG9va19mb3JjZSA9IHRydWU7CisgIHctPndpbmRvd19zdGFydF9lbmRfaG9v
a19wZW5kaW5nID0gdHJ1ZTsKK30KKwogTGlzcF9PYmplY3QKIGNvbW1hbmRfbG9vcF8xICh2b2lk
KQogewpAQCAtMTI1OCw2ICsxMjY3LDggQEAgY29tbWFuZF9sb29wXzEgKHZvaWQpCiAgICAgICBp
ZiAoIU5JTFAgKFZwb3N0X2NvbW1hbmRfaG9vaykgJiYgIU5JTFAgKFZydW5faG9va3MpKQogCXNh
ZmVfcnVuX2hvb2tzIChRcG9zdF9jb21tYW5kX2hvb2spOwogCisgICAgICBzZXRfd2luZG93X3N0
YXJ0X2VuZF9ob29rICgpOworCiAgICAgICAvKiBJZiBkaXNwbGF5aW5nIGEgbWVzc2FnZSwgcmVz
aXplIHRoZSBlY2hvIGFyZWEgd2luZG93IHRvIGZpdAogCSB0aGF0IG1lc3NhZ2UncyBzaXplIGV4
YWN0bHkuICAqLwogICAgICAgaWYgKCFOSUxQIChlY2hvX2FyZWFfYnVmZmVyWzBdKSkKQEAgLTE0
NzQsNiArMTQ4NSw4IEBAIGNvbW1hbmRfbG9vcF8xICh2b2lkKQogCiAgICAgICBzYWZlX3J1bl9o
b29rcyAoUXBvc3RfY29tbWFuZF9ob29rKTsKIAorICAgICAgc2V0X3dpbmRvd19zdGFydF9lbmRf
aG9vayAoKTsKKwogICAgICAgLyogSWYgZGlzcGxheWluZyBhIG1lc3NhZ2UsIHJlc2l6ZSB0aGUg
ZWNobyBhcmVhIHdpbmRvdyB0byBmaXQKIAkgdGhhdCBtZXNzYWdlJ3Mgc2l6ZSBleGFjdGx5LiAg
Ki8KICAgICAgIGlmICghTklMUCAoZWNob19hcmVhX2J1ZmZlclswXSkpCmRpZmYgLS1naXQgYS9z
cmMvd2luZG93LmggYi9zcmMvd2luZG93LmgKaW5kZXggYzI5MjA3ZC4uMzE1NjkyNyAxMDA2NDQK
LS0tIGEvc3JjL3dpbmRvdy5oCisrKyBiL3NyYy93aW5kb3cuaApAQCAtMzQ4LDYgKzM0OCwxMiBA
QCBzdHJ1Y3Qgd2luZG93CiAgICAgICAgVndpbmRvd19zY3JvbGxfZnVuY3Rpb25zOyBhbHNvIGJ5
IEZyZWNlbnRlciB3aXRoIGFyZ3VtZW50LiAgKi8KICAgICBib29sX2JmIG9wdGlvbmFsX25ld19z
dGFydCA6IDE7CiAKKyAgICAvKiBUcnVlIG1lYW5zIGZvcmNlIGEgY2FsbCB0byBWd2luZG93X3N0
YXJ0X2VuZF9ob29rLiAgKi8KKyAgICBib29sX2JmIHdpbmRvd19zdGFydF9lbmRfaG9va19mb3Jj
ZSA6IDE7CisKKyAgICAvKiBUcnVlIG1lYW5zIHRoZSBob29rIGhhcyBub3QgeWV0IHJ1biB3aXRo
IHBvaW50IGZ1bGx5IHZpc2libGUuICAqLworICAgIGJvb2xfYmYgd2luZG93X3N0YXJ0X2VuZF9o
b29rX3BlbmRpbmcgOiAxOworCiAgICAgLyogVHJ1ZSBtZWFucyB0aGUgY3Vyc29yIGlzIGN1cnJl
bnRseSBkaXNwbGF5ZWQuICBUaGlzIGNhbiBiZQogICAgICAgIHNldCB0byB6ZXJvIGJ5IGZ1bmN0
aW9ucyBvdmVycGFpbnRpbmcgdGhlIGN1cnNvciBpbWFnZS4gICovCiAgICAgYm9vbF9iZiBwaHlz
X2N1cnNvcl9vbl9wIDogMTsKZGlmZiAtLWdpdCBhL3NyYy94ZGlzcC5jIGIvc3JjL3hkaXNwLmMK
aW5kZXggZmVkNTg3OS4uZTM4ZThkYyAxMDA2NDQKLS0tIGEvc3JjL3hkaXNwLmMKKysrIGIvc3Jj
L3hkaXNwLmMKQEAgLTEzNDE3LDYgKzEzNDE3LDgzIEBAIGRvIHsgaWYgKCEgcG9sbGluZ19zdG9w
cGVkX2hlcmUpIHN0b3BfcG9sbGluZyAoKTsJXAogZG8geyBpZiAocG9sbGluZ19zdG9wcGVkX2hl
cmUpIHN0YXJ0X3BvbGxpbmcgKCk7CVwKICAgICAgICBwb2xsaW5nX3N0b3BwZWRfaGVyZSA9IGZh
bHNlOyB9IHdoaWxlIChmYWxzZSkKIAorc3RhdGljIHZvaWQKK3J1bl93aW5kb3dfc3RhcnRfZW5k
X2hvb2sgKExpc3BfT2JqZWN0IHdpbmRvdywgc3RydWN0IHRleHRfcG9zIHN0YXJ0cCwgc3RydWN0
IGl0IGl0LCBjaGFyICpzdHJpbmcpCit7CisgIHN0cnVjdCB3aW5kb3cgKncgPSBkZWNvZGVfbGl2
ZV93aW5kb3cgKHdpbmRvdyk7CisgIExpc3BfT2JqZWN0IGJ1ZjsKKyAgc3RydWN0IGJ1ZmZlciAq
YjsKKyAgYnVmID0gdy0+Y29udGVudHM7CisgIENIRUNLX0JVRkZFUiAoYnVmKTsKKyAgYiA9IFhC
VUZGRVIgKGJ1Zik7CisgIHN0cnVjdCBidWZmZXIgKm9sZF9idWZmZXIgPSBOVUxMOworICB2b2lk
ICppdGRhdGEgPSBOVUxMOworICBib29sIGZ1bGx5X3AgPSBmYWxzZTsKKyAgRU1BQ1NfSU5UIHBv
c2ludCA9IFBUOworICBpbnQgeCwgeSwgcnRvcCwgcmJvdCwgcm93aCwgdnBvcywgc3RhcnRwX2lu
dGVnZXIsIGVuZHAsIHBib2xfc3RhcnRwLCBwZW9sX2VuZHA7CisgIHN0YXJ0cF9pbnRlZ2VyID0g
Q0hBUlBPUyAoc3RhcnRwKTsKKyAgaWYgKGIgIT0gY3VycmVudF9idWZmZXIpCisgICAgeworICAg
ICAgb2xkX2J1ZmZlciA9IGN1cnJlbnRfYnVmZmVyOworICAgICAgc2V0X2J1ZmZlcl9pbnRlcm5h
bCAoYik7CisgICAgfQorICBpZiAoIU5JTFAgKEJWQVIgKGN1cnJlbnRfYnVmZmVyLCB3aW5kb3df
c3RhcnRfZW5kX2hvb2spKQorICAgICAgJiYgdy0+d2luZG93X3N0YXJ0X2VuZF9ob29rX3BlbmRp
bmcpCisgICAgeworICAgICAgaWYgKChwb3NpbnQgPj0gQ0hBUlBPUyAoc3RhcnRwKSAmJiBwb3Np
bnQgPD0gQlVGX1pWIChiKSkKKyAgICAgICAgICAmJiBDSEFSUE9TIChzdGFydHApID49IEJVRl9C
RUdWIChiKQorICAgICAgICAgICYmIENIQVJQT1MgKHN0YXJ0cCkgPD0gQlVGX1pWIChiKQorICAg
ICAgICAgICYmIHBvc192aXNpYmxlX3AgKHcsIHBvc2ludCwgJngsICZ5LCAmcnRvcCwgJnJib3Qs
ICZyb3doLCAmdnBvcykpCisgICAgICAgIGZ1bGx5X3AgPSAhcnRvcCAmJiAhcmJvdDsKKyAgICAg
IGlmIChmdWxseV9wKQorICAgICAgICB7CisgICAgICAgICAgQ0xJUF9URVhUX1BPU19GUk9NX01B
UktFUiAoc3RhcnRwLCB3LT5zdGFydCk7CisgICAgICAgICAgaXRkYXRhID0gYmlkaV9zaGVsdmVf
Y2FjaGUgKCk7CisgICAgICAgICAgc3RhcnRfZGlzcGxheSAoJml0LCB3LCBzdGFydHApOworICAg
ICAgICAgIG1vdmVfaXRfdmVydGljYWxseSAoJml0LCB3aW5kb3dfYm94X2hlaWdodCAodykpOwor
ICAgICAgICAgIGlmIChpdC5jdXJyZW50X3kgPCBpdC5sYXN0X3Zpc2libGVfeSkKKyAgICAgICAg
ICAgIG1vdmVfaXRfcGFzdF9lb2wgKCZpdCk7CisgICAgICAgICAgZW5kcCA9IChJVF9DSEFSUE9T
IChpdCkpOworICAgICAgICAgIGJpZGlfdW5zaGVsdmVfY2FjaGUgKGl0ZGF0YSwgZmFsc2UpOwor
ICAgICAgICAgIFNFVF9QVCAoc3RhcnRwX2ludGVnZXIpOworICAgICAgICAgIHBib2xfc3RhcnRw
ID0gWElOVCAoRmxpbmVfYmVnaW5uaW5nX3Bvc2l0aW9uIChRbmlsKSk7CisgICAgICAgICAgU0VU
X1BUIChlbmRwKTsKKyAgICAgICAgICBwZW9sX2VuZHAgPSBYSU5UIChGbGluZV9lbmRfcG9zaXRp
b24gKFFuaWwpKTsKKyAgICAgICAgICBTRVRfUFQgKHBvc2ludCk7CisjaWZkZWYgR0xZUEhfREVC
VUcKKyAgICAgICAgICAvKiBTZWUgdGhlIGRvYy1zdHJpbmcgZm9yIGBwb3MtdmlzaWJsZS1pbi13
aW5kb3ctcCcuICAqLworICAgICAgICAgIGRlYnVnX21ldGhvZF9hZGQgKHcsICIlcyAtLSB4OiAl
ZCB8IHk6ICVkIHwgc3RhcnRwOiAlZCB8IGVuZHA6ICVkIHwgcGJvbF9zdGFydHA6ICVkIHwgcGVv
bF9lbmRwOiAlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nLCB4LCB5
LCBzdGFydHBfaW50ZWdlciwgZW5kcCwgcGJvbF9zdGFydHAsIHBlb2xfZW5kcCk7CisjZW5kaWYK
KyAgICAgICAgICAvKiAgUmVzZXQgdGhlIGZsYWcgX2JlZm9yZV8gY2FsbGluZyBMaXNwLCBub3Qg
YWZ0ZXIsIHNvIHRoYXQKKyAgICAgICAgICAgICAgaWYgTGlzcCBkb2VzIHNpZ25hbCBhbiBlcnJv
ciwgdGhlIGZsYWcgd2lsbCBiZSByZXNldCwgYW5kCisgICAgICAgICAgICAgIHdvbid0IGNhdXNl
IHRoZSBob29rIHRvIGJlIGNhbGxlZCBhZCBuYXVzZWFtLiAgKi8KKyAgICAgICAgICB3LT53aW5k
b3dfc3RhcnRfZW5kX2hvb2tfcGVuZGluZyA9IGZhbHNlOworICAgICAgICAgIC8qICBXaGVuIGNh
bGxpbmcgTGlzcCBmcm9tIHJlZGlzcGxheSwgYWx3YXlzIHVzZSBzYWZlX2NhbGwsIHRvIGJlCisg
ICAgICAgICAgICAgIHByb3RlY3RlZCBhZ2FpbnN0IGVycm9ycyBzaWduYWxlZCBieSB0aGF0IExp
c3AuICAqLworICAgICAgICAgIC8qIGZuLCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1LCBh
cmc2LCBhcmc3ICAqLworICAgICAgICAgIHNhZmVfY2FsbCAoOCwKKyAgICAgICAgICAgICAgUXJ1
bl9ob29rX3dpdGhfYXJncywKKyAgICAgICAgICAgICAgUXdpbmRvd19zdGFydF9lbmRfaG9vaywK
KyAgICAgICAgICAgICAgd2luZG93LAorICAgICAgICAgICAgICBtYWtlX251bWJlciAoc3RhcnRw
X2ludGVnZXIpLAorICAgICAgICAgICAgICBtYWtlX251bWJlciAoZW5kcCksCisgICAgICAgICAg
ICAgIG1ha2VfbnVtYmVyIChwYm9sX3N0YXJ0cCksCisgICAgICAgICAgICAgIG1ha2VfbnVtYmVy
IChwZW9sX2VuZHApLAorICAgICAgICAgICAgICBmdWxseV9wID8gUXQgOiBRbmlsKTsKKyAgICAg
ICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgeworI2lmZGVmIEdMWVBIX0RFQlVHCisgICAg
ICAgICAgICAvKiBTZWUgdGhlIGRvYy1zdHJpbmcgZm9yIGBwb3MtdmlzaWJsZS1pbi13aW5kb3ct
cCcuICAqLworICAgICAgICAgICAgZGVidWdfbWV0aG9kX2FkZCAodywgIiVzIC0tIHg6ICVkIHwg
eTogJWQgfCBydG9wOiAlZCB8IHJib3QgJWQgfCByb3doOiAlZCB8IHZwb3M6ICVkIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZywgeCwgeSwgcnRvcCwgcmJvdCwgcm93
aCwgdnBvcyk7CisjZW5kaWYKKyAgICAgICAgICB9CisgICAgfQorICBpZiAob2xkX2J1ZmZlcikK
KyAgICBzZXRfYnVmZmVyX2ludGVybmFsIChvbGRfYnVmZmVyKTsKK30KIAogLyogUGVyaGFwcyBp
biB0aGUgZnV0dXJlIGF2b2lkIHJlY2VudGVyaW5nIHdpbmRvd3MgaWYgaXQKICAgIGlzIG5vdCBu
ZWNlc3Nhcnk7IGN1cnJlbnRseSB0aGF0IGNhdXNlcyBzb21lIHByb2JsZW1zLiAgKi8KQEAgLTEz
NzE0LDYgKzEzNzkxLDcgQEAgcmVkaXNwbGF5X2ludGVybmFsICh2b2lkKQogICAgICAgJiYgbWF0
Y2hfcAogICAgICAgJiYgIXctPmZvcmNlX3N0YXJ0CiAgICAgICAmJiAhdy0+b3B0aW9uYWxfbmV3
X3N0YXJ0CisgICAgICAmJiAhdy0+d2luZG93X3N0YXJ0X2VuZF9ob29rX2ZvcmNlCiAgICAgICAv
KiBQb2ludCBtdXN0IGJlIG9uIHRoZSBsaW5lIHRoYXQgd2UgaGF2ZSBpbmZvIHJlY29yZGVkIGFi
b3V0LiAgKi8KICAgICAgICYmIFBUID49IENIQVJQT1MgKHRsYnVmcG9zKQogICAgICAgJiYgUFQg
PD0gWiAtIENIQVJQT1MgKHRsZW5kcG9zKQpAQCAtMTU0MTgsNiArMTU0OTYsOCBAQCB0cnlfc2Ny
b2xsaW5nIChMaXNwX09iamVjdCB3aW5kb3csIGJvb2wganVzdF90aGlzX29uZV9wLAogICAvKiBS
dW4gd2luZG93IHNjcm9sbCBmdW5jdGlvbnMuICAqLwogICBzdGFydHAgPSBydW5fd2luZG93X3Nj
cm9sbF9mdW5jdGlvbnMgKHdpbmRvdywgc3RhcnRwKTsKIAorICBydW5fd2luZG93X3N0YXJ0X2Vu
ZF9ob29rICh3aW5kb3csIHN0YXJ0cCwgaXQsICJ0cnlfc2Nyb2xsaW5nIik7CisKICAgLyogRGlz
cGxheSB0aGUgd2luZG93LiAgR2l2ZSB1cCBpZiBuZXcgZm9udHMgYXJlIGxvYWRlZCwgb3IgaWYg
cG9pbnQKICAgICAgZG9lc24ndCBhcHBlYXIuICAqLwogICBpZiAoIXRyeV93aW5kb3cgKHdpbmRv
dywgc3RhcnRwLCAwKSkKQEAgLTE2MDgyLDYgKzE2MTYyLDcgQEAgcmVkaXNwbGF5X3dpbmRvdyAo
TGlzcF9PYmplY3Qgd2luZG93LCBib29sIGp1c3RfdGhpc19vbmVfcCkKICAgYm9vbCBsYXN0X2xp
bmVfbWlzZml0ID0gZmFsc2U7CiAgIHB0cmRpZmZfdCBiZWdfdW5jaGFuZ2VkLCBlbmRfdW5jaGFu
Z2VkOwogICBpbnQgZnJhbWVfbGluZV9oZWlnaHQ7CisgIGJvb2wgd2luZG93X3N0YXJ0X2VuZF9o
b29rX3N1cHByZXNzX3dzZiA9IGZhbHNlOwogCiAgIFNFVF9URVhUX1BPUyAobHBvaW50LCBQVCwg
UFRfQllURSk7CiAgIG9wb2ludCA9IGxwb2ludDsKQEAgLTE2MjcyLDEzICsxNjM1MywxNiBAQCBy
ZWRpc3BsYXlfd2luZG93IChMaXNwX09iamVjdCB3aW5kb3csIGJvb2wganVzdF90aGlzX29uZV9w
KQogCiAgIC8qIElmIHNvbWVvbmUgc3BlY2lmaWVkIGEgbmV3IHN0YXJ0aW5nIHBvaW50IGJ1dCBk
aWQgbm90IGluc2lzdCwKICAgICAgY2hlY2sgd2hldGhlciBpdCBjYW4gYmUgdXNlZC4gICovCi0g
IGlmICgody0+b3B0aW9uYWxfbmV3X3N0YXJ0IHx8IHdpbmRvd19mcm96ZW5fcCAodykpCisgIGlm
ICgody0+b3B0aW9uYWxfbmV3X3N0YXJ0IHx8IHctPndpbmRvd19zdGFydF9lbmRfaG9va19mb3Jj
ZSB8fCB3aW5kb3dfZnJvemVuX3AgKHcpKQogICAgICAgJiYgQ0hBUlBPUyAoc3RhcnRwKSA+PSBC
RUdWCiAgICAgICAmJiBDSEFSUE9TIChzdGFydHApIDw9IFpWKQogICAgIHsKKworICAgICAgaWYg
KHctPndpbmRvd19zdGFydF9lbmRfaG9va19mb3JjZSAmJiAhdy0+b3B0aW9uYWxfbmV3X3N0YXJ0
ICYmICF3aW5kb3dfZnJvemVuX3AgKHcpICYmICF3LT5mb3JjZV9zdGFydCkKKyAgICAgICAgd2lu
ZG93X3N0YXJ0X2VuZF9ob29rX3N1cHByZXNzX3dzZiA9IHRydWU7CisKICAgICAgIHB0cmRpZmZf
dCBpdF9jaGFycG9zOwogCi0gICAgICB3LT5vcHRpb25hbF9uZXdfc3RhcnQgPSBmYWxzZTsKICAg
ICAgIHN0YXJ0X2Rpc3BsYXkgKCZpdCwgdywgc3RhcnRwKTsKICAgICAgIG1vdmVfaXRfdG8gKCZp
dCwgUFQsIDAsIGl0Lmxhc3RfdmlzaWJsZV95LCAtMSwKIAkJICBNT1ZFX1RPX1BPUyB8IE1PVkVf
VE9fWCB8IE1PVkVfVE9fWSk7CkBAIC0xNjI5OSwxNCArMTYzODMsMjggQEAgcmVkaXNwbGF5X3dp
bmRvdyAoTGlzcF9PYmplY3Qgd2luZG93LCBib29sIGp1c3RfdGhpc19vbmVfcCkKIAkgICAgdy0+
Zm9yY2Vfc3RhcnQgPSB0cnVlOwogI2lmZGVmIEdMWVBIX0RFQlVHCiAJICBpZiAody0+Zm9yY2Vf
c3RhcnQpCi0JICAgIHsKLQkgICAgICBpZiAod2luZG93X2Zyb3plbl9wICh3KSkKLQkJZGVidWdf
bWV0aG9kX2FkZCAodywgInNldCBmb3JjZV9zdGFydCBmcm9tIGZyb3plbiB3aW5kb3cgc3RhcnQi
KTsKLQkgICAgICBlbHNlCi0JCWRlYnVnX21ldGhvZF9hZGQgKHcsICJzZXQgZm9yY2Vfc3RhcnQg
ZnJvbSBvcHRpb25hbF9uZXdfc3RhcnQiKTsKLQkgICAgfQorICAgIHsKKyAgICAgIGlmICh3aW5k
b3dfZnJvemVuX3AgKHcpKQorICAgICAgICB7CisgICAgICAgIGRlYnVnX21ldGhvZF9hZGQgKHcs
ICJzZXQgZm9yY2Vfc3RhcnQgZnJvbSBmcm96ZW4gd2luZG93IHN0YXJ0Iik7CisgICAgICB9Cisg
ICAgICBlbHNlIGlmICh3LT5vcHRpb25hbF9uZXdfc3RhcnQpCisgICAgICAgIHsKKyAgICAgICAg
ZGVidWdfbWV0aG9kX2FkZCAodywgInNldCBmb3JjZV9zdGFydCBmcm9tIG9wdGlvbmFsX25ld19z
dGFydCIpOworICAgICAgfQorICAgICAgZWxzZSBpZiAody0+d2luZG93X3N0YXJ0X2VuZF9ob29r
X2ZvcmNlKQorICAgICAgICB7CisgICAgICAgIGRlYnVnX21ldGhvZF9hZGQgKHcsICJzZXQgZm9y
Y2Vfc3RhcnQgZnJvbSB3aW5kb3dfc3RhcnRfZW5kX2hvb2tfZm9yY2UiKTsKKyAgICAgIH0KKyAg
ICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICBkZWJ1Z19tZXRob2RfYWRkICh3LCAiVGhpcyBz
aXR1YXRpb24gaXMgbm90IHlldCBjb250ZW1wbGF0ZWQuIik7CisgICAgICB9CisgICAgfQogI2Vu
ZGlmCiAJfQorICAgICAgdy0+b3B0aW9uYWxfbmV3X3N0YXJ0ID0gZmFsc2U7CisgICAgICB3LT53
aW5kb3dfc3RhcnRfZW5kX2hvb2tfZm9yY2UgPSBmYWxzZTsKICAgICB9CiAKICBmb3JjZV9zdGFy
dDoKQEAgLTE2MzM0LDExICsxNjQzMiwxOCBAQCByZWRpc3BsYXlfd2luZG93IChMaXNwX09iamVj
dCB3aW5kb3csIGJvb2wganVzdF90aGlzX29uZV9wKQogCSB0aGFuIHRvIGdldCBpbnRvIGFuIGlu
ZmluaXRlIGxvb3AgY2FsbGluZyB0aGUgaG9vayBmdW5jdGlvbnMKIAkgYW5kIGhhdmluZyB0aGVt
IGdldCBtb3JlIGVycm9ycy4gICovCiAgICAgICBpZiAoIXVwZGF0ZV9tb2RlX2xpbmUKLQkgIHx8
ICEgTklMUCAoVndpbmRvd19zY3JvbGxfZnVuY3Rpb25zKSkKKwkgIHx8ICEgTklMUCAoVndpbmRv
d19zY3JvbGxfZnVuY3Rpb25zKQorCSAgfHwgISBOSUxQIChCVkFSIChjdXJyZW50X2J1ZmZlciwg
d2luZG93X3N0YXJ0X2VuZF9ob29rKSkpCiAJewogCSAgdXBkYXRlX21vZGVfbGluZSA9IHRydWU7
CiAJICB3LT51cGRhdGVfbW9kZV9saW5lID0gdHJ1ZTsKLQkgIHN0YXJ0cCA9IHJ1bl93aW5kb3df
c2Nyb2xsX2Z1bmN0aW9ucyAod2luZG93LCBzdGFydHApOworCisgIC8qIFJ1biB3aW5kb3cgc2Ny
b2xsIGZ1bmN0aW9ucy4gICovCisgIGlmICghd2luZG93X3N0YXJ0X2VuZF9ob29rX3N1cHByZXNz
X3dzZikKKyAgICBzdGFydHAgPSBydW5fd2luZG93X3Njcm9sbF9mdW5jdGlvbnMgKHdpbmRvdywg
c3RhcnRwKTsKKworICBydW5fd2luZG93X3N0YXJ0X2VuZF9ob29rICh3aW5kb3csIHN0YXJ0cCwg
aXQsICJyZWRpc3BsYXlfd2luZG93IChmb3JjZV9zdGFydCkiKTsKKwogCX0KIAogICAgICAgaWYg
KENIQVJQT1MgKHN0YXJ0cCkgPCBCRUdWKQpAQCAtMTY2MDYsNiArMTY3MTEsNyBAQCByZWRpc3Bs
YXlfd2luZG93IChMaXNwX09iamVjdCB3aW5kb3csIGJvb2wganVzdF90aGlzX29uZV9wKQogCSAg
ICAgYmVjYXVzZSBhIHdpbmRvdyBzY3JvbGwgZnVuY3Rpb24gY2FuIGhhdmUgY2hhbmdlZCB0aGUK
IAkgICAgIGJ1ZmZlci4gICovCiAJICB8fCAhTklMUCAoVndpbmRvd19zY3JvbGxfZnVuY3Rpb25z
KQorCSAgfHwgIU5JTFAgKEJWQVIgKGN1cnJlbnRfYnVmZmVyLCB3aW5kb3dfc3RhcnRfZW5kX2hv
b2spKQogCSAgfHwgTUlOSV9XSU5ET1dfUCAodykKIAkgIHx8ICEodXNlZF9jdXJyZW50X21hdHJp
eF9wCiAJICAgICAgID0gdHJ5X3dpbmRvd19yZXVzaW5nX2N1cnJlbnRfbWF0cml4ICh3KSkpCkBA
IC0xNjgwMyw2ICsxNjkwOSw4IEBAIHJlZGlzcGxheV93aW5kb3cgKExpc3BfT2JqZWN0IHdpbmRv
dywgYm9vbCBqdXN0X3RoaXNfb25lX3ApCiAgIC8qIFJ1biBzY3JvbGwgaG9va3MuICAqLwogICBz
dGFydHAgPSBydW5fd2luZG93X3Njcm9sbF9mdW5jdGlvbnMgKHdpbmRvdywgaXQuY3VycmVudC5w
b3MpOwogCisgIHJ1bl93aW5kb3dfc3RhcnRfZW5kX2hvb2sgKHdpbmRvdywgc3RhcnRwLCBpdCwg
InJlZGlzcGxheV93aW5kb3cgKHJlY2VudGVyKSIpOworCiAgIC8qIFJlZGlzcGxheSB0aGUgd2lu
ZG93LiAgKi8KICAgYm9vbCB1c2VfZGVzaXJlZF9tYXRyaXggPSBmYWxzZTsKICAgaWYgKCFjdXJy
ZW50X21hdHJpeF91cF90b19kYXRlX3AKQEAgLTE2ODExLDYgKzE2OTE5LDcgQEAgcmVkaXNwbGF5
X3dpbmRvdyAoTGlzcF9PYmplY3Qgd2luZG93LCBib29sIGp1c3RfdGhpc19vbmVfcCkKICAgICAg
IC8qIERvbid0IHVzZSB0cnlfd2luZG93X3JldXNpbmdfY3VycmVudF9tYXRyaXggaW4gdGhpcyBj
YXNlCiAJIGJlY2F1c2UgaXQgY2FuIGhhdmUgY2hhbmdlZCB0aGUgYnVmZmVyLiAgKi8KICAgICAg
IHx8ICFOSUxQIChWd2luZG93X3Njcm9sbF9mdW5jdGlvbnMpCisgICAgICB8fCAhTklMUCAoQlZB
UiAoY3VycmVudF9idWZmZXIsIHdpbmRvd19zdGFydF9lbmRfaG9vaykpCiAgICAgICB8fCAhanVz
dF90aGlzX29uZV9wCiAgICAgICB8fCBNSU5JX1dJTkRPV19QICh3KQogICAgICAgfHwgISh1c2Vk
X2N1cnJlbnRfbWF0cml4X3AKQEAgLTE2OTMxLDcgKzE3MDQwLDE3IEBAIHJlZGlzcGxheV93aW5k
b3cgKExpc3BfT2JqZWN0IHdpbmRvdywgYm9vbCBqdXN0X3RoaXNfb25lX3ApCiAJICBjbGVhcl9n
bHlwaF9tYXRyaXggKHctPmRlc2lyZWRfbWF0cml4KTsKIAkgIGlmICgxID09IHRyeV93aW5kb3cg
KHdpbmRvdywgaXQuY3VycmVudC5wb3MsCiAJCQkgICAgICAgVFJZX1dJTkRPV19DSEVDS19NQVJH
SU5TKSkKLQkgICAgZ290byBkb25lOworICAgIHsKKyAgICAgIGlmICghTklMUCAoQlZBUiAoY3Vy
cmVudF9idWZmZXIsIHdpbmRvd19zdGFydF9lbmRfaG9vaykpCisgICAgICAgICAgJiYgdy0+d2lu
ZG93X3N0YXJ0X2VuZF9ob29rX3BlbmRpbmcpCisgICAgICAgIHsKKyAgICAgICAgICBydW5fd2lu
ZG93X3N0YXJ0X2VuZF9ob29rICh3aW5kb3csIGl0LmN1cnJlbnQucG9zLCBpdCwgInJlZGlzcGxh
eV93aW5kb3cgKHBvc3QtcmVjZW50ZXIpIik7CisgICAgICAgICAgY2xlYXJfZ2x5cGhfbWF0cml4
ICh3LT5kZXNpcmVkX21hdHJpeCk7CisgICAgICAgICAgdHJ5X3dpbmRvdyAod2luZG93LCBpdC5j
dXJyZW50LnBvcywgMCk7CisgICAgICAgIH0KKyAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKIAl9
CiAKICAgICAgIC8qIElmIGNlbnRlcmluZyBwb2ludCBmYWlsZWQgdG8gbWFrZSB0aGUgd2hvbGUg
bGluZSB2aXNpYmxlLApAQCAtMjM2ODYsNiArMjM4MDUsMjAgQEAgZGVjb2RlX21vZGVfc3BlYyAo
c3RydWN0IHdpbmRvdyAqdywgcmVnaXN0ZXIgaW50IGMsIGludCBmaWVsZF93aWR0aCwKIAkgIHJl
dHVybiAiQCI7CiAgICAgICB9CiAKKyAgICBjYXNlICd3JzoKKyAgICAgIHsKKyAgcHRyZGlmZl90
IHdpbmRvd19zdGFydCA9IG1hcmtlcl9wb3NpdGlvbiAody0+c3RhcnQpOworICBwaW50MnN0ciAo
ZGVjb2RlX21vZGVfc3BlY19idWYsIHdpZHRoLCB3aW5kb3dfc3RhcnQpOworICByZXR1cm4gZGVj
b2RlX21vZGVfc3BlY19idWY7CisgICAgICB9CisKKyAgICBjYXNlICdXJzoKKyAgICAgIHsKKyAg
cHRyZGlmZl90IHdpbmRvd19lbmQgPSBCVUZfWiAoYikgLSB3LT53aW5kb3dfZW5kX3BvczsKKyAg
cGludDJzdHIgKGRlY29kZV9tb2RlX3NwZWNfYnVmLCB3aWR0aCwgd2luZG93X2VuZCk7CisgIHJl
dHVybiBkZWNvZGVfbW9kZV9zcGVjX2J1ZjsKKyAgICAgIH0KKwogICAgIGNhc2UgJ3onOgogICAg
ICAgLyogY29kaW5nLXN5c3RlbSAobm90IGluY2x1ZGluZyBlbmQtb2YtbGluZSBmb3JtYXQpICov
CiAgICAgY2FzZSAnWic6Cg==

--Multipart_Sun_Feb_21_22:05:15_2016-1--




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

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


Received: (at 22404) by debbugs.gnu.org; 16 Feb 2016 03:39:51 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 15 22:39:51 2016
Received: from localhost ([127.0.0.1]:40638 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aVWUR-00060c-G6
	for submit <at> debbugs.gnu.org; Mon, 15 Feb 2016 22:39:51 -0500
Received: from cobb.liquidweb.com ([50.28.13.150]:50303)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <esq@HIDDEN>) id 1aVWUP-00060Q-68
 for 22404 <at> debbugs.gnu.org; Mon, 15 Feb 2016 22:39:49 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lawlist.com;
 s=default; 
 h=To:References:Message-Id:Cc:Date:In-Reply-To:From:Content-Type:Mime-Version:Subject;
 bh=tflRAE5y/MalzzTsDSEeTr/Vjx9fiMhd6S7j4L0UzIA=; 
 b=6Adm3pHqB8FgUMB6y0VLQtSSXbRgSYK0gZkPglL++NQimuGWYPIWqosMLaZq6j7T5nN+xJaBGUh8flHAZtf0/+++e9MyhzCZMFpYEzJe4vm+IYbN5bfGEaRLfQ0Jq/6M;
Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:54751
 helo=server.private)
 by cobb.liquidweb.com with esmtpsa (TLSv1:AES128-SHA:128) (Exim 4.82)
 (envelope-from <esq@HIDDEN>)
 id 1aVWUE-00013R-9p; Mon, 15 Feb 2016 22:39:39 -0500
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
Mime-Version: 1.0 (Apple Message framework v1084)
Content-Type: multipart/mixed; boundary=Apple-Mail-6-545409187
From: Keith David Bershatsky <esq@HIDDEN>
In-Reply-To: <83ziv6734u.fsf@HIDDEN>
Date: Mon, 15 Feb 2016 19:39:38 -0800
Message-Id: <697944A7-4633-48EA-910A-C280D1F3ACFF@HIDDEN>
References: <m2wpqa6ayz.wl%esq@HIDDEN> <83ziv6734u.fsf@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
X-Mailer: Apple Mail (2.1084)
X-AntiAbuse: This header was added to track abuse,
 please include it with any abuse report
X-AntiAbuse: Primary Hostname - cobb.liquidweb.com
X-AntiAbuse: Original Domain - debbugs.gnu.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - lawlist.com
X-Get-Message-Sender-Via: cobb.liquidweb.com: authenticated_id: lawlist/from_h
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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: -0.7 (/)


--Apple-Mail-6-545409187
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

Here is the updated draft of the `window_scroll_functions_hook.diff`.  A =
copy of this same patch was attached to 22637 today, but I thought it =
should be included here also with the 22404.

Keith



--Apple-Mail-6-545409187
Content-Disposition: attachment;
	filename=window_start_end_hook.diff
Content-Type: application/octet-stream;
	name="window_start_end_hook.diff"
Content-Transfer-Encoding: quoted-printable

diff=20--git=20a/src/keyboard.c=20b/src/keyboard.c=0Aindex=20=
3431cd8..3d8d54f=20100644=0A---=20a/src/keyboard.c=0A+++=20=
b/src/keyboard.c=0A@@=20-1233,6=20+1233,15=20@@=20static=20int=20=
read_key_sequence=20(Lisp_Object=20*,=20int,=20Lisp_Object,=0A=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20bool,=20bool,=20bool,=20bool);=0A=20static=20void=20=
adjust_point_for_property=20(ptrdiff_t,=20bool);=0A=20=0A+static=20void=0A=
+set_window_start_end_hook=20(void)=0A+{=0A+=20=20Lisp_Object=20window=20=
=3D=20(selected_window);=0A+=20=20struct=20window=20*w=20=3D=20=
decode_live_window=20(window);=0A+=20=20w->window_start_end_hook_force=20=
=3D=20true;=0A+=20=20w->window_start_end_hook_pending=20=3D=20true;=0A+}=0A=
+=0A=20Lisp_Object=0A=20command_loop_1=20(void)=0A=20{=0A@@=20-1258,6=20=
+1267,8=20@@=20command_loop_1=20(void)=0A=20=20=20=20=20=20=20if=20=
(!NILP=20(Vpost_command_hook)=20&&=20!NILP=20(Vrun_hooks))=0A=20=09=
safe_run_hooks=20(Qpost_command_hook);=0A=20=0A+=20=20=20=20=20=20=
set_window_start_end_hook=20();=0A+=0A=20=20=20=20=20=20=20/*=20If=20=
displaying=20a=20message,=20resize=20the=20echo=20area=20window=20to=20=
fit=0A=20=09=20that=20message's=20size=20exactly.=20=20*/=0A=20=20=20=20=20=
=20=20if=20(!NILP=20(echo_area_buffer[0]))=0A@@=20-1474,6=20+1485,8=20@@=20=
command_loop_1=20(void)=0A=20=0A=20=20=20=20=20=20=20safe_run_hooks=20=
(Qpost_command_hook);=0A=20=0A+=20=20=20=20=20=20=
set_window_start_end_hook=20();=0A+=0A=20=20=20=20=20=20=20/*=20If=20=
displaying=20a=20message,=20resize=20the=20echo=20area=20window=20to=20=
fit=0A=20=09=20that=20message's=20size=20exactly.=20=20*/=0A=20=20=20=20=20=
=20=20if=20(!NILP=20(echo_area_buffer[0]))=0Adiff=20--git=20a/src/lisp.h=20=
b/src/lisp.h=0Aindex=208aa2861..0962306=20100644=0A---=20a/src/lisp.h=0A=
+++=20b/src/lisp.h=0A@@=20-3913,6=20+3913,7=20@@=20extern=20void=20=
init_eval_once=20(void);=0A=20extern=20Lisp_Object=20safe_call=20=
(ptrdiff_t,=20Lisp_Object,=20...);=0A=20extern=20Lisp_Object=20=
safe_call1=20(Lisp_Object,=20Lisp_Object);=0A=20extern=20Lisp_Object=20=
safe_call2=20(Lisp_Object,=20Lisp_Object,=20Lisp_Object);=0A+extern=20=
Lisp_Object=20safe_call7=20(Lisp_Object,=20Lisp_Object,=20Lisp_Object,=20=
Lisp_Object,=20Lisp_Object,=20Lisp_Object,=20Lisp_Object,=20=
Lisp_Object);=0A=20extern=20void=20init_eval=20(void);=0A=20extern=20=
void=20syms_of_eval=20(void);=0A=20extern=20void=20unwind_body=20=
(Lisp_Object);=0Adiff=20--git=20a/src/window.h=20b/src/window.h=0Aindex=20=
c29207d..3156927=20100644=0A---=20a/src/window.h=0A+++=20b/src/window.h=0A=
@@=20-348,6=20+348,12=20@@=20struct=20window=0A=20=20=20=20=20=20=20=20=
Vwindow_scroll_functions;=20also=20by=20Frecenter=20with=20argument.=20=20=
*/=0A=20=20=20=20=20bool_bf=20optional_new_start=20:=201;=0A=20=0A+=20=20=
=20=20/*=20True=20means=20force=20a=20call=20to=20=
Vwindow_start_end_hook.=20=20*/=0A+=20=20=20=20bool_bf=20=
window_start_end_hook_force=20:=201;=0A+=0A+=20=20=20=20/*=20True=20=
means=20the=20hook=20has=20not=20yet=20run=20with=20point=20fully=20=
visible.=20=20*/=0A+=20=20=20=20bool_bf=20window_start_end_hook_pending=20=
:=201;=0A+=0A=20=20=20=20=20/*=20True=20means=20the=20cursor=20is=20=
currently=20displayed.=20=20This=20can=20be=0A=20=20=20=20=20=20=20=20=
set=20to=20zero=20by=20functions=20overpainting=20the=20cursor=20image.=20=
=20*/=0A=20=20=20=20=20bool_bf=20phys_cursor_on_p=20:=201;=0Adiff=20=
--git=20a/src/xdisp.c=20b/src/xdisp.c=0Aindex=20fed5879..d3e102d=20=
100644=0A---=20a/src/xdisp.c=0A+++=20b/src/xdisp.c=0A@@=20-2618,6=20=
+2618,13=20@@=20safe_call2=20(Lisp_Object=20fn,=20Lisp_Object=20arg1,=20=
Lisp_Object=20arg2)=0A=20=20=20return=20safe_call=20(3,=20fn,=20arg1,=20=
arg2);=0A=20}=0A=20=0A+/*=20=20This=20is=20for=20the=20=
`window_start_end_hook'.=20=20Call=20function=20FN=20with=20seven=20=
arguments.=0A+=20=20=20=20Return=20the=20result=20or=20nil=20if=20=
something=20went=20wrong.=20=20*/=0A+Lisp_Object=0A+safe_call7=20=
(Lisp_Object=20fn,=20Lisp_Object=20arg1,=20Lisp_Object=20arg2,=20=
Lisp_Object=20arg3,=20Lisp_Object=20arg4,=20Lisp_Object=20arg5,=20=
Lisp_Object=20arg6,=20Lisp_Object=20arg7)=0A+{=0A+=20=20return=20=
safe_call=20(8,=20fn,=20arg1,=20arg2,=20arg3,=20arg4,=20arg5,=20arg6,=20=
arg7);=0A+}=0A=20=0A=20=0C=0A=20=
/***********************************************************************=0A=
@@=20-13417,6=20+13424,68=20@@=20do=20{=20if=20(!=20=
polling_stopped_here)=20stop_polling=20();=09\=0A=20do=20{=20if=20=
(polling_stopped_here)=20start_polling=20();=09\=0A=20=20=20=20=20=20=20=20=
polling_stopped_here=20=3D=20false;=20}=20while=20(false)=0A=20=0A=
+static=20void=0A+run_window_start_end_hook=20(struct=20text_pos=20=
startp,=20struct=20window=20*w,=20Lisp_Object=20window,=20struct=20it=20=
it,=20char=20*string)=0A+{=0A+=20=20void=20*itdata=20=3D=20NULL;=0A+=20=20=
bool=20fully_p=20=3D=20false;=0A+=20=20EMACS_INT=20posint=20=3D=20PT;=0A=
+=20=20int=20x,=20y,=20rtop,=20rbot,=20rowh,=20vpos,=20startp_integer,=20=
endp,=20pbol_startp,=20peol_endp;=0A+=20=20startp_integer=20=3D=20=
CHARPOS=20(startp);=0A+=20=20struct=20buffer=20*buf;=0A+=20=20buf=20=3D=20=
XBUFFER=20(w->contents);=0A+=20=20if=20(!NILP=20(Flocal_variable_p=20=
(Qwindow_start_end_hook,=20Fwindow_buffer=20(window)))=0A+=20=20=20=20=20=
=20&&=20w->window_start_end_hook_pending)=0A+=20=20=20=20{=0A+=20=20=20=20=
=20=20if=20((posint=20>=3D=20CHARPOS=20(startp)=20&&=20posint=20<=3D=20=
BUF_ZV=20(buf))=0A+=20=20=20=20=20=20=20=20=20=20&&=20CHARPOS=20(startp)=20=
>=3D=20BUF_BEGV=20(buf)=0A+=20=20=20=20=20=20=20=20=20=20&&=20CHARPOS=20=
(startp)=20<=3D=20BUF_ZV=20(buf)=0A+=20=20=20=20=20=20=20=20=20=20&&=20=
pos_visible_p=20(w,=20posint,=20&x,=20&y,=20&rtop,=20&rbot,=20&rowh,=20=
&vpos))=0A+=20=20=20=20=20=20=20=20fully_p=20=3D=20!rtop=20&&=20!rbot;=0A=
+=20=20=20=20=20=20if=20(fully_p)=0A+=20=20=20=20=20=20=20=20{=0A+=20=20=20=
=20=20=20=20=20=20=20CLIP_TEXT_POS_FROM_MARKER=20(startp,=20w->start);=0A=
+=20=20=20=20=20=20=20=20=20=20itdata=20=3D=20bidi_shelve_cache=20();=0A=
+=20=20=20=20=20=20=20=20=20=20start_display=20(&it,=20w,=20startp);=0A+=20=
=20=20=20=20=20=20=20=20=20move_it_vertically=20(&it,=20=
window_box_height=20(w));=0A+=20=20=20=20=20=20=20=20=20=20if=20=
(it.current_y=20<=20it.last_visible_y)=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20move_it_past_eol=20(&it);=0A+=20=20=20=20=20=20=20=20=20=20endp=20=3D=20=
(IT_CHARPOS=20(it));=0A+=20=20=20=20=20=20=20=20=20=20=
bidi_unshelve_cache=20(itdata,=20false);=0A+=20=20=20=20=20=20=20=20=20=20=
SET_PT=20(startp_integer);=0A+=20=20=20=20=20=20=20=20=20=20pbol_startp=20=
=3D=20XINT=20(Fline_beginning_position=20(Qnil));=0A+=20=20=20=20=20=20=20=
=20=20=20SET_PT=20(endp);=0A+=20=20=20=20=20=20=20=20=20=20peol_endp=20=3D=
=20XINT=20(Fline_end_position=20(Qnil));=0A+=20=20=20=20=20=20=20=20=20=20=
SET_PT=20(posint);=0A+#ifdef=20GLYPH_DEBUG=0A+=20=20=20=20=20=20=20=20=20=
=20/*=20See=20the=20doc-string=20for=20`pos-visible-in-window-p'.=20=20=
*/=0A+=20=20=20=20=20=20=20=20=20=20debug_method_add=20(w,=20"%s=20--=20=
x:=20%d=20|=20y:=20%d=20|=20startp:=20%d=20|=20endp:=20%d=20|=20=
pbol_startp:=20%d=20|=20peol_endp:=20%d",=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20string,=20=
x,=20y,=20startp_integer,=20endp,=20pbol_startp,=20peol_endp);=0A+#endif=0A=
+=20=20=20=20=20=20=20=20=20=20/*=20=20Reset=20the=20flag=20_before_=20=
calling=20Lisp,=20not=20after,=20so=20that=0A+=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20if=20Lisp=20does=20signal=20an=20error,=20the=20flag=20=
will=20be=20reset,=20and=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
won't=20cause=20the=20hook=20to=20be=20called=20ad=20nauseam.=20=20*/=0A=
+=20=20=20=20=20=20=20=20=20=20w->window_start_end_hook_pending=20=3D=20=
false;=0A+=20=20=20=20=20=20=20=20=20=20/*=20=20When=20calling=20Lisp=20=
from=20redisplay,=20always=20use=20safe_call,=20to=20be=0A+=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20protected=20against=20errors=20signaled=20by=20=
that=20Lisp.=20=20*/=0A+=20=20=20=20=20=20=20=20=20=20safe_call7=20=
(Qrun_hook_with_args,=20Qwindow_start_end_hook,=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20window,=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
make_number=20(startp_integer),=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20make_number=20(endp),=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
make_number=20(pbol_startp),=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
make_number=20(peol_endp),=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
fully_p=20?=20Qt=20:=20Qnil);=0A+=20=20=20=20=20=20=20=20}=0A+=20=20=20=20=
=20=20=20=20else=0A+=20=20=20=20=20=20=20=20=20=20{=0A+#ifdef=20=
GLYPH_DEBUG=0A+=20=20=20=20=20=20=20=20=20=20=20=20/*=20See=20the=20=
doc-string=20for=20`pos-visible-in-window-p'.=20=20*/=0A+=20=20=20=20=20=20=
=20=20=20=20=20=20debug_method_add=20(w,=20"%s=20--=20x:=20%d=20|=20y:=20=
%d=20|=20rtop:=20%d=20|=20rbot=20%d=20|=20rowh:=20%d=20|=20vpos:=20%d",=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20string,=20x,=20y,=20rtop,=20rbot,=20rowh,=20=
vpos);=0A+#endif=0A+=20=20=20=20=20=20=20=20=20=20}=0A+=20=20=20=20}=0A=
+}=0A=20=0A=20/*=20Perhaps=20in=20the=20future=20avoid=20recentering=20=
windows=20if=20it=0A=20=20=20=20is=20not=20necessary;=20currently=20that=20=
causes=20some=20problems.=20=20*/=0A@@=20-13714,6=20+13783,7=20@@=20=
redisplay_internal=20(void)=0A=20=20=20=20=20=20=20&&=20match_p=0A=20=20=20=
=20=20=20=20&&=20!w->force_start=0A=20=20=20=20=20=20=20&&=20=
!w->optional_new_start=0A+=20=20=20=20=20=20&&=20=
!w->window_start_end_hook_force=0A=20=20=20=20=20=20=20/*=20Point=20must=20=
be=20on=20the=20line=20that=20we=20have=20info=20recorded=20about.=20=20=
*/=0A=20=20=20=20=20=20=20&&=20PT=20>=3D=20CHARPOS=20(tlbufpos)=0A=20=20=20=
=20=20=20=20&&=20PT=20<=3D=20Z=20-=20CHARPOS=20(tlendpos)=0A@@=20=
-15418,6=20+15488,8=20@@=20try_scrolling=20(Lisp_Object=20window,=20bool=20=
just_this_one_p,=0A=20=20=20/*=20Run=20window=20scroll=20functions.=20=20=
*/=0A=20=20=20startp=20=3D=20run_window_scroll_functions=20(window,=20=
startp);=0A=20=0A+=20=20run_window_start_end_hook=20(startp,=20w,=20=
window,=20it,=20"try_scrolling");=0A+=0A=20=20=20/*=20Display=20the=20=
window.=20=20Give=20up=20if=20new=20fonts=20are=20loaded,=20or=20if=20=
point=0A=20=20=20=20=20=20doesn't=20appear.=20=20*/=0A=20=20=20if=20=
(!try_window=20(window,=20startp,=200))=0A@@=20-16082,6=20+16154,7=20@@=20=
redisplay_window=20(Lisp_Object=20window,=20bool=20just_this_one_p)=0A=20=
=20=20bool=20last_line_misfit=20=3D=20false;=0A=20=20=20ptrdiff_t=20=
beg_unchanged,=20end_unchanged;=0A=20=20=20int=20frame_line_height;=0A+=20=
=20bool=20window_start_end_hook_suppress_wsf=20=3D=20false;=0A=20=0A=20=20=
=20SET_TEXT_POS=20(lpoint,=20PT,=20PT_BYTE);=0A=20=20=20opoint=20=3D=20=
lpoint;=0A@@=20-16272,13=20+16345,16=20@@=20redisplay_window=20=
(Lisp_Object=20window,=20bool=20just_this_one_p)=0A=20=0A=20=20=20/*=20=
If=20someone=20specified=20a=20new=20starting=20point=20but=20did=20not=20=
insist,=0A=20=20=20=20=20=20check=20whether=20it=20can=20be=20used.=20=20=
*/=0A-=20=20if=20((w->optional_new_start=20||=20window_frozen_p=20(w))=0A=
+=20=20if=20((w->optional_new_start=20||=20=
w->window_start_end_hook_force=20||=20window_frozen_p=20(w))=0A=20=20=20=20=
=20=20=20&&=20CHARPOS=20(startp)=20>=3D=20BEGV=0A=20=20=20=20=20=20=20&&=20=
CHARPOS=20(startp)=20<=3D=20ZV)=0A=20=20=20=20=20{=0A+=0A+=20=20=20=20=20=
=20if=20(w->window_start_end_hook_force=20&&=20!w->optional_new_start=20=
&&=20!window_frozen_p=20(w)=20&&=20!w->force_start)=0A+=20=20=20=20=20=20=
=20=20window_start_end_hook_suppress_wsf=20=3D=20true;=0A+=0A=20=20=20=20=
=20=20=20ptrdiff_t=20it_charpos;=0A=20=0A-=20=20=20=20=20=20=
w->optional_new_start=20=3D=20false;=0A=20=20=20=20=20=20=20=
start_display=20(&it,=20w,=20startp);=0A=20=20=20=20=20=20=20move_it_to=20=
(&it,=20PT,=200,=20it.last_visible_y,=20-1,=0A=20=09=09=20=20MOVE_TO_POS=20=
|=20MOVE_TO_X=20|=20MOVE_TO_Y);=0A@@=20-16299,14=20+16375,28=20@@=20=
redisplay_window=20(Lisp_Object=20window,=20bool=20just_this_one_p)=0A=20=
=09=20=20=20=20w->force_start=20=3D=20true;=0A=20#ifdef=20GLYPH_DEBUG=0A=20=
=09=20=20if=20(w->force_start)=0A-=09=20=20=20=20{=0A-=09=20=20=20=20=20=20=
if=20(window_frozen_p=20(w))=0A-=09=09debug_method_add=20(w,=20"set=20=
force_start=20from=20frozen=20window=20start");=0A-=09=20=20=20=20=20=20=
else=0A-=09=09debug_method_add=20(w,=20"set=20force_start=20from=20=
optional_new_start");=0A-=09=20=20=20=20}=0A+=20=20=20=20{=0A+=20=20=20=20=
=20=20if=20(window_frozen_p=20(w))=0A+=20=20=20=20=20=20=20=20{=0A+=20=20=
=20=20=20=20=20=20debug_method_add=20(w,=20"set=20force_start=20from=20=
frozen=20window=20start");=0A+=20=20=20=20=20=20}=0A+=20=20=20=20=20=20=
else=20if=20(w->optional_new_start)=0A+=20=20=20=20=20=20=20=20{=0A+=20=20=
=20=20=20=20=20=20debug_method_add=20(w,=20"set=20force_start=20from=20=
optional_new_start");=0A+=20=20=20=20=20=20}=0A+=20=20=20=20=20=20else=20=
if=20(w->window_start_end_hook_force)=0A+=20=20=20=20=20=20=20=20{=0A+=20=
=20=20=20=20=20=20=20debug_method_add=20(w,=20"set=20force_start=20from=20=
window_start_end_hook_force");=0A+=20=20=20=20=20=20}=0A+=20=20=20=20=20=20=
else=0A+=20=20=20=20=20=20=20=20{=0A+=20=20=20=20=20=20=20=20=
debug_method_add=20(w,=20"This=20situation=20is=20not=20yet=20=
contemplated.");=0A+=20=20=20=20=20=20}=0A+=20=20=20=20}=0A=20#endif=0A=20=
=09}=0A+=20=20=20=20=20=20w->optional_new_start=20=3D=20false;=0A+=20=20=20=
=20=20=20w->window_start_end_hook_force=20=3D=20false;=0A=20=20=20=20=20=
}=0A=20=0A=20=20force_start:=0A@@=20-16334,11=20+16424,18=20@@=20=
redisplay_window=20(Lisp_Object=20window,=20bool=20just_this_one_p)=0A=20=
=09=20than=20to=20get=20into=20an=20infinite=20loop=20calling=20the=20=
hook=20functions=0A=20=09=20and=20having=20them=20get=20more=20errors.=20=
=20*/=0A=20=20=20=20=20=20=20if=20(!update_mode_line=0A-=09=20=20||=20!=20=
NILP=20(Vwindow_scroll_functions))=0A+=09=20=20||=20!=20NILP=20=
(Vwindow_scroll_functions)=0A+=09=20=20||=20!=20NILP=20=
(Vwindow_start_end_hook))=0A=20=09{=0A=20=09=20=20update_mode_line=20=3D=20=
true;=0A=20=09=20=20w->update_mode_line=20=3D=20true;=0A-=09=20=20startp=20=
=3D=20run_window_scroll_functions=20(window,=20startp);=0A+=0A+=20=20/*=20=
Run=20window=20scroll=20functions.=20=20*/=0A+=20=20if=20=
(!window_start_end_hook_suppress_wsf)=0A+=20=20=20=20startp=20=3D=20=
run_window_scroll_functions=20(window,=20startp);=0A+=0A+=20=20=
run_window_start_end_hook=20(startp,=20w,=20window,=20it,=20=
"redisplay_window=20(force_start)");=0A+=0A=20=09}=0A=20=0A=20=20=20=20=20=
=20=20if=20(CHARPOS=20(startp)=20<=20BEGV)=0A@@=20-16606,6=20+16703,7=20=
@@=20redisplay_window=20(Lisp_Object=20window,=20bool=20just_this_one_p)=0A=
=20=09=20=20=20=20=20because=20a=20window=20scroll=20function=20can=20=
have=20changed=20the=0A=20=09=20=20=20=20=20buffer.=20=20*/=0A=20=09=20=20=
||=20!NILP=20(Vwindow_scroll_functions)=0A+=09=20=20||=20!NILP=20=
(Vwindow_start_end_hook)=0A=20=09=20=20||=20MINI_WINDOW_P=20(w)=0A=20=09=20=
=20||=20!(used_current_matrix_p=0A=20=09=20=20=20=20=20=20=20=3D=20=
try_window_reusing_current_matrix=20(w)))=0A@@=20-16803,6=20+16901,8=20=
@@=20redisplay_window=20(Lisp_Object=20window,=20bool=20just_this_one_p)=0A=
=20=20=20/*=20Run=20scroll=20hooks.=20=20*/=0A=20=20=20startp=20=3D=20=
run_window_scroll_functions=20(window,=20it.current.pos);=0A=20=0A+=20=20=
run_window_start_end_hook=20(startp,=20w,=20window,=20it,=20=
"redisplay_window=20(recenter)");=0A+=0A=20=20=20/*=20Redisplay=20the=20=
window.=20=20*/=0A=20=20=20bool=20use_desired_matrix=20=3D=20false;=0A=20=
=20=20if=20(!current_matrix_up_to_date_p=0A@@=20-16811,6=20+16911,7=20@@=20=
redisplay_window=20(Lisp_Object=20window,=20bool=20just_this_one_p)=0A=20=
=20=20=20=20=20=20/*=20Don't=20use=20try_window_reusing_current_matrix=20=
in=20this=20case=0A=20=09=20because=20it=20can=20have=20changed=20the=20=
buffer.=20=20*/=0A=20=20=20=20=20=20=20||=20!NILP=20=
(Vwindow_scroll_functions)=0A+=20=20=20=20=20=20||=20!NILP=20=
(Vwindow_start_end_hook)=0A=20=20=20=20=20=20=20||=20!just_this_one_p=0A=20=
=20=20=20=20=20=20||=20MINI_WINDOW_P=20(w)=0A=20=20=20=20=20=20=20||=20=
!(used_current_matrix_p=0A@@=20-16931,7=20+17032,17=20@@=20=
redisplay_window=20(Lisp_Object=20window,=20bool=20just_this_one_p)=0A=20=
=09=20=20clear_glyph_matrix=20(w->desired_matrix);=0A=20=09=20=20if=20(1=20=
=3D=3D=20try_window=20(window,=20it.current.pos,=0A=20=09=09=09=20=20=20=20=
=20=20=20TRY_WINDOW_CHECK_MARGINS))=0A-=09=20=20=20=20goto=20done;=0A+=20=
=20=20=20{=0A+=20=20=20=20=20=20if=20(!NILP=20(Flocal_variable_p=20=
(Qwindow_start_end_hook,=20Fwindow_buffer=20(window)))=0A+=20=20=20=20=20=
=20=20=20=20=20&&=20w->window_start_end_hook_pending)=0A+=20=20=20=20=20=20=
=20=20{=0A+=20=20=20=20=20=20=20=20=20=20run_window_start_end_hook=20=
(it.current.pos,=20w,=20window,=20it,=20"redisplay_window=20=
(post-recenter)");=0A+=20=20=20=20=20=20=20=20=20=20clear_glyph_matrix=20=
(w->desired_matrix);=0A+=20=20=20=20=20=20=20=20=20=20try_window=20=
(window,=20it.current.pos,=200);=0A+=20=20=20=20=20=20=20=20}=0A+=20=20=20=
=20=20=20goto=20done;=0A+=20=20=20=20}=0A+=0A=20=09}=0A=20=0A=20=20=20=20=
=20=20=20/*=20If=20centering=20point=20failed=20to=20make=20the=20whole=20=
line=20visible,=0A@@=20-23686,6=20+23797,20=20@@=20decode_mode_spec=20=
(struct=20window=20*w,=20register=20int=20c,=20int=20field_width,=0A=20=09=
=20=20return=20"@";=0A=20=20=20=20=20=20=20}=0A=20=0A+=20=20=20=20case=20=
'w':=0A+=20=20=20=20=20=20{=0A+=20=20ptrdiff_t=20window_start=20=3D=20=
marker_position=20(w->start);=0A+=20=20pint2str=20(decode_mode_spec_buf,=20=
width,=20window_start);=0A+=20=20return=20decode_mode_spec_buf;=0A+=20=20=
=20=20=20=20}=0A+=0A+=20=20=20=20case=20'W':=0A+=20=20=20=20=20=20{=0A+=20=
=20ptrdiff_t=20window_end=20=3D=20BUF_Z=20(b)=20-=20w->window_end_pos;=0A=
+=20=20pint2str=20(decode_mode_spec_buf,=20width,=20window_end);=0A+=20=20=
return=20decode_mode_spec_buf;=0A+=20=20=20=20=20=20}=0A+=0A=20=20=20=20=20=
case=20'z':=0A=20=20=20=20=20=20=20/*=20coding-system=20(not=20including=20=
end-of-line=20format)=20*/=0A=20=20=20=20=20case=20'Z':=0A@@=20-31151,6=20=
+31276,7=20@@=20They=20are=20still=20logged=20to=20the=20*Messages*=20=
buffer.=20=20*/);=0A=20=20=20DEFSYM=20(Qoverriding_terminal_local_map,=20=
"overriding-terminal-local-map");=0A=20=20=20DEFSYM=20=
(Qoverriding_local_map,=20"overriding-local-map");=0A=20=20=20DEFSYM=20=
(Qwindow_scroll_functions,=20"window-scroll-functions");=0A+=20=20DEFSYM=20=
(Qwindow_start_end_hook,=20"window-start-end-hook");=0A=20=20=20DEFSYM=20=
(Qwindow_text_change_functions,=20"window-text-change-functions");=0A=20=20=
=20DEFSYM=20(Qredisplay_end_trigger_functions,=20=
"redisplay-end-trigger-functions");=0A=20=20=20DEFSYM=20=
(Qinhibit_point_motion_hooks,=20"inhibit-point-motion-hooks");=0A@@=20=
-31472,6=20+31598,13=20@@=20is=20scrolled.=20=20It=20is=20not=20designed=20=
for=20that,=20and=20such=20use=20probably=20won't=0A=20work.=20=20*/);=0A=
=20=20=20Vwindow_scroll_functions=20=3D=20Qnil;=0A=20=0A+=20=20=
DEFVAR_LISP=20("window-start-end-hook",=20Vwindow_start_end_hook,=0A+=20=20=
=20=20doc:=20/*=20A=20bufer-local=20hook=20used=20to=20obtain=20new=20=
`window-start`=20and=20`window-end`=0A+during=20redisplay.=20=20The=20=
function=20attached=20to=20this=20hook=20has=20the=20following=20=
arguments:=0A+WINDOW,=20WINDOW-START,=20WINDOW-END,=20PBOL-START,=20=
PEOL-END,=20FULLY-P.=20=20*/);=0A+=20=20Vwindow_start_end_hook=20=3D=20=
Qnil;=0A+=20=20Fmake_variable_buffer_local=20(Qwindow_start_end_hook);=0A=
+=0A=20=20=20DEFVAR_LISP=20("window-text-change-functions",=0A=20=09=20=20=
=20=20=20=20=20Vwindow_text_change_functions,=0A=20=20=20=20=20doc:=20/*=20=
Functions=20to=20call=20in=20redisplay=20when=20text=20in=20the=20window=20=
might=20change.=20=20*/);=0A=

--Apple-Mail-6-545409187--




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

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


Received: (at 22404) by debbugs.gnu.org; 12 Feb 2016 08:18:55 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Feb 12 03:18:55 2016
Received: from localhost ([127.0.0.1]:37243 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aU8wI-0004Z2-Sm
	for submit <at> debbugs.gnu.org; Fri, 12 Feb 2016 03:18:55 -0500
Received: from eggs.gnu.org ([208.118.235.92]:46893)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <eliz@HIDDEN>) id 1aU8wH-0004Yq-U6
 for 22404 <at> debbugs.gnu.org; Fri, 12 Feb 2016 03:18:54 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <eliz@HIDDEN>) id 1aU8w8-00082m-Ty
 for 22404 <at> debbugs.gnu.org; Fri, 12 Feb 2016 03:18:48 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=-0.6 required=5.0 tests=BAYES_05,RP_MATCHES_RCVD
 autolearn=disabled version=3.3.2
Received: from fencepost.gnu.org ([2001:4830:134:3::e]:43276)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1aU8w8-00082i-RZ; Fri, 12 Feb 2016 03:18:44 -0500
Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1875
 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1aU8w8-0003xW-1m; Fri, 12 Feb 2016 03:18:44 -0500
Date: Fri, 12 Feb 2016 10:18:41 +0200
Message-Id: <83ziv6734u.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Keith David Bershatsky <esq@HIDDEN>
In-reply-to: <m2wpqa6ayz.wl%esq@HIDDEN> (message from Keith David
 Bershatsky on Thu, 11 Feb 2016 16:14:44 -0800)
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
References: <m2wpqa6ayz.wl%esq@HIDDEN>
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From: 2001:4830:134:3::e
X-Spam-Score: -5.3 (-----)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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>
Reply-To: Eli Zaretskii <eliz@HIDDEN>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -5.3 (-----)

> Date:  Thu, 11 Feb 2016 16:14:44 -0800
> From:  Keith David Bershatsky <esq@HIDDEN>
> Cc:  22404 <at> debbugs.gnu.org
> 
> Question, please:  Is it a necessary evil that the `timer-idle-list` must always trigger a redisplay?

I don't think discussing this belongs to this bug report, so I will
answer on emacs-devel instead.




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

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


Received: (at 22404) by debbugs.gnu.org; 12 Feb 2016 00:14:54 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Feb 11 19:14:54 2016
Received: from localhost ([127.0.0.1]:37056 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aU1Nu-0007Bb-0b
	for submit <at> debbugs.gnu.org; Thu, 11 Feb 2016 19:14:54 -0500
Received: from cobb.liquidweb.com ([50.28.13.150]:40137)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <esq@HIDDEN>) id 1aU1Ns-0007BO-SG
 for 22404 <at> debbugs.gnu.org; Thu, 11 Feb 2016 19:14:53 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lawlist.com;
 s=default; 
 h=Content-Type:MIME-Version:Subject:Cc:To:From:Message-ID:Date;
 bh=sjScg8AUlnv5/QNR9KSGT/3LqqbfMsnFSyRgGuqxRIE=; 
 b=3w5AXqvWcJqxNhebW/CZcG+alAhrFtDAA6tc7wXZwPw4FSRTIDo8LAuGXmrzxmeHReW/2kxQVTu6RrxyNay4ivI2fgka8bFfE0SAqcR3HnpC+Mz5C+0dyKfbC4ygyqEq;
Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:53251
 helo=server.private.localhost)
 by cobb.liquidweb.com with esmtp (Exim 4.82)
 (envelope-from <esq@HIDDEN>)
 id 1aU1Nk-0004Ts-DT; Thu, 11 Feb 2016 19:14:44 -0500
Date: Thu, 11 Feb 2016 16:14:44 -0800
Message-ID: <m2wpqa6ayz.wl%esq@HIDDEN>
From: Keith David Bershatsky <esq@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
MIME-Version: 1.0 (generated by   - "")
Content-Type: text/plain; charset=US-ASCII
X-AntiAbuse: This header was added to track abuse,
 please include it with any abuse report
X-AntiAbuse: Primary Hostname - cobb.liquidweb.com
X-AntiAbuse: Original Domain - debbugs.gnu.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - lawlist.com
X-Get-Message-Sender-Via: cobb.liquidweb.com: acl_c_relayhosts_text_entry:
 lawlist|lawlist.com
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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: -0.7 (/)

Question, please:  Is it a necessary evil that the `timer-idle-list` must always trigger a redisplay?

I discovered today that the mere presence of anything attached to the `timer-idle-list` triggers a redisplay when the clock strikes midnight -- e.g., the following example triggers a redisplay after 10 seconds of inactivity:

    (run-with-idle-timer 10 'repeat 'ignore)

I am working on tracking down the issue of why redisplay doesn't realize that my cursor is below the bottom of the window or partially visible following certain large yanks or custom paragraph-down functions.  `font-lock-mode` was affecting my testing because I had 0.5 second idle timer for `jit-lock-context-fontify`.  For example, my point stayed out of view until the 0.5 second buzzer went off, at which time it magically came back into view.  The same thing will happen if I just have `'ignore` on an idle timer.

I do not yet have enough information to submit a meaningful bug report regarding the cursor staying below the bottom of the screen, but I feel I'm making some progress now that I tracked down the magical appearance of my cursor due to the `timer-idle-list`.

Thanks,

Keith

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

At Tue, 09 Feb 2016 19:48:56 +0200,
Eli Zaretskii wrote:
> 
> > Date:  Tue, 09 Feb 2016 08:00:33 -0800
> > From:  Keith David Bershatsky <esq@HIDDEN>
> > Cc:  22404 <at> debbugs.gnu.org
> > 
> > The issue mentioned in my last email was caused by `font-lock-mode` -- when I turn off `font-lock-mode`, there are a few situations where point remains partially visible at the bottom of the window and redisplay does not catch it -- e.g., when the line that point is on is about 90 percent visible at the bottom of the window.
> 
> Did you define faces that change more than just the colors, like use a
> different font or bold/italic typefaces?  If so, what you see might
> not be a bug: the original display is before JIT font-lock kicks in
> and changes the dimensions of the characters on display, so they are
> partially visible only after fontifications did their job.




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

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


Received: (at 22404) by debbugs.gnu.org; 9 Feb 2016 17:49:24 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Feb 09 12:49:24 2016
Received: from localhost ([127.0.0.1]:33819 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aTCPj-0001Nk-TN
	for submit <at> debbugs.gnu.org; Tue, 09 Feb 2016 12:49:24 -0500
Received: from eggs.gnu.org ([208.118.235.92]:43915)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <eliz@HIDDEN>) id 1aTCPi-0001NX-E8
 for 22404 <at> debbugs.gnu.org; Tue, 09 Feb 2016 12:49:22 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <eliz@HIDDEN>) id 1aTCPY-0001wH-GH
 for 22404 <at> debbugs.gnu.org; Tue, 09 Feb 2016 12:49:17 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=0.5 required=5.0 tests=BAYES_50,RP_MATCHES_RCVD
 autolearn=disabled version=3.3.2
Received: from fencepost.gnu.org ([2001:4830:134:3::e]:45186)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1aTCPY-0001wD-8s; Tue, 09 Feb 2016 12:49:12 -0500
Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1317
 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1aTCPW-0004A6-2M; Tue, 09 Feb 2016 12:49:10 -0500
Date: Tue, 09 Feb 2016 19:48:56 +0200
Message-Id: <83twlhbwqf.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Keith David Bershatsky <esq@HIDDEN>
In-reply-to: <m237t1ho0u.wl%esq@HIDDEN> (message from Keith David
 Bershatsky on Tue, 09 Feb 2016 08:00:33 -0800)
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
References: <m237t1ho0u.wl%esq@HIDDEN>
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From: 2001:4830:134:3::e
X-Spam-Score: -5.3 (-----)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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>
Reply-To: Eli Zaretskii <eliz@HIDDEN>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -5.3 (-----)

> Date:  Tue, 09 Feb 2016 08:00:33 -0800
> From:  Keith David Bershatsky <esq@HIDDEN>
> Cc:  22404 <at> debbugs.gnu.org
> 
> The issue mentioned in my last email was caused by `font-lock-mode` -- when I turn off `font-lock-mode`, there are a few situations where point remains partially visible at the bottom of the window and redisplay does not catch it -- e.g., when the line that point is on is about 90 percent visible at the bottom of the window.

Did you define faces that change more than just the colors, like use a
different font or bold/italic typefaces?  If so, what you see might
not be a bug: the original display is before JIT font-lock kicks in
and changes the dimensions of the characters on display, so they are
partially visible only after fontifications did their job.




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

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


Received: (at 22404) by debbugs.gnu.org; 9 Feb 2016 16:00:43 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Feb 09 11:00:43 2016
Received: from localhost ([127.0.0.1]:33768 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aTAiY-0007IB-Sd
	for submit <at> debbugs.gnu.org; Tue, 09 Feb 2016 11:00:43 -0500
Received: from cobb.liquidweb.com ([50.28.13.150]:54333)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <esq@HIDDEN>) id 1aTAiX-0007Hy-Ik
 for 22404 <at> debbugs.gnu.org; Tue, 09 Feb 2016 11:00:42 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lawlist.com;
 s=default; 
 h=Content-Type:MIME-Version:Subject:Cc:To:From:Message-ID:Date;
 bh=QuXIafi5GKxfFEf98Bq7JOtyzi0fIZxYSqHIO51nbhg=; 
 b=HDVJZ3nDdkEimtLjNyFwGTUXEvjCK7uSbis6CrBGVy2JFNst2rQqn6Op2POwSQsRd8sTJJxK472GgHIk7U4j6I7Q3sh5c0PlIhzT+ZI7l6bnQxTyeOWW7kvNHnIBt1qn;
Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:49518
 helo=server.private.localhost)
 by cobb.liquidweb.com with esmtp (Exim 4.82)
 (envelope-from <esq@HIDDEN>)
 id 1aTAiM-0000kC-5j; Tue, 09 Feb 2016 11:00:30 -0500
Date: Tue, 09 Feb 2016 08:00:33 -0800
Message-ID: <m237t1ho0u.wl%esq@HIDDEN>
From: Keith David Bershatsky <esq@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
MIME-Version: 1.0 (generated by   - "")
Content-Type: multipart/mixed; boundary="Multipart_Tue_Feb__9_08:00:31_2016-1"
X-AntiAbuse: This header was added to track abuse,
 please include it with any abuse report
X-AntiAbuse: Primary Hostname - cobb.liquidweb.com
X-AntiAbuse: Original Domain - debbugs.gnu.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - lawlist.com
X-Get-Message-Sender-Via: cobb.liquidweb.com: acl_c_relayhosts_text_entry:
 lawlist|lawlist.com
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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: -0.7 (/)

--Multipart_Tue_Feb__9_08:00:31_2016-1
Content-Type: text/plain; charset=US-ASCII

Thank you, Eli, for the helpful suggestions mentioned in your last e-mail.  I've incorporated them into the latest draft that is attached, and I've simplified some of the code, and I've added a test to avoid unnecessarily triggering of the `window-scroll-functions` hook.

The issue mentioned in my last email was caused by `font-lock-mode` -- when I turn off `font-lock-mode`, there are a few situations where point remains partially visible at the bottom of the window and redisplay does not catch it -- e.g., when the line that point is on is about 90 percent visible at the bottom of the window.  The test in the `run_window_start_end_hook` realizes that point is partially visible, so the function attached to the `window-start-end-hook` does not fire because point was never fully visible during redisplay.  I'll do some more testing over the next few days to find out exactly where in redisplay the test for partially visible is failing such that redisplay never moves the display up one line to bring it into full view.  And, I'll submit a separate ticket once I've tracked it down or once I've come up with a reproducible test.

The proposed usage of this new hook has been simplified to the following:


(defun window-start-end-hook-fn (win start end pbol-start peol-end fully-p)
  (message "win: %s | start: %s | end: %s | pbol-start: %s | peol-end: %s | fully-p: %s"
    win start end pbol-start peol-end fully-p))

(setq scroll-conservatively 101)

(add-hook 'window-start-end-hook 'window-start-end-hook-fn nil t)



--Multipart_Tue_Feb__9_08:00:31_2016-1
Content-Type: application/diff; type=patch
Content-Disposition: attachment; filename="window_start_end_hook.diff"
Content-Transfer-Encoding: base64

ZGlmZiAtLWdpdCBhL3NyYy9rZXlib2FyZC5jIGIvc3JjL2tleWJvYXJkLmMKaW5kZXggYmFjYTRi
NS4uZjM2ZmM2MiAxMDA2NDQKLS0tIGEvc3JjL2tleWJvYXJkLmMKKysrIGIvc3JjL2tleWJvYXJk
LmMKQEAgLTEyMzMsNiArMTIzMywxNSBAQCBzdGF0aWMgaW50IHJlYWRfa2V5X3NlcXVlbmNlIChM
aXNwX09iamVjdCAqLCBpbnQsIExpc3BfT2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCk7CiBzdGF0aWMgdm9pZCBhZGp1c3RfcG9pbnRf
Zm9yX3Byb3BlcnR5IChwdHJkaWZmX3QsIGJvb2wpOwogCitzdGF0aWMgdm9pZAorc2V0X3dpbmRv
d19zdGFydF9lbmRfaG9vayAodm9pZCkKK3sKKyAgTGlzcF9PYmplY3Qgd2luZG93ID0gKHNlbGVj
dGVkX3dpbmRvdyk7CisgIHN0cnVjdCB3aW5kb3cgKncgPSBkZWNvZGVfbGl2ZV93aW5kb3cgKHdp
bmRvdyk7CisgIHctPndpbmRvd19zdGFydF9lbmRfaG9va19mb3JjZSA9IHRydWU7CisgIHctPndp
bmRvd19zdGFydF9lbmRfaG9va19wZW5kaW5nID0gdHJ1ZTsKK30KKwogTGlzcF9PYmplY3QKIGNv
bW1hbmRfbG9vcF8xICh2b2lkKQogewpAQCAtMTI1OCw2ICsxMjY3LDggQEAgY29tbWFuZF9sb29w
XzEgKHZvaWQpCiAgICAgICBpZiAoIU5JTFAgKFZwb3N0X2NvbW1hbmRfaG9vaykgJiYgIU5JTFAg
KFZydW5faG9va3MpKQogCXNhZmVfcnVuX2hvb2tzIChRcG9zdF9jb21tYW5kX2hvb2spOwogCisg
ICAgICBzZXRfd2luZG93X3N0YXJ0X2VuZF9ob29rICgpOworCiAgICAgICAvKiBJZiBkaXNwbGF5
aW5nIGEgbWVzc2FnZSwgcmVzaXplIHRoZSBlY2hvIGFyZWEgd2luZG93IHRvIGZpdAogCSB0aGF0
IG1lc3NhZ2UncyBzaXplIGV4YWN0bHkuICAqLwogICAgICAgaWYgKCFOSUxQIChlY2hvX2FyZWFf
YnVmZmVyWzBdKSkKQEAgLTE0NzQsNiArMTQ4NSw4IEBAIGNvbW1hbmRfbG9vcF8xICh2b2lkKQog
CiAgICAgICBzYWZlX3J1bl9ob29rcyAoUXBvc3RfY29tbWFuZF9ob29rKTsKIAorICAgICAgc2V0
X3dpbmRvd19zdGFydF9lbmRfaG9vayAoKTsKKwogICAgICAgLyogSWYgZGlzcGxheWluZyBhIG1l
c3NhZ2UsIHJlc2l6ZSB0aGUgZWNobyBhcmVhIHdpbmRvdyB0byBmaXQKIAkgdGhhdCBtZXNzYWdl
J3Mgc2l6ZSBleGFjdGx5LiAgKi8KICAgICAgIGlmICghTklMUCAoZWNob19hcmVhX2J1ZmZlclsw
XSkpCmRpZmYgLS1naXQgYS9zcmMvbGlzcC5oIGIvc3JjL2xpc3AuaAppbmRleCAyMTMwMTcwLi4x
NzkxNWRiIDEwMDY0NAotLS0gYS9zcmMvbGlzcC5oCisrKyBiL3NyYy9saXNwLmgKQEAgLTM5MzMs
NiArMzkzMyw3IEBAIGV4dGVybiB2b2lkIGluaXRfZXZhbF9vbmNlICh2b2lkKTsKIGV4dGVybiBM
aXNwX09iamVjdCBzYWZlX2NhbGwgKHB0cmRpZmZfdCwgTGlzcF9PYmplY3QsIC4uLik7CiBleHRl
cm4gTGlzcF9PYmplY3Qgc2FmZV9jYWxsMSAoTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0KTsKIGV4
dGVybiBMaXNwX09iamVjdCBzYWZlX2NhbGwyIChMaXNwX09iamVjdCwgTGlzcF9PYmplY3QsIExp
c3BfT2JqZWN0KTsKK2V4dGVybiBMaXNwX09iamVjdCBzYWZlX2NhbGw3IChMaXNwX09iamVjdCwg
TGlzcF9PYmplY3QsIExpc3BfT2JqZWN0LCBMaXNwX09iamVjdCwgTGlzcF9PYmplY3QsIExpc3Bf
T2JqZWN0LCBMaXNwX09iamVjdCwgTGlzcF9PYmplY3QpOwogZXh0ZXJuIHZvaWQgaW5pdF9ldmFs
ICh2b2lkKTsKIGV4dGVybiB2b2lkIHN5bXNfb2ZfZXZhbCAodm9pZCk7CiBleHRlcm4gdm9pZCB1
bndpbmRfYm9keSAoTGlzcF9PYmplY3QpOwpkaWZmIC0tZ2l0IGEvc3JjL3dpbmRvdy5oIGIvc3Jj
L3dpbmRvdy5oCmluZGV4IGMyOTIwN2QuLjMxNTY5MjcgMTAwNjQ0Ci0tLSBhL3NyYy93aW5kb3cu
aAorKysgYi9zcmMvd2luZG93LmgKQEAgLTM0OCw2ICszNDgsMTIgQEAgc3RydWN0IHdpbmRvdwog
ICAgICAgIFZ3aW5kb3dfc2Nyb2xsX2Z1bmN0aW9uczsgYWxzbyBieSBGcmVjZW50ZXIgd2l0aCBh
cmd1bWVudC4gICovCiAgICAgYm9vbF9iZiBvcHRpb25hbF9uZXdfc3RhcnQgOiAxOwogCisgICAg
LyogVHJ1ZSBtZWFucyBmb3JjZSBhIGNhbGwgdG8gVndpbmRvd19zdGFydF9lbmRfaG9vay4gICov
CisgICAgYm9vbF9iZiB3aW5kb3dfc3RhcnRfZW5kX2hvb2tfZm9yY2UgOiAxOworCisgICAgLyog
VHJ1ZSBtZWFucyB0aGUgaG9vayBoYXMgbm90IHlldCBydW4gd2l0aCBwb2ludCBmdWxseSB2aXNp
YmxlLiAgKi8KKyAgICBib29sX2JmIHdpbmRvd19zdGFydF9lbmRfaG9va19wZW5kaW5nIDogMTsK
KwogICAgIC8qIFRydWUgbWVhbnMgdGhlIGN1cnNvciBpcyBjdXJyZW50bHkgZGlzcGxheWVkLiAg
VGhpcyBjYW4gYmUKICAgICAgICBzZXQgdG8gemVybyBieSBmdW5jdGlvbnMgb3ZlcnBhaW50aW5n
IHRoZSBjdXJzb3IgaW1hZ2UuICAqLwogICAgIGJvb2xfYmYgcGh5c19jdXJzb3Jfb25fcCA6IDE7
CmRpZmYgLS1naXQgYS9zcmMveGRpc3AuYyBiL3NyYy94ZGlzcC5jCmluZGV4IDhmMWU5OGQuLmJk
ZTNiMjMgMTAwNjQ0Ci0tLSBhL3NyYy94ZGlzcC5jCisrKyBiL3NyYy94ZGlzcC5jCkBAIC0yNjE3
LDYgKzI2MTcsMTMgQEAgc2FmZV9jYWxsMiAoTGlzcF9PYmplY3QgZm4sIExpc3BfT2JqZWN0IGFy
ZzEsIExpc3BfT2JqZWN0IGFyZzIpCiAgIHJldHVybiBzYWZlX2NhbGwgKDMsIGZuLCBhcmcxLCBh
cmcyKTsKIH0KIAorLyogIFRoaXMgaXMgZm9yIHRoZSBgd2luZG93X3N0YXJ0X2VuZF9ob29rJy4g
IENhbGwgZnVuY3Rpb24gRk4gd2l0aCBzZXZlbiBhcmd1bWVudHMuCisgICAgUmV0dXJuIHRoZSBy
ZXN1bHQgb3IgbmlsIGlmIHNvbWV0aGluZyB3ZW50IHdyb25nLiAgKi8KK0xpc3BfT2JqZWN0Citz
YWZlX2NhbGw3IChMaXNwX09iamVjdCBmbiwgTGlzcF9PYmplY3QgYXJnMSwgTGlzcF9PYmplY3Qg
YXJnMiwgTGlzcF9PYmplY3QgYXJnMywgTGlzcF9PYmplY3QgYXJnNCwgTGlzcF9PYmplY3QgYXJn
NSwgTGlzcF9PYmplY3QgYXJnNiwgTGlzcF9PYmplY3QgYXJnNykKK3sKKyAgcmV0dXJuIHNhZmVf
Y2FsbCAoOCwgZm4sIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUsIGFyZzYsIGFyZzcpOwor
fQogCiAMCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioKQEAgLTEzNDE2LDYgKzEzNDIzLDY4IEBAIGRvIHsgaWYg
KCEgcG9sbGluZ19zdG9wcGVkX2hlcmUpIHN0b3BfcG9sbGluZyAoKTsJXAogZG8geyBpZiAocG9s
bGluZ19zdG9wcGVkX2hlcmUpIHN0YXJ0X3BvbGxpbmcgKCk7CVwKICAgICAgICBwb2xsaW5nX3N0
b3BwZWRfaGVyZSA9IGZhbHNlOyB9IHdoaWxlIChmYWxzZSkKIAorc3RhdGljIHZvaWQKK3J1bl93
aW5kb3dfc3RhcnRfZW5kX2hvb2sgKHN0cnVjdCB0ZXh0X3BvcyBzdGFydHAsIHN0cnVjdCB3aW5k
b3cgKncsIExpc3BfT2JqZWN0IHdpbmRvdywgc3RydWN0IGl0IGl0LCBjaGFyICpzdHJpbmcpCit7
CisgIHZvaWQgKml0ZGF0YSA9IE5VTEw7CisgIGJvb2wgZnVsbHlfcCA9IGZhbHNlOworICBFTUFD
U19JTlQgcG9zaW50ID0gUFQ7CisgIGludCB4LCB5LCBydG9wLCByYm90LCByb3doLCB2cG9zLCBz
dGFydHBfaW50ZWdlciwgZW5kcCwgcGJvbF9zdGFydHAsIHBlb2xfZW5kcDsKKyAgc3RhcnRwX2lu
dGVnZXIgPSBDSEFSUE9TIChzdGFydHApOworICBzdHJ1Y3QgYnVmZmVyICpidWY7CisgIGJ1ZiA9
IFhCVUZGRVIgKHctPmNvbnRlbnRzKTsKKyAgaWYgKCFOSUxQIChGbG9jYWxfdmFyaWFibGVfcCAo
UXdpbmRvd19zdGFydF9lbmRfaG9vaywgRndpbmRvd19idWZmZXIgKHdpbmRvdykpKQorICAgICAg
JiYgdy0+d2luZG93X3N0YXJ0X2VuZF9ob29rX3BlbmRpbmcpCisgICAgeworICAgIGlmICgocG9z
aW50ID49IENIQVJQT1MgKHN0YXJ0cCkgJiYgcG9zaW50IDw9IEJVRl9aViAoYnVmKSkKKyAgICAg
ICAgJiYgQ0hBUlBPUyAoc3RhcnRwKSA+PSBCVUZfQkVHViAoYnVmKQorICAgICAgICAmJiBDSEFS
UE9TIChzdGFydHApIDw9IEJVRl9aViAoYnVmKQorICAgICAgICAmJiBwb3NfdmlzaWJsZV9wICh3
LCBwb3NpbnQsICZ4LCAmeSwgJnJ0b3AsICZyYm90LCAmcm93aCwgJnZwb3MpKQorICAgICAgZnVs
bHlfcCA9ICFydG9wICYmICFyYm90OworICAgIGlmIChmdWxseV9wKQorICAgICAgeworI2lmZGVm
IEdMWVBIX0RFQlVHCisgICAgICAvKiBTZWUgdGhlIGRvYy1zdHJpbmcgZm9yIGBwb3MtdmlzaWJs
ZS1pbi13aW5kb3ctcCcuICAqLworICAgICAgZGVidWdfbWV0aG9kX2FkZCAodywgIiVzIC0tIHg6
ICVkIHwgeTogJWQgfCBzdGFydHA6ICVkIHwgZW5kcDogJWQgfCBwYm9sX3N0YXJ0cDogJWQgfCBw
ZW9sX2VuZHA6ICVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZywgeCwgeSwg
c3RhcnRwX2ludGVnZXIsIGVuZHAsIHBib2xfc3RhcnRwLCBwZW9sX2VuZHApOworI2VuZGlmCisg
ICAgICBDTElQX1RFWFRfUE9TX0ZST01fTUFSS0VSIChzdGFydHAsIHctPnN0YXJ0KTsKKyAgICAg
IGl0ZGF0YSA9IGJpZGlfc2hlbHZlX2NhY2hlICgpOworICAgICAgc3RhcnRfZGlzcGxheSAoJml0
LCB3LCBzdGFydHApOworICAgICAgbW92ZV9pdF92ZXJ0aWNhbGx5ICgmaXQsIHdpbmRvd19ib3hf
aGVpZ2h0ICh3KSk7CisgICAgICBpZiAoaXQuY3VycmVudF95IDwgaXQubGFzdF92aXNpYmxlX3kp
CisgICAgICAgIG1vdmVfaXRfcGFzdF9lb2wgKCZpdCk7CisgICAgICBlbmRwID0gKElUX0NIQVJQ
T1MgKGl0KSk7CisgICAgICBiaWRpX3Vuc2hlbHZlX2NhY2hlIChpdGRhdGEsIGZhbHNlKTsKKyAg
ICAgIFNFVF9QVCAoc3RhcnRwX2ludGVnZXIpOworICAgICAgcGJvbF9zdGFydHAgPSBYSU5UIChG
bGluZV9iZWdpbm5pbmdfcG9zaXRpb24gKFFuaWwpKTsKKyAgICAgIFNFVF9QVCAoZW5kcCk7Cisg
ICAgICBwZW9sX2VuZHAgPSBYSU5UIChGbGluZV9lbmRfcG9zaXRpb24gKFFuaWwpKTsKKyAgICAg
IFNFVF9QVCAocG9zaW50KTsKKyAgICAgIC8qICBSZXNldCB0aGUgZmxhZyBfYmVmb3JlXyBjYWxs
aW5nIExpc3AsIG5vdCBhZnRlciwgc28gdGhhdAorICAgICAgICAgIGlmIExpc3AgZG9lcyBzaWdu
YWwgYW4gZXJyb3IsIHRoZSBmbGFnIHdpbGwgYmUgcmVzZXQsIGFuZAorICAgICAgICAgIHdvbid0
IGNhdXNlIHRoZSBob29rIHRvIGJlIGNhbGxlZCBhZCBuYXVzZWFtLiAgKi8KKyAgICAgIHctPndp
bmRvd19zdGFydF9lbmRfaG9va19wZW5kaW5nID0gZmFsc2U7CisgICAgICAvKiAgV2hlbiBjYWxs
aW5nIExpc3AgZnJvbSByZWRpc3BsYXksIGFsd2F5cyB1c2Ugc2FmZV9jYWxsLCB0byBiZQorICAg
ICAgICAgIHByb3RlY3RlZCBhZ2FpbnN0IGVycm9ycyBzaWduYWxlZCBieSB0aGF0IExpc3AuICAq
LworICAgICAgc2FmZV9jYWxsNyAoUXJ1bl9ob29rX3dpdGhfYXJncywgUXdpbmRvd19zdGFydF9l
bmRfaG9vaywKKyAgICAgICAgICB3aW5kb3csCisgICAgICAgICAgbWFrZV9udW1iZXIgKHN0YXJ0
cF9pbnRlZ2VyKSwKKyAgICAgICAgICBtYWtlX251bWJlciAoZW5kcCksCisgICAgICAgICAgbWFr
ZV9udW1iZXIgKHBib2xfc3RhcnRwKSwKKyAgICAgICAgICBtYWtlX251bWJlciAocGVvbF9lbmRw
KSwKKyAgICAgICAgICBmdWxseV9wID8gUXQgOiBRbmlsKTsKKyAgICAgIH0KKyAgICAgIGVsc2UK
KyAgICAgICAgeworI2lmZGVmIEdMWVBIX0RFQlVHCisgICAgICAgIC8qIFNlZSB0aGUgZG9jLXN0
cmluZyBmb3IgYHBvcy12aXNpYmxlLWluLXdpbmRvdy1wJy4gICovCisgICAgICAgIGRlYnVnX21l
dGhvZF9hZGQgKHcsICIlcyAtLSB4OiAlZCB8IHk6ICVkIHwgcnRvcDogJWQgfCByYm90ICVkIHwg
cm93aDogJWQgfCB2cG9zOiAlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJp
bmcsIHgsIHksIHJ0b3AsIHJib3QsIHJvd2gsIHZwb3MpOworI2VuZGlmCisgICAgICAgIH0KKyAg
ICB9Cit9CiAKIC8qIFBlcmhhcHMgaW4gdGhlIGZ1dHVyZSBhdm9pZCByZWNlbnRlcmluZyB3aW5k
b3dzIGlmIGl0CiAgICBpcyBub3QgbmVjZXNzYXJ5OyBjdXJyZW50bHkgdGhhdCBjYXVzZXMgc29t
ZSBwcm9ibGVtcy4gICovCkBAIC0xMzcxMyw2ICsxMzc4Miw3IEBAIHJlZGlzcGxheV9pbnRlcm5h
bCAodm9pZCkKICAgICAgICYmIG1hdGNoX3AKICAgICAgICYmICF3LT5mb3JjZV9zdGFydAogICAg
ICAgJiYgIXctPm9wdGlvbmFsX25ld19zdGFydAorICAgICAgJiYgIXctPndpbmRvd19zdGFydF9l
bmRfaG9va19mb3JjZQogICAgICAgLyogUG9pbnQgbXVzdCBiZSBvbiB0aGUgbGluZSB0aGF0IHdl
IGhhdmUgaW5mbyByZWNvcmRlZCBhYm91dC4gICovCiAgICAgICAmJiBQVCA+PSBDSEFSUE9TICh0
bGJ1ZnBvcykKICAgICAgICYmIFBUIDw9IFogLSBDSEFSUE9TICh0bGVuZHBvcykKQEAgLTE1NDEy
LDYgKzE1NDgyLDggQEAgdHJ5X3Njcm9sbGluZyAoTGlzcF9PYmplY3Qgd2luZG93LCBib29sIGp1
c3RfdGhpc19vbmVfcCwKICAgLyogUnVuIHdpbmRvdyBzY3JvbGwgZnVuY3Rpb25zLiAgKi8KICAg
c3RhcnRwID0gcnVuX3dpbmRvd19zY3JvbGxfZnVuY3Rpb25zICh3aW5kb3csIHN0YXJ0cCk7CiAK
KyAgcnVuX3dpbmRvd19zdGFydF9lbmRfaG9vayAoc3RhcnRwLCB3LCB3aW5kb3csIGl0LCAidHJ5
X3Njcm9sbGluZyIpOworCiAgIC8qIERpc3BsYXkgdGhlIHdpbmRvdy4gIEdpdmUgdXAgaWYgbmV3
IGZvbnRzIGFyZSBsb2FkZWQsIG9yIGlmIHBvaW50CiAgICAgIGRvZXNuJ3QgYXBwZWFyLiAgKi8K
ICAgaWYgKCF0cnlfd2luZG93ICh3aW5kb3csIHN0YXJ0cCwgMCkpCkBAIC0xNjA3Niw2ICsxNjE0
OCw3IEBAIHJlZGlzcGxheV93aW5kb3cgKExpc3BfT2JqZWN0IHdpbmRvdywgYm9vbCBqdXN0X3Ro
aXNfb25lX3ApCiAgIGJvb2wgbGFzdF9saW5lX21pc2ZpdCA9IGZhbHNlOwogICBwdHJkaWZmX3Qg
YmVnX3VuY2hhbmdlZCwgZW5kX3VuY2hhbmdlZDsKICAgaW50IGZyYW1lX2xpbmVfaGVpZ2h0Owor
ICBib29sIHdpbmRvd19zdGFydF9lbmRfaG9va19zdXBwcmVzc193c2YgPSBmYWxzZTsKIAogICBT
RVRfVEVYVF9QT1MgKGxwb2ludCwgUFQsIFBUX0JZVEUpOwogICBvcG9pbnQgPSBscG9pbnQ7CkBA
IC0xNjI2NiwxMyArMTYzMzksMTYgQEAgcmVkaXNwbGF5X3dpbmRvdyAoTGlzcF9PYmplY3Qgd2lu
ZG93LCBib29sIGp1c3RfdGhpc19vbmVfcCkKIAogICAvKiBJZiBzb21lb25lIHNwZWNpZmllZCBh
IG5ldyBzdGFydGluZyBwb2ludCBidXQgZGlkIG5vdCBpbnNpc3QsCiAgICAgIGNoZWNrIHdoZXRo
ZXIgaXQgY2FuIGJlIHVzZWQuICAqLwotICBpZiAoKHctPm9wdGlvbmFsX25ld19zdGFydCB8fCB3
aW5kb3dfZnJvemVuX3AgKHcpKQorICBpZiAoKHctPm9wdGlvbmFsX25ld19zdGFydCB8fCB3LT53
aW5kb3dfc3RhcnRfZW5kX2hvb2tfZm9yY2UgfHwgd2luZG93X2Zyb3plbl9wICh3KSkKICAgICAg
ICYmIENIQVJQT1MgKHN0YXJ0cCkgPj0gQkVHVgogICAgICAgJiYgQ0hBUlBPUyAoc3RhcnRwKSA8
PSBaVikKICAgICB7CisKKyAgICAgIGlmICh3LT53aW5kb3dfc3RhcnRfZW5kX2hvb2tfZm9yY2Ug
JiYgIXctPm9wdGlvbmFsX25ld19zdGFydCAmJiAhd2luZG93X2Zyb3plbl9wICh3KSAmJiAhdy0+
Zm9yY2Vfc3RhcnQpCisgICAgICAgIHdpbmRvd19zdGFydF9lbmRfaG9va19zdXBwcmVzc193c2Yg
PSB0cnVlOworCiAgICAgICBwdHJkaWZmX3QgaXRfY2hhcnBvczsKIAotICAgICAgdy0+b3B0aW9u
YWxfbmV3X3N0YXJ0ID0gZmFsc2U7CiAgICAgICBzdGFydF9kaXNwbGF5ICgmaXQsIHcsIHN0YXJ0
cCk7CiAgICAgICBtb3ZlX2l0X3RvICgmaXQsIFBULCAwLCBpdC5sYXN0X3Zpc2libGVfeSwgLTEs
CiAJCSAgTU9WRV9UT19QT1MgfCBNT1ZFX1RPX1ggfCBNT1ZFX1RPX1kpOwpAQCAtMTYyOTMsMTQg
KzE2MzY5LDI4IEBAIHJlZGlzcGxheV93aW5kb3cgKExpc3BfT2JqZWN0IHdpbmRvdywgYm9vbCBq
dXN0X3RoaXNfb25lX3ApCiAJICAgIHctPmZvcmNlX3N0YXJ0ID0gdHJ1ZTsKICNpZmRlZiBHTFlQ
SF9ERUJVRwogCSAgaWYgKHctPmZvcmNlX3N0YXJ0KQotCSAgICB7Ci0JICAgICAgaWYgKHdpbmRv
d19mcm96ZW5fcCAodykpCi0JCWRlYnVnX21ldGhvZF9hZGQgKHcsICJzZXQgZm9yY2Vfc3RhcnQg
ZnJvbSBmcm96ZW4gd2luZG93IHN0YXJ0Iik7Ci0JICAgICAgZWxzZQotCQlkZWJ1Z19tZXRob2Rf
YWRkICh3LCAic2V0IGZvcmNlX3N0YXJ0IGZyb20gb3B0aW9uYWxfbmV3X3N0YXJ0Iik7Ci0JICAg
IH0KKyAgICB7CisgICAgICBpZiAod2luZG93X2Zyb3plbl9wICh3KSkKKyAgICAgICAgeworICAg
ICAgICBkZWJ1Z19tZXRob2RfYWRkICh3LCAic2V0IGZvcmNlX3N0YXJ0IGZyb20gZnJvemVuIHdp
bmRvdyBzdGFydCIpOworICAgICAgfQorICAgICAgZWxzZSBpZiAody0+b3B0aW9uYWxfbmV3X3N0
YXJ0KQorICAgICAgICB7CisgICAgICAgIGRlYnVnX21ldGhvZF9hZGQgKHcsICJzZXQgZm9yY2Vf
c3RhcnQgZnJvbSBvcHRpb25hbF9uZXdfc3RhcnQiKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYg
KHctPndpbmRvd19zdGFydF9lbmRfaG9va19mb3JjZSkKKyAgICAgICAgeworICAgICAgICBkZWJ1
Z19tZXRob2RfYWRkICh3LCAic2V0IGZvcmNlX3N0YXJ0IGZyb20gd2luZG93X3N0YXJ0X2VuZF9o
b29rX2ZvcmNlIik7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgZGVi
dWdfbWV0aG9kX2FkZCAodywgIlRoaXMgc2l0dWF0aW9uIGlzIG5vdCB5ZXQgY29udGVtcGxhdGVk
LiIpOworICAgICAgfQorICAgIH0KICNlbmRpZgogCX0KKyAgICAgIHctPm9wdGlvbmFsX25ld19z
dGFydCA9IGZhbHNlOworICAgICAgdy0+d2luZG93X3N0YXJ0X2VuZF9ob29rX2ZvcmNlID0gZmFs
c2U7CiAgICAgfQogCiAgZm9yY2Vfc3RhcnQ6CkBAIC0xNjMyOCwxMSArMTY0MTgsMTggQEAgcmVk
aXNwbGF5X3dpbmRvdyAoTGlzcF9PYmplY3Qgd2luZG93LCBib29sIGp1c3RfdGhpc19vbmVfcCkK
IAkgdGhhbiB0byBnZXQgaW50byBhbiBpbmZpbml0ZSBsb29wIGNhbGxpbmcgdGhlIGhvb2sgZnVu
Y3Rpb25zCiAJIGFuZCBoYXZpbmcgdGhlbSBnZXQgbW9yZSBlcnJvcnMuICAqLwogICAgICAgaWYg
KCF1cGRhdGVfbW9kZV9saW5lCi0JICB8fCAhIE5JTFAgKFZ3aW5kb3dfc2Nyb2xsX2Z1bmN0aW9u
cykpCisJICB8fCAhIE5JTFAgKFZ3aW5kb3dfc2Nyb2xsX2Z1bmN0aW9ucykKKwkgIHx8ICEgTklM
UCAoVndpbmRvd19zdGFydF9lbmRfaG9vaykpCiAJewogCSAgdXBkYXRlX21vZGVfbGluZSA9IHRy
dWU7CiAJICB3LT51cGRhdGVfbW9kZV9saW5lID0gdHJ1ZTsKLQkgIHN0YXJ0cCA9IHJ1bl93aW5k
b3dfc2Nyb2xsX2Z1bmN0aW9ucyAod2luZG93LCBzdGFydHApOworCisgIC8qIFJ1biB3aW5kb3cg
c2Nyb2xsIGZ1bmN0aW9ucy4gICovCisgIGlmICghd2luZG93X3N0YXJ0X2VuZF9ob29rX3N1cHBy
ZXNzX3dzZikKKyAgICBzdGFydHAgPSBydW5fd2luZG93X3Njcm9sbF9mdW5jdGlvbnMgKHdpbmRv
dywgc3RhcnRwKTsKKworICBydW5fd2luZG93X3N0YXJ0X2VuZF9ob29rIChzdGFydHAsIHcsIHdp
bmRvdywgaXQsICJyZWRpc3BsYXlfd2luZG93IChmb3JjZV9zdGFydCkiKTsKKwogCX0KIAogICAg
ICAgaWYgKENIQVJQT1MgKHN0YXJ0cCkgPCBCRUdWKQpAQCAtMTY2MDAsNiArMTY2OTcsNyBAQCBy
ZWRpc3BsYXlfd2luZG93IChMaXNwX09iamVjdCB3aW5kb3csIGJvb2wganVzdF90aGlzX29uZV9w
KQogCSAgICAgYmVjYXVzZSBhIHdpbmRvdyBzY3JvbGwgZnVuY3Rpb24gY2FuIGhhdmUgY2hhbmdl
ZCB0aGUKIAkgICAgIGJ1ZmZlci4gICovCiAJICB8fCAhTklMUCAoVndpbmRvd19zY3JvbGxfZnVu
Y3Rpb25zKQorCSAgfHwgIU5JTFAgKFZ3aW5kb3dfc3RhcnRfZW5kX2hvb2spCiAJICB8fCBNSU5J
X1dJTkRPV19QICh3KQogCSAgfHwgISh1c2VkX2N1cnJlbnRfbWF0cml4X3AKIAkgICAgICAgPSB0
cnlfd2luZG93X3JldXNpbmdfY3VycmVudF9tYXRyaXggKHcpKSkKQEAgLTE2Nzk3LDYgKzE2ODk1
LDggQEAgcmVkaXNwbGF5X3dpbmRvdyAoTGlzcF9PYmplY3Qgd2luZG93LCBib29sIGp1c3RfdGhp
c19vbmVfcCkKICAgLyogUnVuIHNjcm9sbCBob29rcy4gICovCiAgIHN0YXJ0cCA9IHJ1bl93aW5k
b3dfc2Nyb2xsX2Z1bmN0aW9ucyAod2luZG93LCBpdC5jdXJyZW50LnBvcyk7CiAKKyAgcnVuX3dp
bmRvd19zdGFydF9lbmRfaG9vayAoc3RhcnRwLCB3LCB3aW5kb3csIGl0LCAicmVkaXNwbGF5X3dp
bmRvdyAocmVjZW50ZXIpIik7CisKICAgLyogUmVkaXNwbGF5IHRoZSB3aW5kb3cuICAqLwogICBi
b29sIHVzZV9kZXNpcmVkX21hdHJpeCA9IGZhbHNlOwogICBpZiAoIWN1cnJlbnRfbWF0cml4X3Vw
X3RvX2RhdGVfcApAQCAtMTY4MDUsNiArMTY5MDUsNyBAQCByZWRpc3BsYXlfd2luZG93IChMaXNw
X09iamVjdCB3aW5kb3csIGJvb2wganVzdF90aGlzX29uZV9wKQogICAgICAgLyogRG9uJ3QgdXNl
IHRyeV93aW5kb3dfcmV1c2luZ19jdXJyZW50X21hdHJpeCBpbiB0aGlzIGNhc2UKIAkgYmVjYXVz
ZSBpdCBjYW4gaGF2ZSBjaGFuZ2VkIHRoZSBidWZmZXIuICAqLwogICAgICAgfHwgIU5JTFAgKFZ3
aW5kb3dfc2Nyb2xsX2Z1bmN0aW9ucykKKyAgICAgIHx8ICFOSUxQIChWd2luZG93X3N0YXJ0X2Vu
ZF9ob29rKQogICAgICAgfHwgIWp1c3RfdGhpc19vbmVfcAogICAgICAgfHwgTUlOSV9XSU5ET1df
UCAodykKICAgICAgIHx8ICEodXNlZF9jdXJyZW50X21hdHJpeF9wCkBAIC0yMzY4MCw2ICsyMzc4
MSwyMCBAQCBkZWNvZGVfbW9kZV9zcGVjIChzdHJ1Y3Qgd2luZG93ICp3LCByZWdpc3RlciBpbnQg
YywgaW50IGZpZWxkX3dpZHRoLAogCSAgcmV0dXJuICJAIjsKICAgICAgIH0KIAorICAgIGNhc2Ug
J3cnOgorICAgICAgeworICBwdHJkaWZmX3Qgd2luZG93X3N0YXJ0ID0gbWFya2VyX3Bvc2l0aW9u
ICh3LT5zdGFydCk7CisgIHBpbnQyc3RyIChkZWNvZGVfbW9kZV9zcGVjX2J1Ziwgd2lkdGgsIHdp
bmRvd19zdGFydCk7CisgIHJldHVybiBkZWNvZGVfbW9kZV9zcGVjX2J1ZjsKKyAgICAgIH0KKwor
ICAgIGNhc2UgJ1cnOgorICAgICAgeworICBwdHJkaWZmX3Qgd2luZG93X2VuZCA9IEJVRl9aIChi
KSAtIHctPndpbmRvd19lbmRfcG9zOworICBwaW50MnN0ciAoZGVjb2RlX21vZGVfc3BlY19idWYs
IHdpZHRoLCB3aW5kb3dfZW5kKTsKKyAgcmV0dXJuIGRlY29kZV9tb2RlX3NwZWNfYnVmOworICAg
ICAgfQorCiAgICAgY2FzZSAneic6CiAgICAgICAvKiBjb2Rpbmctc3lzdGVtIChub3QgaW5jbHVk
aW5nIGVuZC1vZi1saW5lIGZvcm1hdCkgKi8KICAgICBjYXNlICdaJzoKQEAgLTMxMTQ1LDYgKzMx
MjYwLDcgQEAgVGhleSBhcmUgc3RpbGwgbG9nZ2VkIHRvIHRoZSAqTWVzc2FnZXMqIGJ1ZmZlci4g
ICovKTsKICAgREVGU1lNIChRb3ZlcnJpZGluZ190ZXJtaW5hbF9sb2NhbF9tYXAsICJvdmVycmlk
aW5nLXRlcm1pbmFsLWxvY2FsLW1hcCIpOwogICBERUZTWU0gKFFvdmVycmlkaW5nX2xvY2FsX21h
cCwgIm92ZXJyaWRpbmctbG9jYWwtbWFwIik7CiAgIERFRlNZTSAoUXdpbmRvd19zY3JvbGxfZnVu
Y3Rpb25zLCAid2luZG93LXNjcm9sbC1mdW5jdGlvbnMiKTsKKyAgREVGU1lNIChRd2luZG93X3N0
YXJ0X2VuZF9ob29rLCAid2luZG93LXN0YXJ0LWVuZC1ob29rIik7CiAgIERFRlNZTSAoUXdpbmRv
d190ZXh0X2NoYW5nZV9mdW5jdGlvbnMsICJ3aW5kb3ctdGV4dC1jaGFuZ2UtZnVuY3Rpb25zIik7
CiAgIERFRlNZTSAoUXJlZGlzcGxheV9lbmRfdHJpZ2dlcl9mdW5jdGlvbnMsICJyZWRpc3BsYXkt
ZW5kLXRyaWdnZXItZnVuY3Rpb25zIik7CiAgIERFRlNZTSAoUWluaGliaXRfcG9pbnRfbW90aW9u
X2hvb2tzLCAiaW5oaWJpdC1wb2ludC1tb3Rpb24taG9va3MiKTsKQEAgLTMxNDY2LDYgKzMxNTgy
LDEzIEBAIGlzIHNjcm9sbGVkLiAgSXQgaXMgbm90IGRlc2lnbmVkIGZvciB0aGF0LCBhbmQgc3Vj
aCB1c2UgcHJvYmFibHkgd29uJ3QKIHdvcmsuICAqLyk7CiAgIFZ3aW5kb3dfc2Nyb2xsX2Z1bmN0
aW9ucyA9IFFuaWw7CiAKKyAgREVGVkFSX0xJU1AgKCJ3aW5kb3ctc3RhcnQtZW5kLWhvb2siLCBW
d2luZG93X3N0YXJ0X2VuZF9ob29rLAorICAgIGRvYzogLyogQSBidWZlci1sb2NhbCBob29rIHVz
ZWQgdG8gb2J0YWluIG5ldyBgd2luZG93LXN0YXJ0YCBhbmQgYHdpbmRvdy1lbmRgCitkdXJpbmcg
cmVkaXNwbGF5LiAgVGhlIGZ1bmN0aW9uIGF0dGFjaGVkIHRvIHRoaXMgaG9vayBoYXMgdGhlIGZv
bGxvd2luZyBhcmd1bWVudHM6CitXSU5ET1csIFdJTkRPVy1TVEFSVCwgV0lORE9XLUVORCwgUEJP
TC1TVEFSVCwgUEVPTC1FTkQsIEZVTExZLVAuICAqLyk7CisgIFZ3aW5kb3dfc3RhcnRfZW5kX2hv
b2sgPSBRbmlsOworICBGbWFrZV92YXJpYWJsZV9idWZmZXJfbG9jYWwgKFF3aW5kb3dfc3RhcnRf
ZW5kX2hvb2spOworCiAgIERFRlZBUl9MSVNQICgid2luZG93LXRleHQtY2hhbmdlLWZ1bmN0aW9u
cyIsCiAJICAgICAgIFZ3aW5kb3dfdGV4dF9jaGFuZ2VfZnVuY3Rpb25zLAogICAgIGRvYzogLyog
RnVuY3Rpb25zIHRvIGNhbGwgaW4gcmVkaXNwbGF5IHdoZW4gdGV4dCBpbiB0aGUgd2luZG93IG1p
Z2h0IGNoYW5nZS4gICovKTsK

--Multipart_Tue_Feb__9_08:00:31_2016-1--




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

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


Received: (at 22404) by debbugs.gnu.org; 8 Feb 2016 18:12:13 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 08 13:12:12 2016
Received: from localhost ([127.0.0.1]:60333 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aSqIG-0000dB-Gj
	for submit <at> debbugs.gnu.org; Mon, 08 Feb 2016 13:12:12 -0500
Received: from eggs.gnu.org ([208.118.235.92]:43544)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <eliz@HIDDEN>) id 1aSqIB-0000b7-VO
 for 22404 <at> debbugs.gnu.org; Mon, 08 Feb 2016 13:12:08 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <eliz@HIDDEN>) id 1aSpRM-0002PR-8S
 for 22404 <at> debbugs.gnu.org; Mon, 08 Feb 2016 12:17:33 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=0.5 required=5.0 tests=BAYES_50,RP_MATCHES_RCVD
 autolearn=disabled version=3.3.2
Received: from fencepost.gnu.org ([2001:4830:134:3::e]:33156)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1aSpRM-0002PN-5I; Mon, 08 Feb 2016 12:17:32 -0500
Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1486
 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1aSpRL-0005JE-H9; Mon, 08 Feb 2016 12:17:31 -0500
Date: Mon, 08 Feb 2016 19:17:15 +0200
Message-Id: <83d1s7qfz8.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Keith David Bershatsky <esq@HIDDEN>
In-reply-to: <m2r3gnh9en.wl%esq@HIDDEN> (message from Keith David
 Bershatsky on Mon, 08 Feb 2016 00:51:44 -0800)
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
References: <m2r3gnh9en.wl%esq@HIDDEN>
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From: 2001:4830:134:3::e
X-Spam-Score: -5.3 (-----)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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>
Reply-To: Eli Zaretskii <eliz@HIDDEN>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -5.3 (-----)

> Date:  Mon, 08 Feb 2016 00:51:44 -0800
> From:  Keith David Bershatsky <esq@HIDDEN>
> Cc:  22404 <at> debbugs.gnu.org
> 
> I noticed that redisplay handles a large yank/paste by erroneously letting the user see for a split second that point is partially visible on the bottom of the screen (when `scroll-conservatively` is 101), and then redisplay fixes the display by moving the lines up far enough to bring point back into view.  That behavior appears to be a bug -- i.e., Emacs should internally know that point is partially visible at the bottom of the screen following a large yank and then patiently wait to display the finished product until point is fully visible.  This is most noticeable in my own minor-mode that can take up to .040 seconds to perform its calculations with `vertical-motion'.

A reproducible recipe will be appreciated (in a separate bug report,
please).  I'm guessing that some redisplay optimization causes the
slightly inaccurate display, which is thereafter fixed.  If so, it
could be that the conditions for that optimization should be fixed.

> +        CALLN (Frun_hook_with_args, Qwindow_start_end_hook, window,
> +            make_number (startp_integer),
> +            make_number (endp),
> +            make_number (pbol_startp),
> +            make_number (peol_endp),
> +            fully_p ? Qt : Qnil);

When calling Lisp from redisplay, always use safe_call, to be
protected against errors signaled by that Lisp.

> +        w->window_start_end_hook_pending = false;

For the same reason, reset the flag _before_ calling Lisp, not after,
so that if Lisp does signal an error, the flag will be reset, and
won't cause the hook to be called ad nauseam.




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

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


Received: (at 22404) by debbugs.gnu.org; 8 Feb 2016 08:51:56 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 08 03:51:56 2016
Received: from localhost ([127.0.0.1]:37945 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aShY3-0001ZE-Qa
	for submit <at> debbugs.gnu.org; Mon, 08 Feb 2016 03:51:55 -0500
Received: from cobb.liquidweb.com ([50.28.13.150]:46234)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <esq@HIDDEN>) id 1aShY2-0001Z1-7Y
 for 22404 <at> debbugs.gnu.org; Mon, 08 Feb 2016 03:51:54 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lawlist.com;
 s=default; 
 h=Content-Type:MIME-Version:Subject:Cc:To:From:Message-ID:Date;
 bh=sSlUAt5p5rHF96X3qELPDmgyo0ogsSTKmRoEWeY3qvI=; 
 b=3OkIDcIU1+TrpEhIWUiQ2LnB+k6oeeJYf+MRWOZR7H5tYOywmgBiSXmHbXHhfMAOAVFddEDYfT2yYd89RuUMvD7nkMa5yJ5r8CaO5q5PuVUyf0zN612T2aRcDYcPBeHR;
Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:54321
 helo=server.private.localhost)
 by cobb.liquidweb.com with esmtp (Exim 4.82)
 (envelope-from <esq@HIDDEN>)
 id 1aShXs-0003W7-5F; Mon, 08 Feb 2016 03:51:44 -0500
Date: Mon, 08 Feb 2016 00:51:44 -0800
Message-ID: <m2r3gnh9en.wl%esq@HIDDEN>
From: Keith David Bershatsky <esq@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
MIME-Version: 1.0 (generated by   - "")
Content-Type: multipart/mixed; boundary="Multipart_Mon_Feb__8_00:51:43_2016-1"
X-AntiAbuse: This header was added to track abuse,
 please include it with any abuse report
X-AntiAbuse: Primary Hostname - cobb.liquidweb.com
X-AntiAbuse: Original Domain - debbugs.gnu.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - lawlist.com
X-Get-Message-Sender-Via: cobb.liquidweb.com: acl_c_relayhosts_text_entry:
 lawlist|lawlist.com
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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: -0.7 (/)

--Multipart_Mon_Feb__8_00:51:43_2016-1
Content-Type: text/plain; charset=US-ASCII

Attached is the next in the series of draft concept ideas, which ensures the point is fully visible before firing.  Some people will naturally prefer that point be partially visible when the hook is triggered, but I like fully visible instead.

I noticed that redisplay handles a large yank/paste by erroneously letting the user see for a split second that point is partially visible on the bottom of the screen (when `scroll-conservatively` is 101), and then redisplay fixes the display by moving the lines up far enough to bring point back into view.  That behavior appears to be a bug -- i.e., Emacs should internally know that point is partially visible at the bottom of the screen following a large yank and then patiently wait to display the finished product until point is fully visible.  This is most noticeable in my own minor-mode that can take up to .040 seconds to perform its calculations with `vertical-motion'.

The following is the proposed usage based on the attached concept draft patch/diff file:


(defun window-start-end-hook-fn (win start end pbol-start peol-end fully-p)
  (message "win: %s | start: %s | end: %s | pbol-start: %s | peol-end: %s | fully-p: %s"
    win start end pbol-start peol-end fully-p))

(setq window-start-end-hook-var t)

(setq scroll-conservatively 101)

(add-hook 'window-start-end-hook 'window-start-end-hook-fn nil t)



--Multipart_Mon_Feb__8_00:51:43_2016-1
Content-Type: application/diff; type=patch
Content-Disposition: attachment; filename="window_start_end_hook.diff"
Content-Transfer-Encoding: base64

ZGlmZiAtLWdpdCBhL3NyYy9rZXlib2FyZC5jIGIvc3JjL2tleWJvYXJkLmMKaW5kZXggYmFjYTRi
NS4uZjM2ZmM2MiAxMDA2NDQKLS0tIGEvc3JjL2tleWJvYXJkLmMKKysrIGIvc3JjL2tleWJvYXJk
LmMKQEAgLTEyMzMsNiArMTIzMywxNSBAQCBzdGF0aWMgaW50IHJlYWRfa2V5X3NlcXVlbmNlIChM
aXNwX09iamVjdCAqLCBpbnQsIExpc3BfT2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCk7CiBzdGF0aWMgdm9pZCBhZGp1c3RfcG9pbnRf
Zm9yX3Byb3BlcnR5IChwdHJkaWZmX3QsIGJvb2wpOwogCitzdGF0aWMgdm9pZAorc2V0X3dpbmRv
d19zdGFydF9lbmRfaG9vayAodm9pZCkKK3sKKyAgTGlzcF9PYmplY3Qgd2luZG93ID0gKHNlbGVj
dGVkX3dpbmRvdyk7CisgIHN0cnVjdCB3aW5kb3cgKncgPSBkZWNvZGVfbGl2ZV93aW5kb3cgKHdp
bmRvdyk7CisgIHctPndpbmRvd19zdGFydF9lbmRfaG9va19mb3JjZSA9IHRydWU7CisgIHctPndp
bmRvd19zdGFydF9lbmRfaG9va19wZW5kaW5nID0gdHJ1ZTsKK30KKwogTGlzcF9PYmplY3QKIGNv
bW1hbmRfbG9vcF8xICh2b2lkKQogewpAQCAtMTI1OCw2ICsxMjY3LDggQEAgY29tbWFuZF9sb29w
XzEgKHZvaWQpCiAgICAgICBpZiAoIU5JTFAgKFZwb3N0X2NvbW1hbmRfaG9vaykgJiYgIU5JTFAg
KFZydW5faG9va3MpKQogCXNhZmVfcnVuX2hvb2tzIChRcG9zdF9jb21tYW5kX2hvb2spOwogCisg
ICAgICBzZXRfd2luZG93X3N0YXJ0X2VuZF9ob29rICgpOworCiAgICAgICAvKiBJZiBkaXNwbGF5
aW5nIGEgbWVzc2FnZSwgcmVzaXplIHRoZSBlY2hvIGFyZWEgd2luZG93IHRvIGZpdAogCSB0aGF0
IG1lc3NhZ2UncyBzaXplIGV4YWN0bHkuICAqLwogICAgICAgaWYgKCFOSUxQIChlY2hvX2FyZWFf
YnVmZmVyWzBdKSkKQEAgLTE0NzQsNiArMTQ4NSw4IEBAIGNvbW1hbmRfbG9vcF8xICh2b2lkKQog
CiAgICAgICBzYWZlX3J1bl9ob29rcyAoUXBvc3RfY29tbWFuZF9ob29rKTsKIAorICAgICAgc2V0
X3dpbmRvd19zdGFydF9lbmRfaG9vayAoKTsKKwogICAgICAgLyogSWYgZGlzcGxheWluZyBhIG1l
c3NhZ2UsIHJlc2l6ZSB0aGUgZWNobyBhcmVhIHdpbmRvdyB0byBmaXQKIAkgdGhhdCBtZXNzYWdl
J3Mgc2l6ZSBleGFjdGx5LiAgKi8KICAgICAgIGlmICghTklMUCAoZWNob19hcmVhX2J1ZmZlclsw
XSkpCmRpZmYgLS1naXQgYS9zcmMvd2luZG93LmggYi9zcmMvd2luZG93LmgKaW5kZXggYzI5MjA3
ZC4uMzE1NjkyNyAxMDA2NDQKLS0tIGEvc3JjL3dpbmRvdy5oCisrKyBiL3NyYy93aW5kb3cuaApA
QCAtMzQ4LDYgKzM0OCwxMiBAQCBzdHJ1Y3Qgd2luZG93CiAgICAgICAgVndpbmRvd19zY3JvbGxf
ZnVuY3Rpb25zOyBhbHNvIGJ5IEZyZWNlbnRlciB3aXRoIGFyZ3VtZW50LiAgKi8KICAgICBib29s
X2JmIG9wdGlvbmFsX25ld19zdGFydCA6IDE7CiAKKyAgICAvKiBUcnVlIG1lYW5zIGZvcmNlIGEg
Y2FsbCB0byBWd2luZG93X3N0YXJ0X2VuZF9ob29rLiAgKi8KKyAgICBib29sX2JmIHdpbmRvd19z
dGFydF9lbmRfaG9va19mb3JjZSA6IDE7CisKKyAgICAvKiBUcnVlIG1lYW5zIHRoZSBob29rIGhh
cyBub3QgeWV0IHJ1biB3aXRoIHBvaW50IGZ1bGx5IHZpc2libGUuICAqLworICAgIGJvb2xfYmYg
d2luZG93X3N0YXJ0X2VuZF9ob29rX3BlbmRpbmcgOiAxOworCiAgICAgLyogVHJ1ZSBtZWFucyB0
aGUgY3Vyc29yIGlzIGN1cnJlbnRseSBkaXNwbGF5ZWQuICBUaGlzIGNhbiBiZQogICAgICAgIHNl
dCB0byB6ZXJvIGJ5IGZ1bmN0aW9ucyBvdmVycGFpbnRpbmcgdGhlIGN1cnNvciBpbWFnZS4gICov
CiAgICAgYm9vbF9iZiBwaHlzX2N1cnNvcl9vbl9wIDogMTsKZGlmZiAtLWdpdCBhL3NyYy94ZGlz
cC5jIGIvc3JjL3hkaXNwLmMKaW5kZXggOGYxZTk4ZC4uMDk3OTA1MCAxMDA2NDQKLS0tIGEvc3Jj
L3hkaXNwLmMKKysrIGIvc3JjL3hkaXNwLmMKQEAgLTEzNDE2LDYgKzEzNDE2LDY4IEBAIGRvIHsg
aWYgKCEgcG9sbGluZ19zdG9wcGVkX2hlcmUpIHN0b3BfcG9sbGluZyAoKTsJXAogZG8geyBpZiAo
cG9sbGluZ19zdG9wcGVkX2hlcmUpIHN0YXJ0X3BvbGxpbmcgKCk7CVwKICAgICAgICBwb2xsaW5n
X3N0b3BwZWRfaGVyZSA9IGZhbHNlOyB9IHdoaWxlIChmYWxzZSkKIAorc3RhdGljIHZvaWQKK3J1
bl93aW5kb3dfc3RhcnRfZW5kX2hvb2sgKHN0cnVjdCB0ZXh0X3BvcyBzdGFydHAsIHN0cnVjdCB3
aW5kb3cgKncsIExpc3BfT2JqZWN0IHdpbmRvdywgc3RydWN0IGl0IGl0LCBjaGFyICpzdHJpbmcp
Cit7CisgIHZvaWQgKml0ZGF0YSA9IE5VTEw7CisgIGJvb2wgaW5fd2luZG93ID0gZmFsc2U7Cisg
IGJvb2wgZnVsbHlfcCA9IHRydWU7CisgIGJvb2wgcGFydGlhbGx5ID0gdHJ1ZTsKKyAgRU1BQ1Nf
SU5UIHBvc2ludCA9IFBUOworICBpbnQgeCwgeSwgcnRvcCwgcmJvdCwgcm93aCwgdnBvcywgc3Rh
cnRwX2ludGVnZXIsIGVuZHAsIHBib2xfc3RhcnRwLCBwZW9sX2VuZHA7CisgIHN0YXJ0cF9pbnRl
Z2VyID0gQ0hBUlBPUyAoc3RhcnRwKTsKKyAgc3RydWN0IGJ1ZmZlciAqYnVmOworICBidWYgPSBY
QlVGRkVSICh3LT5jb250ZW50cyk7CisgIGlmICghTklMUCAoVndpbmRvd19zdGFydF9lbmRfaG9v
aykKKyAgICAgICYmIChGbG9jYWxfdmFyaWFibGVfcCAoUXdpbmRvd19zdGFydF9lbmRfaG9va192
YXIsIEZ3aW5kb3dfYnVmZmVyICh3aW5kb3cpKSkKKyAgICAgICYmIHctPndpbmRvd19zdGFydF9l
bmRfaG9va19wZW5kaW5nKQorICAgIHsKKyAgICBpZiAoKHBvc2ludCA+PSBDSEFSUE9TIChzdGFy
dHApICYmIHBvc2ludCA8PSBCVUZfWlYgKGJ1ZikpCisgICAgICAgICYmIENIQVJQT1MgKHN0YXJ0
cCkgPj0gQlVGX0JFR1YgKGJ1ZikKKyAgICAgICAgJiYgQ0hBUlBPUyAoc3RhcnRwKSA8PSBCVUZf
WlYgKGJ1ZikKKyAgICAgICAgJiYgcG9zX3Zpc2libGVfcCAodywgcG9zaW50LCAmeCwgJnksICZy
dG9wLCAmcmJvdCwgJnJvd2gsICZ2cG9zKSkKKyAgICAgIHsKKyAgICAgIGZ1bGx5X3AgPSAhcnRv
cCAmJiAhcmJvdDsKKyAgICAgIGlmICghTklMUCAocGFydGlhbGx5KSB8fCBmdWxseV9wKQorICAg
ICAgICBpbl93aW5kb3cgPSB0cnVlOworICAgICAgfQorICAgIGlmICghTklMUCAoaW5fd2luZG93
KSAmJiAhTklMUCAocGFydGlhbGx5KSkKKyAgICAgIHsKKyNpZmRlZiBHTFlQSF9ERUJVRworICAg
ICAgLyogU2VlIHRoZSBkb2Mtc3RyaW5nIGZvciBgcG9zLXZpc2libGUtaW4td2luZG93LXAnLiAg
Ki8KKyAgICAgIGlmICghZnVsbHlfcCkKKyAgICAgICAgZGVidWdfbWV0aG9kX2FkZCAodywgIiVz
IC0tIHg6ICVkIHwgeTogJWQgfCBydG9wOiAlZCB8IHJib3QgJWQgfCByb3doOiAlZCB8IHZwb3M6
ICVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZywgeCwgeSwgcnRvcCwg
cmJvdCwgcm93aCwgdnBvcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgZGVidWdfbWV0aG9kX2Fk
ZCAodywgIiVzIC0tIHg6ICVkIHwgeTogJWQgfCBzdGFydHA6ICVkIHwgZW5kcDogJWQgfCBwYm9s
X3N0YXJ0cDogJWQgfCBwZW9sX2VuZHA6ICVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cmluZywgeCwgeSwgc3RhcnRwX2ludGVnZXIsIGVuZHAsIHBib2xfc3RhcnRwLCBwZW9s
X2VuZHApOworI2VuZGlmCisgICAgICBpZiAoZnVsbHlfcCkKKyAgICAgICAgeworICAgICAgICBD
TElQX1RFWFRfUE9TX0ZST01fTUFSS0VSIChzdGFydHAsIHctPnN0YXJ0KTsKKyAgICAgICAgaXRk
YXRhID0gYmlkaV9zaGVsdmVfY2FjaGUgKCk7CisgICAgICAgIHN0YXJ0X2Rpc3BsYXkgKCZpdCwg
dywgc3RhcnRwKTsKKyAgICAgICAgbW92ZV9pdF92ZXJ0aWNhbGx5ICgmaXQsIHdpbmRvd19ib3hf
aGVpZ2h0ICh3KSk7CisgICAgICAgIGlmIChpdC5jdXJyZW50X3kgPCBpdC5sYXN0X3Zpc2libGVf
eSkKKyAgICAgICAgICBtb3ZlX2l0X3Bhc3RfZW9sICgmaXQpOworICAgICAgICBlbmRwID0gKElU
X0NIQVJQT1MgKGl0KSk7CisgICAgICAgIGJpZGlfdW5zaGVsdmVfY2FjaGUgKGl0ZGF0YSwgZmFs
c2UpOworICAgICAgICBTRVRfUFQgKHN0YXJ0cF9pbnRlZ2VyKTsKKyAgICAgICAgcGJvbF9zdGFy
dHAgPSBYSU5UIChGbGluZV9iZWdpbm5pbmdfcG9zaXRpb24gKFFuaWwpKTsKKyAgICAgICAgU0VU
X1BUIChlbmRwKTsKKyAgICAgICAgcGVvbF9lbmRwID0gWElOVCAoRmxpbmVfZW5kX3Bvc2l0aW9u
IChRbmlsKSk7CisgICAgICAgIFNFVF9QVCAocG9zaW50KTsKKyAgICAgICAgQ0FMTE4gKEZydW5f
aG9va193aXRoX2FyZ3MsIFF3aW5kb3dfc3RhcnRfZW5kX2hvb2ssIHdpbmRvdywKKyAgICAgICAg
ICAgIG1ha2VfbnVtYmVyIChzdGFydHBfaW50ZWdlciksCisgICAgICAgICAgICBtYWtlX251bWJl
ciAoZW5kcCksCisgICAgICAgICAgICBtYWtlX251bWJlciAocGJvbF9zdGFydHApLAorICAgICAg
ICAgICAgbWFrZV9udW1iZXIgKHBlb2xfZW5kcCksCisgICAgICAgICAgICBmdWxseV9wID8gUXQg
OiBRbmlsKTsKKyAgICAgICAgdy0+d2luZG93X3N0YXJ0X2VuZF9ob29rX3BlbmRpbmcgPSBmYWxz
ZTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KK30KIAogLyogUGVyaGFwcyBpbiB0aGUgZnV0
dXJlIGF2b2lkIHJlY2VudGVyaW5nIHdpbmRvd3MgaWYgaXQKICAgIGlzIG5vdCBuZWNlc3Nhcnk7
IGN1cnJlbnRseSB0aGF0IGNhdXNlcyBzb21lIHByb2JsZW1zLiAgKi8KQEAgLTEzNzEzLDYgKzEz
Nzc1LDcgQEAgcmVkaXNwbGF5X2ludGVybmFsICh2b2lkKQogICAgICAgJiYgbWF0Y2hfcAogICAg
ICAgJiYgIXctPmZvcmNlX3N0YXJ0CiAgICAgICAmJiAhdy0+b3B0aW9uYWxfbmV3X3N0YXJ0Cisg
ICAgICAmJiAhdy0+d2luZG93X3N0YXJ0X2VuZF9ob29rX2ZvcmNlCiAgICAgICAvKiBQb2ludCBt
dXN0IGJlIG9uIHRoZSBsaW5lIHRoYXQgd2UgaGF2ZSBpbmZvIHJlY29yZGVkIGFib3V0LiAgKi8K
ICAgICAgICYmIFBUID49IENIQVJQT1MgKHRsYnVmcG9zKQogICAgICAgJiYgUFQgPD0gWiAtIENI
QVJQT1MgKHRsZW5kcG9zKQpAQCAtMTU0MTIsNiArMTU0NzUsOCBAQCB0cnlfc2Nyb2xsaW5nIChM
aXNwX09iamVjdCB3aW5kb3csIGJvb2wganVzdF90aGlzX29uZV9wLAogICAvKiBSdW4gd2luZG93
IHNjcm9sbCBmdW5jdGlvbnMuICAqLwogICBzdGFydHAgPSBydW5fd2luZG93X3Njcm9sbF9mdW5j
dGlvbnMgKHdpbmRvdywgc3RhcnRwKTsKIAorICBydW5fd2luZG93X3N0YXJ0X2VuZF9ob29rIChz
dGFydHAsIHcsIHdpbmRvdywgaXQsICJ0cnlfc2Nyb2xsaW5nIik7CisKICAgLyogRGlzcGxheSB0
aGUgd2luZG93LiAgR2l2ZSB1cCBpZiBuZXcgZm9udHMgYXJlIGxvYWRlZCwgb3IgaWYgcG9pbnQK
ICAgICAgZG9lc24ndCBhcHBlYXIuICAqLwogICBpZiAoIXRyeV93aW5kb3cgKHdpbmRvdywgc3Rh
cnRwLCAwKSkKQEAgLTE2MjY2LDEzICsxNjMzMSwxMiBAQCByZWRpc3BsYXlfd2luZG93IChMaXNw
X09iamVjdCB3aW5kb3csIGJvb2wganVzdF90aGlzX29uZV9wKQogCiAgIC8qIElmIHNvbWVvbmUg
c3BlY2lmaWVkIGEgbmV3IHN0YXJ0aW5nIHBvaW50IGJ1dCBkaWQgbm90IGluc2lzdCwKICAgICAg
Y2hlY2sgd2hldGhlciBpdCBjYW4gYmUgdXNlZC4gICovCi0gIGlmICgody0+b3B0aW9uYWxfbmV3
X3N0YXJ0IHx8IHdpbmRvd19mcm96ZW5fcCAodykpCisgIGlmICgody0+b3B0aW9uYWxfbmV3X3N0
YXJ0IHx8IHctPndpbmRvd19zdGFydF9lbmRfaG9va19mb3JjZSB8fCB3aW5kb3dfZnJvemVuX3Ag
KHcpKQogICAgICAgJiYgQ0hBUlBPUyAoc3RhcnRwKSA+PSBCRUdWCiAgICAgICAmJiBDSEFSUE9T
IChzdGFydHApIDw9IFpWKQogICAgIHsKICAgICAgIHB0cmRpZmZfdCBpdF9jaGFycG9zOwogCi0g
ICAgICB3LT5vcHRpb25hbF9uZXdfc3RhcnQgPSBmYWxzZTsKICAgICAgIHN0YXJ0X2Rpc3BsYXkg
KCZpdCwgdywgc3RhcnRwKTsKICAgICAgIG1vdmVfaXRfdG8gKCZpdCwgUFQsIDAsIGl0Lmxhc3Rf
dmlzaWJsZV95LCAtMSwKIAkJICBNT1ZFX1RPX1BPUyB8IE1PVkVfVE9fWCB8IE1PVkVfVE9fWSk7
CkBAIC0xNjI5MywxNCArMTYzNTcsMjggQEAgcmVkaXNwbGF5X3dpbmRvdyAoTGlzcF9PYmplY3Qg
d2luZG93LCBib29sIGp1c3RfdGhpc19vbmVfcCkKIAkgICAgdy0+Zm9yY2Vfc3RhcnQgPSB0cnVl
OwogI2lmZGVmIEdMWVBIX0RFQlVHCiAJICBpZiAody0+Zm9yY2Vfc3RhcnQpCi0JICAgIHsKLQkg
ICAgICBpZiAod2luZG93X2Zyb3plbl9wICh3KSkKLQkJZGVidWdfbWV0aG9kX2FkZCAodywgInNl
dCBmb3JjZV9zdGFydCBmcm9tIGZyb3plbiB3aW5kb3cgc3RhcnQiKTsKLQkgICAgICBlbHNlCi0J
CWRlYnVnX21ldGhvZF9hZGQgKHcsICJzZXQgZm9yY2Vfc3RhcnQgZnJvbSBvcHRpb25hbF9uZXdf
c3RhcnQiKTsKLQkgICAgfQorICAgIHsKKyAgICAgIGlmICh3aW5kb3dfZnJvemVuX3AgKHcpKQor
ICAgICAgICB7CisgICAgICAgIGRlYnVnX21ldGhvZF9hZGQgKHcsICJzZXQgZm9yY2Vfc3RhcnQg
ZnJvbSBmcm96ZW4gd2luZG93IHN0YXJ0Iik7CisgICAgICB9CisgICAgICBlbHNlIGlmICh3LT5v
cHRpb25hbF9uZXdfc3RhcnQpCisgICAgICAgIHsKKyAgICAgICAgZGVidWdfbWV0aG9kX2FkZCAo
dywgInNldCBmb3JjZV9zdGFydCBmcm9tIG9wdGlvbmFsX25ld19zdGFydCIpOworICAgICAgfQor
ICAgICAgZWxzZSBpZiAody0+d2luZG93X3N0YXJ0X2VuZF9ob29rX2ZvcmNlKQorICAgICAgICB7
CisgICAgICAgIGRlYnVnX21ldGhvZF9hZGQgKHcsICJzZXQgZm9yY2Vfc3RhcnQgZnJvbSB3aW5k
b3dfc3RhcnRfZW5kX2hvb2tfZm9yY2UiKTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAg
eworICAgICAgICBkZWJ1Z19tZXRob2RfYWRkICh3LCAiVGhpcyBzaXR1YXRpb24gaXMgbm90IHll
dCBjb250ZW1wbGF0ZWQuIik7CisgICAgICB9CisgICAgfQogI2VuZGlmCiAJfQorICAgICAgdy0+
b3B0aW9uYWxfbmV3X3N0YXJ0ID0gZmFsc2U7CisgICAgICB3LT53aW5kb3dfc3RhcnRfZW5kX2hv
b2tfZm9yY2UgPSBmYWxzZTsKICAgICB9CiAKICBmb3JjZV9zdGFydDoKQEAgLTE2MzI4LDExICsx
NjQwNiwxOSBAQCByZWRpc3BsYXlfd2luZG93IChMaXNwX09iamVjdCB3aW5kb3csIGJvb2wganVz
dF90aGlzX29uZV9wKQogCSB0aGFuIHRvIGdldCBpbnRvIGFuIGluZmluaXRlIGxvb3AgY2FsbGlu
ZyB0aGUgaG9vayBmdW5jdGlvbnMKIAkgYW5kIGhhdmluZyB0aGVtIGdldCBtb3JlIGVycm9ycy4g
ICovCiAgICAgICBpZiAoIXVwZGF0ZV9tb2RlX2xpbmUKLQkgIHx8ICEgTklMUCAoVndpbmRvd19z
Y3JvbGxfZnVuY3Rpb25zKSkKKwkgIHx8ICEgTklMUCAoVndpbmRvd19zY3JvbGxfZnVuY3Rpb25z
KQorCSAgfHwgISBOSUxQIChWd2luZG93X3N0YXJ0X2VuZF9ob29rKSkKIAl7CiAJICB1cGRhdGVf
bW9kZV9saW5lID0gdHJ1ZTsKIAkgIHctPnVwZGF0ZV9tb2RlX2xpbmUgPSB0cnVlOworCisgIC8q
IFJ1biB3aW5kb3cgc2Nyb2xsIGZ1bmN0aW9ucy4gIEZJWE1FOiAgc2V0IHVwIGNvbmRpdGlvbnMg
c28gdGhhdAorYHJ1bl93aW5kb3dfc2Nyb2xsX2Z1bmN0aW9uc2AgZG9lcyBub3QgYWx3YXlzIHJ1
biB3aGVuZXZlcgorYHctPndpbmRvd19zdGFydF9lbmRfaG9va19mb3JjZWAgaXMgYHRydWVgLiAg
Ki8KIAkgIHN0YXJ0cCA9IHJ1bl93aW5kb3dfc2Nyb2xsX2Z1bmN0aW9ucyAod2luZG93LCBzdGFy
dHApOworCisgIHJ1bl93aW5kb3dfc3RhcnRfZW5kX2hvb2sgKHN0YXJ0cCwgdywgd2luZG93LCBp
dCwgInJlZGlzcGxheV93aW5kb3cgKGZvcmNlX3N0YXJ0KSIpOworCiAJfQogCiAgICAgICBpZiAo
Q0hBUlBPUyAoc3RhcnRwKSA8IEJFR1YpCkBAIC0xNjYwMCw2ICsxNjY4Niw3IEBAIHJlZGlzcGxh
eV93aW5kb3cgKExpc3BfT2JqZWN0IHdpbmRvdywgYm9vbCBqdXN0X3RoaXNfb25lX3ApCiAJICAg
ICBiZWNhdXNlIGEgd2luZG93IHNjcm9sbCBmdW5jdGlvbiBjYW4gaGF2ZSBjaGFuZ2VkIHRoZQog
CSAgICAgYnVmZmVyLiAgKi8KIAkgIHx8ICFOSUxQIChWd2luZG93X3Njcm9sbF9mdW5jdGlvbnMp
CisJICB8fCAhTklMUCAoVndpbmRvd19zdGFydF9lbmRfaG9vaykKIAkgIHx8IE1JTklfV0lORE9X
X1AgKHcpCiAJICB8fCAhKHVzZWRfY3VycmVudF9tYXRyaXhfcAogCSAgICAgICA9IHRyeV93aW5k
b3dfcmV1c2luZ19jdXJyZW50X21hdHJpeCAodykpKQpAQCAtMTY3OTcsNiArMTY4ODQsOCBAQCBy
ZWRpc3BsYXlfd2luZG93IChMaXNwX09iamVjdCB3aW5kb3csIGJvb2wganVzdF90aGlzX29uZV9w
KQogICAvKiBSdW4gc2Nyb2xsIGhvb2tzLiAgKi8KICAgc3RhcnRwID0gcnVuX3dpbmRvd19zY3Jv
bGxfZnVuY3Rpb25zICh3aW5kb3csIGl0LmN1cnJlbnQucG9zKTsKIAorICBydW5fd2luZG93X3N0
YXJ0X2VuZF9ob29rIChzdGFydHAsIHcsIHdpbmRvdywgaXQsICJyZWRpc3BsYXlfd2luZG93IChy
ZWNlbnRlcikiKTsKKwogICAvKiBSZWRpc3BsYXkgdGhlIHdpbmRvdy4gICovCiAgIGJvb2wgdXNl
X2Rlc2lyZWRfbWF0cml4ID0gZmFsc2U7CiAgIGlmICghY3VycmVudF9tYXRyaXhfdXBfdG9fZGF0
ZV9wCkBAIC0xNjgwNSw2ICsxNjg5NCw3IEBAIHJlZGlzcGxheV93aW5kb3cgKExpc3BfT2JqZWN0
IHdpbmRvdywgYm9vbCBqdXN0X3RoaXNfb25lX3ApCiAgICAgICAvKiBEb24ndCB1c2UgdHJ5X3dp
bmRvd19yZXVzaW5nX2N1cnJlbnRfbWF0cml4IGluIHRoaXMgY2FzZQogCSBiZWNhdXNlIGl0IGNh
biBoYXZlIGNoYW5nZWQgdGhlIGJ1ZmZlci4gICovCiAgICAgICB8fCAhTklMUCAoVndpbmRvd19z
Y3JvbGxfZnVuY3Rpb25zKQorICAgICAgfHwgIU5JTFAgKFZ3aW5kb3dfc3RhcnRfZW5kX2hvb2sp
CiAgICAgICB8fCAhanVzdF90aGlzX29uZV9wCiAgICAgICB8fCBNSU5JX1dJTkRPV19QICh3KQog
ICAgICAgfHwgISh1c2VkX2N1cnJlbnRfbWF0cml4X3AKQEAgLTIzNjgwLDYgKzIzNzcwLDIwIEBA
IGRlY29kZV9tb2RlX3NwZWMgKHN0cnVjdCB3aW5kb3cgKncsIHJlZ2lzdGVyIGludCBjLCBpbnQg
ZmllbGRfd2lkdGgsCiAJICByZXR1cm4gIkAiOwogICAgICAgfQogCisgICAgY2FzZSAndyc6Cisg
ICAgICB7CisgIHB0cmRpZmZfdCB3aW5kb3dfc3RhcnQgPSBtYXJrZXJfcG9zaXRpb24gKHctPnN0
YXJ0KTsKKyAgcGludDJzdHIgKGRlY29kZV9tb2RlX3NwZWNfYnVmLCB3aWR0aCwgd2luZG93X3N0
YXJ0KTsKKyAgcmV0dXJuIGRlY29kZV9tb2RlX3NwZWNfYnVmOworICAgICAgfQorCisgICAgY2Fz
ZSAnVyc6CisgICAgICB7CisgIHB0cmRpZmZfdCB3aW5kb3dfZW5kID0gQlVGX1ogKGIpIC0gdy0+
d2luZG93X2VuZF9wb3M7CisgIHBpbnQyc3RyIChkZWNvZGVfbW9kZV9zcGVjX2J1Ziwgd2lkdGgs
IHdpbmRvd19lbmQpOworICByZXR1cm4gZGVjb2RlX21vZGVfc3BlY19idWY7CisgICAgICB9CisK
ICAgICBjYXNlICd6JzoKICAgICAgIC8qIGNvZGluZy1zeXN0ZW0gKG5vdCBpbmNsdWRpbmcgZW5k
LW9mLWxpbmUgZm9ybWF0KSAqLwogICAgIGNhc2UgJ1onOgpAQCAtMzExNDUsNiArMzEyNDksOCBA
QCBUaGV5IGFyZSBzdGlsbCBsb2dnZWQgdG8gdGhlICpNZXNzYWdlcyogYnVmZmVyLiAgKi8pOwog
ICBERUZTWU0gKFFvdmVycmlkaW5nX3Rlcm1pbmFsX2xvY2FsX21hcCwgIm92ZXJyaWRpbmctdGVy
bWluYWwtbG9jYWwtbWFwIik7CiAgIERFRlNZTSAoUW92ZXJyaWRpbmdfbG9jYWxfbWFwLCAib3Zl
cnJpZGluZy1sb2NhbC1tYXAiKTsKICAgREVGU1lNIChRd2luZG93X3Njcm9sbF9mdW5jdGlvbnMs
ICJ3aW5kb3ctc2Nyb2xsLWZ1bmN0aW9ucyIpOworICBERUZTWU0gKFF3aW5kb3dfc3RhcnRfZW5k
X2hvb2ssICJ3aW5kb3ctc3RhcnQtZW5kLWhvb2siKTsKKyAgREVGU1lNIChRd2luZG93X3N0YXJ0
X2VuZF9ob29rX3ZhciwgIndpbmRvdy1zdGFydC1lbmQtaG9vay12YXIiKTsKICAgREVGU1lNIChR
d2luZG93X3RleHRfY2hhbmdlX2Z1bmN0aW9ucywgIndpbmRvdy10ZXh0LWNoYW5nZS1mdW5jdGlv
bnMiKTsKICAgREVGU1lNIChRcmVkaXNwbGF5X2VuZF90cmlnZ2VyX2Z1bmN0aW9ucywgInJlZGlz
cGxheS1lbmQtdHJpZ2dlci1mdW5jdGlvbnMiKTsKICAgREVGU1lNIChRaW5oaWJpdF9wb2ludF9t
b3Rpb25faG9va3MsICJpbmhpYml0LXBvaW50LW1vdGlvbi1ob29rcyIpOwpAQCAtMzE0NjYsNiAr
MzE1NzIsMTUgQEAgaXMgc2Nyb2xsZWQuICBJdCBpcyBub3QgZGVzaWduZWQgZm9yIHRoYXQsIGFu
ZCBzdWNoIHVzZSBwcm9iYWJseSB3b24ndAogd29yay4gICovKTsKICAgVndpbmRvd19zY3JvbGxf
ZnVuY3Rpb25zID0gUW5pbDsKIAorICBERUZWQVJfTElTUCAoIndpbmRvdy1zdGFydC1lbmQtaG9v
ayIsIFZ3aW5kb3dfc3RhcnRfZW5kX2hvb2ssCisgICAgZG9jOiAvKiBVc2VkIHRvIG9idGFpbiB0
aGUgbmV3IGB3aW5kb3ctc3RhcnQnIGR1cmluZyByZWRpc3BsYXkuICAqLyk7CisgIFZ3aW5kb3df
c3RhcnRfZW5kX2hvb2sgPSBRbmlsOworCisgIERFRlZBUl9MSVNQICgid2luZG93LXN0YXJ0LWVu
ZC1ob29rLXZhciIsIFZ3aW5kb3dfc3RhcnRfZW5kX2hvb2tfdmFyLAorICAgIGRvYzogLyogYHdp
bmRvdy1zdGFydC1lbmQtaG9va2AgY2hlY2tzIHRvIHNlZSBpZiBgd2luZG93LXN0YXJ0LWVuZC1o
b29rLXZhcmAgaXMgc2V0IGxvY2FsbHkuICAqLyk7CisgIFZ3aW5kb3dfc3RhcnRfZW5kX2hvb2tf
dmFyID0gUW5pbDsKKyAgRm1ha2VfdmFyaWFibGVfYnVmZmVyX2xvY2FsIChRd2luZG93X3N0YXJ0
X2VuZF9ob29rX3Zhcik7CisKICAgREVGVkFSX0xJU1AgKCJ3aW5kb3ctdGV4dC1jaGFuZ2UtZnVu
Y3Rpb25zIiwKIAkgICAgICAgVndpbmRvd190ZXh0X2NoYW5nZV9mdW5jdGlvbnMsCiAgICAgZG9j
OiAvKiBGdW5jdGlvbnMgdG8gY2FsbCBpbiByZWRpc3BsYXkgd2hlbiB0ZXh0IGluIHRoZSB3aW5k
b3cgbWlnaHQgY2hhbmdlLiAgKi8pOwo=

--Multipart_Mon_Feb__8_00:51:43_2016-1--




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

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


Received: (at 22404) by debbugs.gnu.org; 2 Feb 2016 21:05:21 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Feb 02 16:05:21 2016
Received: from localhost ([127.0.0.1]:57159 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aQi8X-0004sz-2h
	for submit <at> debbugs.gnu.org; Tue, 02 Feb 2016 16:05:21 -0500
Received: from cobb.liquidweb.com ([50.28.13.150]:56250)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <esq@HIDDEN>) id 1aQi8U-0004sm-TG
 for 22404 <at> debbugs.gnu.org; Tue, 02 Feb 2016 16:05:19 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lawlist.com;
 s=default; 
 h=Content-Type:MIME-Version:Subject:Cc:To:From:Message-ID:Date;
 bh=toCw6dUptmgHwqxA5d/t45IU5kTqM75Ybukr2Epo3AA=; 
 b=lfrEUwG0T4eIJf3PU5qHEmhFM0s7qkZSNAkBhCg/ZlfVmYDx+LcFEZ+mET5s6rO9ntqmNMuAwzKApgVdSNlFpMw9E0uNjJ8LD0TImQBXvHglqHQfUtJy3AjBSfzahQdz;
Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:50899
 helo=server.private.localhost)
 by cobb.liquidweb.com with esmtp (Exim 4.82)
 (envelope-from <esq@HIDDEN>)
 id 1aQi8K-0002Yr-Au; Tue, 02 Feb 2016 16:05:08 -0500
Date: Tue, 02 Feb 2016 13:05:10 -0800
Message-ID: <m2egcusu0p.wl%esq@HIDDEN>
From: Keith David Bershatsky <esq@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
MIME-Version: 1.0 (generated by   - "")
Content-Type: text/plain; charset=US-ASCII
X-AntiAbuse: This header was added to track abuse,
 please include it with any abuse report
X-AntiAbuse: Primary Hostname - cobb.liquidweb.com
X-AntiAbuse: Original Domain - debbugs.gnu.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - lawlist.com
X-Get-Message-Sender-Via: cobb.liquidweb.com: acl_c_relayhosts_text_entry:
 lawlist|lawlist.com
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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: -0.7 (/)

Thank you, Eli, for the detailed explanation in your most recent e-mail -- greatly appreciated.

Assuming the correct values are available through Lisp when using the `post-redisplay-hook` and assuming that there is no buffer modification (attached to that new hook) that moves point or changes font sizes, I am unaware of any other prospective problem areas.  The minor-mode in my previous e-mail should be sufficient for us to visually see how it works with some basic things like scroll-up/down, beginning/end-of-buffer, next/previous-line when at the window edges.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

At Tue, 02 Feb 2016 20:43:13 +0200,
Eli Zaretskii wrote:
> 
> 
> I don't understand the "maybe" part.  We are talking about values that
> are easily obtained from any Lisp program, so what are the problems
> you envision?




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

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


Received: (at 22404) by debbugs.gnu.org; 2 Feb 2016 20:00:35 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Feb 02 15:00:35 2016
Received: from localhost ([127.0.0.1]:57107 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aQh7r-0001kN-Hr
	for submit <at> debbugs.gnu.org; Tue, 02 Feb 2016 15:00:35 -0500
Received: from cobb.liquidweb.com ([50.28.13.150]:54790)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <esq@HIDDEN>) id 1aQh7o-0001k9-UE
 for 22404 <at> debbugs.gnu.org; Tue, 02 Feb 2016 15:00:33 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lawlist.com;
 s=default; 
 h=Content-Type:MIME-Version:Subject:Cc:To:From:Message-ID:Date;
 bh=v57p0IxMEzrs74tuaIovEq7xv688NfBgFHOejgmWr/M=; 
 b=p3TuwkFuadEWDP6F9TcCQ1kkdZHDcat7aftYr6NU5W59YkdANcpnrtfIeVLn4AHWpRCDmlsqwKdun8vE3sgOWtEOmtxIH1ME9e1FVUKv/fJSZpgcS3d1c2/enlV1tApD;
Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:50369
 helo=server.private.localhost)
 by cobb.liquidweb.com with esmtp (Exim 4.82)
 (envelope-from <esq@HIDDEN>)
 id 1aQh7e-00063x-AK; Tue, 02 Feb 2016 15:00:22 -0500
Date: Tue, 02 Feb 2016 12:00:23 -0800
Message-ID: <m2egcurig8.wl%esq@HIDDEN>
From: Keith David Bershatsky <esq@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
MIME-Version: 1.0 (generated by   - "")
Content-Type: text/plain; charset=US-ASCII
X-AntiAbuse: This header was added to track abuse,
 please include it with any abuse report
X-AntiAbuse: Primary Hostname - cobb.liquidweb.com
X-AntiAbuse: Original Domain - debbugs.gnu.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - lawlist.com
X-Get-Message-Sender-Via: cobb.liquidweb.com: acl_c_relayhosts_text_entry:
 lawlist|lawlist.com
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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: -0.7 (/)

I will go through your most recent e-mail in a little while, but I wanted to get this test minor-mode over to you so that you can visually see exactly what I see when performing these tests.  It is a scaled-down example of my current usage -- this example just draws line numbers in the left margin of the visible window and uses `forward-line` instead of `vertical-motion`.  This minor-mode will work with your new `post-redisplay-hook` and it also works with the latest example `window_start_end.diff` that I e-mailed last night.  I have included an exception for `mhweel-scroll` so that we can use the mouse wheel to scroll up/down to see how the overlays have been placed.  If we use a large buffer for testing and go to `beginning-of-buffer` or `end-of-buffer` or scroll-up or scroll-down, the line numbers should be drawn by the time that redisplay finishes.  I have already taken the liberty of adding `ln-draw-numbers` to the `post-redisplay-hook` in anticipation of its future creation.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defvar ln-before-string-list nil
"Doc-string -- `ln-before-string-list`.")
(make-variable-buffer-local 'ln-before-string-list)

(defvar ln-str-list nil
"Doc-string -- `ln-str-list`.")
(make-variable-buffer-local 'ln-str-list)

(defvar ln-this-command nil
"This local variable is set within the `post-command-hook`; and,
is also used by the `window-start-end-hook` hook.")
(make-variable-buffer-local 'ln-this-command)

(defvar ln-overlays nil "Overlays used in this buffer.")
(defvar ln-available nil "Overlays available for reuse.")
(mapc #'make-variable-buffer-local '(ln-overlays ln-available))

(defgroup ln nil
  "Show line numbers in the left margin."
  :group 'convenience)

(defface ln-active-face
  '((t (:background "black" :foreground "#eab700" :weight normal :italic nil
        :underline nil :box nil :overline nil)))
  "Face for `ln-active-face'."
  :group 'ln)

(defface ln-inactive-face
  '((t (:background "black" :foreground "SteelBlue" :weight normal :italic nil
        :underline nil :box nil :overline nil)))
  "Face for `ln-inactive-face'."
  :group 'ln)

(defvar ln-mode nil)

(defun ln-record-this-command ()
  (setq ln-this-command this-command))

(defun ln-draw-numbers (win &optional start end pbol-start peol-end force)
  "Update line numbers for the portion visible in window WIN."
  (message "win: %s | start: %s | end: %s | pbol-start: %s | peol-end: %s"
    win start end pbol-start peol-end)
  (when
      (and
        ln-mode
        (or ln-this-command force)
        (not (eq ln-this-command 'mwheel-scroll))
        (window-live-p win)
        (not (minibufferp))
        (pos-visible-in-window-p nil nil nil) )
    (setq ln-available ln-overlays)
    (setq ln-overlays nil)
    (setq ln-before-string-list nil)
    (setq ln-str-list nil)
    (let* (
        line
        my-initial-line
        (inhibit-point-motion-hooks t)
        (opoint (point))
        (ln-current-line-number (string-to-number (format-mode-line "%l")))
        (window-start (if start start (window-start win)))
        (window-end (if end end (window-end win t)))
        (max-digits-string (number-to-string (length (progn (goto-char (point-max)) (format-mode-line "%l")))))
        (width 0) )
      (goto-char window-start)
      (setq my-initial-line (string-to-number (format-mode-line "%l")))
      (setq line my-initial-line)
      (catch 'done
        (while t
          (when (= (point) (point-at-bol))
            (let* (
                (str
                  (propertize
                    (format (concat "%" max-digits-string "d") line)
                    'face (if (eq line ln-current-line-number) 'ln-active-face 'ln-inactive-face)))
                (ln-before-string
                  (propertize " " 'display `((margin left-margin) ,str)))
                (visited
                  (catch 'visited
                    (dolist (o (overlays-in (point) (point)))
                      (when (equal-including-properties (overlay-get o 'ln-str) str)
                        (unless (memq o ln-overlays)
                          (push o ln-overlays))
                        (setq ln-available (delq o ln-available))
                        (throw 'visited t))))) )
              (push ln-before-string ln-before-string-list)
              (push str ln-str-list)
              (unless visited
                (let ((ov (if (null ln-available)
                            (make-overlay (point) (point))
                          (move-overlay (pop ln-available) (point) (point)))))
                  (push ov ln-overlays)
                  (overlay-put ov 'before-string ln-before-string)
                  (overlay-put ov 'ln-str str)))
              (setq width (max width (length str)))))
            (if (and (not (eobp)) (< (point) window-end))
                (progn
                  (forward-line)
                  (setq line (1+ line)))
              (throw 'done nil))))
      (set-window-margins win width (cdr (window-margins win)))
      (mapc #'delete-overlay ln-available)
      (setq ln-available nil)
      (setq ln-this-command nil)
      (goto-char opoint))))

(defsubst lawlist-remove-overlays (beg end name val)
"Remove the overlays that are `equal-including-properties`.
Includes a unique situation when an overlay with an `'after-string` property
is at the very end of a narrowed-buffer."
  (let* (
      (point-max (point-max))
      (point-min (point-min))
      (narrowed-p (buffer-narrowed-p))
      (beg (if beg beg point-min))
      (end
        (cond
          ((and
              (not narrowed-p)
              end)
            end)
          ((and
              (not narrowed-p)
              (null end))
            point-max)
          ((and
              narrowed-p
              end
              (< end point-max))
            end)
          ((and
              narrowed-p
              end
              (= end point-max))
            (1+ end))
          ((and
              narrowed-p
              (null end))
            (1+ point-max)) ))
      (overlays
        (progn
          (overlay-recenter end)
          (overlays-in beg end))) )
    (when (and beg end name val)
      (dolist (o overlays)
        (cond
          ((and
                (eq name 'face)
                (eq (overlay-get o name) val))
            (if (< (overlay-start o) beg)
                (if (> (overlay-end o) end)
              (progn
                (move-overlay (copy-overlay o)
                  (overlay-start o) beg)
                (move-overlay o end (overlay-end o)))
                  (move-overlay o (overlay-start o) beg))
              (if (> (overlay-end o) end)
                  (move-overlay o end (overlay-end o))
                (delete-overlay o))))
          ((and
                (not (eq name 'face))
                (equal-including-properties (overlay-get o name) val))
            (delete-overlay o)))))))

(define-minor-mode ln-mode
  "A minor-mode for line-numbers in the left-hand margin."
  :init-value nil
  :lighter " #"
  :keymap nil
  :global nil
  :group 'ln
  (cond
    (ln-mode
      (setq window-start-end-var t)
      (add-hook 'pre-command-hook 'ln-record-this-command nil t)
      (add-hook 'window-start-end-hook 'ln-draw-numbers nil t)
      (add-hook 'post-redisplay-hook 'ln-draw-numbers nil t)
      (ln-draw-numbers (selected-window) nil nil nil nil 'force)
      (when (called-interactively-p 'any)
        (message "Turned ON `ln-mode`.")))
    (t
      (remove-hook 'pre-command-hook 'ln-record-this-command t)
      (remove-hook 'window-start-end-hook 'ln-draw-numbers t)
      (remove-hook 'post-redisplay-hook 'ln-draw-numbers t)
      (kill-local-variable 'ln-overlays)
      (kill-local-variable 'ln-available)
      (dolist (val ln-str-list)
        (lawlist-remove-overlays nil nil 'ln-str val))
      (kill-local-variable 'ln-str-list)
      (dolist (val ln-before-string-list)
        (lawlist-remove-overlays nil nil 'before-string val))
      (kill-local-variable 'ln-before-string-list)
      (kill-local-variable 'window-start-end-var)
      (dolist (w (get-buffer-window-list (current-buffer) nil t))
        (set-window-margins w 0 (cdr (window-margins w))))
      (when (called-interactively-p 'any)
        (message "Turned OFF `ln-mode`.")))))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;




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

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


Received: (at 22404) by debbugs.gnu.org; 2 Feb 2016 18:43:47 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Feb 02 13:43:47 2016
Received: from localhost ([127.0.0.1]:57052 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aQfvW-0008M0-Vo
	for submit <at> debbugs.gnu.org; Tue, 02 Feb 2016 13:43:47 -0500
Received: from eggs.gnu.org ([208.118.235.92]:52546)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <eliz@HIDDEN>) id 1aQfvU-0008Lk-L6
 for 22404 <at> debbugs.gnu.org; Tue, 02 Feb 2016 13:43:45 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <eliz@HIDDEN>) id 1aQfvK-0008Lp-Co
 for 22404 <at> debbugs.gnu.org; Tue, 02 Feb 2016 13:43:39 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=0.4 required=5.0 tests=BAYES_50,RP_MATCHES_RCVD
 autolearn=disabled version=3.3.2
Received: from fencepost.gnu.org ([2001:4830:134:3::e]:57344)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1aQfvK-0008Li-91; Tue, 02 Feb 2016 13:43:34 -0500
Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2281
 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1aQfvJ-0006Sv-IP; Tue, 02 Feb 2016 13:43:34 -0500
Date: Tue, 02 Feb 2016 20:43:13 +0200
Message-Id: <83zivjx8am.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Keith David Bershatsky <esq@HIDDEN>
In-reply-to: <m2twlr9dvs.wl%esq@HIDDEN> (message from Keith David
 Bershatsky on Tue, 02 Feb 2016 10:16:23 -0800)
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
References: <m2twlr9dvs.wl%esq@HIDDEN>
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From: 2001:4830:134:3::e
X-Spam-Score: -5.5 (-----)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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>
Reply-To: Eli Zaretskii <eliz@HIDDEN>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -5.5 (-----)

> Date:  Tue, 02 Feb 2016 10:16:23 -0800
> From:  Keith David Bershatsky <esq@HIDDEN>
> Cc:  22404 <at> debbugs.gnu.org
> 
> A forced redisplay every command loop would pose two (2) major problems as far as I am aware.  The first issue will be that an unfinished display will be visible to the user for a split second before it gets finished with whatever code follows the first visible redisplay

That depends where the hook will be called.  If it is called before
the changed contents is delivered to the glass, you won't see any such
adverse effects, exactly like you don't see them today when
window-scroll-functions are called after a large portion of redisplay
already happened.

> The second issue will be a significant slow-down in performance that will be mostly visible to the user when using rapid-fire keystrokes, or simply moving the cursor with the arrow keys by holding the arrow key in any of the four directions.  A forced redisplay is something that should be used sparingly, but not every command loop.

Emacs display engine is highly optimized: if there's nothing to do
when it is called the second time, it will detect that very quickly
and return without doing anything.  Specifically, if only cursor
motion happened, redisplay is very fast.

And the hook doesn't have to be dumb and call the second redisplay
every time.  It can be smarter, and only do so if it actually made
some changes, like moved an overlay or scrolled the window.  In the
latter case, the comparison with just moving cursor is no longer
valid.

So if such problems do exist, they will need to be reported with
specific use cases, because in general the current code already deals
with this.

> The four (4) values I seek *may* be available via Lisp depending upon where the `post-redisplay-hook` is placed.  I'd be happy to run some tests once you have decided upon a proposed location for the hook.

I don't understand the "maybe" part.  We are talking about values that
are easily obtained from any Lisp program, so what are the problems
you envision?




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

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


Received: (at 22404) by debbugs.gnu.org; 2 Feb 2016 18:16:33 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Feb 02 13:16:33 2016
Received: from localhost ([127.0.0.1]:57024 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aQfVB-0007go-L9
	for submit <at> debbugs.gnu.org; Tue, 02 Feb 2016 13:16:33 -0500
Received: from cobb.liquidweb.com ([50.28.13.150]:52417)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <esq@HIDDEN>) id 1aQfVA-0007gd-RU
 for 22404 <at> debbugs.gnu.org; Tue, 02 Feb 2016 13:16:33 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lawlist.com;
 s=default; 
 h=Content-Type:MIME-Version:Subject:Cc:To:From:Message-ID:Date;
 bh=4DBpUjV5kOylbaYAC2ZbHYZhvSDYIqDBWNeGukkAi7c=; 
 b=Da8xuI0/C1ZsauTAi81JeiMp2uX7S0OFTfc55tDGaL4Vl6dIxhk0Yb4TTCM5W7omJ/jsyHHCBUHEI2LN1Y9aqxVRERuX6l1PigXwO6VNUjdVsewNlxZSbZnFOOTcOAA1;
Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:49623
 helo=server.private.localhost)
 by cobb.liquidweb.com with esmtp (Exim 4.82)
 (envelope-from <esq@HIDDEN>)
 id 1aQfV0-0006d4-L8; Tue, 02 Feb 2016 13:16:22 -0500
Date: Tue, 02 Feb 2016 10:16:23 -0800
Message-ID: <m2twlr9dvs.wl%esq@HIDDEN>
From: Keith David Bershatsky <esq@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
MIME-Version: 1.0 (generated by   - "")
Content-Type: text/plain; charset=US-ASCII
X-AntiAbuse: This header was added to track abuse,
 please include it with any abuse report
X-AntiAbuse: Primary Hostname - cobb.liquidweb.com
X-AntiAbuse: Original Domain - debbugs.gnu.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - lawlist.com
X-Get-Message-Sender-Via: cobb.liquidweb.com: acl_c_relayhosts_text_entry:
 lawlist|lawlist.com
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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: -0.7 (/)

A forced redisplay every command loop would pose two (2) major problems as far as I am aware.  The first issue will be that an unfinished display will be visible to the user for a split second before it gets finished with whatever code follows the first visible redisplay -- this will be especially visible when moving to an entirely different location of the buffer (e.g., full screen up or full screen down).  The second issue will be a significant slow-down in performance that will be mostly visible to the user when using rapid-fire keystrokes, or simply moving the cursor with the arrow keys by holding the arrow key in any of the four directions.  A forced redisplay is something that should be used sparingly, but not every command loop.

The four (4) values I seek *may* be available via Lisp depending upon where the `post-redisplay-hook` is placed.  I'd be happy to run some tests once you have decided upon a proposed location for the hook.

Keith

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

At Tue, 02 Feb 2016 18:34:58 +0200,
Eli Zaretskii wrote:
> 
> > Date:  Mon, 01 Feb 2016 05:18:02 -0800
> > From:  Keith David Bershatsky <esq@HIDDEN>
> > Cc:  22404 <at> debbugs.gnu.org
> > 
> > The four (4) values that I am most interested in are:
> > 
> >   1.  window-start
> > 
> >   2.  window-end
> > 
> >   3.  Point at the beginning of the line containing window-start.
> > 
> >   4.  Point at the end of the line containing window-end.
> 
> These are available from Lisp, so there seems to be no need to pass
> them as arguments to the hook, right?
> 
> > Although my proposed usage of the `post-redisplay-hook` will not be to alter buffer (i.e., I'm just adding overlays), other people who may use this new hook in the future may be modifying the buffer content -- e.g., adding/removing fonts, adding/removing text, moving the cursor, etc.
> 
> If those users need this new hook, they can always invoke redisplay
> explicitly at the end of their code, right?
> 
> > The `window-scroll-functions` hook is strategically placed at three locations of `xdisp.c`, and some of those areas are revisited when things have changed since the first pass -- e.g., continuation line at the beginning of the window, or cursor is partially visible at the bottom of the window.
> 
> But the fact they run in the middle of the redisplay cycle is exactly
> the source of the problems we are trying to solve!
> 
> > If the `post-redisplay-hook` runs too late in time to receive any checks regarding cursor position and so forth, some users may be surprised when their cursor ends up below the visible screen at the conclusion of redisplay -- e.g., because they added text or increased a font size that pushed the cursor further down below.
> 
> Calling redisplay explicitly should resolve all those issues.




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

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


Received: (at 22404) by debbugs.gnu.org; 2 Feb 2016 16:35:30 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Feb 02 11:35:30 2016
Received: from localhost ([127.0.0.1]:57000 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aQdvN-0003kn-Uo
	for submit <at> debbugs.gnu.org; Tue, 02 Feb 2016 11:35:30 -0500
Received: from eggs.gnu.org ([208.118.235.92]:39714)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <eliz@HIDDEN>) id 1aQdvM-0003kY-5P
 for 22404 <at> debbugs.gnu.org; Tue, 02 Feb 2016 11:35:28 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <eliz@HIDDEN>) id 1aQdvC-00020l-Rj
 for 22404 <at> debbugs.gnu.org; Tue, 02 Feb 2016 11:35:22 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=-0.4 required=5.0 tests=BAYES_40,RP_MATCHES_RCVD
 autolearn=disabled version=3.3.2
Received: from fencepost.gnu.org ([2001:4830:134:3::e]:54808)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1aQdvC-00020h-Om; Tue, 02 Feb 2016 11:35:18 -0500
Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2027
 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1aQdvC-0002NR-51; Tue, 02 Feb 2016 11:35:18 -0500
Date: Tue, 02 Feb 2016 18:34:58 +0200
Message-Id: <838u33ysst.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Keith David Bershatsky <esq@HIDDEN>
In-reply-to: <m21t8wsh6d.wl%esq@HIDDEN> (message from Keith David
 Bershatsky on Mon, 01 Feb 2016 05:18:02 -0800)
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
References: <m21t8wsh6d.wl%esq@HIDDEN>
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From: 2001:4830:134:3::e
X-Spam-Score: -5.5 (-----)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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>
Reply-To: Eli Zaretskii <eliz@HIDDEN>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -5.5 (-----)

> Date:  Mon, 01 Feb 2016 05:18:02 -0800
> From:  Keith David Bershatsky <esq@HIDDEN>
> Cc:  22404 <at> debbugs.gnu.org
> 
> The four (4) values that I am most interested in are:
> 
>   1.  window-start
> 
>   2.  window-end
> 
>   3.  Point at the beginning of the line containing window-start.
> 
>   4.  Point at the end of the line containing window-end.

These are available from Lisp, so there seems to be no need to pass
them as arguments to the hook, right?

> Although my proposed usage of the `post-redisplay-hook` will not be to alter buffer (i.e., I'm just adding overlays), other people who may use this new hook in the future may be modifying the buffer content -- e.g., adding/removing fonts, adding/removing text, moving the cursor, etc.

If those users need this new hook, they can always invoke redisplay
explicitly at the end of their code, right?

> The `window-scroll-functions` hook is strategically placed at three locations of `xdisp.c`, and some of those areas are revisited when things have changed since the first pass -- e.g., continuation line at the beginning of the window, or cursor is partially visible at the bottom of the window.

But the fact they run in the middle of the redisplay cycle is exactly
the source of the problems we are trying to solve!

> If the `post-redisplay-hook` runs too late in time to receive any checks regarding cursor position and so forth, some users may be surprised when their cursor ends up below the visible screen at the conclusion of redisplay -- e.g., because they added text or increased a font size that pushed the cursor further down below.

Calling redisplay explicitly should resolve all those issues.




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

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


Received: (at 22404) by debbugs.gnu.org; 2 Feb 2016 05:58:53 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Feb 02 00:58:52 2016
Received: from localhost ([127.0.0.1]:55619 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aQTzI-0007fr-PQ
	for submit <at> debbugs.gnu.org; Tue, 02 Feb 2016 00:58:52 -0500
Received: from cobb.liquidweb.com ([50.28.13.150]:35255)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <esq@HIDDEN>) id 1aQTzH-0007ff-Dq
 for 22404 <at> debbugs.gnu.org; Tue, 02 Feb 2016 00:58:51 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lawlist.com;
 s=default; 
 h=Content-Type:MIME-Version:Subject:Cc:To:From:Message-ID:Date;
 bh=D+MhVwjmX5J5HSuldZ3s4/wUbP4SEtticTTEyhrW75o=; 
 b=243fbAM18zxasCq783nSixg4PF1u5u4vN4RCKVb4pcEhFlUYYAEyjsNEn4fbFNmnCu1C//x39dz/w8HqWqkffQet6wvNWtZJQuiup5zmCLILDcpUGMkEQVvsytntyjwz;
Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:56064
 helo=server.private.localhost)
 by cobb.liquidweb.com with esmtp (Exim 4.82)
 (envelope-from <esq@HIDDEN>)
 id 1aQTz8-0006ae-Dw; Tue, 02 Feb 2016 00:58:42 -0500
Date: Mon, 01 Feb 2016 21:58:43 -0800
Message-ID: <m2powfirfw.wl%esq@HIDDEN>
From: Keith David Bershatsky <esq@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
MIME-Version: 1.0 (generated by   - "")
Content-Type: multipart/mixed; boundary="Multipart_Mon_Feb__1_21:58:42_2016-1"
X-AntiAbuse: This header was added to track abuse,
 please include it with any abuse report
X-AntiAbuse: Primary Hostname - cobb.liquidweb.com
X-AntiAbuse: Original Domain - debbugs.gnu.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - lawlist.com
X-Get-Message-Sender-Via: cobb.liquidweb.com: acl_c_relayhosts_text_entry:
 lawlist|lawlist.com
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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: -0.7 (/)

--Multipart_Mon_Feb__1_21:58:42_2016-1
Content-Type: text/plain; charset=US-ASCII

I completely understand and respect your decision to go in a different direction than my draft implementation of this new feature, but I thought it might be helpful for you to compare my ideas to your own proposed implementation as you go forward.  Because my proposed implementation mirrors the current implementation of the `window-scroll-functions` hook, `xdisp.c` performs all of the necessary checking to see whether the user's function attached to the `window-start-end-hook` changes the buffer in such a way that requires further work on the part of redisplay.  Attached is the revised edition of my new animal, whose proposed buffer-local usage is as follows:

(setq scroll-conservatively 101)

(setq window-start-end-var t)

(defun window-start-end-fn (win start end pbol-start peol-end)
 (message "win: %s | start: %s | end: %s | peol-start: %s | peol-end: %s"
   win start end pbol-start peol-end))

(add-hook 'window-start-end-hook 'window-start-end-fn nil t)



--Multipart_Mon_Feb__1_21:58:42_2016-1
Content-Type: application/diff; type=patch
Content-Disposition: attachment; filename="window_start_end.diff"
Content-Transfer-Encoding: base64

ZGlmZiAtLWdpdCBhL3NyYy9rZXlib2FyZC5jIGIvc3JjL2tleWJvYXJkLmMKaW5kZXggNjRkN2Ix
My4uNGNiZmRjZSAxMDA2NDQKLS0tIGEvc3JjL2tleWJvYXJkLmMKKysrIGIvc3JjL2tleWJvYXJk
LmMKQEAgLTEyMzksNiArMTIzOSw3IEBAIGNvbW1hbmRfbG9vcF8xICh2b2lkKQogICBFTUFDU19J
TlQgcHJldl9tb2RpZmYgPSAwOwogICBzdHJ1Y3QgYnVmZmVyICpwcmV2X2J1ZmZlciA9IE5VTEw7
CiAgIGJvb2wgYWxyZWFkeV9hZGp1c3RlZCA9IDA7CisgIExpc3BfT2JqZWN0IHdpbmRvdzsKIAog
ICBrc2V0X3ByZWZpeF9hcmcgKGN1cnJlbnRfa2JvYXJkLCBRbmlsKTsKICAga3NldF9sYXN0X3By
ZWZpeF9hcmcgKGN1cnJlbnRfa2JvYXJkLCBRbmlsKTsKQEAgLTEyNTgsNiArMTI1OSwxMiBAQCBj
b21tYW5kX2xvb3BfMSAodm9pZCkKICAgICAgIGlmICghTklMUCAoVnBvc3RfY29tbWFuZF9ob29r
KSAmJiAhTklMUCAoVnJ1bl9ob29rcykpCiAJc2FmZV9ydW5faG9va3MgKFFwb3N0X2NvbW1hbmRf
aG9vayk7CiAKKyAgLyogVHJpZ2dlciB0aGUgYHdpbmRvdy1zdGFydC1lbmQtaG9va2AuCisgIFJl
ZGlzcGxheSByZXNldHMgYHctPndpbmRvd19zdGFydF9lbmRfdG9nZ2xlYCB0byBgZmFsc2VgLiAg
Ki8KKyAgd2luZG93ID0gKHNlbGVjdGVkX3dpbmRvdyk7CisgIHJlZ2lzdGVyIHN0cnVjdCB3aW5k
b3cgKncgPSBkZWNvZGVfbGl2ZV93aW5kb3cgKHdpbmRvdyk7CisgIHctPndpbmRvd19zdGFydF9l
bmRfdG9nZ2xlID0gdHJ1ZTsKKwogICAgICAgLyogSWYgZGlzcGxheWluZyBhIG1lc3NhZ2UsIHJl
c2l6ZSB0aGUgZWNobyBhcmVhIHdpbmRvdyB0byBmaXQKIAkgdGhhdCBtZXNzYWdlJ3Mgc2l6ZSBl
eGFjdGx5LiAgKi8KICAgICAgIGlmICghTklMUCAoZWNob19hcmVhX2J1ZmZlclswXSkpCkBAIC0x
NDc0LDYgKzE0ODEsMTIgQEAgY29tbWFuZF9sb29wXzEgKHZvaWQpCiAKICAgICAgIHNhZmVfcnVu
X2hvb2tzIChRcG9zdF9jb21tYW5kX2hvb2spOwogCisgICAgICAvKiBUcmlnZ2VyIHRoZSBgd2lu
ZG93LXN0YXJ0LWVuZC1ob29rYC4KKyAgICAgIFJlZGlzcGxheSByZXNldHMgYHctPndpbmRvd19z
dGFydF9lbmRfdG9nZ2xlYCB0byBgZmFsc2VgLiAgKi8KKyAgICAgIHdpbmRvdyA9IChzZWxlY3Rl
ZF93aW5kb3cpOworICAgICAgcmVnaXN0ZXIgc3RydWN0IHdpbmRvdyAqdyA9IGRlY29kZV9saXZl
X3dpbmRvdyAod2luZG93KTsKKyAgICAgIHctPndpbmRvd19zdGFydF9lbmRfdG9nZ2xlID0gdHJ1
ZTsKKwogICAgICAgLyogSWYgZGlzcGxheWluZyBhIG1lc3NhZ2UsIHJlc2l6ZSB0aGUgZWNobyBh
cmVhIHdpbmRvdyB0byBmaXQKIAkgdGhhdCBtZXNzYWdlJ3Mgc2l6ZSBleGFjdGx5LiAgKi8KICAg
ICAgIGlmICghTklMUCAoZWNob19hcmVhX2J1ZmZlclswXSkpCmRpZmYgLS1naXQgYS9zcmMvd2lu
ZG93LmggYi9zcmMvd2luZG93LmgKaW5kZXggYzI5MjA3ZC4uZGNjMzMzOSAxMDA2NDQKLS0tIGEv
c3JjL3dpbmRvdy5oCisrKyBiL3NyYy93aW5kb3cuaApAQCAtMzQ4LDYgKzM0OCw5IEBAIHN0cnVj
dCB3aW5kb3cKICAgICAgICBWd2luZG93X3Njcm9sbF9mdW5jdGlvbnM7IGFsc28gYnkgRnJlY2Vu
dGVyIHdpdGggYXJndW1lbnQuICAqLwogICAgIGJvb2xfYmYgb3B0aW9uYWxfbmV3X3N0YXJ0IDog
MTsKIAorICAgIC8qIFRydWUgbWVhbnMgZm9yY2UgYSBjYWxsIHRvIFZ3aW5kb3dfc3RhcnRfZW5k
X2hvb2suICAqLworICAgIGJvb2xfYmYgd2luZG93X3N0YXJ0X2VuZF90b2dnbGUgOiAxOworCiAg
ICAgLyogVHJ1ZSBtZWFucyB0aGUgY3Vyc29yIGlzIGN1cnJlbnRseSBkaXNwbGF5ZWQuICBUaGlz
IGNhbiBiZQogICAgICAgIHNldCB0byB6ZXJvIGJ5IGZ1bmN0aW9ucyBvdmVycGFpbnRpbmcgdGhl
IGN1cnNvciBpbWFnZS4gICovCiAgICAgYm9vbF9iZiBwaHlzX2N1cnNvcl9vbl9wIDogMTsKZGlm
ZiAtLWdpdCBhL3NyYy94ZGlzcC5jIGIvc3JjL3hkaXNwLmMKaW5kZXggNzhmZGRkNi4uYjRmYmIz
OCAxMDA2NDQKLS0tIGEvc3JjL3hkaXNwLmMKKysrIGIvc3JjL3hkaXNwLmMKQEAgLTEzNzA0LDYg
KzEzNzA0LDcgQEAgcmVkaXNwbGF5X2ludGVybmFsICh2b2lkKQogICAgICAgJiYgbWF0Y2hfcAog
ICAgICAgJiYgIXctPmZvcmNlX3N0YXJ0CiAgICAgICAmJiAhdy0+b3B0aW9uYWxfbmV3X3N0YXJ0
CisgICAgICAmJiAhdy0+d2luZG93X3N0YXJ0X2VuZF90b2dnbGUKICAgICAgIC8qIFBvaW50IG11
c3QgYmUgb24gdGhlIGxpbmUgdGhhdCB3ZSBoYXZlIGluZm8gcmVjb3JkZWQgYWJvdXQuICAqLwog
ICAgICAgJiYgUFQgPj0gQ0hBUlBPUyAodGxidWZwb3MpCiAgICAgICAmJiBQVCA8PSBaIC0gQ0hB
UlBPUyAodGxlbmRwb3MpCkBAIC0xNTA2Miw2ICsxNTA2MywyMyBAQCBydW5fd2luZG93X3Njcm9s
bF9mdW5jdGlvbnMgKExpc3BfT2JqZWN0IHdpbmRvdywgc3RydWN0IHRleHRfcG9zIHN0YXJ0cCkK
ICAgcmV0dXJuIHN0YXJ0cDsKIH0KIAorc3RhdGljIHN0cnVjdCB0ZXh0X3BvcworcnVuX3dpbmRv
d19zdGFydF9lbmRfaG9vayAoTGlzcF9PYmplY3Qgd2luZG93LCBzdHJ1Y3QgdGV4dF9wb3Mgc3Rh
cnRwLCBpbnQgZW5kcCwKKyAgICAgICAgIGludCBwYm9sX3N0YXJ0cCwgaW50IHBlb2xfZW5kcCkK
K3sKKyAgc3RydWN0IHdpbmRvdyAqdyA9IFhXSU5ET1cgKHdpbmRvdyk7CisgIFNFVF9NQVJLRVJf
RlJPTV9URVhUX1BPUyAody0+c3RhcnQsIHN0YXJ0cCk7CisgIGVhc3NlcnQgKGN1cnJlbnRfYnVm
ZmVyID09IFhCVUZGRVIgKHctPmNvbnRlbnRzKSk7CisgIENBTExOIChGcnVuX2hvb2tfd2l0aF9h
cmdzLCBRd2luZG93X3N0YXJ0X2VuZF9ob29rLCB3aW5kb3csCisgICAgbWFrZV9udW1iZXIgKENI
QVJQT1MgKHN0YXJ0cCkpLAorICAgIG1ha2VfbnVtYmVyIChlbmRwKSwKKyAgICBtYWtlX251bWJl
ciAocGJvbF9zdGFydHApLAorICAgIG1ha2VfbnVtYmVyIChwZW9sX2VuZHApKTsKKyAgU0VUX1RF
WFRfUE9TX0ZST01fTUFSS0VSIChzdGFydHAsIHctPnN0YXJ0KTsKKyAgLyogSW4gY2FzZSB0aGUg
aG9vayBmdW5jdGlvbnMgc3dpdGNoIGJ1ZmZlcnMuICAqLworICBzZXRfYnVmZmVyX2ludGVybmFs
IChYQlVGRkVSICh3LT5jb250ZW50cykpOworICByZXR1cm4gc3RhcnRwOworfQogCiAvKiBNYWtl
IHN1cmUgdGhlIGxpbmUgY29udGFpbmluZyB0aGUgY3Vyc29yIGlzIGZ1bGx5IHZpc2libGUuCiAg
ICBBIHZhbHVlIG9mIHRydWUgbWVhbnMgdGhlcmUgaXMgbm90aGluZyB0byBiZSBkb25lLgpAQCAt
MTUxNTQsNyArMTUxNzIsNyBAQCB0cnlfc2Nyb2xsaW5nIChMaXNwX09iamVjdCB3aW5kb3csIGJv
b2wganVzdF90aGlzX29uZV9wLAogICBzdHJ1Y3QgZnJhbWUgKmYgPSBYRlJBTUUgKHctPmZyYW1l
KTsKICAgc3RydWN0IHRleHRfcG9zIHBvcywgc3RhcnRwOwogICBzdHJ1Y3QgaXQgaXQ7Ci0gIGlu
dCB0aGlzX3Njcm9sbF9tYXJnaW4sIHNjcm9sbF9tYXgsIHJjLCBoZWlnaHQ7CisgIGludCB0aGlz
X3Njcm9sbF9tYXJnaW4sIHNjcm9sbF9tYXgsIHJjLCBoZWlnaHQsIGVuZHAsIHBib2xfc3RhcnRw
LCBwZW9sX2VuZHA7CiAgIGludCBkeSA9IDAsIGFtb3VudF90b19zY3JvbGwgPSAwOwogICBib29s
IHNjcm9sbF9kb3duX3AgPSBmYWxzZTsKICAgaW50IGV4dHJhX3Njcm9sbF9tYXJnaW5fbGluZXMg
PSBsYXN0X2xpbmVfbWlzZml0OwpAQCAtMTU0MDMsNiArMTU0MjEsNDMgQEAgdHJ5X3Njcm9sbGlu
ZyAoTGlzcF9PYmplY3Qgd2luZG93LCBib29sIGp1c3RfdGhpc19vbmVfcCwKICAgLyogUnVuIHdp
bmRvdyBzY3JvbGwgZnVuY3Rpb25zLiAgKi8KICAgc3RhcnRwID0gcnVuX3dpbmRvd19zY3JvbGxf
ZnVuY3Rpb25zICh3aW5kb3csIHN0YXJ0cCk7CiAKKyAgaWYgKCFOSUxQIChWd2luZG93X3N0YXJ0
X2VuZF9ob29rKQorICAgICAgJiYgKEZsb2NhbF92YXJpYWJsZV9wIChRd2luZG93X3N0YXJ0X2Vu
ZF92YXIsIEZ3aW5kb3dfYnVmZmVyICh3aW5kb3cpKSkpCisgICAgeworICAgIHN0cnVjdCBidWZm
ZXIgKmI7CisgICAgTGlzcF9PYmplY3QgYnVmOworICAgIGJ1ZiA9IHctPmNvbnRlbnRzOworICAg
IENIRUNLX0JVRkZFUiAoYnVmKTsKKyAgICBiID0gWEJVRkZFUiAoYnVmKTsKKyAgICBzdHJ1Y3Qg
YnVmZmVyICpvbGRfYnVmZmVyID0gTlVMTDsKKyAgICB2b2lkICppdGRhdGEgPSBOVUxMOworICAg
IGlmIChiICE9IGN1cnJlbnRfYnVmZmVyKQorICAgICAgeworICAgICAgb2xkX2J1ZmZlciA9IGN1
cnJlbnRfYnVmZmVyOworICAgICAgc2V0X2J1ZmZlcl9pbnRlcm5hbCAoYik7CisgICAgICB9Cisg
ICAgQ0xJUF9URVhUX1BPU19GUk9NX01BUktFUiAoc3RhcnRwLCB3LT5zdGFydCk7CisgICAgaXRk
YXRhID0gYmlkaV9zaGVsdmVfY2FjaGUgKCk7CisgICAgc3RhcnRfZGlzcGxheSAoJml0LCB3LCBz
dGFydHApOworICAgIG1vdmVfaXRfdmVydGljYWxseSAoJml0LCB3aW5kb3dfYm94X2hlaWdodCAo
dykpOworICAgIGlmIChpdC5jdXJyZW50X3kgPCBpdC5sYXN0X3Zpc2libGVfeSkKKyAgICAgIG1v
dmVfaXRfcGFzdF9lb2wgKCZpdCk7CisgICAgZW5kcCA9IChJVF9DSEFSUE9TIChpdCkpOworICAg
IGJpZGlfdW5zaGVsdmVfY2FjaGUgKGl0ZGF0YSwgZmFsc2UpOworICAgIGlmIChvbGRfYnVmZmVy
KQorICAgICAgc2V0X2J1ZmZlcl9pbnRlcm5hbCAob2xkX2J1ZmZlcik7CisgICAgcHRyZGlmZl90
IG9yaWdpbmFsX3BvcyA9IFBUOworICAgIFNFVF9QVCAoQ0hBUlBPUyAoc3RhcnRwKSk7CisgICAg
cGJvbF9zdGFydHAgPSBYSU5UIChGbGluZV9iZWdpbm5pbmdfcG9zaXRpb24gKFFuaWwpKTsKKyAg
ICBTRVRfUFQgKGVuZHApOworICAgIHBlb2xfZW5kcCA9IFhJTlQgKEZsaW5lX2VuZF9wb3NpdGlv
biAoUW5pbCkpOworICAgIFNFVF9QVCAob3JpZ2luYWxfcG9zKTsKKyAgICBzdGFydHAgPSBydW5f
d2luZG93X3N0YXJ0X2VuZF9ob29rICh3aW5kb3csIHN0YXJ0cCwgZW5kcCwgcGJvbF9zdGFydHAs
IHBlb2xfZW5kcCk7CisjaWZkZWYgR0xZUEhfREVCVUcKKyAgZGVidWdfbWV0aG9kX2FkZCAodywg
InJ1bl93aW5kb3dfc3RhcnRfZW5kX2hvb2sgWzEgb2YgM10iKTsKKyNlbmRpZgorICAgIH0KKwog
ICAvKiBEaXNwbGF5IHRoZSB3aW5kb3cuICBHaXZlIHVwIGlmIG5ldyBmb250cyBhcmUgbG9hZGVk
LCBvciBpZiBwb2ludAogICAgICBkb2Vzbid0IGFwcGVhci4gICovCiAgIGlmICghdHJ5X3dpbmRv
dyAod2luZG93LCBzdGFydHAsIDApKQpAQCAtMTYwNTIsNyArMTYxMDcsNyBAQCByZWRpc3BsYXlf
d2luZG93IChMaXNwX09iamVjdCB3aW5kb3csIGJvb2wganVzdF90aGlzX29uZV9wKQogICBzdHJ1
Y3QgYnVmZmVyICpvbGQgPSBjdXJyZW50X2J1ZmZlcjsKICAgc3RydWN0IHRleHRfcG9zIGxwb2lu
dCwgb3BvaW50LCBzdGFydHA7CiAgIGJvb2wgdXBkYXRlX21vZGVfbGluZTsKLSAgaW50IHRlbTsK
KyAgaW50IHRlbSwgZW5kcCwgcGJvbF9zdGFydHAsIHBlb2xfZW5kcDsKICAgc3RydWN0IGl0IGl0
OwogICAvKiBSZWNvcmQgaXQgbm93IGJlY2F1c2UgaXQncyBvdmVyd3JpdHRlbi4gICovCiAgIGJv
b2wgY3VycmVudF9tYXRyaXhfdXBfdG9fZGF0ZV9wID0gZmFsc2U7CkBAIC0xNjI1NywxMyArMTYz
MTIsMTIgQEAgcmVkaXNwbGF5X3dpbmRvdyAoTGlzcF9PYmplY3Qgd2luZG93LCBib29sIGp1c3Rf
dGhpc19vbmVfcCkKIAogICAvKiBJZiBzb21lb25lIHNwZWNpZmllZCBhIG5ldyBzdGFydGluZyBw
b2ludCBidXQgZGlkIG5vdCBpbnNpc3QsCiAgICAgIGNoZWNrIHdoZXRoZXIgaXQgY2FuIGJlIHVz
ZWQuICAqLwotICBpZiAoKHctPm9wdGlvbmFsX25ld19zdGFydCB8fCB3aW5kb3dfZnJvemVuX3Ag
KHcpKQorICBpZiAoKHctPm9wdGlvbmFsX25ld19zdGFydCB8fCB3LT53aW5kb3dfc3RhcnRfZW5k
X3RvZ2dsZSB8fCB3aW5kb3dfZnJvemVuX3AgKHcpKQogICAgICAgJiYgQ0hBUlBPUyAoc3RhcnRw
KSA+PSBCRUdWCiAgICAgICAmJiBDSEFSUE9TIChzdGFydHApIDw9IFpWKQogICAgIHsKICAgICAg
IHB0cmRpZmZfdCBpdF9jaGFycG9zOwogCi0gICAgICB3LT5vcHRpb25hbF9uZXdfc3RhcnQgPSBm
YWxzZTsKICAgICAgIHN0YXJ0X2Rpc3BsYXkgKCZpdCwgdywgc3RhcnRwKTsKICAgICAgIG1vdmVf
aXRfdG8gKCZpdCwgUFQsIDAsIGl0Lmxhc3RfdmlzaWJsZV95LCAtMSwKIAkJICBNT1ZFX1RPX1BP
UyB8IE1PVkVfVE9fWCB8IE1PVkVfVE9fWSk7CkBAIC0xNjI4NCwxNCArMTYzMzgsMjggQEAgcmVk
aXNwbGF5X3dpbmRvdyAoTGlzcF9PYmplY3Qgd2luZG93LCBib29sIGp1c3RfdGhpc19vbmVfcCkK
IAkgICAgdy0+Zm9yY2Vfc3RhcnQgPSB0cnVlOwogI2lmZGVmIEdMWVBIX0RFQlVHCiAJICBpZiAo
dy0+Zm9yY2Vfc3RhcnQpCi0JICAgIHsKLQkgICAgICBpZiAod2luZG93X2Zyb3plbl9wICh3KSkK
LQkJZGVidWdfbWV0aG9kX2FkZCAodywgInNldCBmb3JjZV9zdGFydCBmcm9tIGZyb3plbiB3aW5k
b3cgc3RhcnQiKTsKLQkgICAgICBlbHNlCi0JCWRlYnVnX21ldGhvZF9hZGQgKHcsICJzZXQgZm9y
Y2Vfc3RhcnQgZnJvbSBvcHRpb25hbF9uZXdfc3RhcnQiKTsKLQkgICAgfQorICAgIHsKKyAgICAg
IGlmICh3aW5kb3dfZnJvemVuX3AgKHcpKQorICAgICAgICB7CisgICAgICAgIGRlYnVnX21ldGhv
ZF9hZGQgKHcsICJzZXQgZm9yY2Vfc3RhcnQgZnJvbSBmcm96ZW4gd2luZG93IHN0YXJ0Iik7Cisg
ICAgICB9CisgICAgICBlbHNlIGlmICh3LT5vcHRpb25hbF9uZXdfc3RhcnQpCisgICAgICAgIHsK
KyAgICAgICAgZGVidWdfbWV0aG9kX2FkZCAodywgInNldCBmb3JjZV9zdGFydCBmcm9tIG9wdGlv
bmFsX25ld19zdGFydCIpOworICAgICAgfQorICAgICAgZWxzZSBpZiAody0+d2luZG93X3N0YXJ0
X2VuZF90b2dnbGUpCisgICAgICAgIHsKKyAgICAgICAgZGVidWdfbWV0aG9kX2FkZCAodywgInNl
dCBmb3JjZV9zdGFydCBmcm9tIHdpbmRvd19zdGFydF9lbmRfdG9nZ2xlIik7CisgICAgICB9Cisg
ICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgZGVidWdfbWV0aG9kX2FkZCAodywgIlRoaXMg
c2l0dWF0aW9uIGlzIG5vdCB5ZXQgY29udGVtcGxhdGVkLiIpOworICAgICAgfQorICAgIH0KICNl
bmRpZgogCX0KKyAgICAgIHctPm9wdGlvbmFsX25ld19zdGFydCA9IGZhbHNlOworICAgICAgdy0+
d2luZG93X3N0YXJ0X2VuZF90b2dnbGUgPSBmYWxzZTsKICAgICB9CiAKICBmb3JjZV9zdGFydDoK
QEAgLTE2MzE5LDExICsxNjM4Nyw1NCBAQCByZWRpc3BsYXlfd2luZG93IChMaXNwX09iamVjdCB3
aW5kb3csIGJvb2wganVzdF90aGlzX29uZV9wKQogCSB0aGFuIHRvIGdldCBpbnRvIGFuIGluZmlu
aXRlIGxvb3AgY2FsbGluZyB0aGUgaG9vayBmdW5jdGlvbnMKIAkgYW5kIGhhdmluZyB0aGVtIGdl
dCBtb3JlIGVycm9ycy4gICovCiAgICAgICBpZiAoIXVwZGF0ZV9tb2RlX2xpbmUKLQkgIHx8ICEg
TklMUCAoVndpbmRvd19zY3JvbGxfZnVuY3Rpb25zKSkKKwkgIHx8ICEgTklMUCAoVndpbmRvd19z
Y3JvbGxfZnVuY3Rpb25zKQorCSAgfHwgISBOSUxQIChWd2luZG93X3N0YXJ0X2VuZF9ob29rKSkK
IAl7CiAJICB1cGRhdGVfbW9kZV9saW5lID0gdHJ1ZTsKIAkgIHctPnVwZGF0ZV9tb2RlX2xpbmUg
PSB0cnVlOworCisgIC8qIFJ1biB3aW5kb3cgc2Nyb2xsIGZ1bmN0aW9ucy4gIEZJWE1FOiAgc2V0
IHVwIGNvbmRpdGlvbnMgc28gdGhhdAorYHJ1bl93aW5kb3dfc2Nyb2xsX2Z1bmN0aW9uc2AgZG9l
cyBub3QgYWx3YXlzIHJ1biB3aGVuZXZlcgorYHctPndpbmRvd19zdGFydF9lbmRfdG9nZ2xlYCBp
cyBgdHJ1ZWAuICAqLwogCSAgc3RhcnRwID0gcnVuX3dpbmRvd19zY3JvbGxfZnVuY3Rpb25zICh3
aW5kb3csIHN0YXJ0cCk7CisKKyAgaWYgKCFOSUxQIChWd2luZG93X3N0YXJ0X2VuZF9ob29rKQor
ICAgICAgJiYgKEZsb2NhbF92YXJpYWJsZV9wIChRd2luZG93X3N0YXJ0X2VuZF92YXIsIEZ3aW5k
b3dfYnVmZmVyICh3aW5kb3cpKSkpCisgICAgeworICAgIHN0cnVjdCBidWZmZXIgKmI7CisgICAg
TGlzcF9PYmplY3QgYnVmOworICAgIGJ1ZiA9IHctPmNvbnRlbnRzOworICAgIENIRUNLX0JVRkZF
UiAoYnVmKTsKKyAgICBiID0gWEJVRkZFUiAoYnVmKTsKKyAgICBzdHJ1Y3QgYnVmZmVyICpvbGRf
YnVmZmVyID0gTlVMTDsKKyAgICB2b2lkICppdGRhdGEgPSBOVUxMOworICAgIGlmIChiICE9IGN1
cnJlbnRfYnVmZmVyKQorICAgICAgeworICAgICAgb2xkX2J1ZmZlciA9IGN1cnJlbnRfYnVmZmVy
OworICAgICAgc2V0X2J1ZmZlcl9pbnRlcm5hbCAoYik7CisgICAgICB9CisgICAgQ0xJUF9URVhU
X1BPU19GUk9NX01BUktFUiAoc3RhcnRwLCB3LT5zdGFydCk7CisgICAgaXRkYXRhID0gYmlkaV9z
aGVsdmVfY2FjaGUgKCk7CisgICAgc3RhcnRfZGlzcGxheSAoJml0LCB3LCBzdGFydHApOworICAg
IG1vdmVfaXRfdmVydGljYWxseSAoJml0LCB3aW5kb3dfYm94X2hlaWdodCAodykpOworICAgIGlm
IChpdC5jdXJyZW50X3kgPCBpdC5sYXN0X3Zpc2libGVfeSkKKyAgICAgIG1vdmVfaXRfcGFzdF9l
b2wgKCZpdCk7CisgICAgZW5kcCA9IChJVF9DSEFSUE9TIChpdCkpOworICAgIGJpZGlfdW5zaGVs
dmVfY2FjaGUgKGl0ZGF0YSwgZmFsc2UpOworICAgIGlmIChvbGRfYnVmZmVyKQorICAgICAgc2V0
X2J1ZmZlcl9pbnRlcm5hbCAob2xkX2J1ZmZlcik7CisgICAgcHRyZGlmZl90IG9yaWdpbmFsX3Bv
cyA9IFBUOworICAgIFNFVF9QVCAoQ0hBUlBPUyAoc3RhcnRwKSk7CisgICAgcGJvbF9zdGFydHAg
PSBYSU5UIChGbGluZV9iZWdpbm5pbmdfcG9zaXRpb24gKFFuaWwpKTsKKyAgICBTRVRfUFQgKGVu
ZHApOworICAgIHBlb2xfZW5kcCA9IFhJTlQgKEZsaW5lX2VuZF9wb3NpdGlvbiAoUW5pbCkpOwor
ICAgIFNFVF9QVCAob3JpZ2luYWxfcG9zKTsKKyAgICBzdGFydHAgPSBydW5fd2luZG93X3N0YXJ0
X2VuZF9ob29rICh3aW5kb3csIHN0YXJ0cCwgZW5kcCwgcGJvbF9zdGFydHAsIHBlb2xfZW5kcCk7
CisjaWZkZWYgR0xZUEhfREVCVUcKKyAgZGVidWdfbWV0aG9kX2FkZCAodywgInJ1bl93aW5kb3df
c3RhcnRfZW5kX2hvb2sgWzIgb2YgM10iKTsKKyNlbmRpZgorICAgIH0KKwogCX0KIAogICAgICAg
aWYgKENIQVJQT1MgKHN0YXJ0cCkgPCBCRUdWKQpAQCAtMTY1OTEsNiArMTY3MDIsNyBAQCByZWRp
c3BsYXlfd2luZG93IChMaXNwX09iamVjdCB3aW5kb3csIGJvb2wganVzdF90aGlzX29uZV9wKQog
CSAgICAgYmVjYXVzZSBhIHdpbmRvdyBzY3JvbGwgZnVuY3Rpb24gY2FuIGhhdmUgY2hhbmdlZCB0
aGUKIAkgICAgIGJ1ZmZlci4gICovCiAJICB8fCAhTklMUCAoVndpbmRvd19zY3JvbGxfZnVuY3Rp
b25zKQorCSAgfHwgIU5JTFAgKFZ3aW5kb3dfc3RhcnRfZW5kX2hvb2spCiAJICB8fCBNSU5JX1dJ
TkRPV19QICh3KQogCSAgfHwgISh1c2VkX2N1cnJlbnRfbWF0cml4X3AKIAkgICAgICAgPSB0cnlf
d2luZG93X3JldXNpbmdfY3VycmVudF9tYXRyaXggKHcpKSkKQEAgLTE2Nzg4LDYgKzE2OTAwLDQz
IEBAIHJlZGlzcGxheV93aW5kb3cgKExpc3BfT2JqZWN0IHdpbmRvdywgYm9vbCBqdXN0X3RoaXNf
b25lX3ApCiAgIC8qIFJ1biBzY3JvbGwgaG9va3MuICAqLwogICBzdGFydHAgPSBydW5fd2luZG93
X3Njcm9sbF9mdW5jdGlvbnMgKHdpbmRvdywgaXQuY3VycmVudC5wb3MpOwogCisgIGlmICghTklM
UCAoVndpbmRvd19zdGFydF9lbmRfaG9vaykKKyAgICAgICYmIChGbG9jYWxfdmFyaWFibGVfcCAo
UXdpbmRvd19zdGFydF9lbmRfdmFyLCBGd2luZG93X2J1ZmZlciAod2luZG93KSkpKQorICAgIHsK
KyAgICBzdHJ1Y3QgYnVmZmVyICpiOworICAgIExpc3BfT2JqZWN0IGJ1ZjsKKyAgICBidWYgPSB3
LT5jb250ZW50czsKKyAgICBDSEVDS19CVUZGRVIgKGJ1Zik7CisgICAgYiA9IFhCVUZGRVIgKGJ1
Zik7CisgICAgc3RydWN0IGJ1ZmZlciAqb2xkX2J1ZmZlciA9IE5VTEw7CisgICAgdm9pZCAqaXRk
YXRhID0gTlVMTDsKKyAgICBpZiAoYiAhPSBjdXJyZW50X2J1ZmZlcikKKyAgICAgIHsKKyAgICAg
IG9sZF9idWZmZXIgPSBjdXJyZW50X2J1ZmZlcjsKKyAgICAgIHNldF9idWZmZXJfaW50ZXJuYWwg
KGIpOworICAgICAgfQorICAgIENMSVBfVEVYVF9QT1NfRlJPTV9NQVJLRVIgKHN0YXJ0cCwgdy0+
c3RhcnQpOworICAgIGl0ZGF0YSA9IGJpZGlfc2hlbHZlX2NhY2hlICgpOworICAgIHN0YXJ0X2Rp
c3BsYXkgKCZpdCwgdywgc3RhcnRwKTsKKyAgICBtb3ZlX2l0X3ZlcnRpY2FsbHkgKCZpdCwgd2lu
ZG93X2JveF9oZWlnaHQgKHcpKTsKKyAgICBpZiAoaXQuY3VycmVudF95IDwgaXQubGFzdF92aXNp
YmxlX3kpCisgICAgICBtb3ZlX2l0X3Bhc3RfZW9sICgmaXQpOworICAgIGVuZHAgPSAoSVRfQ0hB
UlBPUyAoaXQpKTsKKyAgICBiaWRpX3Vuc2hlbHZlX2NhY2hlIChpdGRhdGEsIGZhbHNlKTsKKyAg
ICBpZiAob2xkX2J1ZmZlcikKKyAgICAgIHNldF9idWZmZXJfaW50ZXJuYWwgKG9sZF9idWZmZXIp
OworICAgIHB0cmRpZmZfdCBvcmlnaW5hbF9wb3MgPSBQVDsKKyAgICBTRVRfUFQgKENIQVJQT1Mg
KHN0YXJ0cCkpOworICAgIHBib2xfc3RhcnRwID0gWElOVCAoRmxpbmVfYmVnaW5uaW5nX3Bvc2l0
aW9uIChRbmlsKSk7CisgICAgU0VUX1BUIChlbmRwKTsKKyAgICBwZW9sX2VuZHAgPSBYSU5UIChG
bGluZV9lbmRfcG9zaXRpb24gKFFuaWwpKTsKKyAgICBTRVRfUFQgKG9yaWdpbmFsX3Bvcyk7Cisg
ICAgc3RhcnRwID0gcnVuX3dpbmRvd19zdGFydF9lbmRfaG9vayAod2luZG93LCBzdGFydHAsIGVu
ZHAsIHBib2xfc3RhcnRwLCBwZW9sX2VuZHApOworI2lmZGVmIEdMWVBIX0RFQlVHCisgIGRlYnVn
X21ldGhvZF9hZGQgKHcsICJydW5fd2luZG93X3N0YXJ0X2VuZF9ob29rIFszIG9mIDNdIik7Cisj
ZW5kaWYKKyAgICB9CisKICAgLyogUmVkaXNwbGF5IHRoZSB3aW5kb3cuICAqLwogICBib29sIHVz
ZV9kZXNpcmVkX21hdHJpeCA9IGZhbHNlOwogICBpZiAoIWN1cnJlbnRfbWF0cml4X3VwX3RvX2Rh
dGVfcApAQCAtMTY3OTYsNiArMTY5NDUsNyBAQCByZWRpc3BsYXlfd2luZG93IChMaXNwX09iamVj
dCB3aW5kb3csIGJvb2wganVzdF90aGlzX29uZV9wKQogICAgICAgLyogRG9uJ3QgdXNlIHRyeV93
aW5kb3dfcmV1c2luZ19jdXJyZW50X21hdHJpeCBpbiB0aGlzIGNhc2UKIAkgYmVjYXVzZSBpdCBj
YW4gaGF2ZSBjaGFuZ2VkIHRoZSBidWZmZXIuICAqLwogICAgICAgfHwgIU5JTFAgKFZ3aW5kb3df
c2Nyb2xsX2Z1bmN0aW9ucykKKyAgICAgIHx8ICFOSUxQIChWd2luZG93X3N0YXJ0X2VuZF9ob29r
KQogICAgICAgfHwgIWp1c3RfdGhpc19vbmVfcAogICAgICAgfHwgTUlOSV9XSU5ET1dfUCAodykK
ICAgICAgIHx8ICEodXNlZF9jdXJyZW50X21hdHJpeF9wCkBAIC0yMzY3MSw2ICsyMzgyMSwyMCBA
QCBkZWNvZGVfbW9kZV9zcGVjIChzdHJ1Y3Qgd2luZG93ICp3LCByZWdpc3RlciBpbnQgYywgaW50
IGZpZWxkX3dpZHRoLAogCSAgcmV0dXJuICJAIjsKICAgICAgIH0KIAorICAgIGNhc2UgJ3cnOgor
ICAgICAgeworICBwdHJkaWZmX3Qgd2luZG93X3N0YXJ0ID0gbWFya2VyX3Bvc2l0aW9uICh3LT5z
dGFydCk7CisgIHBpbnQyc3RyIChkZWNvZGVfbW9kZV9zcGVjX2J1Ziwgd2lkdGgsIHdpbmRvd19z
dGFydCk7CisgIHJldHVybiBkZWNvZGVfbW9kZV9zcGVjX2J1ZjsKKyAgICAgIH0KKworICAgIGNh
c2UgJ1cnOgorICAgICAgeworICBwdHJkaWZmX3Qgd2luZG93X2VuZCA9IEJVRl9aIChiKSAtIHct
PndpbmRvd19lbmRfcG9zOworICBwaW50MnN0ciAoZGVjb2RlX21vZGVfc3BlY19idWYsIHdpZHRo
LCB3aW5kb3dfZW5kKTsKKyAgcmV0dXJuIGRlY29kZV9tb2RlX3NwZWNfYnVmOworICAgICAgfQor
CiAgICAgY2FzZSAneic6CiAgICAgICAvKiBjb2Rpbmctc3lzdGVtIChub3QgaW5jbHVkaW5nIGVu
ZC1vZi1saW5lIGZvcm1hdCkgKi8KICAgICBjYXNlICdaJzoKQEAgLTMxMTM2LDYgKzMxMzAwLDgg
QEAgVGhleSBhcmUgc3RpbGwgbG9nZ2VkIHRvIHRoZSAqTWVzc2FnZXMqIGJ1ZmZlci4gICovKTsK
ICAgREVGU1lNIChRb3ZlcnJpZGluZ190ZXJtaW5hbF9sb2NhbF9tYXAsICJvdmVycmlkaW5nLXRl
cm1pbmFsLWxvY2FsLW1hcCIpOwogICBERUZTWU0gKFFvdmVycmlkaW5nX2xvY2FsX21hcCwgIm92
ZXJyaWRpbmctbG9jYWwtbWFwIik7CiAgIERFRlNZTSAoUXdpbmRvd19zY3JvbGxfZnVuY3Rpb25z
LCAid2luZG93LXNjcm9sbC1mdW5jdGlvbnMiKTsKKyAgREVGU1lNIChRd2luZG93X3N0YXJ0X2Vu
ZF9ob29rLCAid2luZG93LXN0YXJ0LWVuZC1ob29rIik7CisgIERFRlNZTSAoUXdpbmRvd19zdGFy
dF9lbmRfdmFyLCAid2luZG93LXN0YXJ0LWVuZC12YXIiKTsKICAgREVGU1lNIChRd2luZG93X3Rl
eHRfY2hhbmdlX2Z1bmN0aW9ucywgIndpbmRvdy10ZXh0LWNoYW5nZS1mdW5jdGlvbnMiKTsKICAg
REVGU1lNIChRcmVkaXNwbGF5X2VuZF90cmlnZ2VyX2Z1bmN0aW9ucywgInJlZGlzcGxheS1lbmQt
dHJpZ2dlci1mdW5jdGlvbnMiKTsKICAgREVGU1lNIChRaW5oaWJpdF9wb2ludF9tb3Rpb25faG9v
a3MsICJpbmhpYml0LXBvaW50LW1vdGlvbi1ob29rcyIpOwpAQCAtMzE0NTcsNiArMzE2MjMsMTUg
QEAgaXMgc2Nyb2xsZWQuICBJdCBpcyBub3QgZGVzaWduZWQgZm9yIHRoYXQsIGFuZCBzdWNoIHVz
ZSBwcm9iYWJseSB3b24ndAogd29yay4gICovKTsKICAgVndpbmRvd19zY3JvbGxfZnVuY3Rpb25z
ID0gUW5pbDsKIAorICBERUZWQVJfTElTUCAoIndpbmRvdy1zdGFydC1lbmQtaG9vayIsIFZ3aW5k
b3dfc3RhcnRfZW5kX2hvb2ssCisgICAgZG9jOiAvKiBVc2VkIHRvIG9idGFpbiB0aGUgbmV3IGB3
aW5kb3ctc3RhcnQnIGR1cmluZyByZWRpc3BsYXkuICAqLyk7CisgIFZ3aW5kb3dfc3RhcnRfZW5k
X2hvb2sgPSBRbmlsOworCisgIERFRlZBUl9MSVNQICgid2luZG93LXN0YXJ0LWVuZC12YXIiLCBW
d2luZG93X3N0YXJ0X2VuZF92YXIsCisgICAgZG9jOiAvKiBgd2luZG93LXN0YXJ0LWVuZC1ob29r
YCBjaGVja3MgdG8gc2VlIGlmIGB3aW5kb3ctc3RhcnQtZW5kLXZhcmAgaXMgc2V0IGxvY2FsbHku
ICAqLyk7CisgIFZ3aW5kb3dfc3RhcnRfZW5kX3ZhciA9IFFuaWw7CisgIEZtYWtlX3ZhcmlhYmxl
X2J1ZmZlcl9sb2NhbCAoUXdpbmRvd19zdGFydF9lbmRfdmFyKTsKKwogICBERUZWQVJfTElTUCAo
IndpbmRvdy10ZXh0LWNoYW5nZS1mdW5jdGlvbnMiLAogCSAgICAgICBWd2luZG93X3RleHRfY2hh
bmdlX2Z1bmN0aW9ucywKICAgICBkb2M6IC8qIEZ1bmN0aW9ucyB0byBjYWxsIGluIHJlZGlzcGxh
eSB3aGVuIHRleHQgaW4gdGhlIHdpbmRvdyBtaWdodCBjaGFuZ2UuICAqLyk7Cg==

--Multipart_Mon_Feb__1_21:58:42_2016-1--




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

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


Received: (at 22404) by debbugs.gnu.org; 2 Feb 2016 01:18:15 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 01 20:18:15 2016
Received: from localhost ([127.0.0.1]:55466 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aQPbj-00031B-Dv
	for submit <at> debbugs.gnu.org; Mon, 01 Feb 2016 20:18:15 -0500
Received: from cobb.liquidweb.com ([50.28.13.150]:57892)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <esq@HIDDEN>) id 1aQPbh-00030u-JA
 for 22404 <at> debbugs.gnu.org; Mon, 01 Feb 2016 20:18:13 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lawlist.com;
 s=default; 
 h=Content-Type:MIME-Version:Subject:Cc:To:From:Message-ID:Date;
 bh=GkICBA2qMjKzCW1WnTP0gGZteHRGJDPkx7ge7ZtxeAM=; 
 b=J+YUnF/D2nnSe6IWugOXeJSMPO/SFE3eOVArDPNoLAXrnz1b/VIyQb2gpdk8/YAq4N1GkK5gW+Y73ekP/G7HWVGESDWOO6pKUY+vslFClAySFH6woA3pV3X7kZ2qevA6;
Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:53639
 helo=server.private.localhost)
 by cobb.liquidweb.com with esmtp (Exim 4.82)
 (envelope-from <esq@HIDDEN>)
 id 1aQPbX-0005hf-Ox; Mon, 01 Feb 2016 20:18:03 -0500
Date: Mon, 01 Feb 2016 05:18:02 -0800
Message-ID: <m21t8wsh6d.wl%esq@HIDDEN>
From: Keith David Bershatsky <esq@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
MIME-Version: 1.0 (generated by   - "")
Content-Type: text/plain; charset=US-ASCII
X-AntiAbuse: This header was added to track abuse,
 please include it with any abuse report
X-AntiAbuse: Primary Hostname - cobb.liquidweb.com
X-AntiAbuse: Original Domain - debbugs.gnu.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - lawlist.com
X-Get-Message-Sender-Via: cobb.liquidweb.com: acl_c_relayhosts_text_entry:
 lawlist|lawlist.com
X-Spam-Score: 0.1 (/)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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: 0.1 (/)

The four (4) values that I am most interested in are:

  1.  window-start

  2.  window-end

  3.  Point at the beginning of the line containing window-start.

  4.  Point at the end of the line containing window-end.

Although my proposed usage of the `post-redisplay-hook` will not be to alter buffer (i.e., I'm just adding overlays), other people who may use this new hook in the future may be modifying the buffer content -- e.g., adding/removing fonts, adding/removing text, moving the cursor, etc.  The `window-scroll-functions` hook is strategically placed at three locations of `xdisp.c`, and some of those areas are revisited when things have changed since the first pass -- e.g., continuation line at the beginning of the window, or cursor is partially visible at the bottom of the window.

If the `post-redisplay-hook` runs too late in time to receive any checks regarding cursor position and so forth, some users may be surprised when their cursor ends up below the visible screen at the conclusion of redisplay -- e.g., because they added text or increased a font size that pushed the cursor further down below.

Keith

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

At Mon, 01 Feb 2016 21:54:42 +0200,
Eli Zaretskii wrote:
> 
> * * *
> 
> I'd prefer to have a post-redisplay-hook, which is called either at
> the end of redisplay cycle, or after redisplay_internal returns to its
> caller.  Would that solve your problem, and if so, what information do
> you need to be passed to such a hook?




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

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


Received: (at 22404) by debbugs.gnu.org; 1 Feb 2016 20:08:53 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 01 15:08:53 2016
Received: from localhost ([127.0.0.1]:55307 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aQKmK-0000fN-NY
	for submit <at> debbugs.gnu.org; Mon, 01 Feb 2016 15:08:52 -0500
Received: from eggs.gnu.org ([208.118.235.92]:45167)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <eliz@HIDDEN>) id 1aQKmJ-0000f4-Mt
 for 22404 <at> debbugs.gnu.org; Mon, 01 Feb 2016 15:08:52 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <eliz@HIDDEN>) id 1aQKZ0-0001ie-JO
 for 22404 <at> debbugs.gnu.org; Mon, 01 Feb 2016 14:55:09 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=0.3 required=5.0 tests=BAYES_50,RP_MATCHES_RCVD
 autolearn=disabled version=3.3.2
Received: from fencepost.gnu.org ([2001:4830:134:3::e]:39642)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1aQKZ0-0001iX-Ff; Mon, 01 Feb 2016 14:55:06 -0500
Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1528
 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1aQKYy-0004At-I2; Mon, 01 Feb 2016 14:55:06 -0500
Date: Mon, 01 Feb 2016 21:54:42 +0200
Message-Id: <83vb68yznh.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Keith David Bershatsky <esq@HIDDEN>
In-reply-to: <m2powh2ioi.wl%esq@HIDDEN> (message from Keith David
 Bershatsky on Sun, 31 Jan 2016 19:50:05 -0800)
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
References: <m2powh2ioi.wl%esq@HIDDEN>
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From: 2001:4830:134:3::e
X-Spam-Score: -5.6 (-----)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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>
Reply-To: Eli Zaretskii <eliz@HIDDEN>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -5.6 (-----)

> Date:  Sun, 31 Jan 2016 19:50:05 -0800
> From:  Keith David Bershatsky <esq@HIDDEN>
> Cc:  22404 <at> debbugs.gnu.org,Michael Heerdegen <eliz@HIDDEN>
> 
> I see that there are a few express circumstances in the function `window-end` where a forced update will not occur, even though a user expressly requested it with the optional argument being set to `t`.  Michael had mentioned an unspecified situation where `window-end` was incorrect from the `window-scroll-functions` hook even with a forced update, so perhaps one or more of those expressly coded exceptions is/are to blame.  I encountered a similar situation today in my testing with interactively calling `previous-line` at the top window edge (and scroll-conservatively 101) where the `window-end` was not updating correctly.
> 
> Attached is a diff-patch of the second draft for the new proposed animal that is somewhat similar to the `window-scroll-functions` hook, but this new animal is able to run every command loop even when there is no scrolling.  It automatically updates `window-end`, and it throws four (4) values that can be used by the user's custom function attached to the new hook:
> 
> * window-start
> * window-end
> * point at the beginning of the line of window-start.
> * point at the end of the line of window-end.
> 
> I added two new symbols for the mode-line:  little `%w` for `window-start` and big `%W` for `window-end`.  This made debugging much easier, and I do a lot with window-start/end, so it comes in handy for writing other related functions.
> 
> I removed one double quote in comments in `window.c` that was breaking my font-lock highlighting -- an unmatched double quotes in a comment always causes havoc with my highlighting for the remainder of the buffer, so I try to fix those whenever I come across them.
> 
> I still haven't figured out how to entirely substitute throwing the switch `w->wsf_toggle = true` with just a buffer-local variable.  Ideally, I would prefer that the new hook run whenever local variable `wsf-var` is `t` -- without needing a switch.  At the present time, I am throwing the switch each command loop with the `post-command-hook`.  [The switch gets set back to `false` during redisplay, and is needed as sort of a counter so that a section of the redisplay code does not run more than necessary.]
> 
> This draft diff-patch can of course still use some polishing up -- e.g., the forced window update only needs to occur when `wsf-var` is `t`.  In future drafts, I'll probably change some of the names to further distinguish this from the built-in WSF.  [The built-in WSF section near a patched comment labeled "2 of 3" should probably now have an exception so that it doesn't run merely because this new animal is running, and I'll think some more about that in the coming days.]  I'll be using this patch in my daily routine to see how it works out.  Here is the sample usage, which is designed to be buffer-local:

Keith, I appreciate all the efforts you are putting into this, but I'd
rather we'd not go in that direction.  Running Lisp from within the
bowels of redisplay is inherently dangerous (because Lisp code can
signal an error, which then makes Emacs not responsive due to infinite
attempts to display the error message, which causes another error,
etc.).  Your patches add more places where we call Lisp, and in
particular in places, like redisplay_window, where it simply is out of
the question.

I'd prefer to have a post-redisplay-hook, which is called either at
the end of redisplay cycle, or after redisplay_internal returns to its
caller.  Would that solve your problem, and if so, what information do
you need to be passed to such a hook?

Thanks.




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

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


Received: (at 22404) by debbugs.gnu.org; 1 Feb 2016 03:50:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 31 22:50:16 2016
Received: from localhost ([127.0.0.1]:43739 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aQ5VI-0000Ni-2Z
	for submit <at> debbugs.gnu.org; Sun, 31 Jan 2016 22:50:16 -0500
Received: from cobb.liquidweb.com ([50.28.13.150]:55510)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <esq@HIDDEN>) id 1aQ5VF-0000NV-Rk
 for 22404 <at> debbugs.gnu.org; Sun, 31 Jan 2016 22:50:14 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lawlist.com;
 s=default; 
 h=Content-Type:MIME-Version:Subject:Cc:To:From:Message-ID:Date;
 bh=rDlY5brax27XFHPsv0ccCZ0U0yRuSE9UnFgy7+t+VXU=; 
 b=v8i2uhJdBR6Sl8Vb0/9wz4btewScj08gkwww5FYEHy6dLpBrvflAHb9t2vZGJV8Oh9Ruu/YeXKlHmV2KLlHOHHH0DciyGvpXM71f1s7uhlgTJPcLxmzE/PrKI5Hi/awa;
Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:56095
 helo=server.private.localhost)
 by cobb.liquidweb.com with esmtp (Exim 4.82)
 (envelope-from <esq@HIDDEN>)
 id 1aQ5V4-0001WF-Bo; Sun, 31 Jan 2016 22:50:02 -0500
Date: Sun, 31 Jan 2016 19:50:05 -0800
Message-ID: <m2powh2ioi.wl%esq@HIDDEN>
From: Keith David Bershatsky <esq@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
MIME-Version: 1.0 (generated by   - "")
Content-Type: multipart/mixed; boundary="Multipart_Sun_Jan_31_19:50:03_2016-1"
X-AntiAbuse: This header was added to track abuse,
 please include it with any abuse report
X-AntiAbuse: Primary Hostname - cobb.liquidweb.com
X-AntiAbuse: Original Domain - debbugs.gnu.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - lawlist.com
X-Get-Message-Sender-Via: cobb.liquidweb.com: acl_c_relayhosts_text_entry:
 lawlist|lawlist.com
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 22404
Cc: Michael Heerdegen <eliz@HIDDEN>, 22404 <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: -0.7 (/)

--Multipart_Sun_Jan_31_19:50:03_2016-1
Content-Type: text/plain; charset=US-ASCII

I see that there are a few express circumstances in the function `window-end` where a forced update will not occur, even though a user expressly requested it with the optional argument being set to `t`.  Michael had mentioned an unspecified situation where `window-end` was incorrect from the `window-scroll-functions` hook even with a forced update, so perhaps one or more of those expressly coded exceptions is/are to blame.  I encountered a similar situation today in my testing with interactively calling `previous-line` at the top window edge (and scroll-conservatively 101) where the `window-end` was not updating correctly.

Attached is a diff-patch of the second draft for the new proposed animal that is somewhat similar to the `window-scroll-functions` hook, but this new animal is able to run every command loop even when there is no scrolling.  It automatically updates `window-end`, and it throws four (4) values that can be used by the user's custom function attached to the new hook:

* window-start
* window-end
* point at the beginning of the line of window-start.
* point at the end of the line of window-end.

I added two new symbols for the mode-line:  little `%w` for `window-start` and big `%W` for `window-end`.  This made debugging much easier, and I do a lot with window-start/end, so it comes in handy for writing other related functions.

I removed one double quote in comments in `window.c` that was breaking my font-lock highlighting -- an unmatched double quotes in a comment always causes havoc with my highlighting for the remainder of the buffer, so I try to fix those whenever I come across them.

I still haven't figured out how to entirely substitute throwing the switch `w->wsf_toggle = true` with just a buffer-local variable.  Ideally, I would prefer that the new hook run whenever local variable `wsf-var` is `t` -- without needing a switch.  At the present time, I am throwing the switch each command loop with the `post-command-hook`.  [The switch gets set back to `false` during redisplay, and is needed as sort of a counter so that a section of the redisplay code does not run more than necessary.]

This draft diff-patch can of course still use some polishing up -- e.g., the forced window update only needs to occur when `wsf-var` is `t`.  In future drafts, I'll probably change some of the names to further distinguish this from the built-in WSF.  [The built-in WSF section near a patched comment labeled "2 of 3" should probably now have an exception so that it doesn't run merely because this new animal is running, and I'll think some more about that in the coming days.]  I'll be using this patch in my daily routine to see how it works out.  Here is the sample usage, which is designed to be buffer-local:

(setq scroll-conservatively 101)

(setq wsf-var t)

(defun hr-pch-fn ()
  (force-wsf (selected-window)))

(defun hr-wsf-fn (win start end pbol-start peol-end)
  (message "win: %s | start: %s | end: %s | peol-start: %s | peol-end: %s"
    win start end pbol-start peol-end))

(add-hook 'post-command-hook 'hr-pch-fn t t)

(add-hook 'wsf-hook 'hr-wsf-fn nil t)


--Multipart_Sun_Jan_31_19:50:03_2016-1
Content-Type: application/diff; type=patch
Content-Disposition: attachment; filename="wsf.diff"
Content-Transfer-Encoding: base64

ZGlmZiAtLWdpdCBhL3NyYy93aW5kb3cuYyBiL3NyYy93aW5kb3cuYwppbmRleCBlMWEzMGVlLi5j
MTZjZDM2IDEwMDY0NAotLS0gYS9zcmMvd2luZG93LmMKKysrIGIvc3JjL3dpbmRvdy5jCkBAIC0x
NTU5LDcgKzE1NTksNyBAQCBoYXZlIGJlZW4gaWYgcmVkaXNwbGF5IGhhZCBmaW5pc2hlZCwgZG8g
dGhpczoKICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgIChnb3RvLWNoYXIgKHdpbmRvdy1zdGFy
dCB3aW5kb3cpKQogICAgICAgKHZlcnRpY2FsLW1vdGlvbiAoMS0gKHdpbmRvdy1oZWlnaHQgd2lu
ZG93KSkgd2luZG93KQotICAgICAgKHBvaW50KSkiKSAgKi8KKyAgICAgIChwb2ludCkpKSAgKi8K
IAogREVGVU4gKCJ3aW5kb3ctZW5kIiwgRndpbmRvd19lbmQsIFN3aW5kb3dfZW5kLCAwLCAyLCAw
LAogICAgICAgIGRvYzogLyogUmV0dXJuIHBvc2l0aW9uIGF0IHdoaWNoIGRpc3BsYXkgY3VycmVu
dGx5IGVuZHMgaW4gV0lORE9XLgpAQCAtMzIyOSw2ICszMjI5LDE2IEBAIElmIFdJTkRPVyBpcyBv
bWl0dGVkIG9yIG5pbCwgaXQgZGVmYXVsdHMgdG8gdGhlIHNlbGVjdGVkIHdpbmRvdy4gICovKQog
ICByZXR1cm4gUW5pbDsKIH0KIAorREVGVU4gKCJmb3JjZS13c2YiLCBGZm9yY2Vfd3NmLCBTZm9y
Y2Vfd3NmLCAwLCAxLCAwLAorICAgICAgIGRvYzogLyogU2V0IHdzZl90b2dnbGUgc28gdGhhdCBy
ZWRpc3BsYXlfd2luZG93IHdpbGwgcnVuIGB3c2YtaG9vaycKKyhhdCB0aGUgYXBwcm9wcmlhdGUg
dGltZSkgZXZlbiBpZiBubyB3aW5kb3cgc2Nyb2xsaW5nIG9jY3Vycy4gICovKQorICAoTGlzcF9P
YmplY3Qgd2luZG93KQoreworICByZWdpc3RlciBzdHJ1Y3Qgd2luZG93ICp3ID0gZGVjb2RlX2xp
dmVfd2luZG93ICh3aW5kb3cpOworICAgIHctPndzZl90b2dnbGUgPSB0cnVlOworICAgIHJldHVy
biB3aW5kb3c7Cit9CisKIC8qIE1ha2UgV0lORE9XIGRpc3BsYXkgQlVGRkVSLiAgUlVOX0hPT0tT
X1AgbWVhbnMgaXQncyBhbGxvd2VkCiAgICB0byBydW4gaG9va3MuICBTZWUgbWFrZV9mcmFtZSBm
b3IgYSBjYXNlIHdoZXJlIGl0J3Mgbm90IGFsbG93ZWQuCiAgICBLRUVQX01BUkdJTlNfUCBtZWFu
cyB0aGF0IHRoZSBjdXJyZW50IG1hcmdpbnMsIGZyaW5nZXMsIGFuZApAQCAtNzQyMyw2ICs3NDMz
LDcgQEAgZGlzcGxheWVkIGFmdGVyIGEgc2Nyb2xsaW5nIG9wZXJhdGlvbiB0byBiZSBzb21ld2hh
dCBpbmFjY3VyYXRlLiAgKi8pOwogICBkZWZzdWJyICgmU3NldF93aW5kb3dfYnVmZmVyKTsKICAg
ZGVmc3ViciAoJlNydW5fd2luZG93X2NvbmZpZ3VyYXRpb25fY2hhbmdlX2hvb2spOwogICBkZWZz
dWJyICgmU3J1bl93aW5kb3dfc2Nyb2xsX2Z1bmN0aW9ucyk7CisgIGRlZnN1YnIgKCZTZm9yY2Vf
d3NmKTsKICAgZGVmc3ViciAoJlNzZWxlY3Rfd2luZG93KTsKICAgZGVmc3ViciAoJlNmb3JjZV93
aW5kb3dfdXBkYXRlKTsKICAgZGVmc3ViciAoJlNzcGxpdF93aW5kb3dfaW50ZXJuYWwpOwpkaWZm
IC0tZ2l0IGEvc3JjL3dpbmRvdy5oIGIvc3JjL3dpbmRvdy5oCmluZGV4IGMyOTIwN2QuLjExYWVh
MTMgMTAwNjQ0Ci0tLSBhL3NyYy93aW5kb3cuaAorKysgYi9zcmMvd2luZG93LmgKQEAgLTM0OCw2
ICszNDgsOSBAQCBzdHJ1Y3Qgd2luZG93CiAgICAgICAgVndpbmRvd19zY3JvbGxfZnVuY3Rpb25z
OyBhbHNvIGJ5IEZyZWNlbnRlciB3aXRoIGFyZ3VtZW50LiAgKi8KICAgICBib29sX2JmIG9wdGlv
bmFsX25ld19zdGFydCA6IDE7CiAKKyAgICAvKiBUcnVlIG1lYW5zIGZvcmNlIGEgY2FsbCB0byBW
d3NmX2hvb2suICAqLworICAgIGJvb2xfYmYgd3NmX3RvZ2dsZSA6IDE7CisKICAgICAvKiBUcnVl
IG1lYW5zIHRoZSBjdXJzb3IgaXMgY3VycmVudGx5IGRpc3BsYXllZC4gIFRoaXMgY2FuIGJlCiAg
ICAgICAgc2V0IHRvIHplcm8gYnkgZnVuY3Rpb25zIG92ZXJwYWludGluZyB0aGUgY3Vyc29yIGlt
YWdlLiAgKi8KICAgICBib29sX2JmIHBoeXNfY3Vyc29yX29uX3AgOiAxOwpkaWZmIC0tZ2l0IGEv
c3JjL3hkaXNwLmMgYi9zcmMveGRpc3AuYwppbmRleCA3OGZkZGQ2Li43OTQzZTI4IDEwMDY0NAot
LS0gYS9zcmMveGRpc3AuYworKysgYi9zcmMveGRpc3AuYwpAQCAtMTM3MDQsNiArMTM3MDQsNyBA
QCByZWRpc3BsYXlfaW50ZXJuYWwgKHZvaWQpCiAgICAgICAmJiBtYXRjaF9wCiAgICAgICAmJiAh
dy0+Zm9yY2Vfc3RhcnQKICAgICAgICYmICF3LT5vcHRpb25hbF9uZXdfc3RhcnQKKyAgICAgICYm
ICF3LT53c2ZfdG9nZ2xlCiAgICAgICAvKiBQb2ludCBtdXN0IGJlIG9uIHRoZSBsaW5lIHRoYXQg
d2UgaGF2ZSBpbmZvIHJlY29yZGVkIGFib3V0LiAgKi8KICAgICAgICYmIFBUID49IENIQVJQT1Mg
KHRsYnVmcG9zKQogICAgICAgJiYgUFQgPD0gWiAtIENIQVJQT1MgKHRsZW5kcG9zKQpAQCAtMTUw
NjIsNiArMTUwNjMsMjcgQEAgcnVuX3dpbmRvd19zY3JvbGxfZnVuY3Rpb25zIChMaXNwX09iamVj
dCB3aW5kb3csIHN0cnVjdCB0ZXh0X3BvcyBzdGFydHApCiAgIHJldHVybiBzdGFydHA7CiB9CiAK
K3N0YXRpYyBzdHJ1Y3QgdGV4dF9wb3MKK3J1bl93c2YgKExpc3BfT2JqZWN0IHdpbmRvdywgc3Ry
dWN0IHRleHRfcG9zIHN0YXJ0cCwgaW50IGVuZHAsCisgICAgICAgICBpbnQgcGJvbF9zdGFydHAs
IGludCBwZW9sX2VuZHApCit7CisgIHN0cnVjdCB3aW5kb3cgKncgPSBYV0lORE9XICh3aW5kb3cp
OworICBTRVRfTUFSS0VSX0ZST01fVEVYVF9QT1MgKHctPnN0YXJ0LCBzdGFydHApOworICBlYXNz
ZXJ0IChjdXJyZW50X2J1ZmZlciA9PSBYQlVGRkVSICh3LT5jb250ZW50cykpOworICBpZiAoIU5J
TFAgKFZ3c2ZfaG9vaykKKyAgICAgICYmIChGbG9jYWxfdmFyaWFibGVfcCAoUXdzZl92YXIsIEZ3
aW5kb3dfYnVmZmVyICh3aW5kb3cpKSkpCisgICAgeworICAgICAgQ0FMTE4gKEZydW5faG9va193
aXRoX2FyZ3MsIFF3c2ZfaG9vaywgd2luZG93LAorICAgICAgICBtYWtlX251bWJlciAoQ0hBUlBP
UyAoc3RhcnRwKSksCisgICAgICAgIG1ha2VfbnVtYmVyIChlbmRwKSwKKyAgICAgICAgbWFrZV9u
dW1iZXIgKHBib2xfc3RhcnRwKSwKKyAgICAgICAgbWFrZV9udW1iZXIgKHBlb2xfZW5kcCkpOwor
ICAgICAgU0VUX1RFWFRfUE9TX0ZST01fTUFSS0VSIChzdGFydHAsIHctPnN0YXJ0KTsKKyAgICAg
IC8qIEluIGNhc2UgdGhlIGhvb2sgZnVuY3Rpb25zIHN3aXRjaCBidWZmZXJzLiAgKi8KKyAgICAg
IHNldF9idWZmZXJfaW50ZXJuYWwgKFhCVUZGRVIgKHctPmNvbnRlbnRzKSk7CisgICAgfQorICBy
ZXR1cm4gc3RhcnRwOworfQogCiAvKiBNYWtlIHN1cmUgdGhlIGxpbmUgY29udGFpbmluZyB0aGUg
Y3Vyc29yIGlzIGZ1bGx5IHZpc2libGUuCiAgICBBIHZhbHVlIG9mIHRydWUgbWVhbnMgdGhlcmUg
aXMgbm90aGluZyB0byBiZSBkb25lLgpAQCAtMTUxNTQsNyArMTUxNzYsNyBAQCB0cnlfc2Nyb2xs
aW5nIChMaXNwX09iamVjdCB3aW5kb3csIGJvb2wganVzdF90aGlzX29uZV9wLAogICBzdHJ1Y3Qg
ZnJhbWUgKmYgPSBYRlJBTUUgKHctPmZyYW1lKTsKICAgc3RydWN0IHRleHRfcG9zIHBvcywgc3Rh
cnRwOwogICBzdHJ1Y3QgaXQgaXQ7Ci0gIGludCB0aGlzX3Njcm9sbF9tYXJnaW4sIHNjcm9sbF9t
YXgsIHJjLCBoZWlnaHQ7CisgIGludCB0aGlzX3Njcm9sbF9tYXJnaW4sIHNjcm9sbF9tYXgsIHJj
LCBoZWlnaHQsIGVuZHAsIHBib2xfc3RhcnRwLCBwZW9sX2VuZHA7CiAgIGludCBkeSA9IDAsIGFt
b3VudF90b19zY3JvbGwgPSAwOwogICBib29sIHNjcm9sbF9kb3duX3AgPSBmYWxzZTsKICAgaW50
IGV4dHJhX3Njcm9sbF9tYXJnaW5fbGluZXMgPSBsYXN0X2xpbmVfbWlzZml0OwpAQCAtMTU0MDMs
NiArMTU0MjUsNDAgQEAgdHJ5X3Njcm9sbGluZyAoTGlzcF9PYmplY3Qgd2luZG93LCBib29sIGp1
c3RfdGhpc19vbmVfcCwKICAgLyogUnVuIHdpbmRvdyBzY3JvbGwgZnVuY3Rpb25zLiAgKi8KICAg
c3RhcnRwID0gcnVuX3dpbmRvd19zY3JvbGxfZnVuY3Rpb25zICh3aW5kb3csIHN0YXJ0cCk7CiAK
KyAgLyogUmVjYWxjdWxhdGUgdGhlIHdpbmRvdyBlbmQgcG9zaXRpb24uICAqLworICBzdHJ1Y3Qg
YnVmZmVyICpiOworICBMaXNwX09iamVjdCBidWY7CisgIGJ1ZiA9IHctPmNvbnRlbnRzOworICBD
SEVDS19CVUZGRVIgKGJ1Zik7CisgIGIgPSBYQlVGRkVSIChidWYpOworICBzdHJ1Y3QgYnVmZmVy
ICpvbGRfYnVmZmVyID0gTlVMTDsKKyAgdm9pZCAqaXRkYXRhID0gTlVMTDsKKyAgICBpZiAoYiAh
PSBjdXJyZW50X2J1ZmZlcikKKyAgICAgIHsKKyAgICAgIG9sZF9idWZmZXIgPSBjdXJyZW50X2J1
ZmZlcjsKKyAgICAgIHNldF9idWZmZXJfaW50ZXJuYWwgKGIpOworICAgICAgfQorICAgIENMSVBf
VEVYVF9QT1NfRlJPTV9NQVJLRVIgKHN0YXJ0cCwgdy0+c3RhcnQpOworICAgIGl0ZGF0YSA9IGJp
ZGlfc2hlbHZlX2NhY2hlICgpOworICAgIHN0YXJ0X2Rpc3BsYXkgKCZpdCwgdywgc3RhcnRwKTsK
KyAgICBtb3ZlX2l0X3ZlcnRpY2FsbHkgKCZpdCwgd2luZG93X2JveF9oZWlnaHQgKHcpKTsKKyAg
ICBpZiAoaXQuY3VycmVudF95IDwgaXQubGFzdF92aXNpYmxlX3kpCisgICAgICBtb3ZlX2l0X3Bh
c3RfZW9sICgmaXQpOworICAgIGVuZHAgPSAoSVRfQ0hBUlBPUyAoaXQpKTsKKyAgICBiaWRpX3Vu
c2hlbHZlX2NhY2hlIChpdGRhdGEsIGZhbHNlKTsKKyAgICBpZiAob2xkX2J1ZmZlcikKKyAgICAg
IHNldF9idWZmZXJfaW50ZXJuYWwgKG9sZF9idWZmZXIpOworICBwdHJkaWZmX3Qgb3JpZ2luYWxf
cG9zID0gUFQ7CisgIFNFVF9QVCAoQ0hBUlBPUyAoc3RhcnRwKSk7CisgIHBib2xfc3RhcnRwID0g
WElOVCAoRmxpbmVfYmVnaW5uaW5nX3Bvc2l0aW9uIChRbmlsKSk7CisgIFNFVF9QVCAoZW5kcCk7
CisgIHBlb2xfZW5kcCA9IFhJTlQgKEZsaW5lX2VuZF9wb3NpdGlvbiAoUW5pbCkpOworICBTRVRf
UFQgKG9yaWdpbmFsX3Bvcyk7CisgIHN0YXJ0cCA9IHJ1bl93c2YgKHdpbmRvdywgc3RhcnRwLCBl
bmRwLCBwYm9sX3N0YXJ0cCwgcGVvbF9lbmRwKTsKKyNpZmRlZiBHTFlQSF9ERUJVRworICBkZWJ1
Z19tZXRob2RfYWRkICh3LCAicnVuX3dzZiBbMSBvZiAzXSIpOworI2VuZGlmCisKICAgLyogRGlz
cGxheSB0aGUgd2luZG93LiAgR2l2ZSB1cCBpZiBuZXcgZm9udHMgYXJlIGxvYWRlZCwgb3IgaWYg
cG9pbnQKICAgICAgZG9lc24ndCBhcHBlYXIuICAqLwogICBpZiAoIXRyeV93aW5kb3cgKHdpbmRv
dywgc3RhcnRwLCAwKSkKQEAgLTE2MDUyLDcgKzE2MTA4LDcgQEAgcmVkaXNwbGF5X3dpbmRvdyAo
TGlzcF9PYmplY3Qgd2luZG93LCBib29sIGp1c3RfdGhpc19vbmVfcCkKICAgc3RydWN0IGJ1ZmZl
ciAqb2xkID0gY3VycmVudF9idWZmZXI7CiAgIHN0cnVjdCB0ZXh0X3BvcyBscG9pbnQsIG9wb2lu
dCwgc3RhcnRwOwogICBib29sIHVwZGF0ZV9tb2RlX2xpbmU7Ci0gIGludCB0ZW07CisgIGludCB0
ZW0sIGVuZHAsIHBib2xfc3RhcnRwLCBwZW9sX2VuZHA7CiAgIHN0cnVjdCBpdCBpdDsKICAgLyog
UmVjb3JkIGl0IG5vdyBiZWNhdXNlIGl0J3Mgb3ZlcndyaXR0ZW4uICAqLwogICBib29sIGN1cnJl
bnRfbWF0cml4X3VwX3RvX2RhdGVfcCA9IGZhbHNlOwpAQCAtMTYyNTcsMTMgKzE2MzEzLDEyIEBA
IHJlZGlzcGxheV93aW5kb3cgKExpc3BfT2JqZWN0IHdpbmRvdywgYm9vbCBqdXN0X3RoaXNfb25l
X3ApCiAKICAgLyogSWYgc29tZW9uZSBzcGVjaWZpZWQgYSBuZXcgc3RhcnRpbmcgcG9pbnQgYnV0
IGRpZCBub3QgaW5zaXN0LAogICAgICBjaGVjayB3aGV0aGVyIGl0IGNhbiBiZSB1c2VkLiAgKi8K
LSAgaWYgKCh3LT5vcHRpb25hbF9uZXdfc3RhcnQgfHwgd2luZG93X2Zyb3plbl9wICh3KSkKKyAg
aWYgKCh3LT5vcHRpb25hbF9uZXdfc3RhcnQgfHwgdy0+d3NmX3RvZ2dsZSB8fCB3aW5kb3dfZnJv
emVuX3AgKHcpKQogICAgICAgJiYgQ0hBUlBPUyAoc3RhcnRwKSA+PSBCRUdWCiAgICAgICAmJiBD
SEFSUE9TIChzdGFydHApIDw9IFpWKQogICAgIHsKICAgICAgIHB0cmRpZmZfdCBpdF9jaGFycG9z
OwogCi0gICAgICB3LT5vcHRpb25hbF9uZXdfc3RhcnQgPSBmYWxzZTsKICAgICAgIHN0YXJ0X2Rp
c3BsYXkgKCZpdCwgdywgc3RhcnRwKTsKICAgICAgIG1vdmVfaXRfdG8gKCZpdCwgUFQsIDAsIGl0
Lmxhc3RfdmlzaWJsZV95LCAtMSwKIAkJICBNT1ZFX1RPX1BPUyB8IE1PVkVfVE9fWCB8IE1PVkVf
VE9fWSk7CkBAIC0xNjI4NCwxNCArMTYzMzksMjggQEAgcmVkaXNwbGF5X3dpbmRvdyAoTGlzcF9P
YmplY3Qgd2luZG93LCBib29sIGp1c3RfdGhpc19vbmVfcCkKIAkgICAgdy0+Zm9yY2Vfc3RhcnQg
PSB0cnVlOwogI2lmZGVmIEdMWVBIX0RFQlVHCiAJICBpZiAody0+Zm9yY2Vfc3RhcnQpCi0JICAg
IHsKLQkgICAgICBpZiAod2luZG93X2Zyb3plbl9wICh3KSkKLQkJZGVidWdfbWV0aG9kX2FkZCAo
dywgInNldCBmb3JjZV9zdGFydCBmcm9tIGZyb3plbiB3aW5kb3cgc3RhcnQiKTsKLQkgICAgICBl
bHNlCi0JCWRlYnVnX21ldGhvZF9hZGQgKHcsICJzZXQgZm9yY2Vfc3RhcnQgZnJvbSBvcHRpb25h
bF9uZXdfc3RhcnQiKTsKLQkgICAgfQorICAgIHsKKyAgICAgIGlmICh3aW5kb3dfZnJvemVuX3Ag
KHcpKQorICAgICAgICB7CisgICAgICAgIGRlYnVnX21ldGhvZF9hZGQgKHcsICJzZXQgZm9yY2Vf
c3RhcnQgZnJvbSBmcm96ZW4gd2luZG93IHN0YXJ0Iik7CisgICAgICB9CisgICAgICBlbHNlIGlm
ICh3LT5vcHRpb25hbF9uZXdfc3RhcnQpCisgICAgICAgIHsKKyAgICAgICAgZGVidWdfbWV0aG9k
X2FkZCAodywgInNldCBmb3JjZV9zdGFydCBmcm9tIG9wdGlvbmFsX25ld19zdGFydCIpOworICAg
ICAgfQorICAgICAgZWxzZSBpZiAody0+d3NmX3RvZ2dsZSkKKyAgICAgICAgeworICAgICAgICBk
ZWJ1Z19tZXRob2RfYWRkICh3LCAic2V0IGZvcmNlX3N0YXJ0IGZyb20gd3NmX3RvZ2dsZSIpOwor
ICAgICAgfQorICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgIGRlYnVnX21ldGhvZF9hZGQg
KHcsICJUaGlzIHNpdHVhdGlvbiBpcyBub3QgeWV0IGNvbnRlbXBsYXRlZC4iKTsKKyAgICAgIH0K
KyAgICB9CiAjZW5kaWYKIAl9CisgICAgICB3LT5vcHRpb25hbF9uZXdfc3RhcnQgPSBmYWxzZTsK
KyAgICAgIHctPndzZl90b2dnbGUgPSBmYWxzZTsKICAgICB9CiAKICBmb3JjZV9zdGFydDoKQEAg
LTE2MzE5LDExICsxNjM4OCw0OCBAQCByZWRpc3BsYXlfd2luZG93IChMaXNwX09iamVjdCB3aW5k
b3csIGJvb2wganVzdF90aGlzX29uZV9wKQogCSB0aGFuIHRvIGdldCBpbnRvIGFuIGluZmluaXRl
IGxvb3AgY2FsbGluZyB0aGUgaG9vayBmdW5jdGlvbnMKIAkgYW5kIGhhdmluZyB0aGVtIGdldCBt
b3JlIGVycm9ycy4gICovCiAgICAgICBpZiAoIXVwZGF0ZV9tb2RlX2xpbmUKLQkgIHx8ICEgTklM
UCAoVndpbmRvd19zY3JvbGxfZnVuY3Rpb25zKSkKKwkgIHx8ICEgTklMUCAoVndpbmRvd19zY3Jv
bGxfZnVuY3Rpb25zKQorCSAgfHwgISBOSUxQIChWd3NmX2hvb2spKQogCXsKIAkgIHVwZGF0ZV9t
b2RlX2xpbmUgPSB0cnVlOwogCSAgdy0+dXBkYXRlX21vZGVfbGluZSA9IHRydWU7CisgIC8qIFJ1
biB3aW5kb3cgc2Nyb2xsIGZ1bmN0aW9ucy4gICovCiAJICBzdGFydHAgPSBydW5fd2luZG93X3Nj
cm9sbF9mdW5jdGlvbnMgKHdpbmRvdywgc3RhcnRwKTsKKworICAvKiBSZWNhbGN1bGF0ZSB0aGUg
d2luZG93IGVuZCBwb3NpdGlvbi4gICovCisgIHN0cnVjdCBidWZmZXIgKmI7CisgIExpc3BfT2Jq
ZWN0IGJ1ZjsKKyAgYnVmID0gdy0+Y29udGVudHM7CisgIENIRUNLX0JVRkZFUiAoYnVmKTsKKyAg
YiA9IFhCVUZGRVIgKGJ1Zik7CisgIHN0cnVjdCBidWZmZXIgKm9sZF9idWZmZXIgPSBOVUxMOwor
ICB2b2lkICppdGRhdGEgPSBOVUxMOworICAgIGlmIChiICE9IGN1cnJlbnRfYnVmZmVyKQorICAg
ICAgeworICAgICAgb2xkX2J1ZmZlciA9IGN1cnJlbnRfYnVmZmVyOworICAgICAgc2V0X2J1ZmZl
cl9pbnRlcm5hbCAoYik7CisgICAgICB9CisgICAgQ0xJUF9URVhUX1BPU19GUk9NX01BUktFUiAo
c3RhcnRwLCB3LT5zdGFydCk7CisgICAgaXRkYXRhID0gYmlkaV9zaGVsdmVfY2FjaGUgKCk7Cisg
ICAgc3RhcnRfZGlzcGxheSAoJml0LCB3LCBzdGFydHApOworICAgIG1vdmVfaXRfdmVydGljYWxs
eSAoJml0LCB3aW5kb3dfYm94X2hlaWdodCAodykpOworICAgIGlmIChpdC5jdXJyZW50X3kgPCBp
dC5sYXN0X3Zpc2libGVfeSkKKyAgICAgIG1vdmVfaXRfcGFzdF9lb2wgKCZpdCk7CisgICAgZW5k
cCA9IChJVF9DSEFSUE9TIChpdCkpOworICAgIGJpZGlfdW5zaGVsdmVfY2FjaGUgKGl0ZGF0YSwg
ZmFsc2UpOworICAgIGlmIChvbGRfYnVmZmVyKQorICAgICAgc2V0X2J1ZmZlcl9pbnRlcm5hbCAo
b2xkX2J1ZmZlcik7CisgIHB0cmRpZmZfdCBvcmlnaW5hbF9wb3MgPSBQVDsKKyAgU0VUX1BUIChD
SEFSUE9TIChzdGFydHApKTsKKyAgcGJvbF9zdGFydHAgPSBYSU5UIChGbGluZV9iZWdpbm5pbmdf
cG9zaXRpb24gKFFuaWwpKTsKKyAgU0VUX1BUIChlbmRwKTsKKyAgcGVvbF9lbmRwID0gWElOVCAo
RmxpbmVfZW5kX3Bvc2l0aW9uIChRbmlsKSk7CisgIFNFVF9QVCAob3JpZ2luYWxfcG9zKTsKKyAg
c3RhcnRwID0gcnVuX3dzZiAod2luZG93LCBzdGFydHAsIGVuZHAsIHBib2xfc3RhcnRwLCBwZW9s
X2VuZHApOworI2lmZGVmIEdMWVBIX0RFQlVHCisgIGRlYnVnX21ldGhvZF9hZGQgKHcsICJydW5f
d3NmIFsyIG9mIDNdIik7CisjZW5kaWYKKwogCX0KIAogICAgICAgaWYgKENIQVJQT1MgKHN0YXJ0
cCkgPCBCRUdWKQpAQCAtMTY1OTEsNiArMTY2OTcsNyBAQCByZWRpc3BsYXlfd2luZG93IChMaXNw
X09iamVjdCB3aW5kb3csIGJvb2wganVzdF90aGlzX29uZV9wKQogCSAgICAgYmVjYXVzZSBhIHdp
bmRvdyBzY3JvbGwgZnVuY3Rpb24gY2FuIGhhdmUgY2hhbmdlZCB0aGUKIAkgICAgIGJ1ZmZlci4g
ICovCiAJICB8fCAhTklMUCAoVndpbmRvd19zY3JvbGxfZnVuY3Rpb25zKQorCSAgfHwgIU5JTFAg
KFZ3c2ZfaG9vaykKIAkgIHx8IE1JTklfV0lORE9XX1AgKHcpCiAJICB8fCAhKHVzZWRfY3VycmVu
dF9tYXRyaXhfcAogCSAgICAgICA9IHRyeV93aW5kb3dfcmV1c2luZ19jdXJyZW50X21hdHJpeCAo
dykpKQpAQCAtMTY3ODgsNiArMTY4OTUsNDAgQEAgcmVkaXNwbGF5X3dpbmRvdyAoTGlzcF9PYmpl
Y3Qgd2luZG93LCBib29sIGp1c3RfdGhpc19vbmVfcCkKICAgLyogUnVuIHNjcm9sbCBob29rcy4g
ICovCiAgIHN0YXJ0cCA9IHJ1bl93aW5kb3dfc2Nyb2xsX2Z1bmN0aW9ucyAod2luZG93LCBpdC5j
dXJyZW50LnBvcyk7CiAKKyAgLyogUmVjYWxjdWxhdGUgdGhlIHdpbmRvdyBlbmQgcG9zaXRpb24u
ICAqLworICBzdHJ1Y3QgYnVmZmVyICpiOworICBMaXNwX09iamVjdCBidWY7CisgIGJ1ZiA9IHct
PmNvbnRlbnRzOworICBDSEVDS19CVUZGRVIgKGJ1Zik7CisgIGIgPSBYQlVGRkVSIChidWYpOwor
ICBzdHJ1Y3QgYnVmZmVyICpvbGRfYnVmZmVyID0gTlVMTDsKKyAgdm9pZCAqaXRkYXRhID0gTlVM
TDsKKyAgICBpZiAoYiAhPSBjdXJyZW50X2J1ZmZlcikKKyAgICAgIHsKKyAgICAgIG9sZF9idWZm
ZXIgPSBjdXJyZW50X2J1ZmZlcjsKKyAgICAgIHNldF9idWZmZXJfaW50ZXJuYWwgKGIpOworICAg
ICAgfQorICAgIENMSVBfVEVYVF9QT1NfRlJPTV9NQVJLRVIgKHN0YXJ0cCwgdy0+c3RhcnQpOwor
ICAgIGl0ZGF0YSA9IGJpZGlfc2hlbHZlX2NhY2hlICgpOworICAgIHN0YXJ0X2Rpc3BsYXkgKCZp
dCwgdywgc3RhcnRwKTsKKyAgICBtb3ZlX2l0X3ZlcnRpY2FsbHkgKCZpdCwgd2luZG93X2JveF9o
ZWlnaHQgKHcpKTsKKyAgICBpZiAoaXQuY3VycmVudF95IDwgaXQubGFzdF92aXNpYmxlX3kpCisg
ICAgICBtb3ZlX2l0X3Bhc3RfZW9sICgmaXQpOworICAgIGVuZHAgPSAoSVRfQ0hBUlBPUyAoaXQp
KTsKKyAgICBiaWRpX3Vuc2hlbHZlX2NhY2hlIChpdGRhdGEsIGZhbHNlKTsKKyAgICBpZiAob2xk
X2J1ZmZlcikKKyAgICAgIHNldF9idWZmZXJfaW50ZXJuYWwgKG9sZF9idWZmZXIpOworICBwdHJk
aWZmX3Qgb3JpZ2luYWxfcG9zID0gUFQ7CisgIFNFVF9QVCAoQ0hBUlBPUyAoc3RhcnRwKSk7Cisg
IHBib2xfc3RhcnRwID0gWElOVCAoRmxpbmVfYmVnaW5uaW5nX3Bvc2l0aW9uIChRbmlsKSk7Cisg
IFNFVF9QVCAoZW5kcCk7CisgIHBlb2xfZW5kcCA9IFhJTlQgKEZsaW5lX2VuZF9wb3NpdGlvbiAo
UW5pbCkpOworICBTRVRfUFQgKG9yaWdpbmFsX3Bvcyk7CisgIHN0YXJ0cCA9IHJ1bl93c2YgKHdp
bmRvdywgc3RhcnRwLCBlbmRwLCBwYm9sX3N0YXJ0cCwgcGVvbF9lbmRwKTsKKyNpZmRlZiBHTFlQ
SF9ERUJVRworICBkZWJ1Z19tZXRob2RfYWRkICh3LCAicnVuX3dzZiBbMyBvZiAzXSIpOworI2Vu
ZGlmCisKICAgLyogUmVkaXNwbGF5IHRoZSB3aW5kb3cuICAqLwogICBib29sIHVzZV9kZXNpcmVk
X21hdHJpeCA9IGZhbHNlOwogICBpZiAoIWN1cnJlbnRfbWF0cml4X3VwX3RvX2RhdGVfcApAQCAt
MTY3OTYsNiArMTY5MzcsNyBAQCByZWRpc3BsYXlfd2luZG93IChMaXNwX09iamVjdCB3aW5kb3cs
IGJvb2wganVzdF90aGlzX29uZV9wKQogICAgICAgLyogRG9uJ3QgdXNlIHRyeV93aW5kb3dfcmV1
c2luZ19jdXJyZW50X21hdHJpeCBpbiB0aGlzIGNhc2UKIAkgYmVjYXVzZSBpdCBjYW4gaGF2ZSBj
aGFuZ2VkIHRoZSBidWZmZXIuICAqLwogICAgICAgfHwgIU5JTFAgKFZ3aW5kb3dfc2Nyb2xsX2Z1
bmN0aW9ucykKKyAgICAgIHx8ICFOSUxQIChWd3NmX2hvb2spCiAgICAgICB8fCAhanVzdF90aGlz
X29uZV9wCiAgICAgICB8fCBNSU5JX1dJTkRPV19QICh3KQogICAgICAgfHwgISh1c2VkX2N1cnJl
bnRfbWF0cml4X3AKQEAgLTIzNjcxLDYgKzIzODEzLDIwIEBAIGRlY29kZV9tb2RlX3NwZWMgKHN0
cnVjdCB3aW5kb3cgKncsIHJlZ2lzdGVyIGludCBjLCBpbnQgZmllbGRfd2lkdGgsCiAJICByZXR1
cm4gIkAiOwogICAgICAgfQogCisgICAgY2FzZSAndyc6CisgICAgICB7CisgIHB0cmRpZmZfdCB3
aW5kb3dfc3RhcnQgPSBtYXJrZXJfcG9zaXRpb24gKHctPnN0YXJ0KTsKKyAgcGludDJzdHIgKGRl
Y29kZV9tb2RlX3NwZWNfYnVmLCB3aWR0aCwgd2luZG93X3N0YXJ0KTsKKyAgcmV0dXJuIGRlY29k
ZV9tb2RlX3NwZWNfYnVmOworICAgICAgfQorCisgICAgY2FzZSAnVyc6CisgICAgICB7CisgIHB0
cmRpZmZfdCB3aW5kb3dfZW5kID0gQlVGX1ogKGIpIC0gdy0+d2luZG93X2VuZF9wb3M7CisgIHBp
bnQyc3RyIChkZWNvZGVfbW9kZV9zcGVjX2J1Ziwgd2lkdGgsIHdpbmRvd19lbmQpOworICByZXR1
cm4gZGVjb2RlX21vZGVfc3BlY19idWY7CisgICAgICB9CisKICAgICBjYXNlICd6JzoKICAgICAg
IC8qIGNvZGluZy1zeXN0ZW0gKG5vdCBpbmNsdWRpbmcgZW5kLW9mLWxpbmUgZm9ybWF0KSAqLwog
ICAgIGNhc2UgJ1onOgpAQCAtMzExMzYsNiArMzEyOTIsNyBAQCBUaGV5IGFyZSBzdGlsbCBsb2dn
ZWQgdG8gdGhlICpNZXNzYWdlcyogYnVmZmVyLiAgKi8pOwogICBERUZTWU0gKFFvdmVycmlkaW5n
X3Rlcm1pbmFsX2xvY2FsX21hcCwgIm92ZXJyaWRpbmctdGVybWluYWwtbG9jYWwtbWFwIik7CiAg
IERFRlNZTSAoUW92ZXJyaWRpbmdfbG9jYWxfbWFwLCAib3ZlcnJpZGluZy1sb2NhbC1tYXAiKTsK
ICAgREVGU1lNIChRd2luZG93X3Njcm9sbF9mdW5jdGlvbnMsICJ3aW5kb3ctc2Nyb2xsLWZ1bmN0
aW9ucyIpOworICBERUZTWU0gKFF3c2ZfaG9vaywgIndzZi1ob29rIik7CiAgIERFRlNZTSAoUXdp
bmRvd190ZXh0X2NoYW5nZV9mdW5jdGlvbnMsICJ3aW5kb3ctdGV4dC1jaGFuZ2UtZnVuY3Rpb25z
Iik7CiAgIERFRlNZTSAoUXJlZGlzcGxheV9lbmRfdHJpZ2dlcl9mdW5jdGlvbnMsICJyZWRpc3Bs
YXktZW5kLXRyaWdnZXItZnVuY3Rpb25zIik7CiAgIERFRlNZTSAoUWluaGliaXRfcG9pbnRfbW90
aW9uX2hvb2tzLCAiaW5oaWJpdC1wb2ludC1tb3Rpb24taG9va3MiKTsKQEAgLTMxNDU3LDYgKzMx
NjE0LDE2IEBAIGlzIHNjcm9sbGVkLiAgSXQgaXMgbm90IGRlc2lnbmVkIGZvciB0aGF0LCBhbmQg
c3VjaCB1c2UgcHJvYmFibHkgd29uJ3QKIHdvcmsuICAqLyk7CiAgIFZ3aW5kb3dfc2Nyb2xsX2Z1
bmN0aW9ucyA9IFFuaWw7CiAKKyAgREVGVkFSX0xJU1AgKCJ3c2YtaG9vayIsIFZ3c2ZfaG9vaywK
KyAgICBkb2M6IC8qIFVzZWQgdG8gb2J0YWluIHRoZSBuZXcgYHdpbmRvdy1zdGFydCcgZHVyaW5n
IHJlZGlzcGxheS4gICovKTsKKyAgVndzZl9ob29rID0gUW5pbDsKKworICBERUZWQVJfTElTUCAo
IndzZi12YXIiLCBWd3NmX3ZhciwKKyAgICBkb2M6IC8qIGB3c2YtaG9va2AgY2hlY2tzIHRvIHNl
ZSBpZiBgd3NmLXZhcmAgaXMgc2V0IGxvY2FsbHkuICAqLyk7CisgIFZ3c2ZfdmFyID0gUW5pbDsK
KyAgRm1ha2VfdmFyaWFibGVfYnVmZmVyX2xvY2FsIChRd3NmX3Zhcik7CisgIERFRlNZTSAoUXdz
Zl92YXIsICJ3c2YtdmFyIik7CisKICAgREVGVkFSX0xJU1AgKCJ3aW5kb3ctdGV4dC1jaGFuZ2Ut
ZnVuY3Rpb25zIiwKIAkgICAgICAgVndpbmRvd190ZXh0X2NoYW5nZV9mdW5jdGlvbnMsCiAgICAg
ZG9jOiAvKiBGdW5jdGlvbnMgdG8gY2FsbCBpbiByZWRpc3BsYXkgd2hlbiB0ZXh0IGluIHRoZSB3
aW5kb3cgbWlnaHQgY2hhbmdlLiAgKi8pOwo=

--Multipart_Sun_Jan_31_19:50:03_2016-1--




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

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


Received: (at 22404) by debbugs.gnu.org; 29 Jan 2016 15:54:18 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 29 10:54:18 2016
Received: from localhost ([127.0.0.1]:40736 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aPBNK-0001nI-2L
	for submit <at> debbugs.gnu.org; Fri, 29 Jan 2016 10:54:18 -0500
Received: from cobb.liquidweb.com ([50.28.13.150]:45649)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <esq@HIDDEN>) id 1aPBNI-0001n6-H8
 for 22404 <at> debbugs.gnu.org; Fri, 29 Jan 2016 10:54:17 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lawlist.com;
 s=default; 
 h=Content-Type:MIME-Version:Subject:Cc:To:From:Message-ID:Date;
 bh=ehfdvhWq4g/1Vpood9NQyItt5pXUBRX/U+YUSUHQizs=; 
 b=hlx394nZM8vr/DRuSVQ1CU5YkVTTEmAwYlxKsAW7TpCL9EokqFbIRESor8IhBlgCRHCIg/siivK3Y9KO1lz4MsdO4tD8vBAW5xWVNfR6jSlgnFc3pVD40f13tMw2ad87;
Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:49569
 helo=server.private.localhost)
 by cobb.liquidweb.com with esmtp (Exim 4.82)
 (envelope-from <esq@HIDDEN>)
 id 1aPBN8-0000SQ-2d; Fri, 29 Jan 2016 10:54:06 -0500
Date: Fri, 29 Jan 2016 07:54:08 -0800
Message-ID: <m2d1skv0tb.wl%esq@HIDDEN>
From: Keith David Bershatsky <esq@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>,Michael Heerdegen <eliz@HIDDEN>
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
MIME-Version: 1.0 (generated by   - "")
Content-Type: multipart/mixed; boundary="Multipart_Fri_Jan_29_07:54:07_2016-1"
X-AntiAbuse: This header was added to track abuse,
 please include it with any abuse report
X-AntiAbuse: Primary Hostname - cobb.liquidweb.com
X-AntiAbuse: Original Domain - debbugs.gnu.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - lawlist.com
X-Get-Message-Sender-Via: cobb.liquidweb.com: acl_c_relayhosts_text_entry:
 lawlist|lawlist.com
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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: -0.7 (/)

--Multipart_Fri_Jan_29_07:54:07_2016-1
Content-Type: text/plain; charset=US-ASCII

In reading the comments in `xdisp.c`, there is a lot of mention about checking to see if the function that ran changed `window-start` and whether the cursor is still visible.  In my own tests over the past few days, I created something just like `post-redisplay-hook` that runs towards the end of redisplay.  I felt that my own feeble attempt to create the equivalent of the `post-redisplay-hook` had no checking built-in (due to lack knowledge / experience on my part).

So, I love the idea of a `post-redisplay-hook`, but think there probably needs to be some type of check to see whether the function that ran from it did some things that require certain recalculations -- e.g., maybe cursor was moved and is no longer partially or fully visible (there is even a setting I discovered where a user can decide that a partially visible cursor is just fine), maybe some text was inserted prior to window-start (which means the prior value is outdated), etc.

Sorry that I didn't understand your previous comments about the `pre-command-hook` potentially being a substitute for the contemplated `post-redisplay-hook`.  Michael is correct -- the goal is generally to have the screen looking perfectly once redisplay concludes and the `pre-command-hook` (after the fact) can't accomplish that goal.  When switching windows, the `pre-command-hook` will also have the wrong window in mind -- the correct window/buffer needs to be determined after the main command finishes.

Attached is an example of what I have been using for the past few days while I continue my ongoing tinkering -- it creates a new animal just like `window-scroll-functions` but with a different name.

Keith

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

At Fri, 29 Jan 2016 16:37:16 +0200,
Eli Zaretskii wrote:
> 
> > From: Michael Heerdegen <michael_heerdegen@HIDDEN>
> > Cc: Keith David Bershatsky <esq@HIDDEN>,  22404 <at> debbugs.gnu.org
> > Date: Fri, 29 Jan 2016 13:00:42 +0100
> > 
> > Anyway, using pre-command-hook is too late for us: it's not executed
> > unless the next input arrives, so you have to hit a key until
> > decorations or whatever get updated.
> 
> Then maybe we need a post-redisplay-hook.


--Multipart_Fri_Jan_29_07:54:07_2016-1
Content-Type: application/diff; type=patch
Content-Disposition: attachment; filename="wsf.diff"
Content-Transfer-Encoding: base64

ZGlmZiAtLWdpdCBhL3NyYy93aW5kb3cuYyBiL3NyYy93aW5kb3cuYwppbmRleCA0YWViOGIzLi44
ZmRjOWY5IDEwMDY0NAotLS0gYS9zcmMvd2luZG93LmMKKysrIGIvc3JjL3dpbmRvdy5jCkBAIC0z
MjI4LDYgKzMyMjgsMTYgQEAgSWYgV0lORE9XIGlzIG9taXR0ZWQgb3IgbmlsLCBpdCBkZWZhdWx0
cyB0byB0aGUgc2VsZWN0ZWQgd2luZG93LiAgKi8pCiAgIHJldHVybiBRbmlsOwogfQogCitERUZV
TiAoImZvcmNlLXdzZiIsIEZmb3JjZV93c2YsIFNmb3JjZV93c2YsIDAsIDEsIDAsCisgICAgICAg
ZG9jOiAvKiBTZXQgd3NmX3RvZ2dsZSBzbyB0aGF0IHJlZGlzcGxheV93aW5kb3cgd2lsbCBydW4g
YHdzZi1ob29rJworKGF0IHRoZSBhcHByb3ByaWF0ZSB0aW1lKSBldmVuIGlmIG5vIHdpbmRvdyBz
Y3JvbGxpbmcgb2NjdXJzLiAgKi8pCisgIChMaXNwX09iamVjdCB3aW5kb3cpCit7CisgIHJlZ2lz
dGVyIHN0cnVjdCB3aW5kb3cgKncgPSBkZWNvZGVfbGl2ZV93aW5kb3cgKHdpbmRvdyk7CisgICAg
dy0+d3NmX3RvZ2dsZSA9IHRydWU7CisgICAgcmV0dXJuIHdpbmRvdzsKK30KKwogLyogTWFrZSBX
SU5ET1cgZGlzcGxheSBCVUZGRVIuICBSVU5fSE9PS1NfUCBtZWFucyBpdCdzIGFsbG93ZWQKICAg
IHRvIHJ1biBob29rcy4gIFNlZSBtYWtlX2ZyYW1lIGZvciBhIGNhc2Ugd2hlcmUgaXQncyBub3Qg
YWxsb3dlZC4KICAgIEtFRVBfTUFSR0lOU19QIG1lYW5zIHRoYXQgdGhlIGN1cnJlbnQgbWFyZ2lu
cywgZnJpbmdlcywgYW5kCkBAIC03NDIxLDYgKzc0MzEsNyBAQCBkaXNwbGF5ZWQgYWZ0ZXIgYSBz
Y3JvbGxpbmcgb3BlcmF0aW9uIHRvIGJlIHNvbWV3aGF0IGluYWNjdXJhdGUuICAqLyk7CiAgIGRl
ZnN1YnIgKCZTc2V0X3dpbmRvd19idWZmZXIpOwogICBkZWZzdWJyICgmU3J1bl93aW5kb3dfY29u
ZmlndXJhdGlvbl9jaGFuZ2VfaG9vayk7CiAgIGRlZnN1YnIgKCZTcnVuX3dpbmRvd19zY3JvbGxf
ZnVuY3Rpb25zKTsKKyAgZGVmc3ViciAoJlNmb3JjZV93c2YpOwogICBkZWZzdWJyICgmU3NlbGVj
dF93aW5kb3cpOwogICBkZWZzdWJyICgmU2ZvcmNlX3dpbmRvd191cGRhdGUpOwogICBkZWZzdWJy
ICgmU3NwbGl0X3dpbmRvd19pbnRlcm5hbCk7CmRpZmYgLS1naXQgYS9zcmMvd2luZG93LmggYi9z
cmMvd2luZG93LmgKaW5kZXggYzI5MjA3ZC4uMTFhZWExMyAxMDA2NDQKLS0tIGEvc3JjL3dpbmRv
dy5oCisrKyBiL3NyYy93aW5kb3cuaApAQCAtMzQ4LDYgKzM0OCw5IEBAIHN0cnVjdCB3aW5kb3cK
ICAgICAgICBWd2luZG93X3Njcm9sbF9mdW5jdGlvbnM7IGFsc28gYnkgRnJlY2VudGVyIHdpdGgg
YXJndW1lbnQuICAqLwogICAgIGJvb2xfYmYgb3B0aW9uYWxfbmV3X3N0YXJ0IDogMTsKIAorICAg
IC8qIFRydWUgbWVhbnMgZm9yY2UgYSBjYWxsIHRvIFZ3c2ZfaG9vay4gICovCisgICAgYm9vbF9i
ZiB3c2ZfdG9nZ2xlIDogMTsKKwogICAgIC8qIFRydWUgbWVhbnMgdGhlIGN1cnNvciBpcyBjdXJy
ZW50bHkgZGlzcGxheWVkLiAgVGhpcyBjYW4gYmUKICAgICAgICBzZXQgdG8gemVybyBieSBmdW5j
dGlvbnMgb3ZlcnBhaW50aW5nIHRoZSBjdXJzb3IgaW1hZ2UuICAqLwogICAgIGJvb2xfYmYgcGh5
c19jdXJzb3Jfb25fcCA6IDE7CmRpZmYgLS1naXQgYS9zcmMveGRpc3AuYyBiL3NyYy94ZGlzcC5j
CmluZGV4IGQ3MzBhMGIuLjQxNmY2MzIgMTAwNjQ0Ci0tLSBhL3NyYy94ZGlzcC5jCisrKyBiL3Ny
Yy94ZGlzcC5jCkBAIC0xMzY3Miw2ICsxMzY3Miw3IEBAIHJlZGlzcGxheV9pbnRlcm5hbCAodm9p
ZCkKICAgICAgICYmIG1hdGNoX3AKICAgICAgICYmICF3LT5mb3JjZV9zdGFydAogICAgICAgJiYg
IXctPm9wdGlvbmFsX25ld19zdGFydAorICAgICAgJiYgIXctPndzZl90b2dnbGUKICAgICAgIC8q
IFBvaW50IG11c3QgYmUgb24gdGhlIGxpbmUgdGhhdCB3ZSBoYXZlIGluZm8gcmVjb3JkZWQgYWJv
dXQuICAqLwogICAgICAgJiYgUFQgPj0gQ0hBUlBPUyAodGxidWZwb3MpCiAgICAgICAmJiBQVCA8
PSBaIC0gQ0hBUlBPUyAodGxlbmRwb3MpCkBAIC0xNTAzMCw2ICsxNTAzMSwyMiBAQCBydW5fd2lu
ZG93X3Njcm9sbF9mdW5jdGlvbnMgKExpc3BfT2JqZWN0IHdpbmRvdywgc3RydWN0IHRleHRfcG9z
IHN0YXJ0cCkKICAgcmV0dXJuIHN0YXJ0cDsKIH0KIAorc3RhdGljIHN0cnVjdCB0ZXh0X3Bvcwor
cnVuX3dzZiAoTGlzcF9PYmplY3Qgd2luZG93LCBzdHJ1Y3QgdGV4dF9wb3Mgc3RhcnRwLCBzdHJ1
Y3QgdGV4dF9wb3MgZW5kcCkKK3sKKyAgc3RydWN0IHdpbmRvdyAqdyA9IFhXSU5ET1cgKHdpbmRv
dyk7CisgIFNFVF9NQVJLRVJfRlJPTV9URVhUX1BPUyAody0+c3RhcnQsIHN0YXJ0cCk7CisgIGVh
c3NlcnQgKGN1cnJlbnRfYnVmZmVyID09IFhCVUZGRVIgKHctPmNvbnRlbnRzKSk7CisgIGlmICgh
TklMUCAoVndzZl9ob29rKQorICAgICAgJiYgKEZsb2NhbF92YXJpYWJsZV9wIChRd3NmX3Zhciwg
RndpbmRvd19idWZmZXIgKHdpbmRvdykpKSkKKyAgICB7CisgICAgICBDQUxMTiAoRnJ1bl9ob29r
X3dpdGhfYXJncywgUXdzZl9ob29rLCB3aW5kb3csIG1ha2VfbnVtYmVyIChDSEFSUE9TIChzdGFy
dHApKSwgbWFrZV9udW1iZXIgKENIQVJQT1MgKGVuZHApKSk7CisgICAgICBTRVRfVEVYVF9QT1Nf
RlJPTV9NQVJLRVIgKHN0YXJ0cCwgdy0+c3RhcnQpOworICAgICAgLyogSW4gY2FzZSB0aGUgaG9v
ayBmdW5jdGlvbnMgc3dpdGNoIGJ1ZmZlcnMuICAqLworICAgICAgc2V0X2J1ZmZlcl9pbnRlcm5h
bCAoWEJVRkZFUiAody0+Y29udGVudHMpKTsKKyAgICB9CisgIHJldHVybiBzdGFydHA7Cit9CiAK
IC8qIE1ha2Ugc3VyZSB0aGUgbGluZSBjb250YWluaW5nIHRoZSBjdXJzb3IgaXMgZnVsbHkgdmlz
aWJsZS4KICAgIEEgdmFsdWUgb2YgdHJ1ZSBtZWFucyB0aGVyZSBpcyBub3RoaW5nIHRvIGJlIGRv
bmUuCkBAIC0xNTM3MSw2ICsxNTM4OCwxMSBAQCB0cnlfc2Nyb2xsaW5nIChMaXNwX09iamVjdCB3
aW5kb3csIGJvb2wganVzdF90aGlzX29uZV9wLAogICAvKiBSdW4gd2luZG93IHNjcm9sbCBmdW5j
dGlvbnMuICAqLwogICBzdGFydHAgPSBydW5fd2luZG93X3Njcm9sbF9mdW5jdGlvbnMgKHdpbmRv
dywgc3RhcnRwKTsKIAorICBzdGFydHAgPSBydW5fd3NmICh3aW5kb3csIHN0YXJ0cCwgc3RhcnRw
KTsKKyNpZmRlZiBHTFlQSF9ERUJVRworICBkZWJ1Z19tZXRob2RfYWRkICh3LCAicnVuX3dzZiBb
MSBvZiAzXSB3YXMgZXhlY3V0ZWQiKTsKKyNlbmRpZgorCiAgIC8qIERpc3BsYXkgdGhlIHdpbmRv
dy4gIEdpdmUgdXAgaWYgbmV3IGZvbnRzIGFyZSBsb2FkZWQsIG9yIGlmIHBvaW50CiAgICAgIGRv
ZXNuJ3QgYXBwZWFyLiAgKi8KICAgaWYgKCF0cnlfd2luZG93ICh3aW5kb3csIHN0YXJ0cCwgMCkp
CkBAIC0xNjIyNSwxMyArMTYyNDcsMTIgQEAgcmVkaXNwbGF5X3dpbmRvdyAoTGlzcF9PYmplY3Qg
d2luZG93LCBib29sIGp1c3RfdGhpc19vbmVfcCkKIAogICAvKiBJZiBzb21lb25lIHNwZWNpZmll
ZCBhIG5ldyBzdGFydGluZyBwb2ludCBidXQgZGlkIG5vdCBpbnNpc3QsCiAgICAgIGNoZWNrIHdo
ZXRoZXIgaXQgY2FuIGJlIHVzZWQuICAqLwotICBpZiAoKHctPm9wdGlvbmFsX25ld19zdGFydCB8
fCB3aW5kb3dfZnJvemVuX3AgKHcpKQorICBpZiAoKHctPm9wdGlvbmFsX25ld19zdGFydCB8fCB3
LT53c2ZfdG9nZ2xlIHx8IHdpbmRvd19mcm96ZW5fcCAodykpCiAgICAgICAmJiBDSEFSUE9TIChz
dGFydHApID49IEJFR1YKICAgICAgICYmIENIQVJQT1MgKHN0YXJ0cCkgPD0gWlYpCiAgICAgewog
ICAgICAgcHRyZGlmZl90IGl0X2NoYXJwb3M7CiAKLSAgICAgIHctPm9wdGlvbmFsX25ld19zdGFy
dCA9IGZhbHNlOwogICAgICAgc3RhcnRfZGlzcGxheSAoJml0LCB3LCBzdGFydHApOwogICAgICAg
bW92ZV9pdF90byAoJml0LCBQVCwgMCwgaXQubGFzdF92aXNpYmxlX3ksIC0xLAogCQkgIE1PVkVf
VE9fUE9TIHwgTU9WRV9UT19YIHwgTU9WRV9UT19ZKTsKQEAgLTE2MjUyLDE0ICsxNjI3MywyOCBA
QCByZWRpc3BsYXlfd2luZG93IChMaXNwX09iamVjdCB3aW5kb3csIGJvb2wganVzdF90aGlzX29u
ZV9wKQogCSAgICB3LT5mb3JjZV9zdGFydCA9IHRydWU7CiAjaWZkZWYgR0xZUEhfREVCVUcKIAkg
IGlmICh3LT5mb3JjZV9zdGFydCkKLQkgICAgewotCSAgICAgIGlmICh3aW5kb3dfZnJvemVuX3Ag
KHcpKQotCQlkZWJ1Z19tZXRob2RfYWRkICh3LCAic2V0IGZvcmNlX3N0YXJ0IGZyb20gZnJvemVu
IHdpbmRvdyBzdGFydCIpOwotCSAgICAgIGVsc2UKLQkJZGVidWdfbWV0aG9kX2FkZCAodywgInNl
dCBmb3JjZV9zdGFydCBmcm9tIG9wdGlvbmFsX25ld19zdGFydCIpOwotCSAgICB9CisgICAgewor
ICAgICAgaWYgKHdpbmRvd19mcm96ZW5fcCAodykpCisgICAgICAgIHsKKyAgICAgICAgZGVidWdf
bWV0aG9kX2FkZCAodywgInNldCBmb3JjZV9zdGFydCBmcm9tIGZyb3plbiB3aW5kb3cgc3RhcnQi
KTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKHctPm9wdGlvbmFsX25ld19zdGFydCkKKyAgICAg
ICAgeworICAgICAgICBkZWJ1Z19tZXRob2RfYWRkICh3LCAic2V0IGZvcmNlX3N0YXJ0IGZyb20g
b3B0aW9uYWxfbmV3X3N0YXJ0Iik7CisgICAgICB9CisgICAgICBlbHNlIGlmICh3LT53c2ZfdG9n
Z2xlKQorICAgICAgICB7CisgICAgICAgIGRlYnVnX21ldGhvZF9hZGQgKHcsICJzZXQgZm9yY2Vf
c3RhcnQgZnJvbSB3c2ZfdG9nZ2xlIik7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIHsK
KyAgICAgICAgZGVidWdfbWV0aG9kX2FkZCAodywgIlRoaXMgc2l0dWF0aW9uIGlzIG5vdCB5ZXQg
Y29udGVtcGxhdGVkLiIpOworICAgICAgfQorICAgIH0KICNlbmRpZgogCX0KKyAgICAgIHctPm9w
dGlvbmFsX25ld19zdGFydCA9IGZhbHNlOworICAgICAgdy0+d3NmX3RvZ2dsZSA9IGZhbHNlOwog
ICAgIH0KIAogIGZvcmNlX3N0YXJ0OgpAQCAtMTYyODcsMTEgKzE2MzIyLDE5IEBAIHJlZGlzcGxh
eV93aW5kb3cgKExpc3BfT2JqZWN0IHdpbmRvdywgYm9vbCBqdXN0X3RoaXNfb25lX3ApCiAJIHRo
YW4gdG8gZ2V0IGludG8gYW4gaW5maW5pdGUgbG9vcCBjYWxsaW5nIHRoZSBob29rIGZ1bmN0aW9u
cwogCSBhbmQgaGF2aW5nIHRoZW0gZ2V0IG1vcmUgZXJyb3JzLiAgKi8KICAgICAgIGlmICghdXBk
YXRlX21vZGVfbGluZQotCSAgfHwgISBOSUxQIChWd2luZG93X3Njcm9sbF9mdW5jdGlvbnMpKQor
CSAgfHwgISBOSUxQIChWd2luZG93X3Njcm9sbF9mdW5jdGlvbnMpCisJICB8fCAhIE5JTFAgKFZ3
c2ZfaG9vaykpCiAJewogCSAgdXBkYXRlX21vZGVfbGluZSA9IHRydWU7CiAJICB3LT51cGRhdGVf
bW9kZV9saW5lID0gdHJ1ZTsKKyAgLyogUnVuIHdpbmRvdyBzY3JvbGwgZnVuY3Rpb25zLiAgKi8K
IAkgIHN0YXJ0cCA9IHJ1bl93aW5kb3dfc2Nyb2xsX2Z1bmN0aW9ucyAod2luZG93LCBzdGFydHAp
OworCisgIHN0YXJ0cCA9IHJ1bl93c2YgKHdpbmRvdywgc3RhcnRwLCBzdGFydHApOworI2lmZGVm
IEdMWVBIX0RFQlVHCisgIGRlYnVnX21ldGhvZF9hZGQgKHcsICJydW5fd3NmIFsyIG9mIDNdIHdh
cyBleGVjdXRlZCIpOworI2VuZGlmCisKIAl9CiAKICAgICAgIGlmIChDSEFSUE9TIChzdGFydHAp
IDwgQkVHVikKQEAgLTE2NTU5LDYgKzE2NjAyLDcgQEAgcmVkaXNwbGF5X3dpbmRvdyAoTGlzcF9P
YmplY3Qgd2luZG93LCBib29sIGp1c3RfdGhpc19vbmVfcCkKIAkgICAgIGJlY2F1c2UgYSB3aW5k
b3cgc2Nyb2xsIGZ1bmN0aW9uIGNhbiBoYXZlIGNoYW5nZWQgdGhlCiAJICAgICBidWZmZXIuICAq
LwogCSAgfHwgIU5JTFAgKFZ3aW5kb3dfc2Nyb2xsX2Z1bmN0aW9ucykKKwkgIHx8ICFOSUxQIChW
d3NmX2hvb2spCiAJICB8fCBNSU5JX1dJTkRPV19QICh3KQogCSAgfHwgISh1c2VkX2N1cnJlbnRf
bWF0cml4X3AKIAkgICAgICAgPSB0cnlfd2luZG93X3JldXNpbmdfY3VycmVudF9tYXRyaXggKHcp
KSkKQEAgLTE2NzU2LDYgKzE2ODAwLDExIEBAIHJlZGlzcGxheV93aW5kb3cgKExpc3BfT2JqZWN0
IHdpbmRvdywgYm9vbCBqdXN0X3RoaXNfb25lX3ApCiAgIC8qIFJ1biBzY3JvbGwgaG9va3MuICAq
LwogICBzdGFydHAgPSBydW5fd2luZG93X3Njcm9sbF9mdW5jdGlvbnMgKHdpbmRvdywgaXQuY3Vy
cmVudC5wb3MpOwogCisgIHN0YXJ0cCA9IHJ1bl93c2YgKHdpbmRvdywgaXQuY3VycmVudC5wb3Ms
IGl0LmN1cnJlbnQucG9zKTsKKyNpZmRlZiBHTFlQSF9ERUJVRworICBkZWJ1Z19tZXRob2RfYWRk
ICh3LCAicnVuX3dzZiBbMyBvZiAzXSBleGVjdXRlZCIpOworI2VuZGlmCisKICAgLyogUmVkaXNw
bGF5IHRoZSB3aW5kb3cuICAqLwogICBib29sIHVzZV9kZXNpcmVkX21hdHJpeCA9IGZhbHNlOwog
ICBpZiAoIWN1cnJlbnRfbWF0cml4X3VwX3RvX2RhdGVfcApAQCAtMTY3NjQsNiArMTY4MTMsNyBA
QCByZWRpc3BsYXlfd2luZG93IChMaXNwX09iamVjdCB3aW5kb3csIGJvb2wganVzdF90aGlzX29u
ZV9wKQogICAgICAgLyogRG9uJ3QgdXNlIHRyeV93aW5kb3dfcmV1c2luZ19jdXJyZW50X21hdHJp
eCBpbiB0aGlzIGNhc2UKIAkgYmVjYXVzZSBpdCBjYW4gaGF2ZSBjaGFuZ2VkIHRoZSBidWZmZXIu
ICAqLwogICAgICAgfHwgIU5JTFAgKFZ3aW5kb3dfc2Nyb2xsX2Z1bmN0aW9ucykKKyAgICAgIHx8
ICFOSUxQIChWd3NmX2hvb2spCiAgICAgICB8fCAhanVzdF90aGlzX29uZV9wCiAgICAgICB8fCBN
SU5JX1dJTkRPV19QICh3KQogICAgICAgfHwgISh1c2VkX2N1cnJlbnRfbWF0cml4X3AKQEAgLTIz
NjE2LDYgKzIzNjY2LDIwIEBAIGRlY29kZV9tb2RlX3NwZWMgKHN0cnVjdCB3aW5kb3cgKncsIHJl
Z2lzdGVyIGludCBjLCBpbnQgZmllbGRfd2lkdGgsCiAJICByZXR1cm4gIkAiOwogICAgICAgfQog
CisgICAgY2FzZSAndyc6CisgICAgICB7CisgIHB0cmRpZmZfdCB3aW5kb3dfc3RhcnQgPSBtYXJr
ZXJfcG9zaXRpb24gKHctPnN0YXJ0KTsKKyAgcGludDJzdHIgKGRlY29kZV9tb2RlX3NwZWNfYnVm
LCB3aWR0aCwgd2luZG93X3N0YXJ0KTsKKyAgcmV0dXJuIGRlY29kZV9tb2RlX3NwZWNfYnVmOwor
ICAgICAgfQorCisgICAgY2FzZSAnVyc6CisgICAgICB7CisgIHB0cmRpZmZfdCB3aW5kb3dfZW5k
ID0gQlVGX1ogKGIpIC0gdy0+d2luZG93X2VuZF9wb3M7CisgIHBpbnQyc3RyIChkZWNvZGVfbW9k
ZV9zcGVjX2J1Ziwgd2lkdGgsIHdpbmRvd19lbmQpOworICByZXR1cm4gZGVjb2RlX21vZGVfc3Bl
Y19idWY7CisgICAgICB9CisKICAgICBjYXNlICd6JzoKICAgICAgIC8qIGNvZGluZy1zeXN0ZW0g
KG5vdCBpbmNsdWRpbmcgZW5kLW9mLWxpbmUgZm9ybWF0KSAqLwogICAgIGNhc2UgJ1onOgpAQCAt
MzA5MjgsNiArMzA5OTIsNyBAQCBUaGV5IGFyZSBzdGlsbCBsb2dnZWQgdG8gdGhlICpNZXNzYWdl
cyogYnVmZmVyLiAgKi8pOwogICBERUZTWU0gKFFvdmVycmlkaW5nX3Rlcm1pbmFsX2xvY2FsX21h
cCwgIm92ZXJyaWRpbmctdGVybWluYWwtbG9jYWwtbWFwIik7CiAgIERFRlNZTSAoUW92ZXJyaWRp
bmdfbG9jYWxfbWFwLCAib3ZlcnJpZGluZy1sb2NhbC1tYXAiKTsKICAgREVGU1lNIChRd2luZG93
X3Njcm9sbF9mdW5jdGlvbnMsICJ3aW5kb3ctc2Nyb2xsLWZ1bmN0aW9ucyIpOworICBERUZTWU0g
KFF3c2ZfaG9vaywgIndzZi1ob29rIik7CiAgIERFRlNZTSAoUXdpbmRvd190ZXh0X2NoYW5nZV9m
dW5jdGlvbnMsICJ3aW5kb3ctdGV4dC1jaGFuZ2UtZnVuY3Rpb25zIik7CiAgIERFRlNZTSAoUXJl
ZGlzcGxheV9lbmRfdHJpZ2dlcl9mdW5jdGlvbnMsICJyZWRpc3BsYXktZW5kLXRyaWdnZXItZnVu
Y3Rpb25zIik7CiAgIERFRlNZTSAoUWluaGliaXRfcG9pbnRfbW90aW9uX2hvb2tzLCAiaW5oaWJp
dC1wb2ludC1tb3Rpb24taG9va3MiKTsKQEAgLTMxMjQ5LDYgKzMxMzE0LDE2IEBAIGlzIHNjcm9s
bGVkLiAgSXQgaXMgbm90IGRlc2lnbmVkIGZvciB0aGF0LCBhbmQgc3VjaCB1c2UgcHJvYmFibHkg
d29uJ3QKIHdvcmsuICAqLyk7CiAgIFZ3aW5kb3dfc2Nyb2xsX2Z1bmN0aW9ucyA9IFFuaWw7CiAK
KyAgREVGVkFSX0xJU1AgKCJ3c2YtaG9vayIsIFZ3c2ZfaG9vaywKKyAgICBkb2M6IC8qIFVzZWQg
dG8gb2J0YWluIHRoZSBuZXcgYHdpbmRvdy1zdGFydCcgZHVyaW5nIHJlZGlzcGxheS4gICovKTsK
KyAgVndzZl9ob29rID0gUW5pbDsKKworICBERUZWQVJfTElTUCAoIndzZi12YXIiLCBWd3NmX3Zh
ciwKKyAgICBkb2M6IC8qIGB3c2YtaG9va2AgY2hlY2tzIHRvIHNlZSBpZiBgd3NmLXZhcmAgaXMg
c2V0IGxvY2FsbHkuICAqLyk7CisgIFZ3c2ZfdmFyID0gUW5pbDsKKyAgRm1ha2VfdmFyaWFibGVf
YnVmZmVyX2xvY2FsIChRd3NmX3Zhcik7CisgIERFRlNZTSAoUXdzZl92YXIsICJ3c2YtdmFyIik7
CisKICAgREVGVkFSX0xJU1AgKCJ3aW5kb3ctdGV4dC1jaGFuZ2UtZnVuY3Rpb25zIiwKIAkgICAg
ICAgVndpbmRvd190ZXh0X2NoYW5nZV9mdW5jdGlvbnMsCiAgICAgZG9jOiAvKiBGdW5jdGlvbnMg
dG8gY2FsbCBpbiByZWRpc3BsYXkgd2hlbiB0ZXh0IGluIHRoZSB3aW5kb3cgbWlnaHQgY2hhbmdl
LiAgKi8pOwo=

--Multipart_Fri_Jan_29_07:54:07_2016-1--




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

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


Received: (at 22404) by debbugs.gnu.org; 29 Jan 2016 15:34:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 29 10:34:16 2016
Received: from localhost ([127.0.0.1]:40728 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aPB3w-0001LM-Cw
	for submit <at> debbugs.gnu.org; Fri, 29 Jan 2016 10:34:16 -0500
Received: from eggs.gnu.org ([208.118.235.92]:50797)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <eliz@HIDDEN>) id 1aPB3v-0001L9-3K
 for 22404 <at> debbugs.gnu.org; Fri, 29 Jan 2016 10:34:15 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <eliz@HIDDEN>) id 1aPB3m-0005ur-OO
 for 22404 <at> debbugs.gnu.org; Fri, 29 Jan 2016 10:34:09 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD
 autolearn=disabled version=3.3.2
Received: from fencepost.gnu.org ([2001:4830:134:3::e]:43602)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1aPB3m-0005un-Lp; Fri, 29 Jan 2016 10:34:06 -0500
Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4082
 helo=HOME-C4E4A596F7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1aPB3l-0003DQ-2R; Fri, 29 Jan 2016 10:34:05 -0500
Date: Fri, 29 Jan 2016 17:33:46 +0200
Message-Id: <83io2cxuw5.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Michael Heerdegen <michael_heerdegen@HIDDEN>
In-reply-to: <87vb6ctoui.fsf@HIDDEN> (message from Michael Heerdegen on Fri,
 29 Jan 2016 15:57:57 +0100)
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
References: <m2d1suaetl.wl%esq@HIDDEN> <8337tq8yp6.fsf@HIDDEN>
 <87d1sk389h.fsf@HIDDEN> <83mvroxxib.fsf@HIDDEN> <87vb6ctoui.fsf@HIDDEN>
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From: 2001:4830:134:3::e
X-Spam-Score: -5.0 (-----)
X-Debbugs-Envelope-To: 22404
Cc: esq@HIDDEN, 22404 <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>
Reply-To: Eli Zaretskii <eliz@HIDDEN>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -5.0 (-----)

> From: Michael Heerdegen <michael_heerdegen@HIDDEN>
> Cc: esq@HIDDEN,  22404 <at> debbugs.gnu.org
> Date: Fri, 29 Jan 2016 15:57:57 +0100
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> > Then maybe we need a post-redisplay-hook.
> 
> I would like that! - and I think it would solve Keith's problem as well.

Patches welcome to that effect.




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

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


Received: (at 22404) by debbugs.gnu.org; 29 Jan 2016 14:58:12 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 29 09:58:12 2016
Received: from localhost ([127.0.0.1]:40720 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aPAV2-0000VU-HK
	for submit <at> debbugs.gnu.org; Fri, 29 Jan 2016 09:58:12 -0500
Received: from mout.web.de ([212.227.15.14]:55521)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <michael_heerdegen@HIDDEN>) id 1aPAV1-0000VI-8N
 for 22404 <at> debbugs.gnu.org; Fri, 29 Jan 2016 09:58:11 -0500
Received: from drachen.dragon ([92.77.162.209]) by smtp.web.de (mrweb001) with
 ESMTPSA (Nemesis) id 0LqDD6-1ZuURN0zyK-00dnQo;
 Fri, 29 Jan 2016 15:58:01 +0100
From: Michael Heerdegen <michael_heerdegen@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
References: <m2d1suaetl.wl%esq@HIDDEN> <8337tq8yp6.fsf@HIDDEN>
 <87d1sk389h.fsf@HIDDEN> <83mvroxxib.fsf@HIDDEN>
Date: Fri, 29 Jan 2016 15:57:57 +0100
In-Reply-To: <83mvroxxib.fsf@HIDDEN> (Eli Zaretskii's message of "Fri, 29 Jan
 2016 16:37:16 +0200")
Message-ID: <87vb6ctoui.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-Provags-ID: V03:K0:DMZwYAKzrMSYl9VV//sXI82uBGzcqYmpi9VnvIhvXpERzBsHoyR
 sd+dIPIC+bKuy36hQmMKDfJ+H+915tDihSCLw6xeUAOua8G3Z6pPdkv4q03ur5H0szoPFPK
 rpHv0FA1eWQZCyFnt1o2KW3Q8me9L8xscb0by4EiHDTMDWWheGbSjPbBJ3FW+rGhbVUUG7L
 u1ReivD/OFzbJyz3szZDg==
X-UI-Out-Filterresults: notjunk:1;V01:K0:hZAVYnI1b+U=:0Db8MZRGSGOr5Spf6dMcRL
 I4U2qCG+QlVoEHM+XlzR/kUrV/j/UweG+LAvneYwH8WssTYmbcm0RRi2e+FrTjeyzG4WFUEja
 h/dDlPq0HUFsdveF3tbLGMiord3ajs05AoJiOqzpLCOHICntPTMd2pzWBKKJt5KIej2YChq5M
 fDywuDl/nxnx867YYasUx4cExo9HGTDiZaZQRHOTBW0Dr5zFiTTbUglvnp1tXYizu1QHNYd4H
 RzK1HFZ8/BMl1mpDzxIfF49Yr0Ent/6BpA9Vh/xI0Mr48qwlUrVND7WQvAj+Npa/Ne2H6OB4p
 tmL4eeEUd6cXjmDPpEfP9J/TxHeyofoGS4Tc+pMrX2FWpPC4IyYPEiD5rclI1zbnUQmU6BW/Z
 xcBj4KYsiBuTBVXPpNvGz4v/ryglyUB5sg/RcinP+4w6+PE+sKBMzNF08xOuwoocmyFXqlWPz
 XeOWrA4hez3XXY0Uq315mYCMyByQG/tZHludJdzJXLW1WJxNGgsb++3T53m0lKY4nNF0was2w
 OV5sDW5tsoXrZ8qUhTMP5RKyv1o92cH23UfVPcpYWQZkHZe1vnXsPwYAYNBI6czpbSPyaGVbu
 34xZh53QYaSxUSB4B7XwMKlvyxCgzzCvDq+4gGNlT5hWdeZnWX9uMkhCnBDWRmEamueD+kJdI
 83cZzs2kKWynjz+XIXp8Gq1cSqvFv+wA+uCHB43yCAVNirM1krp4ZWAVavesxGIB0MuRihvEr
 LJzfoRwEhwKUSQ1z8f+dII+kMlHNJizD9oWKEvJBWXBU+TBJx3dTx5/lYfaFm2zxRwb1yvJ8t
 kNATtxy
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 22404
Cc: esq@HIDDEN, 22404 <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: -0.7 (/)

Eli Zaretskii <eliz@HIDDEN> writes:

> Then maybe we need a post-redisplay-hook.

I would like that! - and I think it would solve Keith's problem as well.


Regards,

Michael.




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

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


Received: (at 22404) by debbugs.gnu.org; 29 Jan 2016 14:37:48 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 29 09:37:48 2016
Received: from localhost ([127.0.0.1]:40376 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aPABH-0008PU-OU
	for submit <at> debbugs.gnu.org; Fri, 29 Jan 2016 09:37:47 -0500
Received: from eggs.gnu.org ([208.118.235.92]:36579)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <eliz@HIDDEN>) id 1aPABG-0008PG-0T
 for 22404 <at> debbugs.gnu.org; Fri, 29 Jan 2016 09:37:46 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <eliz@HIDDEN>) id 1aPAB6-0006TV-4S
 for 22404 <at> debbugs.gnu.org; Fri, 29 Jan 2016 09:37:40 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD
 autolearn=disabled version=3.3.2
Received: from fencepost.gnu.org ([2001:4830:134:3::e]:42679)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1aPAB6-0006TP-1R; Fri, 29 Jan 2016 09:37:36 -0500
Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4038
 helo=HOME-C4E4A596F7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1aPAB4-000397-9S; Fri, 29 Jan 2016 09:37:35 -0500
Date: Fri, 29 Jan 2016 16:37:16 +0200
Message-Id: <83mvroxxib.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Michael Heerdegen <michael_heerdegen@HIDDEN>
In-reply-to: <87d1sk389h.fsf@HIDDEN> (message from Michael Heerdegen on Fri,
 29 Jan 2016 13:00:42 +0100)
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
References: <m2d1suaetl.wl%esq@HIDDEN> <8337tq8yp6.fsf@HIDDEN>
 <87d1sk389h.fsf@HIDDEN>
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From: 2001:4830:134:3::e
X-Spam-Score: -5.0 (-----)
X-Debbugs-Envelope-To: 22404
Cc: esq@HIDDEN, 22404 <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>
Reply-To: Eli Zaretskii <eliz@HIDDEN>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -5.0 (-----)

> From: Michael Heerdegen <michael_heerdegen@HIDDEN>
> Cc: Keith David Bershatsky <esq@HIDDEN>,  22404 <at> debbugs.gnu.org
> Date: Fri, 29 Jan 2016 13:00:42 +0100
> 
> Anyway, using pre-command-hook is too late for us: it's not executed
> unless the next input arrives, so you have to hit a key until
> decorations or whatever get updated.

Then maybe we need a post-redisplay-hook.




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

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


Received: (at 22404) by debbugs.gnu.org; 29 Jan 2016 12:00:59 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 29 07:00:59 2016
Received: from localhost ([127.0.0.1]:40332 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aP7jX-00039B-JB
	for submit <at> debbugs.gnu.org; Fri, 29 Jan 2016 07:00:59 -0500
Received: from mout.web.de ([212.227.15.4]:56488)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <michael_heerdegen@HIDDEN>) id 1aP7jV-00038x-Fq
 for 22404 <at> debbugs.gnu.org; Fri, 29 Jan 2016 07:00:57 -0500
Received: from drachen.dragon ([92.77.162.209]) by smtp.web.de (mrweb003) with
 ESMTPSA (Nemesis) id 0LvSQV-1Zy0UQ0PAJ-010c4L;
 Fri, 29 Jan 2016 13:00:45 +0100
From: Michael Heerdegen <michael_heerdegen@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
References: <m2d1suaetl.wl%esq@HIDDEN> <8337tq8yp6.fsf@HIDDEN>
Date: Fri, 29 Jan 2016 13:00:42 +0100
In-Reply-To: <8337tq8yp6.fsf@HIDDEN> (Eli Zaretskii's message of "Thu, 21 Jan
 2016 22:28:05 +0200")
Message-ID: <87d1sk389h.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-Provags-ID: V03:K0:F9J7Q06ZXB2BjEXkfZNphkhber21CZt/z8wktGuqWXbnjR0HDBq
 lD/XyRfbA4jz1sEBV0Fiw13sO6pR5jFbxLvWGRRzEOtrbgai0MVv2163DgzcjCC8gjhbPb2
 1N1KCUtiNa1VHlVUhl53tMLwclzUvqw1CTlmcyvPzEDHynuqm0OwYWHLEfqIlNMh78Awgwk
 Ibu2Mwnitkr2cfmegv39A==
X-UI-Out-Filterresults: notjunk:1;V01:K0:4RF/jeIWGBc=:lp2YnLBAu13DNbE8Sqgt5U
 +hpZLq73sjeZS2cH1haK62KoqploMzHvvVVqWiuTq+J/7GpAJtIRZ2+mit71gjKIw7qWR/zT2
 2a8P4OhOl40Z7wYW+r6heXdOWRVVO9HfCLZSphDYTcAmQyOmVIpZoSNy5wB+uMyEL9Z4EiXCm
 EBUq5OVyO93vVZDJqfSoH9bm0zYH5ONzR9WMdW80b2K7osY6AJCrIiDGQ5NHARtzNCIzxWeUU
 bBI8dnduLFB6t4QhiwaG3LkCVgrQR4T1g8lIJ3XFzoUi9SBfgJGHJMAhO71P9POQiIaQoosBb
 LDAmqxsxRLsitMIFspkspgUyjwIzr5nnA/aIjAT83RlI6CrNlnDhcDdnclogWB69QLF8to+to
 CEPUbU6MTczWpSdrwu9hii3T8JktGqI0Uv9rBa0aepwRqNF+ziJpfynyPyQqDP8MAdALIkLm+
 n8bZRzxGH9ZQKscSy8Qsc5mTh5Et0nwlqfP0SLWkpKzlc5xIwh3AyG8tty3VIA/9yiuLaU29j
 v3TRC1ItL0pdNXuQyBIw26h3v0HIzo+74egCDiopajhD6bp3qv1fVUjC2CeZLe1bb3eaznIKj
 /RhA59HTYVWaZ0Znl041hk1xDoETrNW3AQzHkt3V+6nIYpnPPNCNFrqWt+POQ6veoo0yZILQR
 YNpF1WZ299l8IbqMpe2dSbnhYbg2cPg0l7adC7dOhbbPhz0R6Qch2p0Sfz3I6enmdx0dvupoW
 r6zYaSpuYCT11VD7B5EQ0ng3aCGSrGmi6sPuFeFNIhabN3xXKynBYR+DmnXA92aXqvcyabsmh
 4FDKDLQ
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 22404
Cc: Keith David Bershatsky <esq@HIDDEN>, 22404 <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: -0.7 (/)

Eli Zaretskii <eliz@HIDDEN> writes:

> The other thing I still don't understand is how forcing
> window-scroll-functions to run could fix your problem or _avoiding_
> extra calculations.  Where and under what conditions would you call
> the function that forces Emacs to run window-scroll-functions?
> Doesn't that waste processing in those cases where normally
> window-scroll-functions didn't need to be run (because window-start
> and window-end don't change)?  IOW, aren't you running those costly
> calculations from window-scroll-functions?

FWIW, I ran into this class of problems for several times: after
scrolling had been happening, I want to do something with the newly
visible area of the buffer (e.g., place overlays).

The main problem here is that even when window-scroll-function run,
AFAIK the value of `window-end' can still be outdated, even when called
with the update argument.

I didn't need to use post-command-hook in my cases, so it's a bit
different from what Keith wants.

Anyway, using pre-command-hook is too late for us: it's not executed
unless the next input arrives, so you have to hit a key until
decorations or whatever get updated.

The only solution I know of is to do things in a timer, which works, but
not nicely (you sometimes get delays).


Regards,

Michael.




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

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


Received: (at 22404) by debbugs.gnu.org; 29 Jan 2016 08:42:49 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 29 03:42:49 2016
Received: from localhost ([127.0.0.1]:40268 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aP4dk-0006eZ-Qn
	for submit <at> debbugs.gnu.org; Fri, 29 Jan 2016 03:42:49 -0500
Received: from eggs.gnu.org ([208.118.235.92]:33862)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <eliz@HIDDEN>) id 1aP4di-0006eD-KK
 for 22404 <at> debbugs.gnu.org; Fri, 29 Jan 2016 03:42:47 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <eliz@HIDDEN>) id 1aP4dc-0005B1-LC
 for 22404 <at> debbugs.gnu.org; Fri, 29 Jan 2016 03:42:41 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,RP_MATCHES_RCVD
 autolearn=disabled version=3.3.2
Received: from fencepost.gnu.org ([2001:4830:134:3::e]:53031)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1aP4dX-000577-BO; Fri, 29 Jan 2016 03:42:35 -0500
Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3560
 helo=HOME-C4E4A596F7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1aP4dT-0005ji-Vi; Fri, 29 Jan 2016 03:42:32 -0500
Date: Fri, 29 Jan 2016 10:42:25 +0200
Message-Id: <83y4b8ydxq.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Keith David Bershatsky <esq@HIDDEN>
In-reply-to: <m237thf5g9.wl%esq@HIDDEN> (message from Keith David
 Bershatsky on Thu, 28 Jan 2016 19:08:22 -0800)
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
References: <m237thf5g9.wl%esq@HIDDEN>
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From: 2001:4830:134:3::e
X-Spam-Score: -5.0 (-----)
X-Debbugs-Envelope-To: 22404
Cc: johnw@HIDDEN, 22404 <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>
Reply-To: Eli Zaretskii <eliz@HIDDEN>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -5.0 (-----)

> Date:  Thu, 28 Jan 2016 19:08:22 -0800
> From:  Keith David Bershatsky <esq@HIDDEN>
> Cc:  22404 <at> debbugs.gnu.org,Eli Zaretskii <eliz@HIDDEN>
> 
> Let's say for example that someone has a function named `foo` which uses `window-start` and `window-end`, and the user wants that function to run every command loop.  Everyone will immediately think of the `post-command-hook` because the buffer or position may have been modified by `this-command` (whatever that may be).  The way Emacs is presently designed, people are needlessly calling `foo` multiple times when scrolling occurs because the `post-command-hook` can't provide correct numbers.

Personally, I think that having a function run by post-command-hook
that crucially depends on window-start and window-end is poor design.
Emacs never promised that these values be accurate before redisplay
runs, since redisplay sometimes needs to change where the window
starts and ends.

Solving this with window-scroll-functions is not the proper solution,
either, for the reasons already discussed at length in this thread.

I still don't understand well enough why pre-command-hook is not a
better solution here.  Until I do, I don't see how this issue can be
resolved better than it is today.  I don't like exposing APIs that
manipulate flags which are there for internal machinery.  Lisp
programs that set these flags arbitrarily can easily disrupt the
redisplay operation, so such APIs is a time bomb.




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

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


Received: (at 22404) by debbugs.gnu.org; 29 Jan 2016 03:08:31 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 28 22:08:31 2016
Received: from localhost ([127.0.0.1]:40179 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aOzQF-0005Sl-CP
	for submit <at> debbugs.gnu.org; Thu, 28 Jan 2016 22:08:31 -0500
Received: from cobb.liquidweb.com ([50.28.13.150]:59667)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <esq@HIDDEN>) id 1aOzQD-0005SY-T5
 for 22404 <at> debbugs.gnu.org; Thu, 28 Jan 2016 22:08:30 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lawlist.com;
 s=default; 
 h=Content-Type:MIME-Version:Subject:Cc:To:From:Message-ID:Date;
 bh=oUfAtJAH5HCCCUuEI2zq3Ie1s63nwTMs2U09cW05dBs=; 
 b=Nit7t4CI9YnIdW8G9Xt8Ryb1CRw4Bcj2MouJ7rr51coN7eT4aBVFQ3VkGYCVGeskGRuyS5vOn8QCBMt7ha7HEvJZMP21Uj0oqUgLiYLZn8vgEgY5GteNojzvv/T4Q8n8;
Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:53099
 helo=server.private.localhost)
 by cobb.liquidweb.com with esmtp (Exim 4.82)
 (envelope-from <esq@HIDDEN>)
 id 1aOzQ5-0002sn-5f; Thu, 28 Jan 2016 22:08:21 -0500
Date: Thu, 28 Jan 2016 19:08:22 -0800
Message-ID: <m237thf5g9.wl%esq@HIDDEN>
From: Keith David Bershatsky <esq@HIDDEN>
To: "John Wiegley" <johnw@HIDDEN>
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
MIME-Version: 1.0 (generated by   - "")
Content-Type: text/plain; charset=US-ASCII
X-AntiAbuse: This header was added to track abuse,
 please include it with any abuse report
X-AntiAbuse: Primary Hostname - cobb.liquidweb.com
X-AntiAbuse: Original Domain - debbugs.gnu.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - lawlist.com
X-Get-Message-Sender-Via: cobb.liquidweb.com: acl_c_relayhosts_text_entry:
 lawlist|lawlist.com
X-Spam-Score: 2.0 (++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 the administrator of that system for details.
 Content preview:  Thanks, John, for taking another look at #22404. Let's say
 for example that someone has a function named `foo` which uses `window-start`
 and `window-end`, and the user wants that function to run every command loop.
 Everyone will immediately think of the `post-command-hook` because the buffer
 or position may have been modified by `this-command` (whatever that may be).
 The way Emacs is presently designed, people are needlessly calling `foo`
 multiple times when scrolling occurs because the `post-command-hook` can't
 provide correct numbers. Most people probably don't care because `foo` is
 trivial in terms of the time it takes to run -- so if it runs 3 times per
 command loop, no problem. I personally think calling `foo` 3 times per command
 loop, when it only needed to run once, is a poor design. [...] 
 Content analysis details:   (2.0 points, 10.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -0.7 RCVD_IN_DNSWL_LOW      RBL: Sender listed at http://www.dnswl.org/, low
 trust [50.28.13.150 listed in list.dnswl.org]
 2.7 GUARANTEED_100_PERCENT BODY: One hundred percent guaranteed
 0.0 T_DKIM_INVALID         DKIM-Signature header exists but is not valid
X-Debbugs-Envelope-To: 22404
Cc: Eli Zaretskii <eliz@HIDDEN>, 22404 <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: 2.0 (++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 the administrator of that system for details.
 
 Content preview:  Thanks, John, for taking another look at #22404. Let's say
    for example that someone has a function named `foo` which uses `window-start`
    and `window-end`, and the user wants that function to run every command loop.
    Everyone will immediately think of the `post-command-hook` because the buffer
    or position may have been modified by `this-command` (whatever that may be).
    The way Emacs is presently designed, people are needlessly calling `foo`
   multiple times when scrolling occurs because the `post-command-hook` can't
    provide correct numbers. Most people probably don't care because `foo` is
    trivial in terms of the time it takes to run -- so if it runs 3 times per
    command loop, no problem. I personally think calling `foo` 3 times per command
    loop, when it only needed to run once, is a poor design. [...] 
 
 Content analysis details:   (2.0 points, 10.0 required)
 
  pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -0.7 RCVD_IN_DNSWL_LOW      RBL: Sender listed at http://www.dnswl.org/, low
                             trust
                             [50.28.13.150 listed in list.dnswl.org]
  2.7 GUARANTEED_100_PERCENT BODY: One hundred percent guaranteed
  0.0 T_DKIM_INVALID         DKIM-Signature header exists but is not valid

Thanks, John, for taking another look at #22404.

Let's say for example that someone has a function named `foo` which uses `window-start` and `window-end`, and the user wants that function to run every command loop.  Everyone will immediately think of the `post-command-hook` because the buffer or position may have been modified by `this-command` (whatever that may be).  The way Emacs is presently designed, people are needlessly calling `foo` multiple times when scrolling occurs because the `post-command-hook` can't provide correct numbers.  Most people probably don't care because `foo` is trivial in terms of the time it takes to run -- so if it runs 3 times per command loop, no problem.  I personally think calling `foo` 3 times per command loop, when it only needed to run once, is a poor design.

There is no 100% guaranteed test from the `post-command-hook` to know whether the `window-scroll-functions` hook will run, and if so, whether it will run 2 times (instead of just one).

Here is an excerpt from `window.h` that tells us what `optional_new_start` is currently used for:

    /* True means we have explicitly changed the value of start,
       but that the next redisplay is not obliged to use the new value.
       This is used in Fdelete_other_windows to force a call to
       Vwindow_scroll_functions; also by Frecenter with argument.  */
    bool_bf optional_new_start : 1;

It is also used for `set-window-buffer`; so perhaps that should be added to the doc-string.

By setting `optional_new_start` to `true`, we force the `window_scroll_functions` hook to run every command loop (during redisplay).  If that happens, then the `post-command-hook` is no longer needed to run `foo`.  So we have just reduced `foo` being called 2 to 3 times, to 1 to 2 times instead.  I have been studying `xdisp.c` and have concluded that it is extremely difficult to know whether the `window-scroll-functions` hook will run 1 or 2 times, because that hook can modify the buffer and there are some other hooks that may modify the buffer too -- thus requiring a second call to the WSF.

So, the moral of the story is whether it is a good thing to call `foo` 2 to 3 times per command loop, instead of 1 to 2 times per command loop.  And, it boils down to whether `foo` is costly.  It is costly for me because I use `vertical-motion`.  It may be costly to other users for a different reason.

Another idea would be to create a new animal that permits users to THROW_ANY_SWITCH from `elisp`.  It doesn't have to be `optional_new_start` specifically.  If users have an `elisp` mechanism to THROW_ANY_SWITCH, they can throw it from anywhere -- `pre-command-hook`, `post-command-hook`, etc.  [By switch, I mean the bool_bf items in `window.h`.]

Keith

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

At Thu, 28 Jan 2016 18:14:43 -0800,
John Wiegley wrote:
> 
> >>>>> Keith David Bershatsky <esq@HIDDEN> writes:
> 
> >> What do you need from window-scroll-functions? Only the correct values of
> >> window-start and window-end? Or something else?
> 
> > Correct, I just need the 100% accurate `window-start` and
> > `window-end`. :) :)
> 
> Keith, your use case here does strike me as a bit exotic. I'm not saying it's
> not a bug, but I'm wondering if your suggested solution is really the best
> path to the final result you're reaching for.  The cost of `vertical-motion',
> for example, seems to be a driving force behind your request.




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

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


Received: (at 22404) by debbugs.gnu.org; 29 Jan 2016 02:18:17 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 28 21:18:17 2016
Received: from localhost ([127.0.0.1]:40159 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aOydd-0004En-G8
	for submit <at> debbugs.gnu.org; Thu, 28 Jan 2016 21:18:17 -0500
Received: from mail-ob0-f182.google.com ([209.85.214.182]:34062)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <jwiegley@HIDDEN>) id 1aOydc-0004EW-Eq
 for 22404 <at> debbugs.gnu.org; Thu, 28 Jan 2016 21:18:16 -0500
Received: by mail-ob0-f182.google.com with SMTP id wb13so19187528obb.1
 for <22404 <at> debbugs.gnu.org>; Thu, 28 Jan 2016 18:18:16 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=from:to:cc:subject:in-reply-to:date:message-id:references
 :user-agent:reply-to:mime-version:content-type;
 bh=9Ux+Dyk7atvfwKZBz8Xo9vnIUjbk0Ubb+1fcx6Q9U0g=;
 b=II/C+r95HURdw8f5yN4ky5e+GNPFjhuWk+uwHJ0lxedEWX/OjqZ7MYnKgnRoecAN/R
 Y5Qgf5GgZ01Si8KNsQoIoxZV8DBLG4e1TipLTAgAmBfZk7E4zIS084dMk90q5+zRYJCU
 5BYMbJH1Q91AMy7dZlmUAN+5bwSk/Y3qf4H926mme3t50rH+49EWvqRMJpsKogHWvgNl
 mipWVGUSkTPpaoLogC7XIXAXMpp5M7/7VyY/LRUEDvVbszhb/hnocDLkP5tSZUFQCgUH
 1vdagaXfRbmXdY6+9sSZHBQ97Npptko3G3hiq5xaKEF24+C2qFbiw6PKN2Lazz5Gz2BT
 SW1w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20130820;
 h=x-gm-message-state:from:to:cc:subject:in-reply-to:date:message-id
 :references:user-agent:reply-to:mime-version:content-type;
 bh=9Ux+Dyk7atvfwKZBz8Xo9vnIUjbk0Ubb+1fcx6Q9U0g=;
 b=FT6JDv+WlheeXuooQvXbYfO4nTjvkKTSfg0BxTVcCm8X0Nw45/ErDJ0Z6TVCJm32In
 zns8qD7/XxRjio6c9voH2hQgqmX7OPG2vxNejcEb1pyp3qOPnkMANisKSoPmFZlGnfm6
 C3JIg6Q+lhG4EtqMDcvRW0qnWxB5F4sUAeoN20906agW0zFkzikAEjr4+QcNSqlD6dgB
 P0Ggbrbd15O7qTqcsxk+GuLk54OJYvregTEHdiprIjCyd7ZMERiR1VCYDrMiwb8O5NKu
 xwliAO1Xc4myUIdMj50UMCnamQ/J8LCD5MM863Wgnj0gmbU/rIfzZqS9Sv6VWNVOqlb/
 BwPw==
X-Gm-Message-State: AG10YORwgmwvrD7TyuB3fCVAqHQtWMZVjud9Xw4MN979XvMf7XWIiT8fKhPqiSEutRAkpA==
X-Received: by 10.60.176.100 with SMTP id ch4mr4749502oec.7.1454033890894;
 Thu, 28 Jan 2016 18:18:10 -0800 (PST)
Received: from Vulcan.local (76-234-68-79.lightspeed.frokca.sbcglobal.net.
 [76.234.68.79])
 by smtp.gmail.com with ESMTPSA id v142sm6929997oie.28.2016.01.28.18.18.08
 (version=TLS1 cipher=AES128-SHA bits=128/128);
 Thu, 28 Jan 2016 18:18:09 -0800 (PST)
From: John Wiegley <jwiegley@HIDDEN>
X-Google-Original-From: "John Wiegley" <johnw@HIDDEN>
Received: by Vulcan.local (Postfix, from userid 501)
 id F21A01297BAE3; Thu, 28 Jan 2016 18:18:07 -0800 (PST)
To: Keith David Bershatsky <esq@HIDDEN>
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
In-Reply-To: <m2bn8eab8r.wl%esq@HIDDEN> (Keith David Bershatsky's message
 of "Thu, 21 Jan 2016 13:11:48 -0800")
Date: Thu, 28 Jan 2016 18:14:43 -0800
Message-ID: <m2r3h1ku7g.fsf@HIDDEN>
References: <m260yqdsp7.wl%esq@HIDDEN> <m2bn8eab8r.wl%esq@HIDDEN>
User-Agent: Gnus/5.130014 (Ma Gnus v0.14) Emacs/24.5 (darwin)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 22404
Cc: Eli Zaretskii <eliz@HIDDEN>, 22404 <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>
Reply-To: John Wiegley <johnw@HIDDEN>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.7 (/)

>>>>> Keith David Bershatsky <esq@HIDDEN> writes:

>> What do you need from window-scroll-functions? Only the correct values of
>> window-start and window-end? Or something else?

> Correct, I just need the 100% accurate `window-start` and
> `window-end`. :) :)

Keith, your use case here does strike me as a bit exotic. I'm not saying it's
not a bug, but I'm wondering if your suggested solution is really the best
path to the final result you're reaching for.  The cost of `vertical-motion',
for example, seems to be a driving force behind your request.

-- 
John Wiegley                  GPG fingerprint = 4710 CF98 AF9B 327B B80F
http://newartisans.com                          60E1 46C4 BD1A 7AC1 4BA2




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

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


Received: (at 22404) by debbugs.gnu.org; 21 Jan 2016 21:12:00 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 21 16:12:00 2016
Received: from localhost ([127.0.0.1]:56803 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aMMWO-0006Ch-DL
	for submit <at> debbugs.gnu.org; Thu, 21 Jan 2016 16:12:00 -0500
Received: from cobb.liquidweb.com ([50.28.13.150]:37166)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <esq@HIDDEN>) id 1aMMWM-0006CU-UF
 for 22404 <at> debbugs.gnu.org; Thu, 21 Jan 2016 16:11:59 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lawlist.com;
 s=default; 
 h=Content-Type:MIME-Version:Subject:Cc:To:From:Message-ID:Date;
 bh=dqNV8W82rnHx+xxEoStjzNVnFhQGRNxLjjDx68jY+Ro=; 
 b=keaWfFncZlIdTEAox6l4HodtfROXsMrbfEjEE7/QjnieJ/znEE09dQkcp2zOz/LGJwMl535fvXw+S/mpWSWbVF9DjLqfpQ1CEq2wMndbr/8Fpn6wVz4vyjYjc4QQxDDW;
Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:51101
 helo=server.local.localhost)
 by cobb.liquidweb.com with esmtp (Exim 4.82)
 (envelope-from <esq@HIDDEN>)
 id 1aMMWA-0004Tx-BN; Thu, 21 Jan 2016 16:11:46 -0500
Date: Thu, 21 Jan 2016 13:11:48 -0800
Message-ID: <m2bn8eab8r.wl%esq@HIDDEN>
From: Keith David Bershatsky <esq@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
MIME-Version: 1.0 (generated by   - "")
Content-Type: text/plain; charset=US-ASCII
X-AntiAbuse: This header was added to track abuse,
 please include it with any abuse report
X-AntiAbuse: Primary Hostname - cobb.liquidweb.com
X-AntiAbuse: Original Domain - debbugs.gnu.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - lawlist.com
X-Get-Message-Sender-Via: cobb.liquidweb.com: acl_c_relayhosts_text_entry:
 lawlist|lawlist.com
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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: -0.7 (/)

> What do you need from window-scroll-functions?  Only the correct
> values of window-start and window-end?  Or something else?


Correct, I just need the 100% accurate `window-start` and `window-end`.  :)  :)


> The other thing I still don't understand is how forcing
> window-scroll-functions to run could fix your problem or _avoiding_
> extra calculations.  Where and under what conditions would you call
> the function that forces Emacs to run window-scroll-functions?


I either need to use BOTH the `post-command-hook` and `window-scroll-functions` hook; OR, just the WSF if it is forced to always run.  WSF is needed (for sure) whenever `window-start` and `window-end` have changed -- so PCH must do the work the rest of the time.  I had previously been using a poor test to GUESS (from the PCH) whether WSF will run.


> Doesn't that waste processing in those cases where normally
> window-scroll-functions didn't need to be run (because window-start
> and window-end don't change)?  IOW, aren't you running those costly
> calculations from window-scroll-functions?


If point moves left or right, the vertical ruler that tracks the cursor position moves with the cursor -- so recalculation is needed.  The vertical ruler is on a 0.3 idle timer, and the horizontal ruler (with line numbers and pilcrows) is on all the time.  For the horizontal ruler, I have a test that compares the previous window-start/end to the new window-start/end -- if it is just cursor movement (instead of self-insert-command), then I use the previously recorded list of calculations.  Just moving the cursor left/right/up/down within the same window bounds is much faster than typing or deleting a character.

      ;; HORIZONTAL RULER (snippet)
      (setq posn-list
        (if
            (and
              hr-prev-start
              (= hr-prev-start start)
              hr-prev-end
              (= hr-prev-end end)
              +-posn-list
              (or
                (eq +-this-command 'lawlist-left-char)
                (eq +-this-command 'lawlist-right-char)
                (eq +-this-command 'lawlist-previous-line)
                (eq +-this-command 'lawlist-next-line)
                (eq +-this-command 'lawlist-forward-entity)
                (eq +-this-command 'lawlist-backward-entity)
                (eq +-this-command 'lawlist-forward-paragraph)
                (eq +-this-command 'lawlist-backward-paragraph)
                (eq +-this-command 'lawlist-end-of-visual-line)
                (eq +-this-command 'lawlist-beginning-of-visual-line)))
          +-posn-list
          (posn start end vcol)))

The vertical ruler (on an idle timer) will use the previously recorded list of calculations under a few limited circumstances.

      ;; VERTICAL RULER (snippet)
      (setq posn-list
        (if
            (or
              (not +-posn-list)
              (and
                (not force)
                (memq last-command '(
                  special-yank
                  special-copy-selected-region
                  copy-selected-region
                  delete-word-or-whitespace
                  delete-forward-char
                  lawlist-backward-delete-char-untabify
                  lawlist-beginning-of-buffer
                  lawlist-end-of-buffer
                  beginning-of-buffer
                  end-of-buffer
                  scroll-up
                  scroll-down
                  lawlist-super-scroll-up
                  lawlist-super-scroll-down
                  lawlist-scroll-up
                  lawlist-scroll-down
                  lawlist-left-char
                  lawlist-right-char
                  left-char
                  right-char
                  lawlist-previous-line
                  lawlist-next-line
                  previous-line
                  next-line
                  lawlist-forward-entity
                  lawlist-backward-entity
                  lawlist-forward-paragraph
                  lawlist-backward-paragraph
                  forward-paragraph
                  backward-paragraph
                  lawlist-end-of-visual-line
                  lawlist-beginning-of-visual-line
                  end-of-visual-line
                  beginning-of-visual-line))))
          (posn start end vcol)
          +-posn-list))

> Finally, wouldn't running from pre-command-hook solve the problem?
> The values of window-start and window-end are known by then, and you
> can record the old values to compare them against new, to know when
> they change.  No?

Basically any change to the text requires some type of recalculation -- e.g., line got shorter/longer, block of test was deleted/pasted.

Keith




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

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


Received: (at 22404) by debbugs.gnu.org; 21 Jan 2016 20:28:02 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 21 15:28:02 2016
Received: from localhost ([127.0.0.1]:56725 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aMLpq-0008US-1Y
	for submit <at> debbugs.gnu.org; Thu, 21 Jan 2016 15:28:02 -0500
Received: from eggs.gnu.org ([208.118.235.92]:55252)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <eliz@HIDDEN>) id 1aMLpo-0008U4-AB
 for 22404 <at> debbugs.gnu.org; Thu, 21 Jan 2016 15:28:00 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <eliz@HIDDEN>) id 1aMLpf-0006e6-W9
 for 22404 <at> debbugs.gnu.org; Thu, 21 Jan 2016 15:27:55 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,RP_MATCHES_RCVD
 autolearn=disabled version=3.3.2
Received: from fencepost.gnu.org ([2001:4830:134:3::e]:52026)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1aMLpf-0006e2-SX; Thu, 21 Jan 2016 15:27:51 -0500
Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4577
 helo=HOME-C4E4A596F7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1aMLpe-0005rv-P6; Thu, 21 Jan 2016 15:27:51 -0500
Date: Thu, 21 Jan 2016 22:28:05 +0200
Message-Id: <8337tq8yp6.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Keith David Bershatsky <esq@HIDDEN>
In-reply-to: <m2d1suaetl.wl%esq@HIDDEN> (message from Keith David
 Bershatsky on Thu, 21 Jan 2016 11:54:30 -0800)
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
References: <m2d1suaetl.wl%esq@HIDDEN>
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From: 2001:4830:134:3::e
X-Spam-Score: -5.0 (-----)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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>
Reply-To: Eli Zaretskii <eliz@HIDDEN>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -5.0 (-----)

> Date:  Thu, 21 Jan 2016 11:54:30 -0800
> From:  Keith David Bershatsky <esq@HIDDEN>
> Cc:  22404 <at> debbugs.gnu.org
> 
> The calculations (primarily because of `vertical-motion`) are too costly time-wise to perform more than once during each command loop because it slows down performance.
> 
> If I run the calculations from the `post-command-hook`, I will have wasted precious time IF the `window-scroll-functions` hook will be running.  IF the `window-scroll-functions` hook will be running, then the `window-start` and `window-end` obtained from the `post-command-hook` will be wrong -- so there is no point using those PCH wrong numbers.
> 
> If I run the calculations from the INITIAL run of the `window-scroll-functions` hook, I will have wasted precious time IF the WSF hook will be running a SECOND time.  [WSF runs a SECOND time if point was PARTIALLY visible.]  IF the WSF will be running more than one time, then the INITIAL values for `window-start` and `window-end` will be wrong -- so there is no point using those WSF wrong numbers.  Instead, I have to wait until the LAST call on the WSF when the final correct values for `window-start` and `window-end` can be truly ascertained.
> 
> Without the benefit of feature request 22404, there are a couple of options that are not ideal.

What do you need from window-scroll-functions?  Only the correct
values of window-start and window-end?  Or something else?

The other thing I still don't understand is how forcing
window-scroll-functions to run could fix your problem or _avoiding_
extra calculations.  Where and under what conditions would you call
the function that forces Emacs to run window-scroll-functions?
Doesn't that waste processing in those cases where normally
window-scroll-functions didn't need to be run (because window-start
and window-end don't change)?  IOW, aren't you running those costly
calculations from window-scroll-functions?

Finally, wouldn't running from pre-command-hook solve the problem?
The values of window-start and window-end are known by then, and you
can record the old values to compare them against new, to know when
they change.  No?




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

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


Received: (at 22404) by debbugs.gnu.org; 21 Jan 2016 19:54:41 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 21 14:54:41 2016
Received: from localhost ([127.0.0.1]:56694 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aMLJZ-0005wq-2Y
	for submit <at> debbugs.gnu.org; Thu, 21 Jan 2016 14:54:41 -0500
Received: from cobb.liquidweb.com ([50.28.13.150]:35050)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <esq@HIDDEN>) id 1aMLJY-0005wa-3q
 for 22404 <at> debbugs.gnu.org; Thu, 21 Jan 2016 14:54:40 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lawlist.com;
 s=default; 
 h=Content-Type:MIME-Version:Subject:Cc:To:From:Message-ID:Date;
 bh=RkyARdFMZqfMuaUm+xBBiv3O5PZkIEKjr2M6xuzMY0U=; 
 b=fGTKPG2QLh4MU8oQX1YBvrzSZWZ/JuAMR+VWmoxbA/g+MwevnJFlLH9u8Fxy8bGmZH+ia/O5bv4QnwYvRot2C1yI5nym+T2p432/6KtgF/oHjDo3gU6IP2/gxGdbw7RO;
Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:50522
 helo=server.local.localhost)
 by cobb.liquidweb.com with esmtp (Exim 4.82)
 (envelope-from <esq@HIDDEN>)
 id 1aMLJN-00062p-HE; Thu, 21 Jan 2016 14:54:29 -0500
Date: Thu, 21 Jan 2016 11:54:30 -0800
Message-ID: <m2d1suaetl.wl%esq@HIDDEN>
From: Keith David Bershatsky <esq@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
MIME-Version: 1.0 (generated by   - "")
Content-Type: text/plain; charset=US-ASCII
X-AntiAbuse: This header was added to track abuse,
 please include it with any abuse report
X-AntiAbuse: Primary Hostname - cobb.liquidweb.com
X-AntiAbuse: Original Domain - debbugs.gnu.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - lawlist.com
X-Get-Message-Sender-Via: cobb.liquidweb.com: acl_c_relayhosts_text_entry:
 lawlist|lawlist.com
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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: -0.7 (/)

I have a minor mode that draws overlays from `window-start` to `window-end`, and those two values are mission critical to making sure that the overlays are placed correctly.  I have `word-wrap` set to `t`.  I have a function that makes relevant calculations in the visible window, which begins at `window-start` and uses `vertical-motion` for every visual line until `window-end`.  Along the way, I gather 22 different elements of a list for EACH visible line:  points at the beginning/ending of visual line (pbovl/peovl); points at beginning/ending of full line (bol/eol); column at the end of visual line (col-at-eovl); line number `(format-mode-line "%l")`; and all of the following in a vertical line (from top to bottom of the window) where the cursor is:  column, point, character, foreground/background colors of character.

When the list is assembled, I then take that list and place overlays to create a horizontal and vertical line compatible with `word-wrap` -- the result is a visual cross-hairs spanning the entire length and width of the visible window.  I am using XPM images for the vertical line, which permits me to achieve a thin vertical line to the left of each character -- it looks just like a thin vbar cursor.  I control the color of the vertical line -- the letters remain the same color they were, but the line color varies -- yellow for even column number; red for odd column number; green for when I am beyond the fill-column on the first visual line; a medium blue for a line that is visually wrapped when point is on a visual line subsequent to the first wrapped line; and a cyan color when point is at the right window boundary.  The horizontal line stretches the entire length of the window, even for the word-wrapped lines.  I have some fancy XPM images that change depending upon where point is.  It works with active regions too.  I have line numbering (in the left-hand margin) for each line.  I placer certain bitmap images in the right fringe depending when point is at the last character at the window edge, or when there is a hard return at the right window edge.  Each line-end (eol) has a pilcrow symbol that is XPM, except when cursor is at eol, in which case it is a different XPM image.  The end of the buffer has a different XPM image and the vertical line extends to the last visual line, even if the point at the end of the buffer is a few inches to the left of the vertical line.

The calculations (primarily because of `vertical-motion`) are too costly time-wise to perform more than once during each command loop because it slows down performance.

If I run the calculations from the `post-command-hook`, I will have wasted precious time IF the `window-scroll-functions` hook will be running.  IF the `window-scroll-functions` hook will be running, then the `window-start` and `window-end` obtained from the `post-command-hook` will be wrong -- so there is no point using those PCH wrong numbers.

If I run the calculations from the INITIAL run of the `window-scroll-functions` hook, I will have wasted precious time IF the WSF hook will be running a SECOND time.  [WSF runs a SECOND time if point was PARTIALLY visible.]  IF the WSF will be running more than one time, then the INITIAL values for `window-start` and `window-end` will be wrong -- so there is no point using those WSF wrong numbers.  Instead, I have to wait until the LAST call on the WSF when the final correct values for `window-start` and `window-end` can be truly ascertained.

Without the benefit of feature request 22404, there are a couple of options that are not ideal.

OPTION # 1(a):  Devise an efficient/accurate test that can be called from the `post-command-hook` to ascertain whether the `window-scroll-functions` hook will be running one or more times.  [Without a forced trigger, WSF only runs SOME of the time.]  If the WSF will be running one or more times, then do NOT perform the overlay calculations because the PCH values for `window-start` and `window-end` are wrong.  If the WSF will NOT be running, then go ahead and perform the time-costly calculations and place the overlays immediately.

OPTION # 1(b):  When the `window-scroll-functions` hook runs, I need to figure out whether it will be running one more time (subsequently) because point was only partially visible.  The only test I am aware of is `(pos-visible-in-window-p nil nil nil)`.  The LAST call on the WSF is the mission critical because that produces the correct values for `window-start` and `window-end`.  If WSF will only be running once, then go ahead and perform the time-costly calculations and place the overlays immediately.  If the WSF will be running more than once, then the *initial* WSF values for `window-start and `window-end` are wrong -- in that case, wait until the last call of WSF to perform the calculations and place overlays.

OPTION # 2:  Call `set-window-buffer` from the `post-command-hook` as a means of forcing WSF to run during the latter part of redisplay.  In this case, we never use the PCH values of `window-start` and `window-end` -- instead, we wait for WSF to give us the correct values.  This solution is not preferred because `set-window-buffer` was not designed to be used solely as a WSF trigger.  In the context of my example, I don't need to set the window buffer and I don't need to run the `window-configuration-change-hook` -- I just want to force WSF to run during the latter part of redisplay.

OPTION # 3:  Trigger the WSF without all the hoopla -- e.g., w->optional_new_start = true;.  E.g., my sample C-function `force_wsf`.

OPTION # 4 (ideal):  Create an entirely new animal that knows whether WSF will run more than once, and only produces the correct values for `window-start` and `window-end` in ALL circumstances, and then permits the user to run a custom function that takes advantage of those values.

Thanks,

Keith




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

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


Received: (at 22404) by debbugs.gnu.org; 21 Jan 2016 17:41:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 21 12:41:16 2016
Received: from localhost ([127.0.0.1]:56670 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aMJES-0002e5-7t
	for submit <at> debbugs.gnu.org; Thu, 21 Jan 2016 12:41:16 -0500
Received: from eggs.gnu.org ([208.118.235.92]:38286)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <eliz@HIDDEN>) id 1aMJEQ-0002ds-RT
 for 22404 <at> debbugs.gnu.org; Thu, 21 Jan 2016 12:41:15 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <eliz@HIDDEN>) id 1aMJEI-0003RT-Gn
 for 22404 <at> debbugs.gnu.org; Thu, 21 Jan 2016 12:41:09 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,RP_MATCHES_RCVD
 autolearn=disabled version=3.3.2
Received: from fencepost.gnu.org ([2001:4830:134:3::e]:49210)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1aMJEI-0003RP-Ds; Thu, 21 Jan 2016 12:41:06 -0500
Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4445
 helo=HOME-C4E4A596F7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1aMJEH-0004ql-QU; Thu, 21 Jan 2016 12:41:06 -0500
Date: Thu, 21 Jan 2016 19:41:20 +0200
Message-Id: <83mvry96f3.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Keith David Bershatsky <esq@HIDDEN>
In-reply-to: <m2io2nk6gn.wl%esq@HIDDEN> (message from Keith David
 Bershatsky on Wed, 20 Jan 2016 18:32:40 -0800)
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
References: <m2io2nk6gn.wl%esq@HIDDEN>
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From: 2001:4830:134:3::e
X-Spam-Score: -5.0 (-----)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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>
Reply-To: Eli Zaretskii <eliz@HIDDEN>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -5.0 (-----)

> Date:  Wed, 20 Jan 2016 18:32:40 -0800
> From:  Keith David Bershatsky <esq@HIDDEN>
> Cc:  22404 <at> debbugs.gnu.org
> 
> `set-window-start` (without the third option) would indeed trigger the WSF because it contains a key ingredient:  `w->force_start = true`.
> 
> Because the second argument (i.e., POS) cannot be known from the PCH when point has moved beyond the visible window, `set-window-start` is not a viable substitute for this feature request.

Then I'm afraid I must insist on understanding your needs better.  I
still don't, not even after re-reading your description several times.

Maybe you could describe your use case from a different perspective:
instead of telling how you tried to make sure window-scroll-functions
are run exactly once, perhaps try to describe the problem for which
you needed to invoke window-scroll-functions in the first place.
After all, window-scroll-functions is just the means towards some
specific goal.  And I don't think I understand the goal.

Once you described what you are trying to accomplish, it might be
easier to understand how you arrived at window-scroll-functions and
the need to run them when you do.

> The attached patch is an example of an implementation of this feature request.  I created a new function called `force-wsf`, whose sole purpose is to trigger the WSF to run during redisplay -- after the PCH has already finished.  As noted in a previous e-mail, `run-window-scroll-functions` doesn't accomplish what `force-wsf` can achieve because the former runs the function attached to the WSF immediately -- instead of waiting until later on during redisplay when the correct values of `window-start` and `window-end` are ascertainable.

I'd prefer to understand the need before we discuss the
implementation.

> I would, however, still like to come up with a test at the C-source code level that tells me whether the WSF will run more than one time

I think this is fundamentally impossible.  But I didn't yet take a
good enough look at the involved code, so maybe I'm missing something.

Thanks.




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

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


Received: (at 22404) by debbugs.gnu.org; 21 Jan 2016 02:32:50 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jan 20 21:32:50 2016
Received: from localhost ([127.0.0.1]:55691 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aM53J-0003bd-OS
	for submit <at> debbugs.gnu.org; Wed, 20 Jan 2016 21:32:49 -0500
Received: from cobb.liquidweb.com ([50.28.13.150]:41975)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <esq@HIDDEN>) id 1aM53I-0003bP-P7
 for 22404 <at> debbugs.gnu.org; Wed, 20 Jan 2016 21:32:49 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lawlist.com;
 s=default; 
 h=Content-Type:MIME-Version:Subject:Cc:To:From:Message-ID:Date;
 bh=tzunJn7d/AW9pyuVSgrB6BGFsc3rtrzF5qCoFu2A6+8=; 
 b=k972R6108FkXKpGiaYHoyzrjmv4KQzi/8FxxubrnyoXIgpNCr+F4sZwvybQIwP+tSmhsOW057dZI4XkMEqwXgaofYjyYqnBnx2/JhPMF0pwQ6ErglaUs0RRLyKpbBcK2;
Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:54898
 helo=server.local.localhost)
 by cobb.liquidweb.com with esmtp (Exim 4.82)
 (envelope-from <esq@HIDDEN>)
 id 1aM538-0000vA-Qx; Wed, 20 Jan 2016 21:32:39 -0500
Date: Wed, 20 Jan 2016 18:32:40 -0800
Message-ID: <m2io2nk6gn.wl%esq@HIDDEN>
From: Keith David Bershatsky <esq@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
MIME-Version: 1.0 (generated by   - "")
Content-Type: multipart/mixed; boundary="Multipart_Wed_Jan_20_18:32:39_2016-1"
X-AntiAbuse: This header was added to track abuse,
 please include it with any abuse report
X-AntiAbuse: Primary Hostname - cobb.liquidweb.com
X-AntiAbuse: Original Domain - debbugs.gnu.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - lawlist.com
X-Get-Message-Sender-Via: cobb.liquidweb.com: acl_c_relayhosts_text_entry:
 lawlist|lawlist.com
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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: -0.7 (/)

--Multipart_Wed_Jan_20_18:32:39_2016-1
Content-Type: text/plain; charset=US-ASCII

`set-window-start` (without the third option) would indeed trigger the WSF because it contains a key ingredient:  `w->force_start = true`.

Because the second argument (i.e., POS) cannot be known from the PCH when point has moved beyond the visible window, `set-window-start` is not a viable substitute for this feature request.

The attached patch is an example of an implementation of this feature request.  I created a new function called `force-wsf`, whose sole purpose is to trigger the WSF to run during redisplay -- after the PCH has already finished.  As noted in a previous e-mail, `run-window-scroll-functions` doesn't accomplish what `force-wsf` can achieve because the former runs the function attached to the WSF immediately -- instead of waiting until later on during redisplay when the correct values of `window-start` and `window-end` are ascertainable.

This is my first attempt at writing something like this, and I'm not sure exactly if everything is correct.  It does, however, appear to achieve the desired affect -- i.e., run the WSF at least once every command loop (even if no scrolling occurs) so we can always know the correct values for `window-start` and `window-end`.  It is no longer necessary to guess with `elisp` from the PCH regarding whether WSF will run.

I would, however, still like to come up with a test at the C-source code level that tells me whether the WSF will run more than one time -- because I only care about the last call on the WSF when the final values for `window-start` and `window-end` become available.

The usage for the new function `force-wsf` is as follows:

    (defun pch-fn ()
      (force-wsf (selected-window)))
    
    (add-hook 'post-command-hook 'pch-fn nil 'local)
    
    (defun wsf-fn (win start)
      (message "point: %s | win: %s | start: %s | end: %s" 
        ;; A better test at the C-source code level appears to be needed to ascertain whether
        ;; the WSF will run more than one time -- because we want the value for `window-start`
        ;; and `window-end win t` based on the LAST time WSF runs during the command loop.
        (if (pos-visible-in-window-p nil nil nil)
          "visible"
          "NOT visible")
        win start (window-end win t)))
    
    (add-hook 'window-scroll-functions 'wsf-fn nil 'local)

The new function in window.c looks like this:

    DEFUN ("force-wsf", Fforce_wsf, Sforce_wsf, 0, 1, 0,
           doc: /* Set force_start so that redisplay_window will run the
    window-scroll-functions.  */)
      (Lisp_Object window)
    {
      register struct window *w = decode_live_window (window);
        w->optional_new_start = true;
        return;
    }

And, the there is one additional line that may also be required further on down in window.d:

  defsubr (&Sforce_wsf);

Thanks,

Keith

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

At Wed, 20 Jan 2016 15:34:41 +0200,
Eli Zaretskii wrote:
> 
> > . . . you need to call set-window-start with its 3rd
> argument omitted or nil.  Does that solve your problem?


--Multipart_Wed_Jan_20_18:32:39_2016-1
Content-Type: application/diff; type=patch
Content-Disposition: attachment; filename="patch.diff"
Content-Transfer-Encoding: base64

ZGlmZiAtLWdpdCBhL3NyYy93aW5kb3cuYyBiL3NyYy93aW5kb3cuYwppbmRleCA0YWViOGIzLi5m
OTlhMWI1IDEwMDY0NAotLS0gYS9zcmMvd2luZG93LmMKKysrIGIvc3JjL3dpbmRvdy5jCkBAIC0z
MzIzLDYgKzMzMjMsMTYgQEAgc2V0X3dpbmRvd19idWZmZXIgKExpc3BfT2JqZWN0IHdpbmRvdywg
TGlzcF9PYmplY3QgYnVmZmVyLAogICB1bmJpbmRfdG8gKGNvdW50LCBRbmlsKTsKIH0KIAorREVG
VU4gKCJmb3JjZS13c2YiLCBGZm9yY2Vfd3NmLCBTZm9yY2Vfd3NmLCAwLCAxLCAwLAorICAgICAg
IGRvYzogLyogU2V0IGZvcmNlX3N0YXJ0IHNvIHRoYXQgcmVkaXNwbGF5X3dpbmRvdyB3aWxsIHJ1
biB0aGUKK3dpbmRvdy1zY3JvbGwtZnVuY3Rpb25zLiAgKi8pCisgIChMaXNwX09iamVjdCB3aW5k
b3cpCit7CisgIHJlZ2lzdGVyIHN0cnVjdCB3aW5kb3cgKncgPSBkZWNvZGVfbGl2ZV93aW5kb3cg
KHdpbmRvdyk7CisgICAgdy0+b3B0aW9uYWxfbmV3X3N0YXJ0ID0gdHJ1ZTsKKyAgICByZXR1cm47
Cit9CisKIERFRlVOICgic2V0LXdpbmRvdy1idWZmZXIiLCBGc2V0X3dpbmRvd19idWZmZXIsIFNz
ZXRfd2luZG93X2J1ZmZlciwgMiwgMywgMCwKICAgICAgICBkb2M6IC8qIE1ha2UgV0lORE9XIGRp
c3BsYXkgQlVGRkVSLU9SLU5BTUUuCiBXSU5ET1cgbXVzdCBiZSBhIGxpdmUgd2luZG93IGFuZCBk
ZWZhdWx0cyB0byB0aGUgc2VsZWN0ZWQgb25lLgpAQCAtNzQxOCw2ICs3NDI4LDcgQEAgZGlzcGxh
eWVkIGFmdGVyIGEgc2Nyb2xsaW5nIG9wZXJhdGlvbiB0byBiZSBzb21ld2hhdCBpbmFjY3VyYXRl
LiAgKi8pOwogICBkZWZzdWJyICgmU2RlbGV0ZV9vdGhlcl93aW5kb3dzX2ludGVybmFsKTsKICAg
ZGVmc3ViciAoJlNkZWxldGVfd2luZG93X2ludGVybmFsKTsKICAgZGVmc3ViciAoJlNyZXNpemVf
bWluaV93aW5kb3dfaW50ZXJuYWwpOworICBkZWZzdWJyICgmU2ZvcmNlX3dzZik7CiAgIGRlZnN1
YnIgKCZTc2V0X3dpbmRvd19idWZmZXIpOwogICBkZWZzdWJyICgmU3J1bl93aW5kb3dfY29uZmln
dXJhdGlvbl9jaGFuZ2VfaG9vayk7CiAgIGRlZnN1YnIgKCZTcnVuX3dpbmRvd19zY3JvbGxfZnVu
Y3Rpb25zKTsK

--Multipart_Wed_Jan_20_18:32:39_2016-1--




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

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


Received: (at 22404) by debbugs.gnu.org; 20 Jan 2016 13:34:42 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jan 20 08:34:42 2016
Received: from localhost ([127.0.0.1]:54483 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aLsuI-0005Is-I7
	for submit <at> debbugs.gnu.org; Wed, 20 Jan 2016 08:34:42 -0500
Received: from eggs.gnu.org ([208.118.235.92]:55335)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <eliz@HIDDEN>) id 1aLsuG-0005If-BT
 for 22404 <at> debbugs.gnu.org; Wed, 20 Jan 2016 08:34:40 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <eliz@HIDDEN>) id 1aLsu6-000653-Cw
 for 22404 <at> debbugs.gnu.org; Wed, 20 Jan 2016 08:34:35 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD
 autolearn=disabled version=3.3.2
Received: from fencepost.gnu.org ([2001:4830:134:3::e]:53516)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1aLsu6-00064z-9h; Wed, 20 Jan 2016 08:34:30 -0500
Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3120
 helo=HOME-C4E4A596F7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1aLsu5-0001Ey-M7; Wed, 20 Jan 2016 08:34:30 -0500
Date: Wed, 20 Jan 2016 15:34:41 +0200
Message-Id: <83fuxs9xxq.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Keith David Bershatsky <esq@HIDDEN>
In-reply-to: <m24me9l339.wl%esq@HIDDEN> (message from Keith David
 Bershatsky on Tue, 19 Jan 2016 12:35:38 -0800)
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
References: <m24me9l339.wl%esq@HIDDEN>
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From: 2001:4830:134:3::e
X-Spam-Score: -5.0 (-----)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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>
Reply-To: Eli Zaretskii <eliz@HIDDEN>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -5.0 (-----)

> Date:  Tue, 19 Jan 2016 12:35:38 -0800
> From:  Keith David Bershatsky <esq@HIDDEN>
> Cc:  22404 <at> debbugs.gnu.org
> 
> Explicitly calling `set-window-start` doesn't appear to trigger the WSF based on the following test -- e.g., moving around the window without scrolling doesn't yield any messages.
> 
> (setq scroll-conservatively 101)
> 
> (defvar pch-test-var nil)
> 
> (defun pch-fn ()
>   (set-window-start (selected-window) (window-start (selected-window)) 'noforce))

Sorry, I was mistaken: you need to call set-window-start with its 3rd
argument omitted or nil.  Does that solve your problem?




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

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


Received: (at 22404) by debbugs.gnu.org; 19 Jan 2016 23:07:56 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jan 19 18:07:56 2016
Received: from localhost ([127.0.0.1]:54150 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aLfNU-0004JC-BR
	for submit <at> debbugs.gnu.org; Tue, 19 Jan 2016 18:07:56 -0500
Received: from cobb.liquidweb.com ([50.28.13.150]:36392)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <esq@HIDDEN>) id 1aLfNT-0004Iz-2u
 for 22404 <at> debbugs.gnu.org; Tue, 19 Jan 2016 18:07:55 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lawlist.com;
 s=default; 
 h=Content-Type:MIME-Version:Subject:Cc:To:From:Message-ID:Date;
 bh=4f6Uz2+8Lfa78xxVyko4uhmV8KcwzmVzEwWyiupL7pM=; 
 b=M9esn6d6xNaNcJKFLAdARFe5hKMqpWbDT40gAtELTWk65r9p1u19+D7Eo+K2lMSZnMkCNV7lWw88HJfvQzWf16sQ60QIB68gDNx4pzaPKKiAcpQC7cRS+4K2YQ5gC11I;
Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:52396
 helo=server.local.localhost)
 by cobb.liquidweb.com with esmtp (Exim 4.82)
 (envelope-from <esq@HIDDEN>)
 id 1aLfNK-0005mJ-9W; Tue, 19 Jan 2016 18:07:46 -0500
Date: Tue, 19 Jan 2016 15:07:46 -0800
Message-ID: <m21t9di2wt.wl%esq@HIDDEN>
From: Keith David Bershatsky <esq@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
MIME-Version: 1.0 (generated by   - "")
Content-Type: text/plain; charset=US-ASCII
X-AntiAbuse: This header was added to track abuse,
 please include it with any abuse report
X-AntiAbuse: Primary Hostname - cobb.liquidweb.com
X-AntiAbuse: Original Domain - debbugs.gnu.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - lawlist.com
X-Get-Message-Sender-Via: cobb.liquidweb.com: acl_c_relayhosts_text_entry:
 lawlist|lawlist.com
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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: -0.7 (/)

The following example uses `pos-visible-in-window-p` to guess as to whether the WSF will run more than one time -- i.e., if point is not fully visible, then WSF will run again.  [The last call to WSF is the most important so that the values of window-start and window-end are truly accurate.]  In addition to the WSF trigger feature request, a more sophisticated C-source solution to ascertain whether the WSF will run more than one time would be helpful.

(setq scroll-conservatively 101)

(defun pch-fn ()
  (let ((window-configuration-change-hook nil))
    (set-window-buffer (selected-window) (current-buffer) 'keep-margins)))

(add-hook 'post-command-hook 'pch-fn nil 'local)

(defun wsf-fn (win start)
  (message "point: %s | win: %s | start: %s | end: %s" 
    (if (pos-visible-in-window-p nil nil nil)
      "visible"
      "NOT visible")
    win start (window-end win t)))

(add-hook 'window-scroll-functions 'wsf-fn nil 'local)





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

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


Received: (at 22404) by debbugs.gnu.org; 19 Jan 2016 20:35:49 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jan 19 15:35:49 2016
Received: from localhost ([127.0.0.1]:54076 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aLd0H-0005at-La
	for submit <at> debbugs.gnu.org; Tue, 19 Jan 2016 15:35:49 -0500
Received: from cobb.liquidweb.com ([50.28.13.150]:33045)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <esq@HIDDEN>) id 1aLd0F-0005ad-JN
 for 22404 <at> debbugs.gnu.org; Tue, 19 Jan 2016 15:35:47 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lawlist.com;
 s=default; 
 h=Content-Type:MIME-Version:Subject:Cc:To:From:Message-ID:Date;
 bh=anom+d5VUlNx2LS6ImfI6h4ZUtShaoC1tuzEDCnc6RI=; 
 b=DCjVg9fRgGQENVydGz61AeeIDKQ3uc0yQ+yhEWTlrXWZArO3jng+NvUts/pFVvFnUlUPbQ5NBBhuuGFqgJsc3maed6weKoj8ZmI+ZBSs7Ayn4mDtICD9lTgZB0bl+2NK;
Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:51083
 helo=server.local.localhost)
 by cobb.liquidweb.com with esmtp (Exim 4.82)
 (envelope-from <esq@HIDDEN>)
 id 1aLd04-0002bu-2C; Tue, 19 Jan 2016 15:35:36 -0500
Date: Tue, 19 Jan 2016 12:35:38 -0800
Message-ID: <m24me9l339.wl%esq@HIDDEN>
From: Keith David Bershatsky <esq@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
MIME-Version: 1.0 (generated by   - "")
Content-Type: text/plain; charset=US-ASCII
X-AntiAbuse: This header was added to track abuse,
 please include it with any abuse report
X-AntiAbuse: Primary Hostname - cobb.liquidweb.com
X-AntiAbuse: Original Domain - debbugs.gnu.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - lawlist.com
X-Get-Message-Sender-Via: cobb.liquidweb.com: acl_c_relayhosts_text_entry:
 lawlist|lawlist.com
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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: -0.7 (/)

Explicitly calling `set-window-start` doesn't appear to trigger the WSF based on the following test -- e.g., moving around the window without scrolling doesn't yield any messages.

(setq scroll-conservatively 101)

(defvar pch-test-var nil)

(defun pch-fn ()
  (set-window-start (selected-window) (window-start (selected-window)) 'noforce))

(add-hook 'post-command-hook 'pch-fn nil 'local)

(defun wsf-fn (win start)
  (message "win: %s | start: %s | end: %s" win start (window-end win t)))

(add-hook 'window-scroll-functions 'wsf-fn nil 'local)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

At Tue, 19 Jan 2016 21:39:53 +0200,
Eli Zaretskii wrote:
> 
> If you call set-window-start with its 3rd argument non-nil, doesn't
> that force window-scroll-functions to be run?




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

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


Received: (at 22404) by debbugs.gnu.org; 19 Jan 2016 19:39:55 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jan 19 14:39:54 2016
Received: from localhost ([127.0.0.1]:54058 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aLc8A-0004CV-PB
	for submit <at> debbugs.gnu.org; Tue, 19 Jan 2016 14:39:54 -0500
Received: from eggs.gnu.org ([208.118.235.92]:59535)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <eliz@HIDDEN>) id 1aLc89-0004CE-50
 for 22404 <at> debbugs.gnu.org; Tue, 19 Jan 2016 14:39:53 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <eliz@HIDDEN>) id 1aLc80-0007fe-Nn
 for 22404 <at> debbugs.gnu.org; Tue, 19 Jan 2016 14:39:47 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD
 autolearn=disabled version=3.3.2
Received: from fencepost.gnu.org ([2001:4830:134:3::e]:36721)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1aLc80-0007fY-K8; Tue, 19 Jan 2016 14:39:44 -0500
Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2346
 helo=HOME-C4E4A596F7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1aLc7z-00084i-Rd; Tue, 19 Jan 2016 14:39:44 -0500
Date: Tue, 19 Jan 2016 21:39:53 +0200
Message-Id: <83a8o1bbp2.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Keith David Bershatsky <esq@HIDDEN>
In-reply-to: <m2ziw19zfu.wl%esq@HIDDEN> (message from Keith David
 Bershatsky on Tue, 19 Jan 2016 10:49:57 -0800)
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
References: <m2ziw19zfu.wl%esq@HIDDEN>
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From: 2001:4830:134:3::e
X-Spam-Score: -5.0 (-----)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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>
Reply-To: Eli Zaretskii <eliz@HIDDEN>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -5.0 (-----)

If you call set-window-start with its 3rd argument non-nil, doesn't
that force window-scroll-functions to be run?




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

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


Received: (at 22404) by debbugs.gnu.org; 19 Jan 2016 19:27:08 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jan 19 14:27:08 2016
Received: from localhost ([127.0.0.1]:54054 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aLbvo-0003tH-K7
	for submit <at> debbugs.gnu.org; Tue, 19 Jan 2016 14:27:08 -0500
Received: from cobb.liquidweb.com ([50.28.13.150]:59745)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <esq@HIDDEN>) id 1aLbvn-0003sw-CZ
 for 22404 <at> debbugs.gnu.org; Tue, 19 Jan 2016 14:27:07 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lawlist.com;
 s=default; 
 h=Content-Type:MIME-Version:Subject:Cc:To:From:Message-ID:Date;
 bh=UUK713tnyeiLbGWRF25Z9FeS3MsFhZathDRh+7Q80wU=; 
 b=bpcJD/RmzJFCySPwXajGS1snzw1mUHQZqwjhdrUgssB1OKjDeZfh5a3H+y9YtI8B1/KuD41zi2t1k/D0vMFDZVHtuGaQ8aE4zB+Ok/befxO2rC7iSDhHXG0ZONHOL/j5;
Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:50396
 helo=server.local.localhost)
 by cobb.liquidweb.com with esmtp (Exim 4.82)
 (envelope-from <esq@HIDDEN>)
 id 1aLbvd-0005Rf-Ty; Tue, 19 Jan 2016 14:26:58 -0500
Date: Tue, 19 Jan 2016 11:26:59 -0800
Message-ID: <m2vb6p9xq4.wl%esq@HIDDEN>
From: Keith David Bershatsky <esq@HIDDEN>
To: "John Wiegley" <johnw@HIDDEN>
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
MIME-Version: 1.0 (generated by   - "")
Content-Type: text/plain; charset=US-ASCII
X-AntiAbuse: This header was added to track abuse,
 please include it with any abuse report
X-AntiAbuse: Primary Hostname - cobb.liquidweb.com
X-AntiAbuse: Original Domain - debbugs.gnu.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - lawlist.com
X-Get-Message-Sender-Via: cobb.liquidweb.com: acl_c_relayhosts_text_entry:
 lawlist|lawlist.com
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 22404
Cc: Eli Zaretskii <eliz@HIDDEN>, 22404 <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: -0.7 (/)

I too, John, got really excited when I saw `run-window-scroll-functions`.  Unfortunately, it doesn't return the correct window-start and window-end because it runs too soon.  It's not really a trigger that forces the WSF to run at its normal stages during redisplay.  If you run the following test in a lengthy buffer in a vertical split window pane with a *Messages* buffer in the other pane, then use the down arrow key to force window scrolling as the cursor moves, you'll see the numbers from the PCH are wrong and the numbers from WSF are correct.  The other problem with `run-window-scroll-functions` for this usage is that the WSF still runs when it is supposed to run, but there is an extra call to just the function attached to the WSF hook -- in other words, there might be as many as three (3) times the WSF function runs -- once with the wrong results off of the PCH, and once with the initial results from the WSF, and one final time when the WSF does its last call.  That last call on the WSF is the one I'm seeking.  Sometimes WSF only runs once when scrolling if point is fully visible.

(setq scroll-conservatively 101)

(defvar pch-test-var nil)

(defun pch-fn ()
  (let ((pch-test-var t))
  (run-window-scroll-functions (selected-window))))

(add-hook 'post-command-hook 'pch-fn nil 'local)

(defun wsf-fn (win start)
  (message "hook: %s | win: %s | start: %s | end: %s"
    (if pch-test-var "PCH" "WSF") win start (window-end win t)))

(add-hook 'window-scroll-functions 'wsf-fn nil 'local)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

At Tue, 19 Jan 2016 10:53:32 -0800,
John Wiegley wrote:
> 
> >>>>> Keith David Bershatsky <esq@HIDDEN> writes:
> 
> > `run-window-scroll-functions` runs immediately and is not a viable
> > substitute for this feature request.
> 
> Keith, why is the fact that it runs immediately a problem? The very name of
> this function answers your feature request, but you don't explain why it is
> insufficient, other than this comment.
> 
> How would run-window-scroll-functions need to be changed, since that is the
> advertised way to... run the window-scroll-functions?
> 
> -- 
> John Wiegley




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

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


Received: (at 22404) by debbugs.gnu.org; 19 Jan 2016 18:53:54 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jan 19 13:53:54 2016
Received: from localhost ([127.0.0.1]:54024 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aLbPe-000322-8s
	for submit <at> debbugs.gnu.org; Tue, 19 Jan 2016 13:53:54 -0500
Received: from mail-pa0-f49.google.com ([209.85.220.49]:33598)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <jwiegley@HIDDEN>) id 1aLbPc-00031q-CO
 for 22404 <at> debbugs.gnu.org; Tue, 19 Jan 2016 13:53:52 -0500
Received: by mail-pa0-f49.google.com with SMTP id cy9so455926473pac.0
 for <22404 <at> debbugs.gnu.org>; Tue, 19 Jan 2016 10:53:52 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=from:to:cc:subject:in-reply-to:date:message-id:references
 :user-agent:reply-to:mime-version:content-type;
 bh=ztbzhUpC9bsHQ9vfmrbzjWxv0tuz/GfVB4JW2H2Q+JE=;
 b=EaaiHwyAQkgTs/muLfT2f0QoqGLDHnQzkK5Rbj7rV43+EQ8DFAXskKb0z8PS0r65bh
 DdfdFyYmEo6DTTBQcYJQEd1dIcioi45QNcS6Uj9qpVkMKbABozJVyX+Nm9GIAIAYdSdq
 9BsnXtIByA5nM3chp9KyZvp4m/SMLlD8fNY6FClH50hti6Gi7JJ0Lo4A+LQOrbBoKAhB
 +JyjL6SOvnw4KiHoqxGNT/v9zR5rHxmDI6yz+jERf8ivWXHNf45mpstXfanLBJgSjto9
 mwLSlu/i8i1SSHYxPbSUYfH+uErfJ7R7cCP2n44siddy7vOGxYBjeYUmm4hklS9CSvhb
 y1TA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20130820;
 h=x-gm-message-state:from:to:cc:subject:in-reply-to:date:message-id
 :references:user-agent:reply-to:mime-version:content-type;
 bh=ztbzhUpC9bsHQ9vfmrbzjWxv0tuz/GfVB4JW2H2Q+JE=;
 b=Wf+TkVWsIndy2BreHwnPW6NLZ93QWXTXA+6VMOC3aOxBmP0nAJC/YUNFu+6VOvAV2k
 mLkiRQSbdMyMZpVD4c/4Zku/5t9t5wIW62g+yNoJgc/x5dS2lhdobjP7qVrQNZ9uQmyL
 zLNohinCNVxpLAEGFh2R/FbJPoTg50ZixgMsB0q1RkLg91tK+9rjQHSoNHSos3fjq0Zj
 p3KjMpuiNSne3hhtcU761k2Rp6aoQojnBfV66L3ixLISBC2xe7xDo6wicS+qsG1xPFUt
 eHKPl7j/PtTIM7aRIVilwlTqmA49oDfXzwTjPSn3GHgefuWWNqloeLPGYQIGVxHgzhfU
 534A==
X-Gm-Message-State: AG10YORcLqSF+DEQkchj2q1LEtpMrOcTxisvpK23B+7N+gy5vJHG/NxpRgqsXIo43+Sf3Q==
X-Received: by 10.66.232.202 with SMTP id tq10mr3894723pac.14.1453229626407;
 Tue, 19 Jan 2016 10:53:46 -0800 (PST)
Received: from Vulcan.local (76-234-68-79.lightspeed.frokca.sbcglobal.net.
 [76.234.68.79])
 by smtp.gmail.com with ESMTPSA id tm4sm43584612pab.3.2016.01.19.10.53.45
 (version=TLS1 cipher=AES128-SHA bits=128/128);
 Tue, 19 Jan 2016 10:53:45 -0800 (PST)
From: John Wiegley <jwiegley@HIDDEN>
X-Google-Original-From: "John Wiegley" <johnw@HIDDEN>
Received: by Vulcan.local (Postfix, from userid 501)
 id E69C3124F86F2; Tue, 19 Jan 2016 10:53:44 -0800 (PST)
To: Keith David Bershatsky <esq@HIDDEN>
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
In-Reply-To: <m260yqdsp7.wl%esq@HIDDEN> (Keith David Bershatsky's message
 of "Mon, 18 Jan 2016 21:49:40 -0800")
Date: Tue, 19 Jan 2016 10:53:32 -0800
Message-ID: <m2bn8hl7tf.fsf@HIDDEN>
References: <m260yqdsp7.wl%esq@HIDDEN>
User-Agent: Gnus/5.130014 (Ma Gnus v0.14) Emacs/24.5 (darwin)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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>
Reply-To: John Wiegley <johnw@HIDDEN>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.7 (/)

>>>>> Keith David Bershatsky <esq@HIDDEN> writes:

> `run-window-scroll-functions` runs immediately and is not a viable
> substitute for this feature request.

Keith, why is the fact that it runs immediately a problem? The very name of
this function answers your feature request, but you don't explain why it is
insufficient, other than this comment.

How would run-window-scroll-functions need to be changed, since that is the
advertised way to... run the window-scroll-functions?

-- 
John Wiegley                  GPG fingerprint = 4710 CF98 AF9B 327B B80F
http://newartisans.com                          60E1 46C4 BD1A 7AC1 4BA2




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

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


Received: (at 22404) by debbugs.gnu.org; 19 Jan 2016 18:50:07 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jan 19 13:50:06 2016
Received: from localhost ([127.0.0.1]:54020 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aLbLy-0002wP-OU
	for submit <at> debbugs.gnu.org; Tue, 19 Jan 2016 13:50:06 -0500
Received: from cobb.liquidweb.com ([50.28.13.150]:58777)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <esq@HIDDEN>) id 1aLbLx-0002vr-9T
 for 22404 <at> debbugs.gnu.org; Tue, 19 Jan 2016 13:50:05 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lawlist.com;
 s=default; 
 h=Content-Type:MIME-Version:Subject:Cc:To:From:Message-ID:Date;
 bh=j4P4Vyr+ukMFLelPeE4RIvGFS/MVdd+kjr9FwJRv8o8=; 
 b=7qzhJan5WZezTtCE1O0IEVrSyjjfLgLIBPlASX4ewxOv7Si+ZcV7V9CGmPAVjZMtwTqKQRjE3vYfTlzWQnPozWEgWAFcDaTv/UqG/9By+gfyt76oFws47YvPX5PwT79S;
Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:50137
 helo=server.local.localhost)
 by cobb.liquidweb.com with esmtp (Exim 4.82)
 (envelope-from <esq@HIDDEN>)
 id 1aLbLo-0002OE-3u; Tue, 19 Jan 2016 13:49:56 -0500
Date: Tue, 19 Jan 2016 10:49:57 -0800
Message-ID: <m2ziw19zfu.wl%esq@HIDDEN>
From: Keith David Bershatsky <esq@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
MIME-Version: 1.0 (generated by   - "")
Content-Type: text/plain; charset=US-ASCII
X-AntiAbuse: This header was added to track abuse,
 please include it with any abuse report
X-AntiAbuse: Primary Hostname - cobb.liquidweb.com
X-AntiAbuse: Original Domain - debbugs.gnu.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - lawlist.com
X-Get-Message-Sender-Via: cobb.liquidweb.com: acl_c_relayhosts_text_entry:
 lawlist|lawlist.com
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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: -0.7 (/)

Thank you, Eli, for taking a look at this feature request.

The post-command-hook ("PCH") is only sufficient to return the correct window-start and window-end when no scrolling occurs.  If I attach a function to the PCH that places overlays, then I would need to know programmatically with 100% certainty whether the window-scroll-functions ("WSF") will be running one or more times subsequent to the PCH.  If the WSF will be running one or more times subsequent to the PCH, then I want to programmatically *prevent* overlays from being placed with the PCH -- i.e., so that they can instead be placed by the WSF.  If the WSF will run more than once, then I want to wait until the last time it runs to place my overlays -- i.e., because start/end have changed since the first time WSF ran.  E.g., point was partially visible and redisplay brings it into full view.

I was not able to come up with a 100% reliable test from the PCH that tells me whether WSF will be running one or more times subsequent thereto.  So, I am using the following work-around to force the WSF to run all the time.  The problem remaining is that I still need a reliable test to determine whether the WSF will be running more than once, so that I can delay my overlay function until the last call.  The feature request is essentially:  trigger WSF (similar to set-window-buffer), but there is no need to set-window-buffer and there is no need to run the window-configuration-change-hook.  If there is any way you can think of to programmatically know with 100% certainty whether the WSF will be running more than one time, your help would be greatly appreciated.

(setq scroll-conservatively 101)

(defun pch-fn ()
  (let ((window-configuration-change-hook nil))
    (set-window-buffer (selected-window) (current-buffer) 'keep-margins)))

(add-hook 'post-command-hook 'pch-fn nil 'local)

(defun wsf-fn (win start)
  (message "win: %s | start: %s | end: %s" win start (window-end win t)))

(add-hook 'window-scroll-functions 'wsf-fn nil 'local)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

At Tue, 19 Jan 2016 19:50:08 +0200,
Eli Zaretskii wrote:
> 
> * * *
> 
> Can you please tell more details about the problem you have?  I;ve
> read this description several times, and couldn't figure out why are
> you having problems.
> 
> For example, why can't you run your function from the
> post-command-hook directly?  If you want it to run after all the hook
> functions finished, you can use the APPEND argument to add-hook,
> right?
> 
> Or if the above somehow doesn't work, what about pre-command-hook?
> 
> And those are just 2 random thoughts that went through my head while I
> was reading your request.
> 
> Thanks.




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

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


Received: (at 22404) by debbugs.gnu.org; 19 Jan 2016 17:50:12 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jan 19 12:50:12 2016
Received: from localhost ([127.0.0.1]:53965 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aLaPz-0005pN-So
	for submit <at> debbugs.gnu.org; Tue, 19 Jan 2016 12:50:12 -0500
Received: from eggs.gnu.org ([208.118.235.92]:54370)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <eliz@HIDDEN>) id 1aLaPy-0005p9-56
 for 22404 <at> debbugs.gnu.org; Tue, 19 Jan 2016 12:50:10 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <eliz@HIDDEN>) id 1aLaPo-0003nJ-In
 for 22404 <at> debbugs.gnu.org; Tue, 19 Jan 2016 12:50:04 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,RP_MATCHES_RCVD
 autolearn=disabled version=3.3.2
Received: from fencepost.gnu.org ([2001:4830:134:3::e]:34647)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1aLaPo-0003nF-Fg; Tue, 19 Jan 2016 12:50:00 -0500
Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2245
 helo=HOME-C4E4A596F7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1aLaPn-00052N-Rc; Tue, 19 Jan 2016 12:50:00 -0500
Date: Tue, 19 Jan 2016 19:50:08 +0200
Message-Id: <83mvs1bgrz.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Keith David Bershatsky <esq@HIDDEN>
In-reply-to: <m260yqdsp7.wl%esq@HIDDEN> (message from Keith David
 Bershatsky on Mon, 18 Jan 2016 21:49:40 -0800)
Subject: Re: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
References: <m260yqdsp7.wl%esq@HIDDEN>
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From: 2001:4830:134:3::e
X-Spam-Score: -5.0 (-----)
X-Debbugs-Envelope-To: 22404
Cc: 22404 <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>
Reply-To: Eli Zaretskii <eliz@HIDDEN>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -5.0 (-----)

> Date: Mon, 18 Jan 2016 21:49:40 -0800
> From: Keith David Bershatsky <esq@HIDDEN>
> 
> As a feature request, please consider adding an alternative method to force the `window-scroll-functions` hook to run -- but NOT more than it would normally run. [In other words, it shouldn't run 3 times.]  I only found `(set-window-buffer (selected-window) (current-buffer))` as a viable means to achieve this goal.  `run-window-scroll-functions` runs immediately and is not a viable substitute for this feature request.  Some users may not wish to `set-window-buffer` or run the `window-configuration-change-hook` to achieve this feature request.
> 
> In my particular use case, I want to run a custom function only one time per command loop that is dependent upon the new `window-start` and `window-end`, which is only reliably available to the user after the `post-command-hook` has run its course.  My function is too costly time-wise to run more than once each command loop.  I have tried, to no avail, to come up with a test to ascertain with 100% accuracy (from the `post-command-hook`) to guess whether the `window-scroll-functions` hook will run and/or whether it will run more than one time (e.g., when cursor/point is partially visible).  I played around with `(pos-visible-in-window-p nil nil t)` and whether it returned a length of 0, 2 or 6 -- however, from the `post-command-hook`, that is insufficient to ascertain with 100% accuracy whether the `window-scroll-functions` hook will run once or twice or not at all.  The solution, I believe, is to force the `window-scroll-functions` hook to run during every redisplay -- but not more than it would normally run.
> 
> In other words, I want the `window-scroll-functions` hook to run every command loop when my custom minor-mode is active -- or twice if point/cursor is only partially visible (at the bottom of the window) and needs to be moved up a smidgen by redisplay.
> 
> Background:  my custom function is a cross-hairs created with overlays that works with `word-wrap` -- the vertical line is XPM that matches the character and color underneath.

Can you please tell more details about the problem you have?  I;ve
read this description several times, and couldn't figure out why are
you having problems.

For example, why can't you run your function from the
post-command-hook directly?  If you want it to run after all the hook
functions finished, you can use the APPEND argument to add-hook,
right?

Or if the above somehow doesn't work, what about pre-command-hook?

And those are just 2 random thoughts that went through my head while I
was reading your request.

Thanks.




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

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


Received: (at submit) by debbugs.gnu.org; 19 Jan 2016 05:49:58 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jan 19 00:49:58 2016
Received: from localhost ([127.0.0.1]:53312 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1aLPAz-0006qh-VJ
	for submit <at> debbugs.gnu.org; Tue, 19 Jan 2016 00:49:58 -0500
Received: from eggs.gnu.org ([208.118.235.92]:38450)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <esq@HIDDEN>) id 1aLPAy-0006qQ-Vv
 for submit <at> debbugs.gnu.org; Tue, 19 Jan 2016 00:49:57 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <esq@HIDDEN>) id 1aLPAs-00033W-FX
 for submit <at> debbugs.gnu.org; Tue, 19 Jan 2016 00:49:51 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,T_DKIM_INVALID
 autolearn=disabled version=3.3.2
Received: from lists.gnu.org ([2001:4830:134:3::11]:58217)
 by eggs.gnu.org with esmtp (Exim 4.71)
 (envelope-from <esq@HIDDEN>) id 1aLPAs-00033Q-Ct
 for submit <at> debbugs.gnu.org; Tue, 19 Jan 2016 00:49:50 -0500
Received: from eggs.gnu.org ([2001:4830:134:3::10]:57631)
 by lists.gnu.org with esmtp (Exim 4.71)
 (envelope-from <esq@HIDDEN>) id 1aLPAq-0002dQ-SK
 for bug-gnu-emacs@HIDDEN; Tue, 19 Jan 2016 00:49:50 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <esq@HIDDEN>) id 1aLPAm-00032b-NL
 for bug-gnu-emacs@HIDDEN; Tue, 19 Jan 2016 00:49:48 -0500
Received: from cobb.liquidweb.com ([50.28.13.150]:36291)
 by eggs.gnu.org with esmtp (Exim 4.71)
 (envelope-from <esq@HIDDEN>) id 1aLPAm-00032E-Fi
 for bug-gnu-emacs@HIDDEN; Tue, 19 Jan 2016 00:49:44 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lawlist.com;
 s=default; 
 h=Content-Type:MIME-Version:Subject:To:From:Message-ID:Date;
 bh=Y79lpXs/APiyUktz4K/J/cwl2I+0U7utswORXBxHHLc=; 
 b=sLqRwnS6nXwz96UIER4jEBEnvyfGhzhOzQ2LoQ1GENEUVc/pGgJR6PfCjJU+WTzPC5aHuftMYge/VL8uW3zDVugQe4bzMV+U6QxfRqjlglx6OmXteHZrjYuiMQUTsa3K;
Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:56866
 helo=server.local.localhost)
 by cobb.liquidweb.com with esmtp (Exim 4.82)
 (envelope-from <esq@HIDDEN>) id 1aLPAi-0007yS-Mu
 for bug-gnu-emacs@HIDDEN; Tue, 19 Jan 2016 00:49:40 -0500
Date: Mon, 18 Jan 2016 21:49:40 -0800
Message-ID: <m260yqdsp7.wl%esq@HIDDEN>
From: Keith David Bershatsky <esq@HIDDEN>
To: bug-gnu-emacs@HIDDEN
Subject: 25.1.50; Forcing `window-scroll-functions` to run.
MIME-Version: 1.0 (generated by   - "")
Content-Type: text/plain; charset=US-ASCII
X-AntiAbuse: This header was added to track abuse,
 please include it with any abuse report
X-AntiAbuse: Primary Hostname - cobb.liquidweb.com
X-AntiAbuse: Original Domain - gnu.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - lawlist.com
X-Get-Message-Sender-Via: cobb.liquidweb.com: acl_c_relayhosts_text_entry:
 lawlist|lawlist.com
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x
X-Received-From: 2001:4830:134:3::11
X-Spam-Score: -5.0 (-----)
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: -5.0 (-----)

As a feature request, please consider adding an alternative method to force the `window-scroll-functions` hook to run -- but NOT more than it would normally run. [In other words, it shouldn't run 3 times.]  I only found `(set-window-buffer (selected-window) (current-buffer))` as a viable means to achieve this goal.  `run-window-scroll-functions` runs immediately and is not a viable substitute for this feature request.  Some users may not wish to `set-window-buffer` or run the `window-configuration-change-hook` to achieve this feature request.

In my particular use case, I want to run a custom function only one time per command loop that is dependent upon the new `window-start` and `window-end`, which is only reliably available to the user after the `post-command-hook` has run its course.  My function is too costly time-wise to run more than once each command loop.  I have tried, to no avail, to come up with a test to ascertain with 100% accuracy (from the `post-command-hook`) to guess whether the `window-scroll-functions` hook will run and/or whether it will run more than one time (e.g., when cursor/point is partially visible).  I played around with `(pos-visible-in-window-p nil nil t)` and whether it returned a length of 0, 2 or 6 -- however, from the `post-command-hook`, that is insufficient to ascertain with 100% accuracy whether the `window-scroll-functions` hook will run once or twice or not at all.  The solution, I believe, is to force the `window-scroll-functions` hook to run during every redisplay -- but not more than it would normally run.

In other words, I want the `window-scroll-functions` hook to run every command loop when my custom minor-mode is active -- or twice if point/cursor is only partially visible (at the bottom of the window) and needs to be moved up a smidgen by redisplay.

Background:  my custom function is a cross-hairs created with overlays that works with `word-wrap` -- the vertical line is XPM that matches the character and color underneath.

Thanks,

Keith

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

In GNU Emacs 25.1.50.1 (x86_64-apple-darwin10.8.0, NS appkit-1038.36 Version 10.6.8 (Build 10K549))
 of 2016-01-03 built on server.local
Repository revision: e94b1799d4f4c57266bdbc4801b26fe0121b7c7a
Windowing system distributor 'Apple', version 10.3.1038
Configured using:
 'configure --with-ns --without-imagemagick --enable-checking=glyphs
 CPPFLAGS=-I/Users/HOME/.0.data/.0.emacs/macports/include
 LDFLAGS=-L/Users/HOME/.0.data/.0.emacs/macports/lib'

Configured features:
JPEG RSVG DBUS NOTIFY ACL LIBXML2 ZLIB TOOLKIT_SCROLL_BARS NS

Important settings:
  locale-coding-system: utf-8-unix

Major mode: Grep

Minor modes in effect:
  tabbar-mode: t
  sb-mode: t
  ml-mode: t
  hl-mode: t
  kb-mode: t
  sd-mode: t
  fl-mode: t
  bc-mode: t
  buffer-read-only: t

Recent messages:

Load-path shadows:
None found.

Features:
(shadow emacsbug message mml mml-sec mm-decode mm-bodies mm-encode
gmm-utils mailheader sendmail lawlist-ztree lawlist-ys lawlist-ws
lawlist-wl elmo-imap4 elmo-localdir modb-standard modb-legacy
elmo-internal elmo-flag mmelmo-imap mmelmo-buffer elsp-generic mel-u
epg-config lawlist-w3m doc-view jka-compr image-mode ccl lawlist-vl
lawlist-view lawlist-undo lawlist-txt lawlist-tm lawlist-tex compare-w
diff-mode lawlist-tabbar lawlist-speedbar lawlist-shell info
esh-groups ehelp ange-ftp lawlist-sgml lawlist-sb lawlist-ruler
lawlist-replace lawlist-rectangle lawlist-re-builder lawlist-python
skeleton lawlist-profiler lawlist-print lawlist-php cl-seq cc-langs
lawlist-perl lawlist-parens lawlist-org lawlist-calendar org-agenda
org org-macro org-footnote org-pcomplete org-list org-faces
org-entities org-version ob-emacs-lisp ob ob-tangle ob-ref ob-lob
ob-table ob-exp org-src ob-keys ob-comint ob-core ob-eval org-compat
org-macs org-loaddefs find-func holidays hol-loaddefs cal-menu
calendar cal-loaddefs lawlist-neotree lawlist-movement lawlist-mouse
lawlist-ml lawlist-misc lawlist-messages lawlist-mc lawlist-markdown
noutline outline lawlist-lorem lawlist-linum lawlist-keymap lawlist-js
json map thingatpt cc-mode cc-fonts cc-guess cc-menus cc-cmds
cc-styles cc-align cc-engine cc-vars cc-defs lawlist-ispell
lawlist-isearch lawlist-info lawlist-imenu lawlist-ibuffer lawlist-hl
lawlist-grep lawlist-git pcvs-util ido seq server conf-mode
lawlist-framebufs lawlist-frame lawlist-fm lawlist-files zeroconf dbus
xml lawlist-env lawlist-elscreen lawlist-elisp lawlist-dv
lawlist-image lawlist-ds lawlist-dired dired dired-loaddefs
format-spec lawlist-diff lawlist-desktop frameset lawlist-saveplace
lawlist-debug lawlist-window debug lawlist-css smie lawlist-compile rx
lawlist-color lawlist-cm lawlist-cc lawlist-font-lock cl-macs
lawlist-calc lawlist-calc+ lawlist-bk lawlist-bc lawlist-bbdb gnus
gnus-ems nnheader mail-utils wid-edit mail-parse rfc2231 rfc2047
rfc2045 ietf-drums mailabbrev mail-extr rfc822 timezone
lawlist-minibuffer gv lawlist-auth gnus-util mm-util help-fns
mail-prsvr password-cache lawlist-as lawlist-archive lawlist-apropos
lawlist-+ lawlist-lcl byte-opt bytecomp byte-compile cl-extra cconv
lawlist-help disp-table easy-mmode edmacro kmacro quail help-mode
easymenu cl-loaddefs cl-lib pcase derived advice shell pcomplete
comint ansi-color ring savehist time-date mule-util tooltip eldoc
electric uniquify ediff-hook vc-hooks lisp-float-type mwheel ns-win
ucs-normalize term/common-win tool-bar dnd fontset image regexp-opt
fringe tabulated-list newcomment elisp-mode lisp-mode prog-mode
register page menu-bar rfn-eshadow timer select scroll-bar mouse
jit-lock font-lock syntax facemenu font-core frame cl-generic cham
georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese charscript case-table
epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer
cl-preloaded nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote dbusbind kqueue cocoa
ns multi-tty make-network-process emacs)

Memory information:
((conses 16 2506629 211607)
 (symbols 48 86281 0)
 (miscs 40 1116 1187)
 (strings 32 198663 21468)
 (string-bytes 1 7537848)
 (vectors 16 61491)
 (vector-slots 8 1294267 27715)
 (floats 8 3369 803)
 (intervals 56 4477 414)
 (buffers 976 17))




Acknowledgement sent to Keith David Bershatsky <esq@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#22404; 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: Mon, 25 Nov 2019 12:00:02 UTC

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