mirror of
https://github.com/macvim-dev/macvim.git
synced 2026-06-02 11:19:22 +02:00
Compare commits
89 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d1182d2223 | |||
| 1be91f7476 | |||
| caabb3f058 | |||
| 50b3a7f8e7 | |||
| 34d035c0ac | |||
| e88db6d282 | |||
| 7d51f1a543 | |||
| cd6656d82b | |||
| 3017c44c4b | |||
| 25ac995bea | |||
| 7b65439491 | |||
| f2c486c416 | |||
| c42b133098 | |||
| 29697da99f | |||
| aa0a6d7be4 | |||
| 5a48d473ef | |||
| d6a9ced3b1 | |||
| a1faf70262 | |||
| 115821eae9 | |||
| 664e7696dd | |||
| 4d81d0d159 | |||
| 38b368ba4d | |||
| 3e515b81da | |||
| 5ac44c0391 | |||
| a17cdd917e | |||
| 4ece06e069 | |||
| 7c84bd9153 | |||
| 8601f0b5aa | |||
| 35e32414c7 | |||
| e703226fe0 | |||
| 401556f3b1 | |||
| 2b09922e3c | |||
| 2286d370ca | |||
| 96d70531dd | |||
| 17bcd02554 | |||
| 4f6c7e6888 | |||
| 73b4a4e09e | |||
| 1e08012084 | |||
| 29dfc2cfeb | |||
| 1d286783fc | |||
| dc7ffe83f7 | |||
| 419aa8ea7e | |||
| a3b7664813 | |||
| a9b86193df | |||
| 6505c5126b | |||
| 951183ee1c | |||
| 917f0addc2 | |||
| 32e3d8896d | |||
| d2e82df267 | |||
| 8587729a7a | |||
| 7282627798 | |||
| 180512e308 | |||
| 8a2d7636c8 | |||
| 5c71a17d6c | |||
| 76712c4f9c | |||
| 65cb201df3 | |||
| cfce532319 | |||
| 35a2c2a0c3 | |||
| 41a630757e | |||
| aa49bfd374 | |||
| 745b4e08ad | |||
| 4641b5152a | |||
| 2f0e0b3e71 | |||
| 33685d8d01 | |||
| c68d7a56e1 | |||
| 2f749d43e9 | |||
| ba7586c13b | |||
| 074c397ed7 | |||
| 8e94a6f547 | |||
| 74cbc24648 | |||
| 8b9203b419 | |||
| 112534aad5 | |||
| 679e2d9461 | |||
| 79603e8b55 | |||
| 243ebf0db8 | |||
| c9972234b6 | |||
| 5055b0389e | |||
| 73626de24f | |||
| 733962c814 | |||
| 98b5cd3e62 | |||
| 291a5c40b4 | |||
| 4758cc5fb2 | |||
| a95ebf0fcd | |||
| 801135edc8 | |||
| 0a7cafb2c8 | |||
| a112c49589 | |||
| b5f9dd7b3f | |||
| eb3ed243d9 | |||
| 0a8e611590 |
+405
-52
@@ -1,6 +1,6 @@
|
||||
" Vim autoload file for the tohtml plugin.
|
||||
" Maintainer: Ben Fritz <fritzophrenic@gmail.com>
|
||||
" 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_list)
|
||||
call add(html, '<head>')
|
||||
|
||||
" 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, "<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:settings.encoding . '"' . tag_close)
|
||||
endif
|
||||
@@ -133,7 +426,8 @@ func! tohtml#Diff2HTML(win_list, buf_list)
|
||||
let s:body_end_line = getline('.')
|
||||
endif
|
||||
|
||||
" Grab the style information. Some of this will be duplicated...
|
||||
" Grab the style information. Some of this will be duplicated so only insert
|
||||
" it if it's not already there. {{{
|
||||
1
|
||||
let style_start = search('^<style type="text/css">')
|
||||
1
|
||||
@@ -151,8 +445,10 @@ func! tohtml#Diff2HTML(win_list, buf_list)
|
||||
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_list)
|
||||
" 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_list)
|
||||
let style_start = search('^</head>')-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, [
|
||||
\ "<script type='text/javascript'>",
|
||||
@@ -234,13 +544,13 @@ func! tohtml#Diff2HTML(win_list, buf_list)
|
||||
\ s:settings.use_xhtml ? '//]]>' : " -->",
|
||||
\ "</script>"
|
||||
\ ])
|
||||
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,
|
||||
\ ['<style type="text/css">']+
|
||||
@@ -252,28 +562,28 @@ func! tohtml#Diff2HTML(win_list, buf_list)
|
||||
\ 'td div { overflow: auto; }',
|
||||
\ s:settings.use_xhtml ? '' : '-->',
|
||||
\ '</style>'
|
||||
\ ])
|
||||
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 <pre> 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
|
||||
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
|
||||
else
|
||||
let vim_encoding = &encoding
|
||||
if vim_encoding =~ '^8bit\|^2byte'
|
||||
let vim_encoding = substitute(vim_encoding, '^8bit-\|^2byte-', '', '')
|
||||
" 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
|
||||
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 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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim compiler file
|
||||
" Compiler: GNU C Compiler
|
||||
" Maintainer: Nikolai Weibull <now@bitwi.se>
|
||||
" Latest Revision: 2010-05-30
|
||||
" Latest Revision: 2010-10-14
|
||||
|
||||
if exists("current_compiler")
|
||||
finish
|
||||
@@ -18,10 +18,10 @@ CompilerSet errorformat=
|
||||
\\"%f\"%*\\D%l:\ %m,
|
||||
\%-G%f:%l:\ %trror:\ (Each\ undeclared\ identifier\ is\ reported\ only\ once,
|
||||
\%-G%f:%l:\ %trror:\ for\ each\ function\ it\ appears\ in.),
|
||||
\%f:%l:%c:\ %terror:\ %m,
|
||||
\%f:%l:%c:\ %trror:\ %m,
|
||||
\%f:%l:%c:\ %tarning:\ %m,
|
||||
\%f:%l:%c:\ %m,
|
||||
\%f:%l:\ %terror:\ %m,
|
||||
\%f:%l:\ %trror:\ %m,
|
||||
\%f:%l:\ %tarning:\ %m,
|
||||
\%f:%l:\ %m,
|
||||
\\"%f\"\\,\ line\ %l%*\\D%c%*[^\ ]\ %m,
|
||||
|
||||
@@ -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
|
||||
|
||||
+17
-13
@@ -1,4 +1,4 @@
|
||||
*cmdline.txt* For Vim version 7.3. Last change: 2010 Sep 18
|
||||
*cmdline.txt* For Vim version 7.3. Last change: 2010 Nov 28
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -372,10 +372,10 @@ word before the cursor. This is available for:
|
||||
- Mappings: Only after a ":map" or similar command.
|
||||
- Variable and function names: Only after a ":if", ":call" or similar command.
|
||||
|
||||
When Vim was compiled with the |+cmdline_compl| feature disabled, only file
|
||||
names, directories and help items can be completed. The number of help item
|
||||
matches is limited (currently to 300) to avoid a long delay when there are
|
||||
very many matches.
|
||||
When Vim was compiled without the |+cmdline_compl| feature only file names,
|
||||
directories and help items can be completed. The number of help item matches
|
||||
is limited (currently to 300) to avoid a long delay when there are very many
|
||||
matches.
|
||||
|
||||
These are the commands that can be used:
|
||||
|
||||
@@ -782,30 +782,34 @@ it, no matter how many backslashes.
|
||||
*:<cword>* *:<cWORD>* *:<cfile>* *<cfile>*
|
||||
*:<sfile>* *<sfile>* *:<afile>* *<afile>*
|
||||
*:<abuf>* *<abuf>* *:<amatch>* *<amatch>*
|
||||
*E495* *E496* *E497* *E498* *E499* *E500*
|
||||
*E495* *E496* *E497* *E499* *E500*
|
||||
Note: these are typed literally, they are not special keys!
|
||||
<cword> is replaced with the word under the cursor (like |star|)
|
||||
<cWORD> is replaced with the WORD under the cursor (see |WORD|)
|
||||
<cfile> is replaced with the path name under the cursor (like what
|
||||
|gf| uses)
|
||||
<afile> when executing autocommands, is replaced with the file name
|
||||
for a file read or write
|
||||
<abuf> when executing autocommands, is replaced with the currently
|
||||
<afile> When executing autocommands, is replaced with the file name
|
||||
for a file read or write.
|
||||
<abuf> When executing autocommands, is replaced with the currently
|
||||
effective buffer number (for ":r file" and ":so file" it is
|
||||
the current buffer, the file being read/sourced is not in a
|
||||
buffer).
|
||||
<amatch> when executing autocommands, is replaced with the match for
|
||||
<amatch> When executing autocommands, is replaced with the match for
|
||||
which this autocommand was executed. It differs from
|
||||
<afile> only when the file name isn't used to match with
|
||||
(for FileType, Syntax and SpellFileMissing events).
|
||||
<sfile> when executing a ":source" command, is replaced with the
|
||||
file name of the sourced file;
|
||||
when executing a function, is replaced with
|
||||
<sfile> When executing a ":source" command, is replaced with the
|
||||
file name of the sourced file. *E498*
|
||||
When executing a function, is replaced with
|
||||
"function {function-name}"; function call nesting is
|
||||
indicated like this:
|
||||
"function {function-name1}..{function-name2}". Note that
|
||||
filename-modifiers are useless when <sfile> is used inside
|
||||
a function.
|
||||
<slnum> When executing a ":source" command, is replaced with the
|
||||
line number. *E842*
|
||||
When executing a function it's the line number relative to
|
||||
the start of the function.
|
||||
|
||||
*filename-modifiers*
|
||||
*:_%:* *::8* *::p* *::.* *::~* *::h* *::t* *::r* *::e* *::s* *::gs*
|
||||
|
||||
@@ -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 Dec 08
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -373,9 +373,9 @@ 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
|
||||
http://jlb.twu.net/code/unixkit.php.
|
||||
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://gnuwin32.sourceforge.net/packages/diffutils.htm.
|
||||
|
||||
|
||||
USING PATCHES *diff-patchexpr*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*editing.txt* For Vim version 7.3. Last change: 2010 Sep 18
|
||||
*editing.txt* For Vim version 7.3. Last change: 2010 Dec 08
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1340,7 +1340,7 @@ Vim is able to write files encrypted, and read them back. The encrypted text
|
||||
cannot be read without the right key.
|
||||
{only available when compiled with the |+cryptv| feature} *E833*
|
||||
|
||||
The text in the swap file and the undo file is also encrypted.
|
||||
The text in the swap file and the undo file is also encrypted. *E843*
|
||||
|
||||
Note: The text in memory is not encrypted. A system administrator may be able
|
||||
to see your text while you are editing it. When filtering text with
|
||||
|
||||
+66
-26
@@ -1,4 +1,4 @@
|
||||
*eval.txt* For Vim version 7.3. Last change: 2010 Sep 29
|
||||
*eval.txt* For Vim version 7.3. Last change: 2010 Dec 01
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1657,6 +1657,15 @@ v:version Version number of Vim: Major version number times 100 plus
|
||||
*v:warningmsg* *warningmsg-variable*
|
||||
v:warningmsg Last given warning message. It's allowed to set this variable.
|
||||
|
||||
*v:windowid* *windowid-variable*
|
||||
v:windowid When any X11 based GUI is running or when running in a
|
||||
terminal and Vim connects to the X server (|-X|) this will be
|
||||
set to the window ID.
|
||||
When an MS-Windows GUI is running this will be set to the
|
||||
window handle.
|
||||
Otherwise the value is zero.
|
||||
Note: for windows inside Vim use |winnr()|.
|
||||
|
||||
==============================================================================
|
||||
4. Builtin Functions *functions*
|
||||
|
||||
@@ -1822,7 +1831,7 @@ localtime() Number current time
|
||||
log( {expr}) Float natural logarithm (base e) of {expr}
|
||||
log10( {expr}) Float logarithm of Float {expr} to base 10
|
||||
map( {expr}, {string}) List/Dict change each item in {expr} to {expr}
|
||||
maparg( {name}[, {mode} [, {abbr}]])
|
||||
maparg( {name}[, {mode} [, {abbr} [, {dict}]]])
|
||||
String rhs of mapping {name} in mode {mode}
|
||||
mapcheck( {name}[, {mode} [, {abbr}]])
|
||||
String check for mappings matching {name}
|
||||
@@ -1934,6 +1943,7 @@ synID( {lnum}, {col}, {trans}) Number syntax ID at {lnum} and {col}
|
||||
synIDattr( {synID}, {what} [, {mode}])
|
||||
String attribute {what} of syntax ID {synID}
|
||||
synIDtrans( {synID}) Number translated syntax ID of {synID}
|
||||
synconcealed( {lnum}, {col}) List info about concealing
|
||||
synstack( {lnum}, {col}) List stack of syntax IDs at {lnum} and {col}
|
||||
system( {expr} [, {input}]) String output of shell command/filter {expr}
|
||||
tabpagebuflist( [{arg}]) List list of buffer numbers in tab page
|
||||
@@ -2710,7 +2720,7 @@ exp({expr}) *exp()*
|
||||
|
||||
expand({expr} [, {flag}]) *expand()*
|
||||
Expand wildcards and the following special keywords in {expr}.
|
||||
The result is a String.
|
||||
The result is a String. 'wildignorecase' applies.
|
||||
|
||||
When there are several matches, they are separated by <NL>
|
||||
characters. [Note: in version 5.0 a space was used, which
|
||||
@@ -2731,6 +2741,7 @@ expand({expr} [, {flag}]) *expand()*
|
||||
<abuf> autocmd buffer number (as a String!)
|
||||
<amatch> autocmd matched name
|
||||
<sfile> sourced script file name
|
||||
<slnum> sourced script file line number
|
||||
<cword> word under the cursor
|
||||
<cWORD> WORD under the cursor
|
||||
<client> the {clientid} of the last received
|
||||
@@ -3424,6 +3435,7 @@ glob({expr} [, {flag}]) *glob()*
|
||||
the 'suffixes' and 'wildignore' options apply: Names matching
|
||||
one of the patterns in 'wildignore' will be skipped and
|
||||
'suffixes' affect the ordering of matches.
|
||||
'wildignorecase' always applies.
|
||||
If the expansion fails, the result is an empty string.
|
||||
A name for a non-existing file is not included.
|
||||
|
||||
@@ -3966,23 +3978,51 @@ map({expr}, {string}) *map()*
|
||||
further items in {expr} are processed.
|
||||
|
||||
|
||||
maparg({name}[, {mode} [, {abbr}]]) *maparg()*
|
||||
Return the rhs of mapping {name} in mode {mode}. When there
|
||||
is no mapping for {name}, an empty String is returned.
|
||||
maparg({name}[, {mode} [, {abbr} [, {dict}]]]) *maparg()*
|
||||
When {dict} is omitted or zero: Return the rhs of mapping
|
||||
{name} in mode {mode}. The returned String has special
|
||||
characters translated like in the output of the ":map" command
|
||||
listing.
|
||||
|
||||
When there is no mapping for {name}, an empty String is
|
||||
returned.
|
||||
|
||||
The {name} can have special key names, like in the ":map"
|
||||
command.
|
||||
|
||||
{mode} can be one of these strings:
|
||||
"n" Normal
|
||||
"v" Visual
|
||||
"v" Visual (including Select)
|
||||
"o" Operator-pending
|
||||
"i" Insert
|
||||
"c" Cmd-line
|
||||
"s" Select
|
||||
"x" Visual
|
||||
"l" langmap |language-mapping|
|
||||
"" Normal, Visual and Operator-pending
|
||||
When {mode} is omitted, the modes for "" are used.
|
||||
|
||||
When {abbr} is there and it is non-zero use abbreviations
|
||||
instead of mappings.
|
||||
The {name} can have special key names, like in the ":map"
|
||||
command. The returned String has special characters
|
||||
translated like in the output of the ":map" command listing.
|
||||
|
||||
When {dict} is there and it is non-zero return a dictionary
|
||||
containing all the information of the mapping with the
|
||||
following items:
|
||||
"lhs" The {lhs} of the mapping.
|
||||
"rhs" The {rhs} of the mapping as typed.
|
||||
"silent" 1 for a |:map-silent| mapping, else 0.
|
||||
"noremap" 1 if the {rhs} of the mapping is not remappable.
|
||||
"expr" 1 for an expression mapping (|:map-<expr>|).
|
||||
"buffer" 1 for a buffer local mapping (|:map-local|).
|
||||
"mode" Modes for which the mapping is defined. In
|
||||
addition to the modes mentioned above, these
|
||||
characters will be used:
|
||||
" " Normal, Visual and Operator-pending
|
||||
"!" Insert and Commandline mode
|
||||
(|mapmode-ic|)
|
||||
"sid" The script local ID, used for <sid> mappings
|
||||
(|<SID>|).
|
||||
|
||||
The mappings local to the current buffer are checked first,
|
||||
then the global mappings.
|
||||
This function can be used to map a key even when it's already
|
||||
@@ -5416,8 +5456,8 @@ stridx({haystack}, {needle} [, {start}]) *stridx()*
|
||||
{haystack} of the first occurrence of the String {needle}.
|
||||
If {start} is specified, the search starts at index {start}.
|
||||
This can be used to find a second match: >
|
||||
:let comma1 = stridx(line, ",")
|
||||
:let comma2 = stridx(line, ",", comma1 + 1)
|
||||
:let colon1 = stridx(line, ":")
|
||||
:let colon2 = stridx(line, ":", colon1 + 1)
|
||||
< The search is done case-sensitive.
|
||||
For pattern searches use |match()|.
|
||||
-1 is returned if the {needle} does not occur in {haystack}.
|
||||
@@ -5558,20 +5598,6 @@ synID({lnum}, {col}, {trans}) *synID()*
|
||||
:echo synIDattr(synID(line("."), col("."), 1), "name")
|
||||
<
|
||||
|
||||
synconcealed({lnum}, {col}) *synconcealed()*
|
||||
The result is a List. The first item in the list is 0 if the
|
||||
character at the position {lnum} and {col} is not part of a
|
||||
concealable region, 1 if it is. The second item in the list is
|
||||
a string. If the first item is 1, the second item contains the
|
||||
text which will be displayed in place of the concealed text,
|
||||
depending on the current setting of 'conceallevel'. The third
|
||||
and final item in the list is a unique number representing the
|
||||
specific syntax region matched. This allows detection of the
|
||||
beginning of a new concealable region if there are two
|
||||
consecutive regions with the same replacement character.
|
||||
For an example use see $VIMRUNTIME/syntax/2html.vim .
|
||||
|
||||
|
||||
synIDattr({synID}, {what} [, {mode}]) *synIDattr()*
|
||||
The result is a String, which is the {what} attribute of
|
||||
syntax ID {synID}. This can be used to obtain information
|
||||
@@ -5612,6 +5638,20 @@ synIDtrans({synID}) *synIDtrans()*
|
||||
highlight the character. Highlight links given with
|
||||
":highlight link" are followed.
|
||||
|
||||
synconcealed({lnum}, {col}) *synconcealed()*
|
||||
The result is a List. The first item in the list is 0 if the
|
||||
character at the position {lnum} and {col} is not part of a
|
||||
concealable region, 1 if it is. The second item in the list is
|
||||
a string. If the first item is 1, the second item contains the
|
||||
text which will be displayed in place of the concealed text,
|
||||
depending on the current setting of 'conceallevel'. The third
|
||||
and final item in the list is a unique number representing the
|
||||
specific syntax region matched. This allows detection of the
|
||||
beginning of a new concealable region if there are two
|
||||
consecutive regions with the same replacement character.
|
||||
For an example use see $VIMRUNTIME/syntax/2html.vim .
|
||||
|
||||
|
||||
synstack({lnum}, {col}) *synstack()*
|
||||
Return a |List|, which is the stack of syntax items at the
|
||||
position {lnum} and {col} in the current window. Each item in
|
||||
|
||||
+21
-21
@@ -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 'guioptions' option.
|
||||
|
||||
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
|
||||
|
||||
+19
-1
@@ -172,6 +172,8 @@ time you start MacVim, you could create an alias such as >
|
||||
alias gvim='/Applications/MacVim.app/Contents/MacOS/Vim -g'
|
||||
and add that to "~/.profile".
|
||||
|
||||
Note: Do NOT call the MacVim binary inside the app bundle to start MacVim.
|
||||
|
||||
*mvim*
|
||||
A more flexible way to start MacVim is to use the shell script "mvim" which
|
||||
comes bundled with MacVim. Put this script in a folder in your path and then
|
||||
@@ -549,7 +551,8 @@ Note that url has to be a file:// url pointing to an existing local file.
|
||||
|
||||
Most keyboard shortcuts in MacVim are bound to menu items and can be
|
||||
discovered by looking through the menus (see |macvim-menus| on how to create
|
||||
your own menu shortcuts). The remaining shortcuts are listed here:
|
||||
your own menu shortcuts, see |cmd-key| on how to map your own commands to
|
||||
Cmd-key shortcuts). The remaining shortcuts are listed here:
|
||||
|
||||
*Cmd-.* *<D-.>*
|
||||
Cmd-. Interrupt Vim. Unlike Ctrl-C which is sent as normal
|
||||
@@ -608,6 +611,21 @@ equivalents which are not set up with :map).
|
||||
See |macvim-shift-movement| if you want Shift to select text when used in
|
||||
conjunction with the above Cmd/Alt movement shortcuts.
|
||||
|
||||
*cmd-key* *cmd-shortcuts*
|
||||
Creating key mappings that involve the Cmd key (<D-..> in Vim notation) can
|
||||
sometimes be slightly involved. Here are all the things you need to consider:
|
||||
|
||||
- Make sure the shortcut is not used by a menu item by looking through the
|
||||
menus. If it is then you need to unbind it before you can map to it. This
|
||||
is described under the help for the |:macmenu| command.
|
||||
- Bindings to <D-..> are case sensitive: <D-d> is not the same as <D-D>. If
|
||||
you want to map something to Cmd+Shift+d, then you need to use <D-D>, not
|
||||
<D-S-d> or <D-S-D>.
|
||||
- Some command key shortcuts are reserved by Mac OS X and cannot be mapped to
|
||||
(e.g. <D-Tab>). However, some of these shortcuts can be freed up in the
|
||||
System Preferences under Keyboard (e.g. Cmd+Space).
|
||||
- A few command key mappings are set up by MacVim, see |cmd-movement|.
|
||||
|
||||
==============================================================================
|
||||
11. Trackpad gestures *macvim-gestures*
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*if_pyth.txt* For Vim version 7.3. Last change: 2010 Aug 13
|
||||
*if_pyth.txt* For Vim version 7.3. Last change: 2010 Oct 20
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Paul Moore
|
||||
@@ -355,7 +355,7 @@ When Python 2 and Python 3 are both supported they must be loaded dynamically.
|
||||
When doing this on Linux/Unix systems and importing global symbols, this leads
|
||||
to a crash when the second Python version is used. So either global symbols
|
||||
are loaded but only one Python version is activated, or no global symbols are
|
||||
loaded. The latter makes Python's "import" fail on libaries that expect the
|
||||
loaded. The latter makes Python's "import" fail on libraries that expect the
|
||||
symbols to be provided by Vim.
|
||||
*E836* *E837*
|
||||
Vim's configuration script makes a guess for all libraries based on one
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*if_ruby.txt* For Vim version 7.3. Last change: 2010 Jul 20
|
||||
*if_ruby.txt* For Vim version 7.3. Last change: 2010 Oct 27
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Shugo Maeda
|
||||
@@ -40,6 +40,9 @@ downloading Ruby there.
|
||||
wasn't compiled in. To avoid errors, see
|
||||
|script-here|.
|
||||
|
||||
Command to try it out: >
|
||||
:ruby print "Hello" # this is a comment
|
||||
|
||||
Example Vim script: >
|
||||
|
||||
function! RedGem()
|
||||
@@ -187,12 +190,12 @@ $curbuf The current buffer object.
|
||||
==============================================================================
|
||||
6. Dynamic loading *ruby-dynamic*
|
||||
|
||||
On MS-Windows the Ruby library can be loaded dynamically. The |:version|
|
||||
output then includes |+ruby/dyn|.
|
||||
On MS-Windows and Unix the Ruby library can be loaded dynamically. The
|
||||
|:version| output then includes |+ruby/dyn|.
|
||||
|
||||
This means that Vim will search for the Ruby DLL file only when needed. When
|
||||
you don't use the Ruby interface you don't need it, thus you can use Vim
|
||||
without this DLL file.
|
||||
This means that Vim will search for the Ruby DLL file or shared library only
|
||||
when needed. When you don't use the Ruby interface you don't need it, thus
|
||||
you can use Vim even though this library file is not on your system.
|
||||
|
||||
You need to install the right version of Ruby for this to work. You can find
|
||||
the package to download from:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*indent.txt* For Vim version 7.3. Last change: 2010 Jul 30
|
||||
*indent.txt* For Vim version 7.3. Last change: 2010 Nov 27
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -258,6 +258,7 @@ assume a 'shiftwidth' of 4.
|
||||
<
|
||||
bN If N != 0 Vim will align a final "break" with the case label,
|
||||
so that case..break looks like a sort of block. (default: 0).
|
||||
When using 1, consider adding "0=break" to 'cinkeys'.
|
||||
|
||||
cino= cino=b1 >
|
||||
switch (x) switch(x)
|
||||
|
||||
+12
-5
@@ -1,4 +1,4 @@
|
||||
*insert.txt* For Vim version 7.3. Last change: 2010 Sep 29
|
||||
*insert.txt* For Vim version 7.3. Last change: 2010 Nov 10
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -382,6 +382,10 @@ mappings it's often better to use <Esc> (first put an "x" in the text, <Esc>
|
||||
will then always put the cursor on it). Or use CTRL-\ CTRL-O, but then
|
||||
beware of the cursor possibly being beyond the end of the line.
|
||||
|
||||
The CTRL-O command takes you to Normal mode. If you then use a command enter
|
||||
Insert mode again it doesn't nest. Thus when typing "a<C-O>a" and then <Esc>
|
||||
takes you back to Normal mode, you do not need to type <Esc> twice.
|
||||
|
||||
The shifted cursor keys are not available on all terminals.
|
||||
|
||||
Another side effect is that a count specified before the "i" or "a" command is
|
||||
@@ -1033,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
|
||||
@@ -1043,7 +1049,8 @@ be relatively short. The "info" item can be longer, it will be displayed in
|
||||
the preview window when "preview" appears in 'completeopt'. The "info" item
|
||||
will also remain displayed after the popup menu has been removed. This is
|
||||
useful for function arguments. Use a single space for "info" to remove
|
||||
existing text in the preview window.
|
||||
existing text in the preview window. The size of the preview window is three
|
||||
lines, but 'previewheight' is used when it has a value of 1 or 2.
|
||||
|
||||
The "kind" item uses a single letter to indicate the kind of completion. This
|
||||
may be used to show the completion differently (different color or icon).
|
||||
@@ -1059,9 +1066,9 @@ match to the total list. These matches should then not appear in the returned
|
||||
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)
|
||||
|
||||
@@ -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 Dec 08
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -616,7 +616,6 @@ Replace <Esc> -- -- <Insert> -- --
|
||||
Command-line *3 -- -- :start -- --
|
||||
Ex :vi -- -- -- -- --
|
||||
|
||||
- NA
|
||||
-- not possible
|
||||
|
||||
*1 Go from Normal mode to Insert mode by giving the command "i", "I", "a",
|
||||
@@ -703,7 +702,7 @@ Lines longer than the window width will wrap, unless the 'wrap' option is off
|
||||
(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 +714,7 @@ the first column of the last lines in the window, like this: >
|
||||
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 |
|
||||
@@ -730,7 +729,7 @@ window.
|
||||
When the "lastline" flag is present in the 'display' option, you will not see
|
||||
'@' characters at the left side of window. If the last line doesn't fit
|
||||
completely, only the part that fits is shown, and the last three characters of
|
||||
the last line are replaced with "@@@", like this: >
|
||||
the last line are replaced with "@@@", like this:
|
||||
|
||||
+-----------------------+
|
||||
|first line |
|
||||
|
||||
+14
-10
@@ -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 normal Ex command and then executed.
|
||||
|
||||
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
|
||||
|
||||
+57
-28
@@ -1,4 +1,4 @@
|
||||
*options.txt* For Vim version 7.3. Last change: 2010 Sep 21
|
||||
*options.txt* For Vim version 7.3. Last change: 2010 Dec 08
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1439,6 +1439,15 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
explicitly accessed using the "* notation. Also see
|
||||
|gui-clipboard|.
|
||||
|
||||
unnamedplus A variant of "unnamed" flag which uses the clipboard
|
||||
register '+' (|quoteplus|) instead of register '*' for
|
||||
all operations except yank. Yank shall copy the text
|
||||
into register '+' and also into '*' when "unnamed" is
|
||||
included.
|
||||
Only available with the |+X11| feature.
|
||||
Availability can be checked with: >
|
||||
if has('unnamedplus')
|
||||
<
|
||||
autoselect Works like the 'a' flag in 'guioptions': If present,
|
||||
then whenever Visual mode is started, or the Visual
|
||||
area extended, Vim tries to become the owner of the
|
||||
@@ -1501,6 +1510,25 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
feature}
|
||||
Number of screen lines to use for the command-line window. |cmdwin|
|
||||
|
||||
*'colorcolumn'* *'cc'*
|
||||
'colorcolumn' 'cc' string (default "")
|
||||
local to window
|
||||
{not in Vi}
|
||||
{not available when compiled without the |+syntax|
|
||||
feature}
|
||||
'colorcolumn' is a comma separated list of screen columns that are
|
||||
highlighted with ColorColumn |hl-ColorColumn|. Useful to align
|
||||
text. Will make screen redrawing slower.
|
||||
The screen column can be an absolute number, or a number preceded with
|
||||
'+' or '-', which is added to or subtracted from 'textwidth'. >
|
||||
|
||||
:set cc=+1 " highlight column after 'textwidth'
|
||||
:set cc=+1,+2,+3 " highlight three columns after 'textwidth'
|
||||
:hi ColorColumn ctermbg=lightgrey guibg=lightgrey
|
||||
<
|
||||
When 'textwidth' is zero then the items with '-' and '+' are not used.
|
||||
A maximum of 256 columns are highlighted.
|
||||
|
||||
*'columns'* *'co'* *E594*
|
||||
'columns' 'co' number (default 80 or terminal width)
|
||||
global
|
||||
@@ -1685,7 +1713,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
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")
|
||||
@@ -2829,6 +2858,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
"dos" is not present or no <CR><NL> is found in the file.
|
||||
Except: if "unix" was chosen, but there is a <CR> before
|
||||
the first <NL>, and there appear to be more <CR>s than <NL>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
|
||||
@@ -2836,6 +2866,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
file only, the option is not changed.
|
||||
When 'binary' is set, the value of 'fileformats' is not used.
|
||||
|
||||
Note that when Vim starts up with an empty buffer this option is not
|
||||
use. Set 'fileformat' in your .vimrc instead.
|
||||
|
||||
For systems with a Dos-like <EOL> (<CR><NL>), when reading files that
|
||||
are ":source"ed and for vimrc files, automatic <EOL> detection may be
|
||||
done:
|
||||
@@ -3075,6 +3108,10 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
Specifies for which type of commands folds will be opened, if the
|
||||
command moves the cursor into a closed fold. It is a comma separated
|
||||
list of items.
|
||||
NOTE: When the command is part of a mapping this option is not used.
|
||||
Add the |zv| command to the mapping to get the same effect.
|
||||
(rationale: the mapping may want to control opening folds itself)
|
||||
|
||||
item commands ~
|
||||
all any
|
||||
block "(", "{", "[[", "[{", etc.
|
||||
@@ -3089,8 +3126,6 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
Also for |[s| and |]s|.
|
||||
tag jumping to a tag: ":ta", CTRL-T, etc.
|
||||
undo undo or redo: "u" and CTRL-R
|
||||
When the command is part of a mapping this option is not used. Add
|
||||
the |zv| command to the mapping to get the same effect.
|
||||
When a movement command is used for an operator (e.g., "dl" or "y%")
|
||||
this option is not used. This means the operator will include the
|
||||
whole closed fold.
|
||||
@@ -3191,7 +3226,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
the internal format mechanism.
|
||||
|
||||
The expression may be evaluated in the |sandbox|, see
|
||||
|sandbox-option|.
|
||||
|sandbox-option|. That stops the option from working, since changing
|
||||
the buffer text is not allowed.
|
||||
|
||||
*'fsync'* *'fs'* *'nofsync'* *'nofs'*
|
||||
'fsync' 'fs' boolean (default on)
|
||||
@@ -4715,25 +4751,6 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
< This option cannot be set from a |modeline| or in the |sandbox|, for
|
||||
security reasons.
|
||||
|
||||
*'colorcolumn'* *'cc'*
|
||||
'colorcolumn' 'cc' string (default "")
|
||||
local to window
|
||||
{not in Vi}
|
||||
{not available when compiled without the |+syntax|
|
||||
feature}
|
||||
'colorcolumn' is a comma separated list of screen columns that are
|
||||
highlighted with ColorColumn |hl-ColorColumn|. Useful to align
|
||||
text. Will make screen redrawing slower.
|
||||
The screen column can be an absolute number, or a number preceded with
|
||||
'+' or '-', which is added to or subtracted from 'textwidth'. >
|
||||
|
||||
:set cc=+1 " highlight column after 'textwidth'
|
||||
:set cc=+1,+2,+3 " highlight three columns after 'textwidth'
|
||||
:hi ColorColumn ctermbg=lightgrey guibg=lightgrey
|
||||
<
|
||||
When 'textwidth' is zero then the items with '-' and '+' are not used.
|
||||
A maximum of 256 columns are highlighted.
|
||||
|
||||
*'matchpairs'* *'mps'*
|
||||
'matchpairs' 'mps' string (default "(:),{:},[:]")
|
||||
local to buffer
|
||||
@@ -6342,8 +6359,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
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 'indentexpr' 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 '{'.
|
||||
@@ -7656,8 +7674,8 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
! When included, save and restore global variables that start
|
||||
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. Only String and Number types are
|
||||
stored.
|
||||
and "_K_L_M" are not. Nested List and Dict items may not be
|
||||
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
|
||||
@@ -7873,6 +7891,17 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
a pattern from the list. This avoids problems when a future version
|
||||
uses another default.
|
||||
|
||||
|
||||
*'wildignorecase'* *'wic'* *'nowildignorecase'* *'nowic'*
|
||||
'wildignorecase' 'wic' boolean (default off)
|
||||
global
|
||||
{not in Vi}
|
||||
When set case is ignored when completing file names and directories.
|
||||
Has no effect on systems where file name case is generally ignored.
|
||||
Does not apply when the shell is used to expand wildcards, which
|
||||
happens when there are special characters.
|
||||
|
||||
|
||||
*'wildmenu'* *'wmnu'* *'nowildmenu'* *'nowmnu'*
|
||||
'wildmenu' 'wmnu' boolean (default off)
|
||||
global
|
||||
|
||||
@@ -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 @@ Copyright 2005-2010: The GPL (gnu public license) applies to *tar-copyright*
|
||||
<.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 @@ Copyright 2005-2010: The GPL (gnu public license) applies to *tar-copyright*
|
||||
"-"
|
||||
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
|
||||
|
||||
|
||||
==============================================================================
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*quickfix.txt* For Vim version 7.3. Last change: 2010 Jul 20
|
||||
*quickfix.txt* For Vim version 7.3. Last change: 2010 Oct 20
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -546,6 +546,14 @@ descriptors when searching many files. However, when the |:hide| command
|
||||
modifier is used the buffers are kept loaded. This makes following searches
|
||||
in the same files a lot faster.
|
||||
|
||||
Note that |:copen| (or |:lopen| for |:lgrep|) may be used to open a buffer
|
||||
containing the search results in linked form. The |:silent| command may be
|
||||
used to suppress the default full screen grep output. The |:grep!| form of
|
||||
the |:grep| command doesn't jump to the first match automatically. These
|
||||
commands can be combined to create a NewGrep command: >
|
||||
|
||||
command! -nargs=+ NewGrep execute 'silent grep! <args>' | copen 42
|
||||
|
||||
|
||||
5.1 using Vim's internal grep
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*quickref.txt* For Vim version 7.3. Last change: 2010 Sep 14
|
||||
*quickref.txt* For Vim version 7.3. Last change: 2010 Dec 02
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -938,6 +938,7 @@ Short explanation of each option: *option-list*
|
||||
'wildchar' 'wc' command-line character for wildcard expansion
|
||||
'wildcharm' 'wcm' like 'wildchar' but also works when mapped
|
||||
'wildignore' 'wig' files matching these patterns are not completed
|
||||
'wildignorecase' 'wic' ignore case when completing file names
|
||||
'wildmenu' 'wmnu' use menu for command line completion
|
||||
'wildmode' 'wim' mode for 'wildchar' command-line expansion
|
||||
'wildoptions' 'wop' specifies how command line completion is done
|
||||
|
||||
+12
-11
@@ -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:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*sign.txt* For Vim version 7.3. Last change: 2010 May 07
|
||||
*sign.txt* For Vim version 7.3. Last change: 2010 Oct 14
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Gordon Prieur
|
||||
@@ -70,7 +70,8 @@ DEFINING A SIGN. *:sign-define* *E255* *E160* *E612*
|
||||
:sign define {name} {argument}...
|
||||
Define a new sign or set attributes for an existing sign.
|
||||
The {name} can either be a number (all digits) or a name
|
||||
starting with a non-digit.
|
||||
starting with a non-digit. Leading digits are ignored, thus
|
||||
"0012", "012" and "12" are considered the same name.
|
||||
About 120 different signs can be defined.
|
||||
|
||||
Accepted arguments:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*spell.txt* For Vim version 7.3. Last change: 2010 Apr 11
|
||||
*spell.txt* For Vim version 7.3. Last change: 2010 Dec 08
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -335,6 +335,9 @@ A spell file might not be available in the current 'encoding'. See
|
||||
|spell-mkspell| about how to create a spell file. Converting a spell file
|
||||
with "iconv" will NOT work!
|
||||
|
||||
Note: on VMS ".{enc}.spl" is changed to "_{enc}.spl" to avoid trouble with
|
||||
filenames.
|
||||
|
||||
*spell-sug-file* *E781*
|
||||
If there is a file with exactly the same name as the ".spl" file but ending in
|
||||
".sug", that file will be used for giving better suggestions. It isn't loaded
|
||||
|
||||
+59
-30
@@ -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 Dec 08
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -390,10 +390,10 @@ Or use the ":TOhtml" user command. It is defined in a standard plugin.
|
||||
|
||||
: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 different, use: >
|
||||
This will use <br> 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: >
|
||||
: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: >
|
||||
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
|
||||
|
||||
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: >
|
||||
@@ -872,8 +901,8 @@ line to your startup file: >
|
||||
|
||||
|
||||
DOCBOOK *docbk.vim* *ft-docbk-syntax* *docbook*
|
||||
DOCBOOK XML *docbkxml.vim* *ft-docbkxml-syntax*
|
||||
DOCBOOK SGML *docbksgml.vim* *ft-docbksgml-syntax*
|
||||
DOCBOOK XML *docbkxml.vim* *ft-docbkxml-syntax*
|
||||
DOCBOOK SGML *docbksgml.vim* *ft-docbksgml-syntax*
|
||||
|
||||
There are two types of DocBook files: SGML and XML. To specify what type you
|
||||
are using the "b:docbk_type" variable should be set. Vim does this for you
|
||||
|
||||
@@ -671,6 +671,8 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME*
|
||||
'noweirdinvert' options.txt /*'noweirdinvert'*
|
||||
'nowfh' options.txt /*'nowfh'*
|
||||
'nowfw' options.txt /*'nowfw'*
|
||||
'nowic' options.txt /*'nowic'*
|
||||
'nowildignorecase' options.txt /*'nowildignorecase'*
|
||||
'nowildmenu' options.txt /*'nowildmenu'*
|
||||
'nowinfixheight' options.txt /*'nowinfixheight'*
|
||||
'nowinfixwidth' options.txt /*'nowinfixwidth'*
|
||||
@@ -1078,10 +1080,12 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME*
|
||||
'wh' options.txt /*'wh'*
|
||||
'whichwrap' options.txt /*'whichwrap'*
|
||||
'wi' options.txt /*'wi'*
|
||||
'wic' options.txt /*'wic'*
|
||||
'wig' options.txt /*'wig'*
|
||||
'wildchar' options.txt /*'wildchar'*
|
||||
'wildcharm' options.txt /*'wildcharm'*
|
||||
'wildignore' options.txt /*'wildignore'*
|
||||
'wildignorecase' options.txt /*'wildignorecase'*
|
||||
'wildmenu' options.txt /*'wildmenu'*
|
||||
'wildmode' options.txt /*'wildmode'*
|
||||
'wildoptions' options.txt /*'wildoptions'*
|
||||
@@ -4263,7 +4267,12 @@ 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*
|
||||
E841 map.txt /*E841*
|
||||
E842 cmdline.txt /*E842*
|
||||
E843 editing.txt /*E843*
|
||||
E85 options.txt /*E85*
|
||||
E86 windows.txt /*E86*
|
||||
E87 windows.txt /*E87*
|
||||
@@ -4987,7 +4996,9 @@ clearmatches() eval.txt /*clearmatches()*
|
||||
client-server remote.txt /*client-server*
|
||||
clientserver remote.txt /*clientserver*
|
||||
clipboard gui.txt /*clipboard*
|
||||
cmd-key gui_mac.txt /*cmd-key*
|
||||
cmd-movement gui_mac.txt /*cmd-movement*
|
||||
cmd-shortcuts gui_mac.txt /*cmd-shortcuts*
|
||||
cmdarg-variable eval.txt /*cmdarg-variable*
|
||||
cmdbang-variable eval.txt /*cmdbang-variable*
|
||||
cmdline-arguments vi_diff.txt /*cmdline-arguments*
|
||||
@@ -8175,6 +8186,7 @@ v:val eval.txt /*v:val*
|
||||
v:var eval.txt /*v:var*
|
||||
v:version eval.txt /*v:version*
|
||||
v:warningmsg eval.txt /*v:warningmsg*
|
||||
v:windowid eval.txt /*v:windowid*
|
||||
v_! change.txt /*v_!*
|
||||
v_$ visual.txt /*v_$*
|
||||
v_: cmdline.txt /*v_:*
|
||||
@@ -8450,6 +8462,7 @@ window-size term.txt /*window-size*
|
||||
window-size-functions usr_41.txt /*window-size-functions*
|
||||
window-tag windows.txt /*window-tag*
|
||||
window-variable eval.txt /*window-variable*
|
||||
windowid-variable eval.txt /*windowid-variable*
|
||||
windows windows.txt /*windows*
|
||||
windows-3.1 os_win32.txt /*windows-3.1*
|
||||
windows-intro windows.txt /*windows-intro*
|
||||
|
||||
+143
-72
@@ -1,4 +1,4 @@
|
||||
*todo.txt* For Vim version 7.3. Last change: 2010 Sep 29
|
||||
*todo.txt* For Vim version 7.3. Last change: 2010 Dec 08
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -30,81 +30,86 @@ be worked on, but only if you sponsor Vim development. See |sponsor|.
|
||||
*known-bugs*
|
||||
-------------------- Known bugs and current work -----------------------
|
||||
|
||||
Cursor position wrong when 'formatoptions' contains "a". (Moshe Kamensky, 2010
|
||||
Sep 7, Gary Johnson, 2010 Sep 14)
|
||||
Formatoptions cause cursor to jump. (ZyX, 2010 Aug 22)
|
||||
Caused by revision 2294, "Make joining a range of lines much faster. (Milan
|
||||
Vancura)" ?
|
||||
Patch by Carlo Teubner, 2010 Sep 25. Test Sep 26.
|
||||
|
||||
'cursorline' is displayed too short when there are concealed characters and
|
||||
'list' is set, 'listchars' at default value. (Dennis Preiser, 2010 Aug 15)
|
||||
|
||||
Hang on slave PTY on Mac. Patch from Nikola Knezevic, 2010 Aug 29.
|
||||
|
||||
Patch to fix sign type negative and memory not freed. (Xavier de Gaye, 2010
|
||||
Aug 20)
|
||||
|
||||
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)
|
||||
|
||||
Patch for :mksession not escaping file name properly. (Peter Odding, 2010 Sep
|
||||
19)
|
||||
|
||||
Patch for CTRL-] in help file doing wrong escaping. (Carlo Teubner, 2010 Sep
|
||||
25)
|
||||
|
||||
Patch to support List and Dict in .viminfo. (Christian Brabandt, 2010 Sep 24)
|
||||
Sep 26 with a test.
|
||||
|
||||
Patch for :grep docs. (Britton Kerin, 2010 Aug 31)
|
||||
|
||||
Patch for dynamic loading Ruby on Unix. (Jon, 2010 Aug 23)
|
||||
Included, but also need a change to configure.
|
||||
|
||||
Replacement R syntax file. (Jakson A. Aquino, 2010 Sep 29)
|
||||
|
||||
Windows keys not set properly on Windows 7? (cncyber, 2010 Aug 26)
|
||||
|
||||
maparg() doesn't return the flags, such as <buffer>, <script>, <silent>.
|
||||
These are needed to save and restore a mapping.
|
||||
Also: the rhs string is not always correct. (Hari Krishna Dara, 2009 Sept 29)
|
||||
Patch by Christian Brabandt, 2010 Sep 17.
|
||||
This line hangs Vim, because of syntax HL:
|
||||
call append(line, "INFO ....12....18....24....30....36....42....48....54....60....66....72....78%$")
|
||||
|
||||
Building the MingW version without clipboard but with multi-byte doesn't
|
||||
build. (Bill Lam, 2010 Sep 18)
|
||||
work. (Bill Lam, 2010 Sep 18)
|
||||
|
||||
When reading from stdin, don't enable signals before finishing reading?
|
||||
Otherwise the program producing the text may get killed by SIGWINCH.
|
||||
(Benjamin R. Haskell) Xavier: It's because reading from stdin returns -1.
|
||||
Patch from Xavier de Gaye, 2010 Dec 7. More generic solution?
|
||||
|
||||
Bug: E685 error for func_unref(). (ZyX, 2010 Aug 5)
|
||||
|
||||
Patch to fix warning for accessing mediumVersion. (Dominique Pelle, 2010 Aug
|
||||
18)
|
||||
Using ":break" or something else that stops executing commands inside a
|
||||
":finally" does not rethrow a previously uncaught exception. (ZyX, 2010 Oct
|
||||
15)
|
||||
|
||||
Patch for 2html to support 'fileencoding'. (Benjamin Fritz, 2010 Sep 10)
|
||||
|
||||
Patch to use 'previewheight' for popup menu. (Benjamin Haskell, 2010 Sep 29)
|
||||
|
||||
CTRL-] on help tag |/[\n]| doesn't jump to the right place. (Tony Mechelynck,
|
||||
2010 Aug 8)
|
||||
|
||||
Three patches for undo persistence. (Christian Brabandt, 2010 Sep 4)
|
||||
Vim using lots of memory when joining lines. (John Little, 2010 Dec 3)
|
||||
|
||||
string() can't parse back "inf" and "nan". Fix documentation or fix code?
|
||||
(ZyX, 2010 Aug 23)
|
||||
|
||||
":command Print echo 'print'" works, but ":Print" doesn't. Builtin Print
|
||||
should be overruled. (Aaron Thoma)
|
||||
Patch by Christian Brabandt, 2010 Sep 5.
|
||||
maparg() does not show the <script> flag. When temporarily changing a
|
||||
mapping, how to restore the script ID?
|
||||
|
||||
Comparing recursive structure loops forever. (ZyX, 2010 Aug 22, info from John
|
||||
Beckett Aug 23)
|
||||
Patch to fix \%V item in regexp. (Christian Brabandt, 2010 Nov 8)
|
||||
Update Nov 19. James Vega: still not right. Christian: it's difficult.
|
||||
|
||||
Highlighting stops working after changing it many times. Script to reproduce
|
||||
it: Pablo Contreras, 2010 Oct 12 Windows XP and 7. Font is never freed?
|
||||
|
||||
When 'cursorcolumn' is set locally to a window, ":new" opens a window with the
|
||||
same highlighting but 'cursorcolumn' is empty. (Tyru, 2010 Nov 15)
|
||||
|
||||
In the sandbox it's not allowed to do many things, but it's possible to change
|
||||
or set variables. Add a way to prevent variables from being changed in the
|
||||
sandbox? E.g.: ":protect g:restore_settings".
|
||||
|
||||
GTK: drawing a double-width combining character over single-width characters
|
||||
doesn't look right. (Dominique Pelle, 2010 Aug 8)
|
||||
|
||||
GTK: tear-off menu does not work. (Kurt Sonnenmoser, 2010 Oct 25)
|
||||
|
||||
Version of netbeans.c for use with MacVim. (Kazuki Sakamoto, 2010 Nov 18)
|
||||
|
||||
7.3.014 changed how backslash at end of line works, but still get a NUL when
|
||||
there is one backslash. (Ray Frush, 2010 Nov 18) What does the original ex
|
||||
do?
|
||||
|
||||
":find" completion does not escape space in directory name. (Isz, 2010 Nov 2)
|
||||
|
||||
Searching mixed with Visual mode doesn't redraw properly. (James Vega, 2010 Nov
|
||||
22)
|
||||
|
||||
Win32: When using Chinese tear-off menu doesn't work. (Weasley, 2010 Oct 31)
|
||||
Patch by Alex Jakushev, 2010 Nov 2.
|
||||
|
||||
Using ":call" inside "if 0" does not see that a function returns a Dict and
|
||||
gives error for "." as string concatenation. (Yasuhiro Matsumoto, 2010 Oct 20)
|
||||
Patch: Oct 20.
|
||||
|
||||
Patch to move check for emsg_not_now() up to avoid statusline not being
|
||||
updated. (James Vega, 2010 Nov 4)
|
||||
|
||||
Copy/paste between Vim and Google chrome doesn't work well for multi-byte
|
||||
characters. (Ben Haskell, 2010 Sep 17)
|
||||
When putting text in the cut buffer (when exiting) and conversion doesn't work
|
||||
@@ -115,25 +120,55 @@ clear why it doesn't work.
|
||||
Editing a file with a ^M with 'ff' set to "mac", opening a help file, then the
|
||||
^M is displayed as ^J sometimes. Getting 'ff' value from wrong window/buffer?
|
||||
|
||||
Since patch 7.2.46 Yankring plugin has become very slow, eventually make Vim
|
||||
crash? (Raiwil, 2010 Nov 17)
|
||||
|
||||
Patch to disallow fork() when __APPLE__ is defined. (Hisashi T Fujinaka, 2010
|
||||
Nov 25)
|
||||
|
||||
GTK: Patch to fix menu popping down. (Hong Xu, 2010 Dec 4, Dec 5)
|
||||
|
||||
Patch to add 'systemencoding', convert between 'encoding' and this for file
|
||||
names, shell commands and the like. (Kikuchan, 2010 Oct 14)
|
||||
Assume the system converts between the actual encoding of the filesystem to
|
||||
the system encoding (usually utf-8).
|
||||
|
||||
Problem producing tags file when hebrew.frx is present. It has a BOM.
|
||||
Results in E670. (Tony Mechelynck, 2010 May 2)
|
||||
|
||||
Patch to support sorting on floating point number. (Alex Jakushev, 2010 Oct
|
||||
30)
|
||||
|
||||
Ruby: ":ruby print $buffer.number" returns zero.
|
||||
|
||||
setpos() does not restore cursor position after :normal. (Tyru, 2010 Aug 11)
|
||||
|
||||
7 The 'directory' option supports changing path separators to "%" to make
|
||||
file names unique, also support this for 'backupdir'. (Mikolaj Machowski)
|
||||
Patch by Christian Brabandt, 2010 Oct 21.
|
||||
|
||||
getpos()/setpos() don't include curswant. getpos() could return a fifth
|
||||
element. setpos() could accept an optional fifth element.
|
||||
Patch by Christian Brabandt, 2010 Sep 6. Check that new argument is optional
|
||||
and that it's documented.
|
||||
|
||||
With "tw=55 fo+=a" typing space before ) doesn't work well. (Scott Mcdermott,
|
||||
2010 Oct 24)
|
||||
|
||||
Patch to add random number generator. (Hong Xu, 2010 Nov 8, update Nov 10)
|
||||
Alternative from Christian Brabandt. (2010 Sep 19)
|
||||
|
||||
Messages in message.txt are highlighted as examples.
|
||||
|
||||
Win32: Patch to fix slow access over network (David Anderson). Cleaned up by
|
||||
John Beckett, 2010 Aug 25.
|
||||
When using cp850 the NBSP (0xff) is not drawn correctly. (Brett Stahlman, 2010
|
||||
Oct 22) 'isprint' is set to "@,161-255".
|
||||
|
||||
Test 73 fails on MS-Windows when compiled with DJGPP and run twice. How to
|
||||
delete the Xfind directory? Add an rmdir() function, just like we have
|
||||
mkdir().
|
||||
|
||||
":echo "\x85" =~# '[\u0085]'" returns 1 instead of 0. (ZyX, 2010 Oct 3)
|
||||
|
||||
'cindent' not correct when 'list' is set. (Zdravi Korusef, 2010 Apr 15)
|
||||
|
||||
Windows installer: licence text should not use indent, causes bad word wrap.
|
||||
@@ -151,19 +186,35 @@ Echo starts in the wrong column:
|
||||
while 1 | let s = input('A') | echo 'R' | endw
|
||||
(Boyko Bantchev, 2010 Aug 9)
|
||||
|
||||
Patch for GVimExt to show an icon. (Dominik Riebeling, 2010 Nov 7)
|
||||
|
||||
Patch: Let rare word highlighting overrule good word highlighting.
|
||||
(Jakson A. Aquino, 2010 Jul 30)
|
||||
|
||||
Patch to make more characters work in dialogs. (Yankwei Jia, 2010 Aug 4)
|
||||
|
||||
":drop" does not respect 'autochdir'. (Peter Odding, 2010 Jul 24)
|
||||
Patch for VisVim, pass file name to VimOpenFile. (Jiri Sedlak, 2010 Nov 12)
|
||||
|
||||
When 'lines' is 25 and 'scrolloff' is 12, "j" scrolls zero or two lines
|
||||
instead of one. (Constantin Pan, 2010 Sep 10)
|
||||
|
||||
Crash in setqflist(). (Benoit Mortgat, 2010 Nov 18)
|
||||
|
||||
Writing nested List and Dict in viminfo gives error message and can't be read
|
||||
back. (Yukihiro Nakadaira, 2010 Nov 13)
|
||||
|
||||
Dos uninstal may delete vim.bat from the wrong directory (e.g., when someone
|
||||
makes his own wrapper). Add a magic string with the version number to the
|
||||
.bat file and check for it in the uninstaller. E.g.
|
||||
# uninstall key: vim7.3*
|
||||
|
||||
Problem with cursor in the wrong column. (SungHyun Nam, 2010 Mar 11)
|
||||
Additional info by Dominique Pelle. (also on 2010 Apr 10)
|
||||
|
||||
CreateFile and CreateFileW are used without sharing, filewritable() fails when
|
||||
the file was already open (e.g. script is being sourced). Add FILE_SHARE_READ|
|
||||
FILE_SHARE_WRITE in mch_access()? (Phillippe Vaucher, 2010 Nov 2)
|
||||
|
||||
Is ~/bin (literally) in $PATH supposed to work? (Paul, 2010 March 29)
|
||||
Looks like only bash can do it. (Yakov Lerner)
|
||||
|
||||
@@ -196,12 +247,17 @@ Shell not recognized properly if it ends in "csh -f". (James Vega, 2009 Nov 3)
|
||||
Find tail? Might have a / in argument. Find space? Might have space in
|
||||
path.
|
||||
|
||||
":sort n" treats empty line as higher than zero. (Beeyawned, 2010 Oct 13)
|
||||
|
||||
":function f(x) keepjumps" creates a function where every command is executed
|
||||
like it has ":keepjumps" before it.
|
||||
|
||||
Coverity: ask someone to create new user: Dominique.
|
||||
Check if there are new reported defects: http://scan.coverity.com/rung2.html
|
||||
|
||||
Patch to support :undo absolute jump to file save number. (Christian Brabandt,
|
||||
2010 Nov 5)
|
||||
|
||||
When setting 'undofile' while the file is already loaded, but unchanged, try
|
||||
to read the undo file. Requires computing a checksum of the text. (Andy
|
||||
Wokula)
|
||||
@@ -220,6 +276,8 @@ Undo problem: line not removed as expected when using setline() from Insert
|
||||
mode. (Israel Chauca, 2010 May 13, more in second msg)
|
||||
Break undo when CTRL-R = changes the text? Or save more lines?
|
||||
|
||||
Patch for static code analysis errors in riscOS. (Dominique Pelle, 2010 Dec 3)
|
||||
|
||||
Change to C syntax folding to make it work much faster, but a bit less
|
||||
reliable. (Lech Lorens, 2009 Nov 9) Enable with an option?
|
||||
Most time is spent in in_id_list().
|
||||
@@ -227,6 +285,8 @@ Most time is spent in in_id_list().
|
||||
Slow combination of folding and PHP syntax highlighting. Script to reproduce
|
||||
it. Caused by "syntax sync fromstart" in combination with patch 7.2.274.
|
||||
(Christian Brabandt, 2010 May 27)
|
||||
Generally, folding with 'foldmethod' set to "syntax" is slow. Do profiling to
|
||||
find out why.
|
||||
|
||||
When completion inserts the first match, it may trigger the line to be folded.
|
||||
Disable updating folds while completion is active? (Peter Odding, 2010 Jun 9)
|
||||
@@ -251,6 +311,9 @@ Invalid read error in Farsi mode. (Dominique Pelle, 2009 Aug 2)
|
||||
For running gvim on an USB stick: avoid the OLE registration. Use a command
|
||||
line argument -noregister.
|
||||
|
||||
When using an expression in 'statusline' leading white space sometimes goes
|
||||
missing (but not always). (ZyX, 2010 Nov 1)
|
||||
|
||||
When a mapping exists both for insert mode and lang-insert mode, the last one
|
||||
doesn't work. (Tyru, 2010 May 6) Or is this intended?
|
||||
|
||||
@@ -364,6 +427,10 @@ perhaps. And undo CTRL-W. CTRL-G l would redo.
|
||||
|
||||
Diff mode out of sync. (Gary Johnson, 2010 Aug 4)
|
||||
|
||||
Support a 'systemencoding' option (for Unix). It specifies the encoding of
|
||||
file names. (Kikuchan, 2010 Oct 5). Useful on a latin1 or double-byte Asian
|
||||
system when 'encoding' is "utf-8".
|
||||
|
||||
Win32: A --remote command that has a directory name starting with a ( doesn't
|
||||
work, the backslash is removed, assuming that it escapes the (. (Valery
|
||||
Kondakoff, 2009 May 13)
|
||||
@@ -385,6 +452,9 @@ very high. (Yegappan Lakshmanan, 2010 Jul 22, Michael Peeters, 2010 Jul 22)
|
||||
Directory wrong in session file, caused by ":lcd" in BufEnter autocommand.
|
||||
(Felix Kater, 2009 Mar 3)
|
||||
|
||||
Session file generates error upon loading, cause bu --remote-silent-tab.
|
||||
(7tommm (ytommm) 2010 Nov 24)
|
||||
|
||||
Using ~ works OK on 'a' with composing char, but not on 0x0418 with composing
|
||||
char 0x0301. (Tony Mechelynck, 2009 Mar 4)
|
||||
|
||||
@@ -418,6 +488,11 @@ correct. Don't use it in the swap file.
|
||||
Completion for ":buf" doesn't work properly on Win32 when 'shellslash' is off.
|
||||
(Henrik Ohman, 2009, Jan 29)
|
||||
|
||||
shellescape() depends on 'shellshash' for quoting. That doesn't work when
|
||||
'shellslash' is set but using cmd.exe. (Ben Fritz)
|
||||
Use a different option or let it depend on whether 'shell' looks like a
|
||||
unix-like shell?
|
||||
|
||||
Allow patches to add something to version.c, like with an official patch, so
|
||||
that :version output shows which patches have been applied.
|
||||
|
||||
@@ -467,11 +542,6 @@ Having "Syntax" in 'eventignore' for :bufdo may cause problems, e.g. for
|
||||
option only for when jumping to another buffer, not when the command argument
|
||||
is executed.
|
||||
|
||||
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.
|
||||
|
||||
":pedit %" with a BufReadPre autocommand causes the cursor to move to the
|
||||
first line. (Ingo Karkat, 2008 Jul 1) Ian Kelling is working on this.
|
||||
|
||||
@@ -501,9 +571,6 @@ Patch for c.vim and cpp.vim syntax files. (Chung-chieh Shan, 2008 Nov 26)
|
||||
c.vim: XXX in a comment is colored yellow, but not when it's after "#if 0".
|
||||
(Ilya Dogolazky, 2009 Aug 7)
|
||||
|
||||
Win32: ":dis +" shows nothing, but "+p does insert text. Problem with "* and
|
||||
"+ being the same thing?
|
||||
|
||||
You can type ":w ++bad=x fname", but the ++bad argument is ignored. Give an
|
||||
error message? Or is this easy to implement? (Nathan Stratton Treadway, 2008
|
||||
Aug 20) This is in ucs2bytes(), search for 0xBF. Using the ++bad argument is
|
||||
@@ -540,9 +607,6 @@ When mapping : to ; and ; to :, @; doesn't work like @: and @: doesn't work
|
||||
either. Matt Wozniski: nv_at() calls do_execreg() which uses
|
||||
put_in_typebuf(). Char mapped twice?
|
||||
|
||||
8 Some file systems are case-sensitive, some are not. Turn
|
||||
CASE_INSENSITIVE_FILENAME into an option, at least for completion.
|
||||
|
||||
Despite adding save_subexpr() this still doesn't work properly:
|
||||
Regexp: matchlist('12a4aaa', '^\(.\{-}\)\(\%5c\@<=a\+\)\(.\+\)\?')
|
||||
Returns ['12a4', 'aaa', '4aaa'], should be ['12a4', 'aaa', '']
|
||||
@@ -598,6 +662,9 @@ try the Cocoa version.
|
||||
Mac: After a ":vsplit" the left scrollbar doesn't appear until 'columns' is
|
||||
changed or the window is resized.
|
||||
|
||||
GTK: when setting 'columns' in a startup script and doing ":vertical diffsplit"
|
||||
the window isn't redrawn properly, see two vertical bars.
|
||||
|
||||
Mac: Patch for configure: remove arch from ruby link args. (Knezevic, 2008
|
||||
Mar 5) Alternative: Kazuki Sakamoto, Mar 7.
|
||||
|
||||
@@ -884,6 +951,8 @@ if_ruby.c.
|
||||
Patch to dynamically load Python on Solaris. (Danek Duvall, 2009 Feb 16)
|
||||
Needs more work.
|
||||
|
||||
Python3 interface doesn't handle utf-8 correctly? (Nov 2010, lilydjwg)
|
||||
|
||||
The need_fileinfo flag is messy. Instead make the message right away and put
|
||||
it in keep_msg?
|
||||
|
||||
@@ -1105,8 +1174,8 @@ doesn't work from Geoffrey Antos, 2008 May 5.
|
||||
Also: the window may no longer fit on the screen, thus the command line is not
|
||||
visible.
|
||||
|
||||
GTK: when setting 'columns' in a startup script and doing ":vertical diffsplit"
|
||||
the window isn't redrawn properly, see two vertical bars.
|
||||
When right after "vim file", "M" then CTRL-W v the windows are scrolled
|
||||
differently and unexpectedly. Caused by patch 7.2.398?
|
||||
|
||||
The magic clipboard format "VimClipboard2" appears in several places. Should
|
||||
be only one.
|
||||
@@ -1545,6 +1614,8 @@ Athena and Motif:
|
||||
|
||||
|
||||
Athena GUI:
|
||||
9 The first event for any button in the menu or toolbar appears to get lost.
|
||||
The second click on a menu does work.
|
||||
9 When dragging the scrollbar thumb very fast, focus is only obtained in
|
||||
the scrollbar itself. And the thumb is no longer updated when moving
|
||||
through files.
|
||||
@@ -1868,11 +1939,6 @@ Macintosh:
|
||||
works.
|
||||
8 A very long message in confirm() can't be quit. Make this possible with
|
||||
CTRL-C.
|
||||
7 clip_x11_own_selection() uses CurrentTime, that is not allowed. VNC X
|
||||
server has a problem with this. (Mark Waggoner) Remembering the timestamp
|
||||
of events isn't always possible. We don't get them in an xterm. GTK
|
||||
doesn't obtain the selection again when the timestamp differs, thus it
|
||||
won't work for GTK anyway.
|
||||
8 When the clipboard isn't supported: ":yank*" gives a confusing error
|
||||
message. Specifically mention that the register name is invalid.
|
||||
8 "gf" always excludes trailing punctuation characters. file_name_in_line()
|
||||
@@ -4064,6 +4130,9 @@ Buffer list:
|
||||
should then mean the number of the last buffer. E.g.: "4,$bdel".
|
||||
7 Add an option to mostly use slashes in file names. Separately for
|
||||
internal use and for when executing an external program?
|
||||
8 Some file systems are case-sensitive, some are not. Besides
|
||||
'wildignorecase' there might be more parts inside
|
||||
CASE_INSENSITIVE_FILENAME that are useful on Unix.
|
||||
|
||||
|
||||
Swap (.swp) files:
|
||||
@@ -4267,8 +4336,6 @@ Writing files:
|
||||
8 'backupskip' doesn't write a backup file at all, a bit dangerous for some
|
||||
applications. Add 'backupelsewhere' to write a backup file in another
|
||||
directory? Or add a flag to 'backupdir'?
|
||||
7 The 'directory' option supports changing path separators to "%" to make
|
||||
file names unique, also support this for 'backupdir'. (Mikolaj Machowski)
|
||||
6 Add an option to write a new, numbered, backup file each time. Like
|
||||
'patchmode', e.g., 'backupmode'.
|
||||
6 Make it possible to write 'patchmode' files to a different directory.
|
||||
@@ -4367,6 +4434,8 @@ Debug mode:
|
||||
|
||||
|
||||
Various improvements:
|
||||
9 Python: be able to define a Python function that can be called directly
|
||||
from Vim script. Requires converting the arguments and return value.
|
||||
8 ":sign unplace * file={filename}" should work. Also: ":sign unplace *
|
||||
buffer={bufnr}". So one can remove all signs for one file/buffer.
|
||||
7 Add plugins for formatting? Should be able to make a choice depending on
|
||||
@@ -4462,6 +4531,8 @@ Various improvements:
|
||||
3 Make "2d%" work like "d%d%" instead of "d2%"?
|
||||
7 "g CTRL-O" jumps back to last used buffer. Skip CTRL-O jumps in the same
|
||||
buffer. Make jumplist remember the last ten accessed buffers?
|
||||
7 Make it possible to set the size of the jumplist (also to a smaller number
|
||||
than the default). (Nikolai Weibull)
|
||||
- Add code to disable the CAPS key when going from Insert to Normal mode.
|
||||
- Set date/protection/etc. of the patchfile the same as the original file.
|
||||
- Use growarray for termcodes[] in term.c
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*undo.txt* For Vim version 7.3. Last change: 2010 Sep 30
|
||||
*undo.txt* For Vim version 7.3. Last change: 2010 Oct 21
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -239,7 +239,9 @@ Vim saves undo trees in a separate undo file, one for each edited file, using
|
||||
a simple scheme that maps filesystem paths directly to undo files. Vim will
|
||||
detect if an undo file is no longer synchronized with the file it was written
|
||||
for (with a hash of the file contents) and ignore it when the file was changed
|
||||
after the undo file was written, to prevent corruption.
|
||||
after the undo file was written, to prevent corruption. An undo file is also
|
||||
ignored if its owner differs from the owner of the edited file. Set 'verbose'
|
||||
to get a message about that.
|
||||
|
||||
Undo files are normally saved in the same directory as the file. This can be
|
||||
changed with the 'undodir' option.
|
||||
|
||||
+12
-5
@@ -1,4 +1,4 @@
|
||||
*usr_01.txt* For Vim version 7.3. Last change: 2008 May 07
|
||||
*usr_01.txt* For Vim version 7.3. Last change: 2010 Nov 03
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -40,13 +40,20 @@ the commands and options used for it. Use these two commands:
|
||||
Press CTRL-] to jump to a subject under the cursor.
|
||||
Press CTRL-O to jump back (repeat to go further back).
|
||||
|
||||
Many links are in vertical bars, like this: |bars|. An option name, like
|
||||
'number', a command in double quotes like ":write" and any other word can also
|
||||
be used as a link. Try it out: Move the cursor to CTRL-] and press CTRL-]
|
||||
on it.
|
||||
Many links are in vertical bars, like this: |bars|. The bars themselves may
|
||||
be hidden or invisible, see below. An option name, like 'number', a command
|
||||
in double quotes like ":write" and any other word can also be used as a link.
|
||||
Try it out: Move the cursor to CTRL-] and press CTRL-] on it.
|
||||
|
||||
Other subjects can be found with the ":help" command, see |help.txt|.
|
||||
|
||||
The bars and stars are usually hidden with the |conceal| feature. They also
|
||||
use |hl-Ignore|, using the same color for the text as the background. You can
|
||||
make them visible with: >
|
||||
:set conceallevel=0
|
||||
:hi link HelpBar Normal
|
||||
:hi link HelpStar Normal
|
||||
|
||||
==============================================================================
|
||||
*01.2* Vim installed
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*usr_41.txt* For Vim version 7.3. Last change: 2010 Jul 20
|
||||
*usr_41.txt* For Vim version 7.3. Last change: 2010 Nov 17
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -793,6 +793,8 @@ Syntax and highlighting: *syntax-functions* *highlighting-functions*
|
||||
synID() get syntax ID at a specific position
|
||||
synIDattr() get a specific attribute of a syntax ID
|
||||
synIDtrans() get translated syntax ID
|
||||
synstack() get list of syntax IDs at a specific position
|
||||
synconcealed() get info about concealing
|
||||
diff_hlID() get highlight ID for diff mode at a position
|
||||
matchadd() define a pattern to highlight (a "match")
|
||||
matcharg() get info about |:match| arguments
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*various.txt* For Vim version 7.3. Last change: 2010 Sep 23
|
||||
*various.txt* For Vim version 7.3. Last change: 2010 Nov 10
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -101,6 +101,7 @@ g8 Print the hex values of the bytes used in the
|
||||
:[range]P[rint] [count] [flags]
|
||||
Just as ":print". Was apparently added to Vi for
|
||||
people that keep the shift key pressed too long...
|
||||
Note: A user command can overrule this command.
|
||||
See |ex-flags| for [flags].
|
||||
|
||||
*:l* *:list*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*version7.txt* For Vim version 7.3. Last change: 2010 Aug 15
|
||||
*version7.txt* For Vim version 7.3. Last change: 2010 Nov 03
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1675,7 +1675,7 @@ The GTK font dialog uses a font size zero when the font name doesn't include a
|
||||
size. Use a default size of 10.
|
||||
|
||||
This example in the documentation didn't work:
|
||||
:e `=foo . ".c" `
|
||||
:e `=foo . ".c"`
|
||||
Skip over the expression in `=expr` when looking for comments, |, % and #.
|
||||
|
||||
When ":helpgrep" doesn't find anything there is no error message.
|
||||
@@ -8182,7 +8182,7 @@ Solution: Use get_cmdline_type(). (James Vega)
|
||||
Files: src/ex_getln.c
|
||||
|
||||
Patch 7.2.130
|
||||
Problem: Vim may haing until CTRL-C is typed when using CTRL-Z.
|
||||
Problem: Vim may hang until CTRL-C is typed when using CTRL-Z.
|
||||
Solution: Avoid using pause(). Also use "volatile" for variables used in
|
||||
signal functions. (Dominique Pelle)
|
||||
Files: src/auto/configure, src/configure.in, src/config.h.in,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*vi_diff.txt* For Vim version 7.3. Last change: 2010 Sep 25
|
||||
*vi_diff.txt* For Vim version 7.3. Last change: 2010 Oct 11
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -989,6 +989,8 @@ These are remarks about running the POSIX test suite:
|
||||
- vi test 33 sometimes fails for unknown reasons
|
||||
- vi test 250 fails; behavior will be changed in a new revision
|
||||
http://www.opengroup.org/austin/mailarchives/ag-review/msg01710.html
|
||||
(link no longer works, perhaps it's now:
|
||||
https://www.opengroup.org/sophocles/show_mail.tpl?CALLER=show_archive.tpl&source=L&listname=austin-review-l&id=1711)
|
||||
- vi test 310 fails; exit code non-zero when any error occurred?
|
||||
- ex test 24 fails because test is wrong. Changed between SUSv2 and SUSv3.
|
||||
- ex tests 47, 48, 49, 72, 73 fail because .exrc file isn't read in silent
|
||||
|
||||
@@ -214,7 +214,7 @@ EOF
|
||||
}
|
||||
|
||||
# main
|
||||
usage() if $#ARGV < 2;
|
||||
usage() if $#ARGV < 1;
|
||||
|
||||
print "Processing tags...\n";
|
||||
readTagFile( $ARGV[ 0 ] );
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: generic Changelog file
|
||||
" Maintainer: Nikolai Weibull <now@bitwi.se>
|
||||
" Latest Revision: 2009-05-25
|
||||
" Latest Revision: 2010-08-17
|
||||
" Variables:
|
||||
" g:changelog_timeformat (deprecated: use g:changelog_dateformat instead) -
|
||||
" description: the timeformat used in ChangeLog entries.
|
||||
@@ -170,7 +170,7 @@ if &filetype == 'changelog'
|
||||
endfunction
|
||||
|
||||
" Internal function to create a new entry in the ChangeLog.
|
||||
function! s:new_changelog_entry()
|
||||
function! s:new_changelog_entry(...)
|
||||
" Deal with 'paste' option.
|
||||
let save_paste = &paste
|
||||
let &paste = 1
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: DocBook
|
||||
" Maintainer: Nikolai Weibull <now@bitwi.se>
|
||||
" Latest Revision: 2010-10-14
|
||||
|
||||
if exists('b:did_ftplugin')
|
||||
finish
|
||||
endif
|
||||
|
||||
if !exists('b:docbk_type')
|
||||
if expand('%:e') == 'sgml'
|
||||
let b:docbk_type = 'sgml'
|
||||
else
|
||||
let b:docbk_type = 'xml'
|
||||
endif
|
||||
endif
|
||||
|
||||
if b:docbk_type == 'sgml'
|
||||
runtime! ftplugin/sgml.vim ftplugin/sgml_*.vim ftplugin/sgml/*.vim
|
||||
else
|
||||
runtime! ftplugin/xml.vim ftplugin/xml_*.vim ftplugin/xml/*.vim
|
||||
endif
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: man
|
||||
" Maintainer: SungHyun Nam <goweol@gmail.com>
|
||||
" Last Change: 2008 Sep 17
|
||||
" Last Change: 2010 Nov 29
|
||||
|
||||
" To make the ":Man" command available before editing a manual page, source
|
||||
" this script from your startup vimrc file.
|
||||
@@ -15,6 +15,10 @@ if &filetype == "man"
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
" Ensure Vim is not recursively invoked (man-db does this)
|
||||
" when doing ctrl-[ on a man page reference.
|
||||
let $MANPAGER = ""
|
||||
|
||||
" allow dot and dash in manual page name.
|
||||
setlocal iskeyword+=\.,-
|
||||
|
||||
|
||||
+3
-1
@@ -1,7 +1,7 @@
|
||||
" These commands create the option window.
|
||||
"
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2010 Jul 24
|
||||
" Last Change: 2010 Dec 02
|
||||
|
||||
" If there already is an option window, jump to that one.
|
||||
if bufwinnr("option-window") > 0
|
||||
@@ -1053,6 +1053,8 @@ if has("wildignore")
|
||||
call append("$", "wildignore\tlist of patterns to ignore files for file name completion")
|
||||
call <SID>OptionG("wig", &wig)
|
||||
endif
|
||||
call append("$", "wildignorecase\tignore case when completing file names")
|
||||
call <SID>BinOptionG("wic", &wic)
|
||||
if has("wildmenu")
|
||||
call append("$", "wildmenu\tcommand-line completion shows a list of matches")
|
||||
call <SID>BinOptionG("wmnu", &wmnu)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
" Vim plugin for showing matching parens
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2008 Sep 03
|
||||
" Last Change: 2010 Nov 16
|
||||
|
||||
" Exit quickly when:
|
||||
" - this plugin was already loaded (or disabled)
|
||||
@@ -82,8 +82,9 @@ function! s:Highlight_Matching_Pair()
|
||||
endif
|
||||
|
||||
" When not in a string or comment ignore matches inside them.
|
||||
" We match "escape" for special items, such as listpEscapeSpecial.
|
||||
let s_skip ='synIDattr(synID(line("."), col("."), 0), "name") ' .
|
||||
\ '=~? "string\\|character\\|singlequote\\|comment"'
|
||||
\ '=~? "string\\|character\\|singlequote\\|escape\\|comment"'
|
||||
execute 'if' s_skip '| let s_skip = 0 | endif'
|
||||
|
||||
" Limit the search to lines visible in the window.
|
||||
|
||||
@@ -1,23 +1,60 @@
|
||||
" Vim plugin for converting a syntax highlighted file to HTML.
|
||||
" Maintainer: Ben Fritz <fritzophrenic@gmail.com>
|
||||
" Last Change: 2010 Aug 12
|
||||
" Last Change: 2010 Oct 28
|
||||
"
|
||||
" The core of the code is in $VIMRUNTIME/autoload/tohtml.vim and
|
||||
" $VIMRUNTIME/syntax/2html.vim
|
||||
"
|
||||
" TODO:
|
||||
" * Patch to leave tab characters in when noexpandtab set (Andy Spencer)
|
||||
" * Make folds show up when using a range and dynamic folding
|
||||
" * Remove fold column when there are no folds and using dynamic folding
|
||||
" * Restore open/closed folds and cursor position after processing each file
|
||||
" with option not to restore for speed increase
|
||||
" * Add extra meta info (generation time, etc.)
|
||||
" * Tidy up so we can use strict doctype more?
|
||||
" * Tidy up so we can use strict doctype in even more situations?
|
||||
" * Implementation detail: add threshold for writing the lines to the html
|
||||
" buffer before we're done (5000 or so lines should do it)
|
||||
" * TODO comments for code cleanup scattered throughout
|
||||
"
|
||||
"
|
||||
" Changelog:
|
||||
" 7.3_v7 (this version): see betas released on vim_dev below:
|
||||
" 7.3_v7b3: Fixed bug, convert Unicode to UTF-8 all the way.
|
||||
" 7.3_v7b2: Remove automatic detection of encodings that are not
|
||||
" supported by all major browsers according to
|
||||
" http://wiki.whatwg.org/wiki/Web_Encodings and convert
|
||||
" to UTF-8 for all Unicode encodings. Make HTML
|
||||
" encoding to Vim encoding detection be
|
||||
" case-insensitive for built-in pairs.
|
||||
" 7.3_v7b1: Remove use of setwinvar() function which cannot be
|
||||
" called in restricted mode (Andy Spencer). Use
|
||||
" 'fencoding' instead of 'encoding' to determine by
|
||||
" charset, and make sure the 'fenc' of the generated
|
||||
" file matches its indicated charset. Add charsets for
|
||||
" all of Vim's natively supported encodings.
|
||||
" 7.3_v6 (0d3f0e3d289b): Really fix bug with 'nowrapscan', 'magic' and other
|
||||
" user settings interfering with diff mode generation,
|
||||
" trailing whitespace (e.g. line number column) when
|
||||
" using html_no_pre, and bugs when using
|
||||
" html_hover_unfold.
|
||||
" 7.3_v5 ( unreleased ): Fix bug with 'nowrapscan' and also with out-of-sync
|
||||
" folds in diff mode when first line was folded.
|
||||
" 7.3_v4 (7e008c174cc3): Bugfixes, especially for xhtml markup, and diff mode.
|
||||
" 7.3_v3 (a29075150aee): Refactor option handling and make html_use_css
|
||||
" default to true when not set to anything. Use strict
|
||||
" doctypes where possible. Rename use_xhtml option to
|
||||
" html_use_xhtml for consistency. Use .xhtml extension
|
||||
" when using this option. Add meta tag for settings.
|
||||
" 7.3_v2 (80229a724a11): Fix syntax highlighting in diff mode to use both the
|
||||
" diff colors and the normal syntax colors
|
||||
" 7.3_v1 (e7751177126b): Add conceal support and meta tags in output
|
||||
" Pre-v1 baseline: Mercurial changeset 3c9324c0800e
|
||||
|
||||
if exists('g:loaded_2html_plugin')
|
||||
finish
|
||||
endif
|
||||
let g:loaded_2html_plugin = 'vim7.3_v6'
|
||||
let g:loaded_2html_plugin = 'vim7.3_v7'
|
||||
|
||||
" Define the :TOhtml command when:
|
||||
" - 'compatible' is not set
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
" Vim syntax support file
|
||||
" Maintainer: Ben Fritz <fritzophrenic@gmail.com>
|
||||
" Last Change: 2010 Aug 12
|
||||
" Last Change: 2010 Sep 04
|
||||
"
|
||||
" Additional contributors:
|
||||
"
|
||||
@@ -265,6 +265,19 @@ set paste
|
||||
let s:old_magic = &magic
|
||||
set magic
|
||||
|
||||
" 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
|
||||
|
||||
let s:lines = []
|
||||
|
||||
if s:settings.use_xhtml
|
||||
@@ -1071,14 +1084,14 @@ let &magic = s:old_magic
|
||||
let @/ = s:old_search
|
||||
let &more = s:old_more
|
||||
exe s:orgwin . "wincmd w"
|
||||
let &l:stl = s:origwin_stl
|
||||
let &l:et = s:old_et
|
||||
let &l:scrollbind = s:old_bind
|
||||
exe s:newwin . "wincmd w"
|
||||
let &l:stl = s:newwin_stl
|
||||
exec 'resize' s:old_winheight
|
||||
let &l:winfixheight = s:old_winfixheight
|
||||
|
||||
call setwinvar(s:orgwin,'&stl', s:origwin_stl)
|
||||
call setwinvar(s:newwin,'&stl', s:newwin_stl)
|
||||
let &ls=s:ls
|
||||
|
||||
" Save a little bit of memory (worth doing?)
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
" Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
|
||||
" Former Maintainers: Gerfried Fuchs <alfie@ist.org>
|
||||
" Wichert Akkerman <wakkerma@debian.org>
|
||||
" Last Change: 2010 May 06
|
||||
" URL: http://hg.debian.org/hg/pkg-vim/vim/raw-file/tip/runtime/syntax/debchangelog.vim
|
||||
" Last Change: 2010 Oct 21
|
||||
" URL: http://hg.debian.org/hg/pkg-vim/vim/raw-file/unstable/runtime/syntax/debchangelog.vim
|
||||
|
||||
" Standard syntax initialization
|
||||
if version < 600
|
||||
@@ -19,7 +19,7 @@ syn case ignore
|
||||
" Define some common expressions we can use later on
|
||||
syn match debchangelogName contained "^[[:alnum:]][[:alnum:].+-]\+ "
|
||||
syn match debchangelogUrgency contained "; urgency=\(low\|medium\|high\|critical\|emergency\)\( \S.*\)\="
|
||||
syn match debchangelogTarget contained "\v %(frozen|unstable|%(testing|%(old)=stable)%(-proposed-updates|-security)=|experimental|%(etch|lenny)-%(backports|volatile)|%(dapper|hardy|jaunty|karmic|lucid|maverick)%(-%(security|proposed|updates|backports|commercial|partner))=)+"
|
||||
syn match debchangelogTarget contained "\v %(frozen|unstable|%(testing|%(old)=stable)%(-proposed-updates|-security)=|experimental|%(lenny|squeeze)-%(backports%(-sloppy)=|volatile)|%(dapper|hardy|jaunty|karmic|lucid|maverick|natty)%(-%(security|proposed|updates|backports|commercial|partner))=)+"
|
||||
syn match debchangelogVersion contained "(.\{-})"
|
||||
syn match debchangelogCloses contained "closes:\_s*\(bug\)\=#\=\_s\=\d\+\(,\_s*\(bug\)\=#\=\_s\=\d\+\)*"
|
||||
syn match debchangelogLP contained "\clp:\s\+#\d\+\(,\s*#\d\+\)*"
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
" Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
|
||||
" Former Maintainers: Gerfried Fuchs <alfie@ist.org>
|
||||
" Wichert Akkerman <wakkerma@debian.org>
|
||||
" Last Change: 2009 Aug 17
|
||||
" URL: http://hg.debian.org/hg/pkg-vim/vim/raw-file/tip/runtime/syntax/debcontrol.vim
|
||||
" Last Change: 2010 Oct 21
|
||||
" URL: http://hg.debian.org/hg/pkg-vim/vim/raw-file/unstable/runtime/syntax/debcontrol.vim
|
||||
|
||||
" Standard syntax initialization
|
||||
if version < 600
|
||||
@@ -27,7 +27,7 @@ syn match debControlSpace " "
|
||||
syn match debcontrolArchitecture contained "\%(all\|any\|alpha\|amd64\|arm\%(e[bl]\)\=\|avr32\|hppa\|i386\|ia64\|lpia\|m32r\|m68k\|mips\%(el\)\=\|powerpc\|ppc64\|s390x\=\|sh[34]\(eb\)\=\|sh\|sparc\%(64\)\=\|hurd-i386\|kfreebsd-\%(i386\|amd64\|gnu\)\|knetbsd-i386\|kopensolaris-i386\|netbsd-\%(alpha\|i386\)\)"
|
||||
syn match debcontrolName contained "[a-z0-9][a-z0-9+.-]\+"
|
||||
syn match debcontrolPriority contained "\(extra\|important\|optional\|required\|standard\)"
|
||||
syn match debcontrolSection contained "\v((contrib|non-free|non-US/main|non-US/contrib|non-US/non-free|restricted|universe|multiverse)/)?(admin|cli-mono|comm|database|debian-installer|debug|devel|doc|editors|electronics|embedded|fonts|games|gnome|gnustep|gnu-r|graphics|hamradio|haskell|httpd|interpreters|java|kde|kernel|libs|libdevel|lisp|localization|mail|math|misc|net|news|ocaml|oldlibs|otherosfs|perl|php|python|ruby|science|shells|sound|text|tex|utils|vcs|video|web|x11|xfce|zope)"
|
||||
syn match debcontrolSection contained "\v((contrib|non-free|non-US/main|non-US/contrib|non-US/non-free|restricted|universe|multiverse)/)?(admin|cli-mono|comm|database|debian-installer|debug|devel|doc|editors|electronics|embedded|fonts|games|gnome|gnustep|gnu-r|graphics|hamradio|haskell|httpd|interpreters|java|kde|kernel|libs|libdevel|lisp|localization|mail|math|metapackages|misc|net|news|ocaml|oldlibs|otherosfs|perl|php|python|ruby|science|shells|sound|text|tex|utils|vcs|video|web|x11|xfce|zope)"
|
||||
syn match debcontrolPackageType contained "u\?deb"
|
||||
syn match debcontrolVariable contained "\${.\{-}}"
|
||||
syn match debcontrolDmUpload contained "\cyes"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
" Language: Debian sources.list
|
||||
" Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
|
||||
" Former Maintainer: Matthijs Mohlmann <matthijs@cacholong.nl>
|
||||
" Last Change: 2010 May 06
|
||||
" URL: http://hg.debian.org/hg/pkg-vim/vim/raw-file/tip/runtime/syntax/debsources.vim
|
||||
" Last Change: 2010 Oct 21
|
||||
" URL: http://hg.debian.org/hg/pkg-vim/vim/raw-file/unstable/runtime/syntax/debsources.vim
|
||||
|
||||
" Standard syntax initialization
|
||||
if version < 600
|
||||
@@ -23,7 +23,7 @@ syn match debsourcesComment /#.*/ contains=@Spell
|
||||
|
||||
" Match uri's
|
||||
syn match debsourcesUri +\(http://\|ftp://\|[rs]sh://\|debtorrent://\|\(cdrom\|copy\|file\):\)[^' <>"]\++
|
||||
syn match debsourcesDistrKeyword +\([[:alnum:]_./]*\)\(etch\|lenny\|squeeze\|\(old\)\=stable\|testing\|unstable\|sid\|rc-buggy\|experimental\|dapper\|hardy\|jaunty\|karmic\|lucid\|maverick\)\([-[:alnum:]_./]*\)+
|
||||
syn match debsourcesDistrKeyword +\([[:alnum:]_./]*\)\(lenny\|squeeze\|\(old\)\=stable\|testing\|unstable\|sid\|rc-buggy\|experimental\|dapper\|hardy\|jaunty\|karmic\|lucid\|maverick\|natty\)\([-[:alnum:]_./]*\)+
|
||||
|
||||
" Associate our matches and regions with pretty colours
|
||||
hi def link debsourcesLine Error
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim syntax file
|
||||
" Language: gpg(1) configuration file
|
||||
" Maintainer: Nikolai Weibull <now@bitwi.se>
|
||||
" Latest Revision: 2007-06-17
|
||||
" Latest Revision: 2010-10-14
|
||||
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
@@ -54,7 +54,7 @@ syn keyword gpgOption contained skipwhite nextgroup=gpgArg
|
||||
\ personal-digest-preferences photo-viewer
|
||||
\ recipient s2k-cipher-algo s2k-digest-algo s2k-mode
|
||||
\ secret-keyring set-filename set-policy-url status-fd
|
||||
\ trusted-key verify-options
|
||||
\ trusted-key verify-options keyid-format list-options
|
||||
syn keyword gpgOption contained skipwhite nextgroup=gpgArgError
|
||||
\ allow-freeform-uid allow-non-selfsigned-uid
|
||||
\ allow-secret-key-import always-trust
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
" Vim syntax file
|
||||
" Language: Groovy
|
||||
" Maintainer: Alessio Pace <billy.corgan@tiscali.it>
|
||||
" Version: 0.1.9b
|
||||
" Original Author: Alessio Pace <billy.corgan@tiscali.it>
|
||||
" Maintainer: Tobias Rapp <yahuxo@gmx.de>
|
||||
" Version: 0.1.10
|
||||
" URL: http://www.vim.org/scripts/script.php?script_id=945
|
||||
" Last Change: 6/4/2004
|
||||
" Last Change: 2010 Nov 29
|
||||
|
||||
" THE ORIGINAL AUTHOR'S NOTES:
|
||||
"
|
||||
" This is my very first vim script, I hope to have
|
||||
" done it the right way.
|
||||
"
|
||||
@@ -16,8 +19,7 @@
|
||||
" For version 5.x: Clear all syntax items
|
||||
" For version 6.x: Quit when a syntax file was already loaded
|
||||
"
|
||||
" HOWTO USE IT (INSTALL):
|
||||
" [groovy is still not recognized by vim! :-( ]
|
||||
" HOWTO USE IT (INSTALL) when not part of the distribution:
|
||||
"
|
||||
" 1) copy the file in the (global or user's $HOME/.vim/syntax/) syntax folder
|
||||
"
|
||||
@@ -247,7 +249,9 @@ syn match groovySpecialError contained "\\."
|
||||
syn match groovySpecialCharError contained "[^']"
|
||||
syn match groovySpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"
|
||||
syn region groovyString start=+"+ end=+"+ end=+$+ contains=groovySpecialChar,groovySpecialError,@Spell,groovyELExpr
|
||||
syn region groovyString start=+'+ end=+'+ end=+$+ contains=groovySpecialChar,groovySpecialError,@Spell,groovyELExpr
|
||||
syn region groovyString start=+'+ end=+'+ end=+$+ contains=groovySpecialChar,groovySpecialError,@Spell
|
||||
syn region groovyString start=+"""+ end=+"""+ contains=groovySpecialChar,groovySpecialError,@Spell,groovyELExpr
|
||||
syn region groovyString start=+'''+ end=+'''+ contains=groovySpecialChar,groovySpecialError,@Spell
|
||||
" syn region groovyELExpr start=+${+ end=+}+ keepend contained
|
||||
syn match groovyELExpr /\${.\{-}}/ contained
|
||||
GroovyHiLink groovyELExpr Identifier
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim syntax file
|
||||
" Language: Vim help file
|
||||
" Maintainer: Bram Moolenaar (Bram@vim.org)
|
||||
" Last Change: 2009 May 18
|
||||
" Last Change: 2010 Nov 03
|
||||
|
||||
" Quit when a (custom) syntax file was already loaded
|
||||
if exists("b:current_syntax")
|
||||
@@ -30,6 +30,7 @@ syn match helpVim "VIM REFERENCE.*"
|
||||
syn match helpOption "'[a-z]\{2,\}'"
|
||||
syn match helpOption "'t_..'"
|
||||
syn match helpHeader "\s*\zs.\{-}\ze\s\=\~$" nextgroup=helpIgnore
|
||||
syn match helpGraphic ".* \ze`$" nextgroup=helpIgnore
|
||||
syn match helpIgnore "." contained conceal
|
||||
syn keyword helpNote note Note NOTE note: Note: NOTE: Notes Notes:
|
||||
syn match helpSpecial "\<N\>"
|
||||
|
||||
+10
-4
@@ -1,8 +1,8 @@
|
||||
" Vim syntax file
|
||||
" Language: Lex
|
||||
" Maintainer: Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
|
||||
" Last Change: Sep 11, 2009
|
||||
" Version: 10
|
||||
" Last Change: Nov 01, 2010
|
||||
" Version: 12
|
||||
" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
|
||||
"
|
||||
" Option:
|
||||
@@ -36,6 +36,9 @@ endif
|
||||
" --- Lex stuff ---
|
||||
" --- ========= ---
|
||||
|
||||
" Options Section
|
||||
syn match lexOptions '^%\s*option\>.*$' contains=lexPatString
|
||||
|
||||
"I'd prefer to use lex.* , but vim doesn't handle forward definitions yet
|
||||
syn cluster lexListGroup contains=lexAbbrvBlock,lexAbbrv,lexAbbrv,lexAbbrvRegExp,lexInclude,lexPatBlock,lexPat,lexBrace,lexPatString,lexPatTag,lexPatTag,lexPatComment,lexPatCodeLine,lexMorePat,lexPatSep,lexSlashQuote,lexPatCode,cInParen,cUserLabel,cOctalZero,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCppOut2,cCommentStartError,cParenError
|
||||
syn cluster lexListPatCodeGroup contains=lexAbbrvBlock,lexAbbrv,lexAbbrv,lexAbbrvRegExp,lexInclude,lexPatBlock,lexPat,lexBrace,lexPatTag,lexPatTag,lexPatTagZoneStart,lexPatComment,lexPatCodeLine,lexMorePat,lexPatSep,lexSlashQuote,cInParen,cUserLabel,cOctalZero,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCppOut2,cCommentStartError,cParenError
|
||||
@@ -61,13 +64,15 @@ endif
|
||||
|
||||
"%% : Patterns {Actions}
|
||||
if has("folding")
|
||||
syn region lexPatBlock fold matchgroup=Todo start="^%%$" matchgroup=Todo end="^%%$" skipnl skipwhite contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat
|
||||
syn region lexPatBlock fold matchgroup=Todo start="^%%$" matchgroup=Todo end="^%%$" skipnl skipwhite contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat,lexPatInclude
|
||||
syn region lexPat fold start=+\S+ skip="\\\\\|\\." end="\s"me=e-1 contained nextgroup=lexMorePat,lexPatSep contains=lexPatTag,lexPatString,lexSlashQuote,lexBrace
|
||||
syn region lexPatInclude fold matchgroup=lexSep start="^%{" end="%}" contained contains=lexPatCode
|
||||
syn region lexBrace fold start="\[" skip=+\\\\\|\\+ end="]" contained
|
||||
syn region lexPatString fold matchgroup=String start=+"+ skip=+\\\\\|\\"+ matchgroup=String end=+"+ contained
|
||||
else
|
||||
syn region lexPatBlock matchgroup=Todo start="^%%$" matchgroup=Todo end="^%%$" skipnl skipwhite contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat
|
||||
syn region lexPatBlock matchgroup=Todo start="^%%$" matchgroup=Todo end="^%%$" skipnl skipwhite contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat,lexPatInclude
|
||||
syn region lexPat start=+\S+ skip="\\\\\|\\." end="\s"me=e-1 contained nextgroup=lexMorePat,lexPatSep contains=lexPatTag,lexPatString,lexSlashQuote,lexBrace
|
||||
syn region lexPatInclude matchgroup=lexSep start="^%{" end="%}" contained contains=lexPatCode
|
||||
syn region lexBrace start="\[" skip=+\\\\\|\\+ end="]" contained
|
||||
syn region lexPatString matchgroup=String start=+"+ skip=+\\\\\|\\"+ matchgroup=String end=+"+ contained
|
||||
endif
|
||||
@@ -117,6 +122,7 @@ hi def link lexAbbrvRegExp Macro
|
||||
hi def link lexAbbrv SpecialChar
|
||||
hi def link lexCFunctions Function
|
||||
hi def link lexMorePat SpecialChar
|
||||
hi def link lexOptions PreProc
|
||||
hi def link lexPatComment Comment
|
||||
hi def link lexPat Function
|
||||
hi def link lexPatString Function
|
||||
|
||||
+15
-15
@@ -1,8 +1,8 @@
|
||||
" Vim syntax file
|
||||
" Language: Lisp
|
||||
" Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
|
||||
" Last Change: Mar 05, 2009
|
||||
" Version: 21
|
||||
" Last Change: Nov 16, 2010
|
||||
" Version: 22
|
||||
" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
|
||||
"
|
||||
" Thanks to F Xavier Noria for a list of 978 Common Lisp symbols
|
||||
@@ -32,7 +32,7 @@ endif
|
||||
" ---------------------------------------------------------------------
|
||||
" Clusters: {{{1
|
||||
syn cluster lispAtomCluster contains=lispAtomBarSymbol,lispAtomList,lispAtomNmbr0,lispComment,lispDecl,lispFunc,lispLeadWhite
|
||||
syn cluster lispBaseListCluster contains=lispAtom,lispAtomBarSymbol,lispAtomMark,lispBQList,lispBarSymbol,lispComment,lispConcat,lispDecl,lispFunc,lispKey,lispList,lispNumber,lispSpecial,lispSymbol,lispVar,lispLeadWhite
|
||||
syn cluster lispBaseListCluster contains=lispAtom,lispAtomBarSymbol,lispAtomMark,lispBQList,lispBarSymbol,lispComment,lispConcat,lispDecl,lispFunc,lispKey,lispList,lispNumber,lispEscapeSpecial,lispSymbol,lispVar,lispLeadWhite
|
||||
if exists("g:lisp_instring")
|
||||
syn cluster lispListCluster contains=@lispBaseListCluster,lispString,lispInString,lispInStringString
|
||||
else
|
||||
@@ -68,7 +68,7 @@ syn match lispAtom "'("me=e-1 contains=lispAtomMark nextgroup=lispAtomList
|
||||
syn match lispAtom "'[^ \t()]\+" contains=lispAtomMark
|
||||
syn match lispAtomBarSymbol !'|..\{-}|! contains=lispAtomMark
|
||||
syn region lispAtom start=+'"+ skip=+\\"+ end=+"+
|
||||
syn region lispAtomList contained matchgroup=Special start="(" skip="|.\{-}|" matchgroup=Special end=")" contains=@lispAtomCluster,lispString,lispSpecial
|
||||
syn region lispAtomList contained matchgroup=Special start="(" skip="|.\{-}|" matchgroup=Special end=")" contains=@lispAtomCluster,lispString,lispEscapeSpecial
|
||||
syn match lispAtomNmbr contained "\<\d\+"
|
||||
syn match lispLeadWhite contained "^\s\+"
|
||||
|
||||
@@ -537,16 +537,16 @@ endif
|
||||
syn match lispNumber "-\=\(\.\d\+\|\d\+\(\.\d*\)\=\)\([dDeEfFlL][-+]\=\d\+\)\="
|
||||
syn match lispNumber "-\=\(\d\+/\d\+\)"
|
||||
|
||||
syn match lispSpecial "\*\w[a-z_0-9-]*\*"
|
||||
syn match lispSpecial !#|[^()'`,"; \t]\+|#!
|
||||
syn match lispSpecial !#x\x\+!
|
||||
syn match lispSpecial !#o\o\+!
|
||||
syn match lispSpecial !#b[01]\+!
|
||||
syn match lispSpecial !#\\[ -}\~]!
|
||||
syn match lispSpecial !#[':][^()'`,"; \t]\+!
|
||||
syn match lispSpecial !#([^()'`,"; \t]\+)!
|
||||
syn match lispSpecial !#\\\%(Space\|Newline\|Tab\|Page\|Rubout\|Linefeed\|Return\|Backspace\)!
|
||||
syn match lispSpecial "\<+[a-zA-Z_][a-zA-Z_0-9-]*+\>"
|
||||
syn match lispEscapeSpecial "\*\w[a-z_0-9-]*\*"
|
||||
syn match lispEscapeSpecial !#|[^()'`,"; \t]\+|#!
|
||||
syn match lispEscapeSpecial !#x\x\+!
|
||||
syn match lispEscapeSpecial !#o\o\+!
|
||||
syn match lispEscapeSpecial !#b[01]\+!
|
||||
syn match lispEscapeSpecial !#\\[ -}\~]!
|
||||
syn match lispEscapeSpecial !#[':][^()'`,"; \t]\+!
|
||||
syn match lispEscapeSpecial !#([^()'`,"; \t]\+)!
|
||||
syn match lispEscapeSpecial !#\\\%(Space\|Newline\|Tab\|Page\|Rubout\|Linefeed\|Return\|Backspace\)!
|
||||
syn match lispEscapeSpecial "\<+[a-zA-Z_][a-zA-Z_0-9-]*+\>"
|
||||
|
||||
syn match lispConcat "\s\.\s"
|
||||
syn match lispParenError ")"
|
||||
@@ -585,7 +585,7 @@ if version >= 508
|
||||
HiLink lispMark Delimiter
|
||||
HiLink lispNumber Number
|
||||
HiLink lispParenError Error
|
||||
HiLink lispSpecial Type
|
||||
HiLink lispEscapeSpecial Type
|
||||
HiLink lispString String
|
||||
HiLink lispTodo Todo
|
||||
HiLink lispVar Statement
|
||||
|
||||
+141
-61
@@ -1,7 +1,7 @@
|
||||
" Vim syntax file
|
||||
" Language: login.defs(5) configuration file
|
||||
" Maintainer: Nikolai Weibull <now@bitwi.se>
|
||||
" Latest Revision: 2006-04-19
|
||||
" Latest Revision: 2010-11-29
|
||||
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
@@ -10,83 +10,163 @@ endif
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
syn keyword logindefsTodo contained TODO FIXME XXX NOTE
|
||||
syn match logindefsBegin display '^'
|
||||
\ nextgroup=
|
||||
\ logindefsComment,
|
||||
\ @logindefsKeyword
|
||||
\ skipwhite
|
||||
|
||||
syn region logindefsComment display oneline start='^\s*#' end='$'
|
||||
\ contains=logindefsTodo,@Spell
|
||||
syn region logindefsComment display oneline start='^\s*#' end='$'
|
||||
\ contains=logindefsTodo,@Spell
|
||||
|
||||
syn match logindefsString contained '[[:graph:]]\+'
|
||||
syn keyword logindefsTodo contained TODO FIXME XXX NOTE
|
||||
|
||||
syn match logindefsPath contained '[[:graph:]]\+'
|
||||
syn cluster logindefsKeyword contains=
|
||||
\ logindefsBooleanKeyword,
|
||||
\ logindefsEncryptKeyword,
|
||||
\ logindefsNumberKeyword,
|
||||
\ logindefsPathKeyword,
|
||||
\ logindefsPathsKeyword,
|
||||
\ logindefsStringKeyword
|
||||
|
||||
syn match logindefsPaths contained '[[:graph:]]\+'
|
||||
\ nextgroup=logindefsPathDelim
|
||||
syn keyword logindefsBooleanKeyword contained
|
||||
\ CHFN_AUTH
|
||||
\ CHSH_AUTH
|
||||
\ CREATE_HOME
|
||||
\ DEFAULT_HOME
|
||||
\ FAILLOG_ENAB
|
||||
\ LASTLOG_ENAB
|
||||
\ LOG_OK_LOGINS
|
||||
\ LOG_UNKFAIL_ENAB
|
||||
\ MAIL_CHECK_ENAB
|
||||
\ MD5_CRYPT_ENAB
|
||||
\ OBSCURE_CHECKS_ENAB
|
||||
\ PASS_ALWAYS_WARN
|
||||
\ PORTTIME_CHECKS_ENAB
|
||||
\ QUOTAS_ENAB
|
||||
\ SU_WHEEL_ONLY
|
||||
\ SYSLOG_SG_ENAB
|
||||
\ SYSLOG_SU_ENAB
|
||||
\ USERGROUPS_ENAB
|
||||
\ nextgroup=logindefsBoolean skipwhite
|
||||
|
||||
syn match logindefsPathDelim contained ':' nextgroup=logindefsPaths
|
||||
syn keyword logindefsBoolean contained yes no
|
||||
|
||||
syn keyword logindefsBoolean contained yes no
|
||||
syn keyword logindefsEncryptKeyword contained
|
||||
\ ENCRYPT_METHOD
|
||||
\ nextgroup=logindefsEncryptMethod skipwhite
|
||||
|
||||
syn match logindefsDecimal contained '\<\d\+\>'
|
||||
syn keyword logindefsEncryptMethod contained
|
||||
\ DES
|
||||
\ MD5
|
||||
\ SHA256
|
||||
\ SHA512
|
||||
|
||||
syn match logindefsOctal contained display '\<0\o\+\>'
|
||||
\ contains=logindefsOctalZero
|
||||
syn match logindefsOctalZero contained display '\<0'
|
||||
syn match logindefsOctalError contained display '\<0\o*[89]\d*\>'
|
||||
syn keyword logindefsNumberKeyword contained
|
||||
\ ERASECHAR
|
||||
\ FAIL_DELAY
|
||||
\ GID_MAX
|
||||
\ GID_MIN
|
||||
\ KILLCHAR
|
||||
\ LOGIN_RETRIES
|
||||
\ LOGIN_TIMEOUT
|
||||
\ MAX_MEMBERS_PER_GROUP
|
||||
\ PASS_CHANGE_TRIES
|
||||
\ PASS_MAX_DAYS
|
||||
\ PASS_MIN_DAYS
|
||||
\ PASS_WARN_AGE
|
||||
\ PASS_MAX_LEN
|
||||
\ PASS_MIN_LEN
|
||||
\ SHA_CRYPT_MAX_ROUNDS
|
||||
\ SHA_CRYPT_MIN_ROUNDS
|
||||
\ SYS_GID_MAX
|
||||
\ SYS_GID_MIN
|
||||
\ SYS_UID_MAX
|
||||
\ SYS_UID_MIN
|
||||
\ UID_MAX
|
||||
\ UID_MIN
|
||||
\ ULIMIT
|
||||
\ UMASK
|
||||
\ nextgroup=@logindefsNumber skipwhite
|
||||
|
||||
syn match logindefsHex contained display '\<0x\x\+\>'
|
||||
syn cluster logindefsNumber contains=
|
||||
\ logindefsDecimal,
|
||||
\ logindefsHex,
|
||||
\ logindefsOctal,
|
||||
\ logindefsOctalError
|
||||
|
||||
syn cluster logindefsNumber contains=logindefsDecimal,logindefsOctal,
|
||||
\ logindefsOctalError,logindefsHex
|
||||
syn match logindefsDecimal contained '\<\d\+\>'
|
||||
|
||||
syn match logindefsBegin display '^'
|
||||
\ nextgroup=logindefsKeyword,logindefsComment
|
||||
\ skipwhite
|
||||
syn match logindefsHex contained display '\<0x\x\+\>'
|
||||
|
||||
syn keyword logindefsKeyword contained CHFN_AUTH CLOSE_SESSIONS CREATE_HOME
|
||||
\ DEFAULT_HOME FAILLOG_ENAB LASTLOG_ENAB
|
||||
\ LOG_OK_LOGINS LOG_UNKFAIL_ENAB MAIL_CHECK_ENAB
|
||||
\ MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB
|
||||
\ PASS_ALWAYS_WARN PORTTIME_CHECKS_ENAB
|
||||
\ QUOTAS_ENAB SU_WHEEL_ONLY SYSLOG_SG_ENAB
|
||||
\ SYSLOG_SU_ENAB USERGROUPS_ENAB
|
||||
\ nextgroup=logindefsBoolean skipwhite
|
||||
syn match logindefsOctal contained display '\<0\o\+\>'
|
||||
\ contains=logindefsOctalZero
|
||||
syn match logindefsOctalZero contained display '\<0'
|
||||
|
||||
syn keyword logindefsKeyword contained CHFN_RESTRICT CONSOLE CONSOLE_GROUPS
|
||||
\ ENV_TZ ENV_HZ FAKE_SHELL SU_NAME LOGIN_STRING
|
||||
\ NOLOGIN_STR TTYGROUP USERDEL_CMD
|
||||
\ nextgroup=logindefsString skipwhite
|
||||
syn match logindefsOctalError contained display '\<0\o*[89]\d*\>'
|
||||
|
||||
syn keyword logindefsKeyword contained ENVIRON_FILE FTMP_FILE HUSHLOGIN_FILE
|
||||
\ ISSUE_FILE MAIL_DIR MAIL_FILE NOLOGINS_FILE
|
||||
\ NOLOGINS_FILE TTYTYPE_FILE QMAIL_DIR
|
||||
\ SULOG_FILE
|
||||
\ nextgroup=logindefsPath skipwhite
|
||||
syn keyword logindefsPathKeyword contained
|
||||
\ ENVIRON_FILE
|
||||
\ FAKE_SHELL
|
||||
\ FTMP_FILE
|
||||
\ HUSHLOGIN_FILE
|
||||
\ ISSUE_FILE
|
||||
\ MAIL_DIR
|
||||
\ MAIL_FILE
|
||||
\ NOLOGINS_FILE
|
||||
\ SULOG_FILE
|
||||
\ TTYTYPE_FILE
|
||||
\ nextgroup=logindefsPath skipwhite
|
||||
|
||||
syn keyword logindefsKeyword contained CRACKLIB_DICTPATH ENV_PATH
|
||||
\ ENV_ROOTPATH ENV_SUPATH MOTD_FILE
|
||||
\ nextgroup=logindefsPaths skipwhite
|
||||
syn match logindefsPath contained '[[:graph:]]\+'
|
||||
|
||||
syn keyword logindefsKeyword contained ERASECHAR FAIL_DELAY GETPASS_ASTERISKS
|
||||
\ GID_MAX GID_MIN KILLCHAR LOGIN_RETRIES
|
||||
\ LOGIN_TIMEOUT PASS_CHANGE_TRIES PASS_MAX_DAYS
|
||||
\ PASS_MAX_LEN PASS_MIN_DAYS PASS_MIN_LEN
|
||||
\ PASS_WARN_AGE TTYPERM UID_MAX UID_MIN ULIMIT
|
||||
\ UMASK
|
||||
\ nextgroup=@logindefsNumber skipwhite
|
||||
syn keyword logindefsPathsKeyword contained
|
||||
\ CONSOLE
|
||||
\ ENV_PATH
|
||||
\ ENV_SUPATH
|
||||
\ MOTD_FILE
|
||||
\ nextgroup=logindefsPaths skipwhite
|
||||
|
||||
hi def link logindefsTodo Todo
|
||||
hi def link logindefsComment Comment
|
||||
hi def link logindefsString String
|
||||
hi def link logindefsPath String
|
||||
hi def link logindefsPaths logindefsPath
|
||||
hi def link logindefsPathDelim Delimiter
|
||||
hi def link logindefsBoolean Boolean
|
||||
hi def link logindefsDecimal Number
|
||||
hi def link logindefsOctal Number
|
||||
hi def link logindefsOctalZero PreProc
|
||||
hi def link logindefsOctalError Error
|
||||
hi def link logindefsHex Number
|
||||
hi def link logindefsKeyword Keyword
|
||||
syn match logindefsPaths contained '[^:]\+'
|
||||
\ nextgroup=logindefsPathDelim
|
||||
|
||||
syn match logindefsPathDelim contained ':' nextgroup=logindefsPaths
|
||||
|
||||
syn keyword logindefsStringKeyword contained
|
||||
\ CHFN_RESTRICT
|
||||
\ CONSOLE_GROUPS
|
||||
\ ENV_HZ
|
||||
\ ENV_TZ
|
||||
\ LOGIN_STRING
|
||||
\ SU_NAME
|
||||
\ TTYGROUP
|
||||
\ TTYPERM
|
||||
\ USERDEL_CMD
|
||||
\ nextgroup=logindefsString skipwhite
|
||||
|
||||
syn match logindefsString contained '[[:graph:]]\+'
|
||||
|
||||
hi def link logindefsComment Comment
|
||||
hi def link logindefsTodo Todo
|
||||
hi def link logindefsKeyword Keyword
|
||||
hi def link logindefsBooleanKeyword logindefsKeyword
|
||||
hi def link logindefsEncryptKeyword logindefsKeyword
|
||||
hi def link logindefsNumberKeyword logindefsKeyword
|
||||
hi def link logindefsPathKeyword logindefsKeyword
|
||||
hi def link logindefsPathsKeyword logindefsKeyword
|
||||
hi def link logindefsStringKeyword logindefsKeyword
|
||||
hi def link logindefsBoolean Boolean
|
||||
hi def link logindefsEncryptMethod Type
|
||||
hi def link logindefsNumber Number
|
||||
hi def link logindefsDecimal logindefsNumber
|
||||
hi def link logindefsHex logindefsNumber
|
||||
hi def link logindefsOctal logindefsNumber
|
||||
hi def link logindefsOctalZero PreProc
|
||||
hi def link logindefsOctalError Error
|
||||
hi def link logindefsPath String
|
||||
hi def link logindefsPaths logindefsPath
|
||||
hi def link logindefsPathDelim Delimiter
|
||||
hi def link logindefsString String
|
||||
|
||||
let b:current_syntax = "logindefs"
|
||||
|
||||
|
||||
+101
-75
@@ -1,111 +1,137 @@
|
||||
" Vim syntax file
|
||||
" Language: R (GNU S)
|
||||
" Maintainer: Vaidotas Zemlys <zemlys@gmail.com>
|
||||
" Last Change: 2006 Apr 30
|
||||
" Filenames: *.R *.Rout *.r *.Rhistory *.Rt *.Rout.save *.Rout.fail
|
||||
" URL: http://uosis.mif.vu.lt/~zemlys/vim-syntax/r.vim
|
||||
" Language: R (GNU S)
|
||||
" Maintainer: Jakson Aquino <jalvesaq@gmail.com>
|
||||
" Former Maintainers: Vaidotas Zemlys <zemlys@gmail.com>
|
||||
" Tom Payne <tom@tompayne.org>
|
||||
" Last Change: Wed Sep 29, 2010 09:31AM
|
||||
" Filenames: *.R *.r *.Rhistory *.Rt
|
||||
"
|
||||
" NOTE: The highlighting of R functions is defined in the
|
||||
" r-plugin/functions.vim, which is part of vim-r-plugin2:
|
||||
" http://www.vim.org/scripts/script.php?script_id=2628
|
||||
"
|
||||
" Some lines of code were borrowed from Zhuojun Chen.
|
||||
|
||||
" First maintainer Tom Payne <tom@tompayne.org>
|
||||
" Modified to make syntax less colourful and added the highlighting of
|
||||
" R assignment arrow
|
||||
|
||||
" For version 5.x: Clear all syntax items
|
||||
" For version 6.x: Quit when a syntax file was already loaded
|
||||
if version < 600
|
||||
syntax clear
|
||||
elseif exists("b:current_syntax")
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
if version >= 600
|
||||
setlocal iskeyword=@,48-57,_,.
|
||||
else
|
||||
set iskeyword=@,48-57,_,.
|
||||
endif
|
||||
setlocal iskeyword=@,48-57,_,.
|
||||
|
||||
syn case match
|
||||
|
||||
" Comment
|
||||
syn match rComment /\#.*/
|
||||
syn match rComment contains=@Spell "\#.*"
|
||||
|
||||
" Constant
|
||||
" string enclosed in double quotes
|
||||
syn region rString start=/"/ skip=/\\\\\|\\"/ end=/"/
|
||||
syn region rString contains=rSpecial,rStrError,@Spell start=/"/ skip=/\\\\\|\\"/ end=/"/
|
||||
" string enclosed in single quotes
|
||||
syn region rString start=/'/ skip=/\\\\\|\\'/ end=/'/
|
||||
" number with no fractional part or exponent
|
||||
syn match rNumber /\d\+/
|
||||
" floating point number with integer and fractional parts and optional exponent
|
||||
syn match rFloat /\d\+\.\d*\([Ee][-+]\=\d\+\)\=/
|
||||
" floating point number with no integer part and optional exponent
|
||||
syn match rFloat /\.\d\+\([Ee][-+]\=\d\+\)\=/
|
||||
" floating point number with no fractional part and optional exponent
|
||||
syn match rFloat /\d\+[Ee][-+]\=\d\+/
|
||||
syn region rString contains=rSpecial,rStrError,@Spell start=/'/ skip=/\\\\\|\\'/ end=/'/
|
||||
|
||||
" Identifier
|
||||
" identifier with leading letter and optional following keyword characters
|
||||
syn match rIdentifier /\a\k*/
|
||||
" identifier with leading period, one or more digits, and at least one non-digit keyword character
|
||||
syn match rIdentifier /\.\d*\K\k*/
|
||||
syn match rStrError display contained "\\."
|
||||
|
||||
" New line, carriage return, tab, backspace, bell, feed, vertical tab, backslash
|
||||
syn match rSpecial display contained "\\\(n\|r\|t\|b\|a\|f\|v\|'\|\"\)\|\\\\"
|
||||
|
||||
" Hexadecimal and Octal digits
|
||||
syn match rSpecial display contained "\\\(x\x\{1,2}\|[0-8]\{1,3}\)"
|
||||
|
||||
" Unicode characters
|
||||
syn match rSpecial display contained "\\u\x\{1,4}"
|
||||
syn match rSpecial display contained "\\U\x\{1,8}"
|
||||
syn match rSpecial display contained "\\u{\x\{1,4}}"
|
||||
syn match rSpecial display contained "\\U{\x\{1,8}}"
|
||||
|
||||
|
||||
syn match rDollar "\$"
|
||||
|
||||
" Statement
|
||||
syn keyword rStatement break next return
|
||||
syn keyword rConditional if else
|
||||
syn keyword rRepeat for in repeat while
|
||||
|
||||
" Constant (not really)
|
||||
syn keyword rConstant T F LETTERS letters month.ab month.name pi
|
||||
syn keyword rConstant R.version.string
|
||||
|
||||
" Constant
|
||||
syn keyword rConstant LETTERS letters month.ab month.name pi
|
||||
syn keyword rConstant NULL
|
||||
syn keyword rBoolean FALSE TRUE
|
||||
syn keyword rNumber NA
|
||||
syn match rArrow /<\{1,2}-/
|
||||
syn keyword rNumber NA NA_integer_ NA_real_ NA_complex_ NA_character_
|
||||
syn keyword rNumber Inf NaN
|
||||
|
||||
" Type
|
||||
syn keyword rType array category character complex double function integer list logical matrix numeric vector data.frame
|
||||
" integer
|
||||
syn match rInteger "\<\d\+L"
|
||||
syn match rInteger "\<0x\([0-9]\|[a-f]\|[A-F]\)\+L"
|
||||
syn match rInteger "\<\d\+[Ee]+\=\d\+L"
|
||||
|
||||
syn match rOperator "[\*\!\&\+\-\<\>\=\^\|\~\`/:@]"
|
||||
syn match rOperator "%\{2}\|%\*%\|%\/%\|%in%\|%o%\|%x%"
|
||||
|
||||
syn match rComplex "\<\d\+i"
|
||||
syn match rComplex "\<0x\([0-9]\|[a-f]\|[A-F]\)\+i"
|
||||
syn match rComplex "\<\d\+\.\d*\([Ee][-+]\=\d\+\)\=i"
|
||||
syn match rComplex "\<\.\d\+\([Ee][-+]\=\d\+\)\=i"
|
||||
syn match rComplex "\<\d\+[Ee][-+]\=\d\+i"
|
||||
|
||||
" number with no fractional part or exponent
|
||||
syn match rNumber "\<\d\+\>"
|
||||
" hexadecimal number
|
||||
syn match rNumber "\<0x\([0-9]\|[a-f]\|[A-F]\)\+"
|
||||
|
||||
" floating point number with integer and fractional parts and optional exponent
|
||||
syn match rFloat "\<\d\+\.\d*\([Ee][-+]\=\d\+\)\="
|
||||
" floating point number with no integer part and optional exponent
|
||||
syn match rFloat "\<\.\d\+\([Ee][-+]\=\d\+\)\="
|
||||
" floating point number with no fractional part and optional exponent
|
||||
syn match rFloat "\<\d\+[Ee][-+]\=\d\+"
|
||||
|
||||
syn match rArrow "<\{1,2}-"
|
||||
syn match rArrow "->\{1,2}"
|
||||
|
||||
" Special
|
||||
syn match rDelimiter /[,;:]/
|
||||
syn match rDelimiter "[,;:]"
|
||||
|
||||
" Error
|
||||
syn region rRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rError,rBraceError,rCurlyError
|
||||
syn region rRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ transparent contains=ALLBUT,rError,rBraceError,rParenError
|
||||
syn region rRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ transparent contains=ALLBUT,rError,rCurlyError,rParenError
|
||||
syn match rError /[)\]}]/
|
||||
syn match rBraceError /[)}]/ contained
|
||||
syn match rCurlyError /[)\]]/ contained
|
||||
syn match rParenError /[\]}]/ contained
|
||||
syn match rError "[)\]}]"
|
||||
syn match rBraceError "[)}]" contained
|
||||
syn match rCurlyError "[)\]]" contained
|
||||
syn match rParenError "[\]}]" contained
|
||||
|
||||
" Functions that may add new objects
|
||||
syn keyword rPreProc library require attach detach source
|
||||
|
||||
" Type
|
||||
syn keyword rType array category character complex double function integer list logical matrix numeric vector data.frame
|
||||
|
||||
" Define the default highlighting.
|
||||
" For version 5.7 and earlier: only when not done already
|
||||
" For version 5.8 and later: only when an item doesn't have highlighting yet
|
||||
if version >= 508 || !exists("did_r_syn_inits")
|
||||
if version < 508
|
||||
let did_r_syn_inits = 1
|
||||
command -nargs=+ HiLink hi link <args>
|
||||
else
|
||||
command -nargs=+ HiLink hi def link <args>
|
||||
endif
|
||||
HiLink rComment Comment
|
||||
HiLink rConstant Constant
|
||||
HiLink rString String
|
||||
HiLink rNumber Number
|
||||
HiLink rBoolean Boolean
|
||||
HiLink rFloat Float
|
||||
HiLink rStatement Statement
|
||||
HiLink rConditional Conditional
|
||||
HiLink rRepeat Repeat
|
||||
HiLink rIdentifier Normal
|
||||
HiLink rArrow Statement
|
||||
HiLink rType Type
|
||||
HiLink rDelimiter Delimiter
|
||||
HiLink rError Error
|
||||
HiLink rBraceError Error
|
||||
HiLink rCurlyError Error
|
||||
HiLink rParenError Error
|
||||
delcommand HiLink
|
||||
endif
|
||||
hi def link rArrow Statement
|
||||
hi def link rBoolean Boolean
|
||||
hi def link rBraceError Error
|
||||
hi def link rComment Comment
|
||||
hi def link rComplex Number
|
||||
hi def link rConditional Conditional
|
||||
hi def link rConstant Constant
|
||||
hi def link rCurlyError Error
|
||||
hi def link rDelimiter Delimiter
|
||||
hi def link rDollar SpecialChar
|
||||
hi def link rError Error
|
||||
hi def link rFloat Float
|
||||
hi def link rInteger Number
|
||||
hi def link rNumber Number
|
||||
hi def link rOperator Operator
|
||||
hi def link rParenError Error
|
||||
hi def link rPreProc PreProc
|
||||
hi def link rRepeat Repeat
|
||||
hi def link rSpecial SpecialChar
|
||||
hi def link rStatement Statement
|
||||
hi def link rString String
|
||||
hi def link rStrError Error
|
||||
hi def link rType Type
|
||||
|
||||
let b:current_syntax="r"
|
||||
|
||||
" vim: ts=8 sw=2
|
||||
|
||||
|
||||
+26
-22
@@ -1,10 +1,10 @@
|
||||
" Vim syntax file
|
||||
" Language: R Help File
|
||||
" Maintainer: Johannes Ranke <jranke@uni-bremen.de>
|
||||
" Last Change: 2010 Apr 22
|
||||
" Version: 0.7.3
|
||||
" SVN: $Id: rhelp.vim 88 2010-04-22 19:37:09Z ranke $
|
||||
" Remarks: - Now includes R syntax highlighting in the appropriate
|
||||
" Last Change: 2010 Nov 22
|
||||
" Version: 0.7.4
|
||||
" SVN: $Id: rhelp.vim 90 2010-11-22 10:58:11Z ranke $
|
||||
" Remarks: - Includes R syntax highlighting in the appropriate
|
||||
" sections if an r.vim file is in the same directory or in the
|
||||
" default debian location.
|
||||
" - There is no Latex markup in equations
|
||||
@@ -28,19 +28,19 @@ syn case match
|
||||
syn region rhelpIdentifier matchgroup=rhelpSection start="\\name{" end="}"
|
||||
syn region rhelpIdentifier matchgroup=rhelpSection start="\\alias{" end="}"
|
||||
syn region rhelpIdentifier matchgroup=rhelpSection start="\\pkg{" end="}"
|
||||
syn region rhelpIdentifier matchgroup=rhelpSection start="\\item{" end="}" contained contains=rhelpDots
|
||||
syn region rhelpIdentifier matchgroup=rhelpSection start="\\method{" end=/}/ contained
|
||||
syn region rhelpIdentifier matchgroup=rhelpSection start="\\method{" end="}" contained
|
||||
syn region rhelpIdentifier matchgroup=rhelpSection start="\\Rdversion{" end="}"
|
||||
|
||||
" Highlighting of R code using an existing r.vim syntax file if available {{{1
|
||||
syn include @R syntax/r.vim
|
||||
syn match rhelpDots "\\dots" containedin=@R
|
||||
syn region rhelpRcode matchgroup=Delimiter start="\\examples{" matchgroup=Delimiter transparent end=/}/ contains=@R,rhelpSection
|
||||
syn region rhelpRcode matchgroup=Delimiter start="\\usage{" matchgroup=Delimiter transparent end=/}/ contains=@R,rhelpIdentifier,rhelpS4method
|
||||
syn region rhelpRcode matchgroup=Delimiter start="\\synopsis{" matchgroup=Delimiter transparent end=/}/ contains=@R
|
||||
syn region rhelpRcode matchgroup=Delimiter start="\\special{" matchgroup=Delimiter transparent end=/}/ contains=@R contained
|
||||
syn region rhelpRcode matchgroup=Delimiter start="\\code{" matchgroup=Delimiter transparent end=/}/ contains=@R,rhelpLink contained
|
||||
syn region rhelpS4method matchgroup=Delimiter start="\\S4method{.*}(" matchgroup=Delimiter transparent end=/)/ contains=@R,rhelpDots contained
|
||||
syn region rhelpSexpr matchgroup=Delimiter start="\\Sexpr{" matchgroup=Delimiter transparent end=/}/ contains=@R
|
||||
syn region rhelpRcode matchgroup=Delimiter start="\\examples{" matchgroup=Delimiter transparent end="}" contains=@R,rhelpSection
|
||||
syn region rhelpRcode matchgroup=Delimiter start="\\usage{" matchgroup=Delimiter transparent end="}" contains=@R,rhelpIdentifier,rhelpS4method
|
||||
syn region rhelpRcode matchgroup=Delimiter start="\\synopsis{" matchgroup=Delimiter transparent end="}" contains=@R
|
||||
syn region rhelpRcode matchgroup=Delimiter start="\\special{" matchgroup=Delimiter transparent end="}" contains=@R contained
|
||||
syn region rhelpRcode matchgroup=Delimiter start="\\code{" matchgroup=Delimiter transparent end="}" contains=@R,rhelpLink contained
|
||||
syn region rhelpS4method matchgroup=Delimiter start="\\S4method{.*}(" matchgroup=Delimiter transparent end=")" contains=@R,rhelpDots contained
|
||||
syn region rhelpSexpr matchgroup=Delimiter start="\\Sexpr{" matchgroup=Delimiter transparent end="}" contains=@R
|
||||
|
||||
" Strings {{{1
|
||||
syn region rhelpString start=/"/ end=/"/
|
||||
@@ -53,7 +53,7 @@ syn match rhelpDelimiter "\\cr"
|
||||
syn match rhelpDelimiter "\\tab "
|
||||
|
||||
" Keywords {{{1
|
||||
syn match rhelpKeyword "\\R"
|
||||
syn match rhelpKeyword "\\R" contained
|
||||
syn match rhelpKeyword "\\ldots"
|
||||
syn match rhelpKeyword "--"
|
||||
syn match rhelpKeyword "---"
|
||||
@@ -129,10 +129,13 @@ syn match rhelpType "\\deqn\>"
|
||||
syn match rhelpType "\\file\>"
|
||||
syn match rhelpType "\\email\>"
|
||||
syn match rhelpType "\\url\>"
|
||||
syn match rhelpType "\\href\>"
|
||||
syn match rhelpType "\\var\>"
|
||||
syn match rhelpType "\\env\>"
|
||||
syn match rhelpType "\\option\>"
|
||||
syn match rhelpType "\\command\>"
|
||||
syn match rhelpType "\\newcommand\>"
|
||||
syn match rhelpType "\\renewcommand\>"
|
||||
syn match rhelpType "\\dfn\>"
|
||||
syn match rhelpType "\\cite\>"
|
||||
syn match rhelpType "\\acronym\>"
|
||||
@@ -140,6 +143,7 @@ syn match rhelpType "\\acronym\>"
|
||||
" rhelp sections {{{1
|
||||
syn match rhelpSection "\\encoding\>"
|
||||
syn match rhelpSection "\\title\>"
|
||||
syn match rhelpSection "\\item\>"
|
||||
syn match rhelpSection "\\description\>"
|
||||
syn match rhelpSection "\\concept\>"
|
||||
syn match rhelpSection "\\arguments\>"
|
||||
@@ -153,11 +157,11 @@ syn match rhelpSection "\\keyword\>"
|
||||
syn match rhelpSection "\\docType\>"
|
||||
syn match rhelpSection "\\format\>"
|
||||
syn match rhelpSection "\\source\>"
|
||||
syn match rhelpSection "\\itemize\>"
|
||||
syn match rhelpSection "\\describe\>"
|
||||
syn match rhelpSection "\\enumerate\>"
|
||||
syn match rhelpSection "\\item "
|
||||
syn match rhelpSection "\\item$"
|
||||
syn match rhelpSection "\\itemize\>"
|
||||
syn match rhelpSection "\\describe\>"
|
||||
syn match rhelpSection "\\enumerate\>"
|
||||
syn match rhelpSection "\\item "
|
||||
syn match rhelpSection "\\item$"
|
||||
syn match rhelpSection "\\tabular{[lcr]*}"
|
||||
syn match rhelpSection "\\dontrun\>"
|
||||
syn match rhelpSection "\\dontshow\>"
|
||||
@@ -165,11 +169,11 @@ syn match rhelpSection "\\testonly\>"
|
||||
syn match rhelpSection "\\donttest\>"
|
||||
|
||||
" Freely named Sections {{{1
|
||||
syn region rhelpFreesec matchgroup=Delimiter start="\\section{" matchgroup=Delimiter transparent end=/}/
|
||||
syn region rhelpFreesubsec matchgroup=Delimiter start="\\subsection{" matchgroup=Delimiter transparent end=/}/
|
||||
syn region rhelpFreesec matchgroup=Delimiter start="\\section{" matchgroup=Delimiter transparent end="}"
|
||||
syn region rhelpFreesubsec matchgroup=Delimiter start="\\subsection{" matchgroup=Delimiter transparent end="}"
|
||||
|
||||
" R help file comments {{{1
|
||||
syn match rhelpComment /%.*$/ contained
|
||||
syn match rhelpComment /%.*$/
|
||||
|
||||
" Error {{{1
|
||||
syn region rhelpRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rhelpError,rhelpBraceError,rhelpCurlyError
|
||||
|
||||
+27
-22
@@ -1,8 +1,8 @@
|
||||
" Vim syntax file
|
||||
" Language: TeX
|
||||
" Maintainer: Dr. Charles E. Campbell, Jr. <NdrchipO@ScampbellPfamily.AbizM>
|
||||
" Last Change: Aug 12, 2010
|
||||
" Version: 57
|
||||
" Last Change: Sep 17, 2010
|
||||
" Version: 60
|
||||
" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
|
||||
"
|
||||
" Notes: {{{1
|
||||
@@ -67,11 +67,11 @@ endif
|
||||
" g:tex_stylish to 1 (for "*.sty" mode)
|
||||
" or to 0 else (normal "*.tex" mode)
|
||||
" or on a buffer-by-buffer basis with b:tex_stylish
|
||||
let b:extfname=expand("%:e")
|
||||
let s:extfname=expand("%:e")
|
||||
if exists("g:tex_stylish")
|
||||
let b:tex_stylish= g:tex_stylish
|
||||
elseif !exists("b:tex_stylish")
|
||||
if b:extfname == "sty" || b:extfname == "cls" || b:extfname == "clo" || b:extfname == "dtx" || b:extfname == "ltx"
|
||||
if s:extfname == "sty" || s:extfname == "cls" || s:extfname == "clo" || s:extfname == "dtx" || s:extfname == "ltx"
|
||||
let b:tex_stylish= 1
|
||||
else
|
||||
let b:tex_stylish= 0
|
||||
@@ -92,12 +92,12 @@ endif
|
||||
" (La)TeX keywords: only use the letters a-zA-Z {{{1
|
||||
" but _ is the only one that causes problems.
|
||||
if version < 600
|
||||
set isk-=_
|
||||
set isk=a-z,A-Z
|
||||
if b:tex_stylish
|
||||
set isk+=@
|
||||
endif
|
||||
else
|
||||
setlocal isk-=_
|
||||
setlocal isk=a-z,A-Z
|
||||
if b:tex_stylish
|
||||
setlocal isk+=@
|
||||
endif
|
||||
@@ -300,7 +300,7 @@ endif
|
||||
|
||||
" Bad Math (mismatched): {{{1
|
||||
if !exists("tex_no_math")
|
||||
syn match texBadMath "\\end\s*{\s*\(array\|gathered\|bBpvV]matrix\|split\|subequations\|smallmatrix\|xxalignat\)\s*}"
|
||||
syn match texBadMath "\\end\s*{\s*\(array\|gathered\|bBpvV]matrix\|split\|smallmatrix\|xxalignat\)\s*}"
|
||||
syn match texBadMath "\\end\s*{\s*\(align\|alignat\|displaymath\|displaymath\|eqnarray\|equation\|flalign\|gather\|math\|multline\|xalignat\)\*\=\s*}"
|
||||
syn match texBadMath "\\[\])]"
|
||||
endif
|
||||
@@ -345,7 +345,6 @@ if !exists("tex_no_math")
|
||||
call TexNewMathZone("G","gather",1)
|
||||
call TexNewMathZone("H","math",1)
|
||||
call TexNewMathZone("I","multline",1)
|
||||
call TexNewMathZone("J","subequations",0)
|
||||
call TexNewMathZone("K","xalignat",1)
|
||||
call TexNewMathZone("L","xxalignat",0)
|
||||
|
||||
@@ -412,7 +411,7 @@ endif
|
||||
syn case ignore
|
||||
syn keyword texTodo contained combak fixme todo xxx
|
||||
syn case match
|
||||
if b:extfname == "dtx"
|
||||
if s:extfname == "dtx"
|
||||
syn match texComment "\^\^A.*$" contains=@texCommentGroup
|
||||
syn match texComment "^%\+" contains=@texCommentGroup
|
||||
else
|
||||
@@ -468,15 +467,16 @@ else
|
||||
endif
|
||||
|
||||
" Tex Reference Zones: {{{1
|
||||
syn region texZone matchgroup=texStatement start="@samp{" end="}\|%stopzone\>" contains=@texRefGroup
|
||||
syn region texRefZone matchgroup=texStatement start="\\nocite{" end="}\|%stopzone\>" contains=@texRefGroup
|
||||
syn region texRefZone matchgroup=texStatement start="\\bibliography{" end="}\|%stopzone\>" contains=@texRefGroup
|
||||
syn region texRefZone matchgroup=texStatement start="\\label{" end="}\|%stopzone\>" contains=@texRefGroup
|
||||
syn region texRefZone matchgroup=texStatement start="\\\(page\|eq\)ref{" end="}\|%stopzone\>" contains=@texRefGroup
|
||||
syn region texRefZone matchgroup=texStatement start="\\v\=ref{" end="}\|%stopzone\>" contains=@texRefGroup
|
||||
syn match texRefZone '\\cite\%([tp]\*\=\)\=' nextgroup=texRefOption,texCite
|
||||
syn region texRefOption contained matchgroup=Delimiter start='\[' end=']' contains=@texRefGroup,texRefZone nextgroup=texRefOption,texCite
|
||||
syn region texCite contained matchgroup=Delimiter start='{' end='}' contains=@texRefGroup,texRefZone,texCite
|
||||
syn match texRefZone '\\@samp\>' skipwhite nextgroup=texRefLabel
|
||||
syn match texRefZone '\\nocite\>' skipwhite nextgroup=texRefLabel
|
||||
syn match texRefZone '\\bibliography\>' skipwhite nextgroup=texRefLabel
|
||||
syn match texRefZone '\\label\>' skipwhite nextgroup=texRefLabel
|
||||
syn match texRefZone '\\\(page\|eq\)ref\>' skipwhite nextgroup=texRefLabel
|
||||
syn match texRefZone '\\v\=ref' skipwhite nextgroup=texRefLabel
|
||||
syn match texRefZone '\\cite\%([tp]\*\=\)\=' skipwhite nextgroup=texCiteOption,texCite
|
||||
syn region texRefLabel contained matchgroup=Delimiter start='{' end='}' contains=@texRefGroup
|
||||
syn region texCiteOption contained matchgroup=Delimiter start='\[' end=']' contains=@Spell,@texRefGroup,@texMathZones,texRefZone nextgroup=texCiteOption,texCite
|
||||
syn region texCite contained matchgroup=Delimiter start='{' end='}' contains=@texRefGroup,texCite
|
||||
|
||||
" Handle newcommand, newenvironment : {{{1
|
||||
syn match texNewCmd "\\newcommand\>" nextgroup=texCmdName skipwhite skipnl
|
||||
@@ -753,7 +753,11 @@ if has("conceal") && &enc == 'utf-8'
|
||||
\ ['wedge' , '∧'],
|
||||
\ ['wr' , '≀']]
|
||||
for texmath in s:texMathList
|
||||
exe "syn match texMathSymbol '\\\\".texmath[0]."\\>' contained conceal cchar=".texmath[1]
|
||||
if texmath[0] =~ '\w$'
|
||||
exe "syn match texMathSymbol '\\\\".texmath[0]."\\>' contained conceal cchar=".texmath[1]
|
||||
else
|
||||
exe "syn match texMathSymbol '\\\\".texmath[0]."' contained conceal cchar=".texmath[1]
|
||||
endif
|
||||
endfor
|
||||
|
||||
if &ambw == "double"
|
||||
@@ -1027,7 +1031,6 @@ if did_tex_syntax_inits == 1
|
||||
HiLink texError Error
|
||||
endif
|
||||
|
||||
HiLink texCite texRefZone
|
||||
HiLink texDefCmd texDef
|
||||
HiLink texDefName texDef
|
||||
HiLink texDocType texCmdName
|
||||
@@ -1052,6 +1055,7 @@ if did_tex_syntax_inits == 1
|
||||
HiLink texMathZoneV texMath
|
||||
HiLink texMathZoneZ texMath
|
||||
endif
|
||||
HiLink texRefZone Identifier
|
||||
HiLink texSectionMarker texCmdName
|
||||
HiLink texSectionName texSection
|
||||
HiLink texSpaceCode texStatement
|
||||
@@ -1060,6 +1064,7 @@ if did_tex_syntax_inits == 1
|
||||
HiLink texTypeStyle texType
|
||||
|
||||
" Basic TeX highlighting groups
|
||||
HiLink texCite Special
|
||||
HiLink texCmdArgs Number
|
||||
HiLink texCmdName Statement
|
||||
HiLink texComment Comment
|
||||
@@ -1075,7 +1080,7 @@ if did_tex_syntax_inits == 1
|
||||
HiLink texNewCmd Statement
|
||||
HiLink texNewEnv Statement
|
||||
HiLink texOption Number
|
||||
HiLink texRefZone Special
|
||||
HiLink texRefLabel Special
|
||||
HiLink texSection PreCondit
|
||||
HiLink texSpaceCodeChar Special
|
||||
HiLink texSpecialChar SpecialChar
|
||||
@@ -1089,6 +1094,6 @@ if did_tex_syntax_inits == 1
|
||||
endif
|
||||
|
||||
" Current Syntax: {{{1
|
||||
unlet b:extfname
|
||||
unlet s:extfname
|
||||
let b:current_syntax = "tex"
|
||||
" vim: ts=8 fdm=marker
|
||||
|
||||
+12
-10
@@ -1,8 +1,8 @@
|
||||
" Vim syntax file
|
||||
" Language: Vim 7.3 script
|
||||
" Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
|
||||
" Last Change: August 04, 2010
|
||||
" Version: 7.3-04
|
||||
" Last Change: August 20, 2010
|
||||
" Version: 7.3-05
|
||||
" Automatically generated keyword lists: {{{1
|
||||
|
||||
" Quit when a syntax file was already loaded {{{2
|
||||
@@ -16,12 +16,14 @@ syn keyword vimTodo contained COMBAK FIXME TODO XXX
|
||||
syn cluster vimCommentGroup contains=vimTodo,@Spell
|
||||
|
||||
" regular vim commands {{{2
|
||||
syn keyword vimCommand contained abc[lear] argdo argu[ment] bel[owright] bN[ext] breakd[el] b[uffer] caddb[uffer] cb[uffer] cex[pr] cg[etfile] checkt[ime] cnew[er] col[der] con[tinue] cq[uit] delc[ommand] diffoff diffu[pdate] dr[op] echom[sg] em[enu] endt[ry] exi[t] fina[lly] fix[del] foldd[oopen] go[to] hid[e] ij[ump] isp[lit] k laddb[uffer] la[st] lch[dir] lex[pr] lgete[xpr] l[ist] lmak[e] lN[ext] loc[kmarks] lpf[ile] lt[ag] lv[imgrep] ma[rk] mk[exrc] mkv[imrc] mz[scheme] new noh[lsearch] on[ly] ped[it] popu prev[ious] prof[ile] pta[g] ptn[ext] pts[elect] py[thon] r[ead] redr[aw] ret[ab] rightb[elow] rundo san[dbox] sbf[irst] sbN[ext] scripte[ncoding] setg[lobal] sh[ell] sla[st] sme sni[ff] sor[t] spelli[nfo] sp[lit] startg[replace] st[op] sunme syncbind tabd[o] tabl[ast] tabN[ext] tabs tcld[o] th[row] tm[enu] tp[revious] tu undoj[oin] uns[ilent] vert[ical] vi[sual] wa[ll] winp[os] wp[revious] ws[verb] xa[ll] xmenu xnoremenu
|
||||
syn keyword vimCommand contained abo[veleft] arge[dit] as[cii] bf[irst] bo[tright] breakl[ist] buffers cad[dexpr] cc cf[ile] c[hange] cla[st] cn[ext] colo[rscheme] cope[n] cr[ewind] d[elete] diffpatch dig[raphs] ds[earch] echon emenu* endw[hile] f[ile] fin[d] fo[ld] foldo[pen] gr[ep] his[tory] il[ist] iuna[bbrev] keepalt lad[dexpr] later lcl[ose] lf[ile] lg[etfile] ll lmapc[lear] lnf[ile] lockv[ar] lp[revious] lua lvimgrepa[dd] marks mks[ession] mod[e] nbc[lose] n[ext] nu[mber] o[pen] pe[rl] popu[p] p[rint] promptf[ind] ptf[irst] ptN[ext] pu[t] qa[ll] rec[over] redraws[tatus] retu[rn] rub[y] ru[ntime] sa[rgument] sbl[ast] sbp[revious] scrip[tnames] setl[ocal] sign sl[eep] smenu sno[magic] so[urce] spellr[epall] spr[evious] star[tinsert] stopi[nsert] sunmenu t tabe[dit] tabm[ove] tabo[nly] ta[g] tclf[ile] tj[ump] tn[ext] tr[ewind] tu[nmenu] undol[ist] up[date] vie[w] vmapc[lear] wh[ile] win[size] wq wundo x[it] XMLent xunme
|
||||
syn keyword vimCommand contained al[l] argg[lobal] bad[d] bl[ast] bp[revious] br[ewind] bun[load] caddf[ile] ccl[ose] cfir[st] changes cl[ist] cN[ext] comc[lear] co[py] cuna[bbrev] delf[unction] diffpu[t] di[splay] dsp[lit] e[dit] endfo[r] ene[w] files fini[sh] foldc[lose] for grepa[dd] iabc[lear] imapc[lear] j[oin] keepj[umps] laddf[ile] lb[uffer] le[ft] lfir[st] lgr[ep] lla[st] lnew[er] lNf[ile] lol[der] lr[ewind] luado lw[indow] mat[ch] mksp[ell] m[ove] nb[key] N[ext] ol[dfiles] opt[ions] perld[o] pp[op] P[rint] promptr[epl] ptj[ump] ptp[revious] pw[d] q[uit] redi[r] reg[isters] rew[ind] rubyd[o] rv[iminfo] sav[eas] sbm[odified] sbr[ewind] se[t] sf[ind] sil[ent] sm[agic] sn[ext] snoreme spelld[ump] spellu[ndo] sre[wind] startr[eplace] sts[elect] sus[pend] tab tabf[ind] tabnew tabp[revious] tags te[aroff] tl[ast] tN[ext] try una[bbreviate] unh[ide] verb[ose] vim[grep] vne[w] winc[md] wn[ext] wqa[ll] wv[iminfo] xmapc[lear] XMLns xunmenu
|
||||
syn keyword vimCommand contained arga[dd] argl[ocal] ba[ll] bm[odified] brea[k] bro[wse] bw[ipeout] cal[l] cd cgetb[uffer] chd[ir] clo[se] cnf[ile] comp[iler] cpf[ile] cw[indow] delm[arks] diffsplit dj[ump] earlier el[se] endf[unction] ex filetype fir[st] folddoc[losed] fu[nction] ha[rdcopy] if is[earch] ju[mps] kee[pmarks] lan[guage] lc[d] lefta[bove] lgetb[uffer] lgrepa[dd] lli[st] lne[xt] lo[adview] lop[en] ls luafile mak[e] menut[ranslate] mkvie[w] mzf[ile] nbs[tart] nmapc[lear] omapc[lear] pc[lose] po[p] pre[serve] profd[el] ps[earch] ptl[ast] ptr[ewind] pyf[ile] quita[ll] red[o] res[ize] ri[ght] rubyf[ile] sal[l] sba[ll] sbn[ext] sb[uffer] setf[iletype] sfir[st] sim[alt] sm[ap] sN[ext] snoremenu spe[llgood] spellw[rong] sta[g] stj[ump] sun[hide] sv[iew] tabc[lose] tabfir[st] tabn[ext] tabr[ewind] tc[l] tf[irst] tm to[pleft] ts[elect] u[ndo] unlo[ckvar] ve[rsion] vimgrepa[dd] vs[plit] windo wN[ext] w[rite] X xme xnoreme y[ank]
|
||||
syn keyword vimCommand contained argd[elete] ar[gs] bd[elete] bn[ext] breaka[dd] bufdo cabc[lear] cat[ch] ce[nter] cgete[xpr] che[ckpath] cmapc[lear] cNf[ile] conf[irm] cp[revious] debugg[reedy] diffg[et] diffthis dl[ist] echoe[rr] elsei[f] en[dif]
|
||||
syn match vimCommand contained "\<z[-+^.=]"
|
||||
syn keyword vimCommand contained a arga[dd] argu[ment] bd[elete] bN[ext] breakd[el] buf c cal[l] ce[nter] cg[etfile] cl cn cNf comc[lear] cope[n] cr[ewind] d d[elete] diffo diffsplit di[splay] ds[earch] ec e:e:e en endt[ry] exu[sage] filetype fix[del] for go[to] h hi if intro k la lan[guage] lch[dir] let@ lg[etfile] lla[st] lnew[er] lNf[ile] loc[kmarks] lr[ewind] lv[imgrep] ma[rk] messages mkv mv n new noautocmd on[ly] p:~ perld[o] popu[p] p[rint] promptr[epl] ptl[ast] ptr[ewind] py3file q[uit] r[ead] redraws[tatus] ret[ab] r:r:r ru[ntime] sba[ll] sbp[revious] scs sf[ind] sil[ent] sm[ap] sno[magic] so[urce] spellr[epall] st startr[eplace] sunme sw[apname] t tabf[ind] tabn[ext] ta[g] tf[irst] tn tp[revious] tu undoj[oin] up[date] vi vmapc[lear] win wN[ext] wundo xmapc[lear] xnoremenu
|
||||
syn keyword vimCommand contained ab argd[elete] as[cii] bel[owright] bo[tright] breakl[ist] bufdo cabc[lear] cat[ch] cex[pr] c[hange] cla[st] cN cnf[ile] comment co[py] cs de delf diffoff difft dj[ump] dsp[lit] echoe[rr] e:e:r endf endw[hile] f fin fo[ld] fu gr[ep] ha[rdcopy] hid[e] ij[ump] is[earch] keepa lad la[st] lcl[ose] lex[pr] lgr[ep] lli[st] lne[xt] lo lockv[ar] ls lvimgrepa[dd] marks mk mkvie[w] Mycmd N n[ext] noh[lsearch] o[pen] P p:gs? pp[op] P[rint] ps[earch] ptn pts[elect] pyf[ile] quita[ll] rec[over] reg[isters] retu[rn] ru rv[iminfo] sbf[irst] sbr[ewind] scscope sfir[st] sim[alt] sme snoreme s?pat?sub? spellu[ndo] sta[g] stj[ump] sunmenu sy ta tabfir[st] tabN[ext] tags th[row] tN tr tu[nmenu] undol[ist] v vie[w] vne[w] winc[md] wp[revious] wv[iminfo] xme xterm
|
||||
syn keyword vimCommand contained abc[lear] argdo au bf[irst] bp[revious] br[ewind] b[uffer] cad cb[uffer] cf[ile] changes cl[ist] cnew[er] cNf[ile] comp[iler] count cscope debug delf[unction] DiffOrig diffthis dl[ist] dwim echom[sg] el[se] endfo[r] ene[w] f[ile] fina[lly] foldc[lose] fun grepa[dd] h[elp] his[tory] il[ist] isp[lit] keepalt laddb[uffer] lat lcs lf[ile] lgrepa[dd] lmak[e] lN[ext] loadk lol[der] lt[ag] lw[indow] mat[ch] mkdir mkv[imrc] MyCommand nbc[lose] N[ext] nu[mber] opt[ions] pc[lose] p:h pr pro p:t ptN pu[t] py[thon] quote red Ren rew[ind] rub[y] sal[l] sbl[ast] sb[uffer] se[t] sh[ell] sl smenu snoremenu spe spellw[rong] star st[op] sus[pend] syn tab tabl[ast] tabo[nly] tc[l] tj[ump] tn[ext] t:r u unh[ide] ve vim[grep] vs[plit] windo wq x xmenu xunme
|
||||
syn keyword vimCommand contained abo[veleft] arge[dit] bad[d] bl[ast] br bro[wse] buffers caddb[uffer] cc cfir[st] chd[ir] clo[se] cn[ext] col[der] con cpf[ile] cstag debugg[reedy] delm[arks] diffp diffu[pdate] do e echon elsei[f] endfun Error filename fin[d] folddoc[losed] fu[nction] gs?pat?sub? helpf[ind] i imapc[lear] iuna[bbrev] keepj[umps] lad[dexpr] later lcscope lfir[st] lh[elpgrep] lmapc[lear] lnf loadkeymap lop[en] lua ma menut mk[exrc] mo mz nb[key] nkf o ownsyntax pe p:h:h p:r profd[el] pta[g] ptn[ext] pw[d] python3 r redi[r] Rena ri[ght] rubyd[o] san[dbox] sbm[odified] scrip setf[iletype] si sla[st] sn[ext] s@\n@\=\r" spelld[ump] sp[lit] start stopi[nsert] s?version?main? sync tabc[lose] tabm[ove] tabp[revious] tcld[o] tl[ast] tN[ext] tr[ewind] un unl verb[ose] vimgrepa[dd] w winp[os] wqa[ll] X XMLent xunmenu
|
||||
syn keyword vimCommand contained al[l] argg[lobal] ba[ll] bm[odified] brea[k] browseset bun[load] cad[dexpr] ccl[ose] cgetb[uffer] che[ckpath] cmapc[lear] cN[ext] colo[rscheme] conf[irm] cp[revious] cuna[bbrev] del di diffpatch dig doau ea e[dit] em[enu] endf[unction] ex files fini[sh] foldd[oopen] g gui helpg[rep] ia in j[oin] kee[pmarks] laddf[ile] lb[uffer] le[ft] lgetb[uffer] l[ist] lN lNf lo[adview] lpf[ile] luado mak[e] menut[ranslate] mks[ession] mod[e] mzf[ile] nbs[tart] nmapc[lear] ol[dfiles] p ped[it] po[p] pre[serve] prof[ile] ptf[irst] ptN[ext] py q re red[o] Renu rightb[elow] rubyf[ile] sa[rgument] sbn[ext] scripte[ncoding] setg[lobal] sig sl[eep] sN[ext] so spe[llgood] spr[evious] startg[replace] sts[elect] s?version?main?:p syncbind tabd[o] tabN tabr[ewind] tclf[ile] tm TOhtml try una[bbreviate] unlo[ckvar] ve[rsion] vi[sual] wa[ll] win[size] w[rite] xa[ll] XMLns xwininfo
|
||||
syn keyword vimCommand contained Allargs argl[ocal] bar bn[ext] breaka[dd] bu bw[ipeout] caddf[ile] cd cgete[xpr] checkt[ime] cmdname cnf com con[tinue] cq[uit] cw[indow] delc[ommand] diffg[et] diffpu[t] dig[raphs] dr[op] earlier e:e emenu* en[dif] exi[t] filet fir[st] foldo[pen] get gvim helpt[ags] iabc[lear] index ju[mps] l lan lc[d] lefta[bove] lgete[xpr] ll lne lnf[ile] locale lp[revious] luafile Man mes mksp[ell] m[ove] mz[scheme] ne noa omapc[lear] p: pe[rl] popu prev[ious] promptf[ind] ptj[ump] ptp[revious] py3 qa[ll] r:e redr[aw] res[ize] r:r rundo sav[eas] sbN[ext] scrip[tnames] setl[ocal] sign sm[agic] sni[ff] sor[t] spelli[nfo] sre[wind] star[tinsert] sun[hide] sv[iew] synlist tabe[dit] tabnew tabs te[aroff] tm[enu] to[pleft] ts[elect] u[ndo] uns[ilent] vert[ical] viu[sage] wh[ile] wn[ext] ws[verb] x[it] xnoreme y[ank]
|
||||
syn keyword vimCommand contained ar ar[gs]
|
||||
syn match vimCommand contained "\<z[-+^.=]\="
|
||||
syn keyword vimCommand contained maca[ction] macm[enu]
|
||||
|
||||
" vimOptions are caught only when contained in a vimSet {{{2
|
||||
@@ -322,7 +324,7 @@ syn case match
|
||||
" ====
|
||||
syn match vimMap "\<map\>!\=\ze\s*[^(]" skipwhite nextgroup=vimMapMod,vimMapLhs
|
||||
syn keyword vimMap cm[ap] cno[remap] im[ap] ino[remap] lm[ap] ln[oremap] nm[ap] nn[oremap] no[remap] om[ap] ono[remap] smap snor[emap] vm[ap] vn[oremap] xm[ap] xn[oremap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
|
||||
syn keyword vimMap mapc[lear]
|
||||
syn keyword vimMap mapc[lear] smapc[lear]
|
||||
syn keyword vimUnmap cu[nmap] iu[nmap] lu[nmap] nun[map] ou[nmap] sunm[ap] unm[ap] unm[ap] vu[nmap] xu[nmap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
|
||||
syn match vimMapLhs contained "\S\+" contains=vimNotation,vimCtrlChar skipwhite nextgroup=vimMapRhs
|
||||
syn match vimMapBang contained "!" skipwhite nextgroup=vimMapMod,vimMapLhs
|
||||
@@ -556,7 +558,7 @@ let s:luapath= expand("<sfile>:p:h")."/lua.vim"
|
||||
if !filereadable(s:luapath)
|
||||
let s:luapath= globpath(&rtp,"syntax/lua.vim")
|
||||
endif
|
||||
if (g:vimsyn_embed =~ 'p' && has("lua")) && filereadable(s:luapath)
|
||||
if (g:vimsyn_embed =~ 'l' && has("lua")) && filereadable(s:luapath)
|
||||
unlet! b:current_syntax
|
||||
exe "syn include @vimLuaScript ".s:luapath
|
||||
if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'l'
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
" Vim syntax file
|
||||
" This is a GENERATED FILE. Please always refer to source file at the URI below.
|
||||
" Language: XF86Config (XFree86 configuration file)
|
||||
" Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
|
||||
" Last Change: 2005 Jul 12
|
||||
" Former Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
|
||||
" Last Change: 2010 Nov 01
|
||||
" URL: http://trific.ath.cx/Ftp/vim/syntax/xf86conf.vim
|
||||
" Required Vim Version: 6.0
|
||||
"
|
||||
@@ -63,7 +63,7 @@ syn match xf86confModeLineValue "\"[^\"]\+\"\(\_s\+[0-9.]\+\)\{9}" nextgroup=xf8
|
||||
|
||||
" Sections and subsections
|
||||
if b:xf86conf_xfree86_version >= 4
|
||||
syn region xf86confSection matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"\(Files\|Server[_ ]*Flags\|Input[_ ]*Device\|Device\|Video[_ ]*Adaptor\|Server[_ ]*Layout\|DRI\|Extensions\|Vendor\|Keyboard\|Pointer\)\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOption,xf86confKeyword,xf86confSectionError
|
||||
syn region xf86confSection matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"\(Files\|Server[_ ]*Flags\|Input[_ ]*Device\|Device\|Video[_ ]*Adaptor\|Server[_ ]*Layout\|DRI\|Extensions\|Vendor\|Keyboard\|Pointer\|InputClass\)\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOption,xf86confKeyword,xf86confSectionError
|
||||
syn region xf86confSectionModule matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Module\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionAny,xf86confComment,xf86confOption,xf86confKeyword
|
||||
syn region xf86confSectionMonitor matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Monitor\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionMode,xf86confModeLine,xf86confComment,xf86confOption,xf86confKeyword
|
||||
syn region xf86confSectionModes matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Modes\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionMode,xf86confModeLine,xf86confComment
|
||||
@@ -165,7 +165,7 @@ syn match xf86confSync "\(\s\+[+-][CHV]_*Sync\)\+" contained
|
||||
|
||||
" Synchronization
|
||||
if b:xf86conf_xfree86_version >= 4
|
||||
syn sync match xf86confSyncSection grouphere xf86confSection "^\s*Section\s\+\"\(Files\|Server[_ ]*Flags\|Input[_ ]*Device\|Device\|Video[_ ]*Adaptor\|Server[_ ]*Layout\|DRI\|Extensions\|Vendor\|Keyboard\|Pointer\)\""
|
||||
syn sync match xf86confSyncSection grouphere xf86confSection "^\s*Section\s\+\"\(Files\|Server[_ ]*Flags\|Input[_ ]*Device\|Device\|Video[_ ]*Adaptor\|Server[_ ]*Layout\|DRI\|Extensions\|Vendor\|Keyboard\|Pointer\|InputClass\)\""
|
||||
syn sync match xf86confSyncSectionModule grouphere xf86confSectionModule "^\s*Section\s\+\"Module\""
|
||||
syn sync match xf86confSyncSectionModes groupthere xf86confSectionModes "^\s*Section\s\+\"Modes\""
|
||||
else
|
||||
|
||||
+17
-5
@@ -1,12 +1,22 @@
|
||||
" Vim syntax file
|
||||
" Language: Yacc
|
||||
" Maintainer: Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
|
||||
" Last Change: Aug 2, 2010
|
||||
" Version: 8
|
||||
" Last Change: Aug 12, 2010
|
||||
" Version: 9
|
||||
" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
|
||||
"
|
||||
" Options: {{{1
|
||||
" g:yacc_uses_cpp : if this variable exists, then C++ is loaded rather than C
|
||||
"
|
||||
" Overall layout of a bison/yacc grammer:
|
||||
" %{
|
||||
" Prolog
|
||||
" %}
|
||||
" Bison/Yacc Declarations
|
||||
" %%
|
||||
" Grammar Rules
|
||||
" %%
|
||||
" Epilogue
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" this version of syntax/yacc.vim requires 6.0 or later
|
||||
@@ -35,7 +45,7 @@ endif
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" Yacc Clusters: {{{1
|
||||
syn cluster yaccInitCluster contains=yaccKey,yaccKeyActn,yaccBrkt,yaccType,yaccString,yaccUnionStart,yaccHeader2,yaccComment,yaccDefines,yaccParseParam
|
||||
syn cluster yaccInitCluster contains=yaccKey,yaccKeyActn,yaccBrkt,yaccType,yaccString,yaccUnionStart,yaccHeader2,yaccComment,yaccDefines,yaccParseParam,yaccParseOption
|
||||
syn cluster yaccRulesCluster contains=yaccNonterminal,yaccString
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
@@ -50,7 +60,8 @@ HiFold syn region yaccEndCode matchgroup=yaccSectionSep start='^%%$' end='\%$'
|
||||
" ---------------------------------------------------------------------
|
||||
" Yacc Commands: {{{1
|
||||
syn match yaccDefines '^%define\s\+.*$'
|
||||
syn match yaccParseParam '%parse-param\>' skipwhite nextgroup=yaccParseParamStr
|
||||
syn match yaccParseParam '%\(parse\|lex\)-param\>' skipwhite nextgroup=yaccParseParamStr
|
||||
syn match yaccParseOption '%\%(api\.pure\|pure-parser\|locations\|error-verbose\)\>'
|
||||
syn region yaccParseParamStr contained matchgroup=Delimiter start='{' end='}' contains=cStructure
|
||||
|
||||
syn match yaccDelim "[:|]" contained
|
||||
@@ -96,7 +107,8 @@ if !exists("did_yacc_syn_inits")
|
||||
HiLink yaccCurly Delimiter
|
||||
HiLink yaccCurlyError Error
|
||||
HiLink yaccDefines cDefine
|
||||
HiLink yaccParseParam cDefine
|
||||
HiLink yaccParseParam yaccParseOption
|
||||
HiLink yaccParseOption cDefine
|
||||
HiLink yaccNonterminal Function
|
||||
HiLink yaccDelim Delimiter
|
||||
HiLink yaccKeyActn Special
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: YAML (YAML Ain't Markup Language) 1.2
|
||||
" Maintainer: Nikolai Pavlov <zyx.vim@gmail.com>
|
||||
" First author: Nikolai Weibull <now@bitwi.se>
|
||||
" Latest Revision: 2010-09-16
|
||||
" Latest Revision: 2010-10-08
|
||||
|
||||
if exists('b:current_syntax')
|
||||
finish
|
||||
@@ -124,7 +124,7 @@ syn match yamlConstant '\<\~\>'
|
||||
|
||||
syn match yamlTimestamp /\%([\[\]{}, \t]\@!\p\)\@<!\%(\d\{4}-\d\d\=-\d\d\=\%(\%([Tt]\|\s\+\)\%(\d\d\=\):\%(\d\d\):\%(\d\d\)\%(\.\%(\d*\)\)\=\%(\s*\%(Z\|[+-]\d\d\=\%(:\d\d\)\=\)\)\=\)\=\)\%([\[\]{}, \t]\@!\p\)\@!/
|
||||
|
||||
syn match yamlInteger /\%([\[\]{}, \t]\@!\p\)\@<!\%([+-]\=\%(0\%(b[0-1_]\+\|[0-7_]\+\|x[0-9a-fA-F_]\+\)\=\|\%([1-9][0-9_]*\%(:[0-5]\=\d\)\+\)\)\)\%([\[\]{}, \t]\@!\p\)\@!/
|
||||
syn match yamlInteger /\%([\[\]{}, \t]\@!\p\)\@<!\%([+-]\=\%(0\%(b[0-1_]\+\|[0-7_]\+\|x[0-9a-fA-F_]\+\)\=\|\%([1-9][0-9_]*\%(:[0-5]\=\d\)\+\)\)\|[1-9][0-9_]*\)\%([\[\]{}, \t]\@!\p\)\@!/
|
||||
syn match yamlFloat /\%([\[\]{}, \t]\@!\p\)\@<!\%([+-]\=\%(\%(\d[0-9_]*\)\.[0-9_]*\%([eE][+-]\d\+\)\=\|\.[0-9_]\+\%([eE][-+][0-9]\+\)\=\|\d[0-9_]*\%(:[0-5]\=\d\)\+\.[0-9_]*\|\.\%(inf\|Inf\|INF\)\)\|\%(\.\%(nan\|NaN\|NAN\)\)\)\%([\[\]{}, \t]\@!\p\)\@!/
|
||||
|
||||
execute 'syn match yamlNodeTag '.string(s:c_ns_tag_property)
|
||||
|
||||
@@ -1202,7 +1202,7 @@
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>55</string>
|
||||
<string>56</string>
|
||||
<key>NSMainNibFile</key>
|
||||
<string>MainMenu</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
|
||||
@@ -41,9 +41,14 @@
|
||||
#import "MMPreferenceController.h"
|
||||
#import "MMVimController.h"
|
||||
#import "MMWindowController.h"
|
||||
#import "MMTextView.h"
|
||||
#import "Miscellaneous.h"
|
||||
#import <unistd.h>
|
||||
#import <CoreServices/CoreServices.h>
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
|
||||
// Need Carbon for TIS...() functions
|
||||
#import <Carbon/Carbon.h>
|
||||
#endif
|
||||
|
||||
|
||||
#define MM_HANDLE_XCODE_MOD_EVENT 0
|
||||
@@ -135,7 +140,12 @@ typedef struct
|
||||
- (NSDictionary *)convertVimControllerArguments:(NSDictionary *)args
|
||||
toCommandLine:(NSArray **)cmdline;
|
||||
- (NSString *)workingDirectoryForArguments:(NSDictionary *)args;
|
||||
- (NSScreen *)screenContainingPoint:(NSPoint)pt;
|
||||
- (NSScreen *)screenContainingTopLeftPoint:(NSPoint)pt;
|
||||
- (void)addInputSourceChangedObserver;
|
||||
- (void)removeInputSourceChangedObserver;
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
|
||||
- (void)inputSourceChanged:(NSNotification *)notification;
|
||||
#endif
|
||||
@end
|
||||
|
||||
|
||||
@@ -374,6 +384,8 @@ fsEventCallback(ConstFSEventStreamRef streamRef,
|
||||
[self startWatchingVimDir];
|
||||
}
|
||||
|
||||
[self addInputSourceChangedObserver];
|
||||
|
||||
ASLogInfo(@"MacVim finished launching");
|
||||
}
|
||||
|
||||
@@ -469,13 +481,11 @@ fsEventCallback(ConstFSEventStreamRef streamRef,
|
||||
int reply = NSTerminateNow;
|
||||
BOOL modifiedBuffers = NO;
|
||||
|
||||
// Go through windows, checking for modified buffers. (Each Vim process
|
||||
// tells MacVim when any buffer has been modified and MacVim sets the
|
||||
// 'documentEdited' flag of the window correspondingly.)
|
||||
NSEnumerator *e = [[NSApp windows] objectEnumerator];
|
||||
id window;
|
||||
while ((window = [e nextObject])) {
|
||||
if ([window isDocumentEdited]) {
|
||||
// Go through Vim controllers, checking for modified buffers.
|
||||
NSEnumerator *e = [vimControllers objectEnumerator];
|
||||
id vc;
|
||||
while ((vc = [e nextObject])) {
|
||||
if ([vc hasModifiedBuffer]) {
|
||||
modifiedBuffers = YES;
|
||||
break;
|
||||
}
|
||||
@@ -507,7 +517,6 @@ fsEventCallback(ConstFSEventStreamRef streamRef,
|
||||
|
||||
// Count the number of open tabs
|
||||
e = [vimControllers objectEnumerator];
|
||||
id vc;
|
||||
while ((vc = [e nextObject]))
|
||||
numTabs += [[vc objectForVimStateKey:@"numTabs"] intValue];
|
||||
|
||||
@@ -597,6 +606,8 @@ fsEventCallback(ConstFSEventStreamRef streamRef,
|
||||
{
|
||||
ASLogInfo(@"Terminating MacVim...");
|
||||
|
||||
[self removeInputSourceChangedObserver];
|
||||
|
||||
[self stopWatchingVimDir];
|
||||
|
||||
#if MM_HANDLE_XCODE_MOD_EVENT
|
||||
@@ -725,7 +736,9 @@ fsEventCallback(ConstFSEventStreamRef streamRef,
|
||||
if (!NSEqualPoints(topLeft, NSZeroPoint)) {
|
||||
// Try to tile from the correct screen in case the user has multiple
|
||||
// monitors ([win screen] always seems to return the "main" screen).
|
||||
NSScreen *screen = [self screenContainingPoint:topLeft];
|
||||
//
|
||||
// TODO: Check for screen _closest_ to top left?
|
||||
NSScreen *screen = [self screenContainingTopLeftPoint:topLeft];
|
||||
if (!screen)
|
||||
screen = [win screen];
|
||||
|
||||
@@ -2357,18 +2370,70 @@ fsEventCallback(ConstFSEventStreamRef streamRef,
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (NSScreen *)screenContainingPoint:(NSPoint)pt
|
||||
- (NSScreen *)screenContainingTopLeftPoint:(NSPoint)pt
|
||||
{
|
||||
// NOTE: The top left point has y-coordinate which lies one pixel above the
|
||||
// window which must be taken into consideration (this method used to be
|
||||
// called screenContainingPoint: but that method is "off by one" in
|
||||
// y-coordinate).
|
||||
|
||||
NSArray *screens = [NSScreen screens];
|
||||
NSUInteger i, count = [screens count];
|
||||
for (i = 0; i < count; ++i) {
|
||||
NSScreen *screen = [screens objectAtIndex:i];
|
||||
NSRect frame = [screen frame];
|
||||
if (NSPointInRect(pt, frame))
|
||||
if (pt.x >= frame.origin.x && pt.x < NSMaxX(frame)
|
||||
// NOTE: inequalities below are correct due to this being a top
|
||||
// left test (see comment above)
|
||||
&& pt.y > frame.origin.y && pt.y <= NSMaxY(frame))
|
||||
return screen;
|
||||
}
|
||||
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (void)addInputSourceChangedObserver
|
||||
{
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
|
||||
// The TIS symbols are weakly linked.
|
||||
if (NULL != TISCopyCurrentKeyboardInputSource) {
|
||||
// We get here when compiled on >=10.5 and running on >=10.5.
|
||||
|
||||
id nc = [NSDistributedNotificationCenter defaultCenter];
|
||||
NSString *notifyInputSourceChanged =
|
||||
(NSString *)kTISNotifySelectedKeyboardInputSourceChanged;
|
||||
[nc addObserver:self
|
||||
selector:@selector(inputSourceChanged:)
|
||||
name:notifyInputSourceChanged
|
||||
object:nil];
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
- (void)removeInputSourceChangedObserver
|
||||
{
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
|
||||
// The TIS symbols are weakly linked.
|
||||
if (NULL != TISCopyCurrentKeyboardInputSource) {
|
||||
// We get here when compiled on >=10.5 and running on >=10.5.
|
||||
|
||||
id nc = [NSDistributedNotificationCenter defaultCenter];
|
||||
[nc removeObserver:self];
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
|
||||
- (void)inputSourceChanged:(NSNotification *)notification
|
||||
{
|
||||
unsigned i, count = [vimControllers count];
|
||||
for (i = 0; i < count; ++i) {
|
||||
MMVimController *controller = [vimControllers objectAtIndex:i];
|
||||
MMWindowController *wc = [controller windowController];
|
||||
MMTextView *tv = (MMTextView *)[[wc vimView] textView];
|
||||
[tv checkImState];
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@end // MMAppController (Private)
|
||||
|
||||
@@ -75,6 +75,7 @@ enum { MMMaxCellsPerChar = 2 };
|
||||
- (void)setAntialias:(BOOL)state;
|
||||
- (void)setImControl:(BOOL)enable;
|
||||
- (void)activateIm:(BOOL)enable;
|
||||
- (void)checkImState;
|
||||
- (BOOL)convertPoint:(NSPoint)point toRow:(int *)row column:(int *)column;
|
||||
- (NSPoint)pointForRow:(int)row column:(int)col;
|
||||
- (NSRect)rectForRow:(int)row column:(int)col numRows:(int)nr
|
||||
|
||||
@@ -371,6 +371,11 @@ defaultLineHeightForFont(NSFont *font)
|
||||
[helper activateIm:enable];
|
||||
}
|
||||
|
||||
- (void)checkImState
|
||||
{
|
||||
[helper checkImState];
|
||||
}
|
||||
|
||||
- (BOOL)_wantsKeyDownForEvent:(id)event
|
||||
{
|
||||
// HACK! This is an undocumented method which is called from within
|
||||
|
||||
+26
-16
@@ -191,7 +191,7 @@ extern GuiFont gui_mch_retain_font(GuiFont font);
|
||||
- (void)startOdbEditWithArguments:(NSDictionary *)args;
|
||||
- (void)handleXcodeMod:(NSData *)data;
|
||||
- (void)handleOpenWithArguments:(NSDictionary *)args;
|
||||
- (BOOL)checkForModifiedBuffers;
|
||||
- (int)checkForModifiedBuffers;
|
||||
- (void)addInput:(NSString *)input;
|
||||
- (void)redrawScreen;
|
||||
- (void)handleFindReplace:(NSDictionary *)args;
|
||||
@@ -1182,12 +1182,10 @@ extern GuiFont gui_mch_retain_font(GuiFont font);
|
||||
|
||||
- (void)updateModifiedFlag
|
||||
{
|
||||
// Notify MacVim if _any_ buffer has changed from unmodified to modified or
|
||||
// vice versa.
|
||||
int msgid = [self checkForModifiedBuffers]
|
||||
? BuffersModifiedMsgID : BuffersNotModifiedMsgID;
|
||||
|
||||
[self queueMessage:msgid data:nil];
|
||||
int state = [self checkForModifiedBuffers];
|
||||
NSMutableData *data = [NSMutableData data];
|
||||
[data appendBytes:&state length:sizeof(int)];
|
||||
[self queueMessage:SetBuffersModifiedMsgID data:data];
|
||||
}
|
||||
|
||||
- (oneway void)processInput:(int)msgid data:(in bycopy NSData *)data
|
||||
@@ -1196,6 +1194,9 @@ extern GuiFont gui_mch_retain_font(GuiFont font);
|
||||
// This is a DO method which is called from inside MacVim to add new input
|
||||
// to this Vim process. It may get called when the run loop is updated.
|
||||
//
|
||||
// NOTE: DO NOT MODIFY VIM STATE IN THIS METHOD! (Adding data to input
|
||||
// buffers is OK however.)
|
||||
//
|
||||
// Add keyboard input to Vim's input buffer immediately. We have to do
|
||||
// this because in many places Vim polls the input buffer whilst waiting
|
||||
// for keyboard input (so Vim may lock up forever otherwise).
|
||||
@@ -1252,12 +1253,6 @@ extern GuiFont gui_mch_retain_font(GuiFont font);
|
||||
} else if (SetMarkedTextMsgID == msgid) {
|
||||
// NOTE: This message counts as keyboard input...
|
||||
[self handleMarkedText:data];
|
||||
} else if (ActivatedImMsgID == msgid) {
|
||||
// NOTE: This message counts as keyboard input...
|
||||
[self setImState:YES];
|
||||
} else if (DeactivatedImMsgID == msgid) {
|
||||
// NOTE: This message counts as keyboard input...
|
||||
[self setImState:NO];
|
||||
} else if (TerminateNowMsgID == msgid) {
|
||||
// Terminate immediately (the frontend is about to quit or this process
|
||||
// was aborted). Don't preserve modified files since the user would
|
||||
@@ -1657,6 +1652,9 @@ extern GuiFont gui_mch_retain_font(GuiFont font);
|
||||
- (void)setImState:(BOOL)activated
|
||||
{
|
||||
imState = activated;
|
||||
|
||||
gui_update_cursor(TRUE, FALSE);
|
||||
[self flushQueue:YES];
|
||||
}
|
||||
|
||||
static void netbeansReadCallback(CFSocketRef s,
|
||||
@@ -1818,6 +1816,8 @@ static void netbeansReadCallback(CFSocketRef s,
|
||||
nil];
|
||||
|
||||
// Put the state before all other messages.
|
||||
// TODO: If called multiple times the oldest state will be used! Should
|
||||
// remove any current Vim state messages from the queue first.
|
||||
int msgid = SetVimStateMsgID;
|
||||
[outputQueue insertObject:[vimState dictionaryAsData] atIndex:0];
|
||||
[outputQueue insertObject:[NSData dataWithBytes:&msgid length:sizeof(int)]
|
||||
@@ -2076,6 +2076,10 @@ static void netbeansReadCallback(CFSocketRef s,
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6)
|
||||
[self handleGesture:data];
|
||||
#endif
|
||||
} else if (ActivatedImMsgID == msgid) {
|
||||
[self setImState:YES];
|
||||
} else if (DeactivatedImMsgID == msgid) {
|
||||
[self setImState:NO];
|
||||
} else {
|
||||
ASLogWarn(@"Unknown message received (msgid=%d)", msgid);
|
||||
}
|
||||
@@ -2832,16 +2836,22 @@ static void netbeansReadCallback(CFSocketRef s,
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL)checkForModifiedBuffers
|
||||
- (int)checkForModifiedBuffers
|
||||
{
|
||||
// Return 1 if current buffer is modified, -1 if other buffer is modified,
|
||||
// otherwise return 0.
|
||||
|
||||
if (curbuf && bufIsChanged(curbuf))
|
||||
return 1;
|
||||
|
||||
buf_T *buf;
|
||||
for (buf = firstbuf; buf != NULL; buf = buf->b_next) {
|
||||
if (bufIsChanged(buf)) {
|
||||
return YES;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
return NO;
|
||||
return 0;
|
||||
}
|
||||
|
||||
- (void)addInput:(NSString *)input
|
||||
|
||||
@@ -79,6 +79,7 @@
|
||||
- (void)setAntialias:(BOOL)state;
|
||||
- (void)setImControl:(BOOL)enable;
|
||||
- (void)activateIm:(BOOL)enable;
|
||||
- (void)checkImState;
|
||||
- (BOOL)convertPoint:(NSPoint)point toRow:(int *)row column:(int *)column;
|
||||
- (NSRect)rectForRow:(int)row column:(int)column numRows:(int)nr
|
||||
numColumns:(int)nc;
|
||||
|
||||
@@ -403,6 +403,11 @@ defaultAdvanceForFont(CTFontRef fontRef)
|
||||
[helper activateIm:enable];
|
||||
}
|
||||
|
||||
- (void)checkImState
|
||||
{
|
||||
[helper checkImState];
|
||||
}
|
||||
|
||||
- (BOOL)_wantsKeyDownForEvent:(id)event
|
||||
{
|
||||
// HACK! This is an undocumented method which is called from within
|
||||
@@ -922,6 +927,10 @@ defaultAdvanceForFont(CTFontRef fontRef)
|
||||
// Convert UTF-8 chars to UTF-16
|
||||
CFStringRef sref = CFStringCreateWithBytesNoCopy(NULL, s, len,
|
||||
kCFStringEncodingUTF8, false, kCFAllocatorNull);
|
||||
if (sref == NULL) {
|
||||
ASLogWarn(@"Conversion error: some text may not be rendered");
|
||||
continue;
|
||||
}
|
||||
CFIndex unilength = CFStringGetLength(sref);
|
||||
const UniChar *unichars = CFStringGetCharactersPtr(sref);
|
||||
UniChar *buffer = NULL;
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
MMVimView *view;
|
||||
NSPoint oldPosition;
|
||||
NSString *oldTabBarStyle;
|
||||
int options;
|
||||
|
||||
// These are only valid in fullscreen mode and store pre-fu vim size
|
||||
int nonFuRows, nonFuColumns;
|
||||
@@ -32,8 +33,8 @@
|
||||
|
||||
- (MMFullscreenWindow *)initWithWindow:(NSWindow *)t view:(MMVimView *)v
|
||||
backgroundColor:(NSColor *)back;
|
||||
|
||||
- (void)enterFullscreen:(int)fuoptions;
|
||||
- (void)setOptions:(int)opt;
|
||||
- (void)enterFullscreen;
|
||||
- (void)leaveFullscreen;
|
||||
- (void)centerView;
|
||||
|
||||
|
||||
@@ -107,8 +107,15 @@
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (void)enterFullscreen:(int)fuoptions
|
||||
- (void)setOptions:(int)opt
|
||||
{
|
||||
options = opt;
|
||||
}
|
||||
|
||||
- (void)enterFullscreen
|
||||
{
|
||||
ASLogDebug(@"Enter full screen now");
|
||||
|
||||
// fade to black
|
||||
Boolean didBlend = NO;
|
||||
CGDisplayFadeReservationToken token;
|
||||
@@ -117,7 +124,11 @@
|
||||
kCGDisplayBlendSolidColor, .0, .0, .0, true);
|
||||
didBlend = YES;
|
||||
}
|
||||
|
||||
|
||||
// NOTE: The window may have moved to another screen in between init.. and
|
||||
// this call so set the frame again just in case.
|
||||
[self setFrame:[[target screen] frame] display:NO];
|
||||
|
||||
// fool delegate
|
||||
id delegate = [target delegate];
|
||||
[target setDelegate:nil];
|
||||
@@ -146,7 +157,7 @@
|
||||
// focus gained message
|
||||
[self setDelegate:delegate];
|
||||
|
||||
// resize vim view according to fuoptions
|
||||
// resize vim view according to options
|
||||
int currRows, currColumns;
|
||||
[[view textView] getMaxRows:&currRows columns:&currColumns];
|
||||
|
||||
@@ -163,12 +174,12 @@
|
||||
nonFuColumns = currColumns;
|
||||
|
||||
// Compute current fu size
|
||||
if (fuoptions & FUOPT_MAXVERT)
|
||||
if (options & FUOPT_MAXVERT)
|
||||
fuRows = maxRows;
|
||||
if (fuoptions & FUOPT_MAXHORZ)
|
||||
if (options & FUOPT_MAXHORZ)
|
||||
fuColumns = maxColumns;
|
||||
|
||||
startFuFlags = fuoptions;
|
||||
startFuFlags = options;
|
||||
|
||||
// if necessary, resize vim to target fu size
|
||||
if (currRows != fuRows || currColumns != fuColumns) {
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
- (void)setAntialias:(BOOL)antialias;
|
||||
- (void)setImControl:(BOOL)enable;
|
||||
- (void)activateIm:(BOOL)enable;
|
||||
- (void)checkImState;
|
||||
|
||||
//
|
||||
// MMTextStorage methods
|
||||
|
||||
@@ -317,6 +317,11 @@
|
||||
[helper activateIm:enable];
|
||||
}
|
||||
|
||||
- (void)checkImState
|
||||
{
|
||||
[helper checkImState];
|
||||
}
|
||||
|
||||
- (NSFont *)font
|
||||
{
|
||||
return [(MMTextStorage*)[self textStorage] font];
|
||||
|
||||
@@ -103,5 +103,8 @@ enum {
|
||||
- (void)setImControl:(BOOL)enable;
|
||||
- (void)activateIm:(BOOL)enable;
|
||||
- (BOOL)useInlineIm;
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
|
||||
- (void)checkImState;
|
||||
#endif
|
||||
|
||||
@end
|
||||
|
||||
@@ -36,7 +36,7 @@ static float MMDragAreaSize = 73.0f;
|
||||
- (MMVimController *)vimController;
|
||||
- (void)doKeyDown:(NSString *)key;
|
||||
- (void)doInsertText:(NSString *)text;
|
||||
- (void)checkImState;
|
||||
- (void)pollImState;
|
||||
- (void)hideMouseCursor;
|
||||
- (void)startDragTimerWithInterval:(NSTimeInterval)t;
|
||||
- (void)dragTimerFired:(NSTimer *)timer;
|
||||
@@ -129,11 +129,19 @@ KeyboardInputSourcesEqual(TISInputSourceRef a, TISInputSourceRef b)
|
||||
{
|
||||
ASLogDebug(@"%@", event);
|
||||
|
||||
// NOTE: Check IM state _before_ key has been interpreted or we'll pick up
|
||||
// the old IM state when it has been switched via a keyboard shortcut that
|
||||
// MacVim cannot handle.
|
||||
if (imControl)
|
||||
[self checkImState];
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
|
||||
if (NULL == TISCopyCurrentKeyboardInputSource) {
|
||||
#endif
|
||||
|
||||
// NOTE: Check IM state _before_ key has been interpreted or we'll pick
|
||||
// up the old IM state when it has been switched via a keyboard shortcut
|
||||
// that MacVim cannot handle.
|
||||
if (imControl)
|
||||
[self pollImState];
|
||||
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
|
||||
}
|
||||
#endif
|
||||
|
||||
// NOTE: Keyboard handling is complicated by the fact that we must call
|
||||
// interpretKeyEvents: otherwise key equivalents set up by input methods do
|
||||
@@ -851,6 +859,34 @@ KeyboardInputSourcesEqual(TISInputSourceRef a, TISInputSourceRef b)
|
||||
#endif // INCLUDE_OLD_IM_CODE
|
||||
}
|
||||
|
||||
- (void)checkImState
|
||||
{
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
|
||||
if (imControl && NULL != TISCopyCurrentKeyboardInputSource) {
|
||||
// We get here when compiled on >=10.5 and running on >=10.5.
|
||||
TISInputSourceRef cur = TISCopyCurrentKeyboardInputSource();
|
||||
BOOL state = !KeyboardInputSourcesEqual(asciiImSource, cur);
|
||||
BOOL isChanged = !KeyboardInputSourcesEqual(lastImSource, cur);
|
||||
if (state && isChanged) {
|
||||
// Remember current input source so we can switch back to it
|
||||
// when IM is once more enabled.
|
||||
ASLogDebug(@"Remember last input source: %@",
|
||||
TISGetInputSourceProperty(cur, kTISPropertyInputSourceID));
|
||||
if (lastImSource) CFRelease(lastImSource);
|
||||
lastImSource = cur;
|
||||
} else {
|
||||
CFRelease(cur);
|
||||
}
|
||||
if (imState != state) {
|
||||
imState = state;
|
||||
int msgid = state ? ActivatedImMsgID : DeactivatedImMsgID;
|
||||
[[self vimController] sendMessage:msgid data:nil];
|
||||
}
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
@end // MMTextViewHelper
|
||||
|
||||
|
||||
@@ -936,32 +972,8 @@ KeyboardInputSourcesEqual(TISInputSourceRef a, TISInputSourceRef b)
|
||||
[[self vimController] sendMessage:KeyDownMsgID data:data];
|
||||
}
|
||||
|
||||
- (void)checkImState
|
||||
- (void)pollImState
|
||||
{
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
|
||||
if (NULL != TISCopyCurrentKeyboardInputSource) {
|
||||
// We get here when compiled on >=10.5 and running on >=10.5.
|
||||
TISInputSourceRef cur = TISCopyCurrentKeyboardInputSource();
|
||||
BOOL state = !KeyboardInputSourcesEqual(asciiImSource, cur);
|
||||
BOOL isChanged = !KeyboardInputSourcesEqual(lastImSource, cur);
|
||||
if (state && isChanged) {
|
||||
// Remember current input source so we can switch back to it
|
||||
// when IM is once more enabled.
|
||||
ASLogDebug(@"Remember last input source: %@",
|
||||
TISGetInputSourceProperty(cur, kTISPropertyInputSourceID));
|
||||
if (lastImSource) CFRelease(lastImSource);
|
||||
lastImSource = cur;
|
||||
} else {
|
||||
CFRelease(cur);
|
||||
}
|
||||
if (imState != state) {
|
||||
imState = state;
|
||||
int msgid = state ? ActivatedImMsgID : DeactivatedImMsgID;
|
||||
[[self vimController] sendMessage:msgid data:nil];
|
||||
}
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
#if (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5)
|
||||
// Compiled for <=10.4, running on 10.4
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
NSDictionary *vimState;
|
||||
BOOL isPreloading;
|
||||
NSDate *creationDate;
|
||||
BOOL hasModifiedBuffer;
|
||||
}
|
||||
|
||||
- (id)initWithBackend:(id)backend pid:(int)processIdentifier;
|
||||
@@ -48,6 +49,7 @@
|
||||
- (NSMenu *)mainMenu;
|
||||
- (BOOL)isPreloading;
|
||||
- (void)setIsPreloading:(BOOL)yn;
|
||||
- (BOOL)hasModifiedBuffer;
|
||||
- (NSDate *)creationDate;
|
||||
- (void)cleanup;
|
||||
- (void)dropFiles:(NSArray *)filenames forceOpen:(BOOL)force;
|
||||
|
||||
@@ -220,6 +220,11 @@ static BOOL isUnsafeMessage(int msgid);
|
||||
isPreloading = yn;
|
||||
}
|
||||
|
||||
- (BOOL)hasModifiedBuffer
|
||||
{
|
||||
return hasModifiedBuffer;
|
||||
}
|
||||
|
||||
- (NSDate *)creationDate
|
||||
{
|
||||
return creationDate;
|
||||
@@ -765,10 +770,21 @@ static BOOL isUnsafeMessage(int msgid);
|
||||
[windowController enterFullscreen:fuoptions backgroundColor:back];
|
||||
} else if (LeaveFullscreenMsgID == msgid) {
|
||||
[windowController leaveFullscreen];
|
||||
} else if (BuffersNotModifiedMsgID == msgid) {
|
||||
[windowController setBuffersModified:NO];
|
||||
} else if (BuffersModifiedMsgID == msgid) {
|
||||
[windowController setBuffersModified:YES];
|
||||
} else if (SetBuffersModifiedMsgID == msgid) {
|
||||
const void *bytes = [data bytes];
|
||||
// state < 0 <-> some buffer modified
|
||||
// state > 0 <-> current buffer modified
|
||||
int state = *((int*)bytes); bytes += sizeof(int);
|
||||
|
||||
// NOTE: The window controller tracks whether current buffer is
|
||||
// modified or not (and greys out the proxy icon as well as putting a
|
||||
// dot in the red "close button" if necessary). The Vim controller
|
||||
// tracks whether any buffer has been modified (used to decide whether
|
||||
// to show a warning or not when quitting).
|
||||
//
|
||||
// TODO: Make 'hasModifiedBuffer' part of the Vim state?
|
||||
[windowController setBufferModified:(state > 0)];
|
||||
hasModifiedBuffer = (state != 0);
|
||||
} else if (SetPreEditPositionMsgID == msgid) {
|
||||
const int *dim = (const int*)[data bytes];
|
||||
[[[windowController vimView] textView] setPreEditRow:dim[0]
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
MMVimController *vimController;
|
||||
MMVimView *vimView;
|
||||
BOOL setupDone;
|
||||
BOOL windowPresented;
|
||||
BOOL shouldResizeVimView;
|
||||
BOOL shouldRestoreUserTopLeft;
|
||||
int updateToolbarFlag;
|
||||
@@ -78,7 +79,7 @@
|
||||
- (void)leaveFullscreen;
|
||||
- (void)setFullscreenBackgroundColor:(NSColor *)back;
|
||||
|
||||
- (void)setBuffersModified:(BOOL)mod;
|
||||
- (void)setBufferModified:(BOOL)mod;
|
||||
- (void)setTopLeft:(NSPoint)pt;
|
||||
- (BOOL)getDefaultTopLeft:(NSPoint*)pt;
|
||||
|
||||
|
||||
@@ -253,26 +253,43 @@
|
||||
{
|
||||
// Indicates that the window is ready to be displayed, but do not display
|
||||
// (or place) it yet -- that is done in showWindow.
|
||||
//
|
||||
// TODO: Remove this method? Everything can probably be done in
|
||||
// presentWindow: but must carefully check dependencies on 'setupDone'
|
||||
// flag.
|
||||
|
||||
[self addNewTabViewItem];
|
||||
|
||||
setupDone = YES;
|
||||
|
||||
[self updateResizeConstraints];
|
||||
[self resizeWindowToFitContentSize:[vimView desiredSize]
|
||||
keepOnScreen:YES];
|
||||
}
|
||||
|
||||
- (BOOL)presentWindow:(id)unused
|
||||
{
|
||||
// Actually show the window on screen. However, if openWindow hasn't
|
||||
// already been called nothing will happen (the window will be displayed
|
||||
// later).
|
||||
// If openWindow hasn't already been called then the window will be
|
||||
// displayed later.
|
||||
if (!setupDone) return NO;
|
||||
|
||||
// Place the window now. If there are multiple screens then a choice is
|
||||
// made as to which screen the window should be on. This means that all
|
||||
// code that is executed before this point must not depend on the screen!
|
||||
|
||||
[[MMAppController sharedInstance] windowControllerWillOpen:self];
|
||||
[self updateResizeConstraints];
|
||||
[self resizeWindowToFitContentSize:[vimView desiredSize]
|
||||
keepOnScreen:YES];
|
||||
[[self window] makeKeyAndOrderFront:self];
|
||||
|
||||
// Flag that the window is now placed on screen. From now on it is OK for
|
||||
// code to depend on the screen state. (Such as constraining views etc.)
|
||||
windowPresented = YES;
|
||||
|
||||
if (fullscreenWindow) {
|
||||
// Delayed entering of full screen happens here (a ":set fu" in a
|
||||
// GUIEnter auto command could cause this).
|
||||
[fullscreenWindow enterFullscreen];
|
||||
fullscreenEnabled = YES;
|
||||
}
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
@@ -289,8 +306,8 @@
|
||||
- (void)setTextDimensionsWithRows:(int)rows columns:(int)cols isLive:(BOOL)live
|
||||
keepOnScreen:(BOOL)onScreen
|
||||
{
|
||||
//ASLogDebug(@"setTextDimensionsWithRows:%d columns:%d isLive:%d "
|
||||
// "keepOnScreen:%d", rows, cols, live, onScreen);
|
||||
ASLogDebug(@"setTextDimensionsWithRows:%d columns:%d isLive:%d "
|
||||
"keepOnScreen:%d", rows, cols, live, onScreen);
|
||||
|
||||
// NOTE: The only place where the (rows,columns) of the vim view are
|
||||
// modified is here and when entering/leaving full-screen. Setting these
|
||||
@@ -449,7 +466,10 @@
|
||||
if (updateToolbarFlag != 0)
|
||||
[self updateToolbar];
|
||||
|
||||
if (shouldResizeVimView) {
|
||||
// NOTE: If the window has not been presented then we must avoid resizing
|
||||
// the views since it will cause them to be constrained to the screen which
|
||||
// has not yet been set!
|
||||
if (windowPresented && shouldResizeVimView) {
|
||||
shouldResizeVimView = NO;
|
||||
|
||||
NSSize originalSize = [vimView frame].size;
|
||||
@@ -607,17 +627,28 @@
|
||||
{
|
||||
if (fullscreenEnabled) return;
|
||||
|
||||
// fullscreenWindow could be nil here if this is called multiple times
|
||||
// during startup.
|
||||
[fullscreenWindow release];
|
||||
|
||||
fullscreenWindow = [[MMFullscreenWindow alloc]
|
||||
initWithWindow:decoratedWindow view:vimView backgroundColor:back];
|
||||
[fullscreenWindow enterFullscreen:fuoptions];
|
||||
[fullscreenWindow setDelegate:self];
|
||||
initWithWindow:decoratedWindow view:vimView backgroundColor:back];
|
||||
[fullscreenWindow setOptions:fuoptions];
|
||||
[fullscreenWindow setRepresentedFilename:
|
||||
[decoratedWindow representedFilename]];
|
||||
fullscreenEnabled = YES;
|
||||
|
||||
// The resize handle disappears so the vim view needs to update the
|
||||
// scrollbars.
|
||||
shouldResizeVimView = YES;
|
||||
// NOTE: Do not enter full screen until the window has been presented since
|
||||
// we don't actually know which screen to use before then.
|
||||
if (windowPresented) {
|
||||
[fullscreenWindow enterFullscreen];
|
||||
fullscreenEnabled = YES;
|
||||
|
||||
// The resize handle disappears so the vim view needs to update the
|
||||
// scrollbars.
|
||||
shouldResizeVimView = YES;
|
||||
} else {
|
||||
ASLogDebug(@"Delay enter full screen");
|
||||
}
|
||||
}
|
||||
|
||||
- (void)leaveFullscreen
|
||||
@@ -635,11 +666,11 @@
|
||||
|
||||
- (void)setFullscreenBackgroundColor:(NSColor *)back
|
||||
{
|
||||
if (fullscreenEnabled)
|
||||
if (fullscreenWindow)
|
||||
[fullscreenWindow setBackgroundColor:back];
|
||||
}
|
||||
|
||||
- (void)setBuffersModified:(BOOL)mod
|
||||
- (void)setBufferModified:(BOOL)mod
|
||||
{
|
||||
// NOTE: We only set the document edited flag on the decorated window since
|
||||
// the full-screen window has no close button anyway. (It also saves us
|
||||
|
||||
+1
-2
@@ -158,8 +158,7 @@ enum {
|
||||
SetServerNameMsgID,
|
||||
EnterFullscreenMsgID,
|
||||
LeaveFullscreenMsgID,
|
||||
BuffersNotModifiedMsgID,
|
||||
BuffersModifiedMsgID,
|
||||
SetBuffersModifiedMsgID,
|
||||
AddInputMsgID,
|
||||
SetPreEditPositionMsgID,
|
||||
TerminateNowMsgID,
|
||||
|
||||
+1
-2
@@ -68,8 +68,7 @@ char *MessageStrings[] =
|
||||
"SetServerNameMsgID",
|
||||
"EnterFullscreenMsgID",
|
||||
"LeaveFullscreenMsgID",
|
||||
"BuffersNotModifiedMsgID",
|
||||
"BuffersModifiedMsgID",
|
||||
"SetBuffersModifiedMsgID",
|
||||
"AddInputMsgID",
|
||||
"SetPreEditPositionMsgID",
|
||||
"TerminateNowMsgID",
|
||||
|
||||
@@ -447,6 +447,7 @@
|
||||
isa = PBXProject;
|
||||
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "MacVim" */;
|
||||
compatibilityVersion = "Xcode 2.4";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 1;
|
||||
knownRegions = (
|
||||
English,
|
||||
@@ -621,7 +622,7 @@
|
||||
buildSettings = {
|
||||
ARCHS = "$(NATIVE_ARCH_ACTUAL)";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 55;
|
||||
CURRENT_PROJECT_VERSION = 56;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
|
||||
@@ -651,7 +652,7 @@
|
||||
buildSettings = {
|
||||
ARCHS = "$(NATIVE_ARCH_ACTUAL)";
|
||||
COPY_PHASE_STRIP = YES;
|
||||
CURRENT_PROJECT_VERSION = 55;
|
||||
CURRENT_PROJECT_VERSION = 56;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
|
||||
|
||||
+11
-4
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# Makefile for VIM on Win32, using Cygnus gcc
|
||||
# Last updated by Dan Sharp. Last Change: 2010 Feb 24
|
||||
# Last updated by Dan Sharp. Last Change: 2010 Nov 03
|
||||
#
|
||||
# Also read INSTALLpc.txt!
|
||||
#
|
||||
@@ -27,6 +27,7 @@
|
||||
# MZSCHEME_VER define to version of MzScheme being used (209_000)
|
||||
# DYNAMIC_MZSCHEME no or yes: use yes to load the MzScheme DLLs dynamically (yes)
|
||||
# MZSCHEME_DLLS path to MzScheme DLLs (libmzgc and libmzsch), for "static" build.
|
||||
# MZSCHEME_USE_RACKET define to use "racket" instead of "mzsch".
|
||||
# LUA define to path to Lua dir to get Lua support (not defined)
|
||||
# LUA_VER define to version of Lua being used (51)
|
||||
# DYNAMIC_LUA no or yes: use yes to load the Lua DLL dynamically (yes)
|
||||
@@ -254,16 +255,22 @@ ifndef MZSCHEME_GENERATE_BASE
|
||||
MZSCHEME_GENERATE_BASE=no
|
||||
endif
|
||||
|
||||
ifndef MZSCHEME_USE_RACKET
|
||||
MZSCHEME_MAIN_LIB=mzsch
|
||||
else
|
||||
MZSCHEME_MAIN_LIB=racket
|
||||
endif
|
||||
|
||||
ifeq (yes, $(DYNAMIC_MZSCHEME))
|
||||
DEFINES += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"libmzsch$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
|
||||
DEFINES += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
|
||||
else
|
||||
ifndef MZSCHEME_DLLS
|
||||
MZSCHEME_DLLS = $(MZSCHEME)
|
||||
endif
|
||||
ifeq (yes,$(MZSCHEME_PRECISE_GC))
|
||||
MZSCHEME_LIB=-lmzsch$(MZSCHEME_VER)
|
||||
MZSCHEME_LIB=-l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER)
|
||||
else
|
||||
MZSCHEME_LIB = -lmzsch$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
|
||||
MZSCHEME_LIB = -l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
|
||||
endif
|
||||
EXTRA_LIBS += -L$(MZSCHEME_DLLS) -L$(MZSCHEME_DLLS)/lib $(MZSCHEME_LIB)
|
||||
endif
|
||||
|
||||
+9
-3
@@ -141,11 +141,17 @@ ifndef MZSCHEME_GENERATE_BASE
|
||||
MZSCHEME_GENERATE_BASE=no
|
||||
endif
|
||||
|
||||
ifndef MZSCHEME_USE_RACKET
|
||||
MZSCHEME_MAIN_LIB=mzsch
|
||||
else
|
||||
MZSCHEME_MAIN_LIB=racket
|
||||
endif
|
||||
|
||||
ifeq (no,$(DYNAMIC_MZSCHEME))
|
||||
ifeq (yes,$(MZSCHEME_PRECISE_GC))
|
||||
MZSCHEME_LIB=-lmzsch$(MZSCHEME_VER)
|
||||
MZSCHEME_LIB=-l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER)
|
||||
else
|
||||
MZSCHEME_LIB = -lmzsch$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
|
||||
MZSCHEME_LIB = -l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
|
||||
endif
|
||||
# the modern MinGW can dynamically link to dlls directly.
|
||||
# point MZSCHEME_DLLS to where you put libmzschXXXXXXX.dll and libgcXXXXXXX.dll
|
||||
@@ -343,7 +349,7 @@ endif
|
||||
ifdef MZSCHEME
|
||||
CFLAGS += -I$(MZSCHEME)/include -DFEAT_MZSCHEME -DMZSCHEME_COLLECTS=\"$(MZSCHEME)/collects\"
|
||||
ifeq (yes, $(DYNAMIC_MZSCHEME))
|
||||
CFLAGS += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"libmzsch$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
|
||||
CFLAGS += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
+12
-9
@@ -380,9 +380,6 @@ MSVCVER = 10.0
|
||||
!if "$(_NMAKE_VER)" == "10.00.30319.01"
|
||||
MSVCVER = 10.0
|
||||
!endif
|
||||
!if "$(_NMAKE_VER)" == "9.00.30729.01"
|
||||
MSVCVER = 9.0
|
||||
!endif
|
||||
!endif
|
||||
|
||||
# Abort bulding VIM if version of VC is unrecognised.
|
||||
@@ -705,12 +702,18 @@ PYTHON3_LIB = $(PYTHON3)\libs\python$(PYTHON3_VER).lib
|
||||
MZSCHEME_VER = 205_000
|
||||
!endif
|
||||
CFLAGS = $(CFLAGS) -DFEAT_MZSCHEME -I $(MZSCHEME)\include
|
||||
!if EXIST("$(MZSCHEME)\collects\scheme\base.ss")
|
||||
# for MzScheme 4.x we need to include byte code for basic Scheme stuff
|
||||
!if EXIST("$(MZSCHEME)\collects\scheme\base.ss") \
|
||||
|| EXIST("$(MZSCHEME)\collects\scheme\base.rkt")
|
||||
# for MzScheme >= 4 we need to include byte code for basic Scheme stuff
|
||||
MZSCHEME_EXTRA_DEP = mzscheme_base.c
|
||||
CFLAGS = $(CFLAGS) -DINCLUDE_MZSCHEME_BASE
|
||||
!endif
|
||||
!if EXIST("$(MZSCHEME)\lib\msvc\libmzsch$(MZSCHEME_VER).lib") \
|
||||
!if EXIST("$(MZSCHEME)\lib\msvc\libmzsch$(MZSCHEME_VER).lib")
|
||||
MZSCHEME_MAIN_LIB=mzsch
|
||||
!else
|
||||
MZSCHEME_MAIN_LIB=racket
|
||||
!endif
|
||||
!if EXIST("$(MZSCHEME)\lib\msvc\lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).lib") \
|
||||
&& !EXIST("$(MZSCHEME)\lib\msvc\libmzgc$(MZSCHEME_VER).lib")
|
||||
!message Building with Precise GC
|
||||
MZSCHEME_PRECISE_GC = yes
|
||||
@@ -722,7 +725,7 @@ CFLAGS = $(CFLAGS) -DMZ_PRECISE_GC
|
||||
!endif
|
||||
!message MzScheme DLLs will be loaded dynamically
|
||||
CFLAGS = $(CFLAGS) -DDYNAMIC_MZSCHEME \
|
||||
-DDYNAMIC_MZSCH_DLL=\"libmzsch$(MZSCHEME_VER).dll\" \
|
||||
-DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" \
|
||||
-DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
|
||||
!else
|
||||
!if "$(MZSCHEME_DEBUG)" == "yes"
|
||||
@@ -730,10 +733,10 @@ CFLAGS = $(CFLAGS) -DMZSCHEME_FORCE_GC
|
||||
!endif
|
||||
!if "$(MZSCHEME_PRECISE_GC)" == "yes"
|
||||
# Precise GC does not use separate dll
|
||||
MZSCHEME_LIB = $(MZSCHEME)\lib\msvc\libmzsch$(MZSCHEME_VER).lib
|
||||
MZSCHEME_LIB = $(MZSCHEME)\lib\msvc\lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).lib
|
||||
!else
|
||||
MZSCHEME_LIB = $(MZSCHEME)\lib\msvc\libmzgc$(MZSCHEME_VER).lib \
|
||||
$(MZSCHEME)\lib\msvc\libmzsch$(MZSCHEME_VER).lib
|
||||
$(MZSCHEME)\lib\msvc\lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).lib
|
||||
!endif
|
||||
!endif
|
||||
MZSCHEME_OBJ = $(OUTDIR)\if_mzsch.obj
|
||||
|
||||
+11
-5
@@ -414,12 +414,16 @@ CClink = $(CC)
|
||||
# However, this may still cause problems, such as "import termios" failing.
|
||||
# Build two separate versions of Vim in that case.
|
||||
#CONF_OPT_PYTHON = --enable-pythoninterp
|
||||
#CONF_OPT_PYTHON = --enable-pythoninterp=dynamic
|
||||
#CONF_OPT_PYTHON3 = --enable-python3interp
|
||||
#CONF_OPT_PYTHON3 = --enable-python3interp=dynamic
|
||||
|
||||
# RUBY
|
||||
# Uncomment this when you want to include the Ruby interface.
|
||||
# First one for static linking, second one for loading when used.
|
||||
# Note: you need the development package (e.g., ruby1.9.1-dev on Ubuntu).
|
||||
#CONF_OPT_RUBY = --enable-rubyinterp
|
||||
#CONF_OPT_RUBY = --enable-rubyinterp=dynamic
|
||||
#CONF_OPT_RUBY = --enable-rubyinterp --with-ruby-command=ruby1.9.1
|
||||
|
||||
# TCL
|
||||
@@ -1047,8 +1051,9 @@ INSTALL_PROG = cp
|
||||
INSTALL_DATA = cp
|
||||
INSTALL_DATA_R = cp -r
|
||||
|
||||
### Program to run on installed binary
|
||||
### Program to run on installed binary. Use the second one to disable strip.
|
||||
#STRIP = strip
|
||||
#STRIP = /bin/true
|
||||
|
||||
### Permissions for binaries {{{1
|
||||
BINMOD = 755
|
||||
@@ -1337,7 +1342,7 @@ SHELL = /bin/sh
|
||||
.SUFFIXES: .c .o .pro
|
||||
|
||||
PRE_DEFS = -Iproto $(DEFS) $(GUI_DEFS) $(GUI_IPATH) $(CPPFLAGS) $(EXTRA_IPATHS)
|
||||
POST_DEFS = $(X_CFLAGS) $(MZSCHEME_CFLAGS) $(TCL_CFLAGS) $(RUBY_CFLAGS) $(EXTRA_DEFS)
|
||||
POST_DEFS = $(X_CFLAGS) $(MZSCHEME_CFLAGS) $(TCL_CFLAGS) $(EXTRA_DEFS)
|
||||
|
||||
ALL_CFLAGS = $(PRE_DEFS) $(CFLAGS) $(PROFILE_CFLAGS) $(POST_DEFS)
|
||||
|
||||
@@ -1345,7 +1350,7 @@ ALL_CFLAGS = $(PRE_DEFS) $(CFLAGS) $(PROFILE_CFLAGS) $(POST_DEFS)
|
||||
# with "-E".
|
||||
OSDEF_CFLAGS = $(PRE_DEFS) $(POST_DEFS)
|
||||
|
||||
LINT_CFLAGS = -DLINT -I. $(PRE_DEFS) $(POST_DEFS) $(LUA_CFLAGS) $(PERL_CFLAGS) $(PYTHON_CFLAGS) -Dinline= -D__extension__= -Dalloca=alloca
|
||||
LINT_CFLAGS = -DLINT -I. $(PRE_DEFS) $(POST_DEFS) $(RUBY_CFLAGS) $(LUA_CFLAGS) $(PERL_CFLAGS) $(PYTHON_CFLAGS) -Dinline= -D__extension__= -Dalloca=alloca
|
||||
|
||||
LINT_EXTRA = -DUSE_SNIFF -DHANGUL_INPUT -D"__attribute__(x)="
|
||||
|
||||
@@ -1711,7 +1716,8 @@ $(VIMTARGET): auto/config.mk objects $(OBJ) version.c version.h
|
||||
$(CCC) version.c -o objects/version.o
|
||||
@LINK="$(PURIFY) $(SHRPENV) $(CClink) $(ALL_LIB_DIRS) $(LDFLAGS) \
|
||||
-o $(VIMTARGET) $(OBJ) objects/version.o $(ALL_LIBS)" \
|
||||
MAKE="$(MAKE)" sh $(srcdir)/link.sh
|
||||
MAKE="$(MAKE)" LINK_AS_NEEDED=$(LINK_AS_NEEDED) \
|
||||
sh $(srcdir)/link.sh
|
||||
|
||||
xxd/xxd$(EXEEXT): xxd/xxd.c
|
||||
cd xxd; CC="$(CC)" CFLAGS="$(CPPFLAGS) $(CFLAGS)" \
|
||||
@@ -2557,7 +2563,7 @@ objects/if_python3.o: if_python3.c if_py_both.h
|
||||
$(CCC) $(PYTHON3_CFLAGS) $(PYTHON3_CFLAGS_EXTRA) -o $@ if_python3.c
|
||||
|
||||
objects/if_ruby.o: if_ruby.c
|
||||
$(CCC) -o $@ if_ruby.c
|
||||
$(CCC) $(RUBY_CFLAGS) -o $@ if_ruby.c
|
||||
|
||||
objects/if_sniff.o: if_sniff.c
|
||||
$(CCC) -o $@ if_sniff.c
|
||||
|
||||
Vendored
+185
-21
@@ -757,6 +757,7 @@ MSGFMT
|
||||
MAKEMO
|
||||
XCODEFLAGS
|
||||
DEPEND_CFLAGS_FILTER
|
||||
LINK_AS_NEEDED
|
||||
LIBOBJS
|
||||
LTLIBOBJS'
|
||||
ac_subst_files=''
|
||||
@@ -1352,7 +1353,7 @@ Optional Features:
|
||||
--enable-pythoninterp=OPTS Include Python interpreter. default=no OPTS=no/yes/dynamic
|
||||
--enable-python3interp=OPTS Include Python3 interpreter. default=no OPTS=no/yes/dynamic
|
||||
--enable-tclinterp Include Tcl interpreter.
|
||||
--enable-rubyinterp Include Ruby interpreter.
|
||||
--enable-rubyinterp=OPTS Include Ruby interpreter. default=no OPTS=no/yes/dynamic
|
||||
--enable-cscope Include cscope interface.
|
||||
--enable-workshop Include Sun Visual Workshop support.
|
||||
--disable-netbeans Disable NetBeans integration support.
|
||||
@@ -4970,16 +4971,36 @@ echo "${ECHO_T}yes" >&6; }
|
||||
else
|
||||
{ echo "$as_me:$LINENO: result: no" >&5
|
||||
echo "${ECHO_T}no" >&6; }
|
||||
{ echo "$as_me:$LINENO: checking if scheme.h can be found in /usr/include/plt/" >&5
|
||||
echo $ECHO_N "checking if scheme.h can be found in /usr/include/plt/... $ECHO_C" >&6; }
|
||||
if test -f /usr/include/plt/scheme.h; then
|
||||
{ echo "$as_me:$LINENO: checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket" >&5
|
||||
echo $ECHO_N "checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket... $ECHO_C" >&6; }
|
||||
if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then
|
||||
{ echo "$as_me:$LINENO: result: yes" >&5
|
||||
echo "${ECHO_T}yes" >&6; }
|
||||
SCHEME_INC=/usr/include/plt
|
||||
SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
|
||||
else
|
||||
{ echo "$as_me:$LINENO: result: no" >&5
|
||||
echo "${ECHO_T}no" >&6; }
|
||||
vi_cv_path_mzscheme_pfx=
|
||||
{ echo "$as_me:$LINENO: checking if scheme.h can be found in /usr/include/plt/" >&5
|
||||
echo $ECHO_N "checking if scheme.h can be found in /usr/include/plt/... $ECHO_C" >&6; }
|
||||
if test -f /usr/include/plt/scheme.h; then
|
||||
{ echo "$as_me:$LINENO: result: yes" >&5
|
||||
echo "${ECHO_T}yes" >&6; }
|
||||
SCHEME_INC=/usr/include/plt
|
||||
else
|
||||
{ echo "$as_me:$LINENO: result: no" >&5
|
||||
echo "${ECHO_T}no" >&6; }
|
||||
{ echo "$as_me:$LINENO: checking if scheme.h can be found in /usr/include/racket/" >&5
|
||||
echo $ECHO_N "checking if scheme.h can be found in /usr/include/racket/... $ECHO_C" >&6; }
|
||||
if test -f /usr/include/racket/scheme.h; then
|
||||
{ echo "$as_me:$LINENO: result: yes" >&5
|
||||
echo "${ECHO_T}yes" >&6; }
|
||||
SCHEME_INC=/usr/include/racket
|
||||
else
|
||||
{ echo "$as_me:$LINENO: result: no" >&5
|
||||
echo "${ECHO_T}no" >&6; }
|
||||
vi_cv_path_mzscheme_pfx=
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
@@ -4991,12 +5012,22 @@ echo "${ECHO_T}no" >&6; }
|
||||
elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
|
||||
MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
|
||||
MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
|
||||
elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
|
||||
elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
|
||||
MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
|
||||
MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
|
||||
elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
|
||||
MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
|
||||
elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
|
||||
MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
|
||||
else
|
||||
if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
|
||||
MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
|
||||
MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
|
||||
elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
|
||||
MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
|
||||
MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
|
||||
elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
|
||||
MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
|
||||
else
|
||||
MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
|
||||
fi
|
||||
@@ -5009,10 +5040,20 @@ echo "${ECHO_T}no" >&6; }
|
||||
fi
|
||||
if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
|
||||
SCHEME_COLLECTS=lib/plt/
|
||||
else
|
||||
if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
|
||||
SCHEME_COLLECTS=lib/racket/
|
||||
fi
|
||||
fi
|
||||
if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
|
||||
MZSCHEME_EXTRA="mzscheme_base.c"
|
||||
MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
|
||||
MZSCHEME_EXTRA="mzscheme_base.c"
|
||||
else
|
||||
if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
|
||||
MZSCHEME_EXTRA="mzscheme_base.c"
|
||||
fi
|
||||
fi
|
||||
if test "X$MZSCHEME_EXTRA" != "X" ; then
|
||||
MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
|
||||
MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
|
||||
fi
|
||||
MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
|
||||
@@ -5429,9 +5470,9 @@ fi
|
||||
|
||||
PYTHON_LIBS="${vi_cv_path_python_plibs}"
|
||||
if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
|
||||
PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}"
|
||||
PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\""
|
||||
else
|
||||
PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version}"
|
||||
PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\""
|
||||
fi
|
||||
PYTHON_SRC="if_python.c"
|
||||
if test "x$MACOSX" = "xyes"; then
|
||||
@@ -5442,7 +5483,7 @@ fi
|
||||
if test "${vi_cv_var_python_version}" = "1.4"; then
|
||||
PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
|
||||
fi
|
||||
PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
|
||||
PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
|
||||
|
||||
{ echo "$as_me:$LINENO: checking if -pthread should be used" >&5
|
||||
echo $ECHO_N "checking if -pthread should be used... $ECHO_C" >&6; }
|
||||
@@ -5763,9 +5804,9 @@ fi
|
||||
|
||||
PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
|
||||
if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
|
||||
PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}"
|
||||
PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
|
||||
else
|
||||
PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}"
|
||||
PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
|
||||
fi
|
||||
PYTHON3_SRC="if_python3.c"
|
||||
if test "x$MACOSX" = "xyes"; then
|
||||
@@ -5926,10 +5967,10 @@ _ACEOF
|
||||
#define DYNAMIC_PYTHON3 1
|
||||
_ACEOF
|
||||
|
||||
{ echo "$as_me:$LINENO: checking whether we can do without RTLD_GLOBAL" >&5
|
||||
echo $ECHO_N "checking whether we can do without RTLD_GLOBAL... $ECHO_C" >&6; }
|
||||
{ echo "$as_me:$LINENO: checking whether we can do without RTLD_GLOBAL for Python" >&5
|
||||
echo $ECHO_N "checking whether we can do without RTLD_GLOBAL for Python... $ECHO_C" >&6; }
|
||||
cflags_save=$CFLAGS
|
||||
CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
|
||||
CFLAGS="$CFLAGS $PYTHON_CFLAGS"
|
||||
ldflags_save=$LDFLAGS
|
||||
LDFLAGS="$LDFLAGS -ldl"
|
||||
if test "$cross_compiling" = yes; then
|
||||
@@ -5948,15 +5989,17 @@ else
|
||||
* Only the first pyhton version used will be switched on.
|
||||
*/
|
||||
|
||||
int no_rtl_global_needed_for(char *python_instsoname)
|
||||
int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
|
||||
{
|
||||
int needed = 0;
|
||||
void* pylib = dlopen(python_instsoname, RTLD_LAZY);
|
||||
if (pylib != 0)
|
||||
{
|
||||
void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
|
||||
void (*init)(void) = dlsym(pylib, "Py_Initialize");
|
||||
int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
|
||||
void (*final)(void) = dlsym(pylib, "Py_Finalize");
|
||||
(*pfx)(prefix);
|
||||
(*init)();
|
||||
needed = (*simple)("import termios") == -1;
|
||||
(*final)();
|
||||
@@ -5968,7 +6011,7 @@ else
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
int not_needed = 0;
|
||||
if (no_rtl_global_needed_for("libpython2.7.so.1.0") && no_rtl_global_needed_for("libpython3.1.so.1.0"))
|
||||
if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
|
||||
not_needed = 1;
|
||||
return !not_needed;
|
||||
}
|
||||
@@ -6011,8 +6054,102 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$a
|
||||
fi
|
||||
|
||||
|
||||
|
||||
CFLAGS=$cflags_save
|
||||
LDFLAGS=$ldflags_save
|
||||
|
||||
{ echo "$as_me:$LINENO: checking whether we can do without RTLD_GLOBAL for Python3" >&5
|
||||
echo $ECHO_N "checking whether we can do without RTLD_GLOBAL for Python3... $ECHO_C" >&6; }
|
||||
cflags_save=$CFLAGS
|
||||
CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
|
||||
ldflags_save=$LDFLAGS
|
||||
LDFLAGS="$LDFLAGS -ldl"
|
||||
if test "$cross_compiling" = yes; then
|
||||
{ { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
|
||||
See \`config.log' for more details." >&5
|
||||
echo "$as_me: error: cannot run test program while cross compiling
|
||||
See \`config.log' for more details." >&2;}
|
||||
{ (exit 1); exit 1; }; }
|
||||
else
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
|
||||
#include <dlfcn.h>
|
||||
#include <wchar.h>
|
||||
/* If this program fails, then RTLD_GLOBAL is needed.
|
||||
* RTLD_GLOBAL will be used and then it is not possible to
|
||||
* have both python versions enabled in the same vim instance.
|
||||
* Only the first pyhton version used will be switched on.
|
||||
*/
|
||||
|
||||
int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
|
||||
{
|
||||
int needed = 0;
|
||||
void* pylib = dlopen(python_instsoname, RTLD_LAZY);
|
||||
if (pylib != 0)
|
||||
{
|
||||
void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
|
||||
void (*init)(void) = dlsym(pylib, "Py_Initialize");
|
||||
int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
|
||||
void (*final)(void) = dlsym(pylib, "Py_Finalize");
|
||||
(*pfx)(prefix);
|
||||
(*init)();
|
||||
needed = (*simple)("import termios") == -1;
|
||||
(*final)();
|
||||
dlclose(pylib);
|
||||
}
|
||||
return !needed;
|
||||
}
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
int not_needed = 0;
|
||||
if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
|
||||
not_needed = 1;
|
||||
return !not_needed;
|
||||
}
|
||||
_ACEOF
|
||||
rm -f conftest$ac_exeext
|
||||
if { (ac_try="$ac_link"
|
||||
case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
|
||||
(eval "$ac_link") 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
|
||||
{ (case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
|
||||
(eval "$ac_try") 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; }; then
|
||||
{ echo "$as_me:$LINENO: result: yes" >&5
|
||||
echo "${ECHO_T}yes" >&6; };cat >>confdefs.h <<\_ACEOF
|
||||
#define PY3_NO_RTLD_GLOBAL 1
|
||||
_ACEOF
|
||||
|
||||
else
|
||||
echo "$as_me: program exited with status $ac_status" >&5
|
||||
echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
( exit $ac_status )
|
||||
{ echo "$as_me:$LINENO: result: no" >&5
|
||||
echo "${ECHO_T}no" >&6; }
|
||||
fi
|
||||
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
|
||||
fi
|
||||
|
||||
|
||||
|
||||
CFLAGS=$cflags_save
|
||||
LDFLAGS=$ldflags_save
|
||||
|
||||
PYTHON_SRC="if_python.c"
|
||||
PYTHON_OBJ="objects/if_python.o"
|
||||
PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
|
||||
@@ -6394,7 +6531,7 @@ fi
|
||||
|
||||
{ echo "$as_me:$LINENO: result: $enable_rubyinterp" >&5
|
||||
echo "${ECHO_T}$enable_rubyinterp" >&6; }
|
||||
if test "$enable_rubyinterp" = "yes"; then
|
||||
if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
|
||||
{ echo "$as_me:$LINENO: checking --with-ruby-command argument" >&5
|
||||
echo $ECHO_N "checking --with-ruby-command argument... $ECHO_C" >&6; }
|
||||
|
||||
@@ -6510,6 +6647,15 @@ echo "${ECHO_T}$rubyhdrdir" >&6; }
|
||||
#define FEAT_RUBY 1
|
||||
_ACEOF
|
||||
|
||||
if test "$enable_rubyinterp" = "dynamic"; then
|
||||
libruby=`$vi_cv_path_ruby -r rbconfig -e 'printf "lib%s.%s\n", Config::CONFIG["RUBY_SO_NAME"], Config::CONFIG["DLEXT"]'`
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define DYNAMIC_RUBY 1
|
||||
_ACEOF
|
||||
|
||||
RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
|
||||
RUBY_LIBS=
|
||||
fi
|
||||
else
|
||||
{ echo "$as_me:$LINENO: result: not found; disabling Ruby" >&5
|
||||
echo "${ECHO_T}not found; disabling Ruby" >&6; }
|
||||
@@ -19281,6 +19427,23 @@ echo "${ECHO_T}no" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
{ echo "$as_me:$LINENO: checking linker --as-needed support" >&5
|
||||
echo $ECHO_N "checking linker --as-needed support... $ECHO_C" >&6; }
|
||||
LINK_AS_NEEDED=
|
||||
# Check if linker supports --as-needed and --no-as-needed options
|
||||
if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
|
||||
LDFLAGS="$LDFLAGS -Wl,--as-needed"
|
||||
LINK_AS_NEEDED=yes
|
||||
fi
|
||||
if test "$LINK_AS_NEEDED" = yes; then
|
||||
{ echo "$as_me:$LINENO: result: yes" >&5
|
||||
echo "${ECHO_T}yes" >&6; }
|
||||
else
|
||||
{ echo "$as_me:$LINENO: result: no" >&5
|
||||
echo "${ECHO_T}no" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
ac_config_files="$ac_config_files auto/config.mk:config.mk.in"
|
||||
|
||||
cat >confcache <<\_ACEOF
|
||||
@@ -20083,11 +20246,12 @@ MSGFMT!$MSGFMT$ac_delim
|
||||
MAKEMO!$MAKEMO$ac_delim
|
||||
XCODEFLAGS!$XCODEFLAGS$ac_delim
|
||||
DEPEND_CFLAGS_FILTER!$DEPEND_CFLAGS_FILTER$ac_delim
|
||||
LINK_AS_NEEDED!$LINK_AS_NEEDED$ac_delim
|
||||
LIBOBJS!$LIBOBJS$ac_delim
|
||||
LTLIBOBJS!$LTLIBOBJS$ac_delim
|
||||
_ACEOF
|
||||
|
||||
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 49; then
|
||||
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 50; then
|
||||
break
|
||||
elif $ac_last_try; then
|
||||
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
|
||||
|
||||
+3
-3
@@ -643,6 +643,9 @@ free_buffer_stuff(buf, free_options)
|
||||
{
|
||||
clear_wininfo(buf); /* including window-local options */
|
||||
free_buf_options(buf, TRUE);
|
||||
#ifdef FEAT_SPELL
|
||||
ga_clear(&buf->b_s.b_langp);
|
||||
#endif
|
||||
}
|
||||
#ifdef FEAT_EVAL
|
||||
vars_clear(&buf->b_vars.dv_hashtab); /* free all internal variables */
|
||||
@@ -665,9 +668,6 @@ free_buffer_stuff(buf, free_options)
|
||||
vim_free(buf->b_start_fenc);
|
||||
buf->b_start_fenc = NULL;
|
||||
#endif
|
||||
#ifdef FEAT_SPELL
|
||||
ga_clear(&buf->b_s.b_langp);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -349,6 +349,9 @@
|
||||
/* Define if you want to include the Ruby interpreter. */
|
||||
#undef FEAT_RUBY
|
||||
|
||||
/* Define for linking via dlopen() or LoadLibrary() */
|
||||
#undef DYNAMIC_RUBY
|
||||
|
||||
/* Define if you want to include the Tcl interpreter. */
|
||||
#undef FEAT_TCL
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ TAGPRG = @TAGPRG@
|
||||
CPP = @CPP@
|
||||
CPP_MM = @CPP_MM@
|
||||
DEPEND_CFLAGS_FILTER = @DEPEND_CFLAGS_FILTER@
|
||||
LINK_AS_NEEDED = @LINK_AS_NEEDED@
|
||||
X_CFLAGS = @X_CFLAGS@
|
||||
X_LIBS_DIR = @X_LIBS@
|
||||
X_PRE_LIBS = @X_PRE_LIBS@
|
||||
|
||||
+123
-17
@@ -582,13 +582,27 @@ if test "$enable_mzschemeinterp" = "yes"; then
|
||||
SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
|
||||
if test -f /usr/include/plt/scheme.h; then
|
||||
AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
|
||||
if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then
|
||||
AC_MSG_RESULT(yes)
|
||||
SCHEME_INC=/usr/include/plt
|
||||
SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
vi_cv_path_mzscheme_pfx=
|
||||
AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
|
||||
if test -f /usr/include/plt/scheme.h; then
|
||||
AC_MSG_RESULT(yes)
|
||||
SCHEME_INC=/usr/include/plt
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
|
||||
if test -f /usr/include/racket/scheme.h; then
|
||||
AC_MSG_RESULT(yes)
|
||||
SCHEME_INC=/usr/include/racket
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
vi_cv_path_mzscheme_pfx=
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
@@ -600,13 +614,23 @@ if test "$enable_mzschemeinterp" = "yes"; then
|
||||
elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
|
||||
MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
|
||||
MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
|
||||
elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
|
||||
elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
|
||||
MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
|
||||
MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
|
||||
elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
|
||||
MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
|
||||
elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
|
||||
MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
|
||||
else
|
||||
dnl Using shared objects
|
||||
if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
|
||||
MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
|
||||
MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
|
||||
elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
|
||||
MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
|
||||
MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
|
||||
elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
|
||||
MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
|
||||
else
|
||||
MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
|
||||
fi
|
||||
@@ -621,10 +645,20 @@ if test "$enable_mzschemeinterp" = "yes"; then
|
||||
fi
|
||||
if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
|
||||
SCHEME_COLLECTS=lib/plt/
|
||||
else
|
||||
if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
|
||||
SCHEME_COLLECTS=lib/racket/
|
||||
fi
|
||||
fi
|
||||
if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
|
||||
dnl need to generate bytecode for MzScheme base
|
||||
MZSCHEME_EXTRA="mzscheme_base.c"
|
||||
else
|
||||
if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
|
||||
MZSCHEME_EXTRA="mzscheme_base.c"
|
||||
fi
|
||||
fi
|
||||
if test "X$MZSCHEME_EXTRA" != "X" ; then
|
||||
dnl need to generate bytecode for MzScheme base
|
||||
MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
|
||||
MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
|
||||
fi
|
||||
@@ -879,9 +913,9 @@ eof
|
||||
|
||||
PYTHON_LIBS="${vi_cv_path_python_plibs}"
|
||||
if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
|
||||
PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}"
|
||||
PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\""
|
||||
else
|
||||
PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version}"
|
||||
PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\""
|
||||
fi
|
||||
PYTHON_SRC="if_python.c"
|
||||
dnl For Mac OSX 10.2 config.o is included in the Python library.
|
||||
@@ -893,7 +927,7 @@ eof
|
||||
if test "${vi_cv_var_python_version}" = "1.4"; then
|
||||
PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
|
||||
fi
|
||||
PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
|
||||
PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
|
||||
|
||||
dnl On FreeBSD linking with "-pthread" is required to use threads.
|
||||
dnl _THREAD_SAFE must be used for compiling then.
|
||||
@@ -1061,9 +1095,9 @@ eof
|
||||
|
||||
PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
|
||||
if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
|
||||
PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}"
|
||||
PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
|
||||
else
|
||||
PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}"
|
||||
PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
|
||||
fi
|
||||
PYTHON3_SRC="if_python3.c"
|
||||
dnl For Mac OSX 10.2 config.o is included in the Python library.
|
||||
@@ -1141,9 +1175,9 @@ dnl with dlopen(), dlsym(), dlclose()
|
||||
if test "$python_ok" = yes && test "$python3_ok" = yes; then
|
||||
AC_DEFINE(DYNAMIC_PYTHON)
|
||||
AC_DEFINE(DYNAMIC_PYTHON3)
|
||||
AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL)
|
||||
AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
|
||||
cflags_save=$CFLAGS
|
||||
CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
|
||||
CFLAGS="$CFLAGS $PYTHON_CFLAGS"
|
||||
ldflags_save=$LDFLAGS
|
||||
LDFLAGS="$LDFLAGS -ldl"
|
||||
AC_RUN_IFELSE([
|
||||
@@ -1154,15 +1188,17 @@ if test "$python_ok" = yes && test "$python3_ok" = yes; then
|
||||
* Only the first pyhton version used will be switched on.
|
||||
*/
|
||||
|
||||
int no_rtl_global_needed_for(char *python_instsoname)
|
||||
int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
|
||||
{
|
||||
int needed = 0;
|
||||
void* pylib = dlopen(python_instsoname, RTLD_LAZY);
|
||||
if (pylib != 0)
|
||||
{
|
||||
void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
|
||||
void (*init)(void) = dlsym(pylib, "Py_Initialize");
|
||||
int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
|
||||
void (*final)(void) = dlsym(pylib, "Py_Finalize");
|
||||
(*pfx)(prefix);
|
||||
(*init)();
|
||||
needed = (*simple)("import termios") == -1;
|
||||
(*final)();
|
||||
@@ -1174,13 +1210,60 @@ if test "$python_ok" = yes && test "$python3_ok" = yes; then
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
int not_needed = 0;
|
||||
if (no_rtl_global_needed_for("libpython2.7.so.1.0") && no_rtl_global_needed_for("libpython3.1.so.1.0"))
|
||||
if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
|
||||
not_needed = 1;
|
||||
return !not_needed;
|
||||
}],
|
||||
[AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
|
||||
|
||||
CFLAGS=$cflags_save
|
||||
LDFLAGS=$ldflags_save
|
||||
|
||||
AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
|
||||
cflags_save=$CFLAGS
|
||||
CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
|
||||
ldflags_save=$LDFLAGS
|
||||
LDFLAGS="$LDFLAGS -ldl"
|
||||
AC_RUN_IFELSE([
|
||||
#include <dlfcn.h>
|
||||
#include <wchar.h>
|
||||
/* If this program fails, then RTLD_GLOBAL is needed.
|
||||
* RTLD_GLOBAL will be used and then it is not possible to
|
||||
* have both python versions enabled in the same vim instance.
|
||||
* Only the first pyhton version used will be switched on.
|
||||
*/
|
||||
|
||||
int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
|
||||
{
|
||||
int needed = 0;
|
||||
void* pylib = dlopen(python_instsoname, RTLD_LAZY);
|
||||
if (pylib != 0)
|
||||
{
|
||||
void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
|
||||
void (*init)(void) = dlsym(pylib, "Py_Initialize");
|
||||
int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
|
||||
void (*final)(void) = dlsym(pylib, "Py_Finalize");
|
||||
(*pfx)(prefix);
|
||||
(*init)();
|
||||
needed = (*simple)("import termios") == -1;
|
||||
(*final)();
|
||||
dlclose(pylib);
|
||||
}
|
||||
return !needed;
|
||||
}
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
int not_needed = 0;
|
||||
if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
|
||||
not_needed = 1;
|
||||
return !not_needed;
|
||||
}],
|
||||
[AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
|
||||
|
||||
CFLAGS=$cflags_save
|
||||
LDFLAGS=$ldflags_save
|
||||
|
||||
PYTHON_SRC="if_python.c"
|
||||
PYTHON_OBJ="objects/if_python.o"
|
||||
PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
|
||||
@@ -1331,10 +1414,10 @@ AC_SUBST(TCL_LIBS)
|
||||
|
||||
AC_MSG_CHECKING(--enable-rubyinterp argument)
|
||||
AC_ARG_ENABLE(rubyinterp,
|
||||
[ --enable-rubyinterp Include Ruby interpreter.], ,
|
||||
[ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
|
||||
[enable_rubyinterp="no"])
|
||||
AC_MSG_RESULT($enable_rubyinterp)
|
||||
if test "$enable_rubyinterp" = "yes"; then
|
||||
if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
|
||||
AC_MSG_CHECKING(--with-ruby-command argument)
|
||||
AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
|
||||
RUBY_CMD="$withval"; AC_MSG_RESULT($RUBY_CMD),
|
||||
@@ -1402,6 +1485,12 @@ if test "$enable_rubyinterp" = "yes"; then
|
||||
RUBY_PRO="if_ruby.pro"
|
||||
|
||||
AC_DEFINE(FEAT_RUBY)
|
||||
if test "$enable_rubyinterp" = "dynamic"; then
|
||||
libruby=`$vi_cv_path_ruby -r rbconfig -e 'printf "lib%s.%s\n", Config::CONFIG[["RUBY_SO_NAME"]], Config::CONFIG[["DLEXT"]]'`
|
||||
AC_DEFINE(DYNAMIC_RUBY)
|
||||
RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
|
||||
RUBY_LIBS=
|
||||
fi
|
||||
else
|
||||
AC_MSG_RESULT(not found; disabling Ruby)
|
||||
fi
|
||||
@@ -3558,6 +3647,23 @@ if test "$GCC" = yes; then
|
||||
fi
|
||||
AC_SUBST(DEPEND_CFLAGS_FILTER)
|
||||
|
||||
dnl link.sh tries to avoid overlinking in a hackish way.
|
||||
dnl At least GNU ld supports --as-needed which provides the same functionality
|
||||
dnl at linker level. Let's use it.
|
||||
AC_MSG_CHECKING(linker --as-needed support)
|
||||
LINK_AS_NEEDED=
|
||||
# Check if linker supports --as-needed and --no-as-needed options
|
||||
if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
|
||||
LDFLAGS="$LDFLAGS -Wl,--as-needed"
|
||||
LINK_AS_NEEDED=yes
|
||||
fi
|
||||
if test "$LINK_AS_NEEDED" = yes; then
|
||||
AC_MSG_RESULT(yes)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
AC_SUBST(LINK_AS_NEEDED)
|
||||
|
||||
dnl write output files
|
||||
AC_OUTPUT(auto/config.mk:config.mk.in)
|
||||
|
||||
|
||||
+44
-5
@@ -58,6 +58,10 @@ static char *ctrl_x_msgs[] =
|
||||
};
|
||||
|
||||
static char e_hitend[] = N_("Hit end of paragraph");
|
||||
#ifdef FEAT_COMPL_FUNC
|
||||
static char e_complwin[] = N_("E839: Completion function changed window");
|
||||
static char e_compldel[] = N_("E840: Completion function deleted text");
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Structure used to store one match for insert completion.
|
||||
@@ -2668,6 +2672,7 @@ set_completion(startcol, list)
|
||||
if (stop_arrow() == FAIL)
|
||||
return;
|
||||
|
||||
compl_direction = FORWARD;
|
||||
if (startcol > curwin->w_cursor.col)
|
||||
startcol = curwin->w_cursor.col;
|
||||
compl_col = startcol;
|
||||
@@ -3848,6 +3853,8 @@ expand_by_function(type, base)
|
||||
char_u *args[2];
|
||||
char_u *funcname;
|
||||
pos_T pos;
|
||||
win_T *curwin_save;
|
||||
buf_T *curbuf_save;
|
||||
|
||||
funcname = (type == CTRL_X_FUNCTION) ? curbuf->b_p_cfu : curbuf->b_p_ofu;
|
||||
if (*funcname == NUL)
|
||||
@@ -3858,13 +3865,27 @@ expand_by_function(type, base)
|
||||
args[1] = base;
|
||||
|
||||
pos = curwin->w_cursor;
|
||||
curwin_save = curwin;
|
||||
curbuf_save = curbuf;
|
||||
matchlist = call_func_retlist(funcname, 2, args, FALSE);
|
||||
if (curwin_save != curwin || curbuf_save != curbuf)
|
||||
{
|
||||
EMSG(_(e_complwin));
|
||||
goto theend;
|
||||
}
|
||||
curwin->w_cursor = pos; /* restore the cursor position */
|
||||
if (matchlist == NULL)
|
||||
return;
|
||||
check_cursor();
|
||||
if (!equalpos(curwin->w_cursor, pos))
|
||||
{
|
||||
EMSG(_(e_compldel));
|
||||
goto theend;
|
||||
}
|
||||
if (matchlist != NULL)
|
||||
ins_compl_add_list(matchlist);
|
||||
|
||||
ins_compl_add_list(matchlist);
|
||||
list_unref(matchlist);
|
||||
theend:
|
||||
if (matchlist != NULL)
|
||||
list_unref(matchlist);
|
||||
}
|
||||
#endif /* FEAT_COMPL_FUNC */
|
||||
|
||||
@@ -3904,6 +3925,7 @@ ins_compl_add_tv(tv, dir)
|
||||
char_u *word;
|
||||
int icase = FALSE;
|
||||
int adup = FALSE;
|
||||
int aempty = FALSE;
|
||||
char_u *(cptext[CPT_COUNT]);
|
||||
|
||||
if (tv->v_type == VAR_DICT && tv->vval.v_dict != NULL)
|
||||
@@ -3921,13 +3943,15 @@ ins_compl_add_tv(tv, dir)
|
||||
icase = get_dict_number(tv->vval.v_dict, (char_u *)"icase");
|
||||
if (get_dict_string(tv->vval.v_dict, (char_u *)"dup", FALSE) != NULL)
|
||||
adup = get_dict_number(tv->vval.v_dict, (char_u *)"dup");
|
||||
if (get_dict_string(tv->vval.v_dict, (char_u *)"empty", FALSE) != NULL)
|
||||
aempty = get_dict_number(tv->vval.v_dict, (char_u *)"empty");
|
||||
}
|
||||
else
|
||||
{
|
||||
word = get_tv_string_chk(tv);
|
||||
vim_memset(cptext, 0, sizeof(cptext));
|
||||
}
|
||||
if (word == NULL || *word == NUL)
|
||||
if (word == NULL || (!aempty && *word == NUL))
|
||||
return FAIL;
|
||||
return ins_compl_add(word, -1, icase, NULL, cptext, dir, 0, adup);
|
||||
}
|
||||
@@ -5009,6 +5033,8 @@ ins_complete(c)
|
||||
int col;
|
||||
char_u *funcname;
|
||||
pos_T pos;
|
||||
win_T *curwin_save;
|
||||
buf_T *curbuf_save;
|
||||
|
||||
/* Call 'completefunc' or 'omnifunc' and get pattern length as a
|
||||
* string */
|
||||
@@ -5024,8 +5050,21 @@ ins_complete(c)
|
||||
args[0] = (char_u *)"1";
|
||||
args[1] = NULL;
|
||||
pos = curwin->w_cursor;
|
||||
curwin_save = curwin;
|
||||
curbuf_save = curbuf;
|
||||
col = call_func_retnr(funcname, 2, args, FALSE);
|
||||
if (curwin_save != curwin || curbuf_save != curbuf)
|
||||
{
|
||||
EMSG(_(e_complwin));
|
||||
return FAIL;
|
||||
}
|
||||
curwin->w_cursor = pos; /* restore the cursor position */
|
||||
check_cursor();
|
||||
if (!equalpos(curwin->w_cursor, pos))
|
||||
{
|
||||
EMSG(_(e_compldel));
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
if (col < 0)
|
||||
col = curs_col;
|
||||
|
||||
+117
-51
@@ -10,9 +10,6 @@
|
||||
/*
|
||||
* eval.c: Expression evaluation.
|
||||
*/
|
||||
#if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
|
||||
# include "vimio.h" /* for mch_open(), must be before vim.h */
|
||||
#endif
|
||||
|
||||
#include "vim.h"
|
||||
|
||||
@@ -362,6 +359,7 @@ static struct vimvar
|
||||
{VV_NAME("operator", VAR_STRING), VV_RO},
|
||||
{VV_NAME("searchforward", VAR_NUMBER), 0},
|
||||
{VV_NAME("oldfiles", VAR_LIST), 0},
|
||||
{VV_NAME("windowid", VAR_NUMBER), VV_RO},
|
||||
};
|
||||
|
||||
/* shorthand */
|
||||
@@ -433,9 +431,9 @@ static listitem_T *listitem_alloc __ARGS((void));
|
||||
static void listitem_free __ARGS((listitem_T *item));
|
||||
static void listitem_remove __ARGS((list_T *l, listitem_T *item));
|
||||
static long list_len __ARGS((list_T *l));
|
||||
static int list_equal __ARGS((list_T *l1, list_T *l2, int ic));
|
||||
static int dict_equal __ARGS((dict_T *d1, dict_T *d2, int ic));
|
||||
static int tv_equal __ARGS((typval_T *tv1, typval_T *tv2, int ic));
|
||||
static int list_equal __ARGS((list_T *l1, list_T *l2, int ic, int recursive));
|
||||
static int dict_equal __ARGS((dict_T *d1, dict_T *d2, int ic, int recursive));
|
||||
static int tv_equal __ARGS((typval_T *tv1, typval_T *tv2, int ic, int recursive));
|
||||
static listitem_T *list_find __ARGS((list_T *l, long n));
|
||||
static long list_find_nr __ARGS((list_T *l, long idx, int *errorp));
|
||||
static long list_idx_of_item __ARGS((list_T *l, listitem_T *item));
|
||||
@@ -2325,7 +2323,7 @@ ex_let_one(arg, tv, copy, endchars, op)
|
||||
else if (endchars != NULL
|
||||
&& vim_strchr(endchars, *skipwhite(arg)) == NULL)
|
||||
EMSG(_(e_letunexp));
|
||||
else
|
||||
else if (!check_secure())
|
||||
{
|
||||
c1 = name[len];
|
||||
name[len] = NUL;
|
||||
@@ -4349,7 +4347,8 @@ eval4(arg, rettv, evaluate)
|
||||
else
|
||||
{
|
||||
/* Compare two Lists for being equal or unequal. */
|
||||
n1 = list_equal(rettv->vval.v_list, var2.vval.v_list, ic);
|
||||
n1 = list_equal(rettv->vval.v_list, var2.vval.v_list,
|
||||
ic, FALSE);
|
||||
if (type == TYPE_NEQUAL)
|
||||
n1 = !n1;
|
||||
}
|
||||
@@ -4378,7 +4377,8 @@ eval4(arg, rettv, evaluate)
|
||||
else
|
||||
{
|
||||
/* Compare two Dictionaries for being equal or unequal. */
|
||||
n1 = dict_equal(rettv->vval.v_dict, var2.vval.v_dict, ic);
|
||||
n1 = dict_equal(rettv->vval.v_dict, var2.vval.v_dict,
|
||||
ic, FALSE);
|
||||
if (type == TYPE_NEQUAL)
|
||||
n1 = !n1;
|
||||
}
|
||||
@@ -5913,10 +5913,11 @@ list_len(l)
|
||||
* Return TRUE when two lists have exactly the same values.
|
||||
*/
|
||||
static int
|
||||
list_equal(l1, l2, ic)
|
||||
list_equal(l1, l2, ic, recursive)
|
||||
list_T *l1;
|
||||
list_T *l2;
|
||||
int ic; /* ignore case for strings */
|
||||
int recursive; /* TRUE when used recursively */
|
||||
{
|
||||
listitem_T *item1, *item2;
|
||||
|
||||
@@ -5930,7 +5931,7 @@ list_equal(l1, l2, ic)
|
||||
for (item1 = l1->lv_first, item2 = l2->lv_first;
|
||||
item1 != NULL && item2 != NULL;
|
||||
item1 = item1->li_next, item2 = item2->li_next)
|
||||
if (!tv_equal(&item1->li_tv, &item2->li_tv, ic))
|
||||
if (!tv_equal(&item1->li_tv, &item2->li_tv, ic, recursive))
|
||||
return FALSE;
|
||||
return item1 == NULL && item2 == NULL;
|
||||
}
|
||||
@@ -5953,10 +5954,11 @@ dict_lookup(hi)
|
||||
* Return TRUE when two dictionaries have exactly the same key/values.
|
||||
*/
|
||||
static int
|
||||
dict_equal(d1, d2, ic)
|
||||
dict_equal(d1, d2, ic, recursive)
|
||||
dict_T *d1;
|
||||
dict_T *d2;
|
||||
int ic; /* ignore case for strings */
|
||||
int recursive; /* TRUE when used recursively */
|
||||
{
|
||||
hashitem_T *hi;
|
||||
dictitem_T *item2;
|
||||
@@ -5977,7 +5979,7 @@ dict_equal(d1, d2, ic)
|
||||
item2 = dict_find(d2, hi->hi_key, -1);
|
||||
if (item2 == NULL)
|
||||
return FALSE;
|
||||
if (!tv_equal(&HI2DI(hi)->di_tv, &item2->di_tv, ic))
|
||||
if (!tv_equal(&HI2DI(hi)->di_tv, &item2->di_tv, ic, recursive))
|
||||
return FALSE;
|
||||
--todo;
|
||||
}
|
||||
@@ -5985,41 +5987,54 @@ dict_equal(d1, d2, ic)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int tv_equal_recurse_limit;
|
||||
|
||||
/*
|
||||
* Return TRUE if "tv1" and "tv2" have the same value.
|
||||
* Compares the items just like "==" would compare them, but strings and
|
||||
* numbers are different. Floats and numbers are also different.
|
||||
*/
|
||||
static int
|
||||
tv_equal(tv1, tv2, ic)
|
||||
tv_equal(tv1, tv2, ic, recursive)
|
||||
typval_T *tv1;
|
||||
typval_T *tv2;
|
||||
int ic; /* ignore case */
|
||||
int ic; /* ignore case */
|
||||
int recursive; /* TRUE when used recursively */
|
||||
{
|
||||
char_u buf1[NUMBUFLEN], buf2[NUMBUFLEN];
|
||||
char_u *s1, *s2;
|
||||
static int recursive = 0; /* cach recursive loops */
|
||||
static int recursive_cnt = 0; /* catch recursive loops */
|
||||
int r;
|
||||
|
||||
if (tv1->v_type != tv2->v_type)
|
||||
return FALSE;
|
||||
|
||||
/* Catch lists and dicts that have an endless loop by limiting
|
||||
* recursiveness to 1000. We guess they are equal then. */
|
||||
if (recursive >= 1000)
|
||||
* recursiveness to a limit. We guess they are equal then.
|
||||
* A fixed limit has the problem of still taking an awful long time.
|
||||
* Reduce the limit every time running into it. That should work fine for
|
||||
* deeply linked structures that are not recursively linked and catch
|
||||
* recursiveness quickly. */
|
||||
if (!recursive)
|
||||
tv_equal_recurse_limit = 1000;
|
||||
if (recursive_cnt >= tv_equal_recurse_limit)
|
||||
{
|
||||
--tv_equal_recurse_limit;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
switch (tv1->v_type)
|
||||
{
|
||||
case VAR_LIST:
|
||||
++recursive;
|
||||
r = list_equal(tv1->vval.v_list, tv2->vval.v_list, ic);
|
||||
--recursive;
|
||||
++recursive_cnt;
|
||||
r = list_equal(tv1->vval.v_list, tv2->vval.v_list, ic, TRUE);
|
||||
--recursive_cnt;
|
||||
return r;
|
||||
|
||||
case VAR_DICT:
|
||||
++recursive;
|
||||
r = dict_equal(tv1->vval.v_dict, tv2->vval.v_dict, ic);
|
||||
--recursive;
|
||||
++recursive_cnt;
|
||||
r = dict_equal(tv1->vval.v_dict, tv2->vval.v_dict, ic, TRUE);
|
||||
--recursive_cnt;
|
||||
return r;
|
||||
|
||||
case VAR_FUNC:
|
||||
@@ -7804,7 +7819,7 @@ static struct fst
|
||||
{"log10", 1, 1, f_log10},
|
||||
#endif
|
||||
{"map", 2, 2, f_map},
|
||||
{"maparg", 1, 3, f_maparg},
|
||||
{"maparg", 1, 4, f_maparg},
|
||||
{"mapcheck", 1, 3, f_mapcheck},
|
||||
{"match", 2, 4, f_match},
|
||||
{"matchadd", 2, 4, f_matchadd},
|
||||
@@ -9391,7 +9406,7 @@ f_count(argvars, rettv)
|
||||
}
|
||||
|
||||
for ( ; li != NULL; li = li->li_next)
|
||||
if (tv_equal(&li->li_tv, &argvars[1], ic))
|
||||
if (tv_equal(&li->li_tv, &argvars[1], ic, FALSE))
|
||||
++n;
|
||||
}
|
||||
}
|
||||
@@ -9418,7 +9433,7 @@ f_count(argvars, rettv)
|
||||
if (!HASHITEM_EMPTY(hi))
|
||||
{
|
||||
--todo;
|
||||
if (tv_equal(&HI2DI(hi)->di_tv, &argvars[1], ic))
|
||||
if (tv_equal(&HI2DI(hi)->di_tv, &argvars[1], ic, FALSE))
|
||||
++n;
|
||||
}
|
||||
}
|
||||
@@ -9859,7 +9874,7 @@ f_expand(argvars, rettv)
|
||||
char_u *s;
|
||||
int len;
|
||||
char_u *errormsg;
|
||||
int flags = WILD_SILENT|WILD_USE_NL|WILD_LIST_NOTFOUND;
|
||||
int options = WILD_SILENT|WILD_USE_NL|WILD_LIST_NOTFOUND;
|
||||
expand_T xpc;
|
||||
int error = FALSE;
|
||||
|
||||
@@ -9877,12 +9892,14 @@ f_expand(argvars, rettv)
|
||||
* for 'wildignore' and don't put matches for 'suffixes' at the end. */
|
||||
if (argvars[1].v_type != VAR_UNKNOWN
|
||||
&& get_tv_number_chk(&argvars[1], &error))
|
||||
flags |= WILD_KEEP_ALL;
|
||||
options |= WILD_KEEP_ALL;
|
||||
if (!error)
|
||||
{
|
||||
ExpandInit(&xpc);
|
||||
xpc.xp_context = EXPAND_FILES;
|
||||
rettv->vval.v_string = ExpandOne(&xpc, s, NULL, flags, WILD_ALL);
|
||||
if (p_wic)
|
||||
options += WILD_ICASE;
|
||||
rettv->vval.v_string = ExpandOne(&xpc, s, NULL, options, WILD_ALL);
|
||||
}
|
||||
else
|
||||
rettv->vval.v_string = NULL;
|
||||
@@ -11662,7 +11679,7 @@ f_glob(argvars, rettv)
|
||||
typval_T *argvars;
|
||||
typval_T *rettv;
|
||||
{
|
||||
int flags = WILD_SILENT|WILD_USE_NL;
|
||||
int options = WILD_SILENT|WILD_USE_NL;
|
||||
expand_T xpc;
|
||||
int error = FALSE;
|
||||
|
||||
@@ -11670,14 +11687,16 @@ f_glob(argvars, rettv)
|
||||
* for 'wildignore' and don't put matches for 'suffixes' at the end. */
|
||||
if (argvars[1].v_type != VAR_UNKNOWN
|
||||
&& get_tv_number_chk(&argvars[1], &error))
|
||||
flags |= WILD_KEEP_ALL;
|
||||
options |= WILD_KEEP_ALL;
|
||||
rettv->v_type = VAR_STRING;
|
||||
if (!error)
|
||||
{
|
||||
ExpandInit(&xpc);
|
||||
xpc.xp_context = EXPAND_FILES;
|
||||
if (p_wic)
|
||||
options += WILD_ICASE;
|
||||
rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]),
|
||||
NULL, flags, WILD_ALL);
|
||||
NULL, options, WILD_ALL);
|
||||
}
|
||||
else
|
||||
rettv->vval.v_string = NULL;
|
||||
@@ -12137,6 +12156,9 @@ f_has(argvars, rettv)
|
||||
#ifdef FEAT_TRANSPARENCY
|
||||
"transparency",
|
||||
#endif
|
||||
#if defined(FEAT_CLIPBOARD) && defined(FEAT_X11)
|
||||
"unnamedplus",
|
||||
#endif
|
||||
#ifdef FEAT_USR_CMDS
|
||||
"user-commands", /* was accidentally included in 5.4 */
|
||||
"user_commands",
|
||||
@@ -12593,7 +12615,7 @@ f_index(argvars, rettv)
|
||||
}
|
||||
|
||||
for ( ; item != NULL; item = item->li_next, ++idx)
|
||||
if (tv_equal(&item->li_tv, &argvars[1], ic))
|
||||
if (tv_equal(&item->li_tv, &argvars[1], ic, FALSE))
|
||||
{
|
||||
rettv->vval.v_number = idx;
|
||||
break;
|
||||
@@ -13311,8 +13333,10 @@ get_maparg(argvars, rettv, exact)
|
||||
char_u *keys_buf = NULL;
|
||||
char_u *rhs;
|
||||
int mode;
|
||||
garray_T ga;
|
||||
int abbr = FALSE;
|
||||
int get_dict = FALSE;
|
||||
mapblock_T *mp;
|
||||
int buffer_local;
|
||||
|
||||
/* return empty string for failure */
|
||||
rettv->v_type = VAR_STRING;
|
||||
@@ -13326,7 +13350,11 @@ get_maparg(argvars, rettv, exact)
|
||||
{
|
||||
which = get_tv_string_buf_chk(&argvars[1], buf);
|
||||
if (argvars[2].v_type != VAR_UNKNOWN)
|
||||
{
|
||||
abbr = get_tv_number(&argvars[2]);
|
||||
if (argvars[3].v_type != VAR_UNKNOWN)
|
||||
get_dict = get_tv_number(&argvars[3]);
|
||||
}
|
||||
}
|
||||
else
|
||||
which = (char_u *)"";
|
||||
@@ -13336,19 +13364,34 @@ get_maparg(argvars, rettv, exact)
|
||||
mode = get_map_mode(&which, 0);
|
||||
|
||||
keys = replace_termcodes(keys, &keys_buf, TRUE, TRUE, FALSE);
|
||||
rhs = check_map(keys, mode, exact, FALSE, abbr);
|
||||
rhs = check_map(keys, mode, exact, FALSE, abbr, &mp, &buffer_local);
|
||||
vim_free(keys_buf);
|
||||
if (rhs != NULL)
|
||||
|
||||
if (!get_dict)
|
||||
{
|
||||
ga_init(&ga);
|
||||
ga.ga_itemsize = 1;
|
||||
ga.ga_growsize = 40;
|
||||
/* Return a string. */
|
||||
if (rhs != NULL)
|
||||
rettv->vval.v_string = str2special_save(rhs, FALSE);
|
||||
|
||||
while (*rhs != NUL)
|
||||
ga_concat(&ga, str2special(&rhs, FALSE));
|
||||
}
|
||||
else if (rettv_dict_alloc(rettv) != FAIL && rhs != NULL)
|
||||
{
|
||||
/* Return a dictionary. */
|
||||
char_u *lhs = str2special_save(mp->m_keys, TRUE);
|
||||
char_u *mapmode = map_mode_to_chars(mp->m_mode);
|
||||
dict_T *dict = rettv->vval.v_dict;
|
||||
|
||||
ga_append(&ga, NUL);
|
||||
rettv->vval.v_string = (char_u *)ga.ga_data;
|
||||
dict_add_nr_str(dict, "lhs", 0L, lhs);
|
||||
dict_add_nr_str(dict, "rhs", 0L, mp->m_orig_str);
|
||||
dict_add_nr_str(dict, "noremap", mp->m_noremap ? 1L : 0L , NULL);
|
||||
dict_add_nr_str(dict, "expr", mp->m_expr ? 1L : 0L, NULL);
|
||||
dict_add_nr_str(dict, "silent", mp->m_silent ? 1L : 0L, NULL);
|
||||
dict_add_nr_str(dict, "sid", (long)mp->m_script_ID, NULL);
|
||||
dict_add_nr_str(dict, "buffer", (long)buffer_local, NULL);
|
||||
dict_add_nr_str(dict, "mode", 0L, mapmode);
|
||||
|
||||
vim_free(lhs);
|
||||
vim_free(mapmode);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22548,18 +22591,21 @@ read_viminfo_varlist(virp, writing)
|
||||
if (tab != NULL)
|
||||
{
|
||||
*tab++ = '\0'; /* isolate the variable name */
|
||||
if (*tab == 'S') /* string var */
|
||||
type = VAR_STRING;
|
||||
switch (*tab)
|
||||
{
|
||||
case 'S': type = VAR_STRING; break;
|
||||
#ifdef FEAT_FLOAT
|
||||
else if (*tab == 'F')
|
||||
type = VAR_FLOAT;
|
||||
case 'F': type = VAR_FLOAT; break;
|
||||
#endif
|
||||
case 'D': type = VAR_DICT; break;
|
||||
case 'L': type = VAR_LIST; break;
|
||||
}
|
||||
|
||||
tab = vim_strchr(tab, '\t');
|
||||
if (tab != NULL)
|
||||
{
|
||||
tv.v_type = type;
|
||||
if (type == VAR_STRING)
|
||||
if (type == VAR_STRING || type == VAR_DICT || type == VAR_LIST)
|
||||
tv.vval.v_string = viminfo_readstring(virp,
|
||||
(int)(tab - virp->vir_line + 1), TRUE);
|
||||
#ifdef FEAT_FLOAT
|
||||
@@ -22568,9 +22614,27 @@ read_viminfo_varlist(virp, writing)
|
||||
#endif
|
||||
else
|
||||
tv.vval.v_number = atol((char *)tab + 1);
|
||||
if (type == VAR_DICT || type == VAR_LIST)
|
||||
{
|
||||
typval_T *etv = eval_expr(tv.vval.v_string, NULL);
|
||||
|
||||
if (etv == NULL)
|
||||
/* Failed to parse back the dict or list, use it as a
|
||||
* string. */
|
||||
tv.v_type = VAR_STRING;
|
||||
else
|
||||
{
|
||||
vim_free(tv.vval.v_string);
|
||||
tv = *etv;
|
||||
}
|
||||
}
|
||||
|
||||
set_var(virp->vir_line + 1, &tv, FALSE);
|
||||
if (type == VAR_STRING)
|
||||
|
||||
if (tv.v_type == VAR_STRING)
|
||||
vim_free(tv.vval.v_string);
|
||||
else if (tv.v_type == VAR_DICT || tv.v_type == VAR_LIST)
|
||||
clear_tv(&tv);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -22612,8 +22676,10 @@ write_viminfo_varlist(fp)
|
||||
case VAR_STRING: s = "STR"; break;
|
||||
case VAR_NUMBER: s = "NUM"; break;
|
||||
#ifdef FEAT_FLOAT
|
||||
case VAR_FLOAT: s = "FLO"; break;
|
||||
case VAR_FLOAT: s = "FLO"; break;
|
||||
#endif
|
||||
case VAR_DICT: s = "DIC"; break;
|
||||
case VAR_LIST: s = "LIS"; break;
|
||||
default: continue;
|
||||
}
|
||||
fprintf(fp, "!%s\t%s\t", this_var->di_key, s);
|
||||
|
||||
+61
-44
@@ -11,10 +11,6 @@
|
||||
* ex_cmds.c: some functions for command line commands
|
||||
*/
|
||||
|
||||
#if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
|
||||
# include "vimio.h" /* for mch_open(), must be before vim.h */
|
||||
#endif
|
||||
|
||||
#include "vim.h"
|
||||
#include "version.h"
|
||||
|
||||
@@ -323,7 +319,8 @@ sort_compare(s1, s2)
|
||||
/* When sorting numbers "start_col_nr" is the number, not the column
|
||||
* number. */
|
||||
if (sort_nr)
|
||||
result = l1.start_col_nr - l2.start_col_nr;
|
||||
result = l1.start_col_nr == l2.start_col_nr ? 0
|
||||
: l1.start_col_nr > l2.start_col_nr ? 1 : -1;
|
||||
else
|
||||
{
|
||||
/* We need to copy one line into "sortbuf1", because there is no
|
||||
@@ -482,7 +479,7 @@ ex_sort(eap)
|
||||
* of the match, by temporarily terminating the string there */
|
||||
s2 = s + end_col;
|
||||
c = *s2;
|
||||
(*s2) = 0;
|
||||
*s2 = NUL;
|
||||
/* Sorting on number: Store the number itself. */
|
||||
p = s + start_col;
|
||||
if (sort_hex)
|
||||
@@ -491,9 +488,13 @@ ex_sort(eap)
|
||||
s = skiptodigit(p);
|
||||
if (s > p && s[-1] == '-')
|
||||
--s; /* include preceding negative sign */
|
||||
vim_str2nr(s, NULL, NULL, sort_oct, sort_hex,
|
||||
&nrs[lnum - eap->line1].start_col_nr, NULL);
|
||||
(*s2) = c;
|
||||
if (*s == NUL)
|
||||
/* empty line should sort before any number */
|
||||
nrs[lnum - eap->line1].start_col_nr = -MAXLNUM;
|
||||
else
|
||||
vim_str2nr(s, NULL, NULL, sort_oct, sort_hex,
|
||||
&nrs[lnum - eap->line1].start_col_nr, NULL);
|
||||
*s2 = c;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2700,6 +2701,10 @@ do_write(eap)
|
||||
TRUE);
|
||||
do_modelines(0);
|
||||
}
|
||||
|
||||
/* Autocommands may have changed buffer names, esp. when
|
||||
* 'autochdir' is set. */
|
||||
fname = curbuf->b_sfname;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -6556,8 +6561,7 @@ typedef struct sign sign_T;
|
||||
struct sign
|
||||
{
|
||||
sign_T *sn_next; /* next sign in list */
|
||||
int sn_typenr; /* type number of sign (negative if not equal
|
||||
to name) */
|
||||
int sn_typenr; /* type number of sign */
|
||||
char_u *sn_name; /* name of sign */
|
||||
char_u *sn_icon; /* name of pixmap */
|
||||
#ifdef FEAT_SIGN_ICONS
|
||||
@@ -6569,7 +6573,7 @@ struct sign
|
||||
};
|
||||
|
||||
static sign_T *first_sign = NULL;
|
||||
static int last_sign_typenr = MAX_TYPENR; /* is decremented */
|
||||
static int next_sign_typenr = 1;
|
||||
|
||||
static int sign_cmd_idx __ARGS((char_u *begin_cmd, char_u *end_cmd));
|
||||
static void sign_list_defined __ARGS((sign_T *sp));
|
||||
@@ -6651,9 +6655,14 @@ ex_sign(eap)
|
||||
EMSG(_("E156: Missing sign name"));
|
||||
else
|
||||
{
|
||||
/* Isolate the sign name. If it's a number skip leading zeroes,
|
||||
* so that "099" and "99" are the same sign. But keep "0". */
|
||||
p = skiptowhite(arg);
|
||||
if (*p != NUL)
|
||||
*p++ = NUL;
|
||||
while (arg[0] == '0' && arg[1] != NUL)
|
||||
++arg;
|
||||
|
||||
sp_prev = NULL;
|
||||
for (sp = first_sign; sp != NULL; sp = sp->sn_next)
|
||||
{
|
||||
@@ -6666,46 +6675,52 @@ ex_sign(eap)
|
||||
/* ":sign define {name} ...": define a sign */
|
||||
if (sp == NULL)
|
||||
{
|
||||
sign_T *lp;
|
||||
int start = next_sign_typenr;
|
||||
|
||||
/* Allocate a new sign. */
|
||||
sp = (sign_T *)alloc_clear((unsigned)sizeof(sign_T));
|
||||
if (sp == NULL)
|
||||
return;
|
||||
|
||||
/* Check that next_sign_typenr is not already being used.
|
||||
* This only happens after wrapping around. Hopefully
|
||||
* another one got deleted and we can use its number. */
|
||||
for (lp = first_sign; lp != NULL; )
|
||||
{
|
||||
if (lp->sn_typenr == next_sign_typenr)
|
||||
{
|
||||
++next_sign_typenr;
|
||||
if (next_sign_typenr == MAX_TYPENR)
|
||||
next_sign_typenr = 1;
|
||||
if (next_sign_typenr == start)
|
||||
{
|
||||
vim_free(sp);
|
||||
EMSG(_("E612: Too many signs defined"));
|
||||
return;
|
||||
}
|
||||
lp = first_sign; /* start all over */
|
||||
continue;
|
||||
}
|
||||
lp = lp->sn_next;
|
||||
}
|
||||
|
||||
sp->sn_typenr = next_sign_typenr;
|
||||
if (++next_sign_typenr == MAX_TYPENR)
|
||||
next_sign_typenr = 1; /* wrap around */
|
||||
|
||||
sp->sn_name = vim_strsave(arg);
|
||||
if (sp->sn_name == NULL) /* out of memory */
|
||||
{
|
||||
vim_free(sp);
|
||||
return;
|
||||
}
|
||||
|
||||
/* add the new sign to the list of signs */
|
||||
if (sp_prev == NULL)
|
||||
first_sign = sp;
|
||||
else
|
||||
sp_prev->sn_next = sp;
|
||||
sp->sn_name = vim_strnsave(arg, (int)(p - arg));
|
||||
|
||||
/* If the name is a number use that for the typenr,
|
||||
* otherwise use a negative number. */
|
||||
if (VIM_ISDIGIT(*arg))
|
||||
sp->sn_typenr = atoi((char *)arg);
|
||||
else
|
||||
{
|
||||
sign_T *lp;
|
||||
int start = last_sign_typenr;
|
||||
|
||||
for (lp = first_sign; lp != NULL; lp = lp->sn_next)
|
||||
{
|
||||
if (lp->sn_typenr == last_sign_typenr)
|
||||
{
|
||||
--last_sign_typenr;
|
||||
if (last_sign_typenr == 0)
|
||||
last_sign_typenr = MAX_TYPENR;
|
||||
if (last_sign_typenr == start)
|
||||
{
|
||||
EMSG(_("E612: Too many signs defined"));
|
||||
return;
|
||||
}
|
||||
lp = first_sign;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
sp->sn_typenr = last_sign_typenr--;
|
||||
if (last_sign_typenr == 0)
|
||||
last_sign_typenr = MAX_TYPENR; /* wrap around */
|
||||
}
|
||||
}
|
||||
|
||||
/* set values for a defined sign. */
|
||||
@@ -6883,6 +6898,8 @@ ex_sign(eap)
|
||||
arg = skiptowhite(arg);
|
||||
if (*arg != NUL)
|
||||
*arg++ = NUL;
|
||||
while (sign_name[0] == '0' && sign_name[1] != NUL)
|
||||
++sign_name;
|
||||
}
|
||||
else if (STRNCMP(arg, "file=", 5) == 0)
|
||||
{
|
||||
|
||||
@@ -11,10 +11,6 @@
|
||||
* ex_cmds2.c: some more functions for command line commands
|
||||
*/
|
||||
|
||||
#if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
|
||||
# include "vimio.h" /* for mch_open(), must be before vim.h */
|
||||
#endif
|
||||
|
||||
#include "vim.h"
|
||||
#include "version.h"
|
||||
|
||||
|
||||
+100
-90
@@ -740,7 +740,7 @@ do_cmdline_cmd(cmd)
|
||||
* do_cmdline(): execute one Ex command line
|
||||
*
|
||||
* 1. Execute "cmdline" when it is not NULL.
|
||||
* If "cmdline" is NULL, or more lines are needed, getline() is used.
|
||||
* If "cmdline" is NULL, or more lines are needed, fgetline() is used.
|
||||
* 2. Split up in parts separated with '|'.
|
||||
*
|
||||
* This function can be called recursively!
|
||||
@@ -748,7 +748,7 @@ do_cmdline_cmd(cmd)
|
||||
* flags:
|
||||
* DOCMD_VERBOSE - The command will be included in the error message.
|
||||
* DOCMD_NOWAIT - Don't call wait_return() and friends.
|
||||
* DOCMD_REPEAT - Repeat execution until getline() returns NULL.
|
||||
* DOCMD_REPEAT - Repeat execution until fgetline() returns NULL.
|
||||
* DOCMD_KEYTYPED - Don't reset KeyTyped.
|
||||
* DOCMD_EXCRESET - Reset the exception environment (used for debugging).
|
||||
* DOCMD_KEEPLINE - Store first typed line (for repeating with ".").
|
||||
@@ -756,15 +756,15 @@ do_cmdline_cmd(cmd)
|
||||
* return FAIL if cmdline could not be executed, OK otherwise
|
||||
*/
|
||||
int
|
||||
do_cmdline(cmdline, getline, cookie, flags)
|
||||
do_cmdline(cmdline, fgetline, cookie, flags)
|
||||
char_u *cmdline;
|
||||
char_u *(*getline) __ARGS((int, void *, int));
|
||||
void *cookie; /* argument for getline() */
|
||||
char_u *(*fgetline) __ARGS((int, void *, int));
|
||||
void *cookie; /* argument for fgetline() */
|
||||
int flags;
|
||||
{
|
||||
char_u *next_cmdline; /* next cmd to execute */
|
||||
char_u *cmdline_copy = NULL; /* copy of cmd line */
|
||||
int used_getline = FALSE; /* used "getline" to obtain command */
|
||||
int used_getline = FALSE; /* used "fgetline" to obtain command */
|
||||
static int recursive = 0; /* recursive depth */
|
||||
int msg_didout_before_start = 0;
|
||||
int count = 0; /* line number count */
|
||||
@@ -782,14 +782,14 @@ do_cmdline(cmdline, getline, cookie, flags)
|
||||
struct msglist **saved_msg_list = NULL;
|
||||
struct msglist *private_msg_list;
|
||||
|
||||
/* "getline" and "cookie" passed to do_one_cmd() */
|
||||
/* "fgetline" and "cookie" passed to do_one_cmd() */
|
||||
char_u *(*cmd_getline) __ARGS((int, void *, int));
|
||||
void *cmd_cookie;
|
||||
struct loop_cookie cmd_loop_cookie;
|
||||
void *real_cookie;
|
||||
int getline_is_func;
|
||||
#else
|
||||
# define cmd_getline getline
|
||||
# define cmd_getline fgetline
|
||||
# define cmd_cookie cookie
|
||||
#endif
|
||||
static int call_depth = 0; /* recursiveness */
|
||||
@@ -829,10 +829,10 @@ do_cmdline(cmdline, getline, cookie, flags)
|
||||
cstack.cs_lflags = 0;
|
||||
ga_init2(&lines_ga, (int)sizeof(wcmd_T), 10);
|
||||
|
||||
real_cookie = getline_cookie(getline, cookie);
|
||||
real_cookie = getline_cookie(fgetline, cookie);
|
||||
|
||||
/* Inside a function use a higher nesting level. */
|
||||
getline_is_func = getline_equal(getline, cookie, get_func_line);
|
||||
getline_is_func = getline_equal(fgetline, cookie, get_func_line);
|
||||
if (getline_is_func && ex_nesting_level == func_level(real_cookie))
|
||||
++ex_nesting_level;
|
||||
|
||||
@@ -844,7 +844,7 @@ do_cmdline(cmdline, getline, cookie, flags)
|
||||
breakpoint = func_breakpoint(real_cookie);
|
||||
dbg_tick = func_dbg_tick(real_cookie);
|
||||
}
|
||||
else if (getline_equal(getline, cookie, getsourceline))
|
||||
else if (getline_equal(fgetline, cookie, getsourceline))
|
||||
{
|
||||
fname = sourcing_name;
|
||||
breakpoint = source_breakpoint(real_cookie);
|
||||
@@ -888,7 +888,8 @@ do_cmdline(cmdline, getline, cookie, flags)
|
||||
* KeyTyped is only set when calling vgetc(). Reset it here when not
|
||||
* calling vgetc() (sourced command lines).
|
||||
*/
|
||||
if (!(flags & DOCMD_KEYTYPED) && !getline_equal(getline, cookie, getexline))
|
||||
if (!(flags & DOCMD_KEYTYPED)
|
||||
&& !getline_equal(fgetline, cookie, getexline))
|
||||
KeyTyped = FALSE;
|
||||
|
||||
/*
|
||||
@@ -901,7 +902,7 @@ do_cmdline(cmdline, getline, cookie, flags)
|
||||
do
|
||||
{
|
||||
#ifdef FEAT_EVAL
|
||||
getline_is_func = getline_equal(getline, cookie, get_func_line);
|
||||
getline_is_func = getline_equal(fgetline, cookie, get_func_line);
|
||||
#endif
|
||||
|
||||
/* stop skipping cmds for an error msg after all endif/while/for */
|
||||
@@ -916,7 +917,7 @@ do_cmdline(cmdline, getline, cookie, flags)
|
||||
|
||||
/*
|
||||
* 1. If repeating a line in a loop, get a line from lines_ga.
|
||||
* 2. If no line given: Get an allocated line with getline().
|
||||
* 2. If no line given: Get an allocated line with fgetline().
|
||||
* 3. If a line is given: Make a copy, so we can mess with it.
|
||||
*/
|
||||
|
||||
@@ -945,12 +946,12 @@ do_cmdline(cmdline, getline, cookie, flags)
|
||||
}
|
||||
#ifdef FEAT_PROFILE
|
||||
else if (do_profiling == PROF_YES
|
||||
&& getline_equal(getline, cookie, getsourceline))
|
||||
&& getline_equal(fgetline, cookie, getsourceline))
|
||||
script_line_end();
|
||||
#endif
|
||||
|
||||
/* Check if a sourced file hit a ":finish" command. */
|
||||
if (source_finished(getline, cookie))
|
||||
if (source_finished(fgetline, cookie))
|
||||
{
|
||||
retval = FAIL;
|
||||
break;
|
||||
@@ -961,7 +962,7 @@ do_cmdline(cmdline, getline, cookie, flags)
|
||||
&& *dbg_tick != debug_tick)
|
||||
{
|
||||
*breakpoint = dbg_find_breakpoint(
|
||||
getline_equal(getline, cookie, getsourceline),
|
||||
getline_equal(fgetline, cookie, getsourceline),
|
||||
fname, sourcing_lnum);
|
||||
*dbg_tick = debug_tick;
|
||||
}
|
||||
@@ -976,7 +977,7 @@ do_cmdline(cmdline, getline, cookie, flags)
|
||||
dbg_breakpoint(fname, sourcing_lnum);
|
||||
/* Find next breakpoint. */
|
||||
*breakpoint = dbg_find_breakpoint(
|
||||
getline_equal(getline, cookie, getsourceline),
|
||||
getline_equal(fgetline, cookie, getsourceline),
|
||||
fname, sourcing_lnum);
|
||||
*dbg_tick = debug_tick;
|
||||
}
|
||||
@@ -985,7 +986,7 @@ do_cmdline(cmdline, getline, cookie, flags)
|
||||
{
|
||||
if (getline_is_func)
|
||||
func_line_start(real_cookie);
|
||||
else if (getline_equal(getline, cookie, getsourceline))
|
||||
else if (getline_equal(fgetline, cookie, getsourceline))
|
||||
script_line_start();
|
||||
}
|
||||
# endif
|
||||
@@ -994,7 +995,7 @@ do_cmdline(cmdline, getline, cookie, flags)
|
||||
if (cstack.cs_looplevel > 0)
|
||||
{
|
||||
/* Inside a while/for loop we need to store the lines and use them
|
||||
* again. Pass a different "getline" function to do_one_cmd()
|
||||
* again. Pass a different "fgetline" function to do_one_cmd()
|
||||
* below, so that it stores lines in or reads them from
|
||||
* "lines_ga". Makes it possible to define a function inside a
|
||||
* while/for loop. */
|
||||
@@ -1002,27 +1003,27 @@ do_cmdline(cmdline, getline, cookie, flags)
|
||||
cmd_cookie = (void *)&cmd_loop_cookie;
|
||||
cmd_loop_cookie.lines_gap = &lines_ga;
|
||||
cmd_loop_cookie.current_line = current_line;
|
||||
cmd_loop_cookie.getline = getline;
|
||||
cmd_loop_cookie.getline = fgetline;
|
||||
cmd_loop_cookie.cookie = cookie;
|
||||
cmd_loop_cookie.repeating = (current_line < lines_ga.ga_len);
|
||||
}
|
||||
else
|
||||
{
|
||||
cmd_getline = getline;
|
||||
cmd_getline = fgetline;
|
||||
cmd_cookie = cookie;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* 2. If no line given, get an allocated line with getline(). */
|
||||
/* 2. If no line given, get an allocated line with fgetline(). */
|
||||
if (next_cmdline == NULL)
|
||||
{
|
||||
/*
|
||||
* Need to set msg_didout for the first line after an ":if",
|
||||
* otherwise the ":if" will be overwritten.
|
||||
*/
|
||||
if (count == 1 && getline_equal(getline, cookie, getexline))
|
||||
if (count == 1 && getline_equal(fgetline, cookie, getexline))
|
||||
msg_didout = TRUE;
|
||||
if (getline == NULL || (next_cmdline = getline(':', cookie,
|
||||
if (fgetline == NULL || (next_cmdline = fgetline(':', cookie,
|
||||
#ifdef FEAT_EVAL
|
||||
cstack.cs_idx < 0 ? 0 : (cstack.cs_idx + 1) * 2
|
||||
#else
|
||||
@@ -1149,7 +1150,7 @@ do_cmdline(cmdline, getline, cookie, flags)
|
||||
* If the command was typed, remember it for the ':' register.
|
||||
* Do this AFTER executing the command to make :@: work.
|
||||
*/
|
||||
if (getline_equal(getline, cookie, getexline)
|
||||
if (getline_equal(fgetline, cookie, getexline)
|
||||
&& new_last_cmdline != NULL)
|
||||
{
|
||||
vim_free(last_cmdline);
|
||||
@@ -1170,7 +1171,7 @@ do_cmdline(cmdline, getline, cookie, flags)
|
||||
#ifdef FEAT_EVAL
|
||||
/* reset did_emsg for a function that is not aborted by an error */
|
||||
if (did_emsg && !force_abort
|
||||
&& getline_equal(getline, cookie, get_func_line)
|
||||
&& getline_equal(fgetline, cookie, get_func_line)
|
||||
&& !func_has_abort(real_cookie))
|
||||
did_emsg = FALSE;
|
||||
|
||||
@@ -1209,7 +1210,7 @@ do_cmdline(cmdline, getline, cookie, flags)
|
||||
if (breakpoint != NULL)
|
||||
{
|
||||
*breakpoint = dbg_find_breakpoint(
|
||||
getline_equal(getline, cookie, getsourceline),
|
||||
getline_equal(fgetline, cookie, getsourceline),
|
||||
fname,
|
||||
((wcmd_T *)lines_ga.ga_data)[current_line].lnum-1);
|
||||
*dbg_tick = debug_tick;
|
||||
@@ -1303,8 +1304,8 @@ do_cmdline(cmdline, getline, cookie, flags)
|
||||
#endif
|
||||
)
|
||||
&& !(did_emsg && used_getline
|
||||
&& (getline_equal(getline, cookie, getexmodeline)
|
||||
|| getline_equal(getline, cookie, getexline)))
|
||||
&& (getline_equal(fgetline, cookie, getexmodeline)
|
||||
|| getline_equal(fgetline, cookie, getexline)))
|
||||
&& (next_cmdline != NULL
|
||||
#ifdef FEAT_EVAL
|
||||
|| cstack.cs_idx >= 0
|
||||
@@ -1323,9 +1324,9 @@ do_cmdline(cmdline, getline, cookie, flags)
|
||||
* unclosed conditional.
|
||||
*/
|
||||
if (!got_int && !did_throw
|
||||
&& ((getline_equal(getline, cookie, getsourceline)
|
||||
&& !source_finished(getline, cookie))
|
||||
|| (getline_equal(getline, cookie, get_func_line)
|
||||
&& ((getline_equal(fgetline, cookie, getsourceline)
|
||||
&& !source_finished(fgetline, cookie))
|
||||
|| (getline_equal(fgetline, cookie, get_func_line)
|
||||
&& !func_has_ended(real_cookie))))
|
||||
{
|
||||
if (cstack.cs_flags[cstack.cs_idx] & CSF_TRY)
|
||||
@@ -1361,7 +1362,7 @@ do_cmdline(cmdline, getline, cookie, flags)
|
||||
/* If a missing ":endtry", ":endwhile", ":endfor", or ":endif" or a memory
|
||||
* lack was reported above and the error message is to be converted to an
|
||||
* exception, do this now after rewinding the cstack. */
|
||||
do_errthrow(&cstack, getline_equal(getline, cookie, get_func_line)
|
||||
do_errthrow(&cstack, getline_equal(fgetline, cookie, get_func_line)
|
||||
? (char_u *)"endfunction" : (char_u *)NULL);
|
||||
|
||||
if (trylevel == 0)
|
||||
@@ -1456,9 +1457,9 @@ do_cmdline(cmdline, getline, cookie, flags)
|
||||
*/
|
||||
if (did_throw)
|
||||
need_rethrow = TRUE;
|
||||
if ((getline_equal(getline, cookie, getsourceline)
|
||||
if ((getline_equal(fgetline, cookie, getsourceline)
|
||||
&& ex_nesting_level > source_level(real_cookie))
|
||||
|| (getline_equal(getline, cookie, get_func_line)
|
||||
|| (getline_equal(fgetline, cookie, get_func_line)
|
||||
&& ex_nesting_level > func_level(real_cookie) + 1))
|
||||
{
|
||||
if (!did_throw)
|
||||
@@ -1467,16 +1468,16 @@ do_cmdline(cmdline, getline, cookie, flags)
|
||||
else
|
||||
{
|
||||
/* When leaving a function, reduce nesting level. */
|
||||
if (getline_equal(getline, cookie, get_func_line))
|
||||
if (getline_equal(fgetline, cookie, get_func_line))
|
||||
--ex_nesting_level;
|
||||
/*
|
||||
* Go to debug mode when returning from a function in which we are
|
||||
* single-stepping.
|
||||
*/
|
||||
if ((getline_equal(getline, cookie, getsourceline)
|
||||
|| getline_equal(getline, cookie, get_func_line))
|
||||
if ((getline_equal(fgetline, cookie, getsourceline)
|
||||
|| getline_equal(fgetline, cookie, get_func_line))
|
||||
&& ex_nesting_level + 1 <= debug_break_level)
|
||||
do_debug(getline_equal(getline, cookie, getsourceline)
|
||||
do_debug(getline_equal(fgetline, cookie, getsourceline)
|
||||
? (char_u *)_("End of sourced file")
|
||||
: (char_u *)_("End of function"));
|
||||
}
|
||||
@@ -2878,8 +2879,10 @@ find_command(eap, full)
|
||||
}
|
||||
|
||||
#ifdef FEAT_USR_CMDS
|
||||
/* Look for a user defined command as a last resort */
|
||||
if (eap->cmdidx == CMD_SIZE && *eap->cmd >= 'A' && *eap->cmd <= 'Z')
|
||||
/* Look for a user defined command as a last resort. Let ":Print" be
|
||||
* overruled by a user defined command. */
|
||||
if ((eap->cmdidx == CMD_SIZE || eap->cmdidx == CMD_Print)
|
||||
&& *eap->cmd >= 'A' && *eap->cmd <= 'Z')
|
||||
{
|
||||
/* User defined commands may contain digits. */
|
||||
while (ASCII_ISALNUM(*p))
|
||||
@@ -4539,12 +4542,14 @@ expand_filename(eap, cmdlinep, errormsgp)
|
||||
else /* n == 2 */
|
||||
{
|
||||
expand_T xpc;
|
||||
int options = WILD_LIST_NOTFOUND|WILD_ADD_SLASH;
|
||||
|
||||
ExpandInit(&xpc);
|
||||
xpc.xp_context = EXPAND_FILES;
|
||||
if (p_wic)
|
||||
options += WILD_ICASE;
|
||||
p = ExpandOne(&xpc, eap->arg, NULL,
|
||||
WILD_LIST_NOTFOUND|WILD_ADD_SLASH,
|
||||
WILD_EXPAND_FREE);
|
||||
options, WILD_EXPAND_FREE);
|
||||
if (p == NULL)
|
||||
return FAIL;
|
||||
}
|
||||
@@ -5606,6 +5611,7 @@ ex_command(eap)
|
||||
int compl = EXPAND_NOTHING;
|
||||
char_u *compl_arg = NULL;
|
||||
int has_attr = (eap->arg[0] == '-');
|
||||
int name_len;
|
||||
|
||||
p = eap->arg;
|
||||
|
||||
@@ -5631,6 +5637,7 @@ ex_command(eap)
|
||||
return;
|
||||
}
|
||||
end = p;
|
||||
name_len = (int)(end - name);
|
||||
|
||||
/* If there is nothing after the name, and no attributes were specified,
|
||||
* we are listing commands
|
||||
@@ -5645,6 +5652,13 @@ ex_command(eap)
|
||||
EMSG(_("E183: User defined commands must start with an uppercase letter"));
|
||||
return;
|
||||
}
|
||||
else if ((name_len == 1 && *name == 'X')
|
||||
|| (name_len <= 4
|
||||
&& STRNCMP(name, "Next", name_len > 4 ? 4 : name_len) == 0))
|
||||
{
|
||||
EMSG(_("E841: Reserved name, cannot be used for user defined command"));
|
||||
return;
|
||||
}
|
||||
else
|
||||
uc_add_command(name, end - name, p, argt, def, flags, compl, compl_arg,
|
||||
eap->forceit);
|
||||
@@ -9414,7 +9428,7 @@ ex_findpat(eap)
|
||||
ex_ptag(eap)
|
||||
exarg_T *eap;
|
||||
{
|
||||
g_do_tagpreview = p_pvh;
|
||||
g_do_tagpreview = p_pvh; /* will be reset to 0 in ex_tag_cmd() */
|
||||
ex_tag_cmd(eap, cmdnames[eap->cmdidx].cmd_name + 1);
|
||||
}
|
||||
|
||||
@@ -9546,17 +9560,23 @@ find_cmdline_var(src, usedlen)
|
||||
#define SPEC_CFILE 4
|
||||
"<sfile>", /* ":so" file name */
|
||||
#define SPEC_SFILE 5
|
||||
"<slnum>", /* ":so" file line number */
|
||||
#define SPEC_SLNUM 6
|
||||
#ifdef FEAT_AUTOCMD
|
||||
"<afile>", /* autocommand file name */
|
||||
# define SPEC_AFILE 6
|
||||
# define SPEC_AFILE 7
|
||||
"<abuf>", /* autocommand buffer number */
|
||||
# define SPEC_ABUF 7
|
||||
# define SPEC_ABUF 8
|
||||
"<amatch>", /* autocommand match name */
|
||||
# define SPEC_AMATCH 8
|
||||
# define SPEC_AMATCH 9
|
||||
#endif
|
||||
#ifdef FEAT_CLIENTSERVER
|
||||
"<client>"
|
||||
# define SPEC_CLIENT 9
|
||||
# ifdef FEAT_AUTOCMD
|
||||
# define SPEC_CLIENT 10
|
||||
# else
|
||||
# define SPEC_CLIENT 7
|
||||
# endif
|
||||
#endif
|
||||
};
|
||||
|
||||
@@ -9581,6 +9601,7 @@ find_cmdline_var(src, usedlen)
|
||||
* '<cWORD>' to WORD under the cursor
|
||||
* '<cfile>' to path name under the cursor
|
||||
* '<sfile>' to sourced file name
|
||||
* '<slnum>' to sourced file line number
|
||||
* '<afile>' to file name for autocommand
|
||||
* '<abuf>' to buffer number for autocommand
|
||||
* '<amatch>' to matching name for autocommand
|
||||
@@ -9612,10 +9633,7 @@ eval_vars(src, srcstart, usedlen, lnump, errormsg, escaped)
|
||||
#ifdef FEAT_MODIFY_FNAME
|
||||
int skip_mod = FALSE;
|
||||
#endif
|
||||
|
||||
#if defined(FEAT_AUTOCMD) || defined(FEAT_CLIENTSERVER)
|
||||
char_u strbuf[30];
|
||||
#endif
|
||||
|
||||
*errormsg = NULL;
|
||||
if (escaped != NULL)
|
||||
@@ -9804,6 +9822,15 @@ eval_vars(src, srcstart, usedlen, lnump, errormsg, escaped)
|
||||
return NULL;
|
||||
}
|
||||
break;
|
||||
case SPEC_SLNUM: /* line in file for ":so" command */
|
||||
if (sourcing_name == NULL || sourcing_lnum == 0)
|
||||
{
|
||||
*errormsg = (char_u *)_("E842: no line number to use for \"<slnum>\"");
|
||||
return NULL;
|
||||
}
|
||||
sprintf((char *)strbuf, "%ld", (long)sourcing_lnum);
|
||||
result = strbuf;
|
||||
break;
|
||||
#if defined(FEAT_CLIENTSERVER)
|
||||
case SPEC_CLIENT: /* Source of last submitted input */
|
||||
sprintf((char *)strbuf, PRINTF_HEX_LONG_U,
|
||||
@@ -10736,7 +10763,7 @@ ses_fname(fd, buf, flagp)
|
||||
* Write a file name to the session file.
|
||||
* Takes care of the "slash" option in 'sessionoptions' and escapes special
|
||||
* characters.
|
||||
* Returns FAIL if writing fails.
|
||||
* Returns FAIL if writing fails or out of memory.
|
||||
*/
|
||||
static int
|
||||
ses_put_fname(fd, name, flagp)
|
||||
@@ -10745,49 +10772,32 @@ ses_put_fname(fd, name, flagp)
|
||||
unsigned *flagp;
|
||||
{
|
||||
char_u *sname;
|
||||
char_u *p;
|
||||
int retval = OK;
|
||||
int c;
|
||||
|
||||
sname = home_replace_save(NULL, name);
|
||||
if (sname != NULL)
|
||||
name = sname;
|
||||
while (*name != NUL)
|
||||
{
|
||||
#ifdef FEAT_MBYTE
|
||||
{
|
||||
int l;
|
||||
if (sname == NULL)
|
||||
return FAIL;
|
||||
|
||||
if (has_mbyte && (l = (*mb_ptr2len)(name)) > 1)
|
||||
{
|
||||
/* copy a multibyte char */
|
||||
while (--l >= 0)
|
||||
{
|
||||
if (putc(*name, fd) != *name)
|
||||
retval = FAIL;
|
||||
++name;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
c = *name++;
|
||||
if (c == '\\' && (*flagp & SSOP_SLASH))
|
||||
/* change a backslash to a forward slash */
|
||||
c = '/';
|
||||
else if ((vim_strchr(escape_chars, c) != NULL
|
||||
#ifdef BACKSLASH_IN_FILENAME
|
||||
&& c != '\\'
|
||||
#endif
|
||||
) || c == '#' || c == '%')
|
||||
{
|
||||
/* escape a special character with a backslash */
|
||||
if (putc('\\', fd) != '\\')
|
||||
retval = FAIL;
|
||||
}
|
||||
if (putc(c, fd) != c)
|
||||
retval = FAIL;
|
||||
if (*flagp & SSOP_SLASH)
|
||||
{
|
||||
/* change all backslashes to forward slashes */
|
||||
for (p = sname; *p != NUL; mb_ptr_adv(p))
|
||||
if (*p == '\\')
|
||||
*p = '/';
|
||||
}
|
||||
|
||||
/* escapse special characters */
|
||||
p = vim_strsave_fnameescape(sname, FALSE);
|
||||
vim_free(sname);
|
||||
if (p == NULL)
|
||||
return FAIL;
|
||||
|
||||
/* write the result */
|
||||
if (fputs((char *)p, fd) < 0)
|
||||
retval = FAIL;
|
||||
|
||||
vim_free(p);
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
||||
+42
-20
@@ -688,28 +688,35 @@ getcmdline(firstc, count, indent)
|
||||
p = get_expr_line();
|
||||
--textlock;
|
||||
restore_cmdline(&save_ccline);
|
||||
len = (int)STRLEN(p);
|
||||
|
||||
if (p != NULL && realloc_cmdbuff(len + 1) == OK)
|
||||
if (p != NULL)
|
||||
{
|
||||
ccline.cmdlen = len;
|
||||
STRCPY(ccline.cmdbuff, p);
|
||||
vim_free(p);
|
||||
len = (int)STRLEN(p);
|
||||
if (realloc_cmdbuff(len + 1) == OK)
|
||||
{
|
||||
ccline.cmdlen = len;
|
||||
STRCPY(ccline.cmdbuff, p);
|
||||
vim_free(p);
|
||||
|
||||
/* Restore the cursor or use the position set with
|
||||
* set_cmdline_pos(). */
|
||||
if (new_cmdpos > ccline.cmdlen)
|
||||
ccline.cmdpos = ccline.cmdlen;
|
||||
else
|
||||
ccline.cmdpos = new_cmdpos;
|
||||
/* Restore the cursor or use the position set with
|
||||
* set_cmdline_pos(). */
|
||||
if (new_cmdpos > ccline.cmdlen)
|
||||
ccline.cmdpos = ccline.cmdlen;
|
||||
else
|
||||
ccline.cmdpos = new_cmdpos;
|
||||
|
||||
KeyTyped = FALSE; /* Don't do p_wc completion. */
|
||||
redrawcmd();
|
||||
goto cmdline_changed;
|
||||
KeyTyped = FALSE; /* Don't do p_wc completion. */
|
||||
redrawcmd();
|
||||
goto cmdline_changed;
|
||||
}
|
||||
}
|
||||
}
|
||||
beep_flush();
|
||||
c = ESC;
|
||||
got_int = FALSE; /* don't abandon the command line */
|
||||
did_emsg = FALSE;
|
||||
emsg_on_display = FALSE;
|
||||
redrawcmd();
|
||||
goto cmdline_not_changed;
|
||||
}
|
||||
#endif
|
||||
else
|
||||
@@ -3343,10 +3350,14 @@ nextwild(xp, type, options)
|
||||
p2 = NULL;
|
||||
else
|
||||
{
|
||||
int use_options = options |
|
||||
WILD_HOME_REPLACE|WILD_ADD_SLASH|WILD_SILENT|WILD_ESCAPE;
|
||||
|
||||
if (p_wic)
|
||||
use_options += WILD_ICASE;
|
||||
p2 = ExpandOne(xp, p1,
|
||||
vim_strnsave(&ccline.cmdbuff[i], xp->xp_pattern_len),
|
||||
WILD_HOME_REPLACE|WILD_ADD_SLASH|WILD_SILENT|WILD_ESCAPE
|
||||
|options, type);
|
||||
use_options, type);
|
||||
vim_free(p1);
|
||||
/* longest match: make sure it is not shorter, happens with :help */
|
||||
if (p2 != NULL && type == WILD_LONGEST)
|
||||
@@ -3432,6 +3443,7 @@ nextwild(xp, type, options)
|
||||
* options = WILD_KEEP_ALL: don't remove 'wildignore' entries
|
||||
* options = WILD_SILENT: don't print warning messages
|
||||
* options = WILD_ESCAPE: put backslash before special chars
|
||||
* options = WILD_ICASE: ignore case for files
|
||||
*
|
||||
* The variables xp->xp_context and xp->xp_backslash must have been set!
|
||||
*/
|
||||
@@ -4365,6 +4377,7 @@ expand_cmdline(xp, str, col, matchcount, matches)
|
||||
char_u ***matches; /* return: array of pointers to matches */
|
||||
{
|
||||
char_u *file_str = NULL;
|
||||
int options = WILD_ADD_SLASH|WILD_SILENT;
|
||||
|
||||
if (xp->xp_context == EXPAND_UNSUCCESSFUL)
|
||||
{
|
||||
@@ -4383,9 +4396,11 @@ expand_cmdline(xp, str, col, matchcount, matches)
|
||||
if (file_str == NULL)
|
||||
return EXPAND_UNSUCCESSFUL;
|
||||
|
||||
if (p_wic)
|
||||
options += WILD_ICASE;
|
||||
|
||||
/* find all files that match the description */
|
||||
if (ExpandFromContext(xp, file_str, matchcount, matches,
|
||||
WILD_ADD_SLASH|WILD_SILENT) == FAIL)
|
||||
if (ExpandFromContext(xp, file_str, matchcount, matches, options) == FAIL)
|
||||
{
|
||||
*matchcount = 0;
|
||||
*matches = NULL;
|
||||
@@ -4437,7 +4452,7 @@ ExpandFromContext(xp, pat, num_file, file, options)
|
||||
char_u *pat;
|
||||
int *num_file;
|
||||
char_u ***file;
|
||||
int options;
|
||||
int options; /* EW_ flags */
|
||||
{
|
||||
#ifdef FEAT_CMDL_COMPL
|
||||
regmatch_T regmatch;
|
||||
@@ -4491,6 +4506,9 @@ ExpandFromContext(xp, pat, num_file, file, options)
|
||||
flags |= (EW_FILE | EW_PATH);
|
||||
else
|
||||
flags = (flags | EW_DIR) & ~EW_FILE;
|
||||
if (options & WILD_ICASE)
|
||||
flags |= EW_ICASE;
|
||||
|
||||
/* Expand wildcards, supporting %:h and the like. */
|
||||
ret = expand_wildcards_eval(&pat, num_file, file, flags);
|
||||
if (free_pat)
|
||||
@@ -4758,7 +4776,11 @@ expand_shellcmd(filepat, num_file, file, flagsarg)
|
||||
|| (pat[1] == '.' && vim_ispathsep(pat[2])))))
|
||||
path = (char_u *)".";
|
||||
else
|
||||
{
|
||||
path = vim_getenv((char_u *)"PATH", &mustfree);
|
||||
if (path == NULL)
|
||||
path = (char_u *)"";
|
||||
}
|
||||
|
||||
/*
|
||||
* Go over all directories in $PATH. Expand matches in that directory and
|
||||
|
||||
+61
-25
@@ -11,14 +11,6 @@
|
||||
* fileio.c: read from and write to a file
|
||||
*/
|
||||
|
||||
#if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
|
||||
# include "vimio.h" /* for lseek(), must be before vim.h */
|
||||
#endif
|
||||
|
||||
#if defined __EMX__
|
||||
# include "vimio.h" /* for mktemp(), CJW 1997-12-03 */
|
||||
#endif
|
||||
|
||||
#include "vim.h"
|
||||
|
||||
#if defined(__TANDEM) || defined(__MINT__)
|
||||
@@ -918,7 +910,7 @@ readfile(fname, sfname, from, lines_to_skip, lines_to_read, eap, flags)
|
||||
{
|
||||
/* Read the first line (and a bit more). Immediately rewind to
|
||||
* the start of the file. If the read() fails "len" is -1. */
|
||||
len = vim_read(fd, firstline, 80);
|
||||
len = read_eintr(fd, firstline, 80);
|
||||
lseek(fd, (off_t)0L, SEEK_SET);
|
||||
for (p = firstline; p < firstline + len; ++p)
|
||||
if (*p >= 0x80)
|
||||
@@ -1373,7 +1365,7 @@ retry:
|
||||
/*
|
||||
* Read bytes from the file.
|
||||
*/
|
||||
size = vim_read(fd, ptr, size);
|
||||
size = read_eintr(fd, ptr, size);
|
||||
}
|
||||
|
||||
if (size <= 0)
|
||||
@@ -4000,7 +3992,7 @@ buf_write(buf, fname, sfname, start, end, eap, append, forceit,
|
||||
#ifdef HAS_BW_FLAGS
|
||||
write_info.bw_flags = FIO_NOCONVERT;
|
||||
#endif
|
||||
while ((write_info.bw_len = vim_read(fd, copybuf,
|
||||
while ((write_info.bw_len = read_eintr(fd, copybuf,
|
||||
BUFSIZE)) > 0)
|
||||
{
|
||||
if (buf_write_bytes(&write_info) == FAIL)
|
||||
@@ -4813,7 +4805,7 @@ restore_backup:
|
||||
#ifdef HAS_BW_FLAGS
|
||||
write_info.bw_flags = FIO_NOCONVERT;
|
||||
#endif
|
||||
while ((write_info.bw_len = vim_read(fd, smallbuf,
|
||||
while ((write_info.bw_len = read_eintr(fd, smallbuf,
|
||||
SMBUFSIZE)) > 0)
|
||||
if (buf_write_bytes(&write_info) == FAIL)
|
||||
break;
|
||||
@@ -5334,7 +5326,7 @@ time_differs(t1, t2)
|
||||
|
||||
/*
|
||||
* Call write() to write a number of bytes to the file.
|
||||
* Also handles encryption and 'encoding' conversion.
|
||||
* Handles encryption and 'encoding' conversion.
|
||||
*
|
||||
* Return FAIL for failure, OK otherwise.
|
||||
*/
|
||||
@@ -5706,16 +5698,8 @@ buf_write_bytes(ip)
|
||||
crypt_encode(buf, len, buf);
|
||||
#endif
|
||||
|
||||
/* Repeat the write(), it may be interrupted by a signal. */
|
||||
while (len > 0)
|
||||
{
|
||||
wlen = vim_write(ip->bw_fd, buf, len);
|
||||
if (wlen <= 0) /* error! */
|
||||
return FAIL;
|
||||
len -= wlen;
|
||||
buf += wlen;
|
||||
}
|
||||
return OK;
|
||||
wlen = write_eintr(ip->bw_fd, buf, len);
|
||||
return (wlen < len) ? FAIL : OK;
|
||||
}
|
||||
|
||||
#ifdef FEAT_MBYTE
|
||||
@@ -6667,8 +6651,8 @@ vim_rename(from, to)
|
||||
return -1;
|
||||
}
|
||||
|
||||
while ((n = vim_read(fd_in, buffer, BUFSIZE)) > 0)
|
||||
if (vim_write(fd_out, buffer, n) != n)
|
||||
while ((n = read_eintr(fd_in, buffer, BUFSIZE)) > 0)
|
||||
if (write_eintr(fd_out, buffer, n) != n)
|
||||
{
|
||||
errmsg = _("E208: Error writing to \"%s\"");
|
||||
break;
|
||||
@@ -10342,3 +10326,55 @@ file_pat_to_reg_pat(pat, pat_end, allow_dirs, no_bslash)
|
||||
}
|
||||
return reg_pat;
|
||||
}
|
||||
|
||||
#if defined(EINTR) || defined(PROTO)
|
||||
/*
|
||||
* Version of read() that retries when interrupted by EINTR (possibly
|
||||
* by a SIGWINCH).
|
||||
*/
|
||||
long
|
||||
read_eintr(fd, buf, bufsize)
|
||||
int fd;
|
||||
void *buf;
|
||||
size_t bufsize;
|
||||
{
|
||||
long ret;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
ret = vim_read(fd, buf, bufsize);
|
||||
if (ret >= 0 || errno != EINTR)
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* Version of write() that retries when interrupted by EINTR (possibly
|
||||
* by a SIGWINCH).
|
||||
*/
|
||||
long
|
||||
write_eintr(fd, buf, bufsize)
|
||||
int fd;
|
||||
void *buf;
|
||||
size_t bufsize;
|
||||
{
|
||||
long ret = 0;
|
||||
long wlen;
|
||||
|
||||
/* Repeat the write() so long it didn't fail, other than being interrupted
|
||||
* by a signal. */
|
||||
while (ret < (long)bufsize)
|
||||
{
|
||||
wlen = vim_write(fd, (char *)buf + ret, bufsize - ret);
|
||||
if (wlen < 0)
|
||||
{
|
||||
if (errno != EINTR)
|
||||
break;
|
||||
}
|
||||
else
|
||||
ret += wlen;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
+80
-50
@@ -3168,6 +3168,7 @@ do_map(maptype, arg, mode, abbrev)
|
||||
int expr = FALSE;
|
||||
#endif
|
||||
int noremap;
|
||||
char_u *orig_rhs;
|
||||
|
||||
keys = arg;
|
||||
map_table = maphash;
|
||||
@@ -3266,6 +3267,7 @@ do_map(maptype, arg, mode, abbrev)
|
||||
}
|
||||
if (*p != NUL)
|
||||
*p++ = NUL;
|
||||
|
||||
p = skipwhite(p);
|
||||
rhs = p;
|
||||
hasarg = (*rhs != NUL);
|
||||
@@ -3288,6 +3290,7 @@ do_map(maptype, arg, mode, abbrev)
|
||||
*/
|
||||
if (haskey)
|
||||
keys = replace_termcodes(keys, &keys_buf, TRUE, TRUE, special);
|
||||
orig_rhs = rhs;
|
||||
if (hasarg)
|
||||
{
|
||||
if (STRICMP(rhs, "<nop>") == 0) /* "<Nop>" means nothing */
|
||||
@@ -3298,7 +3301,7 @@ do_map(maptype, arg, mode, abbrev)
|
||||
|
||||
#ifdef FEAT_FKMAP
|
||||
/*
|
||||
* when in right-to-left mode and alternate keymap option set,
|
||||
* When in right-to-left mode and alternate keymap option set,
|
||||
* reverse the character flow in the rhs in Farsi.
|
||||
*/
|
||||
if (p_altkeymap && curwin->w_p_rl)
|
||||
@@ -3556,6 +3559,8 @@ do_map(maptype, arg, mode, abbrev)
|
||||
}
|
||||
vim_free(mp->m_str);
|
||||
mp->m_str = newstr;
|
||||
vim_free(mp->m_orig_str);
|
||||
mp->m_orig_str = vim_strsave(orig_rhs);
|
||||
mp->m_noremap = noremap;
|
||||
mp->m_silent = silent;
|
||||
mp->m_mode = mode;
|
||||
@@ -3633,10 +3638,12 @@ do_map(maptype, arg, mode, abbrev)
|
||||
|
||||
mp->m_keys = vim_strsave(keys);
|
||||
mp->m_str = vim_strsave(rhs);
|
||||
mp->m_orig_str = vim_strsave(orig_rhs);
|
||||
if (mp->m_keys == NULL || mp->m_str == NULL)
|
||||
{
|
||||
vim_free(mp->m_keys);
|
||||
vim_free(mp->m_str);
|
||||
vim_free(mp->m_orig_str);
|
||||
vim_free(mp);
|
||||
retval = 4; /* no mem */
|
||||
goto theend;
|
||||
@@ -3682,6 +3689,7 @@ map_free(mpp)
|
||||
mp = *mpp;
|
||||
vim_free(mp->m_keys);
|
||||
vim_free(mp->m_str);
|
||||
vim_free(mp->m_orig_str);
|
||||
*mpp = mp->m_next;
|
||||
vim_free(mp);
|
||||
}
|
||||
@@ -3851,12 +3859,57 @@ map_clear_int(buf, mode, local, abbr)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Return characters to represent the map mode in an allocated string.
|
||||
* Returns NULL when out of memory.
|
||||
*/
|
||||
char_u *
|
||||
map_mode_to_chars(mode)
|
||||
int mode;
|
||||
{
|
||||
garray_T mapmode;
|
||||
|
||||
ga_init2(&mapmode, 1, 7);
|
||||
|
||||
if ((mode & (INSERT + CMDLINE)) == INSERT + CMDLINE)
|
||||
ga_append(&mapmode, '!'); /* :map! */
|
||||
else if (mode & INSERT)
|
||||
ga_append(&mapmode, 'i'); /* :imap */
|
||||
else if (mode & LANGMAP)
|
||||
ga_append(&mapmode, 'l'); /* :lmap */
|
||||
else if (mode & CMDLINE)
|
||||
ga_append(&mapmode, 'c'); /* :cmap */
|
||||
else if ((mode & (NORMAL + VISUAL + SELECTMODE + OP_PENDING))
|
||||
== NORMAL + VISUAL + SELECTMODE + OP_PENDING)
|
||||
ga_append(&mapmode, ' '); /* :map */
|
||||
else
|
||||
{
|
||||
if (mode & NORMAL)
|
||||
ga_append(&mapmode, 'n'); /* :nmap */
|
||||
if (mode & OP_PENDING)
|
||||
ga_append(&mapmode, 'o'); /* :omap */
|
||||
if ((mode & (VISUAL + SELECTMODE)) == VISUAL + SELECTMODE)
|
||||
ga_append(&mapmode, 'v'); /* :vmap */
|
||||
else
|
||||
{
|
||||
if (mode & VISUAL)
|
||||
ga_append(&mapmode, 'x'); /* :xmap */
|
||||
if (mode & SELECTMODE)
|
||||
ga_append(&mapmode, 's'); /* :smap */
|
||||
}
|
||||
}
|
||||
|
||||
ga_append(&mapmode, NUL);
|
||||
return (char_u *)mapmode.ga_data;
|
||||
}
|
||||
|
||||
static void
|
||||
showmap(mp, local)
|
||||
mapblock_T *mp;
|
||||
int local; /* TRUE for buffer-local map */
|
||||
{
|
||||
int len = 1;
|
||||
int len = 1;
|
||||
char_u *mapchars;
|
||||
|
||||
if (msg_didout || msg_silent != 0)
|
||||
{
|
||||
@@ -3864,49 +3917,15 @@ showmap(mp, local)
|
||||
if (got_int) /* 'q' typed at MORE prompt */
|
||||
return;
|
||||
}
|
||||
if ((mp->m_mode & (INSERT + CMDLINE)) == INSERT + CMDLINE)
|
||||
msg_putchar('!'); /* :map! */
|
||||
else if (mp->m_mode & INSERT)
|
||||
msg_putchar('i'); /* :imap */
|
||||
else if (mp->m_mode & LANGMAP)
|
||||
msg_putchar('l'); /* :lmap */
|
||||
else if (mp->m_mode & CMDLINE)
|
||||
msg_putchar('c'); /* :cmap */
|
||||
else if ((mp->m_mode & (NORMAL + VISUAL + SELECTMODE + OP_PENDING))
|
||||
== NORMAL + VISUAL + SELECTMODE + OP_PENDING)
|
||||
msg_putchar(' '); /* :map */
|
||||
else
|
||||
|
||||
mapchars = map_mode_to_chars(mp->m_mode);
|
||||
if (mapchars != NULL)
|
||||
{
|
||||
len = 0;
|
||||
if (mp->m_mode & NORMAL)
|
||||
{
|
||||
msg_putchar('n'); /* :nmap */
|
||||
++len;
|
||||
}
|
||||
if (mp->m_mode & OP_PENDING)
|
||||
{
|
||||
msg_putchar('o'); /* :omap */
|
||||
++len;
|
||||
}
|
||||
if ((mp->m_mode & (VISUAL + SELECTMODE)) == VISUAL + SELECTMODE)
|
||||
{
|
||||
msg_putchar('v'); /* :vmap */
|
||||
++len;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mp->m_mode & VISUAL)
|
||||
{
|
||||
msg_putchar('x'); /* :xmap */
|
||||
++len;
|
||||
}
|
||||
if (mp->m_mode & SELECTMODE)
|
||||
{
|
||||
msg_putchar('s'); /* :smap */
|
||||
++len;
|
||||
}
|
||||
}
|
||||
msg_puts(mapchars);
|
||||
len = (int)STRLEN(mapchars);
|
||||
vim_free(mapchars);
|
||||
}
|
||||
|
||||
while (++len <= 3)
|
||||
msg_putchar(' ');
|
||||
|
||||
@@ -3931,8 +3950,7 @@ showmap(mp, local)
|
||||
msg_putchar(' ');
|
||||
|
||||
/* Use FALSE below if we only want things like <Up> to show up as such on
|
||||
* the rhs, and not M-x etc, TRUE gets both -- webb
|
||||
*/
|
||||
* the rhs, and not M-x etc, TRUE gets both -- webb */
|
||||
if (*mp->m_str == NUL)
|
||||
msg_puts_attr((char_u *)"<Nop>", hl_attr(HLF_8));
|
||||
else
|
||||
@@ -4995,19 +5013,21 @@ check_map_keycodes()
|
||||
sourcing_name = save_name;
|
||||
}
|
||||
|
||||
#ifdef FEAT_EVAL
|
||||
#if defined(FEAT_EVAL) || defined(PROTO)
|
||||
/*
|
||||
* Check the string "keys" against the lhs of all mappings
|
||||
* Return pointer to rhs of mapping (mapblock->m_str)
|
||||
* NULL otherwise
|
||||
* Check the string "keys" against the lhs of all mappings.
|
||||
* Return pointer to rhs of mapping (mapblock->m_str).
|
||||
* NULL when no mapping found.
|
||||
*/
|
||||
char_u *
|
||||
check_map(keys, mode, exact, ign_mod, abbr)
|
||||
check_map(keys, mode, exact, ign_mod, abbr, mp_ptr, local_ptr)
|
||||
char_u *keys;
|
||||
int mode;
|
||||
int exact; /* require exact match */
|
||||
int ign_mod; /* ignore preceding modifier */
|
||||
int abbr; /* do abbreviations */
|
||||
mapblock_T **mp_ptr; /* return: pointer to mapblock or NULL */
|
||||
int *local_ptr; /* return: buffer-local mapping or NULL */
|
||||
{
|
||||
int hash;
|
||||
int len, minlen;
|
||||
@@ -5062,7 +5082,17 @@ check_map(keys, mode, exact, ign_mod, abbr)
|
||||
minlen = mp->m_keylen - 3;
|
||||
}
|
||||
if (STRNCMP(s, keys, minlen) == 0)
|
||||
{
|
||||
if (mp_ptr != NULL)
|
||||
*mp_ptr = mp;
|
||||
if (local_ptr != NULL)
|
||||
#ifdef FEAT_LOCALMAP
|
||||
*local_ptr = local;
|
||||
#else
|
||||
*local_ptr = 0;
|
||||
#endif
|
||||
return mp->m_str;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+6
-1
@@ -510,8 +510,13 @@ EXTERN VimClipboard clip_star; /* PRIMARY selection in X11 */
|
||||
EXTERN VimClipboard clip_plus; /* CLIPBOARD selection in X11 */
|
||||
# else
|
||||
# define clip_plus clip_star /* there is only one clipboard */
|
||||
# define ONE_CLIPBOARD
|
||||
# endif
|
||||
EXTERN int clip_unnamed INIT(= FALSE);
|
||||
|
||||
#define CLIP_UNNAMED 1
|
||||
#define CLIP_UNNAMED_PLUS 2
|
||||
EXTERN int clip_unnamed INIT(= 0); /* above two values or'ed */
|
||||
|
||||
EXTERN int clip_autoselect INIT(= FALSE);
|
||||
EXTERN int clip_autoselectml INIT(= FALSE);
|
||||
EXTERN int clip_html INIT(= FALSE);
|
||||
|
||||
@@ -109,8 +109,18 @@ gui_start()
|
||||
|
||||
#if defined(FEAT_GUI_GTK) || defined(FEAT_GUI_X11)
|
||||
if (gui.in_use)
|
||||
{
|
||||
# ifdef FEAT_EVAL
|
||||
Window x11_window;
|
||||
Display *x11_display;
|
||||
|
||||
if (gui_get_x11_windis(&x11_window, &x11_display) == OK)
|
||||
set_vim_var_nr(VV_WINDOWID, (long)x11_window);
|
||||
# endif
|
||||
|
||||
/* Display error messages in a dialog now. */
|
||||
display_errors();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(MAY_FORK) && !defined(__QNXNTO__)
|
||||
|
||||
+4
-2
@@ -1287,6 +1287,9 @@ gui_mch_dialog(int type, /* type of dialog */
|
||||
entry = gtk_entry_new();
|
||||
gtk_widget_show(entry);
|
||||
|
||||
/* Make Enter work like pressing OK. */
|
||||
gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE);
|
||||
|
||||
text = CONVERT_TO_UTF8(textfield);
|
||||
gtk_entry_set_text(GTK_ENTRY(entry), (const char *)text);
|
||||
CONVERT_TO_UTF8_FREE(text);
|
||||
@@ -1795,7 +1798,6 @@ find_replace_cb(GtkWidget *widget UNUSED, gpointer data)
|
||||
char_u *repl_text;
|
||||
gboolean direction_down;
|
||||
SharedFindReplace *sfr;
|
||||
int rc;
|
||||
|
||||
flags = (int)(long)data; /* avoid a lint warning here */
|
||||
|
||||
@@ -1821,7 +1823,7 @@ find_replace_cb(GtkWidget *widget UNUSED, gpointer data)
|
||||
|
||||
repl_text = CONVERT_FROM_UTF8(repl_text);
|
||||
find_text = CONVERT_FROM_UTF8(find_text);
|
||||
rc = gui_do_findrepl(flags, find_text, repl_text, direction_down);
|
||||
gui_do_findrepl(flags, find_text, repl_text, direction_down);
|
||||
CONVERT_FROM_UTF8_FREE(repl_text);
|
||||
CONVERT_FROM_UTF8_FREE(find_text);
|
||||
}
|
||||
|
||||
+9
-4
@@ -289,13 +289,13 @@ typedef struct tagNMTTDISPINFOW {
|
||||
|
||||
#ifdef FEAT_MENU
|
||||
static UINT s_menu_id = 100;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Use the system font for dialogs and tear-off menus. Remove this line to
|
||||
* use DLG_FONT_NAME.
|
||||
*/
|
||||
# define USE_SYSMENU_FONT
|
||||
#endif
|
||||
#define USE_SYSMENU_FONT
|
||||
|
||||
#define VIM_NAME "vim"
|
||||
#define VIM_CLASS "Vim"
|
||||
@@ -1260,7 +1260,7 @@ gui_mch_prepare(int *argc, char **argv)
|
||||
|
||||
/* try and load the user32.dll library and get the entry points for
|
||||
* multi-monitor-support. */
|
||||
if ((user32_lib = LoadLibrary("User32.dll")) != NULL)
|
||||
if ((user32_lib = vimLoadLib("User32.dll")) != NULL)
|
||||
{
|
||||
pMonitorFromWindow = (TMonitorFromWindow)GetProcAddress(user32_lib,
|
||||
"MonitorFromWindow");
|
||||
@@ -1573,6 +1573,11 @@ gui_mch_init(void)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef FEAT_EVAL
|
||||
/* set the v:windowid variable */
|
||||
set_vim_var_nr(VV_WINDOWID, (long)s_hwnd);
|
||||
#endif
|
||||
|
||||
theend:
|
||||
/* Display any pending error messages */
|
||||
display_errors();
|
||||
@@ -4188,7 +4193,7 @@ gui_mch_set_foreground(void)
|
||||
static void
|
||||
dyn_imm_load(void)
|
||||
{
|
||||
hLibImm = LoadLibrary("imm32.dll");
|
||||
hLibImm = vimLoadLib("imm32.dll");
|
||||
if (hLibImm == NULL)
|
||||
return;
|
||||
|
||||
|
||||
+4
-2
@@ -1810,7 +1810,8 @@ process_message(void)
|
||||
* mapped we want to use the mapping instead. */
|
||||
if (vk == VK_F10
|
||||
&& gui.menu_is_active
|
||||
&& check_map(k10, State, FALSE, TRUE, FALSE) == NULL)
|
||||
&& check_map(k10, State, FALSE, TRUE, FALSE,
|
||||
NULL, NULL) == NULL)
|
||||
break;
|
||||
#endif
|
||||
if (GetKeyState(VK_SHIFT) & 0x8000)
|
||||
@@ -1924,7 +1925,8 @@ process_message(void)
|
||||
/* Check for <F10>: Default effect is to select the menu. When <F10> is
|
||||
* mapped we need to stop it here to avoid strange effects (e.g., for the
|
||||
* key-up event) */
|
||||
if (vk != VK_F10 || check_map(k10, State, FALSE, TRUE, FALSE) == NULL)
|
||||
if (vk != VK_F10 || check_map(k10, State, FALSE, TRUE, FALSE,
|
||||
NULL, NULL) == NULL)
|
||||
#endif
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
|
||||
@@ -2895,6 +2895,11 @@ gui_mch_wait_for_chars(wtime)
|
||||
focus = gui.in_focus;
|
||||
}
|
||||
|
||||
#if defined(FEAT_NETBEANS_INTG)
|
||||
/* Process any queued netbeans messages. */
|
||||
netbeans_parse_messages();
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Don't use gui_mch_update() because then we will spin-lock until a
|
||||
* char arrives, instead we use XtAppProcessEvent() to hang until an
|
||||
|
||||
@@ -13,16 +13,11 @@
|
||||
|
||||
#if defined(FEAT_CSCOPE) || defined(PROTO)
|
||||
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <assert.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#if defined(UNIX)
|
||||
# include <sys/wait.h>
|
||||
#else
|
||||
/* not UNIX, must be WIN32 */
|
||||
# include "vimio.h"
|
||||
#endif
|
||||
#include "if_cscope.h"
|
||||
|
||||
|
||||
+1
-1
@@ -49,7 +49,7 @@ static const char LUAVIM_FREE[] = "luaV_free";
|
||||
# define symbol_from_dll dlsym
|
||||
# define close_dll dlclose
|
||||
#else
|
||||
# define load_dll LoadLibrary
|
||||
# define load_dll vimLoadLib
|
||||
# define symbol_from_dll GetProcAddress
|
||||
# define close_dll FreeLibrary
|
||||
#endif
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user