diff options
author | Bram Moolenaar <Bram@vim.org> | 2012-07-25 17:49:10 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2012-07-25 17:49:10 +0200 |
commit | 6c35beaa11d38fc0c37a3d209295772313b12003 (patch) | |
tree | 811b970e87072e1901c554866c161e00064a4784 | |
parent | 848f87633a4a89311838f0d00e12282f8e2e3003 (diff) |
Updated runtime files.
-rw-r--r-- | runtime/autoload/tohtml.vim | 127 | ||||
-rw-r--r-- | runtime/compiler/mcs.vim | 10 | ||||
-rw-r--r-- | runtime/doc/index.txt | 4 | ||||
-rw-r--r-- | runtime/doc/motion.txt | 7 | ||||
-rw-r--r-- | runtime/doc/pi_gzip.txt | 4 | ||||
-rw-r--r-- | runtime/doc/syntax.txt | 432 | ||||
-rw-r--r-- | runtime/doc/tags | 30 | ||||
-rw-r--r-- | runtime/doc/todo.txt | 29 | ||||
-rw-r--r-- | runtime/doc/visual.txt | 2 | ||||
-rw-r--r-- | runtime/indent/xml.vim | 12 | ||||
-rw-r--r-- | runtime/keymap/belarusian-jcuken.vim | 87 | ||||
-rw-r--r-- | runtime/mswin.vim | 4 | ||||
-rw-r--r-- | runtime/plugin/tohtml.vim | 86 | ||||
-rw-r--r-- | runtime/syntax/2html.vim | 818 | ||||
-rw-r--r-- | runtime/syntax/help.vim | 6 | ||||
-rw-r--r-- | runtime/syntax/svn.vim | 9 | ||||
-rwxr-xr-x | runtime/tools/efm_perl.pl | 2 |
17 files changed, 1293 insertions, 376 deletions
diff --git a/runtime/autoload/tohtml.vim b/runtime/autoload/tohtml.vim index ad33cee1da..2e9021a48e 100644 --- a/runtime/autoload/tohtml.vim +++ b/runtime/autoload/tohtml.vim @@ -1,6 +1,6 @@ " Vim autoload file for the tohtml plugin. " Maintainer: Ben Fritz <fritzophrenic@gmail.com> -" Last Change: 2011 Apr 05 +" Last Change: 2012 Jun 30 " " Additional contributors: " @@ -11,7 +11,7 @@ " this file uses line continuations let s:cpo_sav = &cpo -set cpo-=C +set cpo&vim " Automatically find charsets from all encodings supported natively by Vim. With " the 8bit- and 2byte- prefixes, Vim can actually support more encodings than @@ -391,12 +391,25 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{ call add(html, '<meta name="plugin-version" content="'.g:loaded_2html_plugin.'"'.tag_close) call add(html, '<meta name="settings" content="'. \ join(filter(keys(s:settings),'s:settings[v:val]'),','). + \ ',prevent_copy='.s:settings.prevent_copy. \ '"'.tag_close) + call add(html, '<meta name="colorscheme" content="'. + \ (exists('g:colors_name') + \ ? g:colors_name + \ : 'none'). '"'.tag_close) call add(html, '</head>') let body_line_num = len(html) - call add(html, '<body>') - call add(html, '<table border="1" width="100%">') + if !empty(s:settings.prevent_copy) + call add(html, "<body onload='FixCharWidth();'>") + call add(html, "<!-- hidden divs used by javascript to get the width of a char -->") + call add(html, "<div id='oneCharWidth'>0</div>") + call add(html, "<div id='oneInputWidth'><input size='1' value='0'".tag_close."</div>") + call add(html, "<div id='oneEmWidth' style='width: 1em;'></div>") + else + call add(html, '<body>') + endif + call add(html, "<table border='1' width='100%' id='vimCodeElement'>") call add(html, '<tr>') for buf in a:win_list @@ -454,16 +467,19 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{ let insert_index = diff_style_start endif - " Delete those parts that are not needed so - " we can include the rest into the resulting table - 1,/^<body/d_ + " Delete those parts that are not needed so we can include the rest into the + " resulting table. + 1,/^<body.*\%(\n<!--.*-->\_s\+.*id='oneCharWidth'.*\_s\+.*id='oneInputWidth'.*\_s\+.*id='oneEmWidth'\)\?\zs/d_ $ ?</body>?,$d_ let temp = getline(1,'$') + " clean out id on the main content container because we already set it on + " the table + let temp[0] = substitute(temp[0], " id='vimCodeElement'", "", "") " undo deletion of start and end part " so we can later save the file as valid html " TODO: restore using grabbed lines if undolevel is 1? - normal 2u + normal! 2u if s:settings.use_css call add(html, '<td valign="top"><div>') elseif s:settings.use_xhtml @@ -520,12 +536,47 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{ 1 let style_start = search('^</head>')-1 + " add required javascript in reverse order so we can just call append again + " and again without adjusting {{{ + + " insert script closing tag if any javascript is needed + if s:settings.dynamic_folds || !empty(s:settings.prevent_copy) + call append(style_start, [ + \ '', + \ s:settings.use_xhtml ? '//]]>' : '-->', + \ "</script>" + \ ]) + endif + + " insert script which corrects the size of small input elements in + " prevent_copy mode. See 2html.vim for details on why this is needed and how + " it works. + if !empty(s:settings.prevent_copy) + call append(style_start, [ + \ '', + \ '/* simulate a "ch" unit by asking the browser how big a zero character is */', + \ 'function FixCharWidth() {', + \ ' /* get the hidden element which gives the width of a single character */', + \ ' var goodWidth = document.getElementById("oneCharWidth").clientWidth;', + \ ' /* get all input elements, we''ll filter on class later */', + \ ' var inputTags = document.getElementsByTagName("input");', + \ ' var ratio = 5;', + \ ' var inputWidth = document.getElementById("oneInputWidth").clientWidth;', + \ ' var emWidth = document.getElementById("oneEmWidth").clientWidth;', + \ ' if (inputWidth > goodWidth) {', + \ ' while (ratio < 100*goodWidth/emWidth && ratio < 100) {', + \ ' ratio += 5;', + \ ' }', + \ ' document.getElementById("vimCodeElement").className = "em"+ratio;', + \ ' }', + \ '}' + \ ]) + endif + " Insert javascript to toggle matching folds open and closed in all windows, - " if dynamic folding is active. {{{ + " if dynamic folding is active. if s:settings.dynamic_folds call append(style_start, [ - \ "<script type='text/javascript'>", - \ s:settings.use_xhtml ? '//<![CDATA[' : " <!--", \ " function toggleFold(objID)", \ " {", \ " for (win_num = 1; win_num <= ".len(a:buf_list)."; win_num++)", @@ -542,9 +593,14 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{ \ " }", \ " }", \ " }", - \ s:settings.use_xhtml ? '//]]>' : " -->", - \ "</script>" \ ]) + endif + + " insert script tag if any javascript is needed + if s:settings.dynamic_folds || s:settings.prevent_copy != "" + call append(style_start, [ + \ "<script type='text/javascript'>", + \ s:settings.use_xhtml ? '//<![CDATA[' : "<!--"]) endif "}}} " Insert styles from all the generated html documents and additional styles @@ -609,9 +665,10 @@ func! tohtml#GetUserSettings() "{{{ call tohtml#GetOption(user_settings, 'ignore_conceal', 0 ) call tohtml#GetOption(user_settings, 'ignore_folding', 0 ) call tohtml#GetOption(user_settings, 'dynamic_folds', 0 ) - call tohtml#GetOption(user_settings, 'no_foldcolumn', 0 ) + call tohtml#GetOption(user_settings, 'no_foldcolumn', user_settings.ignore_folding) call tohtml#GetOption(user_settings, 'hover_unfold', 0 ) call tohtml#GetOption(user_settings, 'no_pre', 0 ) + call tohtml#GetOption(user_settings, 'no_invalid', 0 ) call tohtml#GetOption(user_settings, 'whole_filler', 0 ) call tohtml#GetOption(user_settings, 'use_xhtml', 0 ) " }}} @@ -637,6 +694,8 @@ func! tohtml#GetUserSettings() "{{{ " dynamic folding implies css if user_settings.dynamic_folds let user_settings.use_css = 1 + else + let user_settings.no_foldcolumn = 1 " won't do anything but for consistency and for the test suite endif " if we're not using CSS we cannot use a pre section because <font> tags @@ -663,6 +722,7 @@ func! tohtml#GetUserSettings() "{{{ endif " }}} + " textual options if exists("g:html_use_encoding") "{{{ " user specified the desired MIME charset, figure out proper " 'fileencoding' from it or warn the user if we cannot @@ -705,6 +765,45 @@ func! tohtml#GetUserSettings() "{{{ endif endif "}}} + " Default to making nothing uncopyable, because we default to + " not-standards way of doing things, and also because Microsoft Word and + " others paste the <input> elements anyway. + " + " html_prevent_copy only has an effect when using CSS. + " + " All options: + " f - fold column + " n - line numbers (also within fold text) + " t - fold text + " d - diff filler + " c - concealed text (reserved future) + " l - listchars (reserved possible future) + " s - signs (reserved possible future) + " + " Normal text is always selectable. + let user_settings.prevent_copy = "" + if user_settings.use_css + if exists("g:html_prevent_copy") + if user_settings.dynamic_folds && !user_settings.no_foldcolumn && g:html_prevent_copy =~# 'f' + let user_settings.prevent_copy .= 'f' + endif + if user_settings.number_lines && g:html_prevent_copy =~# 'n' + let user_settings.prevent_copy .= 'n' + endif + if &diff && g:html_prevent_copy =~# 'd' + let user_settings.prevent_copy .= 'd' + endif + if !user_settings.ignore_folding && g:html_prevent_copy =~# 't' + let user_settings.prevent_copy .= 't' + endif + else + let user_settings.prevent_copy = "" + endif + endif + if empty(user_settings.prevent_copy) + let user_settings.no_invalid = 0 + endif + " TODO: font return user_settings diff --git a/runtime/compiler/mcs.vim b/runtime/compiler/mcs.vim index d85da7d1a7..c606586870 100644 --- a/runtime/compiler/mcs.vim +++ b/runtime/compiler/mcs.vim @@ -1,7 +1,8 @@ " Vim compiler file " Compiler: Mono C# Compiler " Maintainer: Jarek Sobiecki <harijari@go2.pl> -" Latest Revision: 2006-06-18 +" Last Updated By: Peter Collingbourne +" Latest Revision: 2012 Jul 19 if exists("current_compiler") finish @@ -12,13 +13,18 @@ let s:cpo_save = &cpo set cpo-=C setlocal errorformat= + \%D%.%#Project\ \"%f/%[%^/\"]%#\"%.%#, + \%X%.%#Done\ building\ project\ \"%f/%[%^/\"]%#\"%.%#, + \%-G%\\s%.%#, + \%E%f(%l):\ error\ CS%n:%m, + \%W%f(%l):\ warning\ CS%n:%m, \%E%f(%l\\,%c):\ error\ CS%n:%m, \%W%f(%l\\,%c):\ warning\ CS%n:%m, \%E%>syntax\ error\\,%m,%Z%f(%l\\,%c):\ error\ CS%n:%m, \%D%*\\a[%*\\d]:\ Entering\ directory\ `%f', \%X%*\\a[%*\\d]:\ Leaving\ directory\ `%f', \%DMaking\ %*\\a\ in\ %f, - \%G-%.%# + \%-G%.%# let &cpo = s:cpo_save unlet s:cpo_save diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt index 33806bbdbb..423e7b9acb 100644 --- a/runtime/doc/index.txt +++ b/runtime/doc/index.txt @@ -1,4 +1,4 @@ -*index.txt* For Vim version 7.3. Last change: 2011 Aug 06 +*index.txt* For Vim version 7.3. Last change: 2012 Jul 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -719,6 +719,8 @@ tag char note action in Normal mode ~ |gH| gH start Select line mode |gI| gI 2 like "I", but always start in column 1 |gJ| gJ 2 join lines without inserting space +|gN| gN 1,2 find the previous match with the last used + search pattern and Visually select it |gP| ["x]gP 2 put the text [from register x] before the cursor N times, leave the cursor after it |gQ| gQ switch to "Ex" mode with Vim editing diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt index 9b0af8cac8..e1c937243b 100644 --- a/runtime/doc/motion.txt +++ b/runtime/doc/motion.txt @@ -1,4 +1,4 @@ -*motion.txt* For Vim version 7.3. Last change: 2012 Jul 06 +*motion.txt* For Vim version 7.3. Last change: 2012 Jul 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -57,7 +57,7 @@ or change text. The following operators are available: |>| > shift right |<| < shift left |zf| zf define a fold - |g@| g@ call function set with the 'operatorfunc' option + |g@| g@ call function set with the 'operatorfunc' option If the motion includes a count and the operator also had a count before it, the two counts are multiplied. For example: "2d3w" deletes six words. @@ -513,6 +513,8 @@ always select less text than the "a" commands. These commands are {not in Vi}. These commands are not available when the |+textobjects| feature has been disabled at compile time. +Also see `gn` and `gN`, operating on the last search pattern. + *v_aw* *aw* aw "a word", select [count] words (see |word|). Leading or trailing white space is included, but not @@ -689,6 +691,7 @@ movement commands are used. "daw" delete a word *daw* "diW" delete inner WORD (see |WORD|) *diW* "daW" delete a WORD (see |WORD|) *daW* + "dgn" delete the next search pattern match *dgn* "dd" delete one line |dd| "dis" delete inner sentence *dis* "das" delete a sentence *das* diff --git a/runtime/doc/pi_gzip.txt b/runtime/doc/pi_gzip.txt index 38979dca1e..f9b6442068 100644 --- a/runtime/doc/pi_gzip.txt +++ b/runtime/doc/pi_gzip.txt @@ -1,4 +1,4 @@ -*pi_gzip.txt* For Vim version 7.3. Last change: 2002 Oct 29 +*pi_gzip.txt* For Vim version 7.3. Last change: 2012 Jul 19 VIM REFERENCE MANUAL by Bram Moolenaar @@ -25,6 +25,8 @@ with these extensions: *.Z compress (Lempel-Ziv) *.gz gzip *.bz2 bzip2 + *.lzma lzma + *.xz xz That's actually the only thing you need to know. There are no options. diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt index 4e6f92d9f3..d3ab0ab236 100644 --- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 7.3. Last change: 2012 Jun 13 +*syntax.txt* For Vim version 7.3. Last change: 2012 Jul 16 VIM REFERENCE MANUAL by Bram Moolenaar @@ -380,200 +380,334 @@ settings, depending on which syntax is active. Example: > This is not a syntax file itself, but a script that converts the current window into HTML. Vim opens a new window in which it builds the HTML file. +After you save the resulting file, you can view it with any browser. The +colors should be exactly the same as you see them in Vim. + You are not supposed to set the 'filetype' or 'syntax' option to "2html"! Source the script to convert the current file: > :runtime! syntax/2html.vim < - *:TOhtml* -Or use the ":TOhtml" user command. It is defined in a standard plugin. -":TOhtml" also works with a range and in a Visual area: > - - :10,40TOhtml - -Warning: This can be slow! The script must process every character of every -line. Because it can take a long time, by default a progress bar is displayed -in the statusline for each major step in the conversion process. If you don't -like seeing this progress bar, you can disable it and get a very minor speed -improvement with: > - - let g:html_no_progress = 1 - -":TOhtml" has another special feature: if the window is in diff mode, it will -generate HTML that shows all the related windows. This can be disabled by -setting the g:html_diff_one_file variable: > - - let g:html_diff_one_file = 1 +Many variables affect the output of 2html.vim; see below. Any of the on/off +options listed below can be enabled or disabled by setting them explicitly to +the desired value, or restored to their default by removing the variable using +|:unlet|. -After you save the resulting file, you can view it with any browser. The -colors should be exactly the same as you see them in Vim. +Remarks: +- Some truly ancient browsers may not show the background colors. +- From most browsers you can also print the file (in color)! +- The latest TOhtml may actually work with older versions of Vim, but some + features such as conceal support will not function, and the colors may be + incorrect for an old Vim without GUI support compiled in. +Here is an example how to run the script over all .c and .h files from a +Unix shell: > + for f in *.[ch]; do gvim -f +"syn on" +"run! syntax/2html.vim" +"wq" +"q" $f; done +< + *g:html_start_line* *g:html_end_line* To restrict the conversion to a range of lines, use a range with the |:TOhtml| -command, or set "g:html_start_line" and "g:html_end_line" to the first and -last line to be converted. Example, using the last set Visual area: > +command below, or set "g:html_start_line" and "g:html_end_line" to the first +and last line to be converted. Example, using the last set Visual area: > :let g:html_start_line = line("'<") :let g:html_end_line = line("'>") + :runtime! syntax/2html.vim +< + *:TOhtml* +:[range]TOhtml The ":TOhtml" command is defined in a standard plugin. + This command will source |2html.vim| for you. When a + range is given, set |g:html_start_line| and + |g:html_end_line| to the start and end of the range, + respectively. Default range is the entire buffer. + + If the current window is part of a |diff|, unless + |g:html_diff_one_file| is set, :TOhtml will convert + all windows which are part of the diff in the current + tab and place them side-by-side in a <table> element + in the generated HTML. + + Examples: > + + :10,40TOhtml " convert lines 10-40 to html + :'<,'>TOhtml " convert current/last visual selection + :TOhtml " convert entire buffer +< + *g:html_diff_one_file* +Default: 0. +When 0, all windows involved in a |diff| in the current tab page are converted +to HTML and placed side-by-side in a <table> element. +When 1, only the current buffer is converted. +Example: > -The lines are numbered according to 'number' option and the Number -highlighting. You can force lines to be numbered in the HTML output by -setting "html_number_lines" to non-zero value: > + let g:html_diff_one_file = 1 +< + *g:html_whole_filler* +Default: 0. +When 0, if |g:html_diff_one_file| is 1, a sequence of more than 3 filler lines +is displayed as three lines with the middle line mentioning the total number +of inserted lines. +When 1, always display all inserted lines as if |g:html_diff_one_file| were +not set. +> + :let g:html_whole_filler = 1 +< + *TOhtml-performance* *g:html_no_progress* +Default: 0. +When 0, display a progress bar in the statusline for each major step in the +2html.vim conversion process. +When 1, do not display the progress bar. This offers a minor speed improvement +but you won't have any idea how much longer the conversion might take; for big +files it can take a long time! +Example: > + + let g:html_no_progress = 1 +< +You can obtain better performance improvements by also instructing Vim to not +run interactively, so that too much time is not taken to redraw as the script +moves through the buffer, switches windows, and the like: > + + vim -E -s -c "let g:html_no_progress=1" -c "syntax on" -c "set ft=c" -c "runtime syntax/2html.vim" -cwqa myfile.c +< +Note that the -s flag prevents loading your .vimrc and any plugins, so you +need to explicitly source/enable anything that will affect the HTML +conversion. See |-E| and |-s-ex| for details. It is probably best to create a +script to replace all the -c commands and use it with the -u flag instead of +specifying each command separately. + + *g:html_number_lines* +Default: current 'number' setting. +When 0, buffer text is displayed in the generated HTML without line numbering. +When 1, a column of line numbers is added to the generated HTML with the same +highlighting as the line number column in Vim (|hl-LineNr|). +Force line numbers even if 'number' is not set: > :let g:html_number_lines = 1 -Force to omit the line numbers by using a zero value: > +Force to omit the line numbers: > :let g:html_number_lines = 0 Go back to the default to use 'number' by deleting the variable: > :unlet g:html_number_lines - -By default, valid HTML 4.01 using cascading style sheets (CSS1) is generated. -If you need to generate markup for really old browsers or some other user -agent that lacks basic CSS support, use: > +< + *g:html_use_css* +Default: 1. +When 1, generate valid HTML 4.01 markup with CSS1 styling, supported in all +modern browsers and most old browsers. +When 0, generate <font> tags and similar outdated markup. This is not +recommended but it may work better in really old browsers, email clients, +forum posts, and similar situations where basic CSS support is unavailable. +Example: > :let g:html_use_css = 0 - -Concealed text is removed from the HTML and replaced with the appropriate -character from |:syn-cchar| or 'listchars' depending on the current value of -'conceallevel'. If you always want to display all text in your document, -either set 'conceallevel' to zero before invoking 2html, or use: > +< + *g:html_ignore_conceal* +Default: 0. +When 0, concealed text is removed from the HTML and replaced with a character +from |:syn-cchar| or 'listchars' as appropriate, depending on the current +value of 'conceallevel'. +When 1, include all text from the buffer in the generated HTML, even if it is +|conceal|ed. + +Either of the following commands will ensure that all text in the buffer is +included in the generated HTML (unless it is folded): > :let g:html_ignore_conceal = 1 - -Similarly, closed folds are put in the HTML as they are displayed. If you -don't want this, use the |zR| command before invoking 2html, or use: > + :setl conceallevel=0 +< + *g:html_ignore_folding* +Default: 0. +When 0, text in a closed fold is replaced by the text shown for the fold in +Vim (|fold-foldtext|). See |g:html_dynamic_folds| if you also want to allow +the user to expand the fold as in Vim to see the text inside. +When 1, include all text from the buffer in the generated HTML; whether the +text is in a fold has no impact at all. |g:html_dynamic_folds| has no effect. + +Either of these commands will ensure that all text in the buffer is included +in the generated HTML (unless it is concealed): > + zR :let g:html_ignore_folding = 1 +< + *g:html_dynamic_folds* +Default: 0. +When 0, text in a closed fold is not included at all in the generated HTML. +When 1, generate javascript to open a fold and show the text within, just like +in Vim. -You may want to generate HTML that includes all the data within the folds, and -allow the user to view the folded data similar to how they would in Vim. To -generate this dynamic fold information, use: > - :let g:html_dynamic_folds = 1 - -Using html_dynamic_folds will imply html_use_css, because it would be far too -difficult to do it for old browsers. However, html_ignore_folding overrides -html_dynamic_folds. +Setting this variable to 1 causes 2html.vim to always use CSS for styling, +regardless of what |g:html_use_css| is set to. -Using html_dynamic_folds will default to generating a foldcolumn in the html -similar to Vim's foldcolumn, that will use javascript to open and close the -folds in the HTML document. The width of this foldcolumn starts at the current -setting of |'foldcolumn'| but grows to fit the greatest foldlevel in your -document. If you do not want to show a foldcolumn at all, use: > +This variable is ignored when |g:html_ignore_folding| is set. +> + :let g:html_dynamic_folds = 1 +< + *g:html_no_foldcolumn* +Default: 0. +When 0, if |g:html_dynamic_folds| is 1, generate a column of text similar to +Vim's foldcolumn (|fold-foldcolumn|) the user can click on to toggle folds +open or closed. The minimum width of the generated text column is the current +'foldcolumn' setting. +When 1, do not generate this column; instead, hovering the mouse cursor over +folded text will open the fold as if |g:html_hover_unfold| were set. +> :let g:html_no_foldcolumn = 1 - -Using this option, there will be no foldcolumn available to open the folds in -the HTML. For this reason, another option is provided: html_hover_unfold. -Enabling this option will use CSS 2.0 to allow a user to open a fold by -hovering the mouse pointer over it. Note that old browsers (notably Internet -Explorer 6) will not support this feature. Browser-specific markup for IE6 is -included to fall back to the normal CSS1 code so that the folds show up -correctly for this browser, but they will not be openable without a -foldcolumn. Note that using html_hover_unfold will allow modern browsers with -disabled javascript to view closed folds. To use this option, use: > +< + *TOhtml-uncopyable-text* *g:html_prevent_copy* +Default: empty string. +This option prevents certain regions of the generated HTML from being copied, +when you select all text in document rendered in a browser and copy it. Useful +for allowing users to copy-paste only the source text even if a fold column or +line numbers are shown in the generated content. Specify regions to be +affected in this way as follows: + f: fold column + n: line numbers (also within fold text) + t: fold text + d: diff filler + +Example, to make the fold column and line numbers uncopyable: > + :let g:html_prevent_copy = "fn" +< +This feature is currently implemented by inserting read-only <input> elements +into the markup to contain the uncopyable areas. This does not work well in +all cases. When pasting to some applications which understand HTML, the +<input> elements also get pasted. But plain-text paste destinations should +always work. + + *g:html_no_invalid* +Default: 0. +When 0, if |g:html_prevent_copy| is non-empty, an invalid attribute is +intentionally inserted into the <input> element for the uncopyable areas. This +increases the number of applications you can paste to without also pasting the +<input> elements. Specifically, Microsoft Word will not paste the <input> +elements if they contain this invalid attribute. +When 1, no invalid markup is ever intentionally inserted, and the generated +page should validate. However, be careful pasting into Microsoft Word when +|g:html_prevent_copy| is non-empty; it can be hard to get rid of the <input> +elements which get pasted. + + *g:html_hover_unfold* +Default: 0. +When 0, the only way to open a fold generated by 2html.vim with +|g:html_dynamic_folds| set, is to click on the generated fold column. +When 1, use CSS 2.0 to allow the user to open a fold by moving the mouse +cursor over the displayed fold text. This is useful to allow users with +disabled javascript to view the folded text. + +Note that old browsers (notably Internet Explorer 6) will not support this +feature. Browser-specific markup for IE6 is included to fall back to the +normal CSS1 styling so that the folds show up correctly for this browser, but +they will not be openable without a foldcolumn. +> :let g:html_hover_unfold = 1 - -Setting html_no_foldcolumn with html_dynamic_folds will automatically set -html_hover_unfold, because otherwise the folds wouldn't be dynamic. - -By default "<pre>" and "</pre>" are used around the text. When 'wrap' is set -in the window being converted, the CSS 2.0 "white-space:pre-wrap" value is -used to wrap the text. You can explicitly enable the wrapping with: > +< + *TOhtml-wrap-text* *g:html_pre_wrap* +Default: current 'wrap' setting. +When 0, if |g:html_no_pre| is 0 or unset, the text in the generated HTML does +not wrap at the edge of the browser window. +When 1, if |g:html_use_css| is 1, the CSS 2.0 "white-space:pre-wrap" value is +used, causing the text to wrap at whitespace at the edge of the browser +window. +Explicitly enable text wrapping: > :let g:html_pre_wrap = 1 -or disable with > +Explicitly disable wrapping: > :let g:html_pre_wrap = 0 -This generates HTML that looks very close to the Vim window, but unfortunately -there can be minor differences such as the lack of a 'showbreak' option in in -the HTML, or where line breaks can occur. - -Another way to obtain text wrapping in the HTML, at the risk of making some -things look even more different, is to use: > +Go back to default, determine wrapping from 'wrap' setting: > + :unlet g:html_pre_wrap +< + *g:html_no_pre* +Default: 0. +When 0, buffer text in the generated HTML is surrounded by <pre>...</pre> +tags. Series of whitespace is shown as in Vim without special markup, and tab +characters can be included literally (see |g:html_expand_tabs|). +When 1 (not recommended), the <pre> tags are omitted, and a plain <div> is +used instead. Whitespace is replaced by a series of character +references, and <br> is used to end each line. This is another way to allow +text in the generated HTML is wrap (see |g:html_pre_wrap|) which also works in +old browsers, but may cause noticeable differences between Vim's display and +the rendered page generated by 2html.vim. +> :let g:html_no_pre = 1 -This will use <br> at the end of each line and use " " for repeated -spaces. Doing it this way is more compatible with old browsers, but modern -browsers support the "white-space" method. - -If you do stick with the default "<pre>" tags, <Tab> characters in the text -are included in the generated output if they will have no effect on the -appearance of the text and it looks like they are in the document -intentionally. This allows for the HTML output to be copied and pasted from a -browser without losing the actual whitespace used in the document. - -Specifically, <Tab> characters will be included if the 'tabstop' option is set -to the default of 8, 'expandtab' is not set, and if neither the foldcolumn nor -the line numbers are included in the HTML output (see options above). When any -of these conditions are not met, any <Tab> characters in the text are expanded -to the appropriate number of spaces in the HTML output. - -When "<pre>" is included, you can force |:TOhtml| to keep the tabs even if the -other conditions are not met with: > +< + *g:html_expand_tabs* +Default: 1 if 'tabstop' is 8, 'expandtab' is 0, and no fold column or line + numbers occur in the generated HTML; + 0 otherwise. +When 0, <Tab> characters in the buffer text are replaced with an appropriate +number of space characters, or references if |g:html_no_pre| is 1. +When 1, if |g:html_no_pre| is 0 or unset, <Tab> characters in the buffer text +are included as-is in the generated HTML. This is useful for when you want to +allow copy and paste from a browser without losing the actual whitespace in +the source document. Note that this can easily break text alignment and +indentation in the HTML, unless set by default. + +Force |2html.vim| to keep <Tab> characters: > :let g:html_expand_tabs = 0 -Note that this can easily break text alignment and indentation in the HTML. - -Force tabs to be expanded even when they would be kept using: > +< +Force tabs to be expanded: > :let g:html_expand_tabs = 1 +< + *TOhtml-encoding-detect* *TOhtml-encoding* +It is highly recommended to set your desired encoding with +|g:html_use_encoding| for any content which will be placed on a web server. -For diff mode on a single file (with g:html_diff_one_file) a sequence of more -than 3 filler lines is displayed as three lines with the middle line -mentioning the total number of inserted lines. If you prefer to see all the -inserted lines as with the side-by-side diff, use: > - :let g:html_whole_filler = 1 -And to go back to displaying up to three lines again: > - :unlet g:html_whole_filler +If you do not specify an encoding, |2html.vim| uses the preferred IANA name +for the current value of 'fileencoding' if set, or 'encoding' if not. +'encoding' is always used for certain 'buftype' values. 'fileencoding' will be +set to match the chosen document encoding. + +Automatic detection works for the encodings mentioned specifically by name in +|encoding-names|, but TOhtml will only automatically use those encodings with +wide browser support. However, you can override this to support specific +encodings that may not be automatically detected by default (see options +below). See http://www.iana.org/assignments/character-sets for the IANA names. -For most buffers, TOhtml uses the current value of 'fileencoding' if set, or -'encoding' if not, to determine the charset and 'fileencoding' of the HTML -file. 'encoding' is always used for certain 'buftype' values. In general, this -works for the encodings mentioned specifically by name in |encoding-names|, -but TOhtml will only automatically use those encodings which are widely -supported. However, you can override this to support specific encodings that -may not be automatically detected by default. +Note, by default all Unicode encodings are converted to UTF-8 with no BOM in +the generated HTML, as recommended by W3C: + http://www.w3.org/International/questions/qa-choosing-encodings + http://www.w3.org/International/questions/qa-byte-order-mark + + *g:html_use_encoding* +Default: none, uses IANA name for current 'fileencoding' as above. To overrule all automatic charset detection, set g:html_use_encoding to the -name of the charset to be used. TOhtml will try to determine the appropriate -'fileencoding' setting from the charset, but you may need to set it manually -if TOhtml cannot determine the encoding. It is recommended to set this -variable to something widely supported, like UTF-8, for anything you will be -hosting on a webserver: > +name of the charset to be used. It is recommended to set this variable to +something widely supported, like UTF-8, for anything you will be hosting on a +webserver: > :let g:html_use_encoding = "UTF-8" You can also use this option to omit the line that specifies the charset -entirely, by setting g:html_use_encoding to an empty string: > +entirely, by setting g:html_use_encoding to an empty string (NOT recommended): > :let g:html_use_encoding = "" -To go back to the automatic mechanism, delete the g:html_use_encoding +To go back to the automatic mechanism, delete the |g:html_use_encoding| variable: > :unlet g:html_use_encoding +< + *g:html_encoding_override* +Default: none, autoload/tohtml.vim contains default conversions for encodings + mentioned by name at |encoding-names|. +This option allows |2html.vim| to detect the correct 'fileencoding' when you +specify an encoding with |g:html_use_encoding| which is not in the default +list of conversions. -If you specify a charset with g:html_use_encoding for which TOhtml cannot -automatically detect the corresponding 'fileencoding' setting, you can use -g:html_encoding_override to allow TOhtml to detect the correct encoding. This is a dictionary of charset-encoding pairs that will replace existing -pairs automatically detected by TOhtml, or supplement with new pairs. For -example, to allow TOhtml to detect the HTML charset "windows-1252" properly as -the encoding "8bit-cp1252", use: > +pairs automatically detected by TOhtml, or supplement with new pairs. + +Detect the HTML charset "windows-1252" as the encoding "8bit-cp1252": > :let g:html_encoding_override = {'windows-1252': '8bit-cp1252'} < -The g:html_charset_override is similar, it allows TOhtml to detect the HTML -charset for any 'fileencoding' or 'encoding' which is not detected -automatically. You can also use it to override specific existing -encoding-charset pairs. For example, TOhtml will by default use UTF-8 for all -Unicode/UCS encodings. To use UTF-16 and |