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

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

Re: font-lock question


From: Javier Oviedo
Subject: Re: font-lock question
Date: Tue, 10 Feb 2004 08:49:36 -0500

I meant Alan, not Alex. Sorry. :-)

-- 
Javier


"Javier Oviedo" <address@hidden> wrote in message
news:address@hidden
> Hi Alex.
>
> Actually, I implemented something very similar to this exact code. My
> motivation is that the occur mode buffer does not display the matches in
the
> original buffers faces. I was just curious if I could hack something and
> decided to implement this myself...though an obviously vicious hack(see
> below). I decided to do this more for fun then anything else...I just
wanted
> to see if I could figure it out. (Kevin Rogers suggests that I should
submit
> a bug report.)
>
> This little hack works when running occur on a emacs-lisp-mode buffer...I
> was going to add highlighting using overlays next, assuming that I could
> figure that out as well. :-)
>
> (defvar joviedo-occur-font-lock-default nil)
> (defadvice occur (after joviedo-occur last activate)
>   (setq joviedo-occur-font-lock-default font-lock-defaults)
>   (pop-to-buffer "*Occur*")
>   (set (make-local-variable 'font-lock-defaults)
> joviedo-occur-font-lock-default)
>   (font-lock-mode nil)
>   (font-lock-fontify-buffer)
>
> ;;;still need to add highlights using overlays.
>
>   )
>
>
> One issue, however, is that this does not work for a c-mode buffer. I get
> some sort of strange error that I can't figure out. I thought the
principle
> was relatively sound but I guess not. The error in the *Message* is the
> following:
>
> Wrong type argument: stringp, nil
> Error in post-command-hook: (wrong-type-argument stringp nil)
>
> When I examine the value for font-lock-defaults(after my defadvice runs) I
> see the following:
>
> font-lock-defaults's value is
> ((c-font-lock-keywords c-font-lock-keywords-1 c-font-lock-keywords-2
> c-font-lock-keywords-3)
>  nil nil
>  ((95 . "w")
>   (36 . "w"))
>  c-beginning-of-syntax
>  (font-lock-mark-block-function . c-mark-function))
>
>
> This is exactly what I get if I examine the value of font-lock-defaults
> before ever running occur. For some reason, there is something wrong with
> this value(list) but I can't figure it out.
>
> Any thoughts?????? help???
>
> -- 
> Javier
>
>
> "Alan Mackenzie" <address@hidden> wrote in message
> news:address@hidden
> > Javier Oviedo <address@hidden> wrote on Mon, 9 Feb 2004
11:18:00
> > -0500:
> > > Hello all:
> >
> > > This will probably sound like a rather bizarre question but here
goes...
> >
> > Bizarre indeed!
> >
> > > Is there a way to fontify a buffer based on a different mode but still
> > > retain all of the original/base modes attributes(expect for the face
> > > attributes, of course)?
> >
> > Yes.  The answer is _always_ yes in Emacs.  :-)
> >
> > > Example:  I have c-file open in emacs and the buffer is using c-mode.
> > > I'd like to use the faces for emacs-lisp-mode(this just an example, so
> > > please humor me) but keep every other attribute of the c-mode. Can
this
> > > be done? Is there some other way I could accomplish this? Perhaps
using
> > > a minor mode and it's faces but keeping the attributes of the major
> > > mode? I'm open to any and all suggestions.
> >
> > How about something like this (not tested):
> >
> > (defun jo-funny-font ()
> >   (font-lock-mode -1)
> > ;; The next line is taken from lisp-mode-variables in lisp-mode.el
> >   (setq font-lock-defaults
> >         '((lisp-font-lock-keywords
> >            lisp-font-lock-keywords-1 lisp-font-lock-keywords-2)
> >           nil nil (("+-*/.<>=!?$%_&~^:" . "w")) beginning-of-defun
> >           (font-lock-mark-block-function . mark-defun)))
> >   (font-lock-mode 1))
> > (add-hook 'c-mode-hook 'jo-funny-font)
> >
> > But why do you want to do this?
> >
> > > Thanks in advance!
> >
> > > Javier
> >
> > -- 
> > Alan Mackenzie (Munich, Germany)
> > Email: address@hidden; to decode, wherever there is a repeated letter
> > (like "aa"), remove half of them (leaving, say, "a").
> >
>
>




reply via email to

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