From: npostavs@users.sourceforge.net
To: David Dynerman <emperordali@block-party.net>
Cc: "Glenn Morris" <rgm@gnu.org>,
25132@debbugs.gnu.org,
"Clément Pit--Claudel" <clement.pit@gmail.com>
Subject: bug#25132: 26.0.50; emacs hangs when loading org file with python source blocks
Date: Sat, 07 Jan 2017 01:38:04 -0500 [thread overview]
Message-ID: <87y3yn2x4j.fsf__26357.2038420991$1483771127$gmane$org@users.sourceforge.net> (raw)
In-Reply-To: <m260murisv.fsf@block-party.net> (David Dynerman's message of "Wed, 07 Dec 2016 23:17:36 -0800")
tags 25132 confirmed
quit
The problem is that org updates its temporary fontification buffer from
its fontify rules which are called by jit-lock-function, which means
that inhibit-modification-hooks is bound to t. Therefore, when
org-src-font-lock-fontify-block calls delete-region to remove leftover text from
the previous source block fontification, the `before-change-functions'
are not run. In this case `syntax-ppss-flush-cache' is the important
function that doesn't get run, so `syntax-propertize--done' is still set
from before and messes up python.el's fontification routines.
org-src-font-lock-fontify-block(#("python" 0 6 (fontified t)) 19 65)
org-fontify-meta-lines-and-blocks-1(172)
org-fontify-meta-lines-and-blocks(172)
font-lock-fontify-keywords-region(1 172 nil)
font-lock-default-fontify-region(1 172 nil)
font-lock-fontify-region(1 172)
...
jit-lock--run-functions(1 172)
jit-lock-fontify-now(1 501)
jit-lock-function(1)
redisplay_internal\ \(C\ function\)()
redisplay()
sit-for(2)
execute-extended-command(nil "25132-test" "25")
funcall-interactively(execute-extended-command nil "25132-test" "25")
call-interactively(execute-extended-command nil nil)
command-execute(execute-extended-command)
(defun org-src-font-lock-fontify-block (lang start end)
...
(with-current-buffer
(get-buffer-create
(concat " org-src-fontification:" (symbol-name lang-mode)))
(delete-region (point-min) (point-max)) ;<-------------- `syntax-propertize--done' not reset here!
(insert string " ") ;; so there's a final property change
(unless (eq major-mode lang-mode) (funcall lang-mode))
(org-font-lock-ensure)
...)
...)
(defun jit-lock-function (start)
...
(jit-lock-fontify-now start (+ start jit-lock-chunk-size))
...)
(defun jit-lock-fontify-now (&optional start end)
"Fontify current buffer from START to END.
Defaults to the whole buffer. END can be out of bounds."
(with-buffer-prepared-for-jit-lock
...))
(defmacro with-buffer-prepared-for-jit-lock (&rest body)
"Execute BODY in current buffer, overriding several variables.
Preserves the `buffer-modified-p' state of the current buffer."
(declare (debug t))
`(let ((inhibit-point-motion-hooks t))
(with-silent-modifications ; <------ binds inhibit-modification-hooks to t
,@body)))
next prev parent reply other threads:[~2017-01-07 6:38 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <m2fulz4mjc.fsf@CIVIC-TV.local>
2016-12-08 2:08 ` bug#25132: 26.0.50; emacs hangs when loading org file with python source blocks Glenn Morris
[not found] ` <qwa8c75g0r.fsf@fencepost.gnu.org>
2016-12-08 2:40 ` Clément Pit--Claudel
[not found] ` <4aa23451-b6cd-88b0-369e-99f6fe5f2175@gmail.com>
2016-12-08 7:17 ` David Dynerman
[not found] ` <m260murisv.fsf@block-party.net>
2017-01-07 6:38 ` npostavs [this message]
[not found] ` <87y3yn2x4j.fsf@users.sourceforge.net>
2017-01-07 21:20 ` npostavs
2017-01-19 16:25 ` Dmitry Gutov
2017-01-20 0:52 ` npostavs
[not found] ` <878tq6wo1p.fsf@users.sourceforge.net>
2017-01-20 2:22 ` Clément Pit--Claudel
[not found] ` <4674bf9b-38f0-8839-fadb-e9a719faf163@gmail.com>
2017-01-20 3:18 ` npostavs
2017-01-23 3:53 ` Dmitry Gutov
[not found] ` <345079d3-9578-9ab9-1444-353843a70f8b@yandex.ru>
2017-01-24 3:36 ` npostavs
[not found] ` <874m0puo2a.fsf@users.sourceforge.net>
2017-01-29 16:05 ` npostavs
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.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='87y3yn2x4j.fsf__26357.2038420991$1483771127$gmane$org@users.sourceforge.net' \
--to=npostavs@users.sourceforge.net \
--cc=25132@debbugs.gnu.org \
--cc=clement.pit@gmail.com \
--cc=emperordali@block-party.net \
--cc=rgm@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 public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.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).