Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

font-lock and text mode

20 views
Skip to first unread message

Oliver Scholz

unread,
Feb 24, 2003, 7:40:01 AM2/24/03
to
I noticed that `hi-lock-mode' doesn't work properly in text mode (CVS
Emacs): after I have added a regexp with `C-x w h', matches already
in the buffer are highlighted, but matching text that I insert after
that is not.

Also it seems to be impossible to add highlighting via
font-lock-keywords to text mode.

(font-lock-add-keywords nil
'(("\\<lirum larum\\>" . font-lock-warning-face)))

I tried a lot to find the reason for this. Finally I tested whether
font-locking works with a derived mode of text-mode.

(defvar test-mode-font-lock-keywords
'(("lirum-larum" . font-lock-warning-face)))

(define-derived-mode test-mode text-mode
"FIXME"
(set (make-local-variable 'font-lock-defaults)
'(test-mode-font-lock-keywords t)))

This is fine. My guess was that this has something to do with the
implementation of `global-font-lock-mode', so I tried to call
`global-font-lock-mode-cmmh' manually, but to no avail. Looking at the
expansion of `define-derived-mode' above and experimenting with it, I
found that `kill-all-local-variables' is critical here. This is enough
to enable font-locking:

(progn (kill-all-local-variables)
(set (make-local-variable 'font-lock-defaults)
'((("\\<lirum-larum\\>" . font-lock-warning-face))
t)))

So I looked at the code of `kill-all-local-variables'. But I can't
find anything there relating to `font-lock' (except the hook
`change-major-modes', but calling `global-font-lock-mode-cmmh' should
amount to the same).

I am puzzled. What am I missing?

Oliver
--
6 Ventôse an 211 de la Révolution
Liberté, Egalité, Fraternité!

Kai Großjohann

unread,
Feb 24, 2003, 8:46:25 AM2/24/03
to
Oliver Scholz <alkib...@gmx.de> writes:

> I noticed that `hi-lock-mode' doesn't work properly in text mode (CVS
> Emacs): after I have added a regexp with `C-x w h', matches already
> in the buffer are highlighted, but matching text that I insert after
> that is not.

I think it works as intended.

> Also it seems to be impossible to add highlighting via
> font-lock-keywords to text mode.
>
> (font-lock-add-keywords nil
> '(("\\<lirum larum\\>" . font-lock-warning-face)))
>
> I tried a lot to find the reason for this.

I think the deeper reason is that text-mode has no font-lock support.

Maybe it is easiest to just use your derived mode.
--
A preposition is not a good thing to end a sentence with.

John Paul Wallington

unread,
Feb 24, 2003, 9:10:30 AM2/24/03
to
Oliver Scholz <alkib...@gmx.de> wrote:

> Also it seems to be impossible to add highlighting via
> font-lock-keywords to text mode.
>
> (font-lock-add-keywords nil
> '(("\\<lirum larum\\>" . font-lock-warning-face)))

Does M-g M-g fontify it ?

Oliver Scholz

unread,
Feb 24, 2003, 10:19:52 AM2/24/03
to
kai.gro...@uni-duisburg.de (Kai Großjohann) writes:

> Oliver Scholz <alkib...@gmx.de> writes:
>
>> I noticed that `hi-lock-mode' doesn't work properly in text mode (CVS
>> Emacs): after I have added a regexp with `C-x w h', matches already
>> in the buffer are highlighted, but matching text that I insert after
>> that is not.
>
> I think it works as intended.

I don't know for sure, of course, but I don't think
so. `highlight-regexp' adds to `font-lock-keywords'. So in every mode
that comes with font-lock support, text that matches the regexp is
highlighted even if it was typed _after_ defining the regexp. For
example in `lisp-interaction-mode':

emacs -q --no-site-file

M-x hi-lock-mode RET
C-x w h hello RET RET
hello

But:

C-x b *tmp* RET
M-x text-mode RET
C-x w h hello RET RET
hello

>> Also it seems to be impossible to add highlighting via
>> font-lock-keywords to text mode.
>>
>> (font-lock-add-keywords nil
>> '(("\\<lirum larum\\>" . font-lock-warning-face)))
>>
>> I tried a lot to find the reason for this.
>
> I think the deeper reason is that text-mode has no font-lock support.

Yes, but how do I add it "manually"? (I mean: without modifying
text-mode itself.)

> Maybe it is easiest to just use your derived mode.

Well, actually I think this is a bug in `hi-lock-mode' and I want to
fix it.

And even if there is an easy workaround, I'd like to understand the
deeper mysteries of the Mighty Font Lock.

Oliver Scholz

unread,
Feb 24, 2003, 10:21:49 AM2/24/03
to

Yes, and so does M-x font-lock-fontify-buffer.

Kai Großjohann

unread,
Feb 24, 2003, 12:21:42 PM2/24/03
to
Oliver Scholz <alkib...@gmx.de> writes:

> I don't know for sure, of course, but I don't think
> so. `highlight-regexp' adds to `font-lock-keywords'.

Ah. You're right.

So maybe the problem really is that text-mode doesn't normally
support font-lock. (I think.)

0 new messages