unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* font-lock-maximum-decoration and how to make a default font-lock lower than maximal?
@ 2012-08-17 12:29 Vitalie Spinu
  2012-08-17 14:29 ` Eli Zaretskii
  2012-08-21 17:24 ` Stefan Monnier
  0 siblings, 2 replies; 32+ messages in thread
From: Vitalie Spinu @ 2012-08-17 12:29 UTC (permalink / raw)
  To: emacs-devel


Hi, 

As a mode developer how can I set default font-lock level lower than
maximal (aka t)? 

For example, assume you are developing X-mode and some users would like
to have functions + numbers + other stuff highlighted, but you don't
want to activate those by default. So you can add font-lock keyword
levels (2, 3, 4 etc) to accommodate this preference, but want to set the
default to 2.

What is the emacs recommendation for how to cleanly achieve this without
interfering with user level font-lock-maximum-decoration?

It looks to me that emacs should set font-lock-maximum-decoration to a
number instead to `t' by default. Then mode developers can easily decide
what font-lock to activate by default by setting appropriate keywords up
to that level only, and everything else on a higher level.

Thanks, 
Vitalie.




^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: font-lock-maximum-decoration and how to make a default font-lock lower than maximal?
  2012-08-17 12:29 font-lock-maximum-decoration and how to make a default font-lock lower than maximal? Vitalie Spinu
@ 2012-08-17 14:29 ` Eli Zaretskii
  2012-08-17 14:42   ` Vitalie Spinu
  2012-08-21 17:24 ` Stefan Monnier
  1 sibling, 1 reply; 32+ messages in thread
From: Eli Zaretskii @ 2012-08-17 14:29 UTC (permalink / raw)
  To: Vitalie Spinu; +Cc: emacs-devel

> From: Vitalie Spinu <spinuvit@gmail.com>
> Date: Fri, 17 Aug 2012 14:29:12 +0200
> 
> It looks to me that emacs should set font-lock-maximum-decoration to a
> number instead to `t' by default. Then mode developers can easily decide
> what font-lock to activate by default by setting appropriate keywords up
> to that level only, and everything else on a higher level.

I think it's not up to the mode developer to decide that.  It's up to
the user.  So you as developer should provide all the fontifications
your users may wish to have, and let them decide what to activate.



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: font-lock-maximum-decoration and how to make a default font-lock lower than maximal?
  2012-08-17 14:29 ` Eli Zaretskii
@ 2012-08-17 14:42   ` Vitalie Spinu
  2012-08-17 15:57     ` font-lock-maximum-decoration and how to make a defaultfont-lock " Drew Adams
  2012-08-17 17:36     ` font-lock-maximum-decoration and how to make a default font-lock lower than maximal? Eli Zaretskii
  0 siblings, 2 replies; 32+ messages in thread
From: Vitalie Spinu @ 2012-08-17 14:42 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

  >> Eli Zaretskii <eliz@gnu.org>
  >> on Fri, 17 Aug 2012 17:29:14 +0300 wrote:

  >> From: Vitalie Spinu <spinuvit@gmail.com>
  >> Date: Fri, 17 Aug 2012 14:29:12 +0200
  >> 
  >> It looks to me that emacs should set font-lock-maximum-decoration to a
  >> number instead to `t' by default. Then mode developers can easily decide
  >> what font-lock to activate by default by setting appropriate keywords up
  >> to that level only, and everything else on a higher level.

  > I think it's not up to the mode developer to decide that.  It's up to
  > the user.  So you as developer should provide all the fontifications
  > your users may wish to have, and let them decide what to activate.

You mean "let them decide what to deactivate"? All levels are activated
by default (font-lock-maximum-decoration is t). And obviously some guys
(may be including the developer) don't like that.

Vitalie.



^ permalink raw reply	[flat|nested] 32+ messages in thread

* RE: font-lock-maximum-decoration and how to make a defaultfont-lock lower than maximal?
  2012-08-17 14:42   ` Vitalie Spinu
@ 2012-08-17 15:57     ` Drew Adams
  2012-08-17 19:49       ` font-lock-maximum-decoration should be 2 by default? Vitalie Spinu
  2012-08-17 17:36     ` font-lock-maximum-decoration and how to make a default font-lock lower than maximal? Eli Zaretskii
  1 sibling, 1 reply; 32+ messages in thread
From: Drew Adams @ 2012-08-17 15:57 UTC (permalink / raw)
  To: 'Vitalie Spinu', 'Eli Zaretskii'; +Cc: emacs-devel

>   > I think it's not up to the mode developer to decide that. 
>   > It's up to the user.  So you as developer should provide
>   > all the fontifications your users may wish to have,

Or that you might want your users to have. ;-)

>   > and let them decide what to activate.
> 
> You mean "let them decide what to deactivate"?

I can't speak for what Eli meant, but yes, let the users decide.

> All levels are activated by default (font-lock-maximum-decoration is t).

Yes, Emacs Dev concluded after many years that `t' is the most appropriate
default value.

As with any user option, one size might not fit all, and it might not be obvious
to users that there is an option for changing this, and even for changing it on
a per-mode basis.  You might want to remind them, for your mode.

> And obviously some guys (may be including the developer) don't like that.

If you mean that you don't like `t' to be the default, then argue here for a
change in default value.  If you mean that you don't like `t' for your own use,
then customize the option.

If you mean that you don't want the default behavior for a mode you create to be
maximum, then you are out of luck.

You can restrict extra fontification in your mode by simply not providing it.
But if you provide more than one fontification level then users get to choose
which level to use, and the default is maximum fontification.

You can also add to the Commentary for your mode (or even to the mode's doc
string, if you think it is important) that you recommend setting the font-lock
decoration for this mode to ___.  Or just remind users about the possibility -
e.g.,

;;  If you want a minimum fontification for Foobar mode,
;;  then customize option `font-lock-maximum-decoration'.
;;  If you want a different fontification level for Foobar
;;  than for other modes, you can do this too by customizing
;;  `font-lock-maximize-decoration'.




^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: font-lock-maximum-decoration and how to make a default font-lock lower than maximal?
  2012-08-17 14:42   ` Vitalie Spinu
  2012-08-17 15:57     ` font-lock-maximum-decoration and how to make a defaultfont-lock " Drew Adams
@ 2012-08-17 17:36     ` Eli Zaretskii
  1 sibling, 0 replies; 32+ messages in thread
From: Eli Zaretskii @ 2012-08-17 17:36 UTC (permalink / raw)
  To: Vitalie Spinu; +Cc: emacs-devel

> From: Vitalie Spinu <spinuvit@gmail.com>
> Cc: emacs-devel@gnu.org
> Date: Fri, 17 Aug 2012 16:42:31 +0200
> 
>   > I think it's not up to the mode developer to decide that.  It's up to
>   > the user.  So you as developer should provide all the fontifications
>   > your users may wish to have, and let them decide what to activate.
> 
> You mean "let them decide what to deactivate"?

Yes (but in English this is the same thing).

> All levels are activated by default (font-lock-maximum-decoration is
> t). And obviously some guys (may be including the developer) don't
> like that.

The developer, acting as a user, is free to customize his/her Emacs to
their heart's content.



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: font-lock-maximum-decoration should be 2 by default?
  2012-08-17 15:57     ` font-lock-maximum-decoration and how to make a defaultfont-lock " Drew Adams
@ 2012-08-17 19:49       ` Vitalie Spinu
  2012-08-17 20:26         ` Eli Zaretskii
                           ` (2 more replies)
  0 siblings, 3 replies; 32+ messages in thread
From: Vitalie Spinu @ 2012-08-17 19:49 UTC (permalink / raw)
  To: Drew Adams; +Cc: 'Eli Zaretskii', emacs-devel

  >> "Drew Adams" <drew.adams@oracle.com>
  >> on Fri, 17 Aug 2012 08:57:28 -0700 wrote:

  >> And obviously some guys (may be including the developer) don't like that.

  > If you mean that you don't like `t' to be the default, then argue here for a
  > change in default value.

  > If you mean that you don't want the default behavior for a mode you create to be
  > maximum, then you are out of luck.

I meant both. 

So let me try to defend the new  default:


1) Setting font-lock-maximum-decoration to 2 (i.e. 3 levels recommended
  by emacs info page "23.6.5 Levels of Font Lock") won't impact most of
  the modes, if any at all. Which mode is defining more than 3
  recommended levels?

2) People tend to stick to defaults even when their "true" preferences
  are different. Probably the most dramatic case of life and death is
  the following http://danariely.com/2008/05/05/3-main-lessons-of-psychology/
  (first story).

  In font-lock language: If you design a feature which is intended for
  30% of salad lovers. Then by the virtue of emacs defaults and peoples'
  psychology, 90% of the people will end up using it. That is, 60% of
  normal users (which don't like salads) will end up eating it.

3) Developers which would like to capture 30% of salad lovers will try
  to find workarounds. That is, add redundant, mode-specific font-lock
  customization, or mess with font-lock-maximum-decoration.

4) If not self-obvious, the proposed modification would allow a default
  level of fontification. Thing which is not possible right now.

5) The most knowledgeable person to decide on the default level of font
  lock, is the developer of the mode. Why then emacs would decide that
  the maximum decoration is the best one?


  >> All levels are activated by default (font-lock-maximum-decoration is t).

  > Yes, Emacs Dev concluded after many years that `t' is the most appropriate
  > default value.

Interesting. I am curious of reasons for that. Cannot see one by myself,
but I must be missing something.

Vitalie.



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: font-lock-maximum-decoration should be 2 by default?
  2012-08-17 19:49       ` font-lock-maximum-decoration should be 2 by default? Vitalie Spinu
@ 2012-08-17 20:26         ` Eli Zaretskii
  2012-08-17 20:53           ` Drew Adams
  2012-08-17 20:50         ` Drew Adams
  2012-08-18  5:10         ` Stephen J. Turnbull
  2 siblings, 1 reply; 32+ messages in thread
From: Eli Zaretskii @ 2012-08-17 20:26 UTC (permalink / raw)
  To: Vitalie Spinu; +Cc: drew.adams, emacs-devel

> From: Vitalie Spinu <spinuvit@gmail.com>
> Cc: "'Eli Zaretskii'" <eliz@gnu.org>,  emacs-devel@gnu.org
> Date: Fri, 17 Aug 2012 21:49:04 +0200
> 
>   > Yes, Emacs Dev concluded after many years that `t' is the most appropriate
>   > default value.
> 
> Interesting. I am curious of reasons for that.

Performance.  You don't gain much by omitting some fontifications
nowadays.  The variable was introduced to get snappier redisplay;
since the need for that is no longer valid, the default was set to t.



^ permalink raw reply	[flat|nested] 32+ messages in thread

* RE: font-lock-maximum-decoration should be 2 by default?
  2012-08-17 19:49       ` font-lock-maximum-decoration should be 2 by default? Vitalie Spinu
  2012-08-17 20:26         ` Eli Zaretskii
@ 2012-08-17 20:50         ` Drew Adams
  2012-08-17 22:47           ` Vitalie Spinu
  2012-08-18  5:10         ` Stephen J. Turnbull
  2 siblings, 1 reply; 32+ messages in thread
From: Drew Adams @ 2012-08-17 20:50 UTC (permalink / raw)
  To: 'Vitalie Spinu'; +Cc: 'Eli Zaretskii', emacs-devel

>   > Yes, Emacs Dev concluded after many years that `t' is the 
>   > most appropriate default value.
> 
> Interesting. I am curious of reasons for that. Cannot see one 
> by myself, but I must be missing something.

Actually, the default has been `t' for as long as I can recall.  Eli has said it
is since 20.1.  Stefan has conjectured that it is ever since the variable has
existed.
http://lists.gnu.org/archive/html/emacs-devel/2007-10/msg00799.html


But these too might be of interest.  Suggestion: start with the last.  This
useful feature (font-lock levels) is apparently already on its way to the trash
heap (its removal is marked `pending' for 24.2).  We will apparently soon have
no choice in the matter - the behavior will be hard-coded as maximum decoration.
http://lists.gnu.org/archive/html/emacs-devel/2011-06/msg00587.html
http://debbugs.gnu.org/cgi/bugreport.cgi?bug=6935#17
http://debbugs.gnu.org/cgi/bugreport.cgi?bug=6935#23
http://debbugs.gnu.org/cgi/bugreport.cgi?bug=6935#47




^ permalink raw reply	[flat|nested] 32+ messages in thread

* RE: font-lock-maximum-decoration should be 2 by default?
  2012-08-17 20:26         ` Eli Zaretskii
@ 2012-08-17 20:53           ` Drew Adams
  2012-08-18  6:59             ` Eli Zaretskii
  0 siblings, 1 reply; 32+ messages in thread
From: Drew Adams @ 2012-08-17 20:53 UTC (permalink / raw)
  To: 'Eli Zaretskii', 'Vitalie Spinu'; +Cc: emacs-devel

> > Interesting. I am curious of reasons for that.
> 
> Performance.  You don't gain much by omitting some fontifications
> nowadays.  The variable was introduced to get snappier redisplay;
> since the need for that is no longer valid, the default was set to t.

Do you have any proof of that being _the_ reason it was introduced: just for
performance?

FWIW, that would suggest that the default was initially something other than
`t', which contradicts what Stefan has conjectured.  (I too would guess that the
original default value might not have been `t', but I do not recall.)

And when you say "is no longer valid", apparently you mean that at least since
Emacs 20 it has not been valid, since as you have said elsewhere, 20.1 is when
it became `t'.

I would be surprised if the ability for users to pick the highlighting level
they wanted - with whatever motivation - was not a reason for introducing this
variable.  IOW, my guess is that it has always been about letting users get the
amount of highlighting they want - for whatever reasons, not necessarily for
better redisplay performance.

That some user on a slow machine, long ago, might have chosen minimal
highlighting in part because of performance in no way supports a view that that
is the only reason for a user to choose less highlighting, and it in no way
supports the view that the variable was added only because of slow redisplay.

The variable, now as in the past, gives users control over the amount of
highlighting font lock provides.  Nothing more or less than that.

Yes, that user control is hidden to some extent by the default value being `t',
and to some extent it is stymied by the scarcity of libraries that provide
multiple levels.  Still, the variable lets users choose.




^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: font-lock-maximum-decoration should be 2 by default?
  2012-08-17 20:50         ` Drew Adams
@ 2012-08-17 22:47           ` Vitalie Spinu
  2012-08-18  7:03             ` Eli Zaretskii
  2012-08-18 10:10             ` Vitalie Spinu
  0 siblings, 2 replies; 32+ messages in thread
From: Vitalie Spinu @ 2012-08-17 22:47 UTC (permalink / raw)
  To: Drew Adams; +Cc: 'Eli Zaretskii', emacs-devel

  >> "Drew Adams" <drew.adams@oracle.com>
  >> on Fri, 17 Aug 2012 13:50:56 -0700 wrote:

  >> > Yes, Emacs Dev concluded after many years that `t' is the 
  >> > most appropriate default value.
  >> 
  >> Interesting. I am curious of reasons for that. Cannot see one 
  >> by myself, but I must be missing something.

  > Actually, the default has been `t' for as long as I can recall.  Eli has said it
  > is since 20.1.  Stefan has conjectured that it is ever since the variable has
  > existed.
  > http://lists.gnu.org/archive/html/emacs-devel/2007-10/msg00799.html

Apparently it is t from 1997 http://article.gmane.org/gmane.emacs.devel/66833/match=font+lock+maximum+decoration

  > But these too might be of interest.  Suggestion: start with the last.  This
  > useful feature (font-lock levels) is apparently already on its way to the trash
  > heap (its removal is marked `pending' for 24.2).  We will apparently soon have
  > no choice in the matter - the behavior will be hard-coded as maximum
  > decoration.

That's funny. Probably the most subjective part of Emacs, fontification,
is left without even basic customization?  

If that happens, every mode will try to reinvent its own font-lock
levels and implement its own user settings.  IMHO this is chaos and
clearly a regression.


Most of people agree on the basic fontification. Trouble comes for
higher levels. Could it be please reset to the default of 2?




^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: font-lock-maximum-decoration should be 2 by default?
  2012-08-17 19:49       ` font-lock-maximum-decoration should be 2 by default? Vitalie Spinu
  2012-08-17 20:26         ` Eli Zaretskii
  2012-08-17 20:50         ` Drew Adams
@ 2012-08-18  5:10         ` Stephen J. Turnbull
  2012-08-18 10:03           ` Vitalie Spinu
  2 siblings, 1 reply; 32+ messages in thread
From: Stephen J. Turnbull @ 2012-08-18  5:10 UTC (permalink / raw)
  To: Vitalie Spinu; +Cc: 'Eli Zaretskii', Drew Adams, emacs-devel

Vitalie Spinu writes:

 >   In font-lock language: If you design a feature which is intended for
 >   30% of salad lovers. Then by the virtue of emacs defaults and peoples'
 >   psychology, 90% of the people will end up using it. That is, 60% of
 >   normal users (which don't like salads) will end up eating it.

True, but it's not clear that Emacs should care about "normal" users
in the sense of "people's psychology".  Emacs users are different, at
least that's the conventional wisdom.  They like (1) customizability,
(2) a consistent user interface across applications.  It's not obvious
that the generally prevalent "accept the default" psychology is that
relevant to Emacs users.

 > 3) Developers which would like to capture 30% of salad lovers will try
 >   to find workarounds. That is, add redundant, mode-specific font-lock
 >   customization, or mess with font-lock-maximum-decoration.

This is true, but I'm not sure if it's a problem.

 > 4) If not self-obvious, the proposed modification would allow a default
 >   level of fontification. Thing which is not possible right now.

It's not obvious that the concept of "level of fontification" is
entirely consistent.  At least for me, if certain features aren't
fontified, I'm unhappy with the fontification, and if others are, I
get annoyed.  If those sets are basically monotonic across most Emacs
users, you can talk about levels.  Otherwise, what you mean by "level"
is what you mean, no more and no less.

 > 5) The most knowledgeable person to decide on the default level of font
 >   lock, is the developer of the mode. Why then emacs would decide that
 >   the maximum decoration is the best one?

This is not at all obvious.  In principle, the most knowledgeable
person to decide on the level of fontification is the user.  Then the
best default is the one that best serves the most users.  But "best
serve" is not well-defined, either.  One might think that the defaults
that require the fewest customizations by the typical user are best,
but it could easily be the case that the best defaults somehow
demonstrate the capabilities of Emacs, allowing users to learn them
with little effort, and so enabling the users to choose the ones they
like with less effort.

Whatever it is that "typical" users want, it's best decided by those
who observe the typical users.  If a mode is used by a wide variety of
users, then the Emacs maintainers are probably in the best position to
observe "typical" needs.  If a mode is used mostly by a subset of
"activists" (== users who frequently interact with the mode
maintainers) then the mode maintainers probably know best.  (Yet even
here there is a caveat: the Emacs maintainers seem likely to be most
knowledgeable about how to introduce modes to new users not already in
the activist sets.)

In the end there are arguments for both sides.




^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: font-lock-maximum-decoration should be 2 by default?
  2012-08-17 20:53           ` Drew Adams
@ 2012-08-18  6:59             ` Eli Zaretskii
  2012-08-19  2:32               ` Jason Rumney
  0 siblings, 1 reply; 32+ messages in thread
From: Eli Zaretskii @ 2012-08-18  6:59 UTC (permalink / raw)
  To: Drew Adams; +Cc: spinuvit, emacs-devel

> From: "Drew Adams" <drew.adams@oracle.com>
> Cc: <emacs-devel@gnu.org>
> Date: Fri, 17 Aug 2012 13:53:44 -0700
> 
> > > Interesting. I am curious of reasons for that.
> > 
> > Performance.  You don't gain much by omitting some fontifications
> > nowadays.  The variable was introduced to get snappier redisplay;
> > since the need for that is no longer valid, the default was set to t.
> 
> Do you have any proof of that being _the_ reason it was introduced: just for
> performance?

No proof, just my faulty memory.



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: font-lock-maximum-decoration should be 2 by default?
  2012-08-17 22:47           ` Vitalie Spinu
@ 2012-08-18  7:03             ` Eli Zaretskii
  2012-08-18 10:10             ` Vitalie Spinu
  1 sibling, 0 replies; 32+ messages in thread
From: Eli Zaretskii @ 2012-08-18  7:03 UTC (permalink / raw)
  To: Vitalie Spinu; +Cc: drew.adams, emacs-devel

> From: Vitalie Spinu <spinuvit@gmail.com>
> Cc: "'Eli Zaretskii'" <eliz@gnu.org>,  <emacs-devel@gnu.org>
> Date: Sat, 18 Aug 2012 00:47:02 +0200
> 
> That's funny. Probably the most subjective part of Emacs, fontification,
> is left without even basic customization?  
> 
> If that happens, every mode will try to reinvent its own font-lock
> levels and implement its own user settings.  IMHO this is chaos and
> clearly a regression.
> 
> 
> Most of people agree on the basic fontification. Trouble comes for
> higher levels.

That's not my experience.  In my experience, most people want the
fontifications always be ON, and there's a small minority that doesn't
want _any_ fontifications at all (which one gets by turning
global-font-lock-mode OFF).



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: font-lock-maximum-decoration should be 2 by default?
  2012-08-18  5:10         ` Stephen J. Turnbull
@ 2012-08-18 10:03           ` Vitalie Spinu
  2012-08-19 11:10             ` Stephen J. Turnbull
  0 siblings, 1 reply; 32+ messages in thread
From: Vitalie Spinu @ 2012-08-18 10:03 UTC (permalink / raw)
  To: Stephen J. Turnbull; +Cc: 'Eli Zaretskii', Drew Adams, emacs-devel

  >> "Stephen J. Turnbull" <stephen@xemacs.org>
  >> on Sat, 18 Aug 2012 14:10:58 +0900 wrote:

  > Vitalie Spinu writes:
  >> In font-lock language: If you design a feature which is intended for
  >> 30% of salad lovers. Then by the virtue of emacs defaults and peoples'
  >> psychology, 90% of the people will end up using it. That is, 60% of
  >> normal users (which don't like salads) will end up eating it.

  > True, but it's not clear that Emacs should care about "normal" users
  > in the sense of "people's psychology".  Emacs users are different, at
  > least that's the conventional wisdom.  They like (1) customizability,
  > (2) a consistent user interface across applications.  It's not obvious
  > that the generally prevalent "accept the default" psychology is that
  > relevant to Emacs users.

It's easy to get sick of too much customization. It's another well know
paradox of human pshychology -- we want more choose but too much choice
is bad for you
(http://news.bbc.co.uk/today/hi/today/newsid_8155000/8155505.stm).

There are so many small inconveniences/bugs which I know I can solve
probably in 15-30 minutes by studding the code/docs/customization, but I
continue to leave with those in emacs, sometimes for months and
years. Familiar?

  >> 3) Developers which would like to capture 30% of salad lovers will try
  >> to find workarounds. That is, add redundant, mode-specific font-lock
  >> customization, or mess with font-lock-maximum-decoration.

  > This is true, but I'm not sure if it's a problem.

It's a problem in light of yours (2). Everyone wants a consistent
interface.

  >> 4) If not self-obvious, the proposed modification would allow a default
  >> level of fontification. Thing which is not possible right now.

  > It's not obvious that the concept of "level of fontification" is
  > entirely consistent.  At least for me, if certain features aren't
  > fontified,

I agree, levels are not flexible enough (or at least at higher
levels). People tend to agree on the basic fontification like strings,
comments and keywords. But with more fontification levels become a
trouble. For example I can choose to fortify the function call as in
"foo(x, y)" or I can choose to fortify parenthesis. Different people
might choose different things. Also, I might want to fortify {} braces
as they are difficult to distinguish from (), but leave all other paren
syntax untouched.  These things are difficult or impossible to fit into
levels.

Vitalie.



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: font-lock-maximum-decoration should be 2 by default?
  2012-08-17 22:47           ` Vitalie Spinu
  2012-08-18  7:03             ` Eli Zaretskii
@ 2012-08-18 10:10             ` Vitalie Spinu
  2012-08-21 17:31               ` Stefan Monnier
  1 sibling, 1 reply; 32+ messages in thread
From: Vitalie Spinu @ 2012-08-18 10:10 UTC (permalink / raw)
  To: Drew Adams; +Cc: 'Eli Zaretskii', emacs-devel

  >> Vitalie Spinu <spinuvit@gmail.com>
  >> on Sat, 18 Aug 2012 00:47:02 +0200 wrote:

  >> "Drew Adams" <drew.adams@oracle.com>
  >> on Fri, 17 Aug 2012 13:50:56 -0700 wrote:

  >> > Yes, Emacs Dev concluded after many years that `t' is the 
  >> > most appropriate default value.
  >> 
  >> Interesting. I am curious of reasons for that. Cannot see one 
  >> by myself, but I must be missing something.

  >> Actually, the default has been `t' for as long as I can recall.  Eli has said it
  >> is since 20.1.  Stefan has conjectured that it is ever since the variable has
  >> existed.
  >> http://lists.gnu.org/archive/html/emacs-devel/2007-10/msg00799.html

  > Apparently it is t from 1997 http://article.gmane.org/gmane.emacs.devel/66833/match=font+lock+maximum+decoration

  >> But these too might be of interest.  Suggestion: start with the last.  This
  >> useful feature (font-lock levels) is apparently already on its way to the trash
  >> heap (its removal is marked `pending' for 24.2).  We will apparently soon have
  >> no choice in the matter - the behavior will be hard-coded as maximum
  >> decoration.

  > That's funny. Probably the most subjective part of Emacs, fontification,
  > is left without even basic customization?


How about the following as a replacement for levels:

Let say you are defining mode "X". Then `define-derived-mode' and
`define-generic-mode' can add X-mode-font-lock-keywords as a
(customizable?) variable, which would be a list of keywords or symbols
holding keywords.

Then font-lock can bunch together font-lock-keywords and
X-mode-font-lock-keywords at initialization. 

Each mode can define a set of keyword variables with suggestive names
X-mode-fl-keyword-basic, X-mode-fl-keyword-functions,
X-mode-fl-keyword-brackets, or just X-mode-fl-keyword-1 for
level-1. Emacs can define a bunch of standard keywords as well.

Then user will be able to add/remove keywords from
X-mode-font-lock-keywords as desired.

Vitalie.



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: font-lock-maximum-decoration should be 2 by default?
  2012-08-18  6:59             ` Eli Zaretskii
@ 2012-08-19  2:32               ` Jason Rumney
  2012-08-19  3:13                 ` Drew Adams
  2012-08-19 10:34                 ` Andreas Schwab
  0 siblings, 2 replies; 32+ messages in thread
From: Jason Rumney @ 2012-08-19  2:32 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: spinuvit, Drew Adams, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> From: "Drew Adams" <drew.adams@oracle.com>
>> Cc: <emacs-devel@gnu.org>
>> Date: Fri, 17 Aug 2012 13:53:44 -0700
>> 
>> > > Interesting. I am curious of reasons for that.
>> > 
>> > Performance.  You don't gain much by omitting some fontifications
>> > nowadays.  The variable was introduced to get snappier redisplay;
>> > since the need for that is no longer valid, the default was set to t.
>> 
>> Do you have any proof of that being _the_ reason it was introduced: just for
>> performance?
>
> No proof, just my faulty memory.

In this case, not faulty:

*** lisp/font-lock.el	1997-02-21 09:36:18 +0000
--- lisp/font-lock.el	1997-03-15 13:19:12 +0000
***************
*** 190,196 ****
  If a number, only buffers greater than this size have fontification messages.")
  
  ;;;###autoload
! (defvar font-lock-maximum-decoration nil
    "*Maximum decoration level for fontification.
  If nil, use the default decoration (typically the minimum available).
  If t, use the maximum decoration available.
--- 190,196 ----
  If a number, only buffers greater than this size have fontification messages.")
  
  ;;;###autoload
! (defvar font-lock-maximum-decoration t
    "*Maximum decoration level for fontification.
  If nil, use the default decoration (typically the minimum available).
  If t, use the maximum decoration available.
***************

1996-08-11  Richard Stallman  <rms@psilocin.gnu.ai.mit.edu>

	* Version 19.33 released.

1997-09-15  Richard Stallman  <rms@psilocin.gnu.ai.mit.edu>

	* Version 20.1 released.

(I thought there was also a 19.34, but that might be my faulty memory,
or maybe it was on a branch, so doesn't show up in the changelogs).



^ permalink raw reply	[flat|nested] 32+ messages in thread

* RE: font-lock-maximum-decoration should be 2 by default?
  2012-08-19  2:32               ` Jason Rumney
@ 2012-08-19  3:13                 ` Drew Adams
  2012-08-19  3:34                   ` Jason Rumney
  2012-08-19 16:46                   ` Eli Zaretskii
  2012-08-19 10:34                 ` Andreas Schwab
  1 sibling, 2 replies; 32+ messages in thread
From: Drew Adams @ 2012-08-19  3:13 UTC (permalink / raw)
  To: 'Jason Rumney', 'Eli Zaretskii'; +Cc: spinuvit, emacs-devel

> >> > > Interesting. I am curious of reasons for that.
> >> > 
> >> > Performance.  You don't gain much by omitting some fontifications
> >> > nowadays.  The variable was introduced to get snappier redisplay;
> >> > since the need for that is no longer valid, the default 
> >> > was set to t.
> >> 
> >> Do you have any proof of that being _the_ reason it was 
> >> introduced: just for performance?
> >
> > No proof, just my faulty memory.
> 
> In this case, not faulty:
> 
> ! (defvar font-lock-maximum-decoration nil
...
> ! (defvar font-lock-maximum-decoration t
...
> 1996-08-11  Richard Stallman  <rms@psilocin.gnu.ai.mit.edu>
> 	* Version 19.33 released.
> 1997-09-15  Richard Stallman  <rms@psilocin.gnu.ai.mit.edu>
> 	* Version 20.1 released.
> 
> (I thought there was also a 19.34, but that might be my faulty memory,
> or maybe it was on a branch, so doesn't show up in the changelogs).

Uh, where do you see ANYTHING there that supports the claim that "the" reason
why the variable was _introduced_ in the first place was "to get snappier
display"?

What you show supports the fact that the default value was changed from nil to t
in 1997.  Nothing more, AFAICT.  The question is whether the variable and its
levels exist _only_ to provide "snappier redisplay" (by choosing a lower level).

The variable is intended to give users a choice of different amounts of
font-lock decoration.  A user can want more or less decoration for any number of
reasons.  In the old days performance was no doubt one of the possible reasons.

If performance were the only reason for this variable, then those who want to
remove the variable now might have an argument.  (And in that case it could even
have been removed in 1997.)

It is clear to me that there are users, today, who want less fontification in
some modes (I've heard from some of them).  This variable gives them a way to
get that.

Yes, a default of `t' hides this possibility from some users, no doubt.  And
yes, there are too few modes that actually provide different levels.

And yes, one could perhaps dream up a better approach than levels.  But while
waiting for the better approach (conjectured by Stefan long ago), this variable
has the merit of providing users some control over the amount of decoration.




^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: font-lock-maximum-decoration should be 2 by default?
  2012-08-19  3:13                 ` Drew Adams
@ 2012-08-19  3:34                   ` Jason Rumney
  2012-08-19  4:39                     ` Drew Adams
  2012-08-19 10:50                     ` Vitalie Spinu
  2012-08-19 16:46                   ` Eli Zaretskii
  1 sibling, 2 replies; 32+ messages in thread
From: Jason Rumney @ 2012-08-19  3:34 UTC (permalink / raw)
  To: Drew Adams; +Cc: 'Eli Zaretskii', spinuvit, emacs-devel

"Drew Adams" <drew.adams@oracle.com> writes:

> Uh, where do you see ANYTHING there that supports the claim that "the" reason
> why the variable was _introduced_ in the first place was "to get snappier
> display"?

Sorry, I have to rely on memory for that.  I don't know if there is
still an archive of emacs-hackers around on the GNU machines, but it
seems that is what it will take to convince you that Eli and my memories
are correct.

To be more precise, it was introduced originally (in 1995) to allow more
processor intensive font-locking to be computed, without degrading the
default experience for users on older machines. By 1997, those older
machines were scarce enough that the default could be safely changed.

To have this suddenly become an issue in 2012 is somewhat of a surprise.

> It is clear to me that there are users, today, who want less fontification in
> some modes (I've heard from some of them).  This variable gives them a way to
> get that.

I suspect that those users would be just as well served, if not better
served due to the lack of support in many modes for font-lock levels, by
customizing the font-lock faces.




^ permalink raw reply	[flat|nested] 32+ messages in thread

* RE: font-lock-maximum-decoration should be 2 by default?
  2012-08-19  3:34                   ` Jason Rumney
@ 2012-08-19  4:39                     ` Drew Adams
  2012-08-19 10:50                     ` Vitalie Spinu
  1 sibling, 0 replies; 32+ messages in thread
From: Drew Adams @ 2012-08-19  4:39 UTC (permalink / raw)
  To: 'Jason Rumney'; +Cc: 'Eli Zaretskii', spinuvit, emacs-devel

> > It is clear to me that there are users, today, who want 
> > less fontification in some modes (I've heard from some of them).
> > This variable gives them a way to get that.
> 
> I suspect that those users would be just as well served, if not better
> served due to the lack of support in many modes for font-lock 
> levels, by customizing the font-lock faces.

Are you thinking that font lock uses only the `font-lock-*' faces?  Or do you
(hopefully) mean any faces at all that happen to be used for font locking?

Either way, font-locking is about a particular _use_ of a face.  Customizing
that use is not the same as customizing the face itself - which affects all uses
of it.  

Customizing the highlighting used in emacs-lisp-mode should mean just that.
That is not the same as customizing some or all of the faces that happen to be
used for emacs-lisp-mode font-locking.

Sure, if you want to remove some highlighting in a particular mode (e.g., to
simulate a lower decoration level), you can customize some faces used to
highlight that mode.  E.g., you can remove some or all of a face's attributes,
or just make it inherit from `default' to nullify it.

But customizing the face itself affects that face wherever it is used.  That is
a lousy workaround for customizing the _font-locking_ used in a particular mode.

To the extent that a particular mode defines its own faces and uses no others
for font-locking, yes, you can use such a workaround without affecting other
highlighting elsewhere.  But it's still a lousy workaround.  Customizing faces
to be like `default' in order to remove their visible font-lock effects is a
poster child for "workaround".




^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: font-lock-maximum-decoration should be 2 by default?
  2012-08-19  2:32               ` Jason Rumney
  2012-08-19  3:13                 ` Drew Adams
@ 2012-08-19 10:34                 ` Andreas Schwab
  2012-08-19 16:48                   ` Eli Zaretskii
  1 sibling, 1 reply; 32+ messages in thread
From: Andreas Schwab @ 2012-08-19 10:34 UTC (permalink / raw)
  To: Jason Rumney; +Cc: Eli Zaretskii, spinuvit, Drew Adams, emacs-devel

Jason Rumney <jasonr@gnu.org> writes:

> In this case, not faulty:
>
> *** lisp/font-lock.el	1997-02-21 09:36:18 +0000
> --- lisp/font-lock.el	1997-03-15 13:19:12 +0000
> ***************
> *** 190,196 ****
>   If a number, only buffers greater than this size have fontification messages.")
>   
>   ;;;###autoload
> ! (defvar font-lock-maximum-decoration nil
>     "*Maximum decoration level for fontification.
>   If nil, use the default decoration (typically the minimum available).
>   If t, use the maximum decoration available.
> --- 190,196 ----
>   If a number, only buffers greater than this size have fontification messages.")
>   
>   ;;;###autoload
> ! (defvar font-lock-maximum-decoration t
>     "*Maximum decoration level for fontification.
>   If nil, use the default decoration (typically the minimum available).
>   If t, use the maximum decoration available.
> ***************

That looks rather like an accident.

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: font-lock-maximum-decoration should be 2 by default?
  2012-08-19  3:34                   ` Jason Rumney
  2012-08-19  4:39                     ` Drew Adams
@ 2012-08-19 10:50                     ` Vitalie Spinu
  1 sibling, 0 replies; 32+ messages in thread
From: Vitalie Spinu @ 2012-08-19 10:50 UTC (permalink / raw)
  To: Jason Rumney; +Cc: 'Eli Zaretskii', Drew Adams, emacs-devel

  >> Jason Rumney <jasonr@gnu.org>
  >> on Sun, 19 Aug 2012 11:34:15 +0800 wrote:

  > "Drew Adams" <drew.adams@oracle.com> writes:
  >> Uh, where do you see ANYTHING there that supports the claim that "the" reason
  >> why the variable was _introduced_ in the first place was "to get snappier
  >> display"?

  > To have this suddenly become an issue in 2012 is somewhat of a surprise.

Issue in 2012 is unrelated to performance. And for some reason this
thread is drifting away from the original request. 

The request was to set font-lock-maximum-decoration to 2, in order to
give to mode developers a much higher flexibility in choosing the
default highlighting, and providing users with higher optional levels
of fortification.

Setting it to t, or removing altogether, imposes one-side-fits-all
philosophy, which is absurd in the case of such a subjective matter as
font-lock.

Vitalie.
  



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: font-lock-maximum-decoration should be 2 by default?
  2012-08-18 10:03           ` Vitalie Spinu
@ 2012-08-19 11:10             ` Stephen J. Turnbull
  2012-08-19 11:47               ` Vitalie Spinu
  0 siblings, 1 reply; 32+ messages in thread
From: Stephen J. Turnbull @ 2012-08-19 11:10 UTC (permalink / raw)
  To: Vitalie Spinu; +Cc: 'Eli Zaretskii', Drew Adams, emacs-devel

Vitalie Spinu writes:

 > It's easy to get sick of too much customization. It's another well know
 > paradox of human pshychology -- we want more choose but too much choice
 > is bad for you

And the experiments you cite were conducted on a sample of Emacs
users?  Surely not!  The point is that Emacs users *are* different
(this is nearly a tautology), and those in the best position to judge
*how* different are the maintainers.

 > There are so many small inconveniences/bugs which I know I can solve
 > probably in 15-30 minutes by studding the code/docs/customization, but I
 > continue to leave with those in emacs, sometimes for months and
 > years. Familiar?

Yes, with any program by Microsoft and most of the software on my
iPhone.  Not in the context of Emacs.  It took about two hours to
establish the habit of dealing with minor customizations immediately
and quite a bit longer (a couple of months) to establish the habit of
recording long activities I might want to repeat verbatim and writing
quick scripts for those that are basically repetitive but need
variation on repetition.  These small investments in Emacs have been
repaid many times.[1]  But they are impossible with most programs.

I know I'm at one extreme of the spectrum; at least some Emacs users
use it because it was the only decent editor available on their host,
or because the best editor for their application was an Emacs mode,
and everything else they just don't want to deal with but use Emacs
"as is" just because it's there.  Nevertheless, that extreme *is*
achieved (I'm one example, and I'm not the only one), and I suspect a
large share of Emacs users tend to this end of the spectrum.

 >   >> 3) Developers which would like to capture 30% of salad lovers will try
 >   >> to find workarounds. That is, add redundant, mode-specific
 >   >> font-lock customization, or mess with
 >   >> font-lock-maximum-decoration.
 > 
 >   > This is true, but I'm not sure if it's a problem.
 > 
 > It's a problem in light of yours (2). Everyone wants a consistent
 > interface.

But who decides what "consistent" means?  The highlighting appropriate
for C is surely different from that for Lisp or Perl or Haskell.  Some
will be common, I suppose, such as for literal strings.  But what
about Perl "barewords"?  What does consistency mean for something that
doesn't exist in most languages?  Should shell commands be highlighted
differently depending on whether they're builtins, system commands, or
shell functions and aliases?

That kind of thing has to be decided by the mode developers, although
the Emacs maintainers often will offer suggestions, and for modes in
core Emacs will add/adjust to their own taste.  And in the end the
dirge "Why do the defaults always suck?" applies anyway.

Footnotes: 
[1]  And then I needed to break them when I started reviewing others'
requirement suggestions and code contributions -- reviewers need to
make some decisions about defaults, and adjusting to personal taste
because your initial reaction is "this SUCKS!!" is inappropriate --
but that's a different story.




^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: font-lock-maximum-decoration should be 2 by default?
  2012-08-19 11:10             ` Stephen J. Turnbull
@ 2012-08-19 11:47               ` Vitalie Spinu
  2012-08-19 13:23                 ` Stephen J. Turnbull
  0 siblings, 1 reply; 32+ messages in thread
From: Vitalie Spinu @ 2012-08-19 11:47 UTC (permalink / raw)
  To: Stephen J. Turnbull; +Cc: 'Eli Zaretskii', Drew Adams, emacs-devel

  >> "Stephen J. Turnbull" <stephen@xemacs.org>
  >> on Sun, 19 Aug 2012 20:10:21 +0900 wrote:

  > Vitalie Spinu writes:
  >> It's easy to get sick of too much customization. It's another well know
  >> paradox of human pshychology -- we want more choose but too much choice
  >> is bad for you

  > And the experiments you cite were conducted on a sample of Emacs
  > users?  Surely not!  The point is that Emacs users *are* different
  > (this is nearly a tautology), 

 The full spectrum of Emacs users is broader than you seem to
 think. It's not only hardcore programmers, like you are. I met a guy
 who was using Emacs only for org-mode to organize himself! I also won't
 be surprised that the majority of Emacs users don't actually know
 enough elisp to be able to write useful scripts. As one of the
 developers of ESS, I see users which have no clue of how to customize
 even basic things in Emacs. They are still able to happily use
 ESS/Emacs, but they all rely on defaults. And this is why defaults are
 so important. So knowing elisp, or even the ability to customize things
 is not a prerequisite for an Emacs user at all.

  >> >> 3) Developers which would like to capture 30% of salad lovers will try
  >> >> to find workarounds. That is, add redundant, mode-specific
  >> >> font-lock customization, or mess with
  >> >> font-lock-maximum-decoration.
  >> 
  >> > This is true, but I'm not sure if it's a problem.
  >> 
  >> It's a problem in light of yours (2). Everyone wants a consistent
  >> interface.

  > But who decides what "consistent" means?  The highlighting appropriate
  > for C is surely different from that for Lisp or Perl or Haskell.  Some
  > will be common, I suppose, such as for literal strings.  But what
  > about Perl "barewords"?  What does consistency mean for something that
  > doesn't exist in most languages?  Should shell commands be highlighted
  > differently depending on whether they're builtins, system commands, or
  > shell functions and aliases?

Consistent in customization interface, not in that fontification is set
by default. If there is variable font-lock-maximum-decoration that
should be it. No X-mode-maximum-font-lock, foo-mode-best-font-lock or
boo-mode-try-this-font-lock-level etc.

  > That kind of thing has to be decided by the mode developers, although
  > the Emacs maintainers often will offer suggestions, and for modes in
  > core Emacs will add/adjust to their own taste.  And in the end the
  > dirge "Why do the defaults always suck?" applies anyway.

:)



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: font-lock-maximum-decoration should be 2 by default?
  2012-08-19 11:47               ` Vitalie Spinu
@ 2012-08-19 13:23                 ` Stephen J. Turnbull
  0 siblings, 0 replies; 32+ messages in thread
From: Stephen J. Turnbull @ 2012-08-19 13:23 UTC (permalink / raw)
  To: Vitalie Spinu; +Cc: 'Eli Zaretskii', Drew Adams, emacs-devel

Vitalie Spinu writes:

 >  The full spectrum of Emacs users is broader than you seem to
 >  think.

I don't disagree with you on the *range* of the distribution of Emacs
users; I disagree with you on the *location* of the main weight of the
distribution.  Examples speak to the question of range, but I already
gave my own regarding the two extremes.  And as I already pointed out, there are people who
should have better information about location than either of us: the
maintainers.

 > It's not only hardcore programmers, like you are.

I don't consider myself a hardcore programmer.  What makes you think I
am?  I simply have a broad range of interests, and digging into code
is one of them.  Writing code is not something I have much time for on
a regular basis, unfortunately.  My contributions are mostly in the
line of review, documentation, standards-mongering, and release
management.

 > Consistent in customization interface, not in that fontification is
 > set by default. If there is variable font-lock-maximum-decoration
 > that should be it. No X-mode-maximum-font-lock,
 > foo-mode-best-font-lock or boo-mode-try-this-font-lock-level etc.

I agree with that, who wouldn't?  But that's not what you wrote
before, and it doesn't help with the question of setting good
defaults.

Steve



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: font-lock-maximum-decoration should be 2 by default?
  2012-08-19  3:13                 ` Drew Adams
  2012-08-19  3:34                   ` Jason Rumney
@ 2012-08-19 16:46                   ` Eli Zaretskii
  2012-08-19 17:33                     ` Drew Adams
  1 sibling, 1 reply; 32+ messages in thread
From: Eli Zaretskii @ 2012-08-19 16:46 UTC (permalink / raw)
  To: Drew Adams; +Cc: spinuvit, emacs-devel, jasonr

> From: "Drew Adams" <drew.adams@oracle.com>
> Cc: <spinuvit@gmail.com>, <emacs-devel@gnu.org>
> Date: Sat, 18 Aug 2012 20:13:27 -0700
> 
> Uh, where do you see ANYTHING there that supports the claim that "the" reason
> why the variable was _introduced_ in the first place was "to get snappier
> display"?

There's at least a hint in this commentary at the beginning of
font-lock.el:

 ;; Fontification for a particular mode may be available in a number of levels
 ;; of decoration.  The higher the level, the more decoration, but the more time
 ;; it takes to fontify.  See the variable `font-lock-maximum-decoration', and
 ;; also the variable `font-lock-maximum-size'.  Support modes for Font Lock
 ;; mode can be used to speed up Font Lock mode.  See `font-lock-support-mode'.



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: font-lock-maximum-decoration should be 2 by default?
  2012-08-19 10:34                 ` Andreas Schwab
@ 2012-08-19 16:48                   ` Eli Zaretskii
  0 siblings, 0 replies; 32+ messages in thread
From: Eli Zaretskii @ 2012-08-19 16:48 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: spinuvit, emacs-devel, drew.adams, jasonr

> From: Andreas Schwab <schwab@linux-m68k.org>
> Cc: Eli Zaretskii <eliz@gnu.org>,  spinuvit@gmail.com,  Drew Adams <drew.adams@oracle.com>,  emacs-devel@gnu.org
> Date: Sun, 19 Aug 2012 12:34:48 +0200
> 
> > *** lisp/font-lock.el	1997-02-21 09:36:18 +0000
> > --- lisp/font-lock.el	1997-03-15 13:19:12 +0000
> > ***************
> > *** 190,196 ****
> >   If a number, only buffers greater than this size have fontification messages.")
> >   
> >   ;;;###autoload
> > ! (defvar font-lock-maximum-decoration nil
> >     "*Maximum decoration level for fontification.
> >   If nil, use the default decoration (typically the minimum available).
> >   If t, use the maximum decoration available.
> > --- 190,196 ----
> >   If a number, only buffers greater than this size have fontification messages.")
> >   
> >   ;;;###autoload
> > ! (defvar font-lock-maximum-decoration t
> >     "*Maximum decoration level for fontification.
> >   If nil, use the default decoration (typically the minimum available).
> >   If t, use the maximum decoration available.
> > ***************
> 
> That looks rather like an accident.

Not an accident:

  1997-03-15  Simon Marshall  <simon@wombat.gnu.ai.mit.edu>

	  * font-lock.el (font-lock-keyword-depth): New function.
	  Use it wherever extra types are used to calculate parenthesis depth.
	  (c-font-lock-extra-types, c++-font-lock-extra-types)
	  (objc-font-lock-extra-types, java-font-lock-extra-types)
	  (font-lock-keywords): Doc fix.
	  (font-lock-defaults, font-lock-defaults-alist): Doc switch.
	  (font-lock-maximum-decoration): Default to t.
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^



^ permalink raw reply	[flat|nested] 32+ messages in thread

* RE: font-lock-maximum-decoration should be 2 by default?
  2012-08-19 16:46                   ` Eli Zaretskii
@ 2012-08-19 17:33                     ` Drew Adams
  0 siblings, 0 replies; 32+ messages in thread
From: Drew Adams @ 2012-08-19 17:33 UTC (permalink / raw)
  To: 'Eli Zaretskii'; +Cc: spinuvit, emacs-devel, jasonr

> > Uh, where do you see ANYTHING there that supports the claim 
> > that "the" reason why the variable was _introduced_ in the
> > first place was "to get snappier display"?
> 
> There's at least a hint in this commentary at the beginning of
> font-lock.el:
> 
>  ;; Fontification for a particular mode may be available in a 
>  ;; number of levels of decoration.  The higher the level, the
>  ;; more decoration, but the more time it takes to fontify.
>  ;; See the variable `font-lock-maximum-decoration', and
>  ;; also the variable `font-lock-maximum-size'.  Support 
>  ;; modes for Font Lock mode can be used to speed up Font Lock
>  ;; mode.  See `font-lock-support-mode'.

No, not at all.  That does not support a claim that the only reason this
variable was created was performance.  Let alone the stronger claim that the
only reason for its continued existence is performance.

All that comment says is that more fontification generally means slower
performance, and you can speed up performance by customizing the variable.  No
one disputes that.

It's clear that controlling the amount of fontification also affects the
attendant time to fontify.  That does not mean that there are not other reasons,
besides performance, why users might prefer less fontification.  And it does not
mean that performance was the only reason for creating this variable in the
first place.

An attempt now to remove or neuter this option cannot claim that its only raison
d'etre now, or even the only reason for its initial creation, is/was
performance.  We've see no basis for such a claim.




^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: font-lock-maximum-decoration and how to make a default font-lock lower than maximal?
  2012-08-17 12:29 font-lock-maximum-decoration and how to make a default font-lock lower than maximal? Vitalie Spinu
  2012-08-17 14:29 ` Eli Zaretskii
@ 2012-08-21 17:24 ` Stefan Monnier
  2012-08-26 18:26   ` font-lock-maximum-decoration and how to make a default font-locklower " Drew Adams
  1 sibling, 1 reply; 32+ messages in thread
From: Stefan Monnier @ 2012-08-21 17:24 UTC (permalink / raw)
  To: Vitalie Spinu; +Cc: emacs-devel

> For example, assume you are developing X-mode and some users would like
> to have functions + numbers + other stuff highlighted, but you don't
> want to activate those by default. So you can add font-lock keyword
> levels (2, 3, 4 etc) to accommodate this preference, but want to set the
> default to 2.

I hate font-lock-maximum-decoration's notion of "levels" because there
is no such neat line.  Some users will care about one particular detail,
others about an other.  So please don't use font-lock's levels for that
fine-grained control.  Instead just introduce new config vars specific
to your major mode.


        Stefan



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: font-lock-maximum-decoration should be 2 by default?
  2012-08-18 10:10             ` Vitalie Spinu
@ 2012-08-21 17:31               ` Stefan Monnier
  2012-08-22 16:50                 ` Vitalie Spinu
  2012-08-26 18:27                 ` Drew Adams
  0 siblings, 2 replies; 32+ messages in thread
From: Stefan Monnier @ 2012-08-21 17:31 UTC (permalink / raw)
  To: Vitalie Spinu; +Cc: 'Eli Zaretskii', Drew Adams, emacs-devel

> Let say you are defining mode "X". Then `define-derived-mode' and
> `define-generic-mode'

[ I dislike define-generic-mode so I'm opposed to improving it. ]

> can add X-mode-font-lock-keywords as a (customizable?) variable, which
> would be a list of keywords or symbols holding keywords.

That might be a good way to replace the ill-defined notion of levels, yes.


        Stefan



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: font-lock-maximum-decoration should be 2 by default?
  2012-08-21 17:31               ` Stefan Monnier
@ 2012-08-22 16:50                 ` Vitalie Spinu
  2012-08-26 18:27                 ` Drew Adams
  1 sibling, 0 replies; 32+ messages in thread
From: Vitalie Spinu @ 2012-08-22 16:50 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: 'Eli Zaretskii', Drew Adams, emacs-devel

  >> Stefan Monnier <monnier@IRO.UMontreal.CA>
  >> on Tue, 21 Aug 2012 13:31:42 -0400 wrote:

  >> Let say you are defining mode "X". Then `define-derived-mode' and
  >> `define-generic-mode'

  > [ I dislike define-generic-mode so I'm opposed to improving it. ]

  >> can add X-mode-font-lock-keywords as a (customizable?) variable, which
  >> would be a list of keywords or symbols holding keywords.

  > That might be a good way to replace the ill-defined notion of levels, yes.

Good! Then I will wrap a preliminary version of this feature for further
discussion.

Vitalie.



^ permalink raw reply	[flat|nested] 32+ messages in thread

* RE: font-lock-maximum-decoration and how to make a default font-locklower than maximal?
  2012-08-21 17:24 ` Stefan Monnier
@ 2012-08-26 18:26   ` Drew Adams
  0 siblings, 0 replies; 32+ messages in thread
From: Drew Adams @ 2012-08-26 18:26 UTC (permalink / raw)
  To: 'Stefan Monnier', 'Vitalie Spinu'; +Cc: emacs-devel

> > For example, assume you are developing X-mode and some 
> > users would like to have functions + numbers + other stuff
> > highlighted, but you don't want to activate those by default.
> > So you can add font-lock keyword levels (2, 3, 4 etc) to
> > accommodate this preference, but want to set the default to 2.
> 
> I hate font-lock-maximum-decoration's notion of "levels" because
> there is no such neat line.  Some users will care about one
> particular detail, others about an other.  So please don't use
> font-lock's levels for that fine-grained control.  Instead just
> introduce new config vars specific to your major mode.

You are throwing out the baby with the bath water.
And you are missing the point about font-lock "levels".

Font-lock levels are not just for users to _customize_ decoration for a
particular mode, in a single, fixed way.

Font-lock levels let users easily (e.g., using a cycle command or picking a
"level" from a menu, as in `font-menus.el' from FJ Wright) switch to a different
kind of highlighting.

Those kinds are called "levels" today, but you need not (and probably should
not) think of them as such.  "Level" here is a misnomer.

So-called "levels" are just different highlighting patterns.  These patterns
might or might not reflect different highlighting degrees ("levels"), however
you might want to imagine such leveling.  There is no need to think in terms of
degree at all.  Think "different", not "more" or "less".

Whether users should be able to easily customize the "levels" available for a
given mode is a good question.  I certainly am all for that possibility.

By all means, let users customize what the font-locking choices are for a given
mode, and how many choices there are.  Go for it.  And if the doc and names used
for this customization emphasize that these are just arbitrary sets of font-lock
appearances, rather than "levels", so much the better.

But please do not take away the ability to interactively switch among such
highlighting choices, which is provided by today's "levels" mechanism (with a
little help from `font-menus.el' etc.).

The facts that (1) most Emacs modes do not currently provide more than one
"level" by default, and that (2) many users are unaware that they can choose a
highlighting pattern ("level") when such a choice does exist, is not a reason
for tossing the mechanism.  (Choose = customize once and for all or switch
patterns interactively.)

Rather, those facts are reasons for Emacs Dev to (a) offer different predefined
highlighting choices for more modes, (b) advertise the feature more, and (c)
provide better interactivity (switching among choices) out of the box.




^ permalink raw reply	[flat|nested] 32+ messages in thread

* RE: font-lock-maximum-decoration should be 2 by default?
  2012-08-21 17:31               ` Stefan Monnier
  2012-08-22 16:50                 ` Vitalie Spinu
@ 2012-08-26 18:27                 ` Drew Adams
  1 sibling, 0 replies; 32+ messages in thread
From: Drew Adams @ 2012-08-26 18:27 UTC (permalink / raw)
  To: 'Stefan Monnier', 'Vitalie Spinu'
  Cc: 'Eli Zaretskii', emacs-devel

> > Let say you are defining mode "X". Then `define-derived-mode' and
> > `define-generic-mode' can add X-mode-font-lock-keywords as a
> > (customizable?) variable, which would be a list of keywords or
> > symbols holding keywords.
> 
> That might be a good way to replace the ill-defined notion of 
> levels, yes.

It's not about a "notion".  The name "levels" is a misnomer, but the mechanism
of easily defining different sets/kinds of highlighting for a given mode, and
interactively switching among them, is a plus, not a minus.

Just providing `X-mode-font-lock-keywords' for mode X does not replace such a
mechanism, at all.

Letting users customize multiple such sets of highlighting patterns for a given
mode is a start, but what's also needed is an easy way to interactively switch
among them.

Today's misnamed "levels" are such sets of mode-specific highlighting patterns
(choices).  And you can easily switch among them in a given mode.

We should not be throwing away that possibility just because Emacs Dev has not
kept up with predefining such sets for various modes.  Make it easier for users
do define them and easier for users to switch among them.  _That_ would be an
improvement.




^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2012-08-26 18:27 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-08-17 12:29 font-lock-maximum-decoration and how to make a default font-lock lower than maximal? Vitalie Spinu
2012-08-17 14:29 ` Eli Zaretskii
2012-08-17 14:42   ` Vitalie Spinu
2012-08-17 15:57     ` font-lock-maximum-decoration and how to make a defaultfont-lock " Drew Adams
2012-08-17 19:49       ` font-lock-maximum-decoration should be 2 by default? Vitalie Spinu
2012-08-17 20:26         ` Eli Zaretskii
2012-08-17 20:53           ` Drew Adams
2012-08-18  6:59             ` Eli Zaretskii
2012-08-19  2:32               ` Jason Rumney
2012-08-19  3:13                 ` Drew Adams
2012-08-19  3:34                   ` Jason Rumney
2012-08-19  4:39                     ` Drew Adams
2012-08-19 10:50                     ` Vitalie Spinu
2012-08-19 16:46                   ` Eli Zaretskii
2012-08-19 17:33                     ` Drew Adams
2012-08-19 10:34                 ` Andreas Schwab
2012-08-19 16:48                   ` Eli Zaretskii
2012-08-17 20:50         ` Drew Adams
2012-08-17 22:47           ` Vitalie Spinu
2012-08-18  7:03             ` Eli Zaretskii
2012-08-18 10:10             ` Vitalie Spinu
2012-08-21 17:31               ` Stefan Monnier
2012-08-22 16:50                 ` Vitalie Spinu
2012-08-26 18:27                 ` Drew Adams
2012-08-18  5:10         ` Stephen J. Turnbull
2012-08-18 10:03           ` Vitalie Spinu
2012-08-19 11:10             ` Stephen J. Turnbull
2012-08-19 11:47               ` Vitalie Spinu
2012-08-19 13:23                 ` Stephen J. Turnbull
2012-08-17 17:36     ` font-lock-maximum-decoration and how to make a default font-lock lower than maximal? Eli Zaretskii
2012-08-21 17:24 ` Stefan Monnier
2012-08-26 18:26   ` font-lock-maximum-decoration and how to make a default font-locklower " Drew Adams

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).