From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefan Monnier Subject: bug#22399: org-mode fontification Date: Mon, 25 Jan 2016 09:30:37 -0500 Message-ID: References: <87oacjng36.fsf@russet.org.uk> <87ziw36khb.fsf@gmx.us> <87a8o2zrtm.fsf@russet.org.uk> <87bn8i7mha.fsf@gmx.us> <87d1syvgc7.fsf@kyleam.com> <8737tu13la.fsf__5430.1016768024$1453185240$gmane$org@kyleam.com> <87d1sy54vt.fsf@gmx.us> <87wpr5zirr.fsf@kyleam.com> <871t9d4cg3.fsf@gmx.us> <874me8pjii.fsf__7050.42196573249$1453290031$gmane$org@russet.org.uk> <87ziw0goel.fsf_-_@kyleam.com> <87oacf92wl.fsf@kyleam.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:43651) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aNiAw-0007vC-BM for emacs-orgmode@gnu.org; Mon, 25 Jan 2016 09:31:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aNiAs-00043Q-AL for emacs-orgmode@gnu.org; Mon, 25 Jan 2016 09:31:26 -0500 Sender: "Debbugs-submit" Resent-Message-ID: In-Reply-To: <87oacf92wl.fsf@kyleam.com> (Kyle Meyer's message of "Wed, 20 Jan 2016 19:44:58 -0500") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Kyle Meyer Cc: 22399@debbugs.gnu.org, Rasmus , Phillip Lord > Sure. With > > --8<---------------cut here---------------start------------->8--- > > #+BEGIN_SRC elisp > (require 'cl-lib) > (message "test") > #+END_SRC > --8<---------------cut here---------------end--------------->8--- > > in /tmp/scratch.org, run > > emacs -Q --eval "(setq org-src-fontify-natively t)" --visit /tmp/scratch.org > > Go to the code block and hit C-c ' (org-edit-special), and then exit > with another C-c '. Without this change, the source block is no longer > highlighted as elisp code when I return to the buffer. I see the problem. org-src-font-lock-fontify-block is using buffers named " org-src-fontification:" in an unusual way: they're updated via normal buffer modifications, but they're not put in font-lock-mode, so all the font-lock machinery which tries to keep the fontification up-to-date is short-circuited, so it triggers a bug in font-lock-ensure where we made incorrect assumptions. I installed the patch below into emacs-25, which should fix this problem, Stefan --- a/lisp/font-lock.el +++ b/lisp/font-lock.el @@ -1074,7 +1074,13 @@ font-lock-flush (defvar font-lock-ensure-function (lambda (_beg _end) - (unless font-lock-fontified (font-lock-default-fontify-buffer))) + (unless font-lock-fontified + (font-lock-default-fontify-buffer) + (unless font-lock-mode + ;; If font-lock is not enabled, we don't have the hooks in place to + ;; track modifications, so a subsequent call to font-lock-ensure can't + ;; assume that the fontification is still valid. + (setq font-lock-fontified nil)))) "Function to make sure a region has been fontified. Called with two arguments BEG and END.")