unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Richard Stallman <rms@gnu.org>, martin rudalics <rudalics@gmx.at>
Cc: emacs-devel@gnu.org
Subject: Re: window-buffer-change-functions
Date: Thu, 22 Sep 2022 09:21:52 +0300	[thread overview]
Message-ID: <83fsgkszcv.fsf@gnu.org> (raw)
In-Reply-To: <E1ob0G4-0003JA-D6@fencepost.gnu.org> (message from Richard Stallman on Wed, 21 Sep 2022 09:59:24 -0400)

> From: Richard Stallman <rms@gnu.org>
> Date: Wed, 21 Sep 2022 09:59:24 -0400
> 
> I tried to fix the documentation of `window-buffer-change-functions'
> to avoid passive voice, then discovered it was unclear in other ways.
> So I decided to rewrite it to make it clear.
> 
> In that attempt, I found it was so unclear that I could not be sure
> what the variable actually does.  I concluded ultimately that the
> problem was in the variable's meaning, not just in the documentation
> text.  If I understand it right, it uses the default (global?) value
> in one way and buffer-local values in another way.
> 
> This messes up the general rule for the meaning of buffer-local
> bindings, undermining the clarity of the Emacs Lisp language.  We
> should try hard to avoid ever doing that.  In this case I think it
> will not be hard.
> 
> I propose we replace it with two variables, each with a simple
> meaning.  They could be `buffer-window-change-functions' and
> `frame-buffer-change-functions'.

I don't think this justifies splitting this variable (which exists
since Emacs 27) into two.  Such a split will cause a lot of problems
for existing code, because this hooks are used in a lot of Lisp
programs.  Keeping obsolete aliases is a PITA and a maintenance
burden, so it doesn't really eliminate this downside.

This hook is conceptually simple: it is called when the correspondence
between buffers and their windows changes.  The functions in the local
value are called for individual windows only when the corresponding
buffer is involved in the change, and the global value is called once
for any frame where the correspondence changed for any buffer.  This
shouldn't be hard to explain, and any not-100%-clean design shouldn't
get in the way of documenting it clearly and in a way that Lisp
programs could use, including elimination of passive tense.

So I don't agree with the need to introduce two separate new
variables.  The downsides of such a split aren't justified by the
minor conceptual problems you mention.

I added Martin, who made this change back in Emacs 27, to the
discussion, in the hope that he could comment on the issue.



  parent reply	other threads:[~2022-09-22  6:21 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <SJ0PR10MB54886AFA7B33CF1E43E2E013F39A9@SJ0PR10MB5488.namprd10.prod.outlook.com>
     [not found] ` <83o86hyild.fsf@gnu.org>
     [not found]   ` <877d1ycbom.fsf@gnus.org>
     [not found]     ` <SJ0PR10MB548895C6693206D88C719E60F34C9@SJ0PR10MB5488.namprd10.prod.outlook.com>
     [not found]       ` <835yhivx39.fsf@gnu.org>
     [not found]         ` <SJ0PR10MB5488AA81BBFCC4B4CE2D31B4F34C9@SJ0PR10MB5488.namprd10.prod.outlook.com>
     [not found]           ` <83v8piuh5k.fsf@gnu.org>
     [not found]             ` <SJ0PR10MB54887366A66613D1189EC466F34C9@SJ0PR10MB5488.namprd10.prod.outlook.com>
     [not found]               ` <2f85eda92184de27e10572e6b2320885@webmail.orcon.net.nz>
     [not found]                 ` <83pmfpv4fs.fsf@gnu.org>
     [not found]                   ` <7110e0330e878c144a6364a8e6ad651c@webmail.orcon.net.nz>
2022-09-21 13:59                     ` window-buffer-change-functions Richard Stallman
2022-09-21 16:22                       ` [External] : window-buffer-change-functions Drew Adams
2022-09-22  6:21                       ` Eli Zaretskii [this message]
2022-09-22  9:44                         ` window-buffer-change-functions martin rudalics
2022-09-23  3:19                           ` window-buffer-change-functions Richard Stallman
2022-09-23  6:12                             ` window-buffer-change-functions Eli Zaretskii
2022-09-24  2:43                               ` window-buffer-change-functions Richard Stallman
2022-09-23 11:13                             ` window-buffer-change-functions Phil Sainty
2022-09-24  2:43                               ` window-buffer-change-functions Richard Stallman

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=83fsgkszcv.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=rms@gnu.org \
    --cc=rudalics@gmx.at \
    /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).