If you have followed the lengthy recent discussions here:
https://lists.gnu.org/archive/html/emacs-devel/2017-12/msg00418.html
and
https://lists.gnu.org/archive/html/emacs-devel/2017-12/msg00372.html
on temporarily displaying frames when multiple overlapping frames are on screen, then you know this is a complex issue and hard to get right. I suggested a higher level programming model for this, so I wrote a library to make this easy: display-until.el. Please try it out and send any improvement suggestions.
I would like to see this code added to core Emacs if it is acceptable and someone will help me add the external documentation and commits needed for it.
The library is attached and the commentary is included below.
-- Bob
-----
# display-until - Display a window or frame topmost in the frame stack until a condition or timeout occurs.
This library temporarily displays an existing or new frame topmost in
the frame stack. Then it restores the prior topmost frame as well
as any prior visibility status of the temporarily displayed frame,
e.g. if it was hidden or iconified. See the end of the file for
sample usage expressions.
It includes the following:
Variable:
display-until-delay - time in seconds to display a temporary frame or
window
Display Functions:
display-window-until - given a window and optional buffer, display the
buffer in the window, make the window's frame topmost for
`display-until-delay' seconds, then return the window's frame
to its prior visibility
display-frame-until - given a frame and optional buffer, display the
buffer in the frame's selected window, make the frame topmost for
`display-until-delay' seconds, then return the frame to its prior
visibility
Utility Functions:
display-until-get-frame-by-name - given a name string, return the
matching frame or nil
Utility Macros:
display-until-condition-or-timeout - wait for a boolean condition
or timeout seconds
display-until-thread-condition-or-timeout - run a thread until a boolean
condition or timeout seconds