Subject: Re: bug#25511: 26.0.50; modify-frame-parameters modifies undesignated parameter?

From: Katsumi Yamaoka <[email-masked]>
Date: Tue, 24 Jan 2017 07:54:29 +0900

On Mon, 23 Jan 2017 11:28:14 +0100, martin rudalics wrote:
> Try to avoid ‘modify-frame-parameters’ wherever it's possible.  There
> might be still cases left where we have to use it because some frame
> parameters cannot be processed on an invisible frame.  That's enough
> trouble.

The main reason I use modify-frame-parameters is that a new frame
protrudes beyond the task-bar (placed at the bottom of the lower
screen) and so, I can't see the modeline and can't access the
mini-buffer on Cygwin, i.e.,
+----------------+
|  +-------+     |
|  |       |     |
|  | Emacs |     |
|  | frame |     |
|  |       |     |
+----------------+
|    Task-bar    |
+----------------+
Possible solutions to help it would be to make the task-bar
hidden automatically, to shrink the height of a new Emacs frame
by some sort of means, or to move a new frame upward...  Instead
of dragging it manually I use:

(defadvice make-frame (after adjust-frame-height-and-position activate)
  "Shrink the height of a new frame and move it upward."
  (if (ad-get-arg 0) nil
    (sit-for 0) ;; Added for new Emacs 26
    (modify-frame-parameters ad-return-value
                             '((height . 32) (top . 1112)))))

> Can you try this with a native Windows build and compare the behaviors?

Ok, I'll try the binary distribution.

> What does a specification like
> (make-frame '((left . (+ -8)) (top . (+ -32))))
> give here?

No difference with (make-frame).  The new frame appears on
the lower screen, mode-line and minibuffer is hidden, and
`frame-parameters' shows:

((top . 1137) (left . 292) (width . 80) (height . 36))