[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
Re: setnu.el / setnu+.el, Sean Sieger, 2005/12/23
- Re: setnu.el / setnu+.el, Stefan Monnier, 2005/12/21
- RE: setnu.el / setnu+.el, Drew Adams, 2005/12/22
- Re: setnu.el / setnu+.el, Kevin Rodgers, 2005/12/22
- Message not available
- Re: setnu.el / setnu+.el, Stefan Monnier, 2005/12/22
- RE: setnu.el / setnu+.el, Drew Adams, 2005/12/22
- Re: setnu.el / setnu+.el, Kevin Rodgers, 2005/12/23
- RE: setnu.el / setnu+.el, Drew Adams, 2005/12/23
- Message not available
- Re: setnu.el / setnu+.el, Stefan Monnier, 2005/12/26