unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: "João Távora" <joaotavora@gmail.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: 40529@debbugs.gnu.org, Aidan Beggs <nadiasggeb001@gmail.com>
Subject: bug#40529: 26.3; global-display-line-numbers-mode and flymake-show-diagnostics-buffer error
Date: Sun, 12 Apr 2020 13:22:34 +0100	[thread overview]
Message-ID: <CALDnm52S1EAwuKsXXX+n09X1TbX24UtTz8X1xJ6aA3msZS_XdQ@mail.gmail.com> (raw)
In-Reply-To: <CALDnm535DMLd75rdp33RmV5VCfxJ36E0XgCxyf4XCQhHMpWzPQ@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2581 bytes --]

On Fri, Apr 10, 2020 at 5:16 PM João Távora <joaotavora@gmail.com> wrote:
>
> On Fri, Apr 10, 2020 at 5:09 PM João Távora <joaotavora@gmail.com> wrote:
>
> > leaves me wondering if there isn't a hook ordering bug here. Maybe it's
> > just a question of delaying entry in tabulated-list-mode until
important stuff
> > is set up.
>
> Or maybe all that's needed is this (100% untested) change:
>
> diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el

Finally looked into the problem and no, this doesn't work because
flymake-diagnostics-buffer-mode erases local vars before setting up the
tabulated-list-mode derived mode.  This is kind of a chicken-and-egg
issue that can only be fixed in flymake.el with some ugly hacks.

But after some analysis, I think it is tabulated-list-mode, or rather
its recent adaptation to display-line-numbers-mode, which is in the
wrong here.  It used to be that using a mode derived from
tabulated-list-mode didn't immediately force a request for refreshing its
rows.  After display-line-numbers-mode came along, that ceased to be
true in some situations.

Reading the special code in tabulated-list-mode concerned with line
numbers, the latter seem to affect only the header line, not the
buffer's contents.  So this seems to be the correct fix:

commit 0145b3c87f329e51c729703d778848cdc8393a33
Author: João Távora <joaotavora@gmail.com>
Date:   Sun Apr 12 13:10:45 2020 +0100

    Fix tabulated-list-mode bootstrapping problem

    Fixes: bug#40529
    Don't refresh all the tabulated-list rows when entering
    tabulated-list-mode just because display-line-number-mode is t.

    * lisp/emacs-lisp/tabulated-list.el (tabulated-list-mode): Don't
    call tabulated-list-revert, just tabulated-list-init-header.

diff --git a/lisp/emacs-lisp/tabulated-list.el
b/lisp/emacs-lisp/tabulated-list.el
index 501cc3a29e..68eaef1fcd 100644
--- a/lisp/emacs-lisp/tabulated-list.el
+++ b/lisp/emacs-lisp/tabulated-list.el
@@ -765,7 +765,7 @@ tabulated-list-mode
   ;; column of the first entry happens to begin with a R2L letter.
   (setq bidi-paragraph-direction 'left-to-right)
   ;; This is for if/when they turn on display-line-numbers
-  (add-hook 'display-line-numbers-mode-hook #'tabulated-list-revert nil t)
+  (add-hook 'display-line-numbers-mode-hook #'tabulated-list-init-header
nil t)
   ;; This is for if/when they customize the line-number face or when
   ;; the line-number width needs to change due to scrolling.
   (setq-local tabulated-list--current-lnum-width 0)

[-- Attachment #2: Type: text/html, Size: 3002 bytes --]

  reply	other threads:[~2020-04-12 12:22 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-09 20:55 bug#40529: 26.3; global-display-line-numbers-mode and flymake-show-diagnostics-buffer error Aidan Beggs
2020-04-10  6:30 ` Eli Zaretskii
2020-04-10 11:50   ` João Távora
2020-04-10 12:16     ` Eli Zaretskii
2020-04-10 14:38       ` João Távora
2020-04-10 15:50         ` Eli Zaretskii
2020-04-10 16:09           ` João Távora
2020-04-10 16:16             ` João Távora
2020-04-12 12:22               ` João Távora [this message]
2020-04-12 13:43                 ` Eli Zaretskii
2020-04-12 14:13                   ` João Távora
2020-04-12 14:42                     ` Eli Zaretskii
2020-04-12 16:58                       ` João Távora
2020-04-12 17:15                         ` Eli Zaretskii
2020-04-12 20:45                           ` Aidan Beggs
2020-04-13  5:03                             ` Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CALDnm52S1EAwuKsXXX+n09X1TbX24UtTz8X1xJ6aA3msZS_XdQ@mail.gmail.com \
    --to=joaotavora@gmail.com \
    --cc=40529@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    --cc=nadiasggeb001@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).