Wiki: Fix To Html Mini Buf


<verbatim> " Vim syntax support file " Maintainer: Bram Moolenaar <Bram@vim.org> " Last Change: 2004 May 3 " (modified by Tofer Chagnon <toferc@mail.com>) " (modified by David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>)

" Transform a file into HTML, using the current syntax highlighting.

" Number lines when explicitely requested or when `number' is set if exists("html_number_lines")

let s:numblines = html_number_lines

else

let s:numblines = &number

endif

" When not in gui we can only guess the colors. if has("gui_running")

let s:whatterm = "gui"

else

let s:whatterm = "cterm" if &t_Co == 8

let s:cterm_color0 = "#808080" let s:cterm_color1 = "#ff6060" let s:cterm_color2 = "#00ff00" let s:cterm_color3 = "#ffff00" let s:cterm_color4 = "#8080ff" let s:cterm_color5 = "#ff40ff" let s:cterm_color6 = "#00ffff" let s:cterm_color7 = "#ffffff"

else

let s:cterm_color0 = "#000000" let s:cterm_color1 = "#c00000" let s:cterm_color2 = "#008000" let s:cterm_color3 = "#804000" let s:cterm_color4 = "#0000c0" let s:cterm_color5 = "#c000c0" let s:cterm_color6 = "#008080" let s:cterm_color7 = "#c0c0c0" let s:cterm_color8 = "#808080" let s:cterm_color9 = "#ff6060" let s:cterm_color10 = "#00ff00" let s:cterm_color11 = "#ffff00" let s:cterm_color12 = "#8080ff" let s:cterm_color13 = "#ff40ff" let s:cterm_color14 = "#00ffff" let s:cterm_color15 = "#ffffff"

endif

endif

" Return good color specification: in GUI no transformation is done, in " terminal return RGB values of known colors and empty string on unknown if s:whatterm == "gui"

function! s:HtmlColor?(color)

return a:color

endfun

else

function! s:HtmlColor?(color)

if exists("s:cterm_color" . a:color)

execute "return s:cterm_color" . a:color

else

return

endif

endfun

endif

if !exists("html_use_css")

" Return opening HTML tag for given highlight id function! s:HtmlOpening?(id)

let a = if synIDattr(a:id, "inverse")

" For inverse, we always must set both colors (and exchange them) let x = s:HtmlColor?(synIDattr(a:id, "fg#", s:whatterm)) let a = a . '<span style="background-color: ' . ( x != ? x : s:fgc ) . '">' let x = s:HtmlColor?(synIDattr(a:id, "bg#", s:whatterm)) let a = a . '<font color="' . ( x != ? x : s:bgc ) . '">'

else

let x = s:HtmlColor?(synIDattr(a:id, "bg#", s:whatterm)) if x != | let a = a . '<span style="background-color: ' . x . '">' | endif let x = s:HtmlColor?(synIDattr(a:id, "fg#", s:whatterm)) if x != | let a = a . '<font color="' . x . '">' | endif

endif if synIDattr(a:id, "bold") | let a = a . "<b>" | endif if synIDattr(a:id, "italic") | let a = a . "<i>" | endif if synIDattr(a:id, "underline") | let a = a . "<u>" | endif return a

endfun

" Return closing HTML tag for given highlight id function s:HtmlClosing?(id)

let a = if synIDattr(a:id, "underline") | let a = a . "</u>" | endif if synIDattr(a:id, "italic") | let a = a . "</i>" | endif if synIDattr(a:id, "bold") | let a = a . "</b>" | endif if synIDattr(a:id, "inverse")

let a = a . '</font></span>'

else

let x = s:HtmlColor?(synIDattr(a:id, "fg#", s:whatterm)) if x != | let a = a . '</font>' | endif let x = s:HtmlColor?(synIDattr(a:id, "bg#", s:whatterm)) if x != | let a = a . '</span>' | endif

endif return a

endfun

endif

" Return CSS style describing given highlight id (can be empty) function! s:CSS1(id)

let a = if synIDattr(a:id, "inverse")

" For inverse, we always must set both colors (and exchange them) let x = s:HtmlColor?(synIDattr(a:id, "bg#", s:whatterm)) let a = a . "color: " . ( x != ? x : s:bgc ) . "; " let x = s:HtmlColor?(synIDattr(a:id, "fg#", s:whatterm)) let a = a . "background-color: " . ( x != ? x : s:fgc ) . "; "

else

let x = s:HtmlColor?(synIDattr(a:id, "fg#", s:whatterm)) if x != | let a = a . "color: " . x . "; " | endif let x = s:HtmlColor?(synIDattr(a:id, "bg#", s:whatterm)) if x != | let a = a . "background-color: " . x . "; " | endif

endif if synIDattr(a:id, "bold") | let a = a . "font-weight: bold; " | endif if synIDattr(a:id, "italic") | let a = a . "font-style: italic; " | endif if synIDattr(a:id, "underline") | let a = a . "text-decoration: underline; " | endif return a

endfun

" Figure out proper MIME charset from the 'encoding' option. if exists("html_use_encoding")

let s:html_encoding = html_use_encoding

else

let s:vim_encoding = &encoding if s:vim_encoding = '^8bit\|^2byte'

let s:vim_encoding = substitute(s:vim_encoding, '^8bit-\|^2byte-', , )

endif if s:vim_encoding == 'latin1'

let s:html_encoding = 'iso-8859-1'

elseif s:vim_encoding = "^cp12"

let s:html_encoding = substitute(s:vim_encoding, 'cp', 'windows-', '')

elseif s:vim_encoding == 'sjis'

let s:html_encoding = 'Shift_JIS'

elseif s:vim_encoding == 'euc-cn'

let s:html_encoding = 'GB_2312-80'

elseif s:vim_encoding == 'euc-tw'

let s:html_encoding =

elseif s:vim_encoding = '^euc\|^iso\|^koi'

let s:html_encoding = substitute(s:vim_encoding, '.*', '\U\0', '')

elseif s:vim_encoding == 'cp949'

let s:html_encoding = 'KS_C_5601-1987'

elseif s:vim_encoding == 'cp936'

let s:html_encoding = 'GBK'

elseif s:vim_encoding = '^ucs\|^utf'

let s:html_encoding = 'UTF-8'

else

let s:html_encoding =

endif

endif

" Set some options to make it work faster. " Expand tabs in original buffer to get 'tabstop' correctly used. " Don't report changes for :substitute, there will be many of them. let s:old_title = &title let s:old_icon = &icon let s:old_et = &l:et let s:old_report = &report let s:old_search = @/ set notitle noicon setlocal et set report=1000000

" Split window to create a buffer with the HTML file. let s:sourceBufNr = bufnr("%") if expand("%") ==

let s:newBufName = 'Untitled.html'

else

let s:newBufName = expand("%") . '.html'

endif exe 'new ' . s:newBufName let s:newBufNr = bufnr(s:newBufName) set modifiable %d let s:old_paste = &paste set paste let s:old_magic = &magic set magic

" The DTD if exists("html_use_css")

exe "normal a<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"\n \"http://www.w3.org/TR/html4/strict.dtd\">\n\e"

endif

" HTML header, with the title and generator ;-). Left free space for the CSS, " to be filled at the end. exe "normal a<html>\n<head>\n<title>\e" exe "normal a" . expand("%:p:") . "</title>\n\e" exe "normal a<meta name=\"Generator\" content=\"Vim/" . version/100 . "." . version %100 . "\">\n\e" if s:html_encoding !=

exe "normal a<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:html_encoding . "\">\n\e"

endif if exists("html_use_css")

exe "normal a<style type=\"text/css\">\n<!--\n-->\n</style>\n\e"

endif if exists("html_no_pre")

exe "normal a</head>\n<body>\n\e"

else

exe "normal a</head>\n<body>\n<pre>\n\e"

endif

exe 'b' . s:sourceBufNr

" List of all id's let s:idlist = ","

let s:expandedtab = ' ' while strlen(s:expandedtab) < &ts

let s:expandedtab = s:expandedtab . ' '

endwhile

" Loop over all lines in the original text. " Use html_start_line and html_end_line if they are set. if exists("html_start_line")

let s:lnum = html_start_line if s:lnum < 1 || s:lnum > line("$")

let s:lnum = 1

endif

else

let s:lnum = 1

endif if exists("html_end_line")

let s:end = html_end_line if s:end < s:lnum || s:end > line("$")

let s:end = line("$")

endif

else

let s:end = line("$")

endif

while s:lnum <= s:end

" Get the current line let s:line = getline(s:lnum) let s:len = strlen(s:line) let s:new =

if s:numblines

let s:new = '<span class="lnr">' . strpart(' ', 0, strlen(line("$")) - strlen(s:lnum)) . s:lnum . '</span> '

endif

" Loop over each character in the line let s:col = 1 while s:col <= s:len

let s:startcol = s:col " The start column for processing text let s:id = synID(s:lnum, s:col, 1) let s:col = s:col + 1 " Speed loop (it's small - that's the trick) " Go along till we find a change in synID while s:col <= s:len && s:id == synID(s:lnum, s:col, 1) | let s:col = s:col + 1 | endwhile

" Output the text with the same synID, with class set to {s:id_name} let s:id = synIDtrans(s:id) let s:id_name = synIDattr(s:id, "name", s:whatterm) let s:new = s:new . '<span class="' . s:id_name . '">' . substitute(substitute(substitute(substitute(substitute(strpart(s:line, s:startcol - 1, s:col - s:startcol), '&', '\&', 'g'), '<', '\<', 'g'), '>', '\>', 'g'), '"', '\"', 'g'), "\x0c", '<hr class="PAGE-BREAK">', 'g') . '</span>' " Add the class to class list if it's not there yet if stridx(s:idlist, "," . s:id . ",") == -1

let s:idlist = s:idlist . s:id . ","

endif

if s:col > s:len

break

endif

endwhile

" Expand tabs let s:pad=0 let s:start = 0 let s:idx = stridx(s:line, "\t") while s:idx >= 0

let s:i = &ts - ((s:start + s:pad + s:idx) % &ts) let s:new = substitute(s:new, '\t', strpart(s:expandedtab, 0, s:i), '') let s:pad = s:pad + s:i - 1 let s:start = s:start + s:idx + 1 let s:idx = stridx(strpart(s:line, s:start), "\t")

endwhile

if exists("html_no_pre")

let s:new = substitute(s:new, ' ', '\ \ ', 'g') . '<br>'

endif exe 'b' . s:newBufNr exe "normal a" . strtrans(s:new) . "\n\e" exe 'b' . s:sourceBufNr let s:lnum = s:lnum + 1 +

endwhile " Finish with the last line exe 'b' . s:newBufNr if exists("html_no_pre")

exe "normal a\n</body>\n</html>\e"

else

exe "normal a</pre>\n</body>\n</html>\e"

endif

" Now, when we finally know which, we define the colors and styles if exists("html_use_css")

8

endif

" Find out the background and foreground color. let s:fgc = s:HtmlColor?(synIDattr(hlID("Normal"), "fg#", s:whatterm)) let s:bgc = s:HtmlColor?(synIDattr(hlID("Normal"), "bg#", s:whatterm)) if s:fgc ==

let s:fgc = ( &background == "dark" ? "#ffffff" : "#000000" )

endif if s:bgc ==

let s:bgc = ( &background == "dark" ? "#000000" : "#ffffff" )

endif

" Normal/global attributes " For Netscape 4, set <body> attributes too, though, strictly speaking, it's " incorrect. if exists("html_use_css")

if exists("html_no_pre")

execute "normal A\nbody { color: " . s:fgc . "; background-color: " . s:bgc . "; font-family: Courier, monospace; }\e"

else

execute "normal A\npre { color: " . s:fgc . "; background-color: " . s:bgc . "; }\e" yank put execute "normal ^cwbody\e"

endif

else

if exists("html_no_pre")

execute '%s:<body>:<body ' . 'bgcolor="' . s:bgc . '" text="' . s:fgc . '" style="font-family\: Courier, monospace;">'

else

execute '%s:<body>:<body ' . 'bgcolor="' . s:bgc . '" text="' . s:fgc . '">'

endif

endif

" Line numbering attributes if s:numblines

if exists("html_use_css")

execute "normal A\n.lnr { " . s:CSS1(hlID("LineNr?")) . "}\e"

else

execute '%s+<span class="lnr">\(^<?*\)</span>+' . s:HtmlOpening?(hlID("LineNr?")) . '\1' . s:HtmlClosing?(hlID("LineNr?")) . '+g'

endif

endif

" Gather attributes for all other classes let s:idlist = strpart(s:idlist, 1) while s:idlist !=

let s:attr = let s:col = stridx(s:idlist, ",") let s:id = strpart(s:idlist, 0, s:col) let s:idlist = strpart(s:idlist, s:col + 1) let s:attr = s:CSS1(s:id) let s:id_name = synIDattr(s:id, "name", s:whatterm) " If the class has some attributes, export the style, otherwise DELETE all " its occurences to make the HTML shorter if s:attr !=

if exists("html_use_css")

execute "normal A\n." . s:id_name . " { " . s:attr . "}"

else

execute '%s+<span class="' . s:id_name . '">\(^<?*\)</span>+' . s:HtmlOpening?(s:id) . '\1' . s:HtmlClosing?(s:id) . '+g'

endif

else

execute '%s+<span class="' . s:id_name . '">\(^<?*\)</span>+\1+g' 8

endif

endwhile

" Add hyperlinks %s+\(http://\S\{-}\)\(\([.,;:]\=\(\s\|$\)\)\|[\\"'<>]\)+<A HREF="\1">\1</A>\2+ge

" Cleanup %s:\s\+$::e

" Restore old settings let &report = s:old_report let &title = s:old_title let &icon = s:old_icon let &paste = s:old_paste let &magic = s:old_magic let @/ = s:old_search exe 'b' . s:sourceBufNr let &l:et = s:old_et exe 'b' . s:newBufNr

" Save a little bit of memory (worths doing?) unlet s:old_et s:old_paste s:old_icon s:old_report s:old_title s:old_search unlet s:whatterm s:idlist s:lnum s:end s:fgc s:bgc s:old_magic unlet! s:col s:id s:attr s:len s:line s:new s:did_retab s:numblines delfunc s:HtmlColor? delfunc s:CSS1 if !exists("html_use_css")

delfunc s:HtmlOpening? delfunc s:HtmlClosing?

endif </verbatim>

<small>P latin wife latin booty latin bitch latin escorts latin booty mexican porn

transvestite fashion transexual operation contact transvestite tranny clip tranny sex tranny clip

picture large penis big black dick fucking suck my big dick huge cock dick huge penis big penis fuck

ebony clips ebony women naked ebony sex pics ebony porn sites ebony fuck ebony chocolate

crossdressing arse her chicks with dicks porn chicks with dicks pics her

transgender com transvestite maids transvestite forced transexual escorts london transsexual escorts london famous transsexual

spanking video caning video spank enema spanking fetish femdom spanking stories spank belt

|?

tight butt in my ass booty movies sweet ass tits and ass ebony booty

</small>


Copyright © 2007 RobertMelton.com