summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2012-07-25 17:49:10 +0200
committerBram Moolenaar <Bram@vim.org>2012-07-25 17:49:10 +0200
commit6c35beaa11d38fc0c37a3d209295772313b12003 (patch)
tree811b970e87072e1901c554866c161e00064a4784
parent848f87633a4a89311838f0d00e12282f8e2e3003 (diff)
Updated runtime files.
-rw-r--r--runtime/autoload/tohtml.vim127
-rw-r--r--runtime/compiler/mcs.vim10
-rw-r--r--runtime/doc/index.txt4
-rw-r--r--runtime/doc/motion.txt7
-rw-r--r--runtime/doc/pi_gzip.txt4
-rw-r--r--runtime/doc/syntax.txt432
-rw-r--r--runtime/doc/tags30
-rw-r--r--runtime/doc/todo.txt29
-rw-r--r--runtime/doc/visual.txt2
-rw-r--r--runtime/indent/xml.vim12
-rw-r--r--runtime/keymap/belarusian-jcuken.vim87
-rw-r--r--runtime/mswin.vim4
-rw-r--r--runtime/plugin/tohtml.vim86
-rw-r--r--runtime/syntax/2html.vim818
-rw-r--r--runtime/syntax/help.vim6
-rw-r--r--runtime/syntax/svn.vim9
-rwxr-xr-xruntime/tools/efm_perl.pl2
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 &nbsp; 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 "&nbsp;" 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 &nbsp; 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