# HG changeset patch # User Bram Moolenaar # Date 1289936080 -3600 # Node ID 840c3cadb8428aaa62103d34715f71563da40d7e # Parent b803b277688037509ad1b6d30466721396d8967f Updated runtime files. diff --git a/runtime/autoload/tohtml.vim b/runtime/autoload/tohtml.vim --- a/runtime/autoload/tohtml.vim +++ b/runtime/autoload/tohtml.vim @@ -1,6 +1,6 @@ " Vim autoload file for the tohtml plugin. " Maintainer: Ben Fritz -" Last Change: 2010 Aug 12 +" Last Change: 2010 Oct 07 " " Additional contributors: " @@ -13,10 +13,284 @@ let s:cpo_sav = &cpo set cpo-=C -func! tohtml#Convert2HTML(line1, line2) +" Automatically find charsets from all encodings supported natively by Vim. With +" the 8bit- and 2byte- prefixes, Vim can actually support more encodings than +" this. Let the user specify these however since they won't be supported on +" every system. TODO: how? g:html_charsets and g:html_encodings? +" +" Note, not all of Vim's supported encodings have a charset to use. +" +" Names in this list are from: +" http://www.iana.org/assignments/character-sets +" g:tohtml#encoding_to_charset: {{{ +let g:tohtml#encoding_to_charset = { + \ 'latin1' : 'ISO-8859-1', + \ 'iso-8859-2' : 'ISO-8859-2', + \ 'iso-8859-3' : 'ISO-8859-3', + \ 'iso-8859-4' : 'ISO-8859-4', + \ 'iso-8859-5' : 'ISO-8859-5', + \ 'iso-8859-6' : 'ISO-8859-6', + \ 'iso-8859-7' : 'ISO-8859-7', + \ 'iso-8859-8' : 'ISO-8859-8', + \ 'iso-8859-9' : 'ISO-8859-9', + \ 'iso-8859-10' : '', + \ 'iso-8859-13' : 'ISO-8859-13', + \ 'iso-8859-14' : '', + \ 'iso-8859-15' : 'ISO-8859-15', + \ 'koi8-r' : 'KOI8-R', + \ 'koi8-u' : 'KOI8-U', + \ 'macroman' : 'macintosh', + \ 'cp437' : '', + \ 'cp775' : '', + \ 'cp850' : '', + \ 'cp852' : '', + \ 'cp855' : '', + \ 'cp857' : '', + \ 'cp860' : '', + \ 'cp861' : '', + \ 'cp862' : '', + \ 'cp863' : '', + \ 'cp865' : '', + \ 'cp866' : 'IBM866', + \ 'cp869' : '', + \ 'cp874' : '', + \ 'cp1250' : 'windows-1250', + \ 'cp1251' : 'windows-1251', + \ 'cp1253' : 'windows-1253', + \ 'cp1254' : 'windows-1254', + \ 'cp1255' : 'windows-1255', + \ 'cp1256' : 'windows-1256', + \ 'cp1257' : 'windows-1257', + \ 'cp1258' : 'windows-1258', + \ 'euc-jp' : 'EUC-JP', + \ 'sjis' : 'Shift_JIS', + \ 'cp932' : 'Shift_JIS', + \ 'cp949' : '', + \ 'euc-kr' : 'EUC-KR', + \ 'cp936' : 'GBK', + \ 'euc-cn' : 'GB2312', + \ 'big5' : 'Big5', + \ 'cp950' : 'Big5', + \ 'utf-8' : 'UTF-8', + \ 'ucs-2' : 'UTF-8', + \ 'ucs-2le' : 'UTF-8', + \ 'utf-16' : 'UTF-8', + \ 'utf-16le' : 'UTF-8', + \ 'ucs-4' : 'UTF-8', + \ 'ucs-4le' : 'UTF-8', + \ } +lockvar g:tohtml#encoding_to_charset +" Notes: +" 1. All UCS/UTF are converted to UTF-8 because it is much better supported +" 2. Any blank spaces are there because Vim supports it but at least one major +" web browser does not according to http://wiki.whatwg.org/wiki/Web_Encodings. +" }}} + +" Only automatically find encodings supported natively by Vim, let the user +" specify the encoding if it's not natively supported. This function is only +" used when the user specifies the charset, they better know what they are +" doing! +" +" Names in this list are from: +" http://www.iana.org/assignments/character-sets +" g:tohtml#charset_to_encoding: {{{ +let g:tohtml#charset_to_encoding = { + \ 'iso_8859-1:1987' : 'latin1', + \ 'iso-ir-100' : 'latin1', + \ 'iso_8859-1' : 'latin1', + \ 'iso-8859-1' : 'latin1', + \ 'latin1' : 'latin1', + \ 'l1' : 'latin1', + \ 'ibm819' : 'latin1', + \ 'cp819' : 'latin1', + \ 'csisolatin1' : 'latin1', + \ 'iso_8859-2:1987' : 'iso-8859-2', + \ 'iso-ir-101' : 'iso-8859-2', + \ 'iso_8859-2' : 'iso-8859-2', + \ 'iso-8859-2' : 'iso-8859-2', + \ 'latin2' : 'iso-8859-2', + \ 'l2' : 'iso-8859-2', + \ 'csisolatin2' : 'iso-8859-2', + \ 'iso_8859-3:1988' : 'iso-8859-3', + \ 'iso-ir-109' : 'iso-8859-3', + \ 'iso_8859-3' : 'iso-8859-3', + \ 'iso-8859-3' : 'iso-8859-3', + \ 'latin3' : 'iso-8859-3', + \ 'l3' : 'iso-8859-3', + \ 'csisolatin3' : 'iso-8859-3', + \ 'iso_8859-4:1988' : 'iso-8859-4', + \ 'iso-ir-110' : 'iso-8859-4', + \ 'iso_8859-4' : 'iso-8859-4', + \ 'iso-8859-4' : 'iso-8859-4', + \ 'latin4' : 'iso-8859-4', + \ 'l4' : 'iso-8859-4', + \ 'csisolatin4' : 'iso-8859-4', + \ 'iso_8859-5:1988' : 'iso-8859-5', + \ 'iso-ir-144' : 'iso-8859-5', + \ 'iso_8859-5' : 'iso-8859-5', + \ 'iso-8859-5' : 'iso-8859-5', + \ 'cyrillic' : 'iso-8859-5', + \ 'csisolatincyrillic' : 'iso-8859-5', + \ 'iso_8859-6:1987' : 'iso-8859-6', + \ 'iso-ir-127' : 'iso-8859-6', + \ 'iso_8859-6' : 'iso-8859-6', + \ 'iso-8859-6' : 'iso-8859-6', + \ 'ecma-114' : 'iso-8859-6', + \ 'asmo-708' : 'iso-8859-6', + \ 'arabic' : 'iso-8859-6', + \ 'csisolatinarabic' : 'iso-8859-6', + \ 'iso_8859-7:1987' : 'iso-8859-7', + \ 'iso-ir-126' : 'iso-8859-7', + \ 'iso_8859-7' : 'iso-8859-7', + \ 'iso-8859-7' : 'iso-8859-7', + \ 'elot_928' : 'iso-8859-7', + \ 'ecma-118' : 'iso-8859-7', + \ 'greek' : 'iso-8859-7', + \ 'greek8' : 'iso-8859-7', + \ 'csisolatingreek' : 'iso-8859-7', + \ 'iso_8859-8:1988' : 'iso-8859-8', + \ 'iso-ir-138' : 'iso-8859-8', + \ 'iso_8859-8' : 'iso-8859-8', + \ 'iso-8859-8' : 'iso-8859-8', + \ 'hebrew' : 'iso-8859-8', + \ 'csisolatinhebrew' : 'iso-8859-8', + \ 'iso_8859-9:1989' : 'iso-8859-9', + \ 'iso-ir-148' : 'iso-8859-9', + \ 'iso_8859-9' : 'iso-8859-9', + \ 'iso-8859-9' : 'iso-8859-9', + \ 'latin5' : 'iso-8859-9', + \ 'l5' : 'iso-8859-9', + \ 'csisolatin5' : 'iso-8859-9', + \ 'iso-8859-10' : 'iso-8859-10', + \ 'iso-ir-157' : 'iso-8859-10', + \ 'l6' : 'iso-8859-10', + \ 'iso_8859-10:1992' : 'iso-8859-10', + \ 'csisolatin6' : 'iso-8859-10', + \ 'latin6' : 'iso-8859-10', + \ 'iso-8859-13' : 'iso-8859-13', + \ 'iso-8859-14' : 'iso-8859-14', + \ 'iso-ir-199' : 'iso-8859-14', + \ 'iso_8859-14:1998' : 'iso-8859-14', + \ 'iso_8859-14' : 'iso-8859-14', + \ 'latin8' : 'iso-8859-14', + \ 'iso-celtic' : 'iso-8859-14', + \ 'l8' : 'iso-8859-14', + \ 'iso-8859-15' : 'iso-8859-15', + \ 'iso_8859-15' : 'iso-8859-15', + \ 'latin-9' : 'iso-8859-15', + \ 'koi8-r' : 'koi8-r', + \ 'cskoi8r' : 'koi8-r', + \ 'koi8-u' : 'koi8-u', + \ 'macintosh' : 'macroman', + \ 'mac' : 'macroman', + \ 'csmacintosh' : 'macroman', + \ 'ibm437' : 'cp437', + \ 'cp437' : 'cp437', + \ '437' : 'cp437', + \ 'cspc8codepage437' : 'cp437', + \ 'ibm775' : 'cp775', + \ 'cp775' : 'cp775', + \ 'cspc775baltic' : 'cp775', + \ 'ibm850' : 'cp850', + \ 'cp850' : 'cp850', + \ '850' : 'cp850', + \ 'cspc850multilingual' : 'cp850', + \ 'ibm852' : 'cp852', + \ 'cp852' : 'cp852', + \ '852' : 'cp852', + \ 'cspcp852' : 'cp852', + \ 'ibm855' : 'cp855', + \ 'cp855' : 'cp855', + \ '855' : 'cp855', + \ 'csibm855' : 'cp855', + \ 'ibm857' : 'cp857', + \ 'cp857' : 'cp857', + \ '857' : 'cp857', + \ 'csibm857' : 'cp857', + \ 'ibm860' : 'cp860', + \ 'cp860' : 'cp860', + \ '860' : 'cp860', + \ 'csibm860' : 'cp860', + \ 'ibm861' : 'cp861', + \ 'cp861' : 'cp861', + \ '861' : 'cp861', + \ 'cp-is' : 'cp861', + \ 'csibm861' : 'cp861', + \ 'ibm862' : 'cp862', + \ 'cp862' : 'cp862', + \ '862' : 'cp862', + \ 'cspc862latinhebrew' : 'cp862', + \ 'ibm863' : 'cp863', + \ 'cp863' : 'cp863', + \ '863' : 'cp863', + \ 'csibm863' : 'cp863', + \ 'ibm865' : 'cp865', + \ 'cp865' : 'cp865', + \ '865' : 'cp865', + \ 'csibm865' : 'cp865', + \ 'ibm866' : 'cp866', + \ 'cp866' : 'cp866', + \ '866' : 'cp866', + \ 'csibm866' : 'cp866', + \ 'ibm869' : 'cp869', + \ 'cp869' : 'cp869', + \ '869' : 'cp869', + \ 'cp-gr' : 'cp869', + \ 'csibm869' : 'cp869', + \ 'windows-1250' : 'cp1250', + \ 'windows-1251' : 'cp1251', + \ 'windows-1253' : 'cp1253', + \ 'windows-1254' : 'cp1254', + \ 'windows-1255' : 'cp1255', + \ 'windows-1256' : 'cp1256', + \ 'windows-1257' : 'cp1257', + \ 'windows-1258' : 'cp1258', + \ 'extended_unix_code_packed_format_for_japanese' : 'euc-jp', + \ 'cseucpkdfmtjapanese' : 'euc-jp', + \ 'euc-jp' : 'euc-jp', + \ 'shift_jis' : 'sjis', + \ 'ms_kanji' : 'sjis', + \ 'sjis' : 'sjis', + \ 'csshiftjis' : 'sjis', + \ 'ibm-thai' : 'cp874', + \ 'csibmthai' : 'cp874', + \ 'ks_c_5601-1987' : 'cp949', + \ 'iso-ir-149' : 'cp949', + \ 'ks_c_5601-1989' : 'cp949', + \ 'ksc_5601' : 'cp949', + \ 'korean' : 'cp949', + \ 'csksc56011987' : 'cp949', + \ 'euc-kr' : 'euc-kr', + \ 'cseuckr' : 'euc-kr', + \ 'gbk' : 'cp936', + \ 'cp936' : 'cp936', + \ 'ms936' : 'cp936', + \ 'windows-936' : 'cp936', + \ 'gb_2312-80' : 'euc-cn', + \ 'iso-ir-58' : 'euc-cn', + \ 'chinese' : 'euc-cn', + \ 'csiso58gb231280' : 'euc-cn', + \ 'big5' : 'big5', + \ 'csbig5' : 'big5', + \ 'utf-8' : 'utf-8', + \ 'iso-10646-ucs-2' : 'ucs-2', + \ 'csunicode' : 'ucs-2', + \ 'utf-16' : 'utf-16', + \ 'utf-16be' : 'utf-16', + \ 'utf-16le' : 'utf-16le', + \ 'utf-32' : 'ucs-4', + \ 'utf-32be' : 'ucs-4', + \ 'utf-32le' : 'ucs-4le', + \ 'iso-10646-ucs-4' : 'ucs-4', + \ 'csucs4' : 'ucs-4' + \ } +lockvar g:tohtml#charset_to_encoding +"}}} + +func! tohtml#Convert2HTML(line1, line2) "{{{ let s:settings = tohtml#GetUserSettings() - if !&diff || s:settings.diff_one_file + if !&diff || s:settings.diff_one_file "{{{ if a:line2 >= a:line1 let g:html_start_line = a:line1 let g:html_end_line = a:line2 @@ -24,31 +298,50 @@ func! tohtml#Convert2HTML(line1, line2) let g:html_start_line = a:line2 let g:html_end_line = a:line1 endif - runtime syntax/2html.vim - else + runtime syntax/2html.vim "}}} + else "{{{ let win_list = [] let buf_list = [] windo | if &diff | call add(win_list, winbufnr(0)) | endif let s:settings.whole_filler = 1 let g:html_diff_win_num = 0 for window in win_list + " switch to the next buffer to convert exe ":" . bufwinnr(window) . "wincmd w" + + " figure out whether current charset and encoding will work, if not + " default to UTF-8 + if !exists('g:html_use_encoding') && + \ (&l:fileencoding!='' && &l:fileencoding!=s:settings.vim_encoding || + \ &l:fileencoding=='' && &encoding!=s:settings.vim_encoding) + echohl WarningMsg + echomsg "TOhtml: mismatched file encodings in Diff buffers, using UTF-8" + echohl None + let s:settings.vim_encoding = 'utf-8' + let s:settings.encoding = 'UTF-8' + endif + + " set up for diff-mode conversion let g:html_start_line = 1 let g:html_end_line = line('$') let g:html_diff_win_num += 1 + + " convert this file runtime syntax/2html.vim + + " remember the HTML buffer for later combination call add(buf_list, bufnr('%')) endfor unlet g:html_diff_win_num call tohtml#Diff2HTML(win_list, buf_list) - endif + endif "}}} unlet g:html_start_line unlet g:html_end_line unlet s:settings -endfunc +endfunc "}}} -func! tohtml#Diff2HTML(win_list, buf_list) +func! tohtml#Diff2HTML(win_list, buf_list) "{{{ let xml_line = "" let tag_close = '>' @@ -87,7 +380,7 @@ func! tohtml#Diff2HTML(win_list, buf_lis call add(html, '') " include encoding as close to the top as possible, but only if not already - " contained in XML information (to avoid haggling over content type) + " contained in XML information if s:settings.encoding != "" && !s:settings.use_xhtml call add(html, "') 1 @@ -151,8 +445,10 @@ func! tohtml#Diff2HTML(win_list, buf_lis let insert_index += 1 endif endfor - endif + endif " }}} + " everything new will get added before the diff styles so diff highlight + " properly overrides normal highlight if diff_style_start != 0 let insert_index = diff_style_start endif @@ -203,6 +499,20 @@ func! tohtml#Diff2HTML(win_list, buf_lis " just in case some user autocmd creates content in the new buffer, make sure " it is empty before proceeding %d + + " set the fileencoding to match the charset we'll be using + let &l:fileencoding=s:settings.vim_encoding + + " According to http://www.w3.org/TR/html4/charset.html#doc-char-set, the byte + " order mark is highly recommend on the web when using multibyte encodings. But, + " it is not a good idea to include it on UTF-8 files. Otherwise, let Vim + " determine when it is actually inserted. + if s:settings.vim_encoding == 'utf-8' + setlocal nobomb + else + setlocal bomb + endif + call append(0, html) if len(style) > 0 @@ -210,7 +520,7 @@ func! tohtml#Diff2HTML(win_list, buf_lis let style_start = search('^')-1 " 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, [ \ "" \ ]) - endif + endif "}}} " Insert styles from all the generated html documents and additional styles " for the table-based layout of the side-by-side diff. The diff should take " up the full browser window (but not more), and be static in size, " horizontally scrollable when the lines are too long. Otherwise, the diff - " is pretty useless for really long lines. + " is pretty useless for really long lines. {{{ if s:settings.use_css call append(style_start, \ ['' - \ ]) - endif + \]) + endif "}}} endif let &paste = s:old_paste let &magic = s:old_magic -endfunc +endfunc "}}} " Gets a single user option and sets it in the passed-in Dict, or gives it the " default value if the option doesn't actually exist. -func! tohtml#GetOption(settings, option, default) +func! tohtml#GetOption(settings, option, default) "{{{ if exists('g:html_'.a:option) let a:settings[a:option] = g:html_{a:option} else let a:settings[a:option] = a:default endif -endfunc +endfunc "}}} " returns a Dict containing the values of all user options for 2html, including " default values for those not given an explicit value by the user. Discards the " html_ prefix of the option for nicer looking code. -func! tohtml#GetUserSettings() +func! tohtml#GetUserSettings() "{{{ if exists('s:settings') " just restore the known options if we've already retrieved them return s:settings @@ -289,7 +599,7 @@ func! tohtml#GetUserSettings() let g:html_use_xhtml = g:use_xhtml endif - " get current option settings with appropriate defaults + " get current option settings with appropriate defaults {{{ call tohtml#GetOption(user_settings, 'no_progress', !has("statusline") ) call tohtml#GetOption(user_settings, 'diff_one_file', 0 ) call tohtml#GetOption(user_settings, 'number_lines', &number ) @@ -302,8 +612,9 @@ func! tohtml#GetUserSettings() call tohtml#GetOption(user_settings, 'no_pre', 0 ) call tohtml#GetOption(user_settings, 'whole_filler', 0 ) call tohtml#GetOption(user_settings, 'use_xhtml', 0 ) + " }}} - " override those settings that need it + " override those settings that need it {{{ " hover opening implies dynamic folding if user_settings.hover_unfold @@ -330,49 +641,91 @@ func! tohtml#GetUserSettings() " aren't allowed inside a
 block
     if !user_settings.use_css
       let user_settings.no_pre = 1
-    endif
+    endif "}}}
 
-    " Figure out proper MIME charset from the 'encoding' option.
-    if exists("g:html_use_encoding")
+    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
       let user_settings.encoding = g:html_use_encoding
-    else
-      let vim_encoding = &encoding
-      if vim_encoding =~ '^8bit\|^2byte'
-	let vim_encoding = substitute(vim_encoding, '^8bit-\|^2byte-', '', '')
+      let user_settings.vim_encoding = tohtml#EncodingFromCharset(g:html_use_encoding)
+      if user_settings.vim_encoding == ''
+	echohl WarningMsg
+	echomsg "TOhtml: file encoding for"
+	      \ g:html_use_encoding
+	      \ "unknown, please set 'fileencoding'"
+	echohl None
       endif
-      if vim_encoding == 'latin1'
-	let user_settings.encoding = 'iso-8859-1'
-      elseif vim_encoding =~ "^cp12"
-	let user_settings.encoding = substitute(vim_encoding, 'cp', 'windows-', '')
-      elseif vim_encoding == 'sjis' || vim_encoding == 'cp932'
-	let user_settings.encoding = 'Shift_JIS'
-      elseif vim_encoding == 'big5' || vim_encoding == 'cp950'
-	let user_settings.encoding = "Big5"
-      elseif vim_encoding == 'euc-cn'
-	let user_settings.encoding = 'GB_2312-80'
-      elseif vim_encoding == 'euc-tw'
-	let user_settings.encoding = ""
-      elseif vim_encoding =~ '^euc\|^iso\|^koi'
-	let user_settings.encoding = substitute(vim_encoding, '.*', '\U\0', '')
-      elseif vim_encoding == 'cp949'
-	let user_settings.encoding = 'KS_C_5601-1987'
-      elseif vim_encoding == 'cp936'
-	let user_settings.encoding = 'GBK'
-      elseif vim_encoding =~ '^ucs\|^utf'
+    else
+      " Figure out proper MIME charset from 'fileencoding' if possible
+      if &l:fileencoding != ''
+	let user_settings.vim_encoding = &l:fileencoding
+	call tohtml#CharsetFromEncoding(user_settings)
+      endif
+
+      " else from 'encoding' if possible
+      if &l:fileencoding == '' || user_settings.encoding == ''
+	let user_settings.vim_encoding = &encoding
+	call tohtml#CharsetFromEncoding(user_settings)
+      endif
+
+      " else default to UTF-8 and warn user
+      if user_settings.encoding == ''
+	let user_settings.vim_encoding = 'utf-8'
 	let user_settings.encoding = 'UTF-8'
-      else
-	let user_settings.encoding = ""
+	echohl WarningMsg
+	echomsg "TOhtml: couldn't determine MIME charset, using UTF-8"
+	echohl None
       endif
-    endif
+    endif "}}}
 
     " TODO: font
 
     return user_settings
   endif
-endfunc
+endfunc "}}}
+
+" get the proper HTML charset name from a Vim encoding option.
+function! tohtml#CharsetFromEncoding(settings) "{{{
+  let l:vim_encoding = a:settings.vim_encoding
+  if exists('g:html_charset_override') && has_key(g:html_charset_override, l:vim_encoding)
+    let a:settings.encoding = g:html_charset_override[l:vim_encoding]
+  else
+    if l:vim_encoding =~ '^8bit\|^2byte'
+      " 8bit- and 2byte- prefixes are to indicate encodings available on the
+      " system that Vim will convert with iconv(), look up just the encoding name,
+      " not Vim's prefix.
+      let l:vim_encoding = substitute(l:vim_encoding, '^8bit-\|^2byte-', '', '')
+    endif
+    if has_key(g:tohtml#encoding_to_charset, l:vim_encoding)
+      let a:settings.encoding = g:tohtml#encoding_to_charset[l:vim_encoding]
+    else
+      let a:settings.encoding = ""
+    endif
+  endif
+  if a:settings.encoding != ""
+    let l:vim_encoding = tohtml#EncodingFromCharset(a:settings.encoding)
+    if l:vim_encoding != ""
+      " if the Vim encoding to HTML encoding conversion is set up (by default or
+      " by the user) to convert to a different encoding, we need to also change
+      " the Vim encoding of the new buffer
+      let a:settings.vim_encoding = l:vim_encoding
+    endif
+  endif
+endfun "}}}
+
+" Get the proper Vim encoding option setting from an HTML charset name.
+function! tohtml#EncodingFromCharset(encoding) "{{{
+  if exists('g:html_encoding_override') && has_key(g:html_encoding_override, a:encoding)
+    return g:html_encoding_override[a:encoding]
+  elseif has_key(g:tohtml#charset_to_encoding, tolower(a:encoding))
+    return g:tohtml#charset_to_encoding[tolower(a:encoding)]
+  else
+    return ""
+  endif
+endfun "}}}
 
 let &cpo = s:cpo_sav
 unlet s:cpo_sav
 
 " Make sure any patches will probably use consistent indent
-"   vim: ts=8 sw=2 sts=2 noet
+"   vim: ts=8 sw=2 sts=2 noet fdm=marker
diff --git a/runtime/doc/arabic.txt b/runtime/doc/arabic.txt
--- a/runtime/doc/arabic.txt
+++ b/runtime/doc/arabic.txt
@@ -1,4 +1,4 @@
-*arabic.txt*	For Vim version 7.3.  Last change: 2005 Mar 29
+*arabic.txt*	For Vim version 7.3.  Last change: 2010 Nov 13
 
 
 		  VIM REFERENCE MANUAL	  by Nadim Shaikli
@@ -146,7 +146,7 @@ o  Enable Arabic settings [short-cut]
 		:set arabic
 <
    The two above noted possible invocations are the preferred manner
-   in which users are instructed to proceed.  Baring an enabled 'termbidi'
+   in which users are instructed to proceed.  Barring an enabled 'termbidi'
    setting, both command options:
 
      1. set the appropriate keymap
diff --git a/runtime/doc/diff.txt b/runtime/doc/diff.txt
--- a/runtime/doc/diff.txt
+++ b/runtime/doc/diff.txt
@@ -1,4 +1,4 @@
-*diff.txt*      For Vim version 7.3.  Last change: 2010 Sep 30
+*diff.txt*      For Vim version 7.3.  Last change: 2010 Nov 03
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -373,8 +373,8 @@ get an error message.  Possible causes:
 If it's not clear what the problem is set the 'verbose' option to one or more
 to see more messages.
 
-The self-installing Vim includes a diff program.  If you don't have it you
-might want to download a diff.exe.  For example from
+The self-installing Vim for MS-Windows includes a diff program.  If you don't
+have it you might want to download a diff.exe.  For example from
 http://jlb.twu.net/code/unixkit.php.
 
 
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*	For Vim version 7.3.  Last change: 2010 Oct 27
+*eval.txt*	For Vim version 7.3.  Last change: 2010 Nov 13
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -4017,7 +4017,7 @@ maparg({name}[, {mode} [, {abbr} [, {dic
 			     characters will be used:
 			     " "     Normal, Visual and Operator-pending
 			     "!"     Insert and Commandline mode
-				     (|mapmpde-ic|)
+				     (|mapmode-ic|)
 		  "sid"	     The script local ID, used for  mappings
 			     (||).
 
diff --git a/runtime/doc/gui.txt b/runtime/doc/gui.txt
--- a/runtime/doc/gui.txt
+++ b/runtime/doc/gui.txt
@@ -1,4 +1,4 @@
-*gui.txt*       For Vim version 7.3.  Last change: 2010 May 14
+*gui.txt*       For Vim version 7.3.  Last change: 2010 Nov 03
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -156,26 +156,26 @@ configure which ones appear with the 'gu
 
 The interface looks like this (with ":set guioptions=mlrb"):
 
-		       +------------------------------+
-		       | File  Edit		 Help | <- Menu bar (m)
-		       +-+--------------------------+-+
-		       |^|			    |^|
-		       |#| Text area.		    |#|
-		       | |			    | |
-		       |v|__________________________|v|
- Normal status line -> |-+ File.c	       5,2  +-|
- between Vim windows   |^|""""""""""""""""""""""""""|^|
-		       | |			    | |
-		       | | Another file buffer.     | |
-		       | |			    | |
-		       |#|			    |#|
- Left scrollbar (l) -> |#|			    |#| <- Right
-		       |#|			    |#|    scrollbar (r)
-		       | |			    | |
-		       |v|			    |v|
-		       +-+--------------------------+-+
-		       | |< ####		   >| | <- Bottom
-		       +-+--------------------------+-+    scrollbar (b)
+		       +------------------------------+ `
+		       | File  Edit		 Help | <- Menu bar (m) `
+		       +-+--------------------------+-+ `
+		       |^|			    |^| `
+		       |#| Text area.		    |#| `
+		       | |			    | | `
+		       |v|__________________________|v| `
+ Normal status line -> |-+ File.c	       5,2  +-| `
+ between Vim windows   |^|""""""""""""""""""""""""""|^| `
+		       | |			    | | `
+		       | | Another file buffer.     | | `
+		       | |			    | | `
+		       |#|			    |#| `
+ Left scrollbar (l) -> |#|			    |#| <- Right `
+		       |#|			    |#|    scrollbar (r) `
+		       | |			    | | `
+		       |v|			    |v| `
+		       +-+--------------------------+-+ `
+		       | |< ####		   >| | <- Bottom `
+		       +-+--------------------------+-+    scrollbar (b) `
 
 Any of the scrollbar or menu components may be turned off by not putting the
 appropriate letter in the 'guioptions' string.  The bottom scrollbar is
diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -1,4 +1,4 @@
-*insert.txt*    For Vim version 7.3.  Last change: 2010 Oct 27
+*insert.txt*    For Vim version 7.3.  Last change: 2010 Nov 10
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1037,6 +1037,8 @@ items:
 			items that only differ in case are added
 	dup		when non-zero this match will be added even when an
 			item with the same word is already present.
+	empty		when non-zero this match will be added even when it is
+			an empty string
 
 All of these except 'icase' must be a string.  If an item does not meet these
 requirements then an error message is given and further items in the list are
@@ -1064,9 +1066,9 @@ match to the total list.  These matches 
 list!  Call |complete_check()| now and then to allow the user to press a key
 while still searching for matches.  Stop searching when it returns non-zero.
 
-The function is allowed to move the cursor, it is restored afterwards.  This
-option cannot be set from a |modeline| or in the |sandbox|, for security
-reasons.
+							*E839* *E840*
+The function is allowed to move the cursor, it is restored afterwards.
+The function is not allowed to move to another window or delete text.
 
 An example that completes the names of the months: >
 	fun! CompleteMonths(findstart, base)
diff --git a/runtime/doc/intro.txt b/runtime/doc/intro.txt
--- a/runtime/doc/intro.txt
+++ b/runtime/doc/intro.txt
@@ -1,4 +1,4 @@
-*intro.txt*     For Vim version 7.3.  Last change: 2010 Sep 29
+*intro.txt*     For Vim version 7.3.  Last change: 2010 Nov 03
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -703,7 +703,7 @@ Lines longer than the window width will 
 (see below).  The 'linebreak' option can be set to wrap at a blank character.
 
 If the window has room after the last line of the buffer, Vim will show '~' in
-the first column of the last lines in the window, like this: >
+the first column of the last lines in the window, like this:
 
 	+-----------------------+
 	|some line		|
@@ -715,7 +715,7 @@ the first column of the last lines in th
 Thus the '~' lines indicate that the end of the buffer was reached.
 
 If the last line in a window doesn't fit, Vim will indicate this with a '@' in
-the first column of the last lines in the window, like this: >
+the first column of the last lines in the window, like this:
 
 	+-----------------------+
 	|first line		|
diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt
--- a/runtime/doc/map.txt
+++ b/runtime/doc/map.txt
@@ -1,4 +1,4 @@
-*map.txt*       For Vim version 7.3.  Last change: 2010 Sep 29
+*map.txt*       For Vim version 7.3.  Last change: 2010 Nov 10
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1093,16 +1093,20 @@ is executed, it is transformed into a no
 
 For starters: See section |40.2| in the user manual.
 
-						*E183* *user-cmd-ambiguous*
+					*E183* *E841* *user-cmd-ambiguous*
 All user defined commands must start with an uppercase letter, to avoid
-confusion with builtin commands.  (There are a few builtin commands, notably
-:Next, :Print and :X, which do start with an uppercase letter.  The builtin
-will always take precedence in these cases).  The other characters of the user
-command can be uppercase letters, lowercase letters or digits.  When using
-digits, note that other commands that take a numeric argument may become
-ambiguous.  For example, the command ":Cc2" could be the user command ":Cc2"
-without an argument, or the command ":Cc" with argument "2".  It is advised to
-put a space between the command name and the argument to avoid these problems.
+confusion with builtin commands.  Exceptions are these builtin commands:
+	:Next
+	:X
+They cannot be used for a user defined command.  ":Print" is also an existing
+command, but it is deprecated and can be overruled.
+
+The other characters of the user command can be uppercase letters, lowercase
+letters or digits.  When using digits, note that other commands that take a
+numeric argument may become ambiguous.  For example, the command ":Cc2" could
+be the user command ":Cc2" without an argument, or the command ":Cc" with
+argument "2".  It is advised to put a space between the command name and the
+argument to avoid these problems.
 
 When using a user-defined command, the command can be abbreviated.  However, if
 an abbreviation is not unique, an error will be issued.  Furthermore, a
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 7.3.  Last change: 2010 Oct 23
+*options.txt*	For Vim version 7.3.  Last change: 2010 Nov 16
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -1699,7 +1699,8 @@ A jump table for the options with a shor
 	with CTRL-X CTRL-U. |i_CTRL-X_CTRL-U|
 	See |complete-functions| for an explanation of how the function is
 	invoked and what it should return.
-
+	This option cannot be set from a |modeline| or in the |sandbox|, for
+	security reasons.
 
 						*'completeopt'* *'cot'*
 'completeopt' 'cot'	string	(default: "menu,preview")
@@ -2843,6 +2844,7 @@ A jump table for the options with a shor
 	      "dos" is not present or no  is found in the file.
 	     Except: if "unix" was chosen, but there is a  before
 	     the first , and there appear to be more s than s in
+	     the first few lines, "mac" is used.
 	  4. If 'fileformat' is still not set, the first name from
 	     'fileformats' is used.
 	  When reading a file into an existing buffer, the same is done, but
@@ -6230,8 +6232,9 @@ A jump table for the options with a shor
 	Do smart autoindenting when starting a new line.  Works for C-like
 	programs, but can also be used for other languages.  'cindent' does
 	something like this, works better in most cases, but is more strict,
-	see |C-indenting|.  When 'cindent' is on, setting 'si' has no effect.
-	'indentexpr' is a more advanced alternative.
+	see |C-indenting|.  When 'cindent' is on or 'smartindent' is set,
+	setting 'si' has no effect.  'indentexpr' is a more advanced
+	alternative.
 	Normally 'autoindent' should also be on when using 'smartindent'.
 	An indent is automatically inserted:
 	- After a line ending in '{'.
@@ -7533,8 +7536,7 @@ A jump table for the options with a shor
 		with an uppercase letter, and don't contain a lowercase
 		letter.  Thus "KEEPTHIS and "K_L_M" are stored, but "KeepThis"
 		and "_K_L_M" are not.  Nested List and Dict items may not be
-		read back correctly, you end up with a string representation
-		instead.
+		read back correctly, you end up with an empty item.
 	"	Maximum number of lines saved for each register.  Old name of
 		the '<' item, with the disadvantage that you need to put a
 		backslash before the ", otherwise it will be recognized as the
diff --git a/runtime/doc/pi_tar.txt b/runtime/doc/pi_tar.txt
--- a/runtime/doc/pi_tar.txt
+++ b/runtime/doc/pi_tar.txt
@@ -1,4 +1,4 @@
-*pi_tar.txt*	For Vim version 7.3.  Last change: 2010 Aug 09
+*pi_tar.txt*	For Vim version 7.3.  Last change: 2010 Nov 03
 
 		       +====================+
 		       | Tar File Interface |
@@ -60,11 +60,11 @@ 3. Options						*tar-options*
    <.vimrc> file.
                          Default
    Variable               Value   Explanation
-   *g:tar_browseoptions*  "Ptf"   used to get a list of contents
-   *g:tar_readoptions*    "OPxf"  used to extract a file from a tarball
-   *g:tar_cmd*            "tar"   the name of the tar program
-   *g:tar_nomax*            0     if true, file window will not be maximized
-   *g:tar_secure*         undef   if exists:
+   *g:tar_browseoptions*    "Ptf"   used to get a list of contents
+   *g:tar_readoptions*      "OPxf"  used to extract a file from a tarball
+   *g:tar_cmd*              "tar"   the name of the tar program
+   *g:tar_nomax*              0     if true, file window will not be maximized
+   *g:tar_secure*           undef   if exists:
 					"--"s will be used to prevent unwanted
 					option expansion in tar commands.
 					Please be sure that your tar command
@@ -76,7 +76,7 @@ 3. Options						*tar-options*
 					"-"
 				  Not all tar's support the "--" which is why
 				  it isn't default.
-   *g:tar_writeoptions*   "uf"    used to update/replace a file
+   *g:tar_writeoptions*     "uf"    used to update/replace a file
 
 
 ==============================================================================
diff --git a/runtime/doc/quotes.txt b/runtime/doc/quotes.txt
--- a/runtime/doc/quotes.txt
+++ b/runtime/doc/quotes.txt
@@ -1,4 +1,4 @@
-*quotes.txt*    For Vim version 7.3.  Last change: 2006 Apr 24
+*quotes.txt*    For Vim version 7.3.  Last change: 2010 Nov 03
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -260,15 +260,16 @@ Eccettuato, Italy)
 
 
 In summary:
-     __     ___		    _	    _	_  ___ _____
-     \ \   / (_)_ __ ___   (_)___  | | | |/ _ \_   _|
-      \ \ / /| | '_ ` _ \  | / __| | |_| | | | || |
-       \ V / | | | | | | | | \__ \ |  _  | |_| || |
-	\_/  |_|_| |_| |_| |_|___/ |_| |_|\___/ |_|
-	     ____ _____ _   _ _____ _____ _ _
-	    / ___|_   _| | | |	___|  ___| | |
-	    \___ \ | | | | | | |_  | |_  | | |
-	     ___) || | | |_| |	_| |  _| |_|_|
-	    |____/ |_|	\___/|_|   |_|	 (_|_)	      (Tony Nugent, Australia)
+     __     ___		    _	    _	_  ___ _____ `
+     \ \   / (_)_ __ ___   (_)___  | | | |/ _ \_   _| `
+      \ \ / /| | '_ ` _ \  | / __| | |_| | | | || | `
+       \ V / | | | | | | | | \__ \ |  _  | |_| || | `
+	\_/  |_|_| |_| |_| |_|___/ |_| |_|\___/ |_| `
+	     ____ _____ _   _ _____ _____ _ _ `
+	    / ___|_   _| | | |	___|  ___| | | `
+	    \___ \ | | | | | | |_  | |_  | | | `
+	     ___) || | | |_| |	_| |  _| |_|_| `
+	    |____/ |_|	\___/|_|   |_|	 (_|_)	    (Tony Nugent, Australia) `
+
 
  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 7.3.  Last change: 2010 Sep 23
+*syntax.txt*	For Vim version 7.3.  Last change: 2010 Oct 7
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -390,10 +390,10 @@ Or use the ":TOhtml" user command.  It i
 
 	:10,40TOhtml
 
-Warning: This is slow! The script must process every character of every line.
-Because it is so slow, by default a progress bar is displayed in the
-statusline for each step that usually takes a long time. If you don't like
-seeing this progress bar, you can disable it and get a very minor speed
+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
@@ -475,40 +475,69 @@ risk of making some things look a bit di
 This will use 
at the end of each line and use " " for repeated spaces. -The current value of 'encoding' is used to specify the charset of the HTML -file. This only works for those values of 'encoding' that have an equivalent -HTML charset name. To overrule this set g:html_use_encoding to the name of -the charset to be used: > - :let g:html_use_encoding = "foobar" -To omit the line that specifies the charset, set g:html_use_encoding to an -empty string: > +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 +< +TOhtml uses the current value of 'fileencoding' if set, or 'encoding' if not, +to determine the charset and 'fileencoding' of the HTML file. 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. + +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: > + :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: > :let g:html_use_encoding = "" To go back to the automatic mechanism, delete the g:html_use_encoding variable: > :unlet g:html_use_encoding -< -For diff mode 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 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 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: > + :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 UTF-32 instead, use: > + :let g:html_charset_override = {'ucs-4': 'UTF-32', 'utf-16': 'UTF-16'} + +Note that documents encoded in either UTF-32 or UTF-16 have known +compatibility problems with at least one major browser. + *convert-to-XML* *convert-to-XHTML* -An alternative is to have the script generate XHTML (XML compliant HTML). To -do this set the "html_use_xhtml" variable: > +If you do not like plain HTML, an alternative is to have the script generate +XHTML (XML compliant HTML). To do this set the "html_use_xhtml" variable: > :let g:html_use_xhtml = 1 -Any of these options can be enabled or disabled by setting them explicitly to -the desired value, or restored to their default by removing the variable using -|:unlet|. +Any of the on/off options listed above can be enabled or disabled by setting +them explicitly to the desired value, or restored to their default by removing +the variable using |:unlet|. Remarks: -- This only works in a version with GUI support. If the GUI is not actually - running (possible for X11) it still works, but not very well (the colors - may be wrong). - Some truly ancient browsers may not show the background colors. - From most browsers you can also print the file (in color)! +- This version of TOhtml may 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: > diff --git a/runtime/doc/tags b/runtime/doc/tags --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -4216,7 +4216,9 @@ E835 options.txt /*E835* E836 if_pyth.txt /*E836* E837 if_pyth.txt /*E837* E838 netbeans.txt /*E838* +E839 insert.txt /*E839* E84 windows.txt /*E84* +E840 insert.txt /*E840* E85 options.txt /*E85* E86 windows.txt /*E86* E87 windows.txt /*E87* diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt --- a/runtime/doc/todo.txt +++ b/runtime/doc/todo.txt @@ -1,4 +1,4 @@ -*todo.txt* For Vim version 7.3. Last change: 2010 Oct 27 +*todo.txt* For Vim version 7.3. Last change: 2010 Nov 16 VIM REFERENCE MANUAL by Bram Moolenaar @@ -30,7 +30,11 @@ be worked on, but only if you sponsor Vi *known-bugs* -------------------- Known bugs and current work ----------------------- -Segfault with command line abbreviation. (Randy Morris, 2010 Oct 25) +Crash when using vimgrep with an ftp file. (Christian Brabandt, 2010 Nov 5) +Crash with dragn-n-drop of file combined with netrw (Marius Gedminas, 2008 Jun +11) I can't reproduce it. It's probably caused by a handle_drop() call +in combination with autocommands that invoke a ":redraw" command. +Another valgrind output Jun 30. 'cursorline' is displayed too short when there are concealed characters and 'list' is set, 'listchars' at default value. (Dennis Preiser, 2010 Aug 15) @@ -38,6 +42,10 @@ Segfault with command line abbreviation. Conceal: using Tab for cchar causes problems. Should reject it. (ZyX, 2010 Aug 25) +Problems with building after 7.3.050, -as-needed does not work for gcc 4.4.1? +(Charles Campbell, 2010 Nov 7) Or is the problem that we should use -ltinfo, +because nothing is used from ncurses? + Syntax region with 'concealends' and a 'cchar' value, 'conceallevel' set to 2, only one of the two ends gets the cchar displayed. (Brett Stahlman, 2010 Aug 21, Ben Fritz, 2010 Sep 14) @@ -56,53 +64,42 @@ Using ":break" or something else that st ":finally" does not rethrow a previously uncaught exception. (ZyX, 2010 Oct 15) -Patch for 2html to support 'fileencoding'. (Benjamin Fritz, 2010 Sep 10) -Beta testing finished now? - -Three patches for undo persistence. (Christian Brabandt, 2010 Sep 4) - -Patch to adjust mzscheme to support racket. (Sergey Khorev, 2010 Oct 24) - string() can't parse back "inf" and "nan". Fix documentation or fix code? (ZyX, 2010 Aug 23) -Patch to use "--as-needed" instead of the link.sh functionality. (Kirill A. -Shutemov, 2010 Aug 25) - -ml_get error for using :copen in a custom complete function. (Xavier -Deguillard, 2010 Oct 19) Other way to reproduce it by Lech Lorens, Oct 20. -Patch from Lech: Oct 20. More problems from Lech, Oct 21. - -Patch to fix complete(). (Kikuchan, 2010 Oct 15) - maparg() does not show the