Skip to content
Snippets Groups Projects
Commit 31c31679 authored by Bram Moolenaar's avatar Bram Moolenaar
Browse files

Updated runtime files. New version of TOhtml plugin.

parent b052fe0e
No related merge requests found
" Vim autoload file for the tohtml plugin. " Vim autoload file for the tohtml plugin.
" Maintainer: Ben Fritz <fritzophrenic@gmail.com> " Maintainer: Ben Fritz <fritzophrenic@gmail.com>
" Last Change: 2013 May 31 " Last Change: 2013 Jun 19
" "
" Additional contributors: " Additional contributors:
" "
...@@ -401,15 +401,15 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{ ...@@ -401,15 +401,15 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
call add(html, '</head>') call add(html, '</head>')
let body_line_num = len(html) let body_line_num = len(html)
if !empty(s:settings.prevent_copy) if !empty(s:settings.prevent_copy)
call add(html, "<body onload='FixCharWidth(); JumpToLine();'>") call add(html, "<body onload='FixCharWidth();".(s:settings.line_ids ? " JumpToLine();" : "")."'>")
call add(html, "<!-- hidden divs used by javascript to get the width of a char -->") 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='oneCharWidth'>0</div>")
call add(html, "<div id='oneInputWidth'><input size='1' value='0'".tag_close."</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>") call add(html, "<div id='oneEmWidth' style='width: 1em;'></div>")
else else
call add(html, '<body onload="JumpToLine();">') call add(html, '<body'.(s:settings.line_ids ? ' onload="JumpToLine();"' : '').'>')
endif endif
call add(html, "<table border='1' width='100%' id='vimCodeElement'>") call add(html, "<table border='1' width='100%' id='vimCodeElement".s:settings.id_suffix."'>")
call add(html, '<tr>') call add(html, '<tr>')
for buf in a:win_list for buf in a:win_list
...@@ -475,7 +475,7 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{ ...@@ -475,7 +475,7 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
let temp = getline(1,'$') let temp = getline(1,'$')
" clean out id on the main content container because we already set it on " clean out id on the main content container because we already set it on
" the table " the table
let temp[0] = substitute(temp[0], " id='vimCodeElement'", "", "") let temp[0] = substitute(temp[0], " id='vimCodeElement[^']*'", "", "")
" undo deletion of start and end part " undo deletion of start and end part
" so we can later save the file as valid html " so we can later save the file as valid html
" TODO: restore using grabbed lines if undolevel is 1? " TODO: restore using grabbed lines if undolevel is 1?
...@@ -568,9 +568,9 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{ ...@@ -568,9 +568,9 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
\ ' var emWidth = document.getElementById("oneEmWidth").clientWidth;', \ ' var emWidth = document.getElementById("oneEmWidth").clientWidth;',
\ ' if (inputWidth > goodWidth) {', \ ' if (inputWidth > goodWidth) {',
\ ' while (ratio < 100*goodWidth/emWidth && ratio < 100) {', \ ' while (ratio < 100*goodWidth/emWidth && ratio < 100) {',
\ ' ratio += 5;', \ ' ratio += 5;',
\ ' }', \ ' }',
\ ' document.getElementById("vimCodeElement").className = "em"+ratio;', \ ' document.getElementById("vimCodeElement'.s:settings.id_suffix.'").className = "em"+ratio;',
\ ' }', \ ' }',
\ '}' \ '}'
\ ]) \ ])
...@@ -596,7 +596,7 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{ ...@@ -596,7 +596,7 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
\ "", \ "",
\ " /* navigate upwards in the DOM tree to open all folds containing the line */", \ " /* navigate upwards in the DOM tree to open all folds containing the line */",
\ " var node = lineElem;", \ " var node = lineElem;",
\ " while (node && node.id != 'vimCodeElement')", \ " while (node && node.id != 'vimCodeElement".s:settings.id_suffix."')",
\ " {", \ " {",
\ " if (node.className == 'closed-fold')", \ " if (node.className == 'closed-fold')",
\ " {", \ " {",
...@@ -722,6 +722,7 @@ func! tohtml#GetUserSettings() "{{{ ...@@ -722,6 +722,7 @@ func! tohtml#GetUserSettings() "{{{
call tohtml#GetOption(user_settings, 'no_invalid', 0 ) call tohtml#GetOption(user_settings, 'no_invalid', 0 )
call tohtml#GetOption(user_settings, 'whole_filler', 0 ) call tohtml#GetOption(user_settings, 'whole_filler', 0 )
call tohtml#GetOption(user_settings, 'use_xhtml', 0 ) call tohtml#GetOption(user_settings, 'use_xhtml', 0 )
call tohtml#GetOption(user_settings, 'line_ids', user_settings.number_lines )
" }}} " }}}
" override those settings that need it {{{ " override those settings that need it {{{
...@@ -855,6 +856,20 @@ func! tohtml#GetUserSettings() "{{{ ...@@ -855,6 +856,20 @@ func! tohtml#GetUserSettings() "{{{
let user_settings.no_invalid = 0 let user_settings.no_invalid = 0
endif endif
if exists('g:html_id_expr')
let user_settings.id_suffix = eval(g:html_id_expr)
if user_settings.id_suffix !~ '^[-_:.A-Za-z0-9]*$'
echohl WarningMsg
echomsg '2html: g:html_id_expr evaluated to invalid string for HTML id attributes'
echomsg '2html: Omitting user-specified suffix'
echohl None
sleep 3
let user_settings.id_suffix=""
endif
else
let user_settings.id_suffix=""
endif
" TODO: font " TODO: font
return user_settings return user_settings
......
*syntax.txt* For Vim version 7.3. Last change: 2013 Jun 24 *syntax.txt* For Vim version 7.3. Last change: 2013 Jun 26
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
...@@ -379,12 +379,12 @@ settings, depending on which syntax is active. Example: > ...@@ -379,12 +379,12 @@ settings, depending on which syntax is active. Example: >
2HTML *2html.vim* *convert-to-HTML* 2HTML *2html.vim* *convert-to-HTML*
This is not a syntax file itself, but a script that converts the current 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. 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 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 can jump to colors should be exactly the same as you see them in Vim. With
specific lines by adding (for example) #L123 or #123 to the end of the URL in |g:html_line_ids| you can jump to specific lines by adding (for example) #L123
your browser's address bar (#123 only with javascript support). And with or #123 to the end of the URL in your browser's address bar. And with
|g:html_dynamic_folds| enabled, you can show or hide the text that is folded |g:html_dynamic_folds| enabled, you can show or hide the text that is folded
in Vim. in Vim.
...@@ -425,15 +425,14 @@ and last line to be converted. Example, using the last set Visual area: > ...@@ -425,15 +425,14 @@ and last line to be converted. Example, using the last set Visual area: >
|g:html_end_line| to the start and end of the range, |g:html_end_line| to the start and end of the range,
respectively. Default range is the entire buffer. respectively. Default range is the entire buffer.
If the current window is part of a |diff|, unless If the current window is part of a |diff|, unless
|g:html_diff_one_file| is set, :TOhtml will convert |g:html_diff_one_file| is set, :TOhtml will convert
all windows which are part of the diff in the current all windows which are part of the diff in the current
tab and place them side-by-side in a <table> element tab and place them side-by-side in a <table> element
in the generated HTML. When this happens you can jump in the generated HTML. With |g:html_line_ids| you can
to lines in specific windows with (for example) #W1L42 jump to lines in specific windows with (for example)
for line 42 in the first diffed window, or #W3L87 for #W1L42 for line 42 in the first diffed window, or
line 87 in the third. Omitting the window ID will #W3L87 for line 87 in the third.
default to the first window if javascript is enabled.
Examples: > Examples: >
...@@ -443,9 +442,9 @@ and last line to be converted. Example, using the last set Visual area: > ...@@ -443,9 +442,9 @@ and last line to be converted. Example, using the last set Visual area: >
< <
*g:html_diff_one_file* *g:html_diff_one_file*
Default: 0. Default: 0.
When 0, all windows involved in a |diff| in the current tab page are converted When 0, and using |:TOhtml| all windows involved in a |diff| in the current tab
to HTML and placed side-by-side in a <table> element. page are converted to HTML and placed side-by-side in a <table> element. When
When 1, only the current buffer is converted. 1, only the current buffer is converted.
Example: > Example: >
let g:html_diff_one_file = 1 let g:html_diff_one_file = 1
...@@ -494,6 +493,23 @@ Force to omit the line numbers: > ...@@ -494,6 +493,23 @@ Force to omit the line numbers: >
:let g:html_number_lines = 0 :let g:html_number_lines = 0
Go back to the default to use 'number' by deleting the variable: > Go back to the default to use 'number' by deleting the variable: >
:unlet g:html_number_lines :unlet g:html_number_lines
<
*g:html_line_ids*
Default: 1 if |g:html_number_lines| is set, 0 otherwise.
When 1, adds an HTML id attribute to each line number, or to an empty <span>
inserted for that purpose if no line numbers are shown. This ID attribute
takes the form of L123 for single-buffer HTML pages, or W2L123 for diff-view
pages, and is used to jump to a specific line (in a specific window of a diff
view). Javascript is inserted to open any closed dynamic folds
(|g:html_dynamic_folds|) containing the specificed line before jumping. The
javascript also allows omitting the window ID in the url, and the leading L.
For example: >
page.html#L123 jumps to line 123 in a single-buffer file
page.html#123 does the same
diff.html#W1L42 jumps to line 42 in the first window in a diff
diff.html#42 does the same
< <
*g:html_use_css* *g:html_use_css*
Default: 1. Default: 1.
...@@ -603,6 +619,25 @@ they will not be openable without a foldcolumn. ...@@ -603,6 +619,25 @@ they will not be openable without a foldcolumn.
> >
:let g:html_hover_unfold = 1 :let g:html_hover_unfold = 1
< <
*g:html_id_expr*
Default: ""
Dynamic folding and jumping to line IDs rely on unique IDs within the document
to work. If generated HTML is copied into a larger document, these IDs are no
longer guaranteed to be unique. Set g:html_id_expr to an expression Vim can
evaluate to get a unique string to append to each ID used in a given document,
so that the full IDs will be unique even when combined with other content in a
larger HTML document. Example, to append _ and the buffer number to each ID: >
:let g:html_id_expr = '"_".bufnr("%")'
<
To append a string "_mystring" to the end of each ID: >
:let g:html_id_expr = '"_mystring"'
<
Note, when converting a diff view to HTML, the expression will only be
evaluated for the first window in the diff, and the result used for all the
windows.
*TOhtml-wrap-text* *g:html_pre_wrap* *TOhtml-wrap-text* *g:html_pre_wrap*
Default: current 'wrap' setting. Default: current 'wrap' setting.
When 0, if |g:html_no_pre| is 0 or unset, the text in the generated HTML does When 0, if |g:html_no_pre| is 0 or unset, the text in the generated HTML does
......
...@@ -5894,8 +5894,10 @@ g:html_encoding_override syntax.txt /*g:html_encoding_override* ...@@ -5894,8 +5894,10 @@ g:html_encoding_override syntax.txt /*g:html_encoding_override*
g:html_end_line syntax.txt /*g:html_end_line* g:html_end_line syntax.txt /*g:html_end_line*
g:html_expand_tabs syntax.txt /*g:html_expand_tabs* g:html_expand_tabs syntax.txt /*g:html_expand_tabs*
g:html_hover_unfold syntax.txt /*g:html_hover_unfold* g:html_hover_unfold syntax.txt /*g:html_hover_unfold*
g:html_id_expr syntax.txt /*g:html_id_expr*
g:html_ignore_conceal syntax.txt /*g:html_ignore_conceal* g:html_ignore_conceal syntax.txt /*g:html_ignore_conceal*
g:html_ignore_folding syntax.txt /*g:html_ignore_folding* g:html_ignore_folding syntax.txt /*g:html_ignore_folding*
g:html_line_ids syntax.txt /*g:html_line_ids*
g:html_no_foldcolumn syntax.txt /*g:html_no_foldcolumn* g:html_no_foldcolumn syntax.txt /*g:html_no_foldcolumn*
g:html_no_invalid syntax.txt /*g:html_no_invalid* g:html_no_invalid syntax.txt /*g:html_no_invalid*
g:html_no_pre syntax.txt /*g:html_no_pre* g:html_no_pre syntax.txt /*g:html_no_pre*
......
*todo.txt* For Vim version 7.3. Last change: 2013 Jun 24 *todo.txt* For Vim version 7.3. Last change: 2013 Jun 26
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
...@@ -36,7 +36,8 @@ not be repeated below, unless there is extra information. ...@@ -36,7 +36,8 @@ not be repeated below, unless there is extra information.
--- Python interface --- Python interface
Test 86 fails on MS-Windows. (Taro Muraoka, 2013 Jun 24) Test 86 fails on MS-Windows, using backslashes instead of forward slashes.
(Taro Muraoka, 2013 Jun 24)
Can we fix this in code instead of in the test? Can we fix this in code instead of in the test?
Python: ":py raw_input('prompt')" doesn't work. (Manu Hack) Python: ":py raw_input('prompt')" doesn't work. (Manu Hack)
...@@ -65,6 +66,9 @@ see why it doesn't work. ...@@ -65,6 +66,9 @@ see why it doesn't work.
Patch to fix finding toolbar bitmaps. Issue 129. Patch to fix finding toolbar bitmaps. Issue 129.
Patch 7.3.1200 doesn't fix the problem in all cases. (Hirohito Higashi, 2013
Jun 24)
Patch to avoid clang warnings when building with Athena. Patch to avoid clang warnings when building with Athena.
(Dominique Pelle, 2013 Jun 22) (Dominique Pelle, 2013 Jun 22)
...@@ -202,10 +206,6 @@ register. It is reset after the next command. (Steve Vermeulen, 2013 Mar 16) ...@@ -202,10 +206,6 @@ register. It is reset after the next command. (Steve Vermeulen, 2013 Mar 16)
'ff' is wrong for one-line file without EOL. (Issue 77) 'ff' is wrong for one-line file without EOL. (Issue 77)
Can add a function to a dict using a weird key:
let dict['/foo'] = function('tr')
Disallow? (thinca, 2013 Jun 17)
Patch to set antialiasing style on Windows. (Ondrej Balaz, 2013 Mar 14) Patch to set antialiasing style on Windows. (Ondrej Balaz, 2013 Mar 14)
Needs a different check for CLEARTYPE_QUALITY. Needs a different check for CLEARTYPE_QUALITY.
......
" Vim plugin for converting a syntax highlighted file to HTML. " Vim plugin for converting a syntax highlighted file to HTML.
" Maintainer: Ben Fritz <fritzophrenic@gmail.com> " Maintainer: Ben Fritz <fritzophrenic@gmail.com>
" Last Change: 2013 May 31 " Last Change: 2013 Jun 12
" "
" The core of the code is in $VIMRUNTIME/autoload/tohtml.vim and " The core of the code is in $VIMRUNTIME/autoload/tohtml.vim and
" $VIMRUNTIME/syntax/2html.vim " $VIMRUNTIME/syntax/2html.vim
...@@ -67,12 +67,18 @@ ...@@ -67,12 +67,18 @@
if exists('g:loaded_2html_plugin') if exists('g:loaded_2html_plugin')
finish finish
endif endif
let g:loaded_2html_plugin = 'vim7.3_v13' let g:loaded_2html_plugin = 'vim7.3_v14'
" "
" Changelog: {{{ " Changelog: {{{
" "
" 7.3_v13 (this version): Keep foldmethod at manual in the generated file and " 7.3_v14 (this version): Allow suppressing empty <span> created for line
" number anchors when line numbers are not included,
" using g:html_empty_anchors=0. Allow customizing
" important IDs (like line IDs and fold IDs) using
" g:html_id_expr evalutated when the buffer conversion
" is started.
" 7.3_v13 (2eb30f341e8d): Keep foldmethod at manual in the generated file and
" insert modeline to set it to manual. " insert modeline to set it to manual.
" Fix bug: diff mode with 2 unsaved buffers creates a " Fix bug: diff mode with 2 unsaved buffers creates a
" duplicate of one buffer instead of including both. " duplicate of one buffer instead of including both.
......
" Vim syntax support file " Vim syntax support file
" Maintainer: Ben Fritz <fritzophrenic@gmail.com> " Maintainer: Ben Fritz <fritzophrenic@gmail.com>
" Last Change: 2013 May 31 " Last Change: 2013 Jun 19
" "
" Additional contributors: " Additional contributors:
" "
...@@ -450,30 +450,42 @@ endfun ...@@ -450,30 +450,42 @@ endfun
" element is supposed to be unselectable or not " element is supposed to be unselectable or not
if s:settings.prevent_copy =~# 'n' if s:settings.prevent_copy =~# 'n'
if s:settings.number_lines if s:settings.number_lines
function! s:HtmlFormat_n(text, style_id, diff_style_id, lnr) if s:settings.line_ids
if a:lnr > 0 function! s:HtmlFormat_n(text, style_id, diff_style_id, lnr)
return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, 'id="'.(exists('g:html_diff_win_num') ? 'W'.g:html_diff_win_num : "").'L'.a:lnr.'" ', 1) if a:lnr > 0
else return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, 'id="'.(exists('g:html_diff_win_num') ? 'W'.g:html_diff_win_num : "").'L'.a:lnr.s:settings.id_suffix.'" ', 1)
else
return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 1)
endif
endfun
else
function! s:HtmlFormat_n(text, style_id, diff_style_id, lnr)
return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 1) return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 1)
endif endfun
endfun endif
else elseif s:settings.line_ids
" if lines are not being numbered the only reason this function gets called " if lines are not being numbered the only reason this function gets called
" is to put the line IDs on each line; "text" will be emtpy but lnr will " is to put the line IDs on each line; "text" will be emtpy but lnr will
" always be non-zero, however we don't want to use the <input> because that " always be non-zero, however we don't want to use the <input> because that
" won't work as nice for empty text " won't work as nice for empty text
function! s:HtmlFormat_n(text, style_id, diff_style_id, lnr) function! s:HtmlFormat_n(text, style_id, diff_style_id, lnr)
return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, 'id="'.(exists('g:html_diff_win_num') ? 'W'.g:html_diff_win_num : "").'L'.a:lnr.'" ', 0) return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, 'id="'.(exists('g:html_diff_win_num') ? 'W'.g:html_diff_win_num : "").'L'.a:lnr.s:settings.id_suffix.'" ', 0)
endfun endfun
endif endif
else else
function! s:HtmlFormat_n(text, style_id, diff_style_id, lnr) if s:settings.line_ids
if a:lnr > 0 function! s:HtmlFormat_n(text, style_id, diff_style_id, lnr)
return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, 'id="'.(exists('g:html_diff_win_num') ? 'W'.g:html_diff_win_num : "").'L'.a:lnr.'" ', 0) if a:lnr > 0
else return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, 'id="'.(exists('g:html_diff_win_num') ? 'W'.g:html_diff_win_num : "").'L'.a:lnr.s:settings.id_suffix.'" ', 0)
else
return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 0)
endif
endfun
else
function! s:HtmlFormat_n(text, style_id, diff_style_id, lnr)
return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 0) return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 0)
endif endfun
endfun endif
endif endif
if s:settings.prevent_copy =~# 'd' if s:settings.prevent_copy =~# 'd'
function! s:HtmlFormat_d(text, style_id, diff_style_id) function! s:HtmlFormat_d(text, style_id, diff_style_id)
...@@ -818,50 +830,52 @@ if s:settings.dynamic_folds ...@@ -818,50 +830,52 @@ if s:settings.dynamic_folds
\ ]) \ ])
endif endif
" insert javascript to get IDs from line numbers, and to open a fold before if s:settings.line_ids
" jumping to any lines contained therein " insert javascript to get IDs from line numbers, and to open a fold before
call extend(s:lines, [ " jumping to any lines contained therein
\ "",
\ "/* function to open any folds containing a jumped-to line before jumping to it */",
\ "function JumpToLine()",
\ "{",
\ " var lineNum;",
\ " lineNum = window.location.hash;",
\ " lineNum = lineNum.substr(1); /* strip off '#' */",
\ "",
\ " if (lineNum.indexOf('L') == -1) {",
\ " lineNum = 'L'+lineNum;",
\ " }",
\ " lineElem = document.getElementById(lineNum);"
\ ])
if s:settings.dynamic_folds
call extend(s:lines, [ call extend(s:lines, [
\ "", \ "",
\ " /* navigate upwards in the DOM tree to open all folds containing the line */", \ "/* function to open any folds containing a jumped-to line before jumping to it */",
\ " var node = lineElem;", \ "function JumpToLine()",
\ " while (node && node.id != 'vimCodeElement')", \ "{",
\ " {", \ " var lineNum;",
\ " if (node.className == 'closed-fold')", \ " lineNum = window.location.hash;",
\ " {", \ " lineNum = lineNum.substr(1); /* strip off '#' */",
\ " node.className = 'open-fold';", \ "",
\ " }", \ " if (lineNum.indexOf('L') == -1) {",
\ " node = node.parentNode;", \ " lineNum = 'L'+lineNum;",
\ " }", \ " }",
\ " lineElem = document.getElementById(lineNum);"
\ ])
if s:settings.dynamic_folds
call extend(s:lines, [
\ "",
\ " /* navigate upwards in the DOM tree to open all folds containing the line */",
\ " var node = lineElem;",
\ " while (node && node.id != 'vimCodeElement".s:settings.id_suffix."')",
\ " {",
\ " if (node.className == 'closed-fold')",
\ " {",
\ " node.className = 'open-fold';",
\ " }",
\ " node = node.parentNode;",
\ " }",
\ ])
endif
call extend(s:lines, [
\ " /* Always jump to new location even if the line was hidden inside a fold, or",
\ " * we corrected the raw number to a line ID.",
\ " */",
\ " if (lineElem) {",
\ " lineElem.scrollIntoView(true);",
\ " }",
\ " return true;",
\ "}",
\ "if ('onhashchange' in window) {",
\ " window.onhashchange = JumpToLine;",
\ "}"
\ ]) \ ])
endif endif
call extend(s:lines, [
\ " /* Always jump to new location even if the line was hidden inside a fold, or",
\ " * we corrected the raw number to a line ID.",
\ " */",
\ " if (lineElem) {",
\ " lineElem.scrollIntoView(true);",
\ " }",
\ " return true;",
\ "}",
\ "if ('onhashchange' in window) {",
\ " window.onhashchange = JumpToLine;",
\ "}"
\ ])
" Small text columns like the foldcolumn and line number column need a weird " Small text columns like the foldcolumn and line number column need a weird
" hack to work around Webkit's and (in versions prior to 9) IE's lack of support " hack to work around Webkit's and (in versions prior to 9) IE's lack of support
...@@ -914,9 +928,9 @@ if !empty(s:settings.prevent_copy) ...@@ -914,9 +928,9 @@ if !empty(s:settings.prevent_copy)
\ ' var emWidth = document.getElementById("oneEmWidth").clientWidth;', \ ' var emWidth = document.getElementById("oneEmWidth").clientWidth;',
\ ' if (inputWidth > goodWidth) {', \ ' if (inputWidth > goodWidth) {',
\ ' while (ratio < 100*goodWidth/emWidth && ratio < 100) {', \ ' while (ratio < 100*goodWidth/emWidth && ratio < 100) {',
\ ' ratio += 5;', \ ' ratio += 5;',
\ ' }', \ ' }',
\ ' document.getElementById("vimCodeElement").className = "em"+ratio;', \ ' document.getElementById("vimCodeElement'.s:settings.id_suffix.'").className = "em"+ratio;',
\ ' }', \ ' }',
\ '}' \ '}'
\ ]) \ ])
...@@ -932,22 +946,22 @@ call extend(s:lines, [ ...@@ -932,22 +946,22 @@ call extend(s:lines, [
call extend(s:lines, ["</head>"]) call extend(s:lines, ["</head>"])
if !empty(s:settings.prevent_copy) if !empty(s:settings.prevent_copy)
call extend(s:lines, call extend(s:lines,
\ ["<body onload='FixCharWidth(); JumpToLine();'>", \ ["<body onload='FixCharWidth();".(s:settings.line_ids ? " JumpToLine();" : "")."'>",
\ "<!-- hidden divs used by javascript to get the width of a char -->", \ "<!-- hidden divs used by javascript to get the width of a char -->",
\ "<div id='oneCharWidth'>0</div>", \ "<div id='oneCharWidth'>0</div>",
\ "<div id='oneInputWidth'><input size='1' value='0'".s:tag_close."</div>", \ "<div id='oneInputWidth'><input size='1' value='0'".s:tag_close."</div>",
\ "<div id='oneEmWidth' style='width: 1em;'></div>" \ "<div id='oneEmWidth' style='width: 1em;'></div>"
\ ]) \ ])
else else
call extend(s:lines, ["<body onload='JumpToLine();'>"]) call extend(s:lines, ["<body".(s:settings.line_ids ? " onload='JumpToLine();'" : "").">"])
endif endif
if s:settings.no_pre if s:settings.no_pre
" if we're not using CSS we use a font tag which can't have a div inside " if we're not using CSS we use a font tag which can't have a div inside
if s:settings.use_css if s:settings.use_css
call extend(s:lines, ["<div id='vimCodeElement'>"]) call extend(s:lines, ["<div id='vimCodeElement".s:settings.id_suffix."'>"])
endif endif
else else
call extend(s:lines, ["<pre id='vimCodeElement'>"]) call extend(s:lines, ["<pre id='vimCodeElement".s:settings.id_suffix."'>"])
endif endif
exe s:orgwin . "wincmd w" exe s:orgwin . "wincmd w"
...@@ -1364,7 +1378,7 @@ while s:lnum <= s:end ...@@ -1364,7 +1378,7 @@ while s:lnum <= s:end
let s:foldId = s:foldId + 1 let s:foldId = s:foldId + 1
let s:new .= "<span id='" let s:new .= "<span id='"
let s:new .= (exists('g:html_diff_win_num') ? "win".g:html_diff_win_num : "") let s:new .= (exists('g:html_diff_win_num') ? "win".g:html_diff_win_num : "")
let s:new .= "fold".s:foldId."' class='".s:allfolds[0].type."'>" let s:new .= "fold".s:foldId.s:settings.id_suffix."' class='".s:allfolds[0].type."'>"
" Unless disabled, add a fold column for the opening line of a fold. " Unless disabled, add a fold column for the opening line of a fold.
...@@ -1376,19 +1390,19 @@ while s:lnum <= s:end ...@@ -1376,19 +1390,19 @@ while s:lnum <= s:end
" add fold column that can open the new fold " add fold column that can open the new fold
if s:allfolds[0].level > 1 && s:firstfold if s:allfolds[0].level > 1 && s:firstfold
let s:new = s:new . s:FoldColumn_build('|', s:allfolds[0].level - 1, 0, "", let s:new = s:new . s:FoldColumn_build('|', s:allfolds[0].level - 1, 0, "",
\ 'toggle-open FoldColumn','javascript:toggleFold("fold'.s:foldstack[0].id.'");') \ 'toggle-open FoldColumn','javascript:toggleFold("fold'.s:foldstack[0].id.s:settings.id_suffix.'");')
endif endif
" add the filler spaces separately from the '+' char so that it can be " add the filler spaces separately from the '+' char so that it can be
" shown/hidden separately during a hover unfold " shown/hidden separately during a hover unfold
let s:new = s:new . s:FoldColumn_build("+", 1, 0, "", let s:new = s:new . s:FoldColumn_build("+", 1, 0, "",
\ 'toggle-open FoldColumn', 'javascript:toggleFold("fold'.s:foldId.'");') \ 'toggle-open FoldColumn', 'javascript:toggleFold("fold'.s:foldId.s:settings.id_suffix.'");')
" If this is not the last fold we're opening on this line, we need " If this is not the last fold we're opening on this line, we need
" to keep the filler spaces hidden if the fold is opened by mouse " to keep the filler spaces hidden if the fold is opened by mouse
" hover. If it is the last fold to open in the line, we shouldn't hide " hover. If it is the last fold to open in the line, we shouldn't hide
" them, so don't apply the toggle-filler class. " them, so don't apply the toggle-filler class.
let s:new = s:new . s:FoldColumn_build(" ", 1, s:foldcolumn - s:allfolds[0].level - 1, "", let s:new = s:new . s:FoldColumn_build(" ", 1, s:foldcolumn - s:allfolds[0].level - 1, "",
\ 'toggle-open FoldColumn'. (get(s:allfolds, 1, {'firstline': 0}).firstline == s:lnum ?" toggle-filler" :""), \ 'toggle-open FoldColumn'. (get(s:allfolds, 1, {'firstline': 0}).firstline == s:lnum ?" toggle-filler" :""),
\ 'javascript:toggleFold("fold'.s:foldId.'");') \ 'javascript:toggleFold("fold'.s:foldId.s:settings.id_suffix.'");')
" add fold column that can close the new fold " add fold column that can close the new fold
" only add extra blank space if we aren't opening another fold on the " only add extra blank space if we aren't opening another fold on the
...@@ -1402,11 +1416,11 @@ while s:lnum <= s:end ...@@ -1402,11 +1416,11 @@ while s:lnum <= s:end
" the first fold in a line has '|' characters from folds opened in " the first fold in a line has '|' characters from folds opened in
" previous lines, before the '-' for this fold " previous lines, before the '-' for this fold
let s:new .= s:FoldColumn_build('|', s:allfolds[0].level - 1, s:extra_space, '-', let s:new .= s:FoldColumn_build('|', s:allfolds[0].level - 1, s:extra_space, '-',
\ 'toggle-closed FoldColumn', 'javascript:toggleFold("fold'.s:foldId.'");') \ 'toggle-closed FoldColumn', 'javascript:toggleFold("fold'.s:foldId.s:settings.id_suffix.'");')
else else
" any subsequent folds in the line only add a single '-' " any subsequent folds in the line only add a single '-'
let s:new = s:new . s:FoldColumn_build("-", 1, s:extra_space, "", let s:new = s:new . s:FoldColumn_build("-", 1, s:extra_space, "",
\ 'toggle-closed FoldColumn', 'javascript:toggleFold("fold'.s:foldId.'");') \ 'toggle-closed FoldColumn', 'javascript:toggleFold("fold'.s:foldId.s:settings.id_suffix.'");')
endif endif
let s:firstfold = 0 let s:firstfold = 0
endif endif
...@@ -1440,7 +1454,7 @@ while s:lnum <= s:end ...@@ -1440,7 +1454,7 @@ while s:lnum <= s:end
" add the fold column for folds not on the opening line " add the fold column for folds not on the opening line
if get(s:foldstack, 0).firstline < s:lnum if get(s:foldstack, 0).firstline < s:lnum
let s:new = s:new . s:FoldColumn_build('|', s:foldstack[0].level, s:foldcolumn - s:foldstack[0].level, "", let s:new = s:new . s:FoldColumn_build('|', s:foldstack[0].level, s:foldcolumn - s:foldstack[0].level, "",
\ 'FoldColumn', 'javascript:toggleFold("fold'.s:foldstack[0].id.'");') \ 'FoldColumn', 'javascript:toggleFold("fold'.s:foldstack[0].id.s:settings.id_suffix.'");')
endif endif
endif endif
endif endif
...@@ -1449,7 +1463,7 @@ while s:lnum <= s:end ...@@ -1449,7 +1463,7 @@ while s:lnum <= s:end
" Now continue with the unfolded line text " Now continue with the unfolded line text
if s:settings.number_lines if s:settings.number_lines
let s:new = s:new . s:HtmlFormat_n(s:numcol, s:LINENR_ID, 0, s:lnum) let s:new = s:new . s:HtmlFormat_n(s:numcol, s:LINENR_ID, 0, s:lnum)
else elseif s:settings.line_ids
let s:new = s:new . s:HtmlFormat_n("", s:LINENR_ID, 0, s:lnum) let s:new = s:new . s:HtmlFormat_n("", s:LINENR_ID, 0, s:lnum)
endif endif
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment