Subject: Re: bug#1534: Font lock decoration levels mismatch?

From: Derick Eddington <[email-masked]>
Date: Fri, 12 Dec 2008 10:48:54 -0800

On Thu, 2008-12-11 at 18:52 -0500, Glenn Morris wrote:
> Derick Eddington wrote:
> 
> > The documentation at "23.6.1 Font Lock Basics" and "23.6.5 Levels of
> > Font Lock" refers to level numbers starting at 1, but when I customize
> > the level for a specific mode (one I'm still developing) the number
> > given to Customize is 0-based not 1-based; i.e., my `font-lock-defaults'
> > `KEYWORDS' member is like `(level-1 level-2 level-3 level-4)' and, e.g.,
> > to make Customize use level-3 I have to tell it the number 2.
> 
> I don't really understand the problem. What exactly are you
> customizing, and how?
> 
> In general, the actual Lisp expression used by Customize is not
> terribly important - use a tag instead to give a more human-readable
> set of choices (eg "minimum", "medium", "maximum" rather than 1, 2, 3).

I'm customizing `font-lock-maximum-decoration'.  It's documentation
says:

        Maximum decoration level for fontification.
        If nil, use the default decoration (typically the minimum
        available).
        If t, use the maximum decoration available.
        If a number, use that level of decoration (or if not available
        the maximum).
        If a list, each element should be a cons pair of the form
        (MAJOR-MODE . LEVEL), where MAJOR-MODE is a symbol or t (meaning
        the default).  For example:
         ((c-mode . t) (c++-mode . 2) (t . 1))
        means use the maximum decoration available for buffers in C
        mode, level 2 decoration for buffers in C++ mode, and level 1
        decoration otherwise.

I'm using the last form with an association for my mode.  I have 4
levels.  I haven't yet learned how to use tags with Customize, I'll read
about that.  But for my mode, I think tag names would not be as clear as
just the numbers.  If Customize is going to allow numbers, shouldn't
their indexing base be consistent with the documentation?

When I start customizing it from its default state and activate the
"Value Menu" with "mode specific", I get:

INS DEL Instance:
            Mode:
            (*) all
            ( ) name: nil
            Decoration:
            ( ) default
            (*) maximum
            ( ) level: 1
INS

Which is not the Lisp syntax and is showing a number.

This isn't a big deal to me, but the Emacs' documentation tells me to
report things like this.

-- 
: Derick
----------------------------------------------------------------