summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2006-04-27 00:02:13 +0000
committerBram Moolenaar <Bram@vim.org>2006-04-27 00:02:13 +0000
commitf193fffd16563cfbe7c02a21e19c8bb11707581d (patch)
tree4bae3092421aa986103b8000b1012989a9ea49e6
parent551dbcc9b604c2992f908fb475e797fcc116315b (diff)
updated for version 7.0f02v7.0f02
-rw-r--r--runtime/autoload/htmlcomplete.vim120
-rw-r--r--runtime/autoload/netrw.vim8
-rw-r--r--runtime/autoload/sqlcomplete.vim111
-rw-r--r--runtime/autoload/vimball.vim153
-rw-r--r--runtime/autoload/xml/html32.vim14
-rw-r--r--runtime/autoload/xml/html401f.vim22
-rw-r--r--runtime/autoload/xml/html401s.vim20
-rw-r--r--runtime/autoload/xml/html401t.vim20
-rw-r--r--runtime/autoload/xml/html40f.vim30
-rw-r--r--runtime/autoload/xml/html40s.vim20
-rw-r--r--runtime/autoload/xml/html40t.vim20
-rw-r--r--runtime/autoload/xml/xhtml10f.vim2
-rw-r--r--runtime/autoload/xml/xhtml10s.vim2
-rw-r--r--runtime/autoload/xml/xhtml10t.vim2
-rw-r--r--runtime/autoload/xml/xhtml11.vim2
-rw-r--r--runtime/doc/eval.txt5
-rw-r--r--runtime/doc/insert.txt5
-rw-r--r--runtime/doc/options.txt16
-rw-r--r--runtime/doc/pi_netrw.txt7
-rw-r--r--runtime/doc/sql.txt26
-rw-r--r--runtime/doc/syntax.txt35
-rw-r--r--runtime/doc/tabpage.txt5
-rw-r--r--runtime/doc/tags5
-rw-r--r--runtime/doc/todo.txt13
-rw-r--r--runtime/doc/version7.txt48
-rw-r--r--runtime/ftplugin/debchangelog.vim52
-rw-r--r--runtime/ftplugin/html.vim11
-rw-r--r--runtime/ftplugin/sql.vim51
-rw-r--r--runtime/indent/make.vim151
-rw-r--r--runtime/plugin/vimballPlugin.vim5
-rw-r--r--runtime/syntax/baan.vim1855
-rw-r--r--runtime/syntax/smcl.vim10
-rw-r--r--runtime/syntax/stata.vim18
-rw-r--r--runtime/syntax/vim.vim8
-rw-r--r--src/Make_mvc.mak2
-rw-r--r--src/buffer.c11
-rw-r--r--src/edit.c24
-rw-r--r--src/eval.c13
-rw-r--r--src/ex_docmd.c4
-rw-r--r--src/feature.h5
-rw-r--r--src/fileio.c25
-rw-r--r--src/getchar.c23
-rw-r--r--src/gui.c13
-rw-r--r--src/gui.h8
-rw-r--r--src/gui_gtk_x11.c10
-rw-r--r--src/gui_motif.c47
-rw-r--r--src/gui_w48.c8
-rw-r--r--src/normal.c4
-rw-r--r--src/ops.c36
-rw-r--r--src/os_mswin.c26
-rw-r--r--src/proto/buffer.pro134
-rw-r--r--src/proto/charset.pro108
-rw-r--r--src/proto/getchar.pro123
-rw-r--r--src/proto/normal.pro48
-rw-r--r--src/proto/ops.pro117
-rw-r--r--src/spell.c14
-rw-r--r--src/syntax.c8
-rw-r--r--src/version.h6
-rw-r--r--src/vim.h3
59 files changed, 3039 insertions, 653 deletions
diff --git a/runtime/autoload/htmlcomplete.vim b/runtime/autoload/htmlcomplete.vim
index 79eb9a631d..2170e21a90 100644
--- a/runtime/autoload/htmlcomplete.vim
+++ b/runtime/autoload/htmlcomplete.vim
@@ -127,8 +127,6 @@ function! htmlcomplete#CompleteTags(findstart, base)
let res2 = []
" a:base is very short - we need context
let context = b:compl_context
- let g:ab = a:base
- let g:co = context
" Check if we should do CSS completion inside of <style> tag
" or JS completion inside of <script> tag or PHP completion in case of <?
" tag AND &ft==php
@@ -155,6 +153,9 @@ function! htmlcomplete#CompleteTags(findstart, base)
if exists("b:entitiescompl")
unlet! b:entitiescompl
+ if !exists("b:html_doctype")
+ call htmlcomplete#CheckDoctype()
+ endif
if !exists("b:html_omni")
"runtime! autoload/xml/xhtml10s.vim
call htmlcomplete#LoadData()
@@ -500,7 +501,10 @@ function! htmlcomplete#CompleteTags(findstart, base)
let sbase = matchstr(context, '.*\ze\s.*')
" Load data {{{
- if !exists("b:html_omni_gen")
+ if !exists("b:html_doctype")
+ call htmlcomplete#CheckDoctype()
+ endif
+ if !exists("b:html_omni")
call htmlcomplete#LoadData()
endif
" }}}
@@ -526,18 +530,31 @@ function! htmlcomplete#CompleteTags(findstart, base)
if has_key(b:html_omni['vimxmlattrinfo'], item)
let m_menu = b:html_omni['vimxmlattrinfo'][item][0]
let m_info = b:html_omni['vimxmlattrinfo'][item][1]
- if m_menu !~ 'Bool'
- let item .= '="'
- endif
else
let m_menu = ''
let m_info = ''
+ endif
+ if len(b:html_omni[tag][1][item]) > 0 && b:html_omni[tag][1][item][0] =~ '^\(BOOL\|'.item.'\)$'
+ let item = item
+ let m_menu = 'Bool'
+ else
let item .= '="'
endif
let final_menu += [{'word':item, 'menu':m_menu, 'info':m_info}]
endfor
else
- let final_menu = map(menu, 'v:val."=\""')
+ let final_menu = []
+ for i in range(len(menu))
+ let item = menu[i]
+ if len(b:html_omni[tag][1][item]) > 0 && b:html_omni[tag][1][item][0] =~ '^\(BOOL\|'.item.'\)$'
+ let item = item
+ else
+ let item .= '="'
+ endif
+ let final_menu += [item]
+ endfor
+ return final_menu
+
endif
return final_menu
@@ -555,6 +572,9 @@ function! htmlcomplete#CompleteTags(findstart, base)
endif
" }}}
" Load data {{{
+ if !exists("b:html_doctype")
+ call htmlcomplete#CheckDoctype()
+ endif
if !exists("b:html_omni")
"runtime! autoload/xml/xhtml10s.vim
call htmlcomplete#LoadData()
@@ -585,7 +605,7 @@ function! htmlcomplete#CompleteTags(findstart, base)
let context = tolower(context)
endif
" Handle XML keywords: DOCTYPE and CDATA.
- if opentag == '' || opentag ==? 'head'
+ if opentag == ''
let tags += [
\ '!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">',
\ '!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">',
@@ -610,7 +630,6 @@ function! htmlcomplete#CompleteTags(findstart, base)
endif
endfor
let menu = res + res2
- let g:me = menu
if has_key(b:html_omni, 'vimxmltaginfo')
let final_menu = []
for i in range(len(menu))
@@ -656,23 +675,82 @@ function! htmlcomplete#LoadData() " {{{
exe 'let b:html_omni = g:xmldata_'.b:html_omni_flavor
else
exe 'runtime! autoload/xml/'.b:html_omni_flavor.'.vim'
+ exe 'let b:html_omni = g:xmldata_'.b:html_omni_flavor
endif
- " This repetition is necessary because we don't know if
- " b:html_omni_flavor file exists and was sourced
- " Proper checking for files would require iterating through 'rtp'
- " and could introduce OS dependent mess.
- if !exists("g:xmldata_".b:html_omni_flavor)
- if &filetype == 'html'
+endfunction
+" }}}
+function! htmlcomplete#CheckDoctype() " {{{
+ if exists('b:html_omni_flavor')
+ let old_flavor = b:html_omni_flavor
+ else
+ let old_flavor = ''
+ endif
+ let i = 1
+ while i < 10 && i < line("$")
+ let line = getline(i)
+ if line =~ '<!DOCTYPE.*\<DTD HTML 3\.2'
+ let b:html_omni_flavor = 'html32'
+ let b:html_doctype = 1
+ break
+ elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.0 Transitional'
+ let b:html_omni_flavor = 'html40t'
+ let b:html_doctype = 1
+ break
+ elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.0 Frameset'
+ let b:html_omni_flavor = 'html40f'
+ let b:html_doctype = 1
+ break
+ elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.0'
+ let b:html_omni_flavor = 'html40s'
+ let b:html_doctype = 1
+ break
+ elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.01 Transitional'
let b:html_omni_flavor = 'html401t'
- else
+ let b:html_doctype = 1
+ break
+ elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.01 Frameset'
+ let b:html_omni_flavor = 'html401f'
+ let b:html_doctype = 1
+ break
+ elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.01'
+ let b:html_omni_flavor = 'html401s'
+ let b:html_doctype = 1
+ break
+ elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.0 Transitional'
+ let b:html_omni_flavor = 'xhtml10t'
+ let b:html_doctype = 1
+ break
+ elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.0 Frameset'
+ let b:html_omni_flavor = 'xhtml10f'
+ let b:html_doctype = 1
+ break
+ elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.0 Strict'
let b:html_omni_flavor = 'xhtml10s'
+ let b:html_doctype = 1
+ break
+ elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.1'
+ let b:html_omni_flavor = 'xhtml11'
+ let b:html_doctype = 1
+ break
endif
- endif
- if exists('g:xmldata_'.b:html_omni_flavor)
- exe 'let b:html_omni = g:xmldata_'.b:html_omni_flavor
+ let i += 1
+ endwhile
+ if !exists("b:html_doctype")
+ return
else
- exe 'runtime! autoload/xml/'.b:html_omni_flavor.'.vim'
- exe 'let b:html_omni = g:xmldata_'.b:html_omni_flavor
+ " Tie g:xmldata with b:html_omni this way we need to sourca data file only
+ " once, not every time per buffer.
+ if old_flavor == b:html_omni_flavor
+ return
+ else
+ if exists('g:xmldata_'.b:html_omni_flavor)
+ exe 'let b:html_omni = g:xmldata_'.b:html_omni_flavor
+ else
+ exe 'runtime! autoload/xml/'.b:html_omni_flavor.'.vim'
+ exe 'let b:html_omni = g:xmldata_'.b:html_omni_flavor
+ endif
+ return
+ endif
endif
endfunction
" }}}
diff --git a/runtime/autoload/netrw.vim b/runtime/autoload/netrw.vim
index 13081c8a78..bd581b6bd9 100644
--- a/runtime/autoload/netrw.vim
+++ b/runtime/autoload/netrw.vim
@@ -1,7 +1,7 @@
" netrw.vim: Handles file transfer and remote directory listing across a network
" AUTOLOAD PORTION
-" Date: Apr 24, 2006
-" Version: 93
+" Date: Apr 26, 2006
+" Version: 94
" Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
" GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
" Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
@@ -23,7 +23,7 @@
if &cp || exists("g:loaded_netrw")
finish
endif
-let g:loaded_netrw = "v93"
+let g:loaded_netrw = "v94"
if v:version < 700
echohl WarningMsg | echo "***netrw*** you need vim version 7.0 or later for version ".g:loaded_netrw." of netrw" | echohl None
finish
@@ -142,7 +142,7 @@ if !exists("g:netrw_list_cmd")
" provide a default listing command
let g:netrw_list_cmd= g:netrw_ssh_cmd." HOSTNAME ls -FLa"
else
-" call Decho(g:netrw_ssh_cmd." is not executable, can't do remote directory exploring)
+" call Decho(g:netrw_ssh_cmd." is not executable, can't do remote directory exploring")
let g:netrw_list_cmd= ""
endif
endif
diff --git a/runtime/autoload/sqlcomplete.vim b/runtime/autoload/sqlcomplete.vim
index ec158f6832..146cf2133b 100644
--- a/runtime/autoload/sqlcomplete.vim
+++ b/runtime/autoload/sqlcomplete.vim
@@ -1,8 +1,12 @@
-" Vim completion script
+" Vim OMNI completion script for SQL
" Language: SQL
" Maintainer: David Fishburn <fishburn@ianywhere.com>
-" Version: 3.0
-" Last Change: Thu Apr 20 2006 8:47:12 PM
+" Version: 4.0
+" Last Change: Wed Apr 26 2006 3:00:06 PM
+" Usage: For detailed help
+" ":help sql.txt"
+" or ":help ft-sql-omni"
+" or read $VIMRUNTIME/doc/sql.txt
" Set completion with CTRL-X CTRL-O to autoloaded function.
" This check is in place in case this script is
@@ -18,7 +22,7 @@ endif
if exists('g:loaded_sql_completion')
finish
endif
-let g:loaded_sql_completion = 30
+let g:loaded_sql_completion = 40
" Maintains filename of dictionary
let s:sql_file_table = ""
@@ -93,9 +97,14 @@ function! sqlcomplete#Complete(findstart, base)
" be replaced by whatever is chosen from the completion list
if a:findstart
" Locate the start of the item, including "."
- let line = getline('.')
- let start = col('.') - 1
+ let line = getline('.')
+ let start = col('.') - 1
let lastword = -1
+ let begindot = 0
+ " Check if the first character is a ".", for column completion
+ if line[start - 1] == '.'
+ let begindot = 1
+ endif
while start > 0
if line[start - 1] =~ '\w'
let start -= 1
@@ -104,18 +113,19 @@ function! sqlcomplete#Complete(findstart, base)
" If lastword has already been set for column completion
" break from the loop, since we do not also want to pickup
" a table name if it was also supplied.
- if lastword != -1 && compl_type =~ 'column'
+ if lastword != -1 && compl_type == 'column'
break
endif
- " Assume we are looking for column completion
- " column_type can be either 'column' or 'column_csv'
- if lastword == -1 && compl_type =~ 'column'
+ " If column completion was specified stop at the "." if
+ " a . was specified, otherwise, replace all the way up
+ " to the owner name (if included).
+ if lastword == -1 && compl_type == 'column' && begindot == 1
let lastword = start
endif
" If omni_sql_include_owner = 0, do not include the table
" name as part of the substitution, so break here
if lastword == -1 &&
- \ compl_type =~ 'table\|view\|procedure' &&
+ \ compl_type =~ 'table\|view\|procedure\column_csv' &&
\ g:omni_sql_include_owner == 0
let lastword = start
break
@@ -234,6 +244,11 @@ function! sqlcomplete#Complete(findstart, base)
let s:tbl_cols = []
let s:syn_list = []
let s:syn_value = []
+
+ let msg = "All SQL cached items have been removed."
+ call s:SQLCWarningMsg(msg)
+ " Leave time for the user to read the error message
+ :sleep 2
else
let compl_list = s:SQLCGetSyntaxList(compl_type)
endif
@@ -252,18 +267,6 @@ function! sqlcomplete#Complete(findstart, base)
return compl_list
endfunc
-function! s:SQLCWarningMsg(msg)
- echohl WarningMsg
- echomsg a:msg
- echohl None
-endfunction
-
-function! s:SQLCErrorMsg(msg)
- echohl ErrorMsg
- echomsg a:msg
- echohl None
-endfunction
-
function! sqlcomplete#PreCacheSyntax(...)
let syn_group_arr = []
if a:0 > 0
@@ -294,6 +297,51 @@ function! sqlcomplete#Map(type)
let &omnifunc='sqlcomplete#Complete'
endfunction
+function! sqlcomplete#DrillIntoTable()
+ " If the omni popup window is visible
+ if pumvisible()
+ call sqlcomplete#Map('column')
+ " C-Y, makes the currently highlighted entry active
+ " and trigger the omni popup to be redisplayed
+ call feedkeys("\<C-Y>\<C-X>\<C-O>")
+ else
+ if has('win32')
+ " If the popup is not visible, simple perform the normal
+ " <C-Right> behaviour
+ exec "normal! \<C-Right>"
+ endif
+ endif
+ return ""
+endfunction
+
+function! sqlcomplete#DrillOutOfColumns()
+ " If the omni popup window is visible
+ if pumvisible()
+ call sqlcomplete#Map('tableReset')
+ " Trigger the omni popup to be redisplayed
+ call feedkeys("\<C-X>\<C-O>")
+ else
+ if has('win32')
+ " If the popup is not visible, simple perform the normal
+ " <C-Left> behaviour
+ exec "normal! \<C-Left>"
+ endif
+ endif
+ return ""
+endfunction
+
+function! s:SQLCWarningMsg(msg)
+ echohl WarningMsg
+ echomsg a:msg
+ echohl None
+endfunction
+
+function! s:SQLCErrorMsg(msg)
+ echohl ErrorMsg
+ echomsg a:msg
+ echohl None
+endfunction
+
function! s:SQLCGetSyntaxList(syn_group)
let syn_group = a:syn_group
let compl_list = []
@@ -347,7 +395,8 @@ function! s:SQLCCheck4dbext()
endfunction
function! s:SQLCAddAlias(table_name, table_alias, cols)
- let table_name = a:table_name
+ " Strip off the owner if included
+ let table_name = matchstr(a:table_name, '\%(.\{-}\.\)\?\zs\(.*\)' )
let table_alias = a:table_alias
let cols = a:cols
@@ -373,7 +422,7 @@ function! s:SQLCAddAlias(table_name, table_alias, cols)
" Restore original value
let &iskeyword = save_keyword
elseif table_name =~ '\u\U'
- let initials = substitute(
+ let table_alias = substitute(
\ table_name, '\(\u\)\U*', '\1', 'g')
else
let table_alias = strpart(table_name, 0, 1)
@@ -397,6 +446,7 @@ endfunction
function! s:SQLCGetColumns(table_name, list_type)
let table_name = matchstr(a:table_name, '^\w\+')
+ let table_name = matchstr(a:table_name, '^[a-zA-Z0-9_.]\+')
let table_cols = []
let table_alias = ''
let move_to_top = 1
@@ -480,7 +530,9 @@ function! s:SQLCGetColumns(table_name, list_type)
\ 'from.\{-}'.
\ '\zs\(\(\<\w\+\>\)\.\)\?'.
\ '\<\w\+\>\ze'.
- \ '\s\+\%(as\s\+\)\?\<'.table_name.'\>'.
+ \ '\s\+\%(as\s\+\)\?\<'.
+ \ matchstr(table_name, '.\{-}\ze\.\?$').
+ \ '\>'.
\ '\s*\.\@!.*'.
\ '\(\<where\>\|$\)'.
\ '.*'
@@ -544,9 +596,12 @@ function! s:SQLCGetColumns(table_name, list_type)
exec 'DBSetOption use_tbl_alias='.saveSettingAlias
endif
+ " If the user has asked for a comma separate list of column
+ " values, ask the user if they want to prepend each column
+ " with a tablename alias.
if a:list_type == 'csv' && !empty(table_cols)
- let cols = join(table_cols, ', ')
- let cols = s:SQLCAddAlias(table_name, table_alias, cols)
+ let cols = join(table_cols, ', ')
+ let cols = s:SQLCAddAlias(table_name, table_alias, cols)
let table_cols = [cols]
endif
diff --git a/runtime/autoload/vimball.vim b/runtime/autoload/vimball.vim
index 61d5fa662a..b5f924cc57 100644
--- a/runtime/autoload/vimball.vim
+++ b/runtime/autoload/vimball.vim
@@ -1,7 +1,7 @@
" vimball : construct a file containing both paths and files
" Author: Charles E. Campbell, Jr.
-" Date: Apr 25, 2006
-" Version: 8
+" Date: Apr 26, 2006
+" Version: 9
" GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim
" Copyright: (c) 2004-2006 by Charles E. Campbell, Jr.
" The VIM LICENSE applies to Vimball.vim, and Vimball.txt
@@ -15,7 +15,7 @@ if &cp || exists("g:loaded_vimball")
finish
endif
let s:keepcpo = &cpo
-let g:loaded_vimball = "v8"
+let g:loaded_vimball = "v9"
set cpo&vim
" =====================================================================
@@ -40,12 +40,25 @@ fun! vimball#MkVimball(line1,line2,writelevel,vimballname) range
endif
" user option bypass
- let eikeep= &ei
- set ei=all
+ let eikeep = &ei
+ let acdkeep = &acd
+ set ei=all noacd
- let home = substitute(&rtp,',.*$','','')
+ " go to vim plugin home
+ for home in split(&rtp,',') + ['']
+ if isdirectory(home) | break | endif
+ endfor
+ if home == ""
+ let home= substitute(&rtp,',.*$','','')
+ endif
+ if (has("win32") || has("win95") || has("win64") || has("win16"))
+ let home= substitute(home,'/','\\','ge')
+ endif
+" call Decho("home<".home.">")
+
+ " save current directory
let curdir = getcwd()
- exe "cd ".home
+ call s:ChgDir(home)
" record current tab, initialize while loop index
let curtabnr = tabpagenr()
@@ -58,8 +71,9 @@ fun! vimball#MkVimball(line1,line2,writelevel,vimballname) range
if !filereadable(svfile)
echohl Error | echo "unable to read file<".svfile.">" | echohl None
- let &ei= eikeep
- exe "cd ".curdir
+ call s:ChgDir(curdir)
+ let &ei = eikeep
+ let &acd = acdkeep
" call Dret("MkVimball")
return
endif
@@ -82,7 +96,12 @@ fun! vimball#MkVimball(line1,line2,writelevel,vimballname) range
endif
call setline(lastline ,svfile)
call setline(lastline+1,0)
- exe "$r ".svfile
+
+ " write the file from the tab
+ let svfilepath= s:Path(svfile,'')
+" call Decho("exe $r ".svfilepath)
+ exe "$r ".svfilepath
+
call setline(lastline+1,line("$") - lastline - 1)
" call Decho("lastline=".lastline." line$=".line("$"))
@@ -93,11 +112,15 @@ fun! vimball#MkVimball(line1,line2,writelevel,vimballname) range
" write the vimball
exe "tabn ".vbtabnr
- exe "cd ".curdir
+ call s:ChgDir(curdir)
if a:writelevel
- exe "w! ".vbname
+ let vbnamepath= s:Path(vbname,'')
+" call Decho("exe w! ".vbnamepath)
+ exe "w! ".vbnamepath
else
- exe "w ".vbname
+ let vbnamepath= s:Path(vbname,'')
+" call Decho("exe w ".vbnamepath)
+ exe "w ".vbnamepath
endif
" call Decho("Vimball<".vbname."> created")
echo "Vimball<".vbname."> created"
@@ -108,7 +131,8 @@ fun! vimball#MkVimball(line1,line2,writelevel,vimballname) range
exe "tabc ".vbtabnr
" restore options
- let &ei= eikeep
+ let &ei = eikeep
+ let &acd = acdkeep
" call Dret("MkVimball")
endfun
@@ -125,13 +149,14 @@ fun! vimball#Vimball(really)
endif
" initialize
+ let acdkeep = &acd
let fenkeep = &fen
let regakeep = @a
let eikeep = &ei
let vekeep = &ve
let makeep = getpos("'a")
let curtabnr = tabpagenr()
- set ei=all ve=all nofen
+ set ei=all ve=all nofen noacd
" set up vimball tab
tabnew
@@ -140,10 +165,21 @@ fun! vimball#Vimball(really)
let didhelp= ""
" go to vim plugin home
- let home = substitute(&rtp,',.*$','','')
+ for home in split(&rtp,',') + ['']
+ if isdirectory(home) | break | endif
+ endfor
+ if home == ""
+ let home= substitute(&rtp,',.*$','','')
+ endif
+ if (has("win32") || has("win95") || has("win64") || has("win16"))
+ let home= substitute(home,'/','\\','ge')
+ endif
+" call Decho("home<".home.">")
+
+ " save current directory
let curdir = getcwd()
-" call Decho("exe cd ".home)
- exe "cd ".home
+ call s:ChgDir(home)
+
let linenr = 4
let filecnt = 0
@@ -174,35 +210,36 @@ fun! vimball#Vimball(really)
" call Decho("making directories if they don't exist yet")
let fnamebuf= fname
while fnamebuf =~ '/'
- let dirname = substitute(fnamebuf,'/.*$','','e')
+ let dirname = home."/".substitute(fnamebuf,'/.*$','','e')
let fnamebuf = substitute(fnamebuf,'^.\{-}/\(.*\)$','\1','e')
if !isdirectory(dirname)
" call Decho("making <".dirname.">")
call mkdir(dirname)
endif
- exe "cd ".dirname
endwhile
- exe "cd ".home
+ call s:ChgDir(home)
" grab specified qty of lines and place into "a" buffer
" (skip over path/filename and qty-lines)
let linenr = linenr + 2
let lastline = linenr + fsize - 1
" call Decho("exe ".linenr.",".lastline."yank a")
- exe linenr.",".lastline."yank a"
+ exe "silent ".linenr.",".lastline."yank a"
" copy "a" buffer into tab
" call Decho('copy "a buffer into tab#'.vbtabnr)
exe "tabn ".vbtabnr
silent! %d
- put a
+ silent put a
1
- d
+ silent d
" write tab to file
if a:really
-" call Decho("exe w! ".fname)
- exe "silent w! ".fname
+ let fnamepath= s:Path(home."/".fname,'')
+" call Decho("exe w! ".fnamepath)
+ exe "silent w! ".fnamepath
+ echo "wrote ".fnamepath
endif
" return to tab with vimball
@@ -225,9 +262,10 @@ fun! vimball#Vimball(really)
" set up help
" call Decho("about to set up help: didhelp<".didhelp.">")
if didhelp != ""
-" call Decho("exe helptags ".home."/".didhelp)
- exe "helptags ".home."/".didhelp
- echomsg "did helptags"
+ let htpath= escape(substitute(s:Path(home."/".didhelp,'"'),'"','','ge'),' ')
+" call Decho("exe helptags ".htpath)
+ exe "helptags ".htpath
+ echo "did helptags"
endif
" make sure a "Press ENTER..." prompt appears to keep the messages showing!
@@ -244,13 +282,14 @@ fun! vimball#Vimball(really)
let &ei = eikeep
let @a = regakeep
let &fen = fenkeep
+ let &acd = acdkeep
if makeep[0] != 0
" restore mark a
" call Decho("restore mark-a: makeep=".string(makeep))
call setpos("'a",makeep)
ka