;; 14-fonts.el --- Fonts/Faces Settings

;; Copyright (C) 2007 - 2020 Steve Youngs

;;     Author: Steve Youngs <steve@sxemacs.org>
;; Maintainer: Steve Youngs <steve@sxemacs.org>
;;    Created: <2007-12-02>
;; Time-stamp: <Thursday Apr  9, 2020 18:53:24 steve>
;;   Download: <https://downloads.sxemacs.org/SYinits>
;;   HTMLised: <https://www.sxemacs.org/SYinits/14-fonts.html>
;;   Git Repo: git clone https://git.sxemacs.org/syinit
;;   Keywords: init, compile

;; This file is part of SYinit

;; Redistribution and use in source and binary forms, with or without
;; modification, are permitted provided that the following conditions
;; are met:
;;
;; 1. Redistributions of source code must retain the above copyright
;;    notice, this list of conditions and the following disclaimer.
;;
;; 2. Redistributions in binary form must reproduce the above copyright
;;    notice, this list of conditions and the following disclaimer in the
;;    documentation and/or other materials provided with the distribution.
;;
;; 3. Neither the name of the author nor the names of any contributors
;;    may be used to endorse or promote products derived from this
;;    software without specific prior written permission.
;;
;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
;; IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
;; DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
;; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
;; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
;; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
;; BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
;; OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
;; IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

;;; Commentary:
;;
;;   Sets all my pretty colours and shit.
;;

;;; Credits:
;;
;;   The HTML version of this file was created with Hrvoje Niksic's
;;   htmlize.el which is part of the XEmacs "text-modes" package.
;;

;;; Todo:
;;
;;     

;;; Code:
;:*=======================
;:* font-lock
(require 'font-lock)

;:*=======================
;:* Turn on Lazy-(lock|shot)
;;; Lazy-lock
(require 'lazy-lock)
;; (if (eq emacs-minor-version 5)
;;     (setq font-lock-support-mode 'lazy-lock-mode)
(add-hook 'font-lock-mode-hook 'turn-on-lazy-lock)
;; (setq lazy-lock-stealth-time 15)

;;; Lazy-shot (my preference)
;; (require 'lazy-shot)
;; (setq lazy-shot-verbose nil)
;; (setq lazy-shot-stealth-verbose nil)
;; (add-hook 'font-lock-mode-hook 'turn-on-lazy-shot)

;;; Fast-lock (it has caching!)
;; (require 'fast-lock)
;; (setq fast-lock-cache-directories
;;       (list (paths-construct-path (list (getenv "XDG_CACHE_HOME")
;;                                      "sxemacs" "fast-lock"))))
;; (push 'save-buffer fast-lock-save-events)
;; (fast-lock-mode 1)
;; (add-hook 'font-lock-mode-hook 'turn-on-fast-lock)
;; (setq-default fast-lock-mode t)

;:*=======================
;:* describe-face-at-point, a function to find out which face is which
(defun describe-face-at-point ()
  "Describe faces at point."
  (interactive)
  (let ((faces (get-char-property (point) 'face)))
    (if (listp faces)
        (hyper-apropos
         (mapconcat
          #'(lambda (f)
              (symbol-name f)) faces "\\|") nil)
      (hyper-describe-face faces)
      (other-window 1))))

;; Some convenience face stuff
(require 'facemenu)

;:*=======================
;:* Alex Schroeder's color-theme
;;
;; A very nice package, get it from:
;;     <http://www.emacswiki.org/cgi-bin/wiki.pl?ColorTheme>
(autoload 'color-theme-install "color-theme")
(defun sy-colour-theme ()
  "Colour theme by Steve Youngs, created 2001-09-01."
  (interactive)
  (color-theme-install
   `(sy-colour-theme
     ;; Misc basic stuff.
     ((background-color . "black")
      (frame-background-mode . dark)
      (background-toolbar-color . "#cccccccccccc")
      (border-color . "#000000000000")
      (bottom-toolbar-shadow-color . "#7a7a7a7a7a7a")
      (cursor-color . "red3")
      (foreground-color . "white")
      (top-toolbar-shadow-color . "#f5f5f5f5f5f5"))
     ((buffers-tab-face . buffers-tab)
      (cperl-here-face . font-lock-string-face)
      (cperl-invalid-face quote underline)
      (cperl-pod-face . font-lock-comment-face)
      (cperl-pod-head-face . font-lock-variable-name-face)
      (paren-match-face . paren-face-match)
      (paren-mismatch-face . paren-face-mismatch)
      (paren-no-match-face . paren-face-no-match)
      (smiley-mouse-face . highlight)
      (vc-mode-face . highlight))
     (about-headline-face ((t (:bold t :foreground "HotPink"))))
     (about-link-face ((t (:bold t :foreground "Yellow"))))
     (blue ((t (:foreground "blue"))))
     (buffers-tab ((t (:bold t :background "grey65" :foreground "black"))))
     (green ((t (:foreground "green"))))
     (gui-button-face ((t (:background "grey75" :foreground "black"))))
     (highlight ((t (:background "darkseagreen2" :foreground "red"))))
     (list-mode-item-selected ((t (:background "gray68" :foreground "white"))))
     (primary-selection ((t (:background "gray65"))))
     (red ((t (:foreground "red"))))
     (secondary-selection ((t (:background "paleturquoise"))))
     (text-cursor ((t (:background "red3" :foreground "black"))))
     (underline ((t (:underline t))))
     (yellow ((t (:foreground "yellow"))))
     ;; Calendar/Diary.
     (calendar-today-face ((t (:bold t :foreground "HotPink"))))
     (calendar-week-face ((t (:bold t :foreground "yellow"))))
     (calendar-header-face ((t (:bold t :foreground "HotPink"))))
     (calendar-sunday-face ((t (:bold t :foreground "Red"))))
     (diary-face ((t (:foreground "Cyan"))))
     (holiday-face ((t ( :foreground "Yellow"))))
     ;; cperl-mode.
     (cperl-array-face ((t (:bold t :foreground "Blue"))))
     (cperl-hash-face ((t (:bold t :foreground "Red"))))
     (cperl-nonoverridable-face ((t (:foreground "chartreuse3"))))
     ;; Custom
     (custom-group-tag-face ((t (:foreground "Yellow"))))
     (custom-state-face ((t (:foreground "Cyan"))))
     (custom-variable-tag-face ((t (:foreground "LawnGreen"))))
     ;; PCL-CVS
     ;(cvs-filename-face ((t (:bold t :foreground "Yellow"))))
     ;(cvs-header-face ((t (:foreground "Green"))))
     ;(cvs-msg-face ((t ( :foreground "Cyan"))))
     ;; XEtla
     ;(xetla-archive-name ((t (:foreground "yellow"))))
     ;(xetla-location-http ((t (:foreground "sandybrown"))))
     ;(xetla-location-local ((t (:foreground "indianred"))))
     ;(xetla-location-sftp ((t (:foreground "wheat"))))
     ;; dictionary
     (dictionary-word-entry-face ((t (:italic nil :foreground "Green"))))
     (dictionary-reference-face ((t (:foreground "Yellow"))))
     ;; diff-mode
     (diff-added-face ((t ( :foreground "LawnGreen"))))
     (diff-changed-face ((t ( :foreground "Cyan"))))
     (diff-file-header-face 
      ((t ( :foreground "BlanchedAlmond"))))
     (diff-header-face ((t ( :foreground "BlanchedAlmond"))))
     (diff-hunk-header-face ((t ( :foreground "Yellow"))))
     (diff-index-face ((t ( :foreground "Orange"))))
     (diff-removed-face ((t ( :foreground "HotPink"))))
     ;; Dired.
     (dired-face-boring ((t (:foreground "Gray65"))))
     (dired-face-directory ((t (:bold t :foreground "yellow"))))
     (dired-face-executable ((t (:bold t :foreground "LimeGreen"))))
     (dired-face-flagged ((t (:background "LightSlateGray" :foreground "black"))))
     (dired-face-header ((t (:background "Orange" :foreground "black" :bold t))))
     (dired-face-marked ((t (:background "PaleVioletRed" :foreground "black" :bold t))))
     (dired-face-permissions ((t (:background "Turquoise" :foreground "black"))))
     (dired-face-setuid ((t (:foreground "Red" :bold t))))
     (dired-face-socket ((t (:foreground "magenta"))))
     (dired-face-symlink ((t (:foreground "cyan"))))
     ;; Balloon Help.
     (display-time-mail-balloon-enhance-face ((t (:background "red"))))
     (display-time-mail-balloon-gnus-group-face ((t (:foreground "blue"))))
     (display-time-time-balloon-face ((t (:foreground "magenta"))))
     ;; Ediff
     (ediff-current-diff-face-A 
      ((t (:background "pale green" :foreground "firebrick"))))
     (ediff-current-diff-face-Ancestor 
      ((t (:background "VioletRed" :foreground "Black"))))
     (ediff-current-diff-face-B 
      ((t (:background "Yellow" :foreground "DarkOrchid"))))
     (ediff-current-diff-face-C ((t (:background "Pink" :foreground "Navy"))))
     (ediff-even-diff-face-A ((t (:background "light grey" :foreground "Black"))))
     (ediff-even-diff-face-Ancestor ((t (:background "Grey" :foreground "White"))))
     (ediff-even-diff-face-B ((t (:background "Grey" :foreground "White"))))
     (ediff-even-diff-face-C ((t (:background "light grey" :foreground "Black"))))
     (ediff-fine-diff-face-A ((t (:background "sky blue" :foreground "Navy"))))
     (ediff-fine-diff-face-Ancestor 
      ((t (:background "Green" :foreground "Black"))))
     (ediff-fine-diff-face-B ((t (:background "cyan" :foreground "Black"))))
     (ediff-fine-diff-face-C ((t (:background "Turquoise" :foreground "Black"))))
     (ediff-odd-diff-face-A ((t (:background "Grey" :foreground "White"))))
     (ediff-odd-diff-face-Ancestor 
      ((t (:background "light grey" :foreground "Black"))))
     (ediff-odd-diff-face-B ((t (:background "light grey" :foreground "Black"))))
     (ediff-odd-diff-face-C ((t (:background "Grey" :foreground "White"))))
     ;; LaTeX
     (font-latex-bold-face ((t (:foreground "brown"))))
     (font-latex-italic-face ((t (:foreground "lightcoral"))))
     (font-latex-math-face ((t (:foreground "dodgerblue"))))
     (font-latex-sedate-face ((t (:foreground "gray51"))))
     (font-latex-string-face ((t (:foreground "green3"))))
     (font-latex-warning-face ((t (:foreground "red"))))
     ;; Font Lock
     (font-lock-comment-face ((t (:foreground "SkyBlue"))))
     (font-lock-doc-string-face ((t (:foreground "LimeGreen"))))
     (font-lock-function-name-face ((t (:foreground "yellow" :bold t))))
     (font-lock-keyword-face ((t (:foreground "Salmon"))))
     (font-lock-preprocessor-face ((t (:foreground "magenta3"))))
     (font-lock-reference-face ((t (:foreground "Turquoise"))))
     (font-lock-string-face ((t (:foreground "green3"))))
     (font-lock-type-face ((t (:foreground "dodgerblue"))))
     (font-lock-variable-name-face ((t (:foreground "PeachPuff"))))
     (font-lock-warning-face ((t (:bold t :foreground "Red"))))
     ;; gdb highlight
     (gdb-highlight-face ((t (:bold t :foreground "BlanchedAlmond"))))
     (gdb-breakpoint-number-face ((t (:foreground "magenta3"))))
     (gdb-breakpoint-enabled-face ((t (:foreground "steelblue"))))
     (gdb-function-name-face ((t (:bold t :foreground "yellow"))))
     (gdb-function-location-face ((t (:foreground "Salmon"))))
     (gdb-variable-name-face ((t (:foreground "PeachPuff"))))
     (gdb-type-name-face ((t (:foreground "dodgerblue"))))
     ;; Gnus/Message
     (gnus-cite-attribution ((t (:foreground "hotpink"))))
     (gnus-cite-1 ((t (:foreground "LawnGreen"))))
     (gnus-cite-10 ((t (:foreground "magenta"))))
     (gnus-cite-11 ((t (:foreground "MediumBlue"))))
     (gnus-cite-2 ((t (:foreground "PeachPuff"))))
     (gnus-cite-3 ((t (:foreground "Cyan"))))
     (gnus-cite-4 ((t (:foreground "Salmon"))))
     (gnus-cite-5 ((t (:foreground "DarkSalmon"))))
     (gnus-cite-6 ((t (:foreground "LavenderBlush"))))
     (gnus-cite-7 ((t (:foreground "LawnGreen"))))
     (gnus-cite-8 ((t (:foreground "LightSkyBlue"))))
     (gnus-cite-9 ((t (:foreground "LightSeaGreen"))))
     (gnus-emphasis-bold ((t (:bold t))))
     (gnus-emphasis-bold-italic ((t (:italic t :bold t))))
     (gnus-emphasis-highlight-words ((t (:foreground "yellow"))))
     (gnus-emphasis-italic ((t (:italic t))))
     (gnus-emphasis-underline ((t (:underline t))))
     (gnus-emphasis-underline-bold ((t (:underline t :bold t))))
     (gnus-emphasis-underline-bold-italic ((t (:underline t :italic t :bold t))))
     (gnus-emphasis-underline-italic ((t (:underline t :italic t))))
     (gnus-group-mail-1-empty ((t (:foreground "DeepPink3"))))
     (gnus-group-mail-1 ((t (:bold t :foreground "DeepPink3"))))
     (gnus-group-mail-2-empty ((t (:foreground "HotPink3"))))
     (gnus-group-mail-2 ((t (:bold t :foreground "HotPink3"))))
     (gnus-group-mail-3-empty ((t (:foreground "BlanchedAlmond"))))
     (gnus-group-mail-3 ((t (:foreground "Yellow"))))
     (gnus-group-mail-low-empty ((t (:foreground "DeepPink4"))))
     (gnus-group-mail-low ((t (:bold t :foreground "DeepPink4"))))
     (gnus-group-news-1-empty ((t (:foreground "BlanchedAlmond"))))
     (gnus-group-news-1 ((t (:foreground "LawnGreen"))))
     (gnus-group-news-2-empty ((t (:foreground "CadetBlue4"))))
     (gnus-group-news-2 ((t (:bold t :foreground "CadetBlue4"))))
     (gnus-group-news-3 ((t (:foreground "HotPink"))))
     (gnus-group-news-4 ((t (:bold t))))
     (gnus-group-news-5 ((t (:bold t))))
     (gnus-group-news-6 ((t (:bold t))))
     (gnus-group-news-low-empty ((t (:foreground "DarkGreen"))))
     (gnus-group-news-low ((t (:bold t :foreground "DarkGreen"))))
     (gnus-header-content ((t (:foreground "LightGreen"))))
     (gnus-header-from ((t (:foreground "Cyan"))))
     (gnus-header-name ((t (:foreground "hotpink"))))
     (gnus-header-newsgroups ((t (:bold t :foreground "yellow"))))
     (gnus-header-subject ((t (:bold t :foreground "SkyBlue"))))
     (gnus-picon ((t (:background "white" :foreground "white"))))
     (gnus-picon-xbm ((t (:background "white" :foreground "white"))))
     (gnus-server-agent ((t (:bold t :foreground "HotPink"))))
     (gnus-server-opened ((t (:foreground "green"))))
     (gnus-server-closed ((t (:foreground "gray55"))))
     (gnus-server-denied ((t (:foreground "red"))))
     (gnus-server-offline ((t (:foreground "BlanchedAlmond"))))
     (gnus-signature ((t (:bold t :foreground "BlanchedAlmond"))))
     (gnus-summary-cancelled ((t (:foreground "yellow"))))
     (gnus-summary-high-ancient ((t (:bold t :foreground "RoyalBlue"))))
     (gnus-summary-high-read ((t (:foreground "SlateGrey"))))
     (gnus-summary-high-ticked ((t (:bold t :foreground "firebrick"))))
     (gnus-summary-high-unread ((t (:bold t :foreground "HotPink"))))
     (gnus-summary-low-ancient ((t (:italic t :foreground "RoyalBlue"))))
     (gnus-summary-low-read ((t (:foreground "Grey"))))
     (gnus-summary-low-ticked ((t (:italic t :foreground "firebrick"))))
     (gnus-summary-low-unread ((t ( :foreground "coral"))))
     (gnus-summary-normal-ancient ((t (:foreground "RoyalBlue"))))
     (gnus-summary-normal-read ((t (:foreground "SlateGrey"))))
     (gnus-summary-normal-ticked ((t (:foreground "firebrick"))))
     (gnus-summary-normal-unread ((t (:bold t :foreground "white"))))
     (gnus-summary-selected ((t (:underline t :foreground "Cyan"))))
     (gnus-x ((t (:background "white" :foreground "black"))))
     (message-cited-text ((t (:foreground "Cyan"))))
     (message-header-cc ((t (:foreground "LawnGreen"))))
     (message-header-name ((t (:foreground "hotpink"))))
     (message-header-newsgroups ((t (:bold t :foreground "yellow"))))
     (message-header-other ((t (:foreground "Green"))))
     (message-header-subject ((t (:bold t :foreground "SkyBlue"))))
     (message-header-to ((t (:foreground "BlanchedAlmond"))))
     (message-header-xheader ((t (:foreground "blue"))))
     (message-mml ((t (:foreground "ForestGreen"))))
     (message-separator ((t (:bold t :foreground "yellow"))))
     (mm-uu-extract ((t (:background "black"))))
     ;; MMM-mode
     (mmm-default-submode-face ((t (:background "black"))))
     ;; Hyper-apropos.
     (hyper-apropos-documentation ((t (:foreground "white"))))
     (hyper-apropos-hyperlink ((t (:foreground "yellow"))))
     ;; ibuffer
     (ibuffer-deletion-face ((t (:foreground "BlanchedAlmond"))))
     (ibuffer-dired-buffer-face ((t (:foreground "cyan"))))
     (ibuffer-help-buffer-face ((t (:foreground "Yellow"))))
     (ibuffer-hidden-buffer-face ((t (:foreground "DarkMagenta"))))
     (ibuffer-marked-face ((t (:foreground "green"))))
     (ibuffer-occur-match-face ((t (:bold t :foreground "Red"))))
     (ibuffer-read-only-buffer-face ((t (:foreground "hotpink"))))
     (ibuffer-special-buffer-face ((t (:foreground "skyblue"))))
     ;; Info
     (info-node ((t (:bold t :foreground "yellow"))))
     (info-xref ((t (:bold t :foreground "BlanchedAlmond"))))
     ;; Isearch
     (isearch ((t (:background "yellow" :foreground "red"))))
     (isearch-secondary ((t (:foreground "red3"))))
     ;; Riece
     (riece-ctcp-action-face ((t (:foreground "PaleGreen" :bold t))))
     (riece-dialogue-prefix-face ((t (:foreground "red" :bold t))))
     (riece-channel-list-default-face ((t (:foreground "yellow" :bold t))))
     (riece-keyword-face ((t (:foreground "hotpink" :bold t))))
     ;; Man
     (man-italic ((t (:italic t :size "14pt" :foreground "BlanchedAlmond"))))
     (man-heading ((t (:bold t :foreground "yellow"))))
     (man-xref ((t (:underline t :foreground "hotpink"))))
     ;; Modeline
     (modeline ((t (:background "Gray80" :foreground "Black"))))
     (modeline-buffer-id ((t (:background "Gray80" :foreground "blue4"))))
     (modeline-mousable ((t (:background "Gray80" :foreground "firebrick"))))
     (modeline-mousable-minor-mode 
      ((t (:background "Gray80" :foreground "green4"))))
     ;; Paren
     (paren-blink-off ((t (:foreground "black"))))
     (paren-face-match ((t (:background "turquoise"))))
     (paren-face-mismatch ((t (:background "purple" :foreground "white"))))
     (paren-face-no-match ((t (:background "yellow" :foreground "black"))))
     (paren-match ((t (:background "darkseagreen2" :foreground "yellow3"))))
     (paren-mismatch ((t (:background "DeepPink" :foreground "white"))))
     ;; Eshell
     (eshell-ls-directory-face ((t (:foreground "Yellow" :bold t))))
     ;; Shell
     (shell-option-face ((t (:foreground "Cyan"))))
     (shell-output-2-face ((t (:foreground "LawnGreen"))))
     (shell-output-3-face ((t (:foreground "HotPink"))))
     (shell-output-face ((t (:foreground "BlanchedAlmond"))))
     (shell-prompt-face ((t (:foreground "Yellow"))))
     ;; Speedbar
     (speedbar-button-face ((t (:foreground "green4"))))
     (speedbar-directory-face ((t (:foreground "BlanchedAlmond"))))
     (speedbar-file-face ((t (:foreground "cyan4"))))
     (speedbar-highlight-face ((t (:background "green"))))
     (speedbar-selected-face ((t (:underline t :foreground "red"))))
     (speedbar-tag-face ((t (:foreground "brown"))))
     ;; Widget
     (widget-button-face ((t (:foreground "magenta"))))
     (widget-button-pressed-face ((t (:foreground "red"))))
     (widget-documentation-face ((t (:foreground "BlanchedAlmond"))))
     (widget-field-face ((t (:background "Grey30" :foreground "Yellow"))))
     (widget-inactive-face ((t (:foreground "dim gray"))))
     (zmacs-region ((t (:background "gray30" :foreground "yellow"))))
     ;; xwem
     ;(xwem-framei-dockapp-face ((t (:foreground "cyan" :background "black" :bold t))))
     ;; EasyPG
     (epa-field-body-face ((t (:foreground "turquoise" :italic t))))
     (epa-field-name-face ((t (:foreground "BlanchedAlmond"))))
     (epa-mark-face ((t (:foreground "red" :bold t))))
     (epa-string-face ((t (:foreground "green"))))
     (epa-validity-disabled-face ((t (:foreground "grey50"))))
     (epa-validity-high-face ((t (:foreground "hotpink" :bold t))))
     (epa-validity-low-face ((t (:foreground "grey80"))))
     (epa-validity-medium-face ((t (:foreground "PaleTurquoise"))))
     ;; howm
     (action-lock-face ((t (:underline t))))
     (howm-menu-key-face ((t (:foreground "HotPink"))))
     (howm-menu-list-face ((t (:foreground "black" :background "yellow"))))
     (howm-mode-ref-face ((t (:foreground "yellow"))))
     (howm-mode-title-face ((t (:foreground "BlanchedAlmond"))))
     (howm-mode-wiki-face ((t (:foreground "SkyBlue"))))
     (howm-reminder-defer-face ((t (:foreground "white"))))
     (howm-reminder-done-face ((t (:foreground "grey65"))))
     (howm-reminder-schedule-face ((t (:foreground "cyan"))))
     (howm-reminder-todo-face ((t (:foreground "hotpink" :bold t))))
     (howm-reminder-normal-face ((t (:foreground "Salmon"))))
     ;; Sudoku
     (sudoku-value-face ((t (:foreground "yellow" :bold t :size ,sudoku-font-size))))
     )))

(sy-colour-theme)

;:*======================= :* 
; Use a sexy background pixmap.
;(set-face-background-pixmap 'default 
;                           [xpm :file "~/documents/pictures/misc/marble.xpm"])
;:*=======================
;:* Set background-mode to dark (why isn't this autodetected?)
(setq frame-background-mode 'dark)

;; Highlight 'FIXME:' and '--SY' in comments.  So far, just lisp mode.
(add-to-list 'lisp-font-lock-keywords-2
             '(";+.*\\(FIXME:\\|--SY\\.?$\\)" 1 font-lock-warning-face prepend))
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
(message "fonts initialised")

Created with SXEmacs Valid XHTML 1.0 Transitional!
Copyright © 2020 Steve Youngs
Verbatim copying and distribution is permitted in any medium, providing this notice is preserved.
Last modified: Wed Apr 15 18:15:05 AEST 2020