unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Alan Mackenzie <acm@muc.de>
Cc: Ralf Angeli <angeli@iwi.uni-sb.de>,
	bug-cc-mode@gnu.org, rms@gnu.org, emacs-devel@gnu.org
Subject: Re: [sigra@home.se: C++-mode: Syntax highlighting: wrong color for function identifier depending on the kind of whitespace that follows]
Date: Thu, 16 Feb 2006 09:51:50 +0000 (GMT)	[thread overview]
Message-ID: <Pine.LNX.3.96.1060216083129.392B-100000@acm.acm> (raw)
In-Reply-To: <87fymkdua9.fsf-monnier+emacs@gnu.org>

Good Morning!

On Wed, 15 Feb 2006, Stefan Monnier wrote:

>>>>> This patch to font-lock is exactly the sort of change I was thinking of.
>>>>> Could someone please install it, then rename
>>>>> before-font-lock-after-change-function to
>>>>> font-lock-extend-region-function, and rename
>>>>> font-lock-run-before-after-change-hook to font-lock-extend-region?

>>> .... Based on the name, I suppose it's some kind of hook in
>>> font-lock-after-change-function, in which case I'd be tempted to suggest
>>> to move it to font-lock-fontify-region instead, to reduce the
>>> performance impact and make it easier to deal with lazy-lock&jit-lock
>>> since these tend to use their own after-change-function.

My original patch patched the \(lazy\|jit\)-lock after-change-functions,
too.  Maybe it would be cleaner to have a new function,
(font-lock-get-after-change-region BEG END OLD-LEN), to return that
region.  This function would also deal with extending the region to whole
lines.

After all, the region to fontify must be the same, regardless of the
support mode (if any) in use.

>> I strongly oppose such a change.  With that change:

>> (i) font-lock-fontify-region would no longer be fontifying the region
>> specified by its paramters, but a different (possibly larger) one.

>That's already the case since font-lock-fontify-region will typically not
>fontify from BEG to END from the beginning of line before BEG to the end of
>line after END.  Then that can be extended yet further because of
>font-lock-multiline.  Nobody has ever complained about this.

>So why is it a problem?

"Nobody complaining" has never been good evidence for something being OK.
Intimidation by authorities (though that doesn't happen here, hi
Richard!) will produce the same effect.  In fact, if Emacs 22 introduced
some wonderful new user facility, and there were NO complaints (or
feature requests), most likely nobody would be using it.

I think, in general, functions MUST do what they say they do, on the
exact parameters given by the caller.  For example, if SQRT (9) is
returned rather than SQRT (9.00322), because it's "easier to calculate",
this would be a bad thing.  In fact, Intel did more or less this with
some of their chips ~10 years ago.  Nobody complained, at least, not for
a while.  That didn't make it OK.

The burden of proof is surely the other way round.  If somebody believes
that, when a caller calls (font-lock-fontify-region 173 258), it's OK to
font lock the region (1 250) instead, the onus is on him to show that
this really is OK.

>> (ii) the hook function (which recalculates BEG and END) might well refer
>> to variables set by a before-change-functions hook.  (This is done in AWK
>> mode, for example).

>Which variables would that be?

Just one, actually - c-awk-old-EOLL, in cc-awk.el ~L787 - L811.  This
records the end-of-logical-line position before the change, in case the
change deletes the \ of an escaped newline.

>> f-l-f-region is regularly called when there is no buffer change in progress.

>Indeed.  Again, why is it a problem?

It would be a problem if f-l-f-region called the hook function, because
it would use c-awk-old-EOLL, which wouldn't now have a meaningful value.
Or, the hook would have to code round this, behaving differently
depending on where f-l-f-region was called from, which would be a Very
Bad Thing.

Or have I totally lost the thread of the argument, here?

>> Both of these things would make debugging a hook function much more
>> difficult than it already is.  Determining the region to fontify and
>> actually fontifying it are two logically distinct operations.

>With jit-lock, the region to fontify is not determined by the
>after-change-functions either.

(jit-lock-after-change BEG END OLD-LEN) determines that region in a
well defined fashion, surely?

The after-change (BEG END OLD-LEN) has a critically different meaning
from the (BEG END) in (font-lock-fontify-region BEG END).  The first of
these says how the buffer has been changed, the second defines a region
to fontify.  Deriving the second of these from the first is precisely the
problem we're trying to solve.

>        Stefan

-- 
Alan.




-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642


  reply	other threads:[~2006-02-16  9:51 UTC|newest]

Thread overview: 102+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <E1D94Wo-0006AP-W2@fencepost.gnu.org>
2005-03-09 21:18 ` [sigra@home.se: C++-mode: Syntax highlighting: wrong color for function identifier depending on the kind of whitespace that follows] Alan Mackenzie
2005-03-09 22:35   ` Stefan Monnier
2005-03-10  8:00     ` Alan Mackenzie
2005-03-10 13:01       ` Stefan Monnier
2005-03-10 15:16         ` D. R. E. Moonfire
2005-03-10 17:01           ` Stefan Monnier
2005-03-10 20:09         ` Alan Mackenzie
2005-03-10 20:53           ` Stefan Monnier
2005-03-10 22:42             ` Alan Mackenzie
2005-03-11 20:28           ` Richard Stallman
2005-03-11  1:48       ` Richard Stallman
2005-03-11 19:43         ` Alan Mackenzie
2005-03-10 22:13     ` Martin Stjernholm
2005-03-10 22:59       ` Stefan Monnier
2005-03-11 20:27         ` Richard Stallman
2005-03-13 16:19         ` Martin Stjernholm
2005-03-14  1:07           ` Stefan Monnier
2005-03-19 22:23             ` Martin Stjernholm
2005-03-19 22:30               ` Stefan Monnier
2005-03-11  1:47     ` Richard Stallman
2005-03-11  4:47       ` Stefan Monnier
2005-03-12  0:56         ` Richard Stallman
2005-03-12  1:00           ` Stefan Monnier
2005-03-13 15:30             ` Richard Stallman
2005-03-11  1:46   ` Richard Stallman
2005-03-11  1:46   ` Richard Stallman
2006-02-12 13:06     ` Ralf Angeli
2006-02-12 16:20       ` Stefan Monnier
2006-02-12 22:58         ` Ralf Angeli
2006-02-13 22:10           ` Stefan Monnier
2006-02-14  7:53             ` martin rudalics
2006-02-14 19:00               ` Stefan Monnier
2006-02-14 20:13                 ` martin rudalics
2006-02-14 21:08                   ` Stefan Monnier
2006-02-15 10:17                     ` martin rudalics
2006-02-15 10:38                       ` Ralf Angeli
2006-02-15 14:20                         ` martin rudalics
2006-02-15 14:56                           ` Ralf Angeli
2006-02-15 16:40                             ` martin rudalics
2006-02-15 17:03                               ` Ralf Angeli
2006-02-16 11:10                               ` Alan Mackenzie
2006-02-16 11:54                                 ` Vivek Dasmohapatra
2006-02-16 15:21                                 ` Stefan Monnier
2006-02-16 23:28                                   ` David Kastrup
2006-02-17 14:19                                     ` Stefan Monnier
2006-02-16 17:21                                 ` martin rudalics
2006-02-15 20:44                     ` Alan Mackenzie
2006-02-16  0:40                       ` Stefan Monnier
2006-02-15 20:56                   ` Alan Mackenzie
2006-02-16  8:56                     ` martin rudalics
2006-02-15 20:13               ` Alan Mackenzie
2006-02-16  9:02                 ` martin rudalics
2006-02-14  8:18             ` Werner LEMBERG
2006-02-14  8:49             ` Ralf Angeli
2006-02-14 19:05               ` Stefan Monnier
2006-02-14 21:12                 ` Ralf Angeli
2006-02-15 13:35                   ` Stefan Monnier
2006-02-15 14:05                     ` Ralf Angeli
2006-02-15 14:21                       ` Ralf Angeli
2006-02-15 20:33             ` Alan Mackenzie
2006-02-15 21:13               ` Stefan Monnier
2006-02-15 21:59                 ` Alan Mackenzie
2006-02-16 14:59                 ` Kim F. Storm
2006-02-16 16:37                   ` Stefan Monnier
2006-02-15 19:07         ` Alan Mackenzie
2006-02-15 21:42           ` Ralf Angeli
2006-02-16 11:20             ` Alan Mackenzie
2006-02-16 11:54               ` Ralf Angeli
2006-02-16 15:12                 ` Alan Mackenzie
2006-02-17  7:56                   ` martin rudalics
2006-02-17 11:32                     ` Ralf Angeli
2006-02-17 13:22                       ` martin rudalics
2006-02-17 13:33                         ` Ralf Angeli
2006-02-16 16:32                 ` Stefan Monnier
2006-02-16  0:38           ` Stefan Monnier
2006-02-16  9:51             ` Alan Mackenzie [this message]
2006-02-16 16:27               ` Stefan Monnier
2006-02-17  7:48                 ` martin rudalics
2006-02-17 14:36                   ` Stefan Monnier
2006-02-16 18:46               ` martin rudalics
2006-02-16  9:09           ` martin rudalics
2006-02-13  4:40       ` Richard M. Stallman
2006-02-13  5:25         ` Stefan Monnier
2006-02-14  0:39           ` Richard M. Stallman
2006-03-14 19:23         ` Alan Mackenzie
2006-03-14 22:11           ` Stefan Monnier
2006-03-15  8:52             ` martin rudalics
2006-03-15  9:02             ` Ralf Angeli
2006-03-15 10:22               ` Stefan Monnier
2006-03-15 11:40             ` Alan Mackenzie
2006-03-15 16:16               ` Stefan Monnier
2006-03-15 20:20           ` Richard Stallman
2006-03-20  8:16           ` font-lock-extend-region (was: [sigra@home.se: C++-mode: Syntax highlighting: wrong color for function identifier depending on the kind of whitespace that follows]) Stefan Monnier
2006-03-20 13:01             ` Alan Mackenzie
2006-03-20 17:18               ` font-lock-extend-region Stefan Monnier
2006-03-21 16:05                 ` font-lock-extend-region Alan Mackenzie
2006-03-21 21:32                   ` font-lock-extend-region Stefan Monnier
2006-03-23 15:23                     ` font-lock-extend-region Alan Mackenzie
2006-03-23 16:18                       ` font-lock-extend-region Stefan Monnier
2006-02-15 19:34       ` [sigra@home.se: C++-mode: Syntax highlighting: wrong color for function identifier depending on the kind of whitespace that follows] Alan Mackenzie
2006-02-16  9:07         ` Ralf Angeli
2006-02-16  9:07         ` martin rudalics

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=Pine.LNX.3.96.1060216083129.392B-100000@acm.acm \
    --to=acm@muc.de \
    --cc=angeli@iwi.uni-sb.de \
    --cc=bug-cc-mode@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=rms@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.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).