all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Drew Adams" <drew.adams@oracle.com>
To: "'Tassilo Horn'" <tassilo@member.fsf.org>,
	"'martin rudalics'" <rudalics@gmx.at>
Cc: 'Stefan Monnier' <monnier@iro.umontreal.ca>, emacs-devel@gnu.org
Subject: RE: Usage examples of dedicated windows and popup frames?
Date: Sun, 10 Jul 2011 14:13:18 -0700	[thread overview]
Message-ID: <2853DF6CD8174796B813EC835ADF91EA@us.oracle.com> (raw)
In-Reply-To: <87iprat9by.fsf@fastmail.fm>

> >>> Maybe we could make the *Completions* frame (optionally) invisible
> >>> instead of iconfying it?

Whatever we decide to do, the behavior should be easily under user control.  We
can decide on a _default_ behavior (iconify, delete, make invisible, do
nothing,...), but the user should be able to choose (easily).

> >> What's "invisible" in this respect?  (In any case, I'd try it out.)
> >
> > Hmm, invisible is invisible, see section 28.10 of the Elisp manual.
> > That is, we could make the frame optionally invisible and make it
> > visible again when it's needed.  For example, when I evaluate the
> > following three forms step by step
> > (setq my-frame (make-frame))
> > (make-frame-invisible my-frame)
> > (make-frame-visible my-frame)
> > my-frame is visible and has input focus after the third step.
> 
> Yes, that's nice.  I think that's better as a default action 
> for frames showing completion, because it's less distracting if
> iconification is animated, and it doesn't clutter the window
> manager switcher with temporary frames you usually don't want to
> switch to anyway.

I have used invisible frames.

But, FWIW, every time I wrote something about invisible frames here I heard back
from "those who know" (TM) that invisible frames are broken, i.e., there are
some problems with them (things that don't work).

I never found out what those problematic things were or why they
wouldn't/couldn't be fixed.  Just mentioning this.  Maybe there are some
problems with invisible frames.

> > If I do
> > (let ((frame (selected-frame)))
> >   (make-frame-visible my-frame)
> >   (raise-frame frame))
> > as third step, the original frame is in the foreground,
> 
> Yes, here, too.
> 
> > and if I do
> > (let ((frame (selected-frame)))
> >   (make-frame-visible my-frame)
> >   (redirect-frame-focus my-frame frame))
> > as third step, my-frame is risen but typing input goes to 
> > the original frame.
> 
> After evaluating that form, my emacs froze so that I had to kill it.
> C-g didn't work anymore.  However, I cannot reproduce that with emacs
> -Q...

My take on the _default_ behavior (see above wrt user control) is that the frame
should be deleted, not made invisible (and not iconified).

I use frames a lot.  Invisible frames constitute a useful set of frames for
frame and frame-configuration operations.  I do not want temporary frames such
as those for user input dialogs to clutter up the list of invisible frames when
they are "removed".  That's not removal, it's simply non-display.

An analogy that everyone is familiar with is having "invisible" (i.e.,
undisplayed) buffers around.  You might not be very familiar with manipulating
frames or sets of frames, including those that are invisible, but you sure are
familiar with doing somewhat similar things with buffers.

For buffers, we even went to the trouble of creating a special (syntactic) class
of buffers that are ignored by many operations: those whose names start with a
space char.  That's a hack (OK, but rudimentary) to distinguish the unimportant
"invisible" buffers from the other "invisible" buffers.

Let's not go that way wrt invisible frames.  AFAICT, there is no need to keep
temporary, dialog frames around, in any state, once their raison d'etre (the
dialog) is finished.

Adding temporary user-input dialog pop-up frames (such as *Completions* or the
list of marked files for a Dired operation) to the set of invisible frames is
not the way to go, at least for anyone who actually uses invisible frames.

That should at least not be the default behavior, IMO.  Doing that would make
using invisible frames even less useful than it is today (where there are
supposedly a few problems).

The default behavior should be to _delete_ the frame, IMO.  A temporary, pop-up
frame generally has no need to live on, even in some phantom state.  Get it out
of there altogether.  If there is another dialog then a new frame will be popped
up for it - nothing lost, no problem.




  reply	other threads:[~2011-07-10 21:13 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-08 14:19 Usage examples of dedicated windows and popup frames? Tassilo Horn
2011-07-08 14:47 ` Richard Riley
2011-07-08 14:49 ` John Yates
2011-07-08 16:11 ` Stefan Monnier
2011-07-08 16:34   ` Drew Adams
2011-07-08 16:51     ` Stefan Monnier
2011-07-08 17:38       ` Drew Adams
2011-07-08 17:54   ` Tassilo Horn
2011-07-08 18:55     ` Stefan Monnier
2011-07-09 13:00       ` martin rudalics
2011-07-09 15:03         ` Drew Adams
2011-07-10  0:43           ` chad
2011-07-10  9:00             ` martin rudalics
2011-07-10  9:43             ` Drew Adams
2011-07-12 17:47               ` chad
2011-07-12 18:55                 ` Drew Adams
2011-07-13  6:24                 ` martin rudalics
2011-07-13 23:09                   ` chad
2011-07-10 23:45           ` undisplay temporary dialog buffers when done [was: ... dedicated windows and popup frames] Drew Adams
2011-07-09 17:22         ` Usage examples of dedicated windows and popup frames? Tassilo Horn
2011-07-10  9:00           ` martin rudalics
2011-07-10  9:39             ` Tassilo Horn
2011-07-10 15:30               ` martin rudalics
2011-07-10 16:00                 ` Tassilo Horn
2011-07-10 21:13                   ` Drew Adams [this message]
2011-07-08 16:11 ` Drew Adams

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2853DF6CD8174796B813EC835ADF91EA@us.oracle.com \
    --to=drew.adams@oracle.com \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    --cc=rudalics@gmx.at \
    --cc=tassilo@member.fsf.org \
    /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 external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.