| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | " Vim plugin for converting a syntax highlighted file to HTML. | 
					
						
							| 
									
										
										
										
											2010-07-16 20:35:36 +02:00
										 |  |  | " Maintainer: Ben Fritz <fritzophrenic@gmail.com> | 
					
						
							| 
									
										
										
										
											2013-07-09 15:44:17 +02:00
										 |  |  | " Last Change: 2013 Jul 08 | 
					
						
							| 
									
										
										
										
											2010-07-11 22:38:52 +02:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2010-07-16 20:35:36 +02:00
										 |  |  | " The core of the code is in $VIMRUNTIME/autoload/tohtml.vim and | 
					
						
							|  |  |  | " $VIMRUNTIME/syntax/2html.vim | 
					
						
							| 
									
										
										
										
											2010-07-29 20:43:36 +02:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2012-07-25 17:49:10 +02:00
										 |  |  | " TODO: {{{ | 
					
						
							| 
									
										
										
										
											2013-06-01 14:50:56 +02:00
										 |  |  | "   * Options for generating the CSS in external style sheets. New :TOcss | 
					
						
							|  |  |  | "     command to convert the current color scheme into a (mostly) generic CSS | 
					
						
							|  |  |  | "     stylesheet which can be re-used. Alternate stylesheet support? Good start | 
					
						
							|  |  |  | "     by Erik Falor | 
					
						
							|  |  |  | "     ( https://groups.google.com/d/topic/vim_use/7XTmC4D22dU/discussion ). | 
					
						
							|  |  |  | "   * Add optional argument to :TOhtml command to specify mode (gui, cterm, | 
					
						
							|  |  |  | "     term) to use for the styling. Suggestion by "nacitar". | 
					
						
							|  |  |  | "   * Add way to override or specify which RGB colors map to the color numbers | 
					
						
							|  |  |  | "     in cterm. Get better defaults than just guessing? Suggestion by "nacitar". | 
					
						
							|  |  |  | "   * Disable filetype detection until after all processing is done. | 
					
						
							|  |  |  | "   * Add option for not generating the hyperlink on stuff that looks like a | 
					
						
							|  |  |  | "     URL? Or just color the link to fit with the colorscheme (and only special | 
					
						
							|  |  |  | "     when hovering)? | 
					
						
							|  |  |  | "   * Bug: Opera does not allow printing more than one page if uncopyable | 
					
						
							|  |  |  | "     regions is turned on. Possible solution: Add normal text line numbers with | 
					
						
							|  |  |  | "     display:none, set to display:inline for print style sheets, and hide | 
					
						
							|  |  |  | "     <input> elements for print, to allow Opera printing multiple pages (and | 
					
						
							|  |  |  | "     other uncopyable areas?). May need to make the new text invisible to IE | 
					
						
							|  |  |  | "     with conditional comments to prevent copying it, IE for some reason likes | 
					
						
							|  |  |  | "     to copy hidden text. Other browsers too? | 
					
						
							| 
									
										
										
										
											2012-07-25 17:49:10 +02:00
										 |  |  | "   * Bug: still a 1px gap throughout the fold column when html_prevent_copy is | 
					
						
							|  |  |  | "     "fn" in some browsers. Specifically, in Chromium on Ubuntu (but not Chrome | 
					
						
							|  |  |  | "     on Windows). Perhaps it is font related? | 
					
						
							|  |  |  | "   * Bug: still some gaps in the fold column when html_prevent_copy contains | 
					
						
							|  |  |  | "     'd' and showing the whole diff (observed in multiple browsers). Only gaps | 
					
						
							|  |  |  | "     on diff lines though. | 
					
						
							|  |  |  | "   * Undercurl support via CSS3, with fallback to dotted or something: | 
					
						
							|  |  |  | "	https://groups.google.com/d/topic/vim_use/BzXA6He1pHg/discussion | 
					
						
							|  |  |  | "   * Redo updates for modified default foldtext (v11) when/if the patch is | 
					
						
							|  |  |  | "     accepted to modify it. | 
					
						
							|  |  |  | "   * Test case +diff_one_file-dynamic_folds+expand_tabs-hover_unfold | 
					
						
							|  |  |  | "		+ignore_conceal-ignore_folding+no_foldcolumn+no_pre+no_progress | 
					
						
							|  |  |  | "		+number_lines-pre_wrap-use_css+use_xhtml+whole_filler.xhtml | 
					
						
							| 
									
										
										
										
											2013-06-01 14:50:56 +02:00
										 |  |  | "     does not show the whole diff filler as it is supposed to? | 
					
						
							| 
									
										
										
										
											2012-07-25 17:49:10 +02:00
										 |  |  | "   * Bug: when 'isprint' is wrong for the current encoding, will generate | 
					
						
							|  |  |  | "     invalid content. Can/should anything be done about this? Maybe a separate | 
					
						
							|  |  |  | "     plugin to correct 'isprint' based on encoding? | 
					
						
							|  |  |  | "   * Check to see if the windows-125\d encodings actually work in Unix without | 
					
						
							|  |  |  | "     the 8bit- prefix. Add prefix to autoload dictionaries for Unix if not. | 
					
						
							|  |  |  | "   * Font auto-detection similar to | 
					
						
							|  |  |  | "     http://www.vim.org/scripts/script.php?script_id=2384 but for a variety of | 
					
						
							|  |  |  | "     platforms. | 
					
						
							|  |  |  | "   * Error thrown when sourcing 2html.vim directly when plugins are not loaded. | 
					
						
							| 
									
										
										
										
											2011-04-28 19:02:44 +02:00
										 |  |  | "   * Pull in code from http://www.vim.org/scripts/script.php?script_id=3113 : | 
					
						
							|  |  |  | "	- listchars support | 
					
						
							|  |  |  | "	- full-line background highlight | 
					
						
							|  |  |  | "	- other? | 
					
						
							| 
									
										
										
										
											2012-07-25 17:49:10 +02:00
										 |  |  | "   * Make it so deleted lines in a diff don't create side-scrolling (get it | 
					
						
							|  |  |  | "     free with full-line background highlight above). | 
					
						
							| 
									
										
										
										
											2010-08-13 11:30:02 +02:00
										 |  |  | "   * Restore open/closed folds and cursor position after processing each file | 
					
						
							| 
									
										
										
										
											2012-07-25 17:49:10 +02:00
										 |  |  | "     with option not to restore for speed increase. | 
					
						
							| 
									
										
										
										
											2011-01-08 16:06:37 +01:00
										 |  |  | "   * Add extra meta info (generation time, etc.)? | 
					
						
							|  |  |  | "   * Tidy up so we can use strict doctype in even more situations | 
					
						
							| 
									
										
										
										
											2010-08-13 11:30:02 +02:00
										 |  |  | "   * Implementation detail: add threshold for writing the lines to the html | 
					
						
							|  |  |  | "     buffer before we're done (5000 or so lines should do it) | 
					
						
							| 
									
										
										
										
											2010-07-29 20:43:36 +02:00
										 |  |  | "   * TODO comments for code cleanup scattered throughout | 
					
						
							| 
									
										
										
										
											2012-07-25 17:49:10 +02:00
										 |  |  | "}}} | 
					
						
							| 
									
										
										
										
											2010-07-11 22:38:52 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-25 12:46:44 +02:00
										 |  |  | if exists('g:loaded_2html_plugin') | 
					
						
							|  |  |  |   finish | 
					
						
							|  |  |  | endif | 
					
						
							| 
									
										
										
										
											2013-07-09 15:44:17 +02:00
										 |  |  | let g:loaded_2html_plugin = 'vim7.4_v1' | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | " | 
					
						
							| 
									
										
										
										
											2012-07-25 17:49:10 +02:00
										 |  |  | " Changelog: {{{ | 
					
						
							| 
									
										
										
										
											2013-07-09 15:44:17 +02:00
										 |  |  | "   7.4_v1  (this version): Fix modeline mangling for new "Vim:" format, and | 
					
						
							|  |  |  | "			    also for version-specific modelines like "vim>703:". | 
					
						
							| 
									
										
										
										
											2012-07-25 17:49:10 +02:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2013-07-09 15:44:17 +02:00
										 |  |  | "   7.3 updates: {{{ | 
					
						
							|  |  |  | "   7.3_v14 (ad6996a23e3e): Allow suppressing line number anchors using | 
					
						
							| 
									
										
										
										
											2013-06-28 18:44:48 +02:00
										 |  |  | "			    g:html_line_ids=0. Allow customizing | 
					
						
							|  |  |  | "			    important IDs (like line IDs and fold IDs) using | 
					
						
							|  |  |  | "			    g:html_id_expr evalutated when the buffer conversion | 
					
						
							|  |  |  | "			    is started. | 
					
						
							| 
									
										
										
										
											2013-06-26 13:28:14 +02:00
										 |  |  | "   7.3_v13 (2eb30f341e8d): Keep foldmethod at manual in the generated file and | 
					
						
							| 
									
										
										
										
											2013-06-01 14:50:56 +02:00
										 |  |  | "			    insert modeline to set it to manual. | 
					
						
							|  |  |  | "			    Fix bug: diff mode with 2 unsaved buffers creates a | 
					
						
							|  |  |  | "			    duplicate of one buffer instead of including both. | 
					
						
							|  |  |  | "			    Add anchors to each line so you can put '#L123' | 
					
						
							|  |  |  | "			    or '#123' at the end of the URL to jump to line 123 | 
					
						
							|  |  |  | "			    (idea by Andy Spencer). Add javascript to open folds | 
					
						
							|  |  |  | "			    to show the anchor being jumped to if it is hidden. | 
					
						
							|  |  |  | "			    Fix XML validation error: &nsbp; not part of XML. | 
					
						
							|  |  |  | "			    Allow TOhtml to chain together with other commands | 
					
						
							|  |  |  | "			    using |. | 
					
						
							|  |  |  | "   7.3_v12 (9910cbff5f16): Fix modeline mangling to also work for when multiple | 
					
						
							|  |  |  | "			    highlight groups make up the start-of-modeline text. | 
					
						
							|  |  |  | "			    Improve render time of page with uncopyable regions | 
					
						
							|  |  |  | "			    by not using one-input-per-char. Change name of | 
					
						
							|  |  |  | "			    uncopyable option from html_unselectable to | 
					
						
							|  |  |  | "			    html_prevent_copy. Added html_no_invalid option and | 
					
						
							|  |  |  | "			    default to inserting invalid markup for uncopyable | 
					
						
							|  |  |  | "			    regions to prevent MS Word from pasting undeletable | 
					
						
							|  |  |  | "			    <input> elements. Fix 'cpo' handling (Thilo Six). | 
					
						
							|  |  |  | "		 7.3_v12b1: Add html_unselectable option. Rework logic to | 
					
						
							|  |  |  | "			    eliminate post-processing substitute commands in | 
					
						
							|  |  |  | "			    favor of doing the work up front. Remove unnecessary | 
					
						
							|  |  |  | "			    special treatment of 'LineNr' highlight group. Minor | 
					
						
							|  |  |  | "			    speed improvements. Fix modeline mangling in | 
					
						
							|  |  |  | "			    generated output so it works for text in the first | 
					
						
							|  |  |  | "			    column. Fix missing line number and fold column in | 
					
						
							|  |  |  | "			    diff filler lines. Fix that some fonts have a 1px | 
					
						
							|  |  |  | "			    gap (using a dirty hack, improvements welcome). Add | 
					
						
							|  |  |  | "			    "colorscheme" meta tag. Does NOT include support for | 
					
						
							|  |  |  | "			    the new default foldtext added in v11, as the patch | 
					
						
							|  |  |  | "			    adding it has not yet been included in Vim. | 
					
						
							| 
									
										
										
										
											2012-07-25 17:49:10 +02:00
										 |  |  | "   7.3_v11 ( unreleased ): Support new default foldtext from patch by Christian | 
					
						
							| 
									
										
										
										
											2013-06-01 14:50:56 +02:00
										 |  |  | "			    Brabandt in | 
					
						
							|  |  |  | "			    http://groups.google.com/d/topic/vim_dev/B6FSGfq9VoI/discussion. | 
					
						
							|  |  |  | "			    This patch has not yet been included in Vim, thus | 
					
						
							|  |  |  | "			    these changes are removed in the next version. | 
					
						
							| 
									
										
										
										
											2012-07-25 17:49:10 +02:00
										 |  |  | "   7.3_v10 (fd09a9c8468e): Fix error E684 when converting a range wholly inside | 
					
						
							| 
									
										
										
										
											2013-06-01 14:50:56 +02:00
										 |  |  | "			    multiple nested folds with dynamic folding on. | 
					
						
							|  |  |  | "			    Also fix problem with foldtext in this situation. | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  | "   7.3_v9  (0877b8d6370e): Add html_pre_wrap option active with html_use_css | 
					
						
							| 
									
										
										
										
											2013-06-01 14:50:56 +02:00
										 |  |  | "			    and without html_no_pre, default value same as | 
					
						
							|  |  |  | "			    'wrap' option, (Andy Spencer). Don't use | 
					
						
							|  |  |  | "			    'fileencoding' for converted document encoding if | 
					
						
							|  |  |  | "			    'buftype' indicates a special buffer which isn't | 
					
						
							|  |  |  | "			    written. | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  | "   7.3_v8  (85c5a72551e2): Add html_expand_tabs option to allow leaving tab | 
					
						
							| 
									
										
										
										
											2013-06-01 14:50:56 +02:00
										 |  |  | "			    characters in generated output (Andy Spencer). | 
					
						
							|  |  |  | "			    Escape text that looks like a modeline so Vim | 
					
						
							|  |  |  | "			    doesn't use anything in the converted HTML as a | 
					
						
							|  |  |  | "			    modeline. Bugfixes: Fix folding when a fold starts | 
					
						
							|  |  |  | "			    before the conversion range. Remove fold column when | 
					
						
							|  |  |  | "			    there are no folds. | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  | "   7.3_v7  (840c3cadb842): see betas released on vim_dev below: | 
					
						
							| 
									
										
										
										
											2013-06-01 14:50:56 +02:00
										 |  |  | "		  7.3_v7b3: Fixed bug, convert Unicode to UTF-8 all the way. | 
					
						
							|  |  |  | "		  7.3_v7b2: Remove automatic detection of encodings that are not | 
					
						
							|  |  |  | "			    supported by all major browsers according to | 
					
						
							|  |  |  | "			    http://wiki.whatwg.org/wiki/Web_Encodings and | 
					
						
							|  |  |  | "			    convert to UTF-8 for all Unicode encodings. Make | 
					
						
							|  |  |  | "			    HTML encoding to Vim encoding detection be | 
					
						
							|  |  |  | "			    case-insensitive for built-in pairs. | 
					
						
							|  |  |  | "		  7.3_v7b1: Remove use of setwinvar() function which cannot be | 
					
						
							|  |  |  | "			    called in restricted mode (Andy Spencer). Use | 
					
						
							|  |  |  | "			    'fencoding' instead of 'encoding' to determine by | 
					
						
							|  |  |  | "			    charset, and make sure the 'fenc' of the generated | 
					
						
							|  |  |  | "			    file matches its indicated charset. Add charsets for | 
					
						
							|  |  |  | "			    all of Vim's natively supported encodings. | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  | "   7.3_v6  (0d3f0e3d289b): Really fix bug with 'nowrapscan', 'magic' and other | 
					
						
							| 
									
										
										
										
											2013-06-01 14:50:56 +02:00
										 |  |  | "			    user settings interfering with diff mode generation, | 
					
						
							|  |  |  | "			    trailing whitespace (e.g. line number column) when | 
					
						
							|  |  |  | "			    using html_no_pre, and bugs when using | 
					
						
							|  |  |  | "			    html_hover_unfold. | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  | "   7.3_v5  ( unreleased ): Fix bug with 'nowrapscan' and also with out-of-sync | 
					
						
							| 
									
										
										
										
											2013-06-01 14:50:56 +02:00
										 |  |  | "			    folds in diff mode when first line was folded. | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  | "   7.3_v4  (7e008c174cc3): Bugfixes, especially for xhtml markup, and diff mode | 
					
						
							|  |  |  | "   7.3_v3  (a29075150aee): Refactor option handling and make html_use_css | 
					
						
							| 
									
										
										
										
											2013-06-01 14:50:56 +02:00
										 |  |  | "			    default to true when not set to anything. Use strict | 
					
						
							|  |  |  | "			    doctypes where possible. Rename use_xhtml option to | 
					
						
							|  |  |  | "			    html_use_xhtml for consistency. Use .xhtml extension | 
					
						
							|  |  |  | "			    when using this option. Add meta tag for settings. | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  | "   7.3_v2  (80229a724a11): Fix syntax highlighting in diff mode to use both the | 
					
						
							| 
									
										
										
										
											2013-06-01 14:50:56 +02:00
										 |  |  | "			    diff colors and the normal syntax colors | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  | "   7.3_v1  (e7751177126b): Add conceal support and meta tags in output | 
					
						
							|  |  |  | "   Pre-v1 baseline: Mercurial changeset 3c9324c0800e | 
					
						
							| 
									
										
										
										
											2012-07-25 17:49:10 +02:00
										 |  |  | "}}} | 
					
						
							| 
									
										
										
										
											2013-07-09 15:44:17 +02:00
										 |  |  | "}}} | 
					
						
							| 
									
										
										
										
											2010-07-25 12:46:44 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-11 22:38:52 +02:00
										 |  |  | " Define the :TOhtml command when: | 
					
						
							|  |  |  | " - 'compatible' is not set | 
					
						
							|  |  |  | " - this plugin was not already loaded | 
					
						
							| 
									
										
										
										
											2012-07-25 17:49:10 +02:00
										 |  |  | " - user commands are available. {{{ | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | if !&cp && !exists(":TOhtml") && has("user_commands") | 
					
						
							| 
									
										
										
										
											2013-06-01 14:50:56 +02:00
										 |  |  |   command -range=% -bar TOhtml :call tohtml#Convert2HTML(<line1>, <line2>) | 
					
						
							| 
									
										
										
										
											2012-07-25 17:49:10 +02:00
										 |  |  | endif "}}} | 
					
						
							| 
									
										
										
										
											2010-07-16 20:35:36 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | " Make sure any patches will probably use consistent indent | 
					
						
							| 
									
										
										
										
											2012-07-25 17:49:10 +02:00
										 |  |  | "   vim: ts=8 sw=2 sts=2 noet fdm=marker |