    ;; *******************************************************************
    ;; set up psgml mode...
    ;; use psgml-mode instead of emacs native sgml-mode
    ;;

    (autoload 'sgml-mode "psgml" "Major mode to edit SGML files." t )
    (setq auto-mode-alist
      (append
      (list
        '("\\.sgm$" . sgml-mode)
        '("\\.sgml$" . sgml-mode)
        )
      auto-mode-alist))

    ;; set some psgml variables

    (setq sgml-auto-activate-dtd t)
    (setq sgml-omittag-transparent t)
    (setq sgml-balanced-tag-edit t)
    (setq sgml-auto-insert-required-elements t)
    (setq sgml-live-element-indicator t)
    (setq sgml-indent-step nil)

    ;; create faces to assign to markup categories

    (make-face 'sgml-comment-face)
    (make-face 'sgml-start-tag-face)
    (make-face 'sgml-end-tag-face)
    (make-face 'sgml-entity-face)
    (make-face 'sgml-doctype-face) ; DOCTYPE data
    (make-face 'sgml-ignored-face) ; data ignored by PSGML
    (make-face 'sgml-ms-start-face) ; marked sections start
    (make-face 'sgml-ms-end-face) ; end of marked section
    (make-face 'sgml-pi-face) ; processing instructions
    (make-face 'sgml-sgml-face) ; the SGML declaration
    (make-face 'sgml-shortref-face) ; short references

    ;; view a list of available colors with the emacs-lisp command:
    ;;
    ;; list-colors-display
    ;;
    ;; please assign your own groovy colors, because these are pretty bad
    (set-face-foreground 'sgml-comment-face "coral")
    ;(set-face-background 'sgml-comment-face "cornflowerblue")
    (set-face-foreground 'sgml-start-tag-face "slateblue")
    ;(set-face-background 'sgml-start-tag-face "cornflowerblue")
    (set-face-foreground 'sgml-end-tag-face "slateblue")
    ;(set-face-background 'sgml-end-tag-face "cornflowerblue")
    (set-face-foreground 'sgml-entity-face "lavender")
    ;(set-face-background 'sgml-entity-face "cornflowerblue")
    (set-face-foreground 'sgml-doctype-face "lavender")
    ;(set-face-background 'sgml-doctype-face "cornflowerblue")
    (set-face-foreground 'sgml-ignored-face "cornflowerblue")
    ;(set-face-background 'sgml-ignored-face "cornflowerblue")
    (set-face-foreground 'sgml-ms-start-face "coral")
    ;(set-face-background 'sgml-ms-start-face "cornflowerblue")
    (set-face-foreground 'sgml-ms-end-face "coral")
    ;(set-face-background 'sgml-ms-end-face "cornflowerblue")
    (set-face-foreground 'sgml-pi-face "coral")
    ;(set-face-background 'sgml-pi-face "cornflowerblue")
    (set-face-foreground 'sgml-sgml-face "coral")
    ;(set-face-background 'sgml-sgml-face "cornflowerblue")
    (set-face-foreground 'sgml-shortref-face "coral")
    ;(set-face-background 'sgml-shortref-face "cornflowerblue")

    ;; assign faces to markup categories

    (setq sgml-markup-faces '
      (
      (comment . sgml-comment-face)
      (start-tag . sgml-start-tag-face)
      (end-tag . sgml-end-tag-face)
      (entity . sgml-entity-face)
      (doctype . sgml-doctype-face)
      (ignored . sgml-ignored-face)
      (ms-start . sgml-ms-start-face)
      (ms-end . sgml-ms-end-face)
      (pi . sgml-pi-face)
      (sgml . sgml-sgml-face)
      (shortref . sgml-shortref-face)
      ))

    ;; tell PSGML to pay attention to face settings
    (setq sgml-set-face t)
    ;; ...done setting up psgml-mode.
    ;; *******************************************************************