emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] /srv/bzr/emacs/trunk r111421: Merge from emacs-24; up to r


From: Glenn Morris
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r111421: Merge from emacs-24; up to r111134
Date: Fri, 04 Jan 2013 11:22:37 -0800
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 111421 [merge]
committer: Glenn Morris <address@hidden>
branch nick: trunk
timestamp: Fri 2013-01-04 11:22:37 -0800
message:
  Merge from emacs-24; up to r111134
added:
  doc/misc/htmlfontify.texi
modified:
  ChangeLog
  doc/lispref/ChangeLog
  doc/lispref/hash.texi
  doc/misc/ChangeLog
  doc/misc/Makefile.in
  doc/misc/makefile.w32-in
  info/dir
  lisp/ChangeLog
  lisp/net/tramp-sh.el
  lisp/progmodes/etags.el
  lisp/term.el
  src/ChangeLog
  src/nsterm.m
  src/w32term.c
  src/xterm.c
=== modified file 'ChangeLog'
--- a/ChangeLog 2013-01-04 02:17:49 +0000
+++ b/ChangeLog 2013-01-04 19:22:37 +0000
@@ -1,3 +1,7 @@
+2013-01-04  Glenn Morris  <address@hidden>
+
+       * info/dir: Add htmlfontify.
+
 2013-01-04  Paul Eggert  <address@hidden>
 
        Merge from gnulib, incorporating:

=== modified file 'doc/lispref/ChangeLog'
--- a/doc/lispref/ChangeLog     2013-01-04 02:42:08 +0000
+++ b/doc/lispref/ChangeLog     2013-01-04 19:22:37 +0000
@@ -1,3 +1,7 @@
+2013-01-04  Ari Roponen  <address@hidden>  (tiny change)
+
+       * hash.texi (Defining Hash): Fix typo.  (Bug#13345)
+
 2013-01-04  Stefan Monnier  <address@hidden>
 
        * files.texi (File Attributes): Undocument return format of file-acl.

=== modified file 'doc/lispref/hash.texi'
--- a/doc/lispref/hash.texi     2013-01-01 09:11:05 +0000
+++ b/doc/lispref/hash.texi     2013-01-03 18:38:55 +0000
@@ -293,7 +293,7 @@
 
 @example
 (defun case-fold-string= (a b)
-  (compare-strings a nil nil b nil nil t))
+  (eq t (compare-strings a nil nil b nil nil t)))
 (defun case-fold-string-hash (a)
   (sxhash (upcase a)))
 

=== modified file 'doc/misc/ChangeLog'
--- a/doc/misc/ChangeLog        2013-01-02 16:13:04 +0000
+++ b/doc/misc/ChangeLog        2013-01-04 19:22:37 +0000
@@ -1,3 +1,19 @@
+2013-01-04  Glenn Morris  <address@hidden>
+
+       * Makefile.in (INFO_TARGETS, DVI_TARGETS, PDF_TARGETS):
+       Add htmlfontify.
+       (htmlfontify, $(buildinfodir)/htmlfontify$(INFO_EXT))
+       (htmlfontify.dvi, htmlfontify.pdf): New targets.
+       * makefile.w32-in (INFO_TARGETS, DVI_TARGETS, clean): Add htmlfontify.
+       ($(infodir)/htmlfontify$(INFO_EXT), htmlfontify.dvi): New targets.
+
+       * htmlfontify.texi: Miscellaneous fixes and updates.
+       Set copyright to FSF, update license to GFDL 1.3+.
+
+2013-01-04  Vivek Dasmohapatra  <address@hidden>
+
+       * htmlfontify.texi: New file.
+
 2013-01-02  Jay Belanger  <address@hidden>
 
        * calc.texi (Free-Form Dates): Expand on the date reading

=== modified file 'doc/misc/Makefile.in'
--- a/doc/misc/Makefile.in      2013-01-02 16:13:04 +0000
+++ b/doc/misc/Makefile.in      2013-01-04 19:22:37 +0000
@@ -43,7 +43,7 @@
 INFO_TARGETS = ada-mode auth autotype bovine calc ccmode cl \
        dbus dired-x ebrowse ede ediff edt eieio \
        emacs-mime epa erc ert eshell eudc efaq \
-       flymake forms gnus emacs-gnutls idlwave info.info \
+       flymake forms gnus emacs-gnutls htmlfontify idlwave info.info \
        mairix-el message mh-e newsticker nxml-mode \
        org pcl-cvs pgg rcirc remember reftex sasl \
        sc semantic ses sieve smtpmail speedbar srecode tramp \
@@ -75,6 +75,7 @@
        forms.dvi \
        gnus.dvi \
        emacs-gnutls.dvi \
+       htmlfontify.dvi \
        idlwave.dvi \
        info.dvi \
        mairix-el.dvi \
@@ -129,6 +130,7 @@
        flymake.pdf \
        forms.pdf \
        gnus.pdf \
+       htmlfontify.pdf \
        emacs-gnutls.pdf \
        idlwave.pdf \
        info.pdf \
@@ -440,6 +442,15 @@
        cp gnustmp.pdf $@
        rm gnustmp.*
 
+htmlfontify : $(buildinfodir)/htmlfontify$(INFO_EXT)
+$(buildinfodir)/htmlfontify$(INFO_EXT): ${srcdir}/htmlfontify.texi ${gfdl}
+       $(mkinfodir)
+       $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ 
${srcdir}/htmlfontify.texi
+htmlfontify.dvi: ${srcdir}/htmlfontify.texi ${gfdl}
+       $(ENVADD) $(TEXI2DVI) ${srcdir}/htmlfontify.texi
+htmlfontify.pdf: ${srcdir}/htmlfontify.texi ${gfdl}
+       $(ENVADD) $(TEXI2PDF) ${srcdir}/htmlfontify.texi
+
 # NB this one needs --no-split even without a .info extension.
 idlwave : $(buildinfodir)/idlwave$(INFO_EXT)
 $(buildinfodir)/idlwave$(INFO_EXT): ${srcdir}/idlwave.texi ${gfdl}

=== added file 'doc/misc/htmlfontify.texi'
--- a/doc/misc/htmlfontify.texi 1970-01-01 00:00:00 +0000
+++ b/doc/misc/htmlfontify.texi 2013-01-04 09:39:40 +0000
@@ -0,0 +1,1609 @@
+\input texinfo
address@hidden %**start of header
address@hidden ../../info/htmlfontify
address@hidden Htmlfontify User Manual
address@hidden 2
address@hidden %**end of header
+
address@hidden
+This manual documents Htmlfontify, a source code -> crosslinked +
+formatted + syntax colorised html transformer.
+
+Copyright @copyright{} 2002, 2003, 2013 Free Software Foundation, Inc.
+
address@hidden
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
+and with the Back-Cover Texts as in (a) below.  A copy of the license
+is included in the section entitled ``GNU Free Documentation License''.
+
+(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
+modify this GNU manual.''
address@hidden quotation
address@hidden copying
+
address@hidden Emacs misc features
address@hidden
+* Htmlfontify: (htmlfontify).    Convert source code to html.
address@hidden direntry
+
address@hidden
address@hidden Htmlfontify User Manual
address@hidden 4
address@hidden Htmlfontify version 0.20
address@hidden 1
address@hidden Jun 2002
address@hidden 5
address@hidden Vivek Dasmohapatra
address@hidden
+
address@hidden 0pt plus 1filll
address@hidden
address@hidden
address@hidden titlepage
+
address@hidden
+
address@hidden
address@hidden Top
address@hidden Htmlfontify
+
address@hidden
address@hidden ifnottex
+
address@hidden
+* Introduction::                   About Htmlfontify.
+* Usage & Examples::               How to use Htmlfontify.
+* Customisation::                  Fine-tuning Htmlfontify's behaviour.
+* Requirements::                   External programs used by Htmlfontify.
+* GNU Free Documentation License:: The license for this documentation.
+* Index::                          Index of contents.
address@hidden menu
+
address@hidden Introduction
address@hidden Introduction
address@hidden Introduction
+
+Htmlfontify provides a means of converting individual Emacs buffers,
+source files, or entire source trees to html, preserving formatting
+and Emacs colorisation / syntax highlighting as much as possible
+through careful application of CSS stylesheets and html tags.
+
+It can also turn instances of functions, methods and (for some
+languages) variables and other constructs and items into links
+to their definitions, and create an index file (or files) of
+all such symbols, also linked to their points of definition.
+
+Htmlfontify also provides several customisation items, which should
+allow it to mesh more-or-less seamlessly with various templating or
+publishing systems (in the event, for instance, that you don't want
+to produce the html pages directly).
+
address@hidden Usage & Examples
address@hidden Usage & Examples
address@hidden Usage & Examples
+
+Htmlfontify can be used both interactively and as part of another
+elisp function.  If you're running it in a modern Emacs, it will also
+run when attached to a terminal (i.e., without X) or even when in
+batch mode.
+
address@hidden
+* Interactive::               Using Htmlfontify interactively.
+* Non-interactive::           Using Htmlfontify from elisp.
+* Variables::                 Variables (other than customisation entries).
+* Data Structures::           Important data structures.
+* Examples::                  Example(s) of Htmlfontify in use.
address@hidden menu
+
address@hidden Interactive
address@hidden Interactive
address@hidden Interactive
address@hidden functions (interactive)
+
+Htmlfontify provides the following interactive functions:
+
address@hidden @code
address@hidden htmlfontify-buffer
address@hidden htmlfontify-buffer
address@hidden
+
address@hidden
+
+(htmlfontify-buffer &optional @var{srcdir} @var{file})
address@hidden lisp
+
+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 (\x0c) or ? (\xa4) won't get mapped yet.
+
+If the @var{srcdir} and @var{file} arguments are set, lookup etags
+derived entries in the @ref{hfy-tags-cache} and add html anchors
+and hyperlinks as appropriate.
+
address@hidden htmlfontify-run-etags
address@hidden htmlfontify-run-etags
address@hidden
+
address@hidden
+
+(htmlfontify-run-etags @var{srcdir})
address@hidden lisp
+
+Load the etags cache for @var{srcdir}.  See @ref{hfy-load-tags-cache}.
+
address@hidden htmlfontify-copy-and-link-dir
address@hidden htmlfontify-copy-and-link-dir
address@hidden
+
address@hidden
+
+(htmlfontify-copy-and-link-dir @var{srcdir} @var{dstdir} &optional @var{f-ext} 
@var{l-ext})
address@hidden lisp
+
+Trawl @var{srcdir} and write fontified-and-hyperlinked output in
address@hidden  @var{f-ext} and @var{l-ext} specify values for
address@hidden and @ref{hfy-link-extn}.
+
+You may also want to set @ref{hfy-page-header} and @ref{hfy-page-footer}.
+
address@hidden htmlfontify-load-rgb-file
address@hidden htmlfontify-load-rgb-file
address@hidden
+
address@hidden
+
+(htmlfontify-load-rgb-file &optional @var{file})
address@hidden lisp
+
+Load an X11 style rgb.txt file (search @code{hfy-rgb-load-path} if
address@hidden is not specified).
+
+Note that this is not necessary if all you want is the standard X11
+(XFree86 4.1.0) color name -> rgb triplet mapping.  Htmlfontify has
+a copy built in, for use when it cannot contact an X server.
+
+Loads the variable @code{hfy-rgb-txt-color-map}, which is used by
address@hidden
+
address@hidden htmlfontify-unload-rgb-file
address@hidden htmlfontify-unload-rgb-file
address@hidden
+
address@hidden
+
+(htmlfontify-unload-rgb-file)
address@hidden lisp
+
+Unload the currently loaded X11 style rgb.txt file (if any).
address@hidden table
+
address@hidden Non-interactive
address@hidden Non-interactive
address@hidden Noninteractive
address@hidden functions (noninteractive)
+
+In addition to the aforementioned interactive methods, Htmlfontify
+provides the following non-interactive ones:
+
address@hidden @code
address@hidden  AUTOGENERATED BLOCK
+
address@hidden hfy-face-to-style
address@hidden hfy-face-to-style
address@hidden
+
address@hidden
+
+(hfy-face-to-style @var{fn})
address@hidden lisp
+
+Take @var{fn}, a font or @code{defface} style font specification,
+(as returned by @code{face-attr-construct} or @ref{hfy-face-attr-for-class})
+and return a @ref{hfy-style-assoc}.
+
+See also: @ref{hfy-face-to-style-i}, @ref{hfy-flatten-style}.
+
address@hidden hfy-fallback-color-values
address@hidden hfy-fallback-color-values
address@hidden
+
address@hidden
+
+(hfy-fallback-color-values @var{color-string})
address@hidden lisp
+
+Use a fallback method for obtaining the rgb values for a color.
+If @ref{htmlfontify-load-rgb-file} has been called, it uses the
+color map specified, otherwise it uses Htmlfontify's built in map.
+
address@hidden hfy-combined-face-spec
address@hidden hfy-combined-face-spec
address@hidden
+
address@hidden
+
+(hfy-combined-face-spec @var{face})
address@hidden lisp
+
+Return a @code{defface} style alist of possible specifications for
address@hidden, with any entries resulting from user customisation
+(@code{custom-set-faces}) taking precedence.
+
+See also: @ref{hfy-default-face-def}
+
address@hidden hfy-word-regex
address@hidden hfy-word-regex
address@hidden
+
address@hidden
+
+(hfy-word-regex @var{string})
address@hidden lisp
+
+Return a regex that matches @var{string} as the first @code{match-string},
+with non word characters on either side (vaguely emulating the perl @code{\b}
+regex atom).
+
address@hidden hfy-force-fontification
address@hidden hfy-force-fontification
address@hidden
+
address@hidden
+
+(hfy-force-fontification)
address@hidden lisp
+
+Emacs's fontification is designed for interactive use.  As such, it sometimes
+does things like deferring fontification until a section of the buffer is
+exposed and rendered, or until Emacs is idle for a while.  Sometimes, in
+non-interactive circumstances, or if it can't see X, it doesn't bother
+with some of the harder stuff.  While this is all great from the perspective
+of a user waiting for Emacs to load a 20000 line file and colorise it,
+it's a pain from the point of view from non-interactive code.  This function
+lies, cheats, steals and generally bullies Emacs into fontifying a buffer
+from start to finish, with all the extra frills, whether it thinks it nneds
+to or not.  Oh yes: it operates on the current buffer.
+
address@hidden hfy-link-style-string
address@hidden hfy-link-style-string
address@hidden
+
address@hidden
+
+(hfy-link-style-string @var{style-string})
address@hidden lisp
+
+Replace the end of a CSS style declaration @var{style-string} with the contents
+of the variable @ref{hfy-src-doc-link-style}, removing text matching the
+regex @ref{hfy-src-doc-link-unstyle} first, if necessary.
+
+
address@hidden hfy-prepare-index-i
address@hidden hfy-prepare-index-i
address@hidden
+
address@hidden
+
+(hfy-prepare-index-i @var{srcdir} @var{dstdir} @var{filename} &optional 
@var{stub} @var{map})
address@hidden lisp
+
+Prepare a tags index buffer for @var{srcdir}.
address@hidden must already have an entry for @var{srcdir} for
+this to work.  @ref{hfy-page-header}, @ref{hfy-page-footer},
address@hidden and @ref{hfy-extn} all play a part here.
+
+If @var{stub} is set, prepare an (appropriately named) index buffer
+specifically for entries beginning with @var{stub}.
+
+If @var{map} is set, use that instead of @ref{hfy-tags-cache}.
+
address@hidden hfy-compile-stylesheet
address@hidden hfy-compile-stylesheet
address@hidden
+
address@hidden
+
+(hfy-compile-stylesheet)
address@hidden lisp
+
+Trawl the current buffer, construct and return a @ref{hfy-sheet-assoc}.
+
address@hidden hfy-css-name
address@hidden hfy-css-name
address@hidden
+
address@hidden
+
+(hfy-css-name @var{fn})
address@hidden lisp
+
+Strip some of the boring bits from a font-name and return a CSS style
+name.  If @var{fn} is a @code{defface} attribute list, either construct
+a name for it, store it in the cache, and return it, or just fetch it
+from the cache if it's already there.
+
address@hidden hfy-make-directory
address@hidden hfy-make-directory
address@hidden
+
address@hidden
+
+(hfy-make-directory @var{dir})
address@hidden lisp
+
+Approximate equivalent of @code{mkdir -p @var{dir}}.
+
address@hidden hfy-triplet
address@hidden hfy-triplet
address@hidden
+
address@hidden
+
+(hfy-triplet @var{color})
address@hidden lisp
+
+Takes a color 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, (especially if you've redefined it to have
+a triplet member lower than that of the color you are processing,
+strange things may happen).
+
address@hidden hfy-default-footer
address@hidden hfy-default-footer
address@hidden
+
address@hidden
+
+(hfy-default-footer @var{file})
address@hidden lisp
+
+Default value for @ref{hfy-page-footer}
+
address@hidden hfy-list-files
address@hidden hfy-list-files
address@hidden
+
address@hidden
+
+(hfy-list-files @var{directory})
address@hidden lisp
+
+Return a list of files under @var{directory}.
+Strips any leading @samp{./} from each filename.
+
address@hidden hfy-color-vals
address@hidden hfy-color-vals
address@hidden
+
address@hidden
+
+(hfy-color-vals @var{color})
address@hidden lisp
+
+Where @var{color} is a color name or #XXXXXX style triplet, return a list of
+3 (16 bit) rgb values for said color.  If a window system is unavailable,
+calls @ref{hfy-fallback-color-values}.
+
address@hidden hfy-href-stub
address@hidden hfy-href-stub
address@hidden
+
address@hidden
+
+(hfy-href-stub @var{this-file} @var{def-files} @var{tag})
address@hidden lisp
+
+Return an href stub for a tag href: if @var{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 @ref{hfy-split-index} is set, and the href will be to an index file
+rather than a source file, append a @samp{.X} to @ref{hfy-index-file}, where
address@hidden is the uppercased first character of @var{tag}.
+
+See also: @ref{hfy-relstub}, @ref{hfy-index-file}.
+
address@hidden hfy-line-number
address@hidden hfy-line-number
address@hidden
+
address@hidden
+
+(hfy-line-number)
address@hidden lisp
+
+Returns the line number of the point in the current buffer.
+
address@hidden hfy-merge-adjacent-spans
address@hidden hfy-merge-adjacent-spans
address@hidden
+
address@hidden
+
+(hfy-merge-adjacent-spans @var{face-map})
address@hidden lisp
+
+Where @var{face-map} is a @ref{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.
+
address@hidden<span class="foo">narf</span> <span class="foo">brain</span>}
+
+(as interpreted from @var{face-map}) would become:
+
address@hidden<span class="foo">narf brain</span>}
+
+Returns a modified copy of @var{face-map} (also a @ref{hfy-facemap-assoc}).
+
address@hidden hfy-mark-tag-names
address@hidden hfy-mark-tag-names
address@hidden
+
address@hidden
+
+(hfy-mark-tag-names @var{srcdir} @var{file})
address@hidden lisp
+
+Mark tags in @var{file} (lookup @var{srcdir} in @ref{hfy-tags-cache}) with the
address@hidden property, with a value of @samp{tag.line-number}.
+
address@hidden hfy-weight
address@hidden hfy-weight
address@hidden
+
address@hidden
+
+(hfy-weight @var{weight})
address@hidden lisp
+
+Derive a font-weight CSS specifier from an Emacs weight specification symbol.
+
address@hidden hfy-size
address@hidden hfy-size
address@hidden
+
address@hidden
+
+(hfy-size @var{height})
address@hidden lisp
+
+Derive a CSS font-size specifier from an Emacs font @code{:height} attribute.
+Does not cope with the case where height is a function to be applied to
+the height of the underlying font.
+
address@hidden hfy-default-header
address@hidden hfy-default-header
address@hidden
+
address@hidden
+
+(hfy-default-header @var{file} @var{style})
address@hidden lisp
+
+Default value for @ref{hfy-page-header}
+
address@hidden hfy-family
address@hidden hfy-family
address@hidden
+
address@hidden
+
+(hfy-family @var{family})
address@hidden lisp
+
+Derives a CSS font-family specifier from an Emacs @code{:family} attribute.
+
address@hidden hfy-mark-tag-hrefs
address@hidden hfy-mark-tag-hrefs
address@hidden
+
address@hidden
+
+(hfy-mark-tag-hrefs @var{srcdir} @var{file})
address@hidden lisp
+
+Mark href start points with the @code{hfy-link} property (value: href string).
+
+Mark href end points with the @code{hfy-endl} property (value @code{t}).
+
+Avoid overlapping links, and mark links in descending length of
+tag name in order to prevent subtags from usurping supertags;
+e.g., ``term'' for ``terminal'').
+
address@hidden hfy-box
address@hidden hfy-box
address@hidden
+
address@hidden
+
+(hfy-box @var{box})
address@hidden lisp
+
+Derive CSS border-* attributes from the Emacs @code{:box} attribute.
+
address@hidden hfy-box-to-style
address@hidden hfy-box-to-style
address@hidden
+
address@hidden
+
+(hfy-box-to-style @var{spec})
address@hidden lisp
+
+Convert a complex @code{:box} Emacs font attribute set to a list of
+CSS border-* attributes.  Don't call this directly---it is called by
address@hidden when necessary.
+
address@hidden hfy-html-enkludge-buffer
address@hidden hfy-html-enkludge-buffer
address@hidden
+
address@hidden
+
+(hfy-html-enkludge-buffer)
address@hidden lisp
+
+Mark dangerous @samp{["<>]} characters with the @code{hfy-quoteme} property.
+
+See also @ref{hfy-html-dekludge-buffer}.
+
address@hidden hfy-buffer
address@hidden hfy-buffer
address@hidden
+
address@hidden
+
+(hfy-buffer)
address@hidden lisp
+
+Generate and return an Htmlfontify html output buffer for the current
+buffer.  May trample an existing buffer.
+
address@hidden hfy-fontified-p
address@hidden hfy-fontified-p
address@hidden
+
address@hidden
+
+(hfy-fontified-p)
address@hidden lisp
+
address@hidden doesn't like to say a buffer'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
address@hidden and @code{font-lock-fontified} for truth.
+
address@hidden hfy-lookup
address@hidden hfy-lookup
address@hidden
+
address@hidden
+
+(hfy-lookup @var{face} @var{style})
address@hidden lisp
+
+Where @var{style} is a @ref{hfy-sheet-assoc} and @var{face} is an Emacs face,
+return the relevant @var{css} style name.
+
address@hidden hfy-fontify-buffer
address@hidden hfy-fontify-buffer
address@hidden
+
address@hidden
+
+(hfy-fontify-buffer &optional @var{srcdir} @var{file})
address@hidden lisp
+
+Implement the guts of @ref{htmlfontify-buffer}.
+
address@hidden hfy-color
address@hidden hfy-color
address@hidden
+
address@hidden
+
+(hfy-color @var{color})
address@hidden lisp
+
+Convert an Emacs :foreground property to a CSS color property.
+
address@hidden hfy-flatten-style
address@hidden hfy-flatten-style
address@hidden
+
address@hidden
+
+(hfy-flatten-style @var{style})
address@hidden lisp
+
+Take @var{style} (see @ref{hfy-face-to-style-i}, @ref{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 @ref{hfy-style-assoc}.
+
address@hidden hfy-size-to-int
address@hidden hfy-size-to-int
address@hidden
+
address@hidden
+
+(hfy-size-to-int @var{spec})
address@hidden lisp
+
+Convert @var{spec}, a CSS font-size specifier, back to an Emacs
address@hidden:height} attribute value.  Used while merging multiple font-size
+attributes.
+
address@hidden hfy-sprintf-stylesheet
address@hidden hfy-sprintf-stylesheet
address@hidden
+
address@hidden
+
+(hfy-sprintf-stylesheet @var{css} @var{file})
address@hidden lisp
+
+Generates a header, via @ref{hfy-page-header}, for @var{file}, containing the
+stylesheet derived from @var{css}, which is a @ref{hfy-sheet-assoc}.  Returns a
+string containing the same.
+
address@hidden hfy-relstub
address@hidden hfy-relstub
address@hidden
+
address@hidden
+
+(hfy-relstub @var{file} &optional @var{start})
address@hidden lisp
+
+Return a @samp{../} stub of the appropriate length for the current source
+tree depth (as determined from @var{file}). @c iyswim.
+
address@hidden hfy-compile-face-map
address@hidden hfy-compile-face-map
address@hidden
+
address@hidden
+
+(hfy-compile-face-map)
address@hidden lisp
+
+Compile and return a @ref{hfy-facemap-assoc} for the current buffer.
+
address@hidden hfy-prepare-index
address@hidden hfy-prepare-index
address@hidden
+
address@hidden
+
+(hfy-prepare-index @var{srcdir} @var{dstdir})
address@hidden lisp
+
+Return as list of index buffer(s), as determined by @ref{hfy-split-index}.
+Uses @ref{hfy-prepare-index-i} to do this.
+
address@hidden hfy-prepare-tag-map
address@hidden hfy-prepare-tag-map
address@hidden
+
address@hidden
+
+(hfy-prepare-tag-map @var{srcdir} @var{dstdir})
address@hidden lisp
+
+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).
+
+See also: @ref{hfy-prepare-index}, @ref{hfy-split-index}
+
address@hidden hfy-subtract-maps
address@hidden hfy-subtract-maps
address@hidden
+
address@hidden
+
+(hfy-subtract-maps @var{srcdir})
address@hidden lisp
+
+Internal function---strips definitions of tags from the instance map.
+See: @ref{hfy-tags-cache} and @ref{hfy-tags-rmap}
+
address@hidden hfy-face-to-style-i
address@hidden hfy-face-to-style-i
address@hidden
+
address@hidden
+
+(hfy-face-to-style-i @var{fn})
address@hidden lisp
+
+The guts of @ref{hfy-face-to-style}.  @var{fn} should be a @code{defface}
+font specification, as returned by @code{face-attr-construct} or
address@hidden  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 address@hidden
+should do this.
+
address@hidden hfy-face-to-css
address@hidden hfy-face-to-css
address@hidden
+
address@hidden
+
+(hfy-face-to-css @var{fn})
address@hidden lisp
+
+Take @var{fn}, a font or @code{defface} specification (c.f.
address@hidden) and return a CSS style specification.
+
+See also: @ref{hfy-face-to-style}
+
address@hidden hfy-html-quote
address@hidden hfy-html-quote
address@hidden
+
address@hidden
+
+(hfy-html-quote @var{char-string})
address@hidden lisp
+
+Map a string (usually 1 character long) to an html safe string
+(entity) if need be.
+
address@hidden hfy-link-style
address@hidden hfy-link-style
address@hidden
+
address@hidden
+
+(hfy-link-style @var{style-string})
address@hidden lisp
+
+Convert the CSS style spec @var{style-string} to its equivalent
+hyperlink style.
+
+See: @ref{hfy-link-style-fun}.
+
address@hidden hfy-p-to-face
address@hidden hfy-p-to-face
address@hidden
+
address@hidden
+
+(hfy-p-to-face @var{props})
address@hidden lisp
+
+Given @var{props}, a list of text-properties, return the value of the
+face property, or nil.
+
address@hidden hfy-box-to-border-assoc
address@hidden hfy-box-to-border-assoc
address@hidden
+
address@hidden
+
+(hfy-box-to-border-assoc @var{spec})
address@hidden lisp
+
+Helper function for @ref{hfy-box-to-style}.
+
address@hidden hfy-face-attr-for-class
address@hidden hfy-face-attr-for-class
address@hidden
+
address@hidden
+
+(hfy-face-attr-for-class @var{face} &optional @var{class})
address@hidden lisp
+
+Return the face attributes for @var{face}.  If @var{class} is set, it
+must be a @code{defface} alist key [see below].  Prior to version 0.18,
+the first face specification returned by @ref{hfy-combined-face-spec}
+which @emph{didn't} clash with @var{class} was returned.  In versions
+from 0.18 onwards, each font attribute list is scored, and the
+non-conflicting list with the highest score is returned.  (A specification
+with a class of @code{t} is considered to match any class you specify.
+This matches Emacs's behaviour when deciding on which face attributes to
+use, to the best of my understanding ).
+
+If @var{class} is nil, then you just get get whatever
address@hidden returns; i.e., the current specification in
+effect for @var{face}.
+
+See @ref{hfy-display-class} for details of valid values for @var{class}.
+
address@hidden hfy-face-at
address@hidden hfy-face-at
address@hidden
+
address@hidden
+
+(hfy-face-at P)
address@hidden lisp
+
+Find face in effect at point P.  If overlays are to be considered
+(see @ref{hfy-optimisations}) then this may return a @code{defface} style
+list of face properties instead of a face symbol.
+
address@hidden hfy-bgcol
address@hidden hfy-bgcol
address@hidden
+
address@hidden
+
+(hfy-bgcol @var{color})
address@hidden lisp
+
+As per @ref{hfy-color} but for background colors.
+
address@hidden hfy-kludge-cperl-mode
address@hidden hfy-kludge-cperl-mode
address@hidden
+
address@hidden
+
+(hfy-kludge-cperl-mode)
address@hidden lisp
+
+cperl mode does its damndest not to do some of its fontification when not
+in a windowing system---we try to trick address@hidden
+
address@hidden hfy-href
address@hidden hfy-href
address@hidden
+
address@hidden
+
+(hfy-href @var{this-file} @var{def-files} @var{tag} @var{tag-map})
address@hidden lisp
+
+Return a relative href to the tag in question, based on
+
address@hidden @ref{hfy-link-extn} @ref{hfy-extn} @var{def-files} @var{tag} and 
@var{tag-map}
+
address@hidden is the current source file
address@hidden is a list of file containing possible link endpoints for 
@var{tag}
address@hidden is the @var{tag} in question
address@hidden is the entry in @ref{hfy-tags-cache}.
+
address@hidden hfy-shell
address@hidden hfy-shell
address@hidden
+
address@hidden
+
+(hfy-shell)
address@hidden lisp
+
+Returns a best guess at a Bourne compatible shell to use: If the current
+shell doesn't look promising, fall back to @ref{hfy-shell-file-name}.
+
address@hidden hfy-load-tags-cache
address@hidden hfy-load-tags-cache
address@hidden
+
address@hidden
+
+(hfy-load-tags-cache @var{srcdir})
address@hidden lisp
+
+Run @ref{hfy-etags-cmd} on @var{srcdir}: load @ref{hfy-tags-cache} and 
@ref{hfy-tags-sortl}.
+
address@hidden hfy-parse-tags-buffer
address@hidden hfy-parse-tags-buffer
address@hidden
+
address@hidden
+
+(hfy-parse-tags-buffer @var{srcdir} @var{buffer})
address@hidden lisp
+
+Parse a @var{buffer} containing etags formatted output, loading the
address@hidden and @ref{hfy-tags-sortl} entries for @var{srcdir}.
+
address@hidden hfy-interq
address@hidden hfy-interq
address@hidden
+
address@hidden
+
+(hfy-interq @var{set-a} @var{set-b})
address@hidden lisp
+
+Return the intersection (using @code{eq}) of 2 lists.
+
address@hidden hfy-text-p
address@hidden hfy-text-p
address@hidden
+
address@hidden
+
+(hfy-text-p @var{srcdir} @var{file})
address@hidden lisp
+
+Is @var{srcdir}/@var{file} text?  Uses @ref{hfy-istext-command} to determine 
this.
+
address@hidden hfy-opt
address@hidden hfy-opt
address@hidden
+
address@hidden
+
+(hfy-opt @var{symbol})
address@hidden lisp
+
+Is @ref{hfy-optimisations} member @var{symbol} set or not?
+
address@hidden hfy-dirname
address@hidden hfy-dirname
address@hidden
+
address@hidden
+
+(hfy-dirname @var{file})
address@hidden lisp
+
+Return everything preceding the last @samp{/} from a relative filename,
+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.
+
address@hidden hfy-html-dekludge-buffer
address@hidden hfy-html-dekludge-buffer
address@hidden
+
address@hidden
+
+(hfy-html-dekludge-buffer)
address@hidden lisp
+
+Transform all dangerous characters marked with the @code{hfy-quoteme} property
+using @ref{hfy-html-quote}
+
+See also @ref{hfy-html-enkludge-buffer}.
+
address@hidden hfy-copy-and-fontify-file
address@hidden hfy-copy-and-fontify-file
address@hidden
+
address@hidden
+
+(hfy-copy-and-fontify-file @var{srcdir} @var{dstdir} @var{file})
address@hidden lisp
+
+Open @var{file} in @var{srcdir}---if fontified, write a fontified copy to 
@var{dstdir}
+adding an extension of @ref{hfy-extn}.  Fontification is actually done by
address@hidden  If the buffer is not fontified, just copy it.
+
address@hidden hfy-decor
address@hidden hfy-decor
address@hidden
+
address@hidden
+
+(hfy-decor @var{tag} @var{val})
address@hidden lisp
+
+Derive CSS text-decoration specifiers from various Emacs font attributes.
+
address@hidden hfy-slant
address@hidden hfy-slant
address@hidden
+
address@hidden
+
+(hfy-slant @var{slant})
address@hidden lisp
+
+Derive a font-style CSS specifier from the Emacs :slant
+attribute---CSS does not define the reverse-* styles, so just maps
+those to the regular specifiers.
+
address@hidden hfy-tags-for-file
address@hidden hfy-tags-for-file
address@hidden
+
address@hidden
+
+(hfy-tags-for-file @var{srcdir} @var{file})
address@hidden lisp
+
+List of etags tags that have definitions in this @var{file}.  Looks up
+the tags cache in @ref{hfy-tags-cache} using @var{srcdir} as the key.
+
address@hidden hfy-width
address@hidden hfy-width
address@hidden
+
address@hidden
+
+(hfy-width @var{width})
address@hidden lisp
+
+Convert an Emacs @code{:width} attribute to a CSS font-stretch attribute.
+
address@hidden /AUTOGENERATED BLOCK
address@hidden table
+
address@hidden Variables
address@hidden Variables
address@hidden variables
+
+Important variables that are not customisation items:
+
address@hidden @code
+
address@hidden hfy-tags-cache
address@hidden hfy-tags-cache
address@hidden
+
+This is an alist of the form:
+
address@hidden
+(("/src/dir/0" . tag-hash0) ("/src/dir/1" tag-hash1) @dots{} )
address@hidden example
+
+Each tag hash entry then contains entries of the form:
+
address@hidden
+"tag_string" => (("file/name.ext" line char) @dots{} )
address@hidden example
+
+i.e., an alist mapping (relative) file paths to line and character offsets.
+
+See @ref{hfy-load-tags-cache}.
+
address@hidden hfy-tags-rmap
address@hidden hfy-tags-rmap
address@hidden
+
address@hidden is an alist of the form:
+
address@hidden
+(("/src/dir" . tag-rmap-hash))
address@hidden lisp
+
+Where tag-rmap-hash has entries of the form:
+
address@hidden
+"tag_string" => ( "file/name.ext" line char )
address@hidden example
+
+Unlike @ref{hfy-tags-cache} these are the locations of occurrences of
+tagged items, not the locations of their definitions.
+
address@hidden hfy-tags-sortl
address@hidden hfy-tags-sortl
address@hidden
+
address@hidden is an alist of the form:
+
address@hidden
+(("/src/dir" . (tag0 tag1 tag2)) @dots{} )
address@hidden example
+
+Where the tags are stored in descending order of length.
+
+See: @ref{hfy-load-tags-cache}.
+
address@hidden table
+
address@hidden Data Structures
address@hidden Data Structures
address@hidden Data Structures
+
+Some of the (informal) data structures used in Htmlfontify are detailed here:
+
address@hidden @code
+
address@hidden hfy-style-assoc
address@hidden hfy-style-assoc
address@hidden
+
+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:
+
address@hidden
+(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")      )
address@hidden lisp
+
address@hidden hfy-sheet-assoc
address@hidden hfy-sheet-assoc
address@hidden
+
+An assoc with elements of the form @samp{(face-name style-name . 
style-string)}.
+The actual stylesheet for each page is derived from one of these.
+
address@hidden
+'((default       "default" . "@{ background: black; color: address@hidden")
+  (font-lock-string-face "string"  . "@{ color: rgb(64,224,208) @}"))
address@hidden lisp
+
address@hidden hfy-facemap-assoc
address@hidden hfy-facemap-assoc
address@hidden
+
+An assoc of @code{(point . @var{face-symbol})} or
address@hidden(point . @code{defface} attribute list)} and @code{(point
+. end)} elements, in descending order of point value (i.e., from the
+file's end to its beginning).  The map is in reverse order because
+inserting a @samp{<style>} tag (or any other string) at @var{point}
+invalidates the map for all entries with a greater value of point. By
+traversing the map from greatest to least @var{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.
+
address@hidden
+'((64820 . end)
+  (64744 . font-lock-comment-face)
+  (64736 . end)
+  (64722 . font-lock-string-face)
+  (64630 . end)
+  (64623 . font-lock-string-face)
+  (64449 . end)
+  ;; Big similar section elided.  You get the idea.
+  (5459 . end)
+  (5431 . (:inherit font-lock-keyword-face :background "7e7e7e"))
+  (5431 . end)
+  (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))
address@hidden lisp
+
address@hidden table
+
address@hidden Examples
address@hidden Examples
address@hidden Examples
+
+The following is a lump of code I use to fontify source code on my
+site, @url{http://rtfm.etla.org/} (which was the reason, incidentally,
+that Htmlfontify was written in the first place).
+
address@hidden
+(defvar rtfm-section nil)
+
+;; Constructs an appropriate header string to fit in with rtfm's
+;; templating system, based on the file and the stylesheet string
+(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))
+
+;; the footer:
+(defun rtfm-build-page-footer (file) "\nMAIN_CONTENT\n")
+
+(defun rtfm-fontify-buffer (section)
+  (interactive "s section[eg- emacs / p4-blame]: ")
+  (require 'htmlfontify)
+  (let ((hfy-page-header  'rtfm-build-page-header)
+       (hfy-page-footer  'rtfm-build-page-footer)
+       (rtfm-section                     section))
+    (htmlfontify-buffer)
+    )
+  )
+
+;; Here's the function I actually call---it asks me for a section label,
+;; and source and destination directories, and then binds a couple of
+;; customisation variable in a let before calling htmlfontify:
+(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")
+       (auto-mode-alist (append auto-mode-alist
+                                '(("dbi\\(shell\\|gtk\\)$" . cperl-mode)
+                                  ("\\.xpm$"               . c-mode    ))))
+       )
+    (htmlfontify-run-etags srcdir)
+    (htmlfontify-copy-and-link-dir srcdir destdir ".src" ".html")))
address@hidden lisp
+
address@hidden Customisation
address@hidden Customisation
address@hidden variables (customisation)
+
+Htmlfontify provides the following variable and customisation entries:
+
address@hidden @code
address@hidden  AUTOGENERATED BLOCK
+
address@hidden hfy-link-style-fun
address@hidden hfy-link-style-fun
address@hidden
+
+Set this to a function, which will be called with one argument
+(a @address@hidden foo: bar; @address@hidden 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.
+
address@hidden hfy-html-quote-regex
address@hidden hfy-html-quote-regex
address@hidden
+
+Regex to match (with a single back-reference per match) strings in HTML
+which should be quoted with @ref{hfy-html-quote}
+(and @pxref{hfy-html-quote-map}) to make them safe.
+
address@hidden hfy-page-footer
address@hidden hfy-page-footer
address@hidden
+
+As @ref{hfy-page-header}, but generates the output footer
+(and takes only 1 argument, the filename).
+
address@hidden hfy-display-class
address@hidden hfy-display-class
address@hidden
+
+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:
+
address@hidden
+  '(class      color)
+  '(class      grayscale)
+  '(background dark)
+  '(background light)
+  '(type       x-toolkit)
+  '(type       tty)
+  '(type       motif)
+  '(type       lucid)
address@hidden lisp
+
+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:
address@hidden
+  '((class color))
+  '((class grayscale))
+  '((class color grayscale)))
+  '((class color foo))
+  '((type  tty))
+  '((type  tty) (class color))
address@hidden lisp
+and so on.
+
address@hidden hfy-page-header
address@hidden hfy-page-header
address@hidden
+
+Function called with two arguments (the filename relative to the top
+level source directory being etag'd and fontified), and a string containing
+the @samp{<style>@dots{}</style>} text to embed in the document---the string
+returned will be used as the header for the htmlfontified version of
+the source file.
+
+See also: @ref{hfy-page-footer}
+
address@hidden hfy-src-doc-link-style
address@hidden hfy-src-doc-link-style
address@hidden
+
+String to add to the @samp{<style> a} variant of an Htmlfontify CSS class.
+
address@hidden hfy-fast-lock-save
address@hidden hfy-fast-lock-save
address@hidden
+
+Minimum size of a buffer for cached fontification.
+This value is temporarily assigned to @code{fast-lock-minimum-size} during
+html-fontification.
+
+Only buffers more than this can have associated Font Lock cache files saved.
+
+If nil, means cache files are never created.
+
+If a list, each element should be a cons pair of the form
address@hidden(@var{major-mode} . @var{size})}, where @var{major-mode}
+is a symbol or t (meaning the default).  For example:
+
address@hidden
+ ((c-mode     . 25600  )
+  (c++-mode   . 25600  )
+  (rmail-mode . 1048576))
address@hidden lisp
+
+means that the minimum size is 25K for buffers in C or C++ modes, one megabyte
+for buffers in Rmail mode, and size is irrelevant (i.e., no saves) otherwise.
+
address@hidden hfy-split-index
address@hidden hfy-split-index
address@hidden
+
+Whether or not to split the index @ref{hfy-index-file} alphabetically
+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.
+
address@hidden hfy-find-cmd
address@hidden hfy-find-cmd
address@hidden
+
+``find'' command used to harvest a list of files to attempt to fontify.
+
address@hidden hfy-extn
address@hidden hfy-extn
address@hidden
+
+File extension used for output files
+
address@hidden hfy-default-face-def
address@hidden hfy-default-face-def
address@hidden
+
+Fallback @code{defface} specification for the face @code{default}, used
+when @ref{hfy-display-class} has been set (the normal Htmlfontify way of
+extracting potentially non-current face information doesn't necessarily
+work for @code{default}).
+
+For example, I customise this to:
+
address@hidden
+((t :background "black" :foreground "white" :family "misc-fixed"))
address@hidden lisp
+
address@hidden hfy-init-kludge-hooks
address@hidden hfy-init-kludge-hooks
address@hidden
+
+List of functions to call when starting htmlfontify-buffer to do any
+kludging necessary to get highlighting modes to bahave as you want, even
+when not running under a window system.
+
address@hidden hfy-shell-file-name
address@hidden hfy-shell-file-name
address@hidden
+
+Should be set to a Bourne compatible shell, which will be invoked
+for the more complex shell interactions needed by Htmlfontify.
+Currently this is only required/used when using GNU etags, see
address@hidden for details.
+
address@hidden hfy-optimisations
address@hidden hfy-optimisations
address@hidden
+
+Optimisations to turn on.  So far, the following have been implemented:
+
address@hidden @option
address@hidden 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.
+
address@hidden zap-comment-links
+Suppress hyperlinking of tags found in comments.
+
address@hidden zap-string-links
+Suppress hyperlinking of tags found in strings.
+
address@hidden div-wrapper
+Add @samp{<div class="default"> </div>} tags around the fontified body.
+(Some people like this because they cut and paste the html into
+a page with different colors than the fontified code.)
+
address@hidden keep-overlays
+Preserve overlay highlighting (c.f. @code{ediff} or @code{goo-font-lock})
+as well as basic faces.  Can result in extremely verbose highlighting
+if there are many overlays (as is the case with @code{goo-font-lock}).
+
address@hidden table
+
+And the following are planned but not yet available:
+
address@hidden @option
address@hidden kill-context-leak
+Suppress hyperlinking between files highlighted by different modes.
+
address@hidden table
+
+Note: like compiler optimisations, these optimise 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.
+
address@hidden hfy-src-doc-link-unstyle
address@hidden hfy-src-doc-link-unstyle
address@hidden
+
+Regex to remove from the <style> a variant of an Htmlfontify CSS class.
+
address@hidden hfy-link-extn
address@hidden hfy-link-extn
address@hidden
+
+File extension used for href links---useful where the Htmlfontify
+output files are going to be processed again, with a rersulting change
+in file extension.  If @code{nil}, then any code using this should fall back
+to @ref{hfy-extn}.
+
address@hidden hfy-istext-command
address@hidden hfy-istext-command
address@hidden
+
+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 @samp{text} if
+the file is a text file, and a string not containing @samp{text} otherwise.
+
address@hidden hfy-etags-cmd-alist
address@hidden hfy-etags-cmd-alist
address@hidden
+
+An alist of possible shell commands that will generate etags output that
+Htmlfontify can use.  @samp{%s} will be replaced by @ref{hfy-etags-bin}.
+
address@hidden hfy-etags-bin
address@hidden hfy-etags-bin
address@hidden
+
+The location of the 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 @ref{hfy-etags-cmd-alist}.
+
+[As of version 0.17, this requirement has been removed: it should
+  all just work(tm).]
+
address@hidden hfy-etags-cmd
address@hidden hfy-etags-cmd
address@hidden
+
+An etags shell command to run in the source directory to generate a tags
+file for the whole source tree from there on down.  The command should emit
+the etags output on standard output.
+
+Two canned commands are provided---they drive Emacs's etags and
+exuberant-ctags's etags respectively.
+
address@hidden hfy-etag-regex
address@hidden hfy-etag-regex
address@hidden
+
+Regex used to parse an etags entry: must have 3 subexps, corresponding,
+in order, to:
+
address@hidden
+   The tag
+   The line
+   The character (point) at which the tag occurs
address@hidden enumerate
+
address@hidden hfy-index-file
address@hidden hfy-index-file
address@hidden
+
+Name (sans extension) of the index file produced during
+fontification-and-hyperlinking.
+
address@hidden hfy-instance-file
address@hidden hfy-instance-file
address@hidden
+
+Name (sans extension) of the tag usage index file produced during
+fontification-and-hyperlinking.
+
address@hidden hfy-html-quote-map
address@hidden hfy-html-quote-map
address@hidden
+
+An alist of character -> entity mappings used to make the text html-safe.
+
address@hidden /AUTOGENERATED BLOCK
address@hidden table
+
address@hidden Requirements
address@hidden Requirements
address@hidden Requirements, Prerequisites
+
+Htmlfontify has a couple of external requirements:
+
address@hidden @bullet
+
address@hidden
+GNU Emacs 20.7+ or 21.1+
+
+Other versions may work---these have been used successfully by the
+author.  If you intend to use Htmlfontify in batch mode, 21.1+ is
+pretty much required.  The author does not know if XEmacs, NTemacs,
+or J.Random Emacs will run Htmlfontify, but reports/patches/bags of
+money are always welcome.
+
address@hidden
+A copy of etags (exuberant-ctags or GNU etags).  Htmlfontify attempts
+to autodetect the version you have and customise itself accordingly,
+but you should be able to override this.
+
+See: @ref{Customisation}
+
address@hidden
+A copy of find (e.g., GNU find) that provides the @code{-path} predicate.
+
+You may be able to work around this with a suitable clever shell
+command and the customisation entry: @ref{hfy-find-cmd}
+
address@hidden
+A copy of sed (e.g., GNU sed).
+
address@hidden
+A copy of the @code{file} command.
+
address@hidden itemize
+
address@hidden GNU Free Documentation License
address@hidden GNU Free Documentation License
address@hidden doclicense.texi
+
address@hidden Index
address@hidden Index
+
address@hidden @var
address@hidden Concepts
address@hidden cp
+
address@hidden Functions
address@hidden fn
+
address@hidden Variables & Customisation
address@hidden vr
+
address@hidden table
+
address@hidden odd
address@hidden

=== modified file 'doc/misc/makefile.w32-in'
--- a/doc/misc/makefile.w32-in  2013-01-02 16:13:04 +0000
+++ b/doc/misc/makefile.w32-in  2013-01-04 19:22:37 +0000
@@ -56,7 +56,7 @@
                $(infodir)/auth$(INFO_EXT) $(infodir)/eieio$(INFO_EXT) 
$(infodir)/ede$(INFO_EXT) \
                $(infodir)/semantic$(INFO_EXT) $(infodir)/edt$(INFO_EXT) 
$(infodir)/emacs-gnutls$(INFO_EXT) \
                $(infodir)/srecode$(INFO_EXT) $(infodir)/bovine$(INFO_EXT) \
-               $(infodir)/wisent$(INFO_EXT)
+               $(infodir)/wisent$(INFO_EXT) $(infodir)/htmlfontify$(INFO_EXT)
 DVI_TARGETS = calc.dvi cc-mode.dvi cl.dvi dbus.dvi dired-x.dvi \
                ediff.dvi forms.dvi gnus.dvi message.dvi emacs-mime.dvi \
                sieve.dvi pgg.dvi mh-e.dvi \
@@ -68,7 +68,7 @@
                remember.dvi nxml-mode.dvi \
                epa.dvi mairix-el.dvi sasl.dvi auth.dvi eieio.dvi ede.dvi \
                semantic.dvi edt.dvi emacs-gnutls.dvi srecode.dvi bovine.dvi \
-               wisent.dvi
+               wisent.dvi htmlfontify.dvi
 INFOSOURCES = info.texi
 
 # The following rule does not work with all versions of `make'.
@@ -374,6 +374,12 @@
 wisent.dvi: wisent.texi
        $(ENVADD) $(TEXI2DVI) $(srcdir)/wisent.texi
 
+$(infodir)/htmlfontify$(INFO_EXT): htmlfontify.texi
+       $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ htmlfontify.texi
+htmlfontify.dvi: htmlfontify.texi
+       $(ENVADD) $(TEXI2DVI) $(srcdir)/htmlfontify.texi
+
+
 $(INFO_TARGETS): doclicense.texi
 $(DVI_TARGETS): doclicense.texi
 
@@ -406,7 +412,8 @@
                 $(infodir)/eieio* $(infodir)/ede* \
                 $(infodir)/semantic* $(infodir)edt* \
                 $(infodir)/emacs-gnutls* $(infodir)/srecode* \
-                $(infodir)/bovine* $(infodir)/wisent*
+                $(infodir)/bovine* $(infodir)/wisent* \
+                $(infodir)/htmlfontify*
 
 distclean: clean
        - $(DEL) makefile

=== modified file 'info/dir'
--- a/info/dir  2012-12-13 04:47:14 +0000
+++ b/info/dir  2013-01-04 09:43:08 +0000
@@ -74,6 +74,7 @@
 * Flymake: (flymake).           A universal on-the-fly syntax checker.
 * Forms: (forms).               Emacs package for editing data bases
                                   by filling in forms.
+* Htmlfontify: (htmlfontify).   Convert source code to html.
 * PCL-CVS: (pcl-cvs).           Emacs front-end to CVS.
 * RefTeX: (reftex).             Emacs support for LaTeX cross-references
                                   and citations.

=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2013-01-04 08:20:49 +0000
+++ b/lisp/ChangeLog    2013-01-04 19:22:37 +0000
@@ -1,3 +1,21 @@
+2013-01-04  Michael Albinus  <address@hidden>
+
+       * net/tramp-sh.el (tramp-set-file-uid-gid): UID and GID must be
+       non-negative integers.  Otherwise, the default values are used.
+       (tramp-convert-file-attributes): Convert uid and gid to integers.
+
+2013-01-04  Glenn Morris  <address@hidden>
+
+       * term.el (term-handle-colors-array): Ensure face attributes
+       are fully specified, not nil.  (Bug#13337)
+
+       * term.el (term-default-fg-color, term-default-bg-color):
+       Fix custom type.
+
+       * progmodes/etags.el (tags-compression-info-list): Doc fix.
+       (tag-find-file-of-tag-noselect): Check auto-compression-mode
+       rather than 'jka-compr being loaded.  (Bug#13338)
+
 2013-01-04  Wesley Dawson  <address@hidden>  (tiny change)
 
        * icomplete.el (icomplete-completions):

=== modified file 'lisp/net/tramp-sh.el'
--- a/lisp/net/tramp-sh.el      2013-01-03 02:37:57 +0000
+++ b/lisp/net/tramp-sh.el      2013-01-04 19:22:37 +0000
@@ -1452,23 +1452,22 @@
 (defun tramp-set-file-uid-gid (filename &optional uid gid)
   "Set the ownership for FILENAME.
 If UID and GID are provided, these values are used; otherwise uid
-and gid of the corresponding user is taken.  Both parameters must be integers."
+and gid of the corresponding user is taken.  Both parameters must
+be non-negative integers."
   ;; Modern Unices allow chown only for root.  So we might need
   ;; another implementation, see `dired-do-chown'.  OTOH, it is mostly
   ;; working with su(do)? when it is needed, so it shall succeed in
   ;; the majority of cases.
   ;; Don't modify `last-coding-system-used' by accident.
-  (let ((last-coding-system-used last-coding-system-used)
-       (uid (and (numberp uid) (round uid)))
-       (gid (and (numberp gid) (round gid))))
+  (let ((last-coding-system-used last-coding-system-used))
     (if (file-remote-p filename)
        (with-parsed-tramp-file-name filename nil
          (if (and (zerop (user-uid)) (tramp-local-host-p v))
              ;; If we are root on the local host, we can do it directly.
              (tramp-set-file-uid-gid localname uid gid)
-           (let ((uid (or (and (integerp uid) uid)
+           (let ((uid (or (and (natnump uid) uid)
                           (tramp-get-remote-uid v 'integer)))
-                 (gid (or (and (integerp gid) gid)
+                 (gid (or (and (natnump gid) gid)
                           (tramp-get-remote-gid v 'integer))))
              (tramp-send-command
               v (format
@@ -1477,8 +1476,8 @@
 
       ;; We handle also the local part, because there doesn't exist
       ;; `set-file-uid-gid'.  On W32 "chown" might not work.
-      (let ((uid (or (and (integerp uid) uid) (tramp-get-local-uid 'integer)))
-           (gid (or (and (integerp gid) gid) (tramp-get-local-gid 'integer))))
+      (let ((uid (or (and (natnump uid) uid) (tramp-get-local-uid 'integer)))
+           (gid (or (and (natnump gid) gid) (tramp-get-local-gid 'integer))))
        (tramp-compat-call-process
         "chown" nil nil nil
          (format "%d:%d" uid gid) (tramp-shell-quote-argument filename))))))
@@ -4665,7 +4664,7 @@
                  command (buffer-string))))))))
 
 (defun tramp-convert-file-attributes (vec attr)
-  "Convert file-attributes ATTR generated by perl script, stat or ls.
+  "Convert `file-attributes' ATTR generated by perl script, stat or ls.
 Convert file mode bits to string and set virtual device number.
 Return ATTR."
   (when attr
@@ -4673,6 +4672,17 @@
     (when (stringp (car attr))
       (while (string-match tramp-color-escape-sequence-regexp (car attr))
        (setcar attr (replace-match "" nil nil (car attr)))))
+    ;; Convert uid and gid.  Use -1 as indication of unusable value.
+    (when (and (numberp (nth 2 attr)) (< (nth 2 attr) 0))
+      (setcar (nthcdr 2 attr) -1))
+    (when (and (floatp (nth 2 attr))
+               (<= (nth 2 attr) (tramp-compat-most-positive-fixnum)))
+      (setcar (nthcdr 2 attr) (round (nth 2 attr))))
+    (when (and (numberp (nth 3 attr)) (< (nth 3 attr) 0))
+      (setcar (nthcdr 3 attr) -1))
+    (when (and (floatp (nth 3 attr))
+               (<= (nth 3 attr) (tramp-compat-most-positive-fixnum)))
+      (setcar (nthcdr 3 attr) (round (nth 3 attr))))
     ;; Convert last access time.
     (unless (listp (nth 4 attr))
       (setcar (nthcdr 4 attr)

=== modified file 'lisp/progmodes/etags.el'
--- a/lisp/progmodes/etags.el   2013-01-02 16:13:04 +0000
+++ b/lisp/progmodes/etags.el   2013-01-04 19:22:37 +0000
@@ -67,11 +67,8 @@
 ;;;###autoload
 (defcustom tags-compression-info-list
   (purecopy '("" ".Z" ".bz2" ".gz" ".xz" ".tgz"))
-  "List of extensions tried by etags when jka-compr is used.
-An empty string means search the non-compressed file.
-These extensions will be tried only if jka-compr was activated
-\(i.e. via customize of `auto-compression-mode' or by calling the function
-`auto-compression-mode')."
+  "List of extensions tried by etags when `auto-compression-mode' is on.
+An empty string means search the non-compressed file."
   :version "24.1"                      ; added xz
   :type  '(repeat string)
   :group 'etags)
@@ -1182,7 +1179,7 @@
   "Find the right line in the specified FILE."
   ;; If interested in compressed-files, search files with extensions.
   ;; Otherwise, search only the real file.
-  (let* ((buffer-search-extensions (if (featurep 'jka-compr)
+  (let* ((buffer-search-extensions (if auto-compression-mode
                                       tags-compression-info-list
                                     '("")))
         the-buffer
@@ -1206,7 +1203,7 @@
          (setq file-search-extensions (cdr file-search-extensions))
        (setq the-buffer (find-file-noselect (concat file (car 
file-search-extensions))))))
     (if (not the-buffer)
-       (if (featurep 'jka-compr)
+       (if auto-compression-mode
            (error "File %s (with or without extensions %s) not found" file 
tags-compression-info-list)
          (error "File %s not found" file))
       (set-buffer the-buffer))))

=== modified file 'lisp/term.el'
--- a/lisp/term.el      2013-01-02 16:13:04 +0000
+++ b/lisp/term.el      2013-01-04 19:22:37 +0000
@@ -778,14 +778,14 @@
 (defcustom term-default-fg-color nil
   "If non-nil, default color for foreground in Term mode."
   :group 'term
-  :type 'string)
+  :type '(choice (const nil) (string :tag "color")))
 (make-obsolete-variable 'term-default-fg-color "use the face `term' instead."
                         "24.3")
 
 (defcustom term-default-bg-color nil
   "If non-nil, default color for foreground in Term mode."
   :group 'term
-  :type 'string)
+  :type '(choice (const nil) (string :tag "color")))
 (make-obsolete-variable 'term-default-bg-color "use the face `term' instead."
                         "24.3")
 
@@ -3222,18 +3222,24 @@
         (let ((color
                (if term-ansi-current-reverse
                    (face-foreground
-                    (elt ansi-term-color-vector term-ansi-current-color))
+                    (elt ansi-term-color-vector term-ansi-current-color)
+                    nil 'default)
                  (face-background
-                  (elt ansi-term-color-vector term-ansi-current-bg-color)))))
+                  (elt ansi-term-color-vector term-ansi-current-bg-color)
+                  nil 'default))))
           (setq term-current-face
                 (list :background color
                       :foreground color))
           ) ;; No need to bother with anything else if it's invisible.
       (setq term-current-face
             (list :foreground
-                  (face-foreground (elt ansi-term-color-vector 
term-ansi-current-color))
+                  (face-foreground
+                   (elt ansi-term-color-vector term-ansi-current-color)
+                   nil 'default)
                   :background
-                  (face-background (elt ansi-term-color-vector 
term-ansi-current-bg-color))
+                  (face-background
+                   (elt ansi-term-color-vector term-ansi-current-bg-color)
+                   nil 'default)
                   :inverse-video term-ansi-current-reverse))
 
       (when term-ansi-current-bold

=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2013-01-04 02:53:48 +0000
+++ b/src/ChangeLog     2013-01-04 19:22:37 +0000
@@ -1,3 +1,15 @@
+2013-01-04  YAMAMOTO Mitsuharu  <address@hidden>
+
+       * nsterm.m (ns_draw_underwave):
+       * w32term.c (w32_draw_underwave):
+       * xterm.c (x_draw_underwave): Make underwave look more triangular
+       and also degrade gracefully for small fonts.  (Bug#13000)
+
+       * nsterm.m (ns_draw_text_decoration):
+       * w32term.c (x_draw_glyph_string):
+       * xterm.c (x_draw_glyph_string): Don't use previous underline
+       thickness and position if previous underline type is underwave.
+
 2013-01-04  Stefan Monnier  <address@hidden>
 
        * fileio.c (Ffile_acl): Undocument return format.

=== modified file 'src/nsterm.m'
--- a/src/nsterm.m      2013-01-02 16:13:04 +0000
+++ b/src/nsterm.m      2013-01-04 19:22:37 +0000
@@ -2566,7 +2566,7 @@
    Draw a wavy line under glyph string s. The wave fills wave_height
    pixels from y.
 
-                    x          wave_length = 3
+                    x          wave_length = 2
                                  --
                 y    *   *   *   *   *
                      |* * * * * * * * *
@@ -2576,14 +2576,14 @@
 static void
 ns_draw_underwave (struct glyph_string *s, CGFloat width, CGFloat x)
 {
-  int wave_height = 3, wave_length = 3;
+  int wave_height = 3, wave_length = 2;
   int y, dx, dy, odd, xmax;
   NSPoint a, b;
   NSRect waveClip;
 
   dx = wave_length;
   dy = wave_height - 1;
-  y =  s->ybase + 1;
+  y =  s->ybase - wave_height + 3;
   xmax = x + width;
 
   /* Find and set clipping rectangle */
@@ -2592,10 +2592,10 @@
   NSRectClip (waveClip);
 
   /* Draw the waves */
-  a.x = x - ((int)(x) % dx);
+  a.x = x - ((int)(x) % dx) + 0.5;
   b.x = a.x + dx;
   odd = (int)(a.x/dx) % 2;
-  a.y = b.y = y;
+  a.y = b.y = y + 0.5;
 
   if (odd)
     a.y += dy;
@@ -2606,7 +2606,7 @@
     {
       [NSBezierPath strokeLineFromPoint:a toPoint:b];
       a.x = b.x, a.y = b.y;
-      b.x += dx, b.y = y + odd*dy;
+      b.x += dx, b.y = y + 0.5 + odd*dy;
       odd = !odd;
     }
 
@@ -2646,6 +2646,7 @@
 
           /* If the prev was underlined, match its appearance. */
           if (s->prev && s->prev->face->underline_p
+             && s->prev->face->underline_type == FACE_UNDER_LINE
               && s->prev->underline_thickness > 0)
             {
               thickness = s->prev->underline_thickness;

=== modified file 'src/w32term.c'
--- a/src/w32term.c     2013-01-02 16:13:04 +0000
+++ b/src/w32term.c     2013-01-04 19:22:37 +0000
@@ -358,7 +358,7 @@
 void
 w32_draw_underwave (struct glyph_string *s, COLORREF color)
 {
-  int wave_height = 2, wave_length = 3;
+  int wave_height = 3, wave_length = 2;
   int dx, dy, x0, y0, width, x1, y1, x2, y2, odd, xmax;
   XRectangle wave_clip, string_clip, final_clip;
   RECT w32_final_clip, w32_string_clip;
@@ -367,7 +367,7 @@
   dx = wave_length;
   dy = wave_height - 1;
   x0 = s->x;
-  y0 = s->ybase + 1;
+  y0 = s->ybase - wave_height + 3;
   width = s->width;
   xmax = x0 + width;
 
@@ -2456,7 +2456,8 @@
               unsigned long thickness, position;
               int y;
 
-              if (s->prev && s->prev->face->underline_p)
+              if (s->prev && s->prev->face->underline_p
+                 && s->prev->face->underline_type == FACE_UNDER_LINE)
                 {
                   /* We use the same underline style as the previous one.  */
                   thickness = s->prev->underline_thickness;

=== modified file 'src/xterm.c'
--- a/src/xterm.c       2013-01-02 16:13:04 +0000
+++ b/src/xterm.c       2013-01-04 19:22:37 +0000
@@ -2631,14 +2631,14 @@
 static void
 x_draw_underwave (struct glyph_string *s)
 {
-  int wave_height = 2, wave_length = 3;
+  int wave_height = 3, wave_length = 2;
   int dx, dy, x0, y0, width, x1, y1, x2, y2, odd, xmax;
   XRectangle wave_clip, string_clip, final_clip;
 
   dx = wave_length;
   dy = wave_height - 1;
   x0 = s->x;
-  y0 = s->ybase + 1;
+  y0 = s->ybase - wave_height + 3;
   width = s->width;
   xmax = x0 + width;
 
@@ -2800,7 +2800,8 @@
               unsigned long thickness, position;
               int y;
 
-              if (s->prev && s->prev->face->underline_p)
+              if (s->prev && s->prev->face->underline_p
+                 && s->prev->face->underline_type == FACE_UNDER_LINE)
                 {
                   /* We use the same underline style as the previous one.  */
                   thickness = s->prev->underline_thickness;


reply via email to

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