From: Alan Mackenzie <acm@muc.de>
To: emacs-devel@gnu.org
Cc: Hannu Koivisto <azure@iki.fi>
Subject: First fontification of a buffer happens before font lock is fully initialised.
Date: Wed, 25 Jan 2012 12:48:04 +0000 [thread overview]
Message-ID: <20120125124804.GB3638@acm.acm> (raw)
Hi, Emacs.
(define-minor-mode font-lock-mode ....), calls
font-lock-default-function which calls
font-lock-mode-internal which calls
font-lock-fontify-buffer.
This call of f-l-fontify-buffer happens before font-lock-mode-hook is
run, since the defined-minor-mode runs the hook as the _very_ last
thing. Thus the buffer's f-l-stuff is potentially not fully initialised
at this first call of f-l-fontify-buffer.
This situation was found and analysed by Hannu Koivisto after CC Mode
crashed for this reason on a C++ buffer. Why it doesn't happen for
every CC Mode buffer is not yet clear.
Suggested fix:
(i) Amend define-minor-mode to have an extra parameter :run-hooks with
default t.
(ii) Set it to nil for f-l-mode, and explicitly write the hook run in
the appropriate place.
Incidentally, XEmacs does run this hook in the correct place.
--
Alan Mackenzie (Nuremberg, Germany.
next reply other threads:[~2012-01-25 12:48 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-25 12:48 Alan Mackenzie [this message]
2012-01-25 17:46 ` First fontification of a buffer happens before font lock is fully initialised Stefan Monnier
2012-01-25 18:26 ` Alan Mackenzie
2012-01-25 19:22 ` Hannu Koivisto
2012-01-25 20:22 ` Alan Mackenzie
2012-01-26 1:43 ` Stefan Monnier
2012-01-26 10:58 ` Alan Mackenzie
2012-02-04 12:03 ` Alan Mackenzie
2012-02-06 1:39 ` Stefan Monnier
2012-02-07 10:10 ` Alan Mackenzie
2012-02-07 18:02 ` Stefan Monnier
2012-02-08 21:43 ` Alan Mackenzie
2012-02-10 14:27 ` Stefan Monnier
2012-02-23 11:39 ` Alan Mackenzie
2012-02-23 14:34 ` Stefan Monnier
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=20120125124804.GB3638@acm.acm \
--to=acm@muc.de \
--cc=azure@iki.fi \
--cc=emacs-devel@gnu.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.