GNU bug report logs - #38143
27.0.50; Say that before-make-frame-hook & after-make-frame-functions are not invoked for the initial frame

Previous Next

Package: emacs;

Reported by: Óscar Fuentes <ofv <at> wanadoo.es>

Date: Sat, 9 Nov 2019 03:19:01 UTC

Severity: normal

Found in version 27.0.50

Fixed in version 29.1

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Óscar Fuentes <ofv <at> wanadoo.es>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: martin rudalics <rudalics <at> gmx.at>, 38143 <at> debbugs.gnu.org
Subject: bug#38143: 27.0.50; Say that before-make-frame-hook & after-make-frame-functions are not invoked for the initial frame
Date: Sat, 09 Nov 2019 18:21:40 +0100
Eli Zaretskii <eliz <at> gnu.org> writes:

>>       Note that any functions added to these hooks by your initial file are
>>    usually not run for the initial frame, since Emacs reads the initial
>>    file only after creating that frame.  However, if the initial frame is
>>    specified to use a separate minibuffer frame (*note Minibuffers and
>>    Frames::), the functions will be run for both, the minibuffer-less and
>>    the minibuffer frame.
>> 
>> This explanation is slightly misleading: Since the initial frame is
>> not created by 'make-frame', Emacs would not run these hooks even if
>> it did read the initial file earlier.
>
> But without an init file, where would the hooks come from?
>
> And anyway, the issue is probably only meaningful for users who define
> these hooks in init files.  So I think the only missing piece in the
> above is to mention the daemon case.

Please note that Martin is referring to the manual, not to the
docstrings. Although mentioning the daemon case on the manual would be
nice too.

IMO the missing information on the docstrings is:

1. The hooks are not run for the initial frame because it is not created
   with `make-frame'.

2. Except when Emacs runs as daemon, in that case make-frame is always
   used and therefore the hooks are executed.

The added text would be something like this:

  When Emacs is not executed as a daemon, `make-frame` is not used for
  creating the initial frame, therefore the hooks are not invoked on
  that case.

Or this:

  `make-frame` is not used for the frame that is automatically created
  before the init file is processed, therefore the hooks are not invoked
  for that frame. Please note that when Emacs is executed as a daemon
  there is no such frame.




This bug report was last modified 3 years and 160 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.