;ELC
;;; Compiled by LTX@Xue-LingTaos-MacBook-Pro.local on Wed Mar 16 23:09:27 2011
;;; from file /Users/LTX/Projects/Emacs/emacs/lisp/htmlfontify.el
;;; in Emacs version 24.0.50.1
;;; with all optimizations.

;;; This file contains utf-8 non-ASCII characters,
;;; and so cannot be loaded into Emacs 22 or earlier.
(and (boundp 'emacs-version)
     (< (aref emacs-version (1- (length emacs-version))) ?A)
     (string-lessp emacs-version "23")
     (error "`htmlfontify.el' was compiled for Emacs 23 or later"))

;;;;;;;;;;;;;;;;;;;;


(byte-code "\301\302!\210\301\303!\210\301\304!\210\301\305!\210\306B\307\310!\207" [current-load-list require faces custom font-lock cus-edit htmlfontify-version (lambda (#1=#:defconst-tmp-var) (defconst htmlfontify-version #1#)) 0.21] 2)
#@57 The generator meta tag for this version of htmlfontify.
(defconst hfy-meta-tags (format "<meta name=\"generator\" content=\"emacs %s; htmlfontify %0.2f\" />" emacs-version htmlfontify-version) (#$ . 787))
#@1768 Copy and convert buffers and files to HTML, adding hyperlinks between files
(driven by etags) if requested.

Interactive functions:
  `htmlfontify-buffer'
  `htmlfontify-run-etags'
  `htmlfontify-copy-and-link-dir'
  `htmlfontify-load-rgb-file'
  `htmlfontify-unload-rgb-file'

In order to:

fontify a file you have open:           \[htmlfontify-buffer]
prepare the etags map for a directory:  \[htmlfontify-run-etags]
copy a directory, fontifying as you go: \[htmlfontify-copy-and-link-dir]

The following might be useful when running non-windowed or in batch mode:
(note that they shouldn't be necessary - we have a built in map)

load an X11 style rgb.txt file:         \[htmlfontify-load-rgb-file]
unload the current rgb.txt file:        \[htmlfontify-unload-rgb-file]

And here's a programmatic example:

(defun rtfm-build-page-header (file style)
  (format "#define  TEMPLATE red+black.html
#define  DEBUG    1
#include <build/menu-dirlist|>\n
html-css-url := /css/red+black.css
title        := rtfm.etla.org ( %s / src/%s )
bodytag      :=
head         <=STYLESHEET;\n
%s
STYLESHEET
main-title   := rtfm / %s / src/%s\n
main-content <=MAIN_CONTENT;\n" rtfm-section file style rtfm-section file))

(defun rtfm-build-page-footer (file) "\nMAIN_CONTENT\n")

(defun rtfm-build-source-docs (section srcdir destdir)
  (interactive
   "s section[eg- emacs / p4-blame]:\nD source-dir: \nD output-dir: ")
  (require 'htmlfontify)
  (hfy-load-tags-cache srcdir)
  (let ((hfy-page-header  'rtfm-build-page-header)
        (hfy-page-footer  'rtfm-build-page-footer)
        (rtfm-section                     section)
        (hfy-index-file                   "index"))
    (htmlfontify-run-etags srcdir)
    (htmlfontify-copy-and-link-dir srcdir destdir ".src" ".html")))
(defconst htmlfontify-manual "Htmlfontify Manual" (#$ . 1000))
(custom-declare-group 'htmlfontify nil "Convert buffers and files to HTML." :group 'applications :link '(variable-link htmlfontify-manual) :prefix "hfy-")
#@398 Function called to build the header of the html source.
This is called with two arguments (the filename relative to the top
level source directory being etag'd and fontified), and a string containing
the <style>...</style> text to embed in the document.
It should return the string returned will be used as the header for the
htmlfontified version of the source file.

See also `hfy-page-footer'.
(custom-declare-variable 'hfy-page-header ''hfy-default-header '(#$ . 2992) :group 'htmlfontify :tag "page-header" :type '(function))
#@239 Whether or not to split the index `hfy-index-file' alphabetically.
If non-nil, the index is split on the first letter of each tag.
Useful when the index would otherwise
be large and take a long time to render or be difficult to navigate.
(custom-declare-variable 'hfy-split-index 'nil '(#$ . 3530) :group 'htmlfontify :tag "split-index" :type '(boolean))
#@98 As `hfy-page-header', but generates the output footer.
It takes only one argument, the filename.
(custom-declare-variable 'hfy-page-footer ''hfy-default-footer '(#$ . 3891) :group 'htmlfontify :tag "page-footer" :type '(function))
#@39 File extension used for output files.
(custom-declare-variable 'hfy-extn '".html" '(#$ . 4128) :group 'htmlfontify :tag "extension" :type '(string))
#@71 String to add to the '<style> a' variant of an htmlfontify CSS class.
(custom-declare-variable 'hfy-src-doc-link-style '"text-decoration: underline;" '(#$ . 4283) :group 'htmlfontify :tag "src-doc-link-style" :type '(string))
#@73 Regex to remove from the <style> a variant of an htmlfontify CSS class.
(custom-declare-variable 'hfy-src-doc-link-unstyle '" text-decoration: none;" '(#$ . 4515) :group 'htmlfontify :tag "src-doc-link-unstyle" :type '(string))
#@221 File extension used for href links.
Useful where the htmlfontify output files are going to be processed
again, with a resulting change in file extension.  If nil, then any
code using this should fall back to `hfy-extn'.
(custom-declare-variable 'hfy-link-extn 'nil '(#$ . 4750) :group 'htmlfontify :tag "link-extension" :type '(choice string (const nil)))
#@359 Function to customize the appearance of hyperlinks.
Set this to a function, which will be called with one argument
(a "{ foo: bar; ...}" CSS style-string) - it should return a copy of
its argument, altered so as to make any changes you want made for text which
is a hyperlink, in addition to being in the class to which that style would
normally be applied.
(custom-declare-variable 'hfy-link-style-fun ''hfy-link-style-string '(#$ . 5113) :group 'htmlfontify :tag "link-style-function" :type '(function))
#@104 Name (sans extension) of the tag definition index file produced during
fontification-and-hyperlinking.
(custom-declare-variable 'hfy-index-file '"hfy-index" '(#$ . 5626) :group 'htmlfontify :tag "index-file" :type '(string))
#@99 Name (sans extension) of the tag usage index file produced during
fontification-and-hyperlinking.
(custom-declare-variable 'hfy-instance-file '"hfy-instance" '(#$ . 5857) :group 'htmlfontify :tag "instance-file" :type '(string))
#@164 Regex to match (with a single back-reference per match) strings in HTML
which should be quoted with `hfy-html-quote' (and `hfy-html-quote-map')
to make them safe.
(custom-declare-variable 'hfy-html-quote-regex '"\\([<\"&>]\\)" '(#$ . 6093) :group 'htmlfontify :tag "html-quote-regex" :type '(regexp))
(byte-code "\302\303\304\305#\210\306\305\211\203,	@\303N\203%\304N\204%\307\304\303N#\210	A\211\204*\310\303\304\311#\207" [prop #:--cl-dolist-temp-- defvaralias hfy-init-kludge-hooks hfy-init-kludge-hook nil (saved-value saved-variable-comment) put make-obsolete-variable "23.2"] 6)
#@185 List of functions to call when starting `htmlfontify-buffer' to do any
kludging necessary to get highlighting modes to behave as you want, even
when not running under a window system.
(custom-declare-variable 'hfy-init-kludge-hook ''(hfy-kludge-cperl-mode) '(#$ . 6699) :group 'htmlfontify :tag "init-kludge-hooks" :type '(hook))
#@146 List of functions to call after creating and filling the HTML buffer.
These functions will be called with the html buffer as the current buffer.
(custom-declare-variable 'hfy-post-html-hooks 'nil '(#$ . 7036) :group 'htmlfontify :tag "post-html-hooks" :options '(set-auto-mode) :type '(hook))
#@322 Fallback `defface' specification for the face 'default, used when
`hfy-display-class' has been set (the normal htmlfontify way of extracting
potentially non-current face information doesn't necessarily work for
'default).

Example: I customize this to:

((t :background "black" :foreground "white" :family "misc-fixed"))
(custom-declare-variable 'hfy-default-face-def 'nil '(#$ . 7336) :group 'htmlfontify :tag "default-face-definition" :type '(alist))
#@168 Regex used to parse an etags entry: must have 3 subexps, corresponding,
in order, to:

   1 - The tag
   2 - The line
   3 - The char (point) at which the tag occurs.
(custom-declare-variable 'hfy-etag-regex '(concat ".*" "" "\\([^\n]+\\)" "" "\\([0-9]+\\)" "," "\\([0-9]+\\)$" "\\|" ".*[0-9]+,[0-9]+$") '(#$ . 7796) :group 'htmlfontify :tag "etag-regex" :type '(regexp))
#@67 Alist of char -> entity mappings used to make the text HTML-safe.
(custom-declare-variable 'hfy-html-quote-map ''(("\"" "&quot;") ("<" "&lt;") ("&" "&amp;") (">" "&gt;")) '(#$ . 8178) :group 'htmlfontify :tag "html-quote-map" :type '(alist :key-type (string)))
(byte-code "\301B\302\303!\210\304B\305\306	B\307B!\207" [current-load-list hfy-e2x-etags-cmd (lambda (#1=#:defconst-tmp-var) (defconst hfy-e2x-etags-cmd #1#)) "for src in `find . -type f`;\ndo\n  ETAGS=%s;\n  case ${src} in\n    *.ad[absm]|*.[CFHMSacfhlmpsty]|*.def|*.in[cs]|*.s[as]|*.src|*.cc|\\\n    *.hh|*.[chy]++|*.[ch]pp|*.[chy]xx|*.pdb|*.[ch]s|*.[Cc][Oo][Bb]|\\\n    *.[eh]rl|*.f90|*.for|*.java|*.[cem]l|*.clisp|*.lisp|*.[Ll][Ss][Pp]|\\\n    [Mm]akefile*|*.pas|*.[Pp][LlMm]|*.psw|*.lm|*.pc|*.prolog|*.oak|\\\n    *.p[sy]|*.sch|*.scheme|*.[Ss][Cc][Mm]|*.[Ss][Mm]|*.bib|*.cl[os]|\\\n    *.ltx|*.sty|*.TeX|*.tex|*.texi|*.texinfo|*.txi|*.x[bp]m|*.yy|\\\n    *.[Ss][Qq][Ll])\n          ${ETAGS} -o- ${src};\n          ;;\n      *)\n          FTYPE=`file ${src}`;\n          case ${FTYPE} in\n              *script*text*)\n                  ${ETAGS} -o- ${src};\n                  ;;\n              *text*)\n                  SHEBANG=`head -n1 ${src} | grep '#!' -c`;\n                  if [ ${SHEBANG} -eq 1 ];\n                  then\n                      ${ETAGS} -o- ${src};\n                  fi;\n                  ;;\n          esac;\n          ;;\n  esac;\ndone;" hfy-etags-cmd-alist-default (lambda (#2=#:defconst-tmp-var) (defconst hfy-etags-cmd-alist-default #2#)) "emacs etags" (("exuberant ctags" . "%s -R -f -"))] 3)
#@137 Alist of possible shell commands that will generate etags output that
`htmlfontify' can use.  '%s' will be replaced by `hfy-etags-bin'.
(custom-declare-variable 'hfy-etags-cmd-alist 'hfy-etags-cmd-alist-default '(#$ . 9783) :group 'htmlfontify :tag "etags-cmd-alist" :type '(alist :key-type (string) :value-type (string)))
#@177 Location of etags binary (we begin by assuming it's in your path).

Note that if etags is not in your path, you will need to alter the shell
commands in `hfy-etags-cmd-alist'.
(custom-declare-variable 'hfy-etags-bin '"etags" '(#$ . 10113) :group 'htmlfontify :tag "etags-bin" :type '(file))
#@70 Shell (bourne or compatible) to invoke for complex shell operations.
(custom-declare-variable 'hfy-shell-file-name '"/bin/sh" '(#$ . 10410) :group 'htmlfontify :tag "shell-file-name" :type '(file))
#@77 Properties to omit when copying a fontified buffer for HTML transformation.
(custom-declare-variable 'hfy-ignored-properties ''(read-only intangible modification-hooks insert-in-front-hooks insert-behind-hooks point-entered point-left) '(#$ . 10614) :group 'htmlfontify :tag "ignored-properties" :type '(repeat symbol))
#@65 Return a string indicating which flavour of etags we are using.
(defalias 'hfy-which-etags #[nil "\302\303P!\304\305	\"\203\306\202\304\307	\"\205\310)\207" [hfy-etags-bin v shell-command-to-string " --version" string-match "exube" "exuberant ctags" "GNU E" "emacs etags"] 3 (#$ . 10940)])
#@283 The etags equivalent command to run in a source directory to generate a tags
file for the whole source tree from there on down.  The command should emit
the etags output on stdout.

Two canned commands are provided - they drive Emacs' etags and
exuberant-ctags' etags respectively.
(custom-declare-variable 'hfy-etags-cmd '(eval-and-compile (cdr (assoc (hfy-which-etags) hfy-etags-cmd-alist))) '(#$ . 11245) :group 'htmlfontify :tag "etags-command" :type (byte-code "\304C	\305\211\203@\306\307\n@\nAFBA\211\204*\310)B\207" [clist hfy-etags-cmd-alist C #1=#:--cl-dolist-temp-- (string) nil const :tag choice] 5))
#@217 Command to run with the name of a file, to see whether it is a text file
or not.  The command should emit a string containing the word 'text' if
the file is a text file, and a string not containing 'text' otherwise.
(custom-declare-variable 'hfy-istext-command '"file %s | sed -e 's@^[^:]*:[ 	]*@@'" '(#$ . 11879) :group 'htmlfontify :tag "istext-command" :type '(string))
#@69 Find command used to harvest a list of files to attempt to fontify.
(custom-declare-variable 'hfy-find-cmd '"find . -type f \\! -name \\*~ \\! -name \\*.flc \\! -path \\*/CVS/\\*" '(#$ . 12258) :group 'htmlfontify :tag "find-command" :type '(string))
#@874 Display class to use to determine which display class to use when
calculating a face's attributes.  This is useful when, for example, you
are running Emacs on a tty or in batch mode, and want htmlfontify to have
access to the face spec you would use if you were connected to an X display.

Some valid class specification elements are:

  '(class      color)
  '(class      grayscale)
  '(background dark)
  '(background light)
  '(type       x-toolkit)
  '(type       tty)
  '(type       motif)
  '(type       lucid)
Multiple values for a tag may be combined, to indicate that any one or more
of these values in the specification key constitutes a match, eg:

'((class color grayscale) (type tty)) would match any of:

  '((class color))
  '((class grayscale))
  '((class color grayscale))
  '((class color foo))
  '((type  tty))
  '((type  tty) (class color))

and so on.
(custom-declare-variable 'hfy-display-class 'nil '(#$ . 12516) :type '(alist :key-type (symbol) :value-type (symbol)) :group 'htmlfontify :tag "display-class" :options '((type (choice (const :tag "X11" x-toolkit) (const :tag "Terminal" tty) (const :tag "Lucid Toolkit" lucid) (const :tag "Motif Toolkit" motif))) (class (choice (const :tag "Colour" color) (const :tag "Greyscale" grayscale))) (background (choice (const :tag "Dark" dark) (const :tag "Bright" light)))))
#@1207 Optimizations to turn on: So far, the following have been implemented:

  merge-adjacent-tags: If two (or more) span tags are adjacent, identical and
                       separated by nothing more than whitespace, they will
                       be merged into one span.
  zap-comment-links  : Suppress hyperlinking of tags found in comments.
  zap-string-links   : Suppress hyperlinking of tags found in strings.
  div-wrapper        : Add <div class="default"> </div> tags around the
                       output.
  keep-overlays      : More of a bell (or possibly whistle) than an
                       optimization - If on, preserve overlay highlighting
                       (cf ediff or goo-font-lock) as well as basic faces.

  And the following are planned but not yet available:

  kill-context-leak  : Suppress hyperlinking between files highlighted by
                       different modes.

Note: like compiler optimizations, these optimize the _output_ of the code,
not the processing of the source itself, and are therefore likely to slow
htmlfontify down, at least a little.  Except for skip-refontification,
which can never slow you down, but may result in incomplete fontification.
(custom-declare-variable 'hfy-optimisations '(list 'keep-overlays) '(#$ . 13867) :type '(set (const :tag "merge-adjacent-tags" merge-adjacent-tags) (const :tag "zap-comment-links" zap-comment-links) (const :tag "zap-string-links" zap-string-links) (const :tag "skip-refontification" skip-refontification) (const :tag "kill-context-leak" kill-context-leak) (const :tag "div-wrapper" div-wrapper) (const :tag "keep-overlays" keep-overlays)) :group 'htmlfontify :tag "optimizations")
#@294 Alist of the form:

(("/src/dir/0" . tag-hash0) ("/src/dir/1" tag-hash1) ...)

Each tag hash entry then contains entries of the form:

"tag_string" => (("file/name.ext" line char) ... )

ie an alist mapping (relative) file paths to line and character offsets.

See also `hfy-load-tags-cache'.
(defvar hfy-tags-cache nil (#$ . 15561))
#@149 Alist of the form (("/src/dir" . (tag0 tag1 tag2)) ... )

where the tags are stored in descending order of length.

See also `hfy-load-tags-cache'.
(defvar hfy-tags-sortl nil (#$ . 15902))
#@262 Alist of the form (("/src/dir" . tag-rmap-hash))

where tag-rmap-hash has entries of the form:
"tag_string" => ( "file/name.ext" line char )
Unlike `hfy-tags-cache' these are the locations of occurrences of
tagged items, not the locations of their definitions.
(defvar hfy-tags-rmap nil (#$ . 16098))
#@862 An assoc representing/describing an Emacs face.
Properties may be repeated, in which case later properties should be
treated as if they were inherited from a 'parent' font.
(For some properties, only the first encountered value is of any importance,
for others the values might be cumulative, and for others they might be
cumulative in a complex way.)

Some examples:

(hfy-face-to-style 'default) =>
  (("background"      . "rgb(0, 0, 0)")
   ("color"           . "rgb(255, 255, 255)")
   ("font-style"      . "normal")
   ("font-weight"     . "500")
   ("font-stretch"    . "normal")
   ("font-family"     . "misc-fixed")
   ("font-size"       . "13pt")
   ("text-decoration" . "none"))

(hfy-face-to-style 'Info-title-3-face) =>
  (("font-weight"     . "700")
   ("font-family"     . "helv")
   ("font-size"       . "120%")
   ("text-decoration" . "none"))

(defvar hfy-style-assoc 'please-ignore-this-line (#$ . 16406))
#@216 An assoc with elements of the form (face-name style-name . style-string):

'((default               "default" . "{background: black; color: white}")
  (font-lock-string-face "string"  . "{color: rgb(64,224,208)}"))
(defvar hfy-sheet-assoc 'please-ignore-this-line (#$ . 17337))
#@1090 An assoc of (point . FACE-SYMBOL) or (point . DEFFACE-LIST)
and (point . 'end) elements, in descending order of point value
(ie from the file's end to its beginning).

The map is in reverse order because inserting a <style> tag (or any other
string) at `point' invalidates the map for all entries with a greater value of
point.  By traversing the map from greatest to least point, we still invalidate
the map as we go, but only those points we have already dealt with (and
therefore no longer care about) will be invalid at any time.

'((64820 . end)
  (64744 . font-lock-comment-face)
  (64736 . end)
  (64722 . font-lock-string-face)
  (64630 . end)
  (64623 . font-lock-string-face)
  (64449 . end)
  (64446 . font-lock-keyword-face)
  (64406 . end)
  (64395 . font-lock-constant-face)
  (64393 . end)
  (64386 . font-lock-keyword-face)
  (64379 . end)
  ;; big similar section elided.  You get the idea.
  (4285 . font-lock-constant-face)
  (4285 . end)
  (4221 . font-lock-comment-face)
  (4221 . end)
  (4197 . font-lock-constant-face)
  (4197 . end)
  (1 . font-lock-comment-face))
(defvar hfy-facemap-assoc 'please-ignore-this-line (#$ . 17623))
#@52 An alist of derived fonts resulting from overlays.
(defvar hfy-tmpfont-stack nil (#$ . 18783))
(byte-code "\301B\302\303!\210\304B\305\306	\211\307\306	\211\307\306	\211\307\260\f!\207" [current-load-list hfy-hex-regex (lambda (#1=#:defconst-tmp-var) (defconst hfy-hex-regex #1#)) "[0-9A-Fa-f]" hfy-triplet-regex (lambda (#2=#:defconst-tmp-var) (defconst hfy-triplet-regex #2#)) "\\(" "\\)"] 13)
#@68 Return the intersection (using `eq') of two lists SET-A and SET-B.
(defalias 'hfy-interq #[(set-a set-b) "\305\211\203@A	\f>\203	\nB\202\n+\207" [set-a elt interq sa set-b nil] 3 (#$ . 19189)])
#@187 Where COLOUR is a color name or #XXXXXX style triplet, return a
list of three (16 bit) rgb values for said color.

If a window system is unavailable, calls `hfy-fallback-colour-values'.
(defalias 'hfy-colour-vals #[(colour) "\303	\"\203\f\304\305\306\"\207\n\203\307\310!\203\310	!\207\311	!\207\312	!\207" [hfy-triplet-regex colour window-system string-match mapcar #[(x) "\302\303	\"\304\"\305_\207" [x colour string-to-number match-string 16 257] 4] (1 2 3) fboundp color-values x-color-values hfy-fallback-colour-values] 3 (#$ . 19406)])
(byte-code "\301B\302\301!\204\303\301\304\"\210\304\207" [current-load-list hfy-cperl-mode-kludged-p default-boundp set-default nil] 3)
#@118 CPerl mode does its damndest not to do some of its fontification when not
in a windowing system - try to trick it...
(defalias 'hfy-kludge-cperl-mode #[nil "?\205	\204\303\304\305!\210\306)\306\211\207" [hfy-cperl-mode-kludged-p window-system cperl-syntaxify-by-font-lock htmlfontify require cperl-mode t] 2 (#$ . 20103)])
#@23 Is option SYMBOL set.
(defalias 'hfy-opt #[(symbol) "	>\207" [symbol hfy-optimisations] 2 (#$ . 20440)])
#@144 Default value for `hfy-page-header'.
FILE is the name of the file.
STYLE is the inline CSS stylesheet (or tag referring to an external sheet).
(defalias 'hfy-default-header #[(file style) "\302\303	#\207" [file style format "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\"\n\"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <title>%s</title>\n%s\n    <script type=\"text/javascript\"><!--\n  // this function is needed to work around\n  // a bug in IE related to element attributes\n  function hasClass(obj)\n  {\n      var result = false;\n      if (obj.getAttributeNode(\"class\") != null)\n      {\n          result = obj.getAttributeNode(\"class\").value;\n      }\n      return result;\n  }\n\n  function stripe(id)\n  {\n      // the flag we'll use to keep track of\n      // whether the current row is odd or even\n      var even = false;\n\n      // if arguments are provided to specify the colors\n      // of the even & odd rows, then use the them;\n      // otherwise use the following defaults:\n      var evenColor = arguments[1] ? arguments[1] : \"#fff\";\n      var oddColor  = arguments[2] ? arguments[2] : \"#ddd\";\n\n      // obtain a reference to the desired table\n      // if no such table exists, abort\n      var table = document.getElementById(id);\n      if (! table) { return; }\n\n      // by definition, tables can have more than one tbody\n      // element, so we'll have to get the list of child\n      // &lt;tbody&gt;s\n      var tbodies = table.getElementsByTagName(\"tbody\");\n\n      // and iterate through them...\n      for (var h = 0; h < tbodies.length; h++)\n      {\n          // find all the &lt;tr&gt; elements...\n          var trs = tbodies[h].getElementsByTagName(\"tr\");\n\n          // ... and iterate through them\n          for (var i = 0; i < trs.length; i++)\n          {\n              // avoid rows that have a class attribute\n              // or backgroundColor style\n              if (! hasClass(trs[i]) &&\n                  ! trs[i].style.backgroundColor)\n              {\n                  // get all the cells in this row...\n                  var tds = trs[i].getElementsByTagName(\"td\");\n\n                  // and iterate through them...\n                  for (var j = 0; j < tds.length; j++)\n                  {\n                      var mytd = tds[j];\n\n                      // avoid cells that have a class attribute\n                      // or backgroundColor style\n                      if (! hasClass(mytd) &&\n                          ! mytd.style.backgroundColor)\n                      {\n                          mytd.style.backgroundColor =\n                            even ? evenColor : oddColor;\n                      }\n                  }\n              }\n              // flip from odd to even, or vice-versa\n              even =  ! even;\n          }\n      }\n  }\n\n  function toggle_invis( name )\n  {\n      var filter =\n        { acceptNode:\n          function( node )\n          { var classname = node.id;\n            if( classname )\n            { var classbase = classname.substr( 0, name.length );\n              if( classbase == name ) { return NodeFilter.FILTER_ACCEPT; } }\n            return NodeFilter.FILTER_SKIP; } };\n      var walker = document.createTreeWalker( document.body           ,\n                                              NodeFilter.SHOW_ELEMENT ,\n                                              filter                  ,\n                                              false                   );\n      while( walker.nextNode() )\n      {\n          var e = walker.currentNode;\n          if( e.style.display == \"none\" ) { e.style.display = \"inline\"; }\n          else                            { e.style.display = \"none\";   }\n      }\n  }\n--> </script>\n  </head>\n  <body onload=\"stripe('index'); return true;\">\n"] 4 (#$ . 20553)])
#@105 Default value for `hfy-page-footer'.
FILE is the name of the file being rendered, in case it is needed.
(defalias 'hfy-default-footer #[(file) "\300\207" ["\n </body>\n</html>\n"] 1 (#$ . 24552)])
#@198 Replace the end of a CSS style declaration STYLE-STRING with the contents
of the variable `hfy-src-doc-link-style', removing text matching the regex
`hfy-src-doc-link-unstyle' first, if necessary.
(defalias 'hfy-link-style-string #[(style-string) "\303	\"\203\304\305\306\307	$\303\n	\"\204%\303\310	\"\203%\304\n\306\307	$\311P\207	\207" [hfy-src-doc-link-unstyle style-string hfy-src-doc-link-style string-match replace-match "" fixed-case literal "} *$" " }"] 5 (#$ . 24756)])
#@306 Takes a COLOUR name (string) and return a CSS rgb(R, G, B) triplet string.
Uses the definition of "white" to map the numbers to the 0-255 range, so
if you've redefined white, (esp. if you've redefined it to have a triplet
member lower than that of the color you are processing) strange things
may happen.
(defalias 'hfy-triplet #[(colour) "\303\304\305\306!\"\303\307\305!\"	\205\310\311\312\303\313\314\"#*\207" [colour rgb16 white mapcar #[(I) "\301T!\207" [I float] 2] hfy-colour-vals "white" #[(I) "\301T!\207" [I float] 2] apply format "#%02x%02x%02x" #[(X) "	8\n8\245\303_\207" [X rgb16 white 255] 3] (0 1 2)] 6 (#$ . 25249)])
(defalias 'hfy-family #[(family) "\301BC\207" [family "font-family"] 2])
(defalias 'hfy-bgcol #[(colour) "\301\302!BC\207" [colour "background" hfy-triplet] 3])
(defalias 'hfy-colour #[(colour) "\301\302!BC\207" [colour "color" hfy-triplet] 3])
(defalias 'hfy-width #[(width) "\301\302!BC\207" [width "font-stretch" symbol-name] 3])
#@34 Font scaling from Emacs to HTML.
(custom-declare-variable 'hfy-font-zoom '1.05 '(#$ . 26234) :type 'float :group 'htmlfontify)
#@186 Derive a CSS font-size specifier from an Emacs font :height attribute HEIGHT.
Does not cope with the case where height is a function to be applied to
the height of the underlying font.
(defalias 'hfy-size #[(height) "\302!\203\303\304\305	_\306_\"B\202\"\250\205\"\303\304\307	_\310\245\"BC\207" [height hfy-font-zoom floatp "font-size" format "%d%%" 100 "%dpt" 10] 5 (#$ . 26368)])
#@162 Derive a font-style CSS specifier from the Emacs :slant attribute SLANT:
CSS does not define the reverse-* styles, so just maps those to the
regular specifiers.
(defalias 'hfy-slant #[(slant) "\301\302\236A\206	\303BC\207" [slant "font-style" ((italic . "italic") (reverse-italic . "italic") (oblique . "oblique") (reverse-oblique . "oblique")) "normal"] 3 (#$ . 26766)])
#@77 Derive a font-weight CSS specifier from an Emacs weight spec symbol WEIGHT.
(defalias 'hfy-weight #[(weight) "\301\302\236ABC\207" [weight "font-weight" ((ultra-bold . "900") (extra-bold . "800") (bold . "700") (semi-bold . "600") (normal . "500") (semi-light . "400") (light . "300") (extra-light . "200") (ultra-light . "100"))] 3 (#$ . 27146)])
(defalias 'hfy-box-to-border-assoc #[(spec) "\2059@\211A@)\211\304=\203\305\nB\202/\306=\203&\307\nB\202/\310=\205/\311\nB\312\211AA)!*B\207" [spec x val tag :color "colour" :width "width" :style "style" hfy-box-to-border-assoc] 4])
(defalias 'hfy-box-to-style #[(spec) "\304!\305\306	\"A\305\307	\"A\n\205\310\305\306	\"AB\311\312\313\305\314	\"A\206'\315\"B\316\317=\2034\320\202?\321=\203>\322\202?\323BE+\207" [spec css col s hfy-box-to-border-assoc assoc "colour" "style" "border-color" "border-width" format "%dpx" "width" 1 "border-style" released-button "outset" pressed-button "inset" "solid"] 7])
#@67 Derive CSS border-* attributes from the Emacs :box attribute BOX.
(defalias 'hfy-box #[(box) "\205&\250\203\301\302\303\"BC\207;\203\304\302\305\"BC\207<\205&\306!\207" [box "border-width" format "%dpx" "border" "solid %s 1px" hfy-box-to-style] 4 (#$ . 28138)])
#@143 Derive CSS text-decoration specifiers from various Emacs font attributes.
TAG is an Emacs font attribute key (eg :underline).
VAL is ignored.
(defalias 'hfy-decor #[(tag val) "\301=\203\f\302\303B\202!\304=\203\302\305B\202!\306=\205!\302\307BC\207" [tag :underline "text-decoration" "underline" :overline "overline" :strike-through "line-through"] 2 (#$ . 28420)])
#@94 This text should be invisible.
Do something in CSS to make that happen.
VAL is ignored here.
(defalias 'hfy-invisible #[(&optional val) "\300\207" [(("display" . "none"))] 1 (#$ . 28801)])
#@149 Return a `defface' style alist of possible specifications for FACE.
Entries resulting from customization (`custom-set-faces') will take
precedence.
(defalias 'hfy-combined-face-spec #[(face) "\303\205	\205\n\304=\205	\n\305N\n\306N#\207" [hfy-display-class hfy-default-face-def face append default saved-face face-defface-spec] 5 (#$ . 28997)])
#@890 Return the face attributes for FACE.
If CLASS is set, it must be a `defface' alist key [see below],
in which case the first face specification returned by `hfy-combined-face-spec'
which *doesn't* clash with CLASS is returned.

(A specification with a class of t is considered to match any class you
specify - this matches Emacs' behavior when deciding on which face attributes
to use, to the best of my understanding).

If CLASS is nil, then you just get get whatever `face-attr-construct' returns,
ie the current specification in effect for FACE.

*NOTE*: This function forces any face that is not 'default and which has
no :inherit property to inherit from 'default (this is because 'default
is magical in that Emacs' fonts behave as if they inherit implicitly from
'default, but no such behavior exists in HTML/CSS).

See also `hfy-display-class' for details of valid values for CLASS.
(defalias 'hfy-face-attr-for-class #[(face &optional class) "\203\335\306	!\307\211\211\310\307\203\310@\211@AA\307\211\211\211\211\311\203\252\204\252@A@A\211<\203g\202jC\312=\204y
\313>\203\311\202?
\236A\203?\314
\236A\"\211\203\241G\\\202?\312\315\202?V\203\300\f\210
\210\210\202\303\210.\202\n\205\330\n@<\203\327\n@\202\330\n.\2020\316	!\307\317>\204\361\202/\203-@A@\211 \317=\203;\203\320\230\204 BB*\211AA)\211\204\366*!\321!>\204?	\322=\203D!\202K\323!\321\322D\")\207" [class face face-match face-score face-attrs face-class hfy-combined-face-spec nil -1 0 t (t default) hfy-interq -10 face-attr-construct :background "SystemWindow" :inherit default append face-specn face-props score next x val key cel cbuf new-spec spec b a face-spec] 8 (#$ . 29356)])
#@404 The guts of `hfy-face-to-style': FN should be a `defface' font spec,
as returned by `face-attr-construct' or `hfy-face-attr-for-class'.
Note that this function does not get font-sizes right if they are based
on inherited modifiers (via the :inherit) attribute, and any other
modifiers that are cumulative if they appear multiple times need to be
merged by the user - `hfy-flatten-style' should do this.
(defalias 'hfy-face-to-style-i #[(fn) "\2051@\211A@)\211AA)\306\211\211%\211&\307=\203[%<\203.%\2021%C\211'\306(\211)\203W)@(\310\n\311\312(*\"!\")A\211)\204=+\202&%\205%&\313=\203n\314%!\202%&\315=\203|\316%!\202%&\317=\203\212\320%!\202%&\321=\203\230\322%!\202%&\323=\203\246\324%!\202%&\325=\203\264\326%!\202%&\327=\203\302\330%!\202%&\331=\203\320\332%!\202%&\333=\203\340\334&%\"\202%&\335=\203\360\334&%\"\202%&\336=\203\334&%\"\202%&\337=\203\340%!\202%&\341=\203\320\342!\202%&\343=\205%\322\344!\311
!\f\244\n\244.\207" [fn x parent this that next nil :inherit append hfy-face-to-style-i hfy-face-attr-for-class :family hfy-family :width hfy-width :weight hfy-weight :slant hfy-slant :foreground hfy-colour :background hfy-bgcol :box hfy-box :height hfy-size :underline hfy-decor :overline :strike-through :invisible hfy-invisible :bold bold :italic italic val key vs v #1=#:--cl-dolist-temp-- hfy-display-class] 8 (#$ . 31194)])
#@129 Convert SPEC, a CSS font-size specifier, to an Emacs :height attribute value.
Used while merging multiple font-size attributes.
(defalias 'hfy-size-to-int #[(spec) "\301\302\"\203/\303\304\"\305\230\203\306\303\307\"!\310\245\2022\303\304\"\311\230\2052\306\303\307\"!\312_\2022\306!C\207" [spec string-match "\\([0-9]+\\)\\(%\\|pt\\)" match-string 2 "%" string-to-number 1 100.0 "pt" 10] 4 (#$ . 32642)])
#@276 Take STYLE (see `hfy-face-to-style-i', `hfy-face-to-style') and merge
any multiple attributes appropriately.  Currently only font-size is merged
down to a single occurrence - others may need special handling, but I
haven't encountered them yet.  Returns a `hfy-style-assoc'.
(defalias 'hfy-flatten-style #[(style) "\306\307C\310\211\f\310\211\203C@\211@\311\230\2035	\204(\n\312
A!\244\313\314
A\"\203:\315\202:
C\244A\211\204*\316\317\n\"\320	\203U\321!\202X\322_!\244,\207" [r x m n style css 0 1 nil "font-size" hfy-size-to-int string-match "pt" t apply * hfy-size round 1.0 #1=#:--cl-dolist-temp--] 4 (#$ . 33067)])
(defalias 'hfy-face-resolve-face #[(fn) "\302!\203\303	\"\2079\203\302J!\203\303J	\"\207\304\207" [fn hfy-display-class facep hfy-face-attr-for-class nil] 3])
#@210 Take FN, a font or `defface' style font specification,
(as returned by `face-attr-construct' or `hfy-face-attr-for-class')
and return a `hfy-style-assoc'.

See also `hfy-face-to-style-i', `hfy-flatten-style'.
(defalias 'hfy-face-to-style #[(fn) "\303!\304\305	!!\306\307\n\"\204\n\310\244\n*\207" [fn face-def final-style hfy-face-resolve-face hfy-flatten-style hfy-face-to-style-i assoc "text-decoration" (("text-decoration" . "none"))] 3 (#$ . 33895)])
#@70 Render a font symbol or `defface' font spec FN into a name (string).
(defalias 'hfy-face-or-def-to-name #[(fn) "<\204\n\306\307\"\207\306\307\"\310	\n\"\311>\211A@)A
\2045\306\312\nG\"
	
B\211\nB\306\313
\206<\314
#,\207" [fn key hfy-tmpfont-stack entry x base format "%s" assoc :inherit "%04d" "%s-%s" default tag] 5 (#$ . 34362)])
#@72 Strip the boring bits from a font-name FN and return a CSS style name.
(defalias 'hfy-css-name #[(fn) "\302!\303\304	\"\204\303\305	\"\204\303\306	\"\203.\307\310	\"\303\311	\"\203*\307\310	\"	\202/	)\207" [fn face-name hfy-face-or-def-to-name string-match "font-lock-\\(.*\\)" "cperl-\\(.*\\)" "^[Ii]nfo-\\(.*\\)" match-string 1 "\\(.*\\)-face\\'"] 3 (#$ . 34720)])
#@140 Take FN, a font or `defface' specification (cf `face-attr-construct')
and return a CSS style specification.

See also `hfy-face-to-style'.
(defalias 'hfy-face-to-css #[(fn) "\304!\305\306\307	\"\310!\311\312\313\314\"\"+B\207" [fn css-list seen css-text hfy-face-to-style nil mapcar #[(E) "@\205@	\235?\205@	B\302\303@A#\207" [E seen format " %s: %s; "] 4] hfy-css-name format "{%s}" apply concat] 6 (#$ . 35105)])
(byte-code "\300\301\302\303!\203\f\303\202
\304\"\207" [defalias hfy-prop-invisible-p fboundp invisible-p #[(prop) "\302=\203\n	\206	>\206	\236\207" [buffer-invisibility-spec prop t] 2 "Is text property PROP an active invisibility property?"]] 4)
#@77 Return a list of (start-point . end-point) cons cells of invisible regions.
(defalias 'hfy-find-invisible-ranges #[nil "\212\304\211\211\211eb\305\n!\203\n\306\ndW\203C	\2031\305\n!\204;\304\nBB\202;\305\n!\203;\n\306\307\n!\211\202	\203MdBB-\207" [s i p invisible nil invisible-p t next-char-property-change] 5 (#$ . 35800)])
#@187 Generate a CSS style name for an invisible section of the buffer.
POINT is the point inside the invisible region.
MAP is the invisibility map as returned by `hfy-find-invisible-ranges'.
(defalias 'hfy-invisible-name #[(point map) "\305	\305\211\203*@\f\n@Y\203#\f\nAW\203#\306\307\n@\nA#A\211\204\n*)\207" [name map range #1=#:--cl-dolist-temp-- point nil format "invisible-%S-%S"] 5 (#$ . 36162)])
#@181 Find face in effect at point P.
If overlays are to be considered (see `hfy-optimisations') then this may
return a `defface' style list of face properties instead of a face symbol.
(defalias 'hfy-face-at #[(p) "\306\211\307\310\"\306\211\311!2\f\203S\f<\203S\312\f@!\203S\f\3063\2114\203M4@\2113<\203=3\nB\202C\3133\nBB4A\2114\204,*\f@\306\314\315!\203b\316!\2112\204j\f\206]
\202]	\203t	2B22\2372\f\203\f2\3065\2116\203F6@5\3175>\2117A@)\2118\203\254\3208!\203\254\321\322\nBB)\3105>\206\270\3235>\2117A@)\2119<\204\3479;\203\322\3249!\202\3249\211:
=\204\343\313:\nBB)\202<9\203<\3129@!\2039@\211;\203\3249!\313\nBB9A9)\202\347\306\211;9@<\203_9@A<\204C9\2117@@)9\2117@A);9A9\202\2439\2117@@)9\2117@A)@;9A9\202\2439A<\203\2019@9\2117A@);9\2117AA)9\202\2439<\203\2359A<\204\2359@9A;\3069\202\243\325\3269\"\210\327=\203\255\330\202&\331=\203\267\332\202&\333=\203\301\334\202&\335=\203\313\336\202&\337=\203\325\340\202&\341=\203\337\342\202&\343=\203\351\344\202&\345=\203\363\346\202&\347=\203\375\350\202&\351=\203\352\202&\353=\203\354\202&\355=\203\356\202&\357=\203%\360\202&\211>\2048B;\nBB*\202\347)6A\2116\204\212*\n\203\\\n\f<\203U\f\202X\361\f!\244\202]\f.\207" [p text-props extra-props prop-seen face-name base-face nil get-text-property face text-properties-at facep :inherit hfy-opt keep-overlays hfy-overlay-props-at invisible hfy-prop-invisible-p :invisible t font-lock-face intern error "Eh... another format! fprops=%s" family :family width :width height :height weight :weight slant :slant underline :underline overline :overline strike-through :strike-through box :box foreground-color :foreground background-color :background bold :bold italic :italic face-attr-construct overlay-data f #1=#:--cl-dolist-temp-- P #2=#:--cl-dolist-temp-- x iprops fprops this-face v] 7 (#$ . 36581)])
#@91 Grab overlay properties at point P.
The plists are returned in descending priority order.
(defalias 'hfy-overlay-props-at #[(p) "\301\302\303\304!\"\305\"\207" [p sort mapcar overlay-properties overlays-at #[(A B) "\303>\211A@)\206\f\304\303\n>\211A@)\206\304V\207" [A x B priority 0] 4]] 5 (#$ . 38587)])
#@69 Trawl the current buffer, construct and return a `hfy-sheet-assoc'.
(defalias 'hfy-compile-stylesheet #[nil "e\303\211\212\nb\210\ndW\203/\304\n!\211\203'\305	\"\204'	\306	!BB\307\n!\211\202)\310\306\310!BB\211+\207" [style fn pt nil hfy-face-at assoc hfy-face-to-css next-char-property-change default] 4 (#$ . 38906)])
#@277 `font-lock' doesn't like to say it's been fontified when in batch
mode, but we want to know if we should fontify or raw copy, so in batch
mode we check for non-default face properties.  Otherwise we test
variable `font-lock-mode' and variable `font-lock-fontified' for truth.
(defalias 'hfy-fontified-p #[nil "\205+	\203*e\305\212b\210dW\203&\n\204&\306!\307!\211\202)\n*\207\f\207" [font-lock-fontified noninteractive face-name pt font-lock-mode nil hfy-face-at next-char-property-change] 3 (#$ . 39248)])
#@386 Where FACE-MAP is a `hfy-facemap-assoc' for the current buffer,
this function merges adjacent style blocks which are of the same value
and are separated by nothing more interesting than whitespace.

  <span class="foo">narf</span> <span class="foo">brain</span>

(as interpreted from FACE-MAP) would become:

  <span class="foo">narf brain</span>

Returns a modified copy of FACE-MAP.
(defalias 'hfy-merge-adjacent-spans #[(face-map) "\306\211\211\211\211\211\211\211\n\f\211
\203\251
\211AA)A@
\211AA)@\n
\211A@)
@
\f
\fA
A\232\203\223\212\n@b\210\307\310
@\311#)\204\223\f\211AA)\f\f\211AA)A@\f\211AA)@\n\f\211A@)\f@\202F	B\n	B

>\211
A\211
\204	\237\211.	\207" [face-map reduced-map span-start span-stop last-stop last-start nil re-search-forward "[^ 	\n
]" t first-stop first-start map-buf tmp-map x] 10 (#$ . 39777)])
#@66 Compile and return a `hfy-facemap-assoc' for the current buffer.
(defalias 'hfy-compile-face-map #[nil "e\214~\210e)	Z\306\211\306\212b\210dW\203P\307!\211\2039
\203.	\310B\fB	B\fB\311\202E
\203C	\310B\fB\306\312!\n\\\202\f\203h\f\211@A)\310=\204hdeZ\310B\fB)\313\314!\203u\315\f!\202v\f.\207" [pt pt-narrow offset fn map prev-tag nil hfy-face-at end t next-char-property-change hfy-opt merge-adjacent-tags hfy-merge-adjacent-spans x] 3 (#$ . 40674)])
#@280 Generate a buffer to hold the HTML output.
The filename of this buffer is derived from the source (current) buffer's
variable `buffer-file-name', if it is set, plus `hfy-extn'.
Otherwise a plausible filename is constructed from `default-directory',
`buffer-name' and `hfy-extn'.
(defalias 'hfy-buffer #[nil "\305 P\304 \306	!rq\210\n\203\nP\202+\307\310\311	\"\203)\312\313	\"\202*	!,\207" [hfy-extn name src buf buffer-file-name buffer-name get-buffer-create expand-file-name string-match "^.*/\\([^/]*\\)\\'" match-string 1] 4 (#$ . 41169)])
#@43 Get a CSS style name for FACE from STYLE.
(defalias 'hfy-lookup #[(face style) "\303	\"\211A@)\207" [face style x assoc] 4 (#$ . 41732)])
#@114 Copy, alter and return a STYLE-STRING to make it suitable for a hyperlink.
Uses `hfy-link-style-fun' to do this.
(defalias 'hfy-link-style #[(style-string) "\302!\203\n	!\207	\207" [hfy-link-style-fun style-string functionp] 2 (#$ . 41879)])
#@57 Return the inline CSS style sheet for FILE as a string.
(defalias 'hfy-sprintf-stylesheet #[(css file) "\306\307\310\311	\236\211AA)\"\312\313\314\315	\"\"\316\260\f
\")\207" [hfy-meta-tags css x stylesheet hfy-page-header file "\n<style type=\"text/css\"><!-- \n" format "body %s\n" default apply concat mapcar #[(style) "\302\303\211A@)\211AA)\211A@)\304\211AA)!%\207" [style x format "span.%s   %s\nspan.%s a %s\n" hfy-link-style] 8] " --></style>\n"] 9 (#$ . 42130)])
#@104 Mark dangerous ["<>] characters with the `hfy-quoteme' property.

See also `hfy-html-dekludge-buffer'.
(defalias 'hfy-html-enkludge-buffer #[nil "\212eb\210\301\302\303#\205\304\305\224`\306\303$\210\202)\207" [hfy-html-quote-regex re-search-forward nil t put-text-property 0 hfy-quoteme] 5 (#$ . 42622)])
#@61 Map CHAR-STRING to an HTML safe string (entity) if need be.
(defalias 'hfy-html-quote #[(char-string) "\303	\"\211A@)\206
\207" [char-string hfy-html-quote-map x assoc] 4 (#$ . 42939)])
#@137 Transform all dangerous characters marked with the `hfy-quoteme' property
using `hfy-html-quote'.

See also `hfy-html-enkludge-buffer'.
(defalias 'hfy-html-dekludge-buffer #[nil "\212eb\210\301\302\303#\205\304\305\224\306\"\203\307\310\311\312!!!\210\202)\207" [hfy-html-quote-regex re-search-forward nil t get-text-property 0 hfy-quoteme replace-match hfy-html-quote match-string 1] 4 (#$ . 43136)])(if macro-declaration-function (funcall macro-declaration-function (quote hfy-save-buffer-state) (quote (declare (indent 1) (debug let)))))
#@133 Bind variables according to VARLIST and eval BODY restoring buffer state.
Do not record undo information during evaluation of BODY.
(defalias 'hfy-save-buffer-state '(macro . #[(varlist &rest body) "\303\304!\305\306	\307B\310B\"\311\nB\312\313BBF)\207" [modified varlist body make-symbol "modified" let* append ((buffer-modified-p)) ((buffer-undo-list t) (inhibit-read-only t) (inhibit-point-motion-hooks t) (inhibit-modification-hooks t) deactivate-mark buffer-file-name buffer-file-truename) progn unless ((restore-buffer-modified-p nil))] 6 (#$ . 43691)]))
#@77 Tag trailing whitespace with a hfy property if it is currently highlighted.
(defalias 'hfy-mark-trailing-whitespace #[nil "\205<\306\212eb\210\307 \306\211\306\211\310\211\310\311\312\310\306#\2032\313\314\224\314\225\315\306$\210\202\n?\205:\316\310!.\n\207" [show-trailing-whitespace inhibit-read-only #1=#:modified buffer-undo-list inhibit-point-motion-hooks inhibit-modification-hooks t buffer-modified-p nil re-search-forward "[ 	]+$" put-text-property 0 hfy-show-trailing-whitespace restore-buffer-modified-p deactivate-mark buffer-file-name buffer-file-truename] 6 (#$ . 44261)])
#@52 Undo the effect of `hfy-mark-trailing-whitespace'.
(defalias 'hfy-unmark-trailing-whitespace #[nil "\205(\306 \307\211\307\211\310\211\f
\310\311ed\312#\210	?\205&\313\310!.\207" [show-trailing-whitespace #1=#:modified buffer-undo-list inhibit-read-only inhibit-point-motion-hooks inhibit-modification-hooks buffer-modified-p t nil remove-text-properties (hfy-show-trailing-whitespace) restore-buffer-modified-p deactivate-mark buffer-file-name buffer-file-truename] 5 (#$ . 44872)])
#@131 Implement the guts of `htmlfontify-buffer'.
SRCDIR, if set, is the directory being htmlfontified.
FILE, if set, is the file name.
(defalias 'hfy-fontify-buffer #[(&optional srcdir file) "\203\306!\307 \310\211\310\211\311ed\"@A\205 \312 BA\205)\313 CA\203VD\203VBeU\203CCdU\204V\314BC\"\315
\316\317#\210\315
\320\321#\210\322 \210\323 \324 \325 \326 \210
\203m\327
!\210\330	ed#\210	q\210\331edE#\210\332@\333\"@\310F\203\234G\203\234\334G\"\210\335G\"\210\336 \210\337\340\f\"\210\310H\211I\203YI@\211H@HA\310JK\211Lb\210\341L\342\"\206\317\341L\343\"JK\344=\203\336\345c\210\202O\203\374G\203\374J\203\374\331``T\346#\210\347L\211T\343\350$\210\f\203.\351L\f\"\352K\n\"MNL\f\236\203\353\354N\"c\210\355c\210\353\356MNL$c\210*\2028\353\357\352K\n\"\"c\210J\203O\331``T\360#\203O\347L\211T\343\350$\210+IA\211I\204\256*\203\374G\203\374\361e\310\211OPLQ\362L\363\"\211L\203\233\341L\363\"\211P\203oLb\210\331L\211T\364#\210\365P\366Qc\210\202oeL\362LQ\"\211L\203\373\341LQ\"\211P\203\236Lb\210\331L\211TQ\310D#\210Q\361=\203\353\341L\367\"\211O\203\336\353\370O\"c\210\353\371P\"c\210\343Q\202\236Q\343=\203\236\372c\210\361Q\202\236,\373 \210eb\210\374\nG\"c\210\375\376!\203\377c\210\201Sc\210db\210\201Tc\210\375\376!\203*\201Uc\210RG!c\210\201V\201W!\210\201X\310!\210	.\207" [srcdir html-buffer css-sheet css-map invis-ranges rovl directory-file-name hfy-buffer nil overlays-in region-beginning region-end make-overlay overlay-put priority 1000 face region hfy-mark-trailing-whitespace hfy-compile-stylesheet hfy-compile-face-map hfy-find-invisible-ranges hfy-unmark-trailing-whitespace delete-overlay copy-to-buffer remove-text-properties sort #[(A B) "\303\304!>\211A@)\206\305\303\304\n!>\211A@)\206\305V\207" [A x B priority overlay-properties 0] 5] hfy-mark-tag-names hfy-mark-tag-hrefs hfy-html-enkludge-buffer message "invis-ranges:\n%S" get-text-property hfy-linkp hfy-endl end "</span>" (hfy-endl nil) put-text-property t hfy-invisible-name hfy-lookup format "<span onclick=\"toggle_invis('%s');\">" "â€¦</span>" "<span class=\"%s\" id=\"%s-%d\">" "<span class=\"%s\">" (hfy-endl nil) hfy-link next-single-property-change hfy-anchor (hfy-anchor nil) "<a name=\"" "\"></a>" hfy-inst "<a name=\"%s\"></a>" "<a href=\"%s\">" "</a>" hfy-html-dekludge-buffer hfy-sprintf-stylesheet hfy-opt div-wrapper "<div class=\"default\">" orig-ovls mark-active rmin rmax transient-mark-mode hfy-ignored-properties buffer-invisibility-spec file point-face #1=#:--cl-dolist-temp-- move-link fn pt fname iname rr pr lp hfy-page-footer "\n<pre>" "</pre>\n" "</div>" run-hooks hfy-post-html-hooks set-buffer-modified-p] 7 (#$ . 45376)])
#@59 Try to force font-locking even when it is optimized away.
(defalias 'hfy-force-fontification #[nil "\306\307!\210\310\311!\210\312\300!\203\204\313 	\204-\314\315\n#\210\f\205,
\205?\316ed\317#\207\314\320\321 \2066\322 #\210\f\205?\323 \207" [font-lock-cache-position noninteractive window-system major-mode font-lock-defaults font-lock-mode run-hooks hfy-init-kludge-hook require font-lock boundp make-marker message "hfy interactive mode (%S %S)" font-lock-fontify-region nil "hfy batch mode (%s:%S)" buffer-file-name buffer-name font-lock-fontify-buffer] 4 (#$ . 48165)])
#@629 Create a new buffer, named for the current buffer + a .html extension,
containing an inline CSS-stylesheet and formatted CSS-markup HTML
that reproduces the look of the current Emacs buffer as closely
as possible.

Dangerous characters in the existing buffer are turned into HTML
entities, so you should even be able to do HTML-within-HTML
fontified display.

You should, however, note that random control or eight-bit
characters such as ^L () or Â¤ (\244) won't get mapped yet.

If the SRCDIR and FILE arguments are set, lookup etags derived
entries in the `hfy-tags-cache' and add HTML anchors and
hyperlinks as appropriate.
(defalias 'htmlfontify-buffer #[(&optional srcdir file) "\204\302 \206\303 \304\305\"\203\306\307\"\310\311!\204#\212\312 \210)t\203.\313\314	\"!\207\314	\"\207" [file srcdir buffer-file-name buffer-name string-match "/\\([^/]*\\)\\'" match-string 1 hfy-opt skip-refontification hfy-force-fontification switch-to-buffer hfy-fontify-buffer] 4 (#$ . 48761) nil])
#@85 Return a list of files under DIRECTORY.
Strips any leading "./" from each filename.
(defalias 'hfy-list-files #[(directory) "\302!\210\303\304\305\306	!!\"\207" [directory hfy-find-cmd cd mapcar #[(F) "\301\302\"\203\f\303\304\"\207\207" [F string-match "^./\\(.*\\)" match-string 1] 3] split-string shell-command-to-string] 5 (#$ . 49771)])
#@217 Return everything preceding the last "/" from a relative filename FILE,
on the assumption that this will produce a relative directory name.
Hardly bombproof, but good enough in the context in which it is being used.
(defalias 'hfy-dirname #[(file) "\302!\303\304	\"\205\305\306	\")\207" [file f directory-file-name string-match "^\\(.*\\)/" match-string 1] 3 (#$ . 50125)])
#@37 Approx. equivalent of mkdir -p DIR.
(defalias 'hfy-make-directory #[(dir) "\301!\203\302!\205\303\207\304\303\"\207" [dir file-exists-p file-directory-p t make-directory] 3 (#$ . 50509)])
#@68 Is SRCDIR/FILE text?  Uses `hfy-istext-command' to determine this.
(defalias 'hfy-text-p #[(srcdir file) "\305\306	\n\"\"\307!\310\311\f\"*\207" [hfy-istext-command file srcdir cmd rsp format expand-file-name shell-command-to-string string-match "text"] 5 (#$ . 50710)])
#@209 Open FILE in SRCDIR - if fontified, write a fontified copy to DSTDIR
adding an extension of `hfy-extn'.  Fontification is actually done by
`htmlfontify-buffer'.  If the buffer is not fontified, just copy it.
(defalias 'hfy-copy-and-fontify-file #[(srcdir dstdir file) "\306\211\211\307!\210r\310\f!\211q\210
\311\fQ\312\313\n!!\210\314\315!\204&\316 \210\317 \2042\320\f\"\203H\321\f\"\211q\210\322\nP!\210\323!\210\202f\324\n!\203^\325\n!\204^\326\n\327\330\n!\331\"\"\210\332\333	!\n\334#\210\323	!,\207" [html source target srcdir file dstdir nil cd find-file-noselect "/" hfy-make-directory hfy-dirname hfy-opt skip-refontification hfy-force-fontification hfy-fontified-p hfy-text-p hfy-fontify-buffer write-file kill-buffer file-exists-p file-writable-p set-file-modes logior file-modes 128 copy-file buffer-file-name overwrite hfy-extn] 6 (#$ . 50992)])
#@86 List of etags tags that have definitions in this FILE.
CACHE-HASH is the tags cache.
(defalias 'hfy-tags-for-file #[(cache-hash file) "\302	\203\303\304	\"\210)\207" [tag-list cache-hash nil maphash #[(K V) "\304	\"\205\f\nB\211\207" [file V K tag-list assoc] 3]] 3 (#$ . 51876)])
#@122 Mark tags in FILE (lookup SRCDIR in `hfy-tags-cache') with the `hfy-anchor'
property, with a value of "tag.line-number".
(defalias 'hfy-mark-tag-names #[(srcdir file) "\306	\"\211\211A@)\211\205\307\310\311\f
\"\"*\207" [srcdir hfy-tags-cache cache-entry x cache-hash file assoc mapcar #[(TAG) "\302\303\304	\"\"\207" [TAG cache-hash mapcar #[(TLIST) "	@\230\205(	\211A@)	\211AA)@\306\307
#\310\fT\311\f\\\312$+\207" [file TLIST x line chr TAG format "%s.%d" put-text-property 2 hfy-anchor link] 6] gethash] 5] hfy-tags-for-file] 6 (#$ . 52172)])
#@195 Return a "../" stub of the appropriate length for the current source
tree depth, as determined from FILE (a filename).
START is the offset at which to start looking for the / character in FILE.
(defalias 'hfy-relstub #[(file &optional start) "\303\304\305	\n#\211\203\nT\306P\202)\207" [c file start "" string-match "/" "../"] 4 (#$ . 52744)])
#@556 Return an href stub for a tag href in THIS-FILE.
If DEF-FILES (list of files containing definitions for the tag in question)
contains only one entry, the href should link straight to that file.
Otherwise, the link should be to the index file.

We are not yet concerned with the file extensions/tag line number and so on at
this point.

If `hfy-split-index' is set, and the href wil be to an index file rather than
a source file, append a .X to `hfy-index-file', where X is the uppercased
first character of TAG.

See also `hfy-relstub', `hfy-index-file'.
(defalias 'hfy-href-stub #[(this-file def-files tag) "\305!	G\306U\203	@\202\n\204\202\307\f\310\306O\226QP\207" [this-file def-files hfy-split-index hfy-index-file tag hfy-relstub 1 "." 0] 6 (#$ . 53105)])
#@299 Return a relative href to the tag in question, based on

THIS-FILE `hfy-link-extn' `hfy-extn' DEF-FILES TAG and TAG-MAP

THIS-FILE is the current source file
DEF-FILES is a list of file containing possible link endpoints for TAG
TAG is the tag in question
TAG-MAP is the entry in `hfy-tags-cache'.
(defalias 'hfy-href #[(this-file def-files tag tag-map) "\306	\n#\206\n\f\307\n	G\310U\205#\311\312\313\314	@
\"\211
A@)\"P\260\207" [this-file def-files tag hfy-link-extn hfy-extn tag-map hfy-href-stub "#" 1 "." format "%d" assoc x] 11 (#$ . 53885)])
#@106 Return a regex that matches STRING as the first `match-string', with non
word characters on either side.
(defalias 'hfy-word-regex #[(string) "\301\302!\303Q\207" [string "[^$A-Za-z_0-9]\\(" regexp-quote "\\)[^A-Za-z_0-9]"] 3 (#$ . 54448)])
#@371 Mark href start points with the `hfy-link' prop (value: href string).

Mark href end points with the `hfy-endl' prop (value t).

Avoid overlapping links, and mark links in descending length of
tag name in order to prevent subtags from usurping supertags,
(eg "term" for "terminal").
SRCDIR is the directory being "published".
FILE is the specific file we are rendering.
(defalias 'hfy-mark-tag-hrefs #[(srcdir file) "\306	\"\306\n\"\306\"\307\310!\307\311!\312\211\211\211
\211\211A@)\211\205S\211A@)\211\205S\211A@)\211
\205S\313\314
\".	\207" [srcdir hfy-tags-cache hfy-tags-sortl hfy-tags-rmap case-fold-search tags-rmap assoc hfy-opt zap-comment-links zap-string-links nil mapcar #[(TAG) "\306\211\306\211\306\211\306\211 !\306\211\"#\306$\307%!&\310%'\"(\311\312(\")eb\210\313%\306\314#\205\361`\315\224S\211 b\210\316&!\203\353\317\224\317\225*\204]+\205`\320!\211!<\203s\321!>\211,A@)!\322	T\323\324$\204\353*\203\211!\325=\204\353+\203\225!\326=\204\353\327 $\310%-\"\".$E\211#\"B\"\330\331%$#\332\211T\333$\210\334%\"-#\210\335.)%($\332\211T\336\n$\210\332	\211T\337\324$\210\332	T\323\324$\210
b\210\2023.\207" [start stop href name case-fold-search tmp-point nil hfy-word-regex gethash mapcar car search-forward NOERROR 0 looking-at 1 hfy-face-at :inherit text-property-any hfy-linkp t font-lock-comment-face font-lock-string-face line-number-at-pos format "%s.%d" put-text-property hfy-inst puthash hfy-href hfy-link hfy-endl maybe-start face-at rmap-entry rnew-elt rmap-line TAG tag-regex cache-hash tag-map tag-files no-comment no-strings x tags-rmap file] 6] tags-list cache-hash no-strings no-comment rmap-cache list-cache cache-entry x] 10 (#$ . 54697)])
#@69 Return `shell-file-name', or "/bin/sh" if it is a non-bourne shell.
(defalias 'hfy-shell #[nil "\302\303\"\203	\207	\206\304\207" [shell-file-name hfy-shell-file-name string-match "\\<bash\\>\\|\\<sh\\>\\|\\<dash\\>" "/bin/sh"] 3 (#$ . 56485)])
#@67 Run `hfy-etags-cmd' on SRCDIR, then call `hfy-parse-tags-buffer'.
(defalias 'hfy-load-tags-cache #[(srcdir) "\306\307!\310	\"\311 \312
!\210\313\f\"\210\314
\f\"+\207" [hfy-etags-cmd hfy-etags-bin shell-file-name etags-command etags-buffer srcdir get-buffer-create "*hfy-tags*" format hfy-shell cd shell-command hfy-parse-tags-buffer] 4 (#$ . 56741)])
#@121 Parse a BUFFER containing etags formatted output, loading the
`hfy-tags-cache' and `hfy-tags-sortl' entries for SRCDIR.
(defalias 'hfy-parse-tags-buffer #[(srcdir buffer) "\306	\"\306\n\"\306\"\307\211\211\211\211\211\211\211\211 !\"#$%#\203=#\211&A@)!\202J\310\311\312\"!!DD\313!!\210%\203a%\211&A@)\"\202n\310\311\312\"\"\"D	D\313\"!\210r'q\210eb\210\314\315!\203\346\316y\317U\203\346\314\320!\203{\316y\317U\203{\321\316!\314(!\203{\316y\317U\203{\321\316!\211G\317U\204\231\322\323\321\324!!!\322\323\321\325!!!\326\"\"\fE\211B\327\"#\210\202\231)\330\331\"\"\210\332 \333\" $\203$A \240\210\202\n D\nB G.\f\207" [srcdir hfy-tags-cache hfy-tags-sortl hfy-tags-rmap etags-file new-entry assoc nil make-hash-table :test equal clrhash looking-at "^\f" 1 0 "^\\(.+\\),\\([0-9]+\\)$" match-string round string-to-number 2 3 gethash puthash maphash #[(K V) "	B\211\207" [K tags-list] 2] sort #[(A B) "G	GW\207" [B A] 2] tag-point tag-line tag-string hash-entry tags-list trmap-hash cache-hash trmap-cache tlist-cache cache-entry x buffer hfy-etag-regex] 13 (#$ . 57105)])
#@477 Prepare a tags index buffer for SRCDIR.
`hfy-tags-cache' must already have an entry for SRCDIR for this to work.
`hfy-page-header', `hfy-page-footer', `hfy-link-extn' and `hfy-extn'
all play a part here.

If STUB is set, prepare an (appropriately named) index buffer
specifically for entries beginning with STUB.

If MAP is set, use that instead of `hfy-tags-cache'.
FILENAME is the name of the file being indexed.
DSTDIR is the output directory, where files will be written.
(defalias 'hfy-prepare-index-i #[(srcdir dstdir filename &optional stub map) "\306	\206\n\"\307\211\f\203\310\fP\202\311
Q\307\211 \205 \211!A@)\211\205\312!\211\205\313\314\"\210\315\316\"q\210\317 \210\"\320\"c\210\321c\210\307#\211$\203\347$@#\307%\322#\"\307&\211'\203\335'@&\f\203\222\323\324\fP#\"\203\324&@&\211!A@)()\325\326#%\230\203\257\327\202\265\325\330#\211#)*\206\275
)\211*\206\306
#(\211&\nc\210#%*'A\211'\204+$A\211$\204h*\331c\210+!c\210,\203\373\332,!\210\333!\210-\207" [srcdir map hfy-tags-cache filename stub hfy-extn assoc nil "." "" get-buffer-create maphash #[(K V) "	B\211\207" [K tag-list] 2] sort string< erase-buffer "<!-- CSS -->" "<table class=\"index\">\n" gethash string-match "^" format "  <tr>                                   \n   <td>%s</td>                           \n   <td><a href=\"%s%s\">%s</a></td>      \n   <td><a href=\"%s%s#%s.%d\">%d</a></td>\n  </tr>                                  \n" "&nbsp;" "<a name=\"%s\">%s</a>" "</table>\n" cd set-visited-file-name index-buf index-file tag-list cache-hash cache-entry x hfy-page-header TAG #1=#:--cl-dolist-temp-- tag-started DEF #2=#:--cl-dolist-temp-- line file hfy-link-extn hfy-page-footer dstdir] 14 (#$ . 58278)])
#@141 Return a list of index buffer(s), as determined by `hfy-split-index'.
SRCDIR and DSTDIR are the source and output directories respectively.
(defalias 'hfy-prepare-index #[(srcdir dstdir) "\204\f\306	\n\307$C\207\307\211\211\310	\f\"\f

\2031
\211A@)\211\f\2031\311\312\f\"\210,\207" [hfy-split-index srcdir dstdir hfy-index-file hfy-tags-cache cache-entry hfy-prepare-index-i nil assoc maphash #[(K V) "\306\307O\226\211\n\235?\205	\nB\310\f
	$	B\211	)\207" [K stub stub-list srcdir dstdir hfy-index-file 0 1 hfy-prepare-index-i index-list] 6] index-list cache-hash stub-list x] 7 (#$ . 60075)])
#@298 Prepare the counterpart(s) to the index buffer(s) - a list of buffers
with the same structure, but listing (and linking to) instances of tags
(as opposed to their definitions).

SRCDIR and DSTDIR are the source and output directories respectively.
See also `hfy-prepare-index', `hfy-split-index'.
(defalias 'hfy-prepare-tag-map #[(srcdir dstdir) "\204
\306	\n\307\f%C\207\307\211\211\310	\f\"\f

\2032
\211A@)\211\f\2032\311\312\f\"\210,\207" [hfy-split-index srcdir dstdir hfy-instance-file hfy-tags-rmap cache-entry hfy-prepare-index-i nil assoc maphash #[(K V) "\306\307O\226\211\n\235?\205	\nB\310\f
		%\nB\211\n)\207" [K stub stub-list srcdir dstdir hfy-instance-file 0 1 hfy-prepare-index-i hfy-tags-rmap index-list] 7] index-list cache-hash stub-list x] 7 (#$ . 60702)])
#@158 Internal function - strips definitions of tags from the instance map.
SRCDIR is the directory being "published".
See also `hfy-tags-cache', `hfy-tags-rmap'.
(defalias 'hfy-subtract-maps #[(srcdir) "\306\211\211\211\307	\"\211A@)\307\"\211A@)\307\f\"\211A@)\f

\306\211\203\230@\310
\"\310\f\"\311\312\"\306\306\211\203\205@\211@\211A@)D\235\204|BA\211\204`*\313\f#\210A\211\2046.	\306\207" [srcdir hfy-tags-cache x hfy-tags-rmap hfy-tags-sortl taglist nil assoc gethash mapcar #[(P) "@\211A@)D\207" [P x] 3] puthash rev-map fwd-map exc-list def-list old-list new-list TAG #1=#:--cl-dolist-temp-- P #2=#:--cl-dolist-temp--] 10 (#$ . 61512)])
#@66 Load the etags cache for SRCDIR.
See also `hfy-load-tags-cache'.
(defalias 'htmlfontify-run-etags #[(srcdir) "\301\302!!\207" [srcdir hfy-load-tags-cache directory-file-name] 3 (#$ . 62243) "D source directory: "])
(defalias 'hfy-save-kill-buffers #[(buffer-list &optional dstdir) "\304\211\203*\n@\211q\210\203\305!\203\306!\210\307 \210\310	!\210\nA\211\204*\304\207" [buffer-list B #1=#:--cl-dolist-temp-- dstdir nil file-directory-p cd save-buffer kill-buffer] 3])
#@202 Trawl SRCDIR and write fontified-and-hyperlinked output in DSTDIR.
F-EXT and L-EXT specify values for `hfy-extn' and `hfy-link-extn'.

You may also want to set `hfy-page-header' and `hfy-page-footer'.
(defalias 'htmlfontify-copy-and-link-dir #[(srcdir dstdir &optional f-ext l-ext) "\306!\306	!\307\310\n\"\206\311\f\206\311\2041\312\313!\210\314!\210\310\n\"\315\211A@)!\210\316	!\210\317!\211\320\211\203d@\321	#\210A\211\204O*\322!\210\323\324	\"	\"\210\323\325	\"	\",\207" [srcdir dstdir hfy-tags-rmap f-ext l-ext hfy-link-extn directory-file-name "SETME: list of source files, relative to srcdir" assoc ".html" message "autoload of tags cache" hfy-load-tags-cache clrhash hfy-make-directory hfy-list-files nil hfy-copy-and-fontify-file hfy-subtract-maps hfy-save-kill-buffers hfy-prepare-index hfy-prepare-tag-map hfy-extn tr-cache source-files x file #1=#:--cl-dolist-temp--] 6 (#$ . 62735) "D source directory: \nD output directory: "])
#@76 Return the expected location of the htmlfontify specific init/custom file.
(defalias 'hfy-initfile #[nil "\301\302!\206\303\304\305\")\207" [file getenv "HFY_INITFILE" ".hfy.el" expand-file-name "~"] 3 (#$ . 63735)])
(defalias 'hfy-init-progn 'progn)
(defalias 'hfy-save-initvar #[(sym) "\301\302\303\"!\210\304J!\210\301\305!\207" [sym princ format "(setq %s\n '" pp ")\n"] 4])
#@61 Save the htmlfontify settings to the htmlfontify init file.
(defalias 'htmlfontify-save-initfile #[nil "\303\304 \305	\306\"\212\307\310!\210`\311\312!\210\313\314\315\"\210\311\316!\210\317`\303#\210)\320 +\207" [start-pos custom-file standard-output nil hfy-initfile find-file-noselect nowarn custom-save-delete hfy-init-progn princ "(hfy-init-progn\n;;auto-generated, only one copy allowed\n" mapc hfy-save-initvar (auto-mode-alist interpreter-mode-alist) ")\n" indent-region custom-save-all] 4 (#$ . 64126) nil])
#@49 Load the htmlfontify specific init/custom file.
(defalias 'htmlfontify-load-initfile #[nil "\301 \302\303\304\211$)\207" [file hfy-initfile load NOERROR nil] 5 (#$ . 64654) nil])
#@199 Load an X11 style rgb.txt FILE.
Search `hfy-rgb-load-path' if FILE is not specified.
Loads the variable `hfy-rgb-txt-colour-map', which is used by
`hfy-fallback-colour-values'.

(fn &optional FILE)
(autoload 'htmlfontify-load-rgb-file "hfy-cmap" '(#$ . 64842) t nil)
#@85 Use a fallback method for obtaining the rgb values for a color.

(fn COLOUR-STRING)
(autoload 'hfy-fallback-colour-values "hfy-cmap" '(#$ . 65115) nil nil)
(provide 'htmlfontify)
