From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Juanma Barranquero Newsgroups: gmane.emacs.bugs Subject: bug#37641: major/minor tick faces bleed into empty lines at the end of buffer Date: Tue, 8 Oct 2019 12:47:22 +0200 Message-ID: References: <83zhiczg1m.fsf@gnu.org> <83sgo3y632.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000b7b8de059463e613" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="100045"; mail-complaints-to="usenet@blaine.gmane.org" Cc: 37641@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue Oct 08 12:49:11 2019 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1iHn3H-000Pu4-2Q for geb-bug-gnu-emacs@m.gmane.org; Tue, 08 Oct 2019 12:49:11 +0200 Original-Received: from localhost ([::1]:53574 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iHn3F-0000t6-HL for geb-bug-gnu-emacs@m.gmane.org; Tue, 08 Oct 2019 06:49:09 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:46102) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iHn39-0000ss-5B for bug-gnu-emacs@gnu.org; Tue, 08 Oct 2019 06:49:04 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iHn38-0001tU-1k for bug-gnu-emacs@gnu.org; Tue, 08 Oct 2019 06:49:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:40799) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iHn37-0001tL-Tc for bug-gnu-emacs@gnu.org; Tue, 08 Oct 2019 06:49:01 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1iHn37-0006my-OR for bug-gnu-emacs@gnu.org; Tue, 08 Oct 2019 06:49:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Juanma Barranquero Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 08 Oct 2019 10:49:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 37641 X-GNU-PR-Package: emacs Original-Received: via spool by 37641-submit@debbugs.gnu.org id=B37641.157053168826034 (code B ref 37641); Tue, 08 Oct 2019 10:49:01 +0000 Original-Received: (at 37641) by debbugs.gnu.org; 8 Oct 2019 10:48:08 +0000 Original-Received: from localhost ([127.0.0.1]:49620 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iHn2F-0006lq-Tl for submit@debbugs.gnu.org; Tue, 08 Oct 2019 06:48:08 -0400 Original-Received: from mail-qk1-f174.google.com ([209.85.222.174]:33613) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iHn2B-0006lF-22 for 37641@debbugs.gnu.org; Tue, 08 Oct 2019 06:48:05 -0400 Original-Received: by mail-qk1-f174.google.com with SMTP id x134so16220913qkb.0 for <37641@debbugs.gnu.org>; Tue, 08 Oct 2019 03:48:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=pD3m0r7vRoK0qQErQ6LYlZ+qbFs2qYMSp9JRQycfZoo=; b=mKQyKbaJ2YXVwCYbX2KVnGmd6LJlnpndMzVWT+/qTk/BQUotoKArWwinMH4FBS86cF TgUz8hs1tuxJLQQ0rgPhXeKCQkz7GeFmYfzLBpBAQAvCaddN0DeaHuMRfg4mOLJAPmAc E9SXnXcKg+LKzRvKuSnYLg3x71gB8Uofe1o5Kgz5QvoVx9+lCDc9PhhSkH5YEp77cx26 Rvy2Sva3alPIhmRQaCIi+P9le+dcwLx4c6VghThwENirfKMCFhL1IkcH1q/WmAaGG0Cs NuZ0fduImY8U0FGM1WSQBak2HOKZAjGBUwCn0bdsTW14Mv8p1qyspLltrgAiN0IExeTO ux4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=pD3m0r7vRoK0qQErQ6LYlZ+qbFs2qYMSp9JRQycfZoo=; b=Gkwd9nOmsAXzi7fDacT3CW4j8quAuB8MUqRDmdTNHz6J/K7haXjti4YQR6y95cFsWv s6dr3Xa/UUVqpVqcAK87CDz1L1X+wMdG5Vji5rBsIGuLAfPi8xYR5e9/XIJsTNwBUp2w DahytauiDIqhqvERgO6WEDtK1NM7NkaZVAM2IKUKZxIUcGsN4znxXq0gSlI+sXBM/7t7 3QpW3nAMKoGkvo6auYehL7vsyx6dFAPFA11q7OF9PHyeGzIgesaoalwgFR6BWV2qBPXt XP/yctLmqx8crHMr477I8Omm1hKx3L7swJXYJGBXSFw5cLf3MCWKBZfSYpq4C43qd8pT Lo2w== X-Gm-Message-State: APjAAAUg5J/XnjGmG1QvR7bm+7raMJT5UeAwireZ3Ek99KdSodB418r3 JLN6Plce+cfVNQ0VahqPx8r2AJf/0jylfs+onV4= X-Google-Smtp-Source: APXvYqx9Ut9BA/6fcZ3yqT13/bNXp5gZu8p+fi/e+tphNMdiUbtF/wKpMJF9+DnckQMKN/qG981Qnby2ZxmxTjerrdQ= X-Received: by 2002:a37:912:: with SMTP id 18mr28321947qkj.185.1570531677016; Tue, 08 Oct 2019 03:47:57 -0700 (PDT) In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:168631 Archived-At: --000000000000b7b8de059463e613 Content-Type: multipart/alternative; boundary="000000000000b7b8dc059463e611" --000000000000b7b8dc059463e611 Content-Type: text/plain; charset="UTF-8" Turns out there's a difference after all. See the attached images. If you move the cursor past the EOB, with the beyond_zv check the line is drawn with the line-number face, not the line-number-current-line face. If we check with it->what != IT_EOB, then the line-number-current-line face is used. I think the right thing to do, when dealing with the "phantom line" just past the EOB, is to: - Use line-number-current-line, if the cursor is there. - Use the line-number face, and not the tick faces, if the cursor is not, regardless of whether this phantom line would be a tick line or not if it were used. So there's a patch that checks for tick faces with beyond_zv, for the current line face with it->what, and that moves all face setting for line numbers entirely out of the loop. --000000000000b7b8dc059463e611 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Turns out there's a difference after all. See the atta= ched images. If you move the
cursor past the EOB, with the beyond_zv che= ck the line is drawn with the line-number
face, not the line-number-curr= ent-line face. If we check with it->what !=3D IT_EOB,
then the line-n= umber-current-line face is used.

I think the right thing to do, when= dealing with the "phantom line" just past the EOB,
is to:
= - Use line-number-current-line, if the cursor is there.
- Use the line-n= umber face, and not the tick faces, if the cursor is not, regardless
=C2= =A0 of whether this phantom line would be a tick line or not if it were use= d.

So there's a patch that checks for tick faces with beyond_zv,= for the current line
face with it->what, and that moves all face set= ting for line numbers entirely out of
the loop.

--000000000000b7b8dc059463e611-- --000000000000b7b8de059463e613 Content-Type: application/x-patch; name="bug-37641.patch" Content-Disposition: attachment; filename="bug-37641.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k1hpp2as0 ZGlmZiAtLWdpdCBjL3NyYy94ZGlzcC5jIHcvc3JjL3hkaXNwLmMKaW5kZXggMjlkNDlkNTdkZi4u OTNhNDk3YmFkYiAxMDA2NDQKLS0tIGMvc3JjL3hkaXNwLmMKKysrIHcvc3JjL3hkaXNwLmMKQEAg LTIyNjU3LDI5ICsyMjY1NywzMyBAQCBtYXliZV9wcm9kdWNlX2xpbmVfbnVtYmVyIChzdHJ1Y3Qg aXQgKml0KQogICBpbnQgd2lkdGhfbGltaXQgPQogICAgIHRlbV9pdC5sYXN0X3Zpc2libGVfeCAt IHRlbV9pdC5maXJzdF92aXNpYmxlX3gKICAgICAtIDMgKiBGUkFNRV9DT0xVTU5fV0lEVEggKGl0 LT5mKTsKKworICB0ZW1faXQuZmFjZV9pZCA9IGxudW1fZmFjZV9pZDsKKyAgLyogQXZvaWQgZGlz cGxheWluZyBhbnkgZmFjZSBvdGhlciB0aGFuIGxpbmUtbnVtYmVyIG9uCisgICAgIGVtcHR5IGxp bmVzIGJleW9uZCBFT0IuICAqLworICBpZiAobG51bV9mYWNlX2lkICE9IGN1cnJlbnRfbG51bV9m YWNlX2lkCisgICAgICAmJiAoRVEgKFZkaXNwbGF5X2xpbmVfbnVtYmVycywgUXZpc3VhbCkKKwkg ID8gdGhpc19saW5lID09IDAKKwkgIDogdGhpc19saW5lID09IGl0LT5wdF9sbnVtKQorICAgICAg JiYgaXQtPndoYXQgIT0gSVRfRU9CKQorICAgIHRlbV9pdC5mYWNlX2lkID0gY3VycmVudF9sbnVt X2ZhY2VfaWQ7CisgIGVsc2UgaWYgKCFiZXlvbmRfenYpCisgICAgeworICAgICAgaWYgKGRpc3Bs YXlfbGluZV9udW1iZXJzX21ham9yX3RpY2sgPiAwCisJICAgICAgICYmIChsbnVtX3RvX2Rpc3Bs YXkgJSBkaXNwbGF5X2xpbmVfbnVtYmVyc19tYWpvcl90aWNrID09IDApKQorCXRlbV9pdC5mYWNl X2lkID0gbWVyZ2VfZmFjZXMgKGl0LT53LCBRbGluZV9udW1iZXJfbWFqb3JfdGljaywKKwkJCQkg ICAgMCwgREVGQVVMVF9GQUNFX0lEKTsKKyAgICAgIGVsc2UgaWYgKGRpc3BsYXlfbGluZV9udW1i ZXJzX21pbm9yX3RpY2sgPiAwCisJICAgICAgICYmIChsbnVtX3RvX2Rpc3BsYXkgJSBkaXNwbGF5 X2xpbmVfbnVtYmVyc19taW5vcl90aWNrID09IDApKQorCXRlbV9pdC5mYWNlX2lkID0gbWVyZ2Vf ZmFjZXMgKGl0LT53LCBRbGluZV9udW1iZXJfbWlub3JfdGljaywKKwkJCQkgICAgMCwgREVGQVVM VF9GQUNFX0lEKTsKKyAgICB9CisKICAgLyogUHJvZHVjZSBnbHlwaHMgZm9yIHRoZSBsaW5lIG51 bWJlciBpbiBhIHNjcmF0Y2ggZ2x5cGhfcm93LiAgKi8KICAgZm9yIChjb25zdCBjaGFyICpwID0g bG51bV9idWY7ICpwOyBwKyspCiAgICAgewogICAgICAgLyogRm9yIGNvbnRpbnVhdGlvbiBsaW5l cyBhbmQgbGluZXMgYWZ0ZXIgWlYsIGluc3RlYWQgb2YgYSBsaW5lCiAJIG51bWJlciwgcHJvZHVj ZSBhIGJsYW5rIHByZWZpeCBvZiB0aGUgc2FtZSB3aWR0aC4gICovCi0gICAgICBpZiAobG51bV9m YWNlX2lkICE9IGN1cnJlbnRfbG51bV9mYWNlX2lkCi0JICAmJiAoRVEgKFZkaXNwbGF5X2xpbmVf bnVtYmVycywgUXZpc3VhbCkKLQkgICAgICA/IHRoaXNfbGluZSA9PSAwCi0JICAgICAgOiB0aGlz X2xpbmUgPT0gaXQtPnB0X2xudW0pCi0JICAvKiBBdm9pZCBkaXNwbGF5aW5nIHRoZSBsaW5lLW51 bWJlci1jdXJyZW50LWxpbmUgZmFjZSBvbgotCSAgICAgZW1wdHkgbGluZXMgYmV5b25kIEVPQi4g ICovCi0JICAmJiBpdC0+d2hhdCAhPSBJVF9FT0IpCi0JdGVtX2l0LmZhY2VfaWQgPSBjdXJyZW50 X2xudW1fZmFjZV9pZDsKLSAgICAgIGVsc2UgaWYgKGRpc3BsYXlfbGluZV9udW1iZXJzX21ham9y X3RpY2sgPiAwCi0JICAgICAgICYmIChsbnVtX3RvX2Rpc3BsYXkgJSBkaXNwbGF5X2xpbmVfbnVt YmVyc19tYWpvcl90aWNrID09IDApKQotCXRlbV9pdC5mYWNlX2lkID0gbWVyZ2VfZmFjZXMgKGl0 LT53LCBRbGluZV9udW1iZXJfbWFqb3JfdGljaywKLQkJCQkgICAgICAwLCBERUZBVUxUX0ZBQ0Vf SUQpOwotICAgICAgZWxzZSBpZiAoZGlzcGxheV9saW5lX251bWJlcnNfbWlub3JfdGljayA+IDAK LQkgICAgICAgJiYgKGxudW1fdG9fZGlzcGxheSAlIGRpc3BsYXlfbGluZV9udW1iZXJzX21pbm9y X3RpY2sgPT0gMCkpCi0JdGVtX2l0LmZhY2VfaWQgPSBtZXJnZV9mYWNlcyAoaXQtPncsIFFsaW5l X251bWJlcl9taW5vcl90aWNrLAotCQkJCSAgICAgIDAsIERFRkFVTFRfRkFDRV9JRCk7Ci0gICAg ICBlbHNlCi0JdGVtX2l0LmZhY2VfaWQgPSBsbnVtX2ZhY2VfaWQ7CiAgICAgICBpZiAoYmV5b25k X3p2CiAJICAvKiBEb24ndCBkaXNwbGF5IHRoZSBzYW1lIGxpbmUgbnVtYmVyIG1vcmUgdGhhbiBv bmNlLiAgKi8KIAkgIHx8ICghRVEgKFZkaXNwbGF5X2xpbmVfbnVtYmVycywgUXZpc3VhbCkK --000000000000b7b8de059463e613 Content-Type: image/png; name="it_eob.png" Content-Disposition: attachment; filename="it_eob.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k1hpxyy32 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 SUVORK5CYII= --000000000000b7b8de059463e613 Content-Type: image/png; name="beyond_zv.png" Content-Disposition: attachment; filename="beyond_zv.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k1hpxyxz1 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 QxIRAPw/OMMFj3M0oWMAAAAASUVORK5CYII= --000000000000b7b8de059463e613--