help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: setnu.el / setnu+.el


From: Kevin Rodgers
Subject: Re: setnu.el / setnu+.el
Date: Wed, 21 Dec 2005 10:11:52 -0700
User-agent: Mozilla Thunderbird 0.9 (X11/20041105)

Drew Adams wrote:
           Is there a way to have line numbers
           go unaffected by highlighting?

       Could you elaborate? Do you see highlighted line numbers?

    Yes, my line numbers have the same highlighting as
    the adjacent code.

I just checked in Emacs 22, and you're right. However, in Emacs 20, the line
numbers are not highlighted. I wrote setnu+.el, which is a only minor tweak
of setnu.el, but I don't know enough to help you here. I believe that this
is the code, in setnu.el, that is in question:

(defun setnu-set-glyph-face (g face)
   (put-text-property 0 (length g) 'face face g))

This code is intended to impose the given face (just bold, by default) on
the line-number overlay text. It does that correctly, but I guess it does
not also remove other text properties that might be on the same overlay
(imposed by font-locking).

It appears that if the newline at the end of a line is fontified (matches a
regexp that imposes fontification), then the line-number overlay is
fontified in the same way.

Each overlay has its before-string property set to the fontified string
returned by setnu-set-glyph-face.  That string is intended to be
displayed before the overlay, which starts at the beginning of the line
and ends after the newline (i.e. at the beginning of the next line).

I don't know what change in Emacs 22 causes the before-string to inherit
properties from the adjacent text, but according to the Overlay
Properties node of the Emacs Lisp manual, all overlays take priority
over text properties.  So maybe it would work to set the overlay's face
property in setnu-make-setnu-extent:

    (setnu-set-extent-property e 'face nil) ; or 'default

At first I thought it might be the new `font-lock-face' property that is
supplying the fontification, because that wouldn't be cancelled just by
adding a `face' property. So I tried adding this to the code above:

(put-text-property 0 (length g) 'font-lock-face nil g)

But that had no visible effect. I think that someone who knows either the
setnu.el code or the font-lock mechanisms or overlays better than I will
have to help you. Sorry.

I don't know any better than you, but my guess is that the overlay
needs to be modified, not it's before-string.

--
Kevin Rodgers





reply via email to

[Prev in Thread] Current Thread [Next in Thread]