all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: npostavs@users.sourceforge.net
To: David Dynerman <emperordali@block-party.net>
Cc: 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@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)))





  reply	other threads:[~2017-01-07  6:38 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-12-07 18:33 bug#25132: 26.0.50; emacs hangs when loading org file with python source blocks David Dynerman
2016-12-08  2:08 ` Glenn Morris
2016-12-08  2:40   ` Clément Pit--Claudel
2016-12-08  7:17     ` David Dynerman
2017-01-07  6:38       ` npostavs [this message]
2017-01-07 21:20         ` npostavs
2017-01-19  3:15           ` Comments for bug#25132 fix? (Making with-silent-modifications buffer-local) npostavs
2017-01-19  3:51             ` John Wiegley
2017-01-19 15:49               ` Eli Zaretskii
2017-01-19 16:25           ` bug#25132: 26.0.50; emacs hangs when loading org file with python source blocks Dmitry Gutov
2017-01-19 16:25           ` Dmitry Gutov
2017-01-20  0:52             ` npostavs
2017-01-20  2:22               ` Clément Pit--Claudel
2017-01-20  2:22               ` Clément Pit--Claudel
2017-01-20  3:18                 ` npostavs
2017-01-20  3:18                 ` npostavs
2017-01-23  3:53               ` Dmitry Gutov
2017-01-24  3:36                 ` npostavs
2017-01-24  3:36                 ` npostavs
2017-01-29 16:05                   ` npostavs
2017-01-29 16:05                   ` npostavs
2017-01-23  3:53               ` Dmitry Gutov
2017-01-20  0:52             ` npostavs
2017-01-07 21:20         ` npostavs
2017-01-07  6:38       ` npostavs
2016-12-08  7:17     ` David Dynerman
2016-12-08  2:40   ` Clément Pit--Claudel
2016-12-08  2:08 ` Glenn Morris

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=87y3yn2x4j.fsf@users.sourceforge.net \
    --to=npostavs@users.sourceforge.net \
    --cc=25132@debbugs.gnu.org \
    --cc=clement.pit@gmail.com \
    --cc=emperordali@block-party.net \
    /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.