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

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

Re: font-lock on variables


From: A.Politz
Subject: Re: font-lock on variables
Date: Sat, 25 Jul 2009 10:47:12 -0700 (PDT)
User-agent: G2/1.0

On Jul 24, 10:27 pm, Santiago Mejia <me...@uchicago.edu> wrote:
> I am trying to hack a few extensions in emacs that allow one to look for
> words in dictionaries.  (in particular, wordnet.el and sdcv.el (to be
> found, respectively, 
> at:http://williamxu.net9.org/ref/wordnet.elandhttp://www.emacswiki.org/emacs/sdcv.el)
>
> When one looks for a word in, say, wordnet.el, it creates a new buffer,
> *WORDNET* which has several of its key terms fontified.  However, I
> would like to be able to fontify, also, the actual word that I am
> searching.  This word is a variable, and changes every time one makes a
> new search.  After going through the manual, and looking around in
> google and the mailing lists, I have not been able to figure out how to
> achieve such thing.
>
> My idea so far is to define a global variable, my-foo-var, and add it to
> the keywords.  I have played with all sorts of small variations of how
> to add the variable to the font-lock-keywords, but none has worked.
>
> Here is the most simple example (which as I said, did not work).
>
> (defvar my-foo-var "woman"
>   "Current word that is seeked.")
>
> (defvar xxx-mode-font-lock-keywords    ;keyword for buffer display
>   '(
>     ;; word used
>     (my-foo-var . (1 font-lock-type-face))))
>
> I have also tried to use the function font-lock-add-keywords with no
> success.  (this method, however, strikes me as undesirable, for I would
> have to find a way to remove each word that is added, and this might
> pose problems if one removes a word that one has looked for, but that is
> also a keyword to be fontified (for example, if one looks for the word
> "Antonyms", which is a keyword that is also fontified).
>
> Finally, every time I make a change to the xxx-mode-font-lock-keywords,
> I have to close emacs and restart it to make sure that the new changes
> work.  Is there a less brutal way to test the results of one's changes
> to this variable?  A way to test one's results without having to exit emacs?
>
> Any help is appreciated.
>
> Santiago.


(info "(elisp)Search-based Fontification")

Use a function:

(defvar my-foo-var "\\_<woman\\_>"
  "Current word that is seeked.")

(defun modify-foo (string)
  (setq my-foo-var (copy-seq string))
  (font-lock-fontify-buffer))

(defun search-foo (limit)
  (when my-foo-var
    (re-search-forward my-foo-var limit t)))

(font-lock-add-keywords
 nil
 '((search-foo . 'font-lock-builtin-face)))

(modify-foo "\\_<man\\_>")

-ap


reply via email to

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