From: Alan Mackenzie <acm@colin2.muc.de>
To: gnu-emacs-bug@moderators.isc.org
Subject: bug#1024: Large C++ files load slowly, regardless of font-lock-maximum-size
Date: 25 Sep 2008 14:53:03 +0200 [thread overview]
Message-ID: <gbg1jf$2bsl$1@colin2.muc.de> (raw)
In-Reply-To: mailman.19905.1222335141.18990.bug-gnu-emacs@gnu.org
Hi, John.
John W <jw_spambox@yahoo.com> wrote:
> To reproduce:
> (1) Generate a 3M C++ file.
> (2) Load file.
> (3) Wait for emacs. <-- bug
> I'm using jit-lock, but I tested lazy-lock, and the behavior is the same.
> font-lock-maximum-size is the default. I.e.
> Its value is 256000
> I used edebug to see what emacs was doing, and it gave me a stack like:
> c-literal-limits()
> c-neutralize-syntax-in-CPP(1 3527391 3527390)
> funcall(c-neutralize-syntax-in-CPP 1 3527391 3527390)
> (if nil c-before-font-lock-function (funcall c-before-font-lock-function (point-min) (point-max) (- ... ...)))
> (save-excursion (if c-get-state-before-change-function (funcall c-get-state-before-change-function ... ...)) (if nil c-before-font-lock-function (funcall c-before-font-lock-function ... ... ...)))
> (save-restriction (widen) (save-excursion (if c-get-state-before-change-function ...) (if nil c-before-font-lock-function ...)))
> c-common-init(c++-mode)
> c++-mode()
> set-auto-mode-0(c++-mode nil)
> set-auto-mode()
> normal-mode(t)
> after-find-file(nil t)
Thanks for taking the trouble to generate this stack dump; it identifies
the problem completely.
This bug was caused by a previous bug fix which introduced a complete
scan over the entire buffer when it's loaded. One function,
`c-neutralize-syntax-in-CPP' had been coded very inefficiently. It was
recoded for speed on 2008-05-24, committed in
.../emacs/lisp/progmodes/cc-mode.el version 1.58.2.12 (Emacs 22 branch)
and version 1.75 (trunk) at savannah.
To get the fixed version, either:
(i) Upgrade to Emacs 22.3; or
(ii) If you're using the Emacs 23 CVS, update your version.
[ .... ]
--
Alan Mackenzie (Nuremberg, Germany).
next parent reply other threads:[~2008-09-25 12:53 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <mailman.19905.1222335141.18990.bug-gnu-emacs@gnu.org>
2008-09-25 12:53 ` Alan Mackenzie [this message]
2008-09-25 6:07 bug#1024: Large C++ files load slowly, regardless of font-lock-maximum-size John W
2008-09-25 12:12 ` martin rudalics
2008-09-26 3:22 ` John W
2008-09-26 7:53 ` Alan Mackenzie
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
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='gbg1jf$2bsl$1@colin2.muc.de' \
--to=acm@colin2.muc.de \
--cc=1024@emacsbugs.donarmstrong.com \
--cc=gnu-emacs-bug@moderators.isc.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 public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).