From: "Javier Oviedo" <email_joviedo@yahoo.com>
Subject: Re: font-lock question
Date: Mon, 9 Feb 2004 15:50:55 -0500 [thread overview]
Message-ID: <c08rqv$e5f$1@home.itg.ti.com> (raw)
In-Reply-To: thi80c.q5.ln@acm.acm
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" <none@example.invalid> wrote in message
news:thi80c.q5.ln@acm.acm...
> Javier Oviedo <email_joviedo@yahoo.com> 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: aacm@muuc.dee; to decode, wherever there is a repeated letter
> (like "aa"), remove half of them (leaving, say, "a").
>
next prev parent reply other threads:[~2004-02-09 20:50 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-02-09 16:18 font-lock question Javier Oviedo
2004-02-09 18:12 ` Alan Mackenzie
2004-02-09 20:50 ` Javier Oviedo [this message]
2004-02-10 13:49 ` Javier Oviedo
2004-02-12 15:46 ` Kai Grossjohann
2004-02-12 18:47 ` Javier Oviedo
2004-02-14 18:47 ` Kai Grossjohann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='c08rqv$e5f$1@home.itg.ti.com' \
--to=email_joviedo@yahoo.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).