From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Lennart Borgman (gmail)" Newsgroups: gmane.emacs.devel Subject: Re: how to prevent font-lock from messing with a portion of text? Date: Mon, 26 Mar 2007 03:59:06 +0200 Message-ID: <460728EA.4000800@gmail.com> References: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Trace: sea.gmane.org 1174874363 30076 80.91.229.12 (26 Mar 2007 01:59:23 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Mon, 26 Mar 2007 01:59:23 +0000 (UTC) Cc: Emacs-Devel To: Drew Adams Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Mar 26 03:59:17 2007 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1HVeUP-0004Do-68 for ged-emacs-devel@m.gmane.org; Mon, 26 Mar 2007 03:59:17 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1HVeWa-0000CO-L6 for ged-emacs-devel@m.gmane.org; Sun, 25 Mar 2007 21:01:32 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1HVeWX-00009B-Ah for emacs-devel@gnu.org; Sun, 25 Mar 2007 22:01:29 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1HVeWT-0008RP-Ny for emacs-devel@gnu.org; Sun, 25 Mar 2007 22:01:28 -0400 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1HVeWT-0008RB-IO for emacs-devel@gnu.org; Sun, 25 Mar 2007 21:01:25 -0500 Original-Received: from ch-smtp01.sth.basefarm.net ([80.76.149.212]) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1HVeUH-0001oF-1I for emacs-devel@gnu.org; Sun, 25 Mar 2007 21:59:09 -0400 Original-Received: from c83-254-145-24.bredband.comhem.se ([83.254.145.24]:60955 helo=[127.0.0.1]) by ch-smtp01.sth.basefarm.net with esmtp (Exim 4.63) (envelope-from ) id 1HVeUE-00040V-5H; Mon, 26 Mar 2007 03:59:07 +0200 User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.10) Gecko/20070221 Thunderbird/1.5.0.10 Mnenhy/0.7.5.666 In-Reply-To: X-Antivirus: avast! (VPS 000728-0, 2007-03-26), Outbound message X-Antivirus-Status: Clean X-Scan-Result: No virus found in message 1HVeUE-00040V-5H. X-Scan-Signature: ch-smtp01.sth.basefarm.net 1HVeUE-00040V-5H 1fad28c4691be74588a86586634dd374 X-detected-kernel: Linux 2.6? (barebone, rare!) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:68560 Archived-At: Drew Adams wrote: >>> I can't believe it would be hard for font-lock to check if text it >>> wants to work with has an ignore-me property. >> Nobody asks you to believe it would be hard. > > To show what I meant, here's a naive implementation that seems to work. > > 1. In font-lock.el, use this everywhere that `put-text-property' is used > now: > > (defun put-text-property-unless-ignore (start end property value &optional > object) > "`put-text-property', but ignore text with property `font-lock-ignore'." > (let ((here (min start end)) > (end1 (max start end))) > (while (< here end1) > (unless (get-text-property here 'font-lock-ignore object) > (put-text-property here (1+ here) property value object)) > (setq here (1+ here))))) > > 2. In font-lock.el, use this definition of > `font-lock-default-unfontify-region': > > (defun font-lock-default-unfontify-region (beg end) > "Unfontify from BEG to END, unless text with property `font-lock-ignore'." > (let ((here (min beg end)) > (end1 (max beg end))) > (while (< here end1) > (unless (get-text-property here 'font-lock-ignore) > (remove-list-of-text-properties > here (1+ here) (append font-lock-extra-managed-props > (if font-lock-syntactic-keywords > '(syntax-table face font-lock-multiline) > '(face font-lock-multiline))))) > (setq here (1+ here))))) > > That is enough to get the behavior I described: putting a `font-lock-ignore' > property on selected portions of text tells font-lock "hands off". Try it, > for instance, with highlighting from `facemenu-set-face' (`M-o o') - see end > of mail. Don't you have to take care of font-lock-default-fontify-region too?