xref: /vim-8.2.3635/runtime/plugin/tohtml.vim (revision 8e5af3e5)
1" Vim plugin for converting a syntax highlighted file to HTML.
2" Maintainer: Ben Fritz <[email protected]>
3" Last Change: 2011 Apr 09
4"
5" The core of the code is in $VIMRUNTIME/autoload/tohtml.vim and
6" $VIMRUNTIME/syntax/2html.vim
7"
8" TODO:
9"   * Options for generating the CSS in external style sheets. New :TOcss
10"     command to convert the current color scheme into a (mostly) generic CSS
11"     stylesheet which can be re-used. Alternate stylesheet support?
12"   * Pull in code from http://www.vim.org/scripts/script.php?script_id=3113 :
13"	- listchars support
14"	- full-line background highlight
15"	- other?
16"   * Font auto-detection similar to
17"     http://www.vim.org/scripts/script.php?script_id=2384
18"   * Explicitly trigger IE8+ Standards Mode?
19"   * Make it so deleted lines in a diff don't create side-scrolling
20"   * Restore open/closed folds and cursor position after processing each file
21"     with option not to restore for speed increase
22"   * Undercurl support via dotted bottom border?
23"   * Add extra meta info (generation time, etc.)?
24"   * Tidy up so we can use strict doctype in even more situations
25"   * Implementation detail: add threshold for writing the lines to the html
26"     buffer before we're done (5000 or so lines should do it)
27"   * TODO comments for code cleanup scattered throughout
28"
29"
30" Changelog:
31"   7.3_v9 (this version): Add html_pre_wrap option active with html_use_css and
32"                          without html_no_pre, default value same as 'wrap'
33"                          option, (Andy Spencer). Don't use 'fileencoding' for
34"                          converted document encoding if 'buftype' indicates a
35"                          special buffer which isn't written.
36"   7.3_v8 (85c5a72551e2): Add html_expand_tabs option to allow leaving tab
37"                          characters in generated output (Andy Spencer). Escape
38"                          text that looks like a modeline so Vim doesn't use
39"                          anything in the converted HTML as a modeline.
40"                          Bugfixes: Fix folding when a fold starts before the
41"                          conversion range. Remove fold column when there are
42"                          no folds.
43"   7.3_v7 (840c3cadb842): see betas released on vim_dev below:
44"                7.3_v7b3: Fixed bug, convert Unicode to UTF-8 all the way.
45"                7.3_v7b2: Remove automatic detection of encodings that are not
46"                          supported by all major browsers according to
47"                          http://wiki.whatwg.org/wiki/Web_Encodings and convert
48"                          to UTF-8 for all Unicode encodings. Make HTML
49"                          encoding to Vim encoding detection be
50"                          case-insensitive for built-in pairs.
51"                7.3_v7b1: Remove use of setwinvar() function which cannot be
52"                          called in restricted mode (Andy Spencer). Use
53"                          'fencoding' instead of 'encoding' to determine by
54"                          charset, and make sure the 'fenc' of the generated
55"                          file matches its indicated charset. Add charsets for
56"                          all of Vim's natively supported encodings.
57"   7.3_v6 (0d3f0e3d289b): Really fix bug with 'nowrapscan', 'magic' and other
58"                          user settings interfering with diff mode generation,
59"                          trailing whitespace (e.g. line number column) when
60"                          using html_no_pre, and bugs when using
61"                          html_hover_unfold.
62"   7.3_v5 ( unreleased ): Fix bug with 'nowrapscan' and also with out-of-sync
63"                          folds in diff mode when first line was folded.
64"   7.3_v4 (7e008c174cc3): Bugfixes, especially for xhtml markup, and diff mode.
65"   7.3_v3 (a29075150aee): Refactor option handling and make html_use_css
66"                          default to true when not set to anything. Use strict
67"                          doctypes where possible. Rename use_xhtml option to
68"                          html_use_xhtml for consistency. Use .xhtml extension
69"                          when using this option. Add meta tag for settings.
70"   7.3_v2 (80229a724a11): Fix syntax highlighting in diff mode to use both the
71"                          diff colors and the normal syntax colors
72"   7.3_v1 (e7751177126b): Add conceal support and meta tags in output
73"   Pre-v1 baseline: Mercurial changeset 3c9324c0800e
74
75if exists('g:loaded_2html_plugin')
76  finish
77endif
78let g:loaded_2html_plugin = 'vim7.3_v9'
79
80" Define the :TOhtml command when:
81" - 'compatible' is not set
82" - this plugin was not already loaded
83" - user commands are available.
84if !&cp && !exists(":TOhtml") && has("user_commands")
85  command -range=% TOhtml :call tohtml#Convert2HTML(<line1>, <line2>)
86endif
87
88" Make sure any patches will probably use consistent indent
89"   vim: ts=8 sw=2 sts=2 noet
90