unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: "Óscar Fuentes" <ofv@wanadoo.es>
To: martin rudalics <rudalics@gmx.at>
Cc: emacs-devel@gnu.org
Subject: Re: emacs-25 3722a69: Fix bugs in window resizing code
Date: Tue, 01 Mar 2016 16:10:39 +0100	[thread overview]
Message-ID: <878u22jksw.fsf@wanadoo.es> (raw)
In-Reply-To: <56D54DB4.1080502@gmx.at> (martin rudalics's message of "Tue, 01 Mar 2016 09:07:16 +0100")

martin rudalics <rudalics@gmx.at> writes:

>>>      (shrink-window, enlarge-window): Fix bug#22723 where windows
>>>      with preserved size would not get resized.  Also now signal an
>>>      error when the window cannot be shrunk or enlarged as requested.
>>
>> [snip]
>>
>>> +      (error "Cannot shrink selected window")))))
>>
>> I was surprised to see my code failing because of this change. Throwing
>> an error on a case where previously nothing was done amounts to an API
>> change. My code was fixed by wrapping the call to enlarge-window with
>> ignore-errors, but I'm worried about all the code out there.
>
> Sorry, but this fix was motivated by the following explanation in the
> Emacs manual:
>
>       The command `C-x ^' (`enlarge-window') makes the selected window one
>    line taller, taking space from a vertically adjacent window without
>    changing the height of the frame.  With a positive numeric argument,
>    this command increases the window height by that many lines; with a
>    negative argument, it reduces the height by that many lines.  If there
>    are no vertically adjacent windows (i.e., the window is at the full
>    frame height), that signals an error.  The command also signals an
>    error if you attempt to reduce the height of any window below a certain
>                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>    minimum number of lines, specified by the variable `window-min-height'
>    (the default is 4).
>
>       Similarly, `C-x }' (`enlarge-window-horizontally') makes the
>    selected window wider, and `C-x {' (`shrink-window-horizontally') makes
>    it narrower.  These commands signal an error if you attempt to reduce
>                                                        ^^^^^^^^^^^^^^^^^
>    the width of any window below a certain minimum number of columns,
>    ^^^^^^^^^^^^^^^^^^^^^^^
>    specified by the variable `window-min-width' (the default is 10).

Please note that the above talks about reducing window dimensions below
a threshold. Also, it is about interactive use.

> We can easily change that to not signal an error but then behaviors like
> the one reported by Eli will get passed by unnoticed.  Emacsen < 23
> silently could delete windows when you made them too small with these
> commands.  This was deprecated but IIRC no one ever expressed a
> preference as to how these functions _should_ behave when there is not
> enough space.  Suggestions welcome.
>
> Personally, I'd never use ‘enlarge-window’ and ‘shrink-window’ in Lisp
> code.  IMO these are for interactive use only (supported by the fact
> that neither of these functions is documented in the Elisp manual).

`enlarge-window' appears on several places on the Elisp sources,
including calls like

textmodes/two-column.el:305:6:    (enlarge-window 99999 t))

which now will result on a error.

To be clear, I have nothing against throwing an error on the interactive
case, but against throwing the error on the non-interactive one. That's
what constitutes an API change on my book.

So I would suggest to remove the `error' and consider where and when to
add it after the release, after studying the code in the wild.



  reply	other threads:[~2016-03-01 15:10 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20160218102715.15576.42604@vcs.savannah.gnu.org>
     [not found] ` <E1aWLnn-000448-7K@vcs.savannah.gnu.org>
2016-03-01  1:31   ` emacs-25 3722a69: Fix bugs in window resizing code Óscar Fuentes
2016-03-01  8:07     ` martin rudalics
2016-03-01 15:10       ` Óscar Fuentes [this message]
2016-03-01 17:04         ` martin rudalics
2016-03-01 17:20           ` Eli Zaretskii
2016-03-02  8:22             ` martin rudalics
2016-03-02  9:28               ` martin rudalics
2016-03-02 15:54               ` Eli Zaretskii
2016-03-04  7:48                 ` martin rudalics
2016-03-04  8:28                   ` 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=878u22jksw.fsf@wanadoo.es \
    --to=ofv@wanadoo.es \
    --cc=emacs-devel@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).