Re: Colorizing

Felix Gatzemeier <[email protected]>
Newsgroups gmane.emacs.psgml.user
Message-ID <[email protected]>
Hello!

>>>>> "PF" == Peter Flynn <[email protected]> writes:

    PF> D. D. Brierton wrote:
    >> On Tue, 2002-11-26 at 19:04, Artiom Neganov wrote:

    AN> In short, when colorizing will work in Emacs? :)

    PF> [...]

    DDB> I can't help agreeing that syntax highlighting could be much
    DDB> improved in PSGML. It is also a regularly requested
    DDB> feature. Is it hard to do?

    PF> I don't understand the problem. Syntactic fontification
    PF> (colorizing) I thought is ALREADY IN the major modes (psgml,
    PF> xxml, xslide, etc).

    PF> Maybe the OP's question was really "how do I turn it on", not
    PF> "has anyone ever implemented it". In fact, looking at the
    PF> wording "when colorizing will work" (aside from the inversion)
    PF> I think the answer is actually:

    PF> Add the following to your .emacs file:

    PF>               (require 'font-lock) (global-font-lock-mode t)
    PF> (setq font-lock-maximum-decoration t) (turn-on-font-lock)

You should be able to set something like that via the Options menu,
too.


    PF> I can't guarantee it will work because I don't understand
    PF> Elisp, but that's what's in my .emacs, and I get color.


If you want to go deeper, I recommend Markus Hoenicka's 'SGML Tools
under Windows NT' page (which is a slight misnomer, as it starts out
by installing CygWin ;-).  The section on psgml explains how to set up
and customize font-locking:

http://ourworld.compuserve.com/homepages/hoenicka_markus/cygx646.html

(take the 'cygx646.html' part with a grain of salt; Markus seems to
have worked on this since I last visited the site.)


This, however, does not highlight attributes.  For this, I have added
the following (simplistic) bits:

......................................................................
(defvar i3-xml-font-lock-keywords
  (list
   '(" \\([^> ]+\\) *=" 1 font-lock-variable-name-face t)
   '("=[ \t\n]*\\(\"[^\"]+\"\\)" 1 font-lock-string-face t)
   )
  "Additional expressions to highlight in XML mode.
Remotely based on the one for psgml-html, basically an extended
version of attribute definitions.  The remainder is fontified by psgml
itself.  See `sgml-markup-faces' and `sgml-set-face'.")


(defun sgml-activate-syntax-highlighting ()
  "Activate syntax highlighting based on psgml parsing.

This is a general configuration function intended to abstract from all
that setup business.  It is not intended to be called from mode hooks.

This is based on
http://ourworld.compuserve.com/homepages/hoenicka_markus/cygx646.html,
Step 6, \"Enable syntax coloring\", which is based on code by David
Megginson.  Edited to be more minimal and integrated into the general
font-locking mechanism."
  (interactive)

  ;; In sgml documents, parse dtd immediately to allow immediate
  ;; syntax coloring.  Off by default.
  (setq sgml-auto-activate-dtd t)

  ;; Actually have syntax coloring applied by psgml.
  (setq-default sgml-set-face t)

  (put 'xml-mode  'font-lock-defaults '(i3-xml-font-lock-keywords nil t))
  ;; So it's not really SGML font-locking --- watch me care.
  (put 'sgml-mode 'font-lock-defaults '(i3-xml-font-lock-keywords nil t))
  )
......................................................................

(I recommend you play around a little with
sgml-activate-syntax-highlighting, commenting out s-expressions one by
one to see wether it does anything useful for you.)

You'll notice soon that this simplistic font-locking is very
nonperfect.  Things like

  <!-- ======================= -->

while not really uncommon, look a bit funny.  But I'm reluctant to
play around with the font-locking regexps, as they do tend to eat up
enough startup time already.


HTH,

-- 
Felix H. Gatzemeier                   [email protected]
Office Phone: (0(049)241)80-21313
Disclaimer: I do not speak for anyone but myself.
Please do not send me mails containing documents in proprietary
formats (such as Microsoft Word) unless you really need to.


-------------------------------------------------------
This SF.net email is sponsored by: Get the new Palm Tungsten T 
handheld. Power & Color in a compact size! 
http://ads.sourceforge.net/cgi-bin/redirect.pl?palm0002en
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.