Subject: Re: bug#28844: 26.0.90; display-line-numbers-mode should call window-configuration-change-hook

From: Eli Zaretskii <[email-masked]>
Date: Tue, 17 Oct 2017 11:33:57 +0300

On October 17, 2017 10:13:46 AM GMT+03:00, Paul Rankin <[email-masked]> wrote:
> On Tue, 17 Oct 2017, at 03:44 PM, Eli Zaretskii wrote:
> > First, let's be clear about something: it's not "my" mode.  I'll
> never use it, except
> > for testing and fixing bugs.  I implemented this feature because
> line numbers are
> > very popular among Emacs users, and existing solutions, like
> linum-mode, slow
> > down Emacs, sometimes to a crawl.  The excitement expressed by users
> on Reddit
> > when the feature landed, which surprised me, is a clear evidence
> that the results
> > are very satisfactory, as far as users are
> > concerned.  So this feature is here to
> > stay, and Lisp packages need to adapt (bundled packages already did,
> AFAIK).
> > 
> > Next, I *know* that I'm misunderstanding something, but repeating
> what you
> > already said, twice, won't help me understand it.  Please provide
> more
> > details about your application's needs regarding the window layout.
> 
> https://github.com/rnkn/olivetti
> 
> Here’s the minor mode. Go nuts.
> 
> > Given the little that you said until now, would checking the value
> returned by
> > line-number-display-width in a post-command-hook solve your problem?
> > If not, please tell why not, and let's take it from there.
> 
> No it wouldn’t. I don’t need to run code after every command. Until
> now, the following hooks have been perfect:
> 
> window-configuration-change-hook
> window-size-change-functions
> after-setting-font-hook
> text-scale-mode-hook
> 
> n.b. window-size-change-functions only added recently due to 26.x
> changes.

So having looked at your package, I think post-command-hook will solve your
problem.  All you need to do in the hook is check if line-number-display-width
returns a value different from the last time, and if so, call your function
olivetti-set-environment; otherwise do nothing.