help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Understanding after-make-frame-functions


From: Eli Zaretskii
Subject: Re: Understanding after-make-frame-functions
Date: Tue, 17 May 2016 19:36:44 +0300

> From: Kaushal Modi <kaushal.modi@gmail.com>
> Date: Tue, 17 May 2016 16:15:39 +0000
> 
> > There's nothing specific to daemon here, it is all just side effect of
> > how and when frames are created by Emacs.  In particular, the daemon
> > creates frames when emacsclient connects to it, and doesn't have any
> > displayable frames before that.
> >
> > In general, _any_ call to make-frame will always run
> > after-make-frame-functions, you can clearly see that in the code.
> >
> 
> Thanks. But I think that this side effect should be documented. I used the
> below test snippet in 3 different invocations of emacs:
> 
> (1) emacs &
> (2) emacsclient -c -a '' &
> (3) emacs -nw

What Emacs does during startup is documented in the ELisp manual, see
the node "Startup Summary".  If you have specific suggestions for
amendments there, please file a bug report with those suggestions.

> So in conclusion, it looks like however the user customizes the
> before-make-frame-hook and after-make-frame-functions, those would be
> ineffective when running non-daemon emacs and emacs -nw. It is obvious that
> frames are not being created for emacs -nw and so those hooks are not
> called. But it is not evident that the init.el/.emacs is called after frame
> generation when running emacs& and so those frame hook customizations serve
> no purpose in that case.

The above-mentioned node in the manual describes more hooks, so maybe
you should simply use a different hook for your needs.

> > > (2) Is window-setup-hook supposed to run only in non-daemon emacs?
> >
> > No, of course not.  It is supposed to be used by any customizations
> > that need to hook into stuff that Emacs does early on during its
> > startup (see startup.el), which you cannot do later.
> 
> Thanks. I now understand that. Just that I cannot use window-setup-hook for
> my font check when running emacsclient because the frame/fonts haven't been
> loaded yet

Once again, perhaps a different hook, which runs later, will do what
you want.

> There's something else too which is undocumented and I learned through
> experimentation; that I need to add select-frame to
> after-make-frame-functions first for the find-font to work as intended
> (else it always returns nil). Would adding that to that hook be a good
> default?

I would suggest moving the code to a hook that runs later, when the
initial frame is already the selected one.

> At the end of this, let me know if you too think that the
> after-make-frame-functions needs more clarification in the documentation,
> and I will file a bug report for that.

Not sure, but if there's specific information you'd like to be there,
let's talk specifics.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]