Hi all,
I'd like to fontify a whole bunch of function names for a project I'm
working on (which uses lisp mode, not emacs-lisp-mode -- for reference,
I'm using GNU emacs 23.1.1).
Almost all of the functions start with the same prefix "qbb-" so that
shouldn't be too hard (though for the examples I've just tried to use
some actual function names to get it to work). I've done a bunch of web
searching, and haven't figured out a way to make this work.
I've tried all of the following, and none of them work for me... I
don't claim to be a wizard at this stuff, but thought I had followed the
examples correctly
(font-lock-add-keywords
'lisp-mode
'(("\\<\\(qbb-create-image\\|qbb-destroy-image\\)\\>" .
font-lock-keyword-face)))
(font-lock-add-keywords
'lisp-mode
'(("\\<\\qbb-create-image\\)" 2 font-lock-keyword-face t)))
(add-hook 'lisp-mode-hook
(lambda ()
(font-lock-add-keywords
nil
'(("\\<\\(qbb-create-image\\|qbb-destroy-image\\)\\>" .
font-lock-keyword-face)))))
I'm sure this can't be as hard as I'm making it -- help, please!
Thanks in advance!
b
Hi!
> I'd like to fontify a whole bunch of function names for a project I'm
> working on (which uses lisp mode, not emacs-lisp-mode -- for
> reference, I'm using GNU emacs 23.1.1).
This works for me and highlights any symbol starting with qbb- in the
keyword face.
--8<---------------cut here---------------start------------->8---
(font-lock-add-keywords
'lisp-mode
'(("\\<qbb-[[:alnum:]-]+\\>" . font-lock-keyword-face)))
--8<---------------cut here---------------end--------------->8---
> (font-lock-add-keywords
> 'lisp-mode
> '(("\\<\\(qbb-create-image\\|qbb-destroy-image\\)\\>" .
> font-lock-keyword-face)))
Looks ok to me.
> (font-lock-add-keywords
> 'lisp-mode
> '(("\\<\\qbb-create-image\\)" 2 font-lock-keyword-face t)))
^
I think a paren is missing there. And if there was one, you would like
to highlight the first group, so the 2 has to be replaced with 1.
> (add-hook 'lisp-mode-hook
> (lambda ()
> (font-lock-add-keywords
> nil
> '(("\\<\\(qbb-create-image\\|qbb-destroy-image\\)\\>" .
> font-lock-keyword-face)))))
Looks correct. But when using the ("regexp" . face) form, you can use
shy groups for performance reasons, because here you refer to the whole
match anyway and not to a group by number.
Hm, if your first and last solutions don't work, I'd guess you are not
in lisp-mode...
Bye,
Tassilo
Thanks! This is perfect -- it seems to do exactly what I needed! (and
thanks for the help on the other possibilities as well -- that's great
and may come in handy in the future!)
Thanks again, and Happy New Year!
-b
Please, what is a "shy group"? Some math thing?
Thanks,
David
It is a group that does not record sub expressions in the match.
Written with (?: ...) like
'(("\\<\\(?:qbb-create-image\\|qbb-destroy-image\\)\\>" .