| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  | " vimball.vim : construct a file containing both paths and files | 
					
						
							|  |  |  | " Author:	Charles E. Campbell, Jr. | 
					
						
							| 
									
										
										
										
											2012-01-20 21:08:56 +01:00
										 |  |  | " Date:		Jan 17, 2012 | 
					
						
							|  |  |  | " Version:	35 | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  | " GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  | " Copyright: (c) 2004-2011 by Charles E. Campbell, Jr. | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  | "            The VIM LICENSE applies to Vimball.vim, and Vimball.txt | 
					
						
							|  |  |  | "            (see |copyright|) except use "Vimball" instead of "Vim". | 
					
						
							|  |  |  | "            No warranty, express or implied. | 
					
						
							|  |  |  | "  *** ***   Use At-Your-Own-Risk!   *** *** | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " --------------------------------------------------------------------- | 
					
						
							|  |  |  | "  Load Once: {{{1 | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  | if &cp || exists("g:loaded_vimball") | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  |  finish | 
					
						
							|  |  |  | endif | 
					
						
							| 
									
										
										
										
											2012-01-20 21:08:56 +01:00
										 |  |  | let g:loaded_vimball = "v35" | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  | if v:version < 702 | 
					
						
							|  |  |  |  echohl WarningMsg | 
					
						
							|  |  |  |  echo "***warning*** this version of vimball needs vim 7.2" | 
					
						
							|  |  |  |  echohl Normal | 
					
						
							|  |  |  |  finish | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | let s:keepcpo= &cpo | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  | set cpo&vim | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | "DechoTabOn | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  | " ===================================================================== | 
					
						
							|  |  |  | " Constants: {{{1 | 
					
						
							|  |  |  | if !exists("s:USAGE") | 
					
						
							|  |  |  |  let s:USAGE   = 0 | 
					
						
							|  |  |  |  let s:WARNING = 1 | 
					
						
							|  |  |  |  let s:ERROR   = 2 | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |  " determine if cygwin is in use or not | 
					
						
							|  |  |  |  if !exists("g:netrw_cygwin") | 
					
						
							|  |  |  |   if has("win32") || has("win95") || has("win64") || has("win16") | 
					
						
							|  |  |  |    if &shell =~ '\%(\<bash\>\|\<zsh\>\)\%(\.exe\)\=$' | 
					
						
							|  |  |  |     let g:netrw_cygwin= 1 | 
					
						
							|  |  |  |    else | 
					
						
							|  |  |  |     let g:netrw_cygwin= 0 | 
					
						
							|  |  |  |    endif | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |    let g:netrw_cygwin= 0 | 
					
						
							|  |  |  |   endif | 
					
						
							|  |  |  |  endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  " set up g:vimball_mkdir if the mkdir() call isn't defined | 
					
						
							|  |  |  |  if !exists("*mkdir") | 
					
						
							|  |  |  |   if exists("g:netrw_local_mkdir") | 
					
						
							|  |  |  |    let g:vimball_mkdir= g:netrw_local_mkdir | 
					
						
							|  |  |  |   elseif executable("mkdir") | 
					
						
							|  |  |  |    let g:vimball_mkdir= "mkdir" | 
					
						
							|  |  |  |   elseif executable("makedir") | 
					
						
							|  |  |  |    let g:vimball_mkdir= "makedir" | 
					
						
							|  |  |  |   endif | 
					
						
							|  |  |  |   if !exists(g:vimball_mkdir) | 
					
						
							|  |  |  |    call vimball#ShowMesg(s:WARNING,"(vimball) g:vimball_mkdir undefined") | 
					
						
							|  |  |  |   endif | 
					
						
							|  |  |  |  endif | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  | " ===================================================================== | 
					
						
							|  |  |  | "  Functions: {{{1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " --------------------------------------------------------------------- | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  | " vimball#MkVimball: creates a vimball given a list of paths to files {{{2 | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | " Input: | 
					
						
							|  |  |  | "     line1,line2: a range of lines containing paths to files to be included in the vimball | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  | "     writelevel : if true, force a write to filename.vmb, even if it exists | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | "                  (usually accomplished with :MkVimball! ... | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  | "     filename   : base name of file to be created (ie. filename.vmb) | 
					
						
							|  |  |  | " Output: a filename.vmb using vimball format: | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  | "     path | 
					
						
							|  |  |  | "     filesize | 
					
						
							|  |  |  | "     [file] | 
					
						
							|  |  |  | "     path | 
					
						
							|  |  |  | "     filesize | 
					
						
							|  |  |  | "     [file] | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  | fun! vimball#MkVimball(line1,line2,writelevel,...) range | 
					
						
							|  |  |  | "  call Dfunc("MkVimball(line1=".a:line1." line2=".a:line2." writelevel=".a:writelevel." vimballname<".a:1.">) a:0=".a:0) | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |   if a:1 =~ '\.vim$' || a:1 =~ '\.txt$' | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  |    let vbname= substitute(a:1,'\.\a\{3}$','.vmb','') | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |   else | 
					
						
							|  |  |  |    let vbname= a:1 | 
					
						
							|  |  |  |   endif | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  |   if vbname !~ '\.vmb$' | 
					
						
							|  |  |  |    let vbname= vbname.'.vmb' | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |   endif | 
					
						
							|  |  |  | "  call Decho("vbname<".vbname.">") | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  |   if !a:writelevel && a:1 =~ '[\/]' | 
					
						
							|  |  |  |    call vimball#ShowMesg(s:ERROR,"(MkVimball) vimball name<".a:1."> should not include slashes; use ! to insist") | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  | "   call Dret("MkVimball : vimball name<".a:1."> should not include slashes") | 
					
						
							|  |  |  |    return | 
					
						
							|  |  |  |   endif | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  |   if !a:writelevel && filereadable(vbname) | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |    call vimball#ShowMesg(s:ERROR,"(MkVimball) file<".vbname."> exists; use ! to insist") | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  | "   call Dret("MkVimball : file<".vbname."> already exists; use ! to insist") | 
					
						
							|  |  |  |    return | 
					
						
							|  |  |  |   endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   " user option bypass | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |   call vimball#SaveSettings() | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |   if a:0 >= 2 | 
					
						
							|  |  |  |    " allow user to specify where to get the files | 
					
						
							|  |  |  |    let home= expand(a:2) | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |    " use first existing directory from rtp | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  |    let home= vimball#VimballHome() | 
					
						
							| 
									
										
										
										
											2006-04-27 00:02:13 +00:00
										 |  |  |   endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   " save current directory | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  |   let curdir = getcwd() | 
					
						
							| 
									
										
										
										
											2006-04-27 00:02:13 +00:00
										 |  |  |   call s:ChgDir(home) | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   " record current tab, initialize while loop index | 
					
						
							|  |  |  |   let curtabnr = tabpagenr() | 
					
						
							|  |  |  |   let linenr   = a:line1 | 
					
						
							|  |  |  | "  call Decho("curtabnr=".curtabnr) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   while linenr <= a:line2 | 
					
						
							|  |  |  |    let svfile  = getline(linenr) | 
					
						
							|  |  |  | "   call Decho("svfile<".svfile.">") | 
					
						
							|  |  |  |   | 
					
						
							|  |  |  |    if !filereadable(svfile) | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |     call vimball#ShowMesg(s:ERROR,"unable to read file<".svfile.">") | 
					
						
							| 
									
										
										
										
											2006-04-27 00:02:13 +00:00
										 |  |  | 	call s:ChgDir(curdir) | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | 	call vimball#RestoreSettings() | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  | "    call Dret("MkVimball") | 
					
						
							|  |  |  |     return | 
					
						
							|  |  |  |    endif | 
					
						
							|  |  |  |   | 
					
						
							|  |  |  |    " create/switch to mkvimball tab | 
					
						
							|  |  |  |    if !exists("vbtabnr") | 
					
						
							|  |  |  |     tabnew | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  |     sil! file Vimball | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  |     let vbtabnr= tabpagenr() | 
					
						
							|  |  |  |    else | 
					
						
							|  |  |  |     exe "tabn ".vbtabnr | 
					
						
							|  |  |  |    endif | 
					
						
							|  |  |  |   | 
					
						
							|  |  |  |    let lastline= line("$") + 1 | 
					
						
							|  |  |  |    if lastline == 2 && getline("$") == "" | 
					
						
							|  |  |  | 	call setline(1,'" Vimball Archiver by Charles E. Campbell, Jr., Ph.D.') | 
					
						
							|  |  |  | 	call setline(2,'UseVimball') | 
					
						
							|  |  |  | 	call setline(3,'finish') | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  | 	let lastline= line("$") + 1 | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  |    endif | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |    call setline(lastline  ,substitute(svfile,'$','	[[[1','')) | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  |    call setline(lastline+1,0) | 
					
						
							| 
									
										
										
										
											2006-04-27 00:02:13 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    " write the file from the tab | 
					
						
							| 
									
										
										
										
											2008-08-06 17:06:04 +00:00
										 |  |  | "   call Decho("exe $r ".fnameescape(svfile)) | 
					
						
							|  |  |  |    exe "$r ".fnameescape(svfile) | 
					
						
							| 
									
										
										
										
											2006-04-27 00:02:13 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  |    call setline(lastline+1,line("$") - lastline - 1) | 
					
						
							|  |  |  | "   call Decho("lastline=".lastline." line$=".line("$")) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   " restore to normal tab | 
					
						
							|  |  |  |    exe "tabn ".curtabnr | 
					
						
							|  |  |  |    let linenr= linenr + 1 | 
					
						
							|  |  |  |   endwhile | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   " write the vimball | 
					
						
							|  |  |  |   exe "tabn ".vbtabnr | 
					
						
							| 
									
										
										
										
											2006-04-27 00:02:13 +00:00
										 |  |  |   call s:ChgDir(curdir) | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |   setlocal ff=unix | 
					
						
							| 
									
										
										
										
											2006-03-23 22:44:10 +00:00
										 |  |  |   if a:writelevel | 
					
						
							| 
									
										
										
										
											2008-08-06 17:06:04 +00:00
										 |  |  | "   call Decho("exe w! ".fnameescape(vbname)) | 
					
						
							|  |  |  |    exe "w! ".fnameescape(vbname) | 
					
						
							| 
									
										
										
										
											2006-03-23 22:44:10 +00:00
										 |  |  |   else | 
					
						
							| 
									
										
										
										
											2008-08-06 17:06:04 +00:00
										 |  |  | "   call Decho("exe w ".fnameescape(vbname)) | 
					
						
							|  |  |  |    exe "w ".fnameescape(vbname) | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  |   endif | 
					
						
							|  |  |  | "  call Decho("Vimball<".vbname."> created") | 
					
						
							|  |  |  |   echo "Vimball<".vbname."> created" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   " remove the evidence | 
					
						
							|  |  |  |   setlocal nomod bh=wipe | 
					
						
							|  |  |  |   exe "tabn ".curtabnr | 
					
						
							|  |  |  |   exe "tabc ".vbtabnr | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   " restore options | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |   call vimball#RestoreSettings() | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | "  call Dret("MkVimball") | 
					
						
							|  |  |  | endfun | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " --------------------------------------------------------------------- | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  | " vimball#Vimball: extract and distribute contents from a vimball {{{2 | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | "                  (invoked the the UseVimball command embedded in  | 
					
						
							|  |  |  | "                  vimballs' prologue) | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  | fun! vimball#Vimball(really,...) | 
					
						
							|  |  |  | "  call Dfunc("vimball#Vimball(really=".a:really.") a:0=".a:0) | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-08-06 17:06:04 +00:00
										 |  |  |   if v:version < 701 || (v:version == 701 && !exists('*fnameescape')) | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  |    echoerr "your vim is missing the fnameescape() function (pls upgrade to vim 7.2 or later)" | 
					
						
							|  |  |  | "   call Dret("vimball#Vimball : needs 7.1 with patch 299 or later") | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |    return | 
					
						
							|  |  |  |   endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  |   if getline(1) !~ '^" Vimball Archiver' | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  |    echoerr "(Vimball) The current file does not appear to be a Vimball!" | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  | "   call Dret("vimball#Vimball") | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  |    return | 
					
						
							|  |  |  |   endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-04-27 21:40:34 +00:00
										 |  |  |   " set up standard settings | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |   call vimball#SaveSettings() | 
					
						
							|  |  |  |   let curtabnr    = tabpagenr() | 
					
						
							|  |  |  |   let vimballfile = expand("%:tr") | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   " set up vimball tab | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  | "  call Decho("setting up vimball tab") | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  |   tabnew | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  |   sil! file Vimball | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  |   let vbtabnr= tabpagenr() | 
					
						
							|  |  |  |   let didhelp= "" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   " go to vim plugin home | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |   if a:0 > 0 | 
					
						
							| 
									
										
										
										
											2011-10-20 22:22:38 +02:00
										 |  |  |    " let user specify the directory where the vimball is to be unpacked. | 
					
						
							|  |  |  |    " If, however, the user did not specify a full path, set the home to be below the current directory | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |    let home= expand(a:1) | 
					
						
							| 
									
										
										
										
											2011-10-20 22:22:38 +02:00
										 |  |  |    if has("win32") || has("win95") || has("win64") || has("win16") | 
					
						
							|  |  |  | 	if home !~ '^\a:[/\\]' | 
					
						
							|  |  |  | 	 let home= getcwd().'/'.a:1 | 
					
						
							|  |  |  | 	endif | 
					
						
							|  |  |  |    elseif home !~ '^/' | 
					
						
							|  |  |  | 	let home= getcwd().'/'.a:1 | 
					
						
							|  |  |  |    endif | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |   else | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  |    let home= vimball#VimballHome() | 
					
						
							| 
									
										
										
										
											2006-04-27 00:02:13 +00:00
										 |  |  |   endif | 
					
						
							|  |  |  | "  call Decho("home<".home.">") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |   " save current directory and remove older same-named vimball, if any | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  |   let curdir = getcwd() | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  | "  call Decho("home<".home.">") | 
					
						
							|  |  |  | "  call Decho("curdir<".curdir.">") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-04-27 00:02:13 +00:00
										 |  |  |   call s:ChgDir(home) | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |   let s:ok_unablefind= 1 | 
					
						
							|  |  |  |   call vimball#RmVimball(vimballfile) | 
					
						
							|  |  |  |   unlet s:ok_unablefind | 
					
						
							| 
									
										
										
										
											2006-04-27 00:02:13 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  |   let linenr  = 4 | 
					
						
							|  |  |  |   let filecnt = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   " give title to listing of (extracted) files from Vimball Archive | 
					
						
							|  |  |  |   if a:really | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |    echohl Title     | echomsg "Vimball Archive"         | echohl None | 
					
						
							|  |  |  |   else              | 
					
						
							|  |  |  |    echohl Title     | echomsg "Vimball Archive Listing" | echohl None | 
					
						
							| 
									
										
										
										
											2006-04-27 21:40:34 +00:00
										 |  |  |    echohl Statement | echomsg "files would be placed under: ".home | echohl None | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  |   endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   " apportion vimball contents to various files | 
					
						
							|  |  |  | "  call Decho("exe tabn ".curtabnr) | 
					
						
							|  |  |  |   exe "tabn ".curtabnr | 
					
						
							|  |  |  | "  call Decho("linenr=".linenr." line$=".line("$")) | 
					
						
							|  |  |  |   while 1 < linenr && linenr < line("$") | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |    let fname   = substitute(getline(linenr),'\t\[\[\[1$','','') | 
					
						
							|  |  |  |    let fname   = substitute(fname,'\\','/','g') | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  |    let fsize   = substitute(getline(linenr+1),'^\(\d\+\).\{-}$','\1','')+0 | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  |    let fenc    = substitute(getline(linenr+1),'^\d\+\s*\(\S\{-}\)$','\1','') | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  |    let filecnt = filecnt + 1 | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  | "   call Decho("fname<".fname."> fsize=".fsize." filecnt=".filecnt. " fenc=".fenc) | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  |    if a:really | 
					
						
							|  |  |  |     echomsg "extracted <".fname.">: ".fsize." lines" | 
					
						
							|  |  |  |    else | 
					
						
							|  |  |  |     echomsg "would extract <".fname.">: ".fsize." lines" | 
					
						
							|  |  |  |    endif | 
					
						
							| 
									
										
										
										
											2006-04-24 19:47:27 +00:00
										 |  |  | "   call Decho("using L#".linenr.": will extract file<".fname.">") | 
					
						
							|  |  |  | "   call Decho("using L#".(linenr+1).": fsize=".fsize) | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |    " Allow AsNeeded/ directory to take place of plugin/ directory | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |    " when AsNeeded/filename is filereadable or was present in VimballRecord | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |    if fname =~ '\<plugin/' | 
					
						
							|  |  |  |    	let anfname= substitute(fname,'\<plugin/','AsNeeded/','') | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | 	if filereadable(anfname) || (exists("s:VBRstring") && s:VBRstring =~ anfname) | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  | "	 call Decho("using anfname<".anfname."> instead of <".fname.">") | 
					
						
							|  |  |  | 	 let fname= anfname | 
					
						
							|  |  |  | 	endif | 
					
						
							|  |  |  |    endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  |    " make directories if they don't exist yet | 
					
						
							| 
									
										
										
										
											2006-04-27 21:40:34 +00:00
										 |  |  |    if a:really | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  | "    call Decho("making directories if they don't exist yet (fname<".fname.">)") | 
					
						
							|  |  |  |     let fnamebuf= substitute(fname,'\\','/','g') | 
					
						
							|  |  |  | 	let dirpath = substitute(home,'\\','/','g') | 
					
						
							| 
									
										
										
										
											2011-10-20 22:22:38 +02:00
										 |  |  | "	call Decho("init: fnamebuf<".fnamebuf.">") | 
					
						
							|  |  |  | "	call Decho("init: dirpath <".dirpath.">") | 
					
						
							| 
									
										
										
										
											2006-04-27 21:40:34 +00:00
										 |  |  |     while fnamebuf =~ '/' | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |      let dirname  = dirpath."/".substitute(fnamebuf,'/.*$','','') | 
					
						
							|  |  |  | 	 let dirpath  = dirname | 
					
						
							|  |  |  |      let fnamebuf = substitute(fnamebuf,'^.\{-}/\(.*\)$','\1','') | 
					
						
							|  |  |  | "	 call Decho("dirname<".dirname.">") | 
					
						
							| 
									
										
										
										
											2011-10-20 22:22:38 +02:00
										 |  |  | "	 call Decho("dirpath<".dirpath.">") | 
					
						
							| 
									
										
										
										
											2006-04-27 21:40:34 +00:00
										 |  |  |      if !isdirectory(dirname) | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  | "      call Decho("making <".dirname.">") | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |       if exists("g:vimball_mkdir") | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  | 	   call system(g:vimball_mkdir." ".shellescape(dirname)) | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |       else | 
					
						
							|  |  |  |        call mkdir(dirname) | 
					
						
							|  |  |  |       endif | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  | 	  call s:RecordInVar(home,"rmdir('".dirname."')") | 
					
						
							| 
									
										
										
										
											2006-04-27 21:40:34 +00:00
										 |  |  |      endif | 
					
						
							|  |  |  |     endwhile | 
					
						
							|  |  |  |    endif | 
					
						
							| 
									
										
										
										
											2006-04-27 00:02:13 +00:00
										 |  |  |    call s:ChgDir(home) | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    " grab specified qty of lines and place into "a" buffer | 
					
						
							| 
									
										
										
										
											2006-04-24 19:47:27 +00:00
										 |  |  |    " (skip over path/filename and qty-lines) | 
					
						
							|  |  |  |    let linenr   = linenr + 2 | 
					
						
							|  |  |  |    let lastline = linenr + fsize - 1 | 
					
						
							|  |  |  | "   call Decho("exe ".linenr.",".lastline."yank a") | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  |    " no point in handling a zero-length file | 
					
						
							|  |  |  |    if lastline >= linenr | 
					
						
							|  |  |  |     exe "silent ".linenr.",".lastline."yank a" | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  |     " copy "a" buffer into tab | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  | "   call Decho('copy "a buffer into tab#'.vbtabnr) | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  |     exe "tabn ".vbtabnr | 
					
						
							|  |  |  |     setlocal ma | 
					
						
							|  |  |  |     sil! %d | 
					
						
							|  |  |  |     silent put a | 
					
						
							|  |  |  |     1 | 
					
						
							|  |  |  |     sil! d | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     " write tab to file | 
					
						
							|  |  |  |     if a:really | 
					
						
							|  |  |  |      let fnamepath= home."/".fname | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | "    call Decho("exe w! ".fnameescape(fnamepath)) | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  | 	if fenc != "" | 
					
						
							|  |  |  | 	 exe "silent w! ++enc=".fnameescape(fenc)." ".fnameescape(fnamepath) | 
					
						
							|  |  |  | 	else | 
					
						
							|  |  |  | 	 exe "silent w! ".fnameescape(fnamepath) | 
					
						
							|  |  |  | 	endif | 
					
						
							|  |  |  | 	echo "wrote ".fnameescape(fnamepath) | 
					
						
							|  |  |  | 	call s:RecordInVar(home,"call delete('".fnamepath."')") | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  |     endif | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  |     " return to tab with vimball | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  | "   call Decho("exe tabn ".curtabnr) | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  |     exe "tabn ".curtabnr | 
					
						
							| 
									
										
										
										
											2006-04-24 19:47:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  |     " set up help if its a doc/*.txt file | 
					
						
							| 
									
										
										
										
											2006-04-24 19:47:27 +00:00
										 |  |  | "   call Decho("didhelp<".didhelp."> fname<".fname.">") | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  |     if a:really && didhelp == "" && fname =~ 'doc/[^/]\+\.\(txt\|..x\)$' | 
					
						
							|  |  |  |     	let didhelp= substitute(fname,'^\(.*\<doc\)[/\\][^.]*\.\(txt\|..x\)$','\1','') | 
					
						
							| 
									
										
										
										
											2006-04-24 19:47:27 +00:00
										 |  |  | "	call Decho("didhelp<".didhelp.">") | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  |     endif | 
					
						
							| 
									
										
										
										
											2006-04-24 19:47:27 +00:00
										 |  |  |    endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    " update for next file | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | "   call Decho("update linenr= [linenr=".linenr."] + [fsize=".fsize."] = ".(linenr+fsize)) | 
					
						
							|  |  |  |    let linenr= linenr + fsize | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  |   endwhile | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   " set up help | 
					
						
							|  |  |  | "  call Decho("about to set up help: didhelp<".didhelp.">") | 
					
						
							|  |  |  |   if didhelp != "" | 
					
						
							| 
									
										
										
										
											2008-08-06 17:06:04 +00:00
										 |  |  |    let htpath= home."/".didhelp | 
					
						
							| 
									
										
										
										
											2006-04-27 00:02:13 +00:00
										 |  |  | "   call Decho("exe helptags ".htpath) | 
					
						
							| 
									
										
										
										
											2008-08-06 17:06:04 +00:00
										 |  |  |    exe "helptags ".fnameescape(htpath) | 
					
						
							| 
									
										
										
										
											2006-04-27 00:02:13 +00:00
										 |  |  |    echo "did helptags" | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  |   endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   " make sure a "Press ENTER..." prompt appears to keep the messages showing! | 
					
						
							| 
									
										
										
										
											2006-03-23 22:44:10 +00:00
										 |  |  |   while filecnt <= &ch | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  |    echomsg " " | 
					
						
							|  |  |  |    let filecnt= filecnt + 1 | 
					
						
							|  |  |  |   endwhile | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |   " record actions in <.VimballRecord> | 
					
						
							|  |  |  |   call s:RecordInFile(home) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  |   " restore events, delete tab and buffer | 
					
						
							|  |  |  |   exe "tabn ".vbtabnr | 
					
						
							|  |  |  |   setlocal nomod bh=wipe | 
					
						
							|  |  |  |   exe "tabn ".curtabnr | 
					
						
							|  |  |  |   exe "tabc ".vbtabnr | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |   call vimball#RestoreSettings() | 
					
						
							| 
									
										
										
										
											2006-04-27 00:02:13 +00:00
										 |  |  |   call s:ChgDir(curdir) | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  | "  call Dret("vimball#Vimball") | 
					
						
							|  |  |  | endfun | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " --------------------------------------------------------------------- | 
					
						
							|  |  |  | " vimball#RmVimball: remove any files, remove any directories made by any {{{2 | 
					
						
							|  |  |  | "               previous vimball extraction based on a file of the current | 
					
						
							|  |  |  | "               name. | 
					
						
							|  |  |  | "  Usage:  RmVimball  (assume current file is a vimball; remove) | 
					
						
							|  |  |  | "          RmVimball vimballname | 
					
						
							|  |  |  | fun! vimball#RmVimball(...) | 
					
						
							|  |  |  | "  call Dfunc("vimball#RmVimball() a:0=".a:0) | 
					
						
							|  |  |  |   if exists("g:vimball_norecord") | 
					
						
							|  |  |  | "   call Dret("vimball#RmVimball : (g:vimball_norecord)") | 
					
						
							|  |  |  |    return | 
					
						
							|  |  |  |   endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   if a:0 == 0 | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |    let curfile= expand("%:tr") | 
					
						
							|  |  |  | "   call Decho("case a:0=0: curfile<".curfile."> (used expand(%:tr))") | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |   else | 
					
						
							|  |  |  |    if a:1 =~ '[\/]' | 
					
						
							|  |  |  |     call vimball#ShowMesg(s:USAGE,"RmVimball vimballname [path]") | 
					
						
							|  |  |  | "    call Dret("vimball#RmVimball : suspect a:1<".a:1.">") | 
					
						
							|  |  |  |     return | 
					
						
							|  |  |  |    endif | 
					
						
							|  |  |  |    let curfile= a:1 | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | "   call Decho("case a:0=".a:0.": curfile<".curfile.">") | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |   endif | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  |   if curfile =~ '\.vmb$' | 
					
						
							|  |  |  |    let curfile= substitute(curfile,'\.vmb','','') | 
					
						
							|  |  |  |   elseif curfile =~ '\.vba$' | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |    let curfile= substitute(curfile,'\.vba','','') | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |   endif | 
					
						
							|  |  |  |   if a:0 >= 2 | 
					
						
							|  |  |  |    let home= expand(a:2) | 
					
						
							|  |  |  |   else | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  |    let home= vimball#VimballHome() | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |   endif | 
					
						
							|  |  |  |   let curdir = getcwd() | 
					
						
							|  |  |  | "  call Decho("home   <".home.">") | 
					
						
							|  |  |  | "  call Decho("curfile<".curfile.">") | 
					
						
							|  |  |  | "  call Decho("curdir <".curdir.">") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   call s:ChgDir(home) | 
					
						
							|  |  |  |   if filereadable(".VimballRecord") | 
					
						
							|  |  |  | "   call Decho(".VimballRecord is readable") | 
					
						
							|  |  |  | "   call Decho("curfile<".curfile.">") | 
					
						
							|  |  |  |    keepalt keepjumps 1split  | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  |    sil! keepalt keepjumps e .VimballRecord | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |    let keepsrch= @/ | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  | "   call Decho('search for ^\M'.curfile.'.\m: ') | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  | "   call Decho('search for ^\M'.curfile.'.\m{vba|vmb}: ') | 
					
						
							|  |  |  | "   call Decho('search for ^\M'.curfile.'\m[-0-9.]*\.{vba|vmb}: ') | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  |    if search('^\M'.curfile."\m: ".'cw') | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | 	let foundit= 1 | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  |    elseif search('^\M'.curfile.".\mvmb: ",'cw') | 
					
						
							|  |  |  | 	let foundit= 2 | 
					
						
							|  |  |  |    elseif search('^\M'.curfile.'\m[-0-9.]*\.vmb: ','cw') | 
					
						
							|  |  |  | 	let foundit= 2 | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  |    elseif search('^\M'.curfile.".\mvba: ",'cw') | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | 	let foundit= 1 | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  |    elseif search('^\M'.curfile.'\m[-0-9.]*\.vba: ','cw') | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | 	let foundit= 1 | 
					
						
							|  |  |  |    else | 
					
						
							|  |  |  |     let foundit = 0 | 
					
						
							|  |  |  |    endif | 
					
						
							|  |  |  |    if foundit | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  | 	if foundit == 1 | 
					
						
							|  |  |  | 	 let exestring  = substitute(getline("."),'^\M'.curfile.'\m\S\{-}\.vba: ','','') | 
					
						
							|  |  |  | 	else | 
					
						
							|  |  |  | 	 let exestring  = substitute(getline("."),'^\M'.curfile.'\m\S\{-}\.vmb: ','','') | 
					
						
							|  |  |  | 	endif | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |     let s:VBRstring= substitute(exestring,'call delete(','','g') | 
					
						
							|  |  |  |     let s:VBRstring= substitute(s:VBRstring,"[')]",'','g') | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  | "	call Decho("exe ".exestring) | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  | 	sil! keepalt keepjumps exe exestring | 
					
						
							|  |  |  | 	sil! keepalt keepjumps d | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | 	let exestring= strlen(substitute(exestring,'call delete(.\{-})|\=',"D","g")) | 
					
						
							|  |  |  | "	call Decho("exestring<".exestring.">") | 
					
						
							|  |  |  | 	echomsg "removed ".exestring." files" | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |    else | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |     let s:VBRstring= '' | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  | 	let curfile    = substitute(curfile,'\.vmb','','') | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | "    call Decho("unable to find <".curfile."> in .VimballRecord") | 
					
						
							|  |  |  | 	if !exists("s:ok_unablefind") | 
					
						
							|  |  |  |      call vimball#ShowMesg(s:WARNING,"(RmVimball) unable to find <".curfile."> in .VimballRecord") | 
					
						
							|  |  |  | 	endif | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |    endif | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  |    sil! keepalt keepjumps g/^\s*$/d | 
					
						
							|  |  |  |    sil! keepalt keepjumps wq! | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |    let @/= keepsrch | 
					
						
							|  |  |  |   endif | 
					
						
							|  |  |  |   call s:ChgDir(curdir) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | "  call Dret("vimball#RmVimball") | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  | endfun | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-04-25 22:13:59 +00:00
										 |  |  | " --------------------------------------------------------------------- | 
					
						
							|  |  |  | " vimball#Decompress: attempts to automatically decompress vimballs {{{2 | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  | fun! vimball#Decompress(fname,...) | 
					
						
							|  |  |  | "  call Dfunc("Decompress(fname<".a:fname.">) a:0=".a:0) | 
					
						
							| 
									
										
										
										
											2006-04-25 22:13:59 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   " decompression: | 
					
						
							|  |  |  |   if     expand("%") =~ '.*\.gz'  && executable("gunzip") | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |    " handle *.gz with gunzip | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  |    silent exe "!gunzip ".shellescape(a:fname) | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |    if v:shell_error != 0 | 
					
						
							|  |  |  | 	call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) gunzip may have failed with <".a:fname.">") | 
					
						
							|  |  |  |    endif | 
					
						
							|  |  |  |    let fname= substitute(a:fname,'\.gz$','','') | 
					
						
							|  |  |  |    exe "e ".escape(fname,' \') | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  |    if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   elseif expand("%") =~ '.*\.gz' && executable("gzip") | 
					
						
							|  |  |  |    " handle *.gz with gzip -d | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  |    silent exe "!gzip -d ".shellescape(a:fname) | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |    if v:shell_error != 0 | 
					
						
							|  |  |  | 	call vimball#ShowMesg(s:WARNING,'(vimball#Decompress) "gzip -d" may have failed with <'.a:fname.">") | 
					
						
							|  |  |  |    endif | 
					
						
							| 
									
										
										
										
											2006-04-25 22:13:59 +00:00
										 |  |  |    let fname= substitute(a:fname,'\.gz$','','') | 
					
						
							| 
									
										
										
										
											2006-04-27 00:02:13 +00:00
										 |  |  |    exe "e ".escape(fname,' \') | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  |    if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-04-25 22:13:59 +00:00
										 |  |  |   elseif expand("%") =~ '.*\.bz2' && executable("bunzip2") | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |    " handle *.bz2 with bunzip2 | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  |    silent exe "!bunzip2 ".shellescape(a:fname) | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |    if v:shell_error != 0 | 
					
						
							|  |  |  | 	call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) bunzip2 may have failed with <".a:fname.">") | 
					
						
							|  |  |  |    endif | 
					
						
							| 
									
										
										
										
											2006-04-25 22:13:59 +00:00
										 |  |  |    let fname= substitute(a:fname,'\.bz2$','','') | 
					
						
							| 
									
										
										
										
											2006-04-27 00:02:13 +00:00
										 |  |  |    exe "e ".escape(fname,' \') | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  |    if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   elseif expand("%") =~ '.*\.bz2' && executable("bzip2") | 
					
						
							|  |  |  |    " handle *.bz2 with bzip2 -d | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  |    silent exe "!bzip2 -d ".shellescape(a:fname) | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |    if v:shell_error != 0 | 
					
						
							|  |  |  | 	call vimball#ShowMesg(s:WARNING,'(vimball#Decompress) "bzip2 -d" may have failed with <'.a:fname.">") | 
					
						
							|  |  |  |    endif | 
					
						
							|  |  |  |    let fname= substitute(a:fname,'\.bz2$','','') | 
					
						
							|  |  |  |    exe "e ".escape(fname,' \') | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  |    if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-04-25 22:13:59 +00:00
										 |  |  |   elseif expand("%") =~ '.*\.zip' && executable("unzip") | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |    " handle *.zip with unzip | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  |    silent exe "!unzip ".shellescape(a:fname) | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |    if v:shell_error != 0 | 
					
						
							|  |  |  | 	call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) unzip may have failed with <".a:fname.">") | 
					
						
							|  |  |  |    endif | 
					
						
							| 
									
										
										
										
											2006-04-25 22:13:59 +00:00
										 |  |  |    let fname= substitute(a:fname,'\.zip$','','') | 
					
						
							| 
									
										
										
										
											2006-04-27 00:02:13 +00:00
										 |  |  |    exe "e ".escape(fname,' \') | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  |    if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif | 
					
						
							| 
									
										
										
										
											2006-04-25 22:13:59 +00:00
										 |  |  |   endif | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  |   if a:0 == 0| setlocal noma bt=nofile fmr=[[[,]]] fdm=marker | endif | 
					
						
							| 
									
										
										
										
											2006-04-25 22:13:59 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | "  call Dret("Decompress") | 
					
						
							|  |  |  | endfun | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-04-27 00:02:13 +00:00
										 |  |  | " --------------------------------------------------------------------- | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  | " vimball#ShowMesg: {{{2 | 
					
						
							|  |  |  | fun! vimball#ShowMesg(level,msg) | 
					
						
							|  |  |  | "  call Dfunc("vimball#ShowMesg(level=".a:level." msg<".a:msg.">)") | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |   let rulerkeep   = &ruler | 
					
						
							|  |  |  |   let showcmdkeep = &showcmd | 
					
						
							|  |  |  |   set noruler noshowcmd | 
					
						
							|  |  |  |   redraw! | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   if &fo =~ '[ta]' | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  |    echomsg "***vimball*** ".a:msg | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |   else | 
					
						
							|  |  |  |    if a:level == s:WARNING || a:level == s:USAGE | 
					
						
							|  |  |  |     echohl WarningMsg | 
					
						
							|  |  |  |    elseif a:level == s:ERROR | 
					
						
							|  |  |  |     echohl Error | 
					
						
							|  |  |  |    endif | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  |    echomsg "***vimball*** ".a:msg | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |    echohl None | 
					
						
							|  |  |  |   endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   if a:level != s:USAGE | 
					
						
							|  |  |  |    call inputsave()|let ok= input("Press <cr> to continue")|call inputrestore() | 
					
						
							|  |  |  |   endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   let &ruler   = rulerkeep | 
					
						
							|  |  |  |   let &showcmd = showcmdkeep | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | "  call Dret("vimball#ShowMesg") | 
					
						
							|  |  |  | endfun | 
					
						
							|  |  |  | " ===================================================================== | 
					
						
							|  |  |  | " s:ChgDir: change directory (in spite of Windoze) {{{2 | 
					
						
							| 
									
										
										
										
											2006-04-27 00:02:13 +00:00
										 |  |  | fun! s:ChgDir(newdir) | 
					
						
							|  |  |  | "  call Dfunc("ChgDir(newdir<".a:newdir.">)") | 
					
						
							|  |  |  |   if (has("win32") || has("win95") || has("win64") || has("win16")) | 
					
						
							| 
									
										
										
										
											2011-10-20 22:22:38 +02:00
										 |  |  |    try | 
					
						
							|  |  |  |     exe 'silent cd '.fnameescape(substitute(a:newdir,'/','\\','g')) | 
					
						
							|  |  |  |    catch  /^Vim\%((\a\+)\)\=:E/ | 
					
						
							|  |  |  |     call mkdir(fnameescape(substitute(a:newdir,'/','\\','g'))) | 
					
						
							|  |  |  |     exe 'silent cd '.fnameescape(substitute(a:newdir,'/','\\','g')) | 
					
						
							|  |  |  |    endtry | 
					
						
							| 
									
										
										
										
											2006-04-27 00:02:13 +00:00
										 |  |  |   else | 
					
						
							| 
									
										
										
										
											2011-10-20 22:22:38 +02:00
										 |  |  |    try | 
					
						
							|  |  |  |     exe 'silent cd '.fnameescape(a:newdir) | 
					
						
							|  |  |  |    catch  /^Vim\%((\a\+)\)\=:E/ | 
					
						
							|  |  |  |     call mkdir(fnameescape(a:newdir)) | 
					
						
							|  |  |  |     exe 'silent cd '.fnameescape(a:newdir) | 
					
						
							|  |  |  |    endtry | 
					
						
							| 
									
										
										
										
											2006-04-27 00:02:13 +00:00
										 |  |  |   endif | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | "  call Dret("ChgDir : curdir<".getcwd().">") | 
					
						
							| 
									
										
										
										
											2006-04-27 00:02:13 +00:00
										 |  |  | endfun | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " --------------------------------------------------------------------- | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  | " s:RecordInVar: record a un-vimball command in the .VimballRecord file {{{2 | 
					
						
							|  |  |  | fun! s:RecordInVar(home,cmd) | 
					
						
							|  |  |  | "  call Dfunc("RecordInVar(home<".a:home."> cmd<".a:cmd.">)") | 
					
						
							|  |  |  |   if a:cmd =~ '^rmdir' | 
					
						
							|  |  |  | "   if !exists("s:recorddir") | 
					
						
							|  |  |  | "    let s:recorddir= substitute(a:cmd,'^rmdir',"call s:Rmdir",'') | 
					
						
							|  |  |  | "   else | 
					
						
							|  |  |  | "    let s:recorddir= s:recorddir."|".substitute(a:cmd,'^rmdir',"call s:Rmdir",'') | 
					
						
							|  |  |  | "   endif | 
					
						
							|  |  |  |   elseif !exists("s:recordfile") | 
					
						
							|  |  |  |    let s:recordfile= a:cmd | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |    let s:recordfile= s:recordfile."|".a:cmd | 
					
						
							|  |  |  |   endif | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | "  call Dret("RecordInVar : s:recordfile<".(exists("s:recordfile")? s:recordfile : "")."> s:recorddir<".(exists("s:recorddir")? s:recorddir : "").">") | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  | endfun | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " --------------------------------------------------------------------- | 
					
						
							|  |  |  | " s:RecordInFile: {{{2 | 
					
						
							|  |  |  | fun! s:RecordInFile(home) | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | "  call Dfunc("s:RecordInFile()") | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |   if exists("g:vimball_norecord") | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | "   call Dret("s:RecordInFile : g:vimball_norecord") | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |    return | 
					
						
							|  |  |  |   endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   if exists("s:recordfile") || exists("s:recorddir") | 
					
						
							|  |  |  |    let curdir= getcwd() | 
					
						
							|  |  |  |    call s:ChgDir(a:home) | 
					
						
							|  |  |  |    keepalt keepjumps 1split  | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |    let cmd= expand("%:tr").": " | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | "   call Decho("cmd<".cmd.">") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  |    sil! keepalt keepjumps e .VimballRecord | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |    setlocal ma | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |    $ | 
					
						
							|  |  |  |    if exists("s:recordfile") && exists("s:recorddir") | 
					
						
							|  |  |  |    	let cmd= cmd.s:recordfile."|".s:recorddir | 
					
						
							|  |  |  |    elseif exists("s:recorddir") | 
					
						
							|  |  |  |    	let cmd= cmd.s:recorddir | 
					
						
							|  |  |  |    elseif exists("s:recordfile") | 
					
						
							|  |  |  |    	let cmd= cmd.s:recordfile | 
					
						
							|  |  |  |    else | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | "    call Dret("s:RecordInFile : neither recordfile nor recorddir exist") | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  | 	return | 
					
						
							|  |  |  |    endif | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | "   call Decho("cmd<".cmd.">") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    " put command into buffer, write .VimballRecord `file | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |    keepalt keepjumps put=cmd | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  |    sil! keepalt keepjumps g/^\s*$/d | 
					
						
							|  |  |  |    sil! keepalt keepjumps wq! | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |    call s:ChgDir(curdir) | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    if exists("s:recorddir") | 
					
						
							|  |  |  | "	call Decho("unlet s:recorddir<".s:recorddir.">") | 
					
						
							|  |  |  |    	unlet s:recorddir | 
					
						
							|  |  |  |    endif | 
					
						
							|  |  |  |    if exists("s:recordfile") | 
					
						
							|  |  |  | "	call Decho("unlet s:recordfile<".s:recordfile.">") | 
					
						
							|  |  |  |    	unlet s:recordfile | 
					
						
							|  |  |  |    endif | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |   else | 
					
						
							|  |  |  | "   call Decho("s:record[file|dir] doesn't exist") | 
					
						
							|  |  |  |   endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | "  call Dret("s:RecordInFile") | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  | endfun | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " --------------------------------------------------------------------- | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  | " vimball#VimballHome: determine/get home directory path (usually from rtp) {{{2 | 
					
						
							|  |  |  | fun! vimball#VimballHome() | 
					
						
							|  |  |  | "  call Dfunc("vimball#VimballHome()") | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |   if exists("g:vimball_home") | 
					
						
							|  |  |  |    let home= g:vimball_home | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |    " go to vim plugin home | 
					
						
							|  |  |  |    for home in split(&rtp,',') + [''] | 
					
						
							|  |  |  |     if isdirectory(home) && filewritable(home) | break | endif | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | 	let basehome= substitute(home,'[/\\]\.vim$','','') | 
					
						
							|  |  |  |     if isdirectory(basehome) && filewritable(basehome) | 
					
						
							|  |  |  | 	 let home= basehome."/.vim" | 
					
						
							|  |  |  | 	 break | 
					
						
							|  |  |  | 	endif | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |    endfor | 
					
						
							|  |  |  |    if home == "" | 
					
						
							|  |  |  |     " just pick the first directory | 
					
						
							|  |  |  |     let home= substitute(&rtp,',.*$','','') | 
					
						
							|  |  |  |    endif | 
					
						
							|  |  |  |    if (has("win32") || has("win95") || has("win64") || has("win16")) | 
					
						
							|  |  |  |     let home= substitute(home,'/','\\','g') | 
					
						
							|  |  |  |    endif | 
					
						
							|  |  |  |   endif | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |   " insure that the home directory exists | 
					
						
							|  |  |  | "  call Decho("picked home<".home.">") | 
					
						
							|  |  |  |   if !isdirectory(home) | 
					
						
							|  |  |  |    if exists("g:vimball_mkdir") | 
					
						
							|  |  |  | "	call Decho("home<".home."> isn't a directory -- making it now with g:vimball_mkdir<".g:vimball_mkdir.">") | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  | "    call Decho("system(".g:vimball_mkdir." ".shellescape(home).")") | 
					
						
							|  |  |  |     call system(g:vimball_mkdir." ".shellescape(home)) | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |    else | 
					
						
							|  |  |  | "	call Decho("home<".home."> isn't a directory -- making it now with mkdir()") | 
					
						
							|  |  |  |     call mkdir(home) | 
					
						
							|  |  |  |    endif | 
					
						
							|  |  |  |   endif | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  | "  call Dret("vimball#VimballHome <".home.">") | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |   return home | 
					
						
							| 
									
										
										
										
											2006-04-27 00:02:13 +00:00
										 |  |  | endfun | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-04-27 21:40:34 +00:00
										 |  |  | " --------------------------------------------------------------------- | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | " vimball#SaveSettings: {{{2 | 
					
						
							|  |  |  | fun! vimball#SaveSettings() | 
					
						
							| 
									
										
										
										
											2006-04-27 21:40:34 +00:00
										 |  |  | "  call Dfunc("SaveSettings()") | 
					
						
							|  |  |  |   let s:makeep  = getpos("'a") | 
					
						
							|  |  |  |   let s:regakeep= @a | 
					
						
							| 
									
										
										
										
											2006-05-02 22:08:30 +00:00
										 |  |  |   if exists("&acd") | 
					
						
							|  |  |  |    let s:acdkeep = &acd | 
					
						
							|  |  |  |   endif | 
					
						
							| 
									
										
										
										
											2006-04-27 21:40:34 +00:00
										 |  |  |   let s:eikeep  = &ei | 
					
						
							| 
									
										
										
										
											2008-08-06 17:06:04 +00:00
										 |  |  |   let s:fenkeep = &l:fen | 
					
						
							| 
									
										
										
										
											2006-04-27 21:40:34 +00:00
										 |  |  |   let s:hidkeep = &hidden | 
					
						
							|  |  |  |   let s:ickeep  = &ic | 
					
						
							| 
									
										
										
										
											2007-05-10 16:41:10 +00:00
										 |  |  |   let s:lzkeep  = &lz | 
					
						
							|  |  |  |   let s:pmkeep  = &pm | 
					
						
							| 
									
										
										
										
											2006-04-27 21:40:34 +00:00
										 |  |  |   let s:repkeep = &report | 
					
						
							|  |  |  |   let s:vekeep  = &ve | 
					
						
							| 
									
										
										
										
											2008-08-06 17:06:04 +00:00
										 |  |  |   let s:ffkeep  = &l:ff | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  |   let s:swfkeep = &l:swf | 
					
						
							| 
									
										
										
										
											2006-05-02 22:08:30 +00:00
										 |  |  |   if exists("&acd") | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  |    setlocal ei=all ve=all noacd nofen noic report=999 nohid bt= ma lz pm= ff=unix noswf | 
					
						
							| 
									
										
										
										
											2006-05-02 22:08:30 +00:00
										 |  |  |   else | 
					
						
							| 
									
										
										
										
											2011-06-19 05:09:16 +02:00
										 |  |  |    setlocal ei=all ve=all       nofen noic report=999 nohid bt= ma lz pm= ff=unix noswf | 
					
						
							| 
									
										
										
										
											2006-05-02 22:08:30 +00:00
										 |  |  |   endif | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |   " vimballs should be in unix format | 
					
						
							|  |  |  |   setlocal ff=unix | 
					
						
							| 
									
										
										
										
											2006-04-27 21:40:34 +00:00
										 |  |  | "  call Dret("SaveSettings") | 
					
						
							|  |  |  | endfun | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " --------------------------------------------------------------------- | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  | " vimball#RestoreSettings: {{{2 | 
					
						
							|  |  |  | fun! vimball#RestoreSettings() | 
					
						
							| 
									
										
										
										
											2006-04-27 21:40:34 +00:00
										 |  |  | "  call Dfunc("RestoreSettings()") | 
					
						
							|  |  |  |   let @a      = s:regakeep | 
					
						
							| 
									
										
										
										
											2006-05-02 22:08:30 +00:00
										 |  |  |   if exists("&acd") | 
					
						
							|  |  |  |    let &acd   = s:acdkeep | 
					
						
							|  |  |  |   endif | 
					
						
							| 
									
										
										
										
											2008-08-06 17:06:04 +00:00
										 |  |  |   let &l:fen  = s:fenkeep | 
					
						
							| 
									
										
										
										
											2006-04-27 21:40:34 +00:00
										 |  |  |   let &hidden = s:hidkeep | 
					
						
							|  |  |  |   let &ic     = s:ickeep | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |   let &lz     = s:lzkeep | 
					
						
							| 
									
										
										
										
											2007-05-10 16:41:10 +00:00
										 |  |  |   let &pm     = s:pmkeep | 
					
						
							| 
									
										
										
										
											2006-04-27 21:40:34 +00:00
										 |  |  |   let &report = s:repkeep | 
					
						
							|  |  |  |   let &ve     = s:vekeep | 
					
						
							| 
									
										
										
										
											2007-05-05 17:10:09 +00:00
										 |  |  |   let &ei     = s:eikeep | 
					
						
							| 
									
										
										
										
											2008-08-06 17:06:04 +00:00
										 |  |  |   let &l:ff   = s:ffkeep | 
					
						
							| 
									
										
										
										
											2006-04-27 21:40:34 +00:00
										 |  |  |   if s:makeep[0] != 0 | 
					
						
							|  |  |  |    " restore mark a | 
					
						
							|  |  |  | "   call Decho("restore mark-a: makeep=".string(makeep)) | 
					
						
							|  |  |  |    call setpos("'a",s:makeep) | 
					
						
							|  |  |  |   endif | 
					
						
							| 
									
										
										
										
											2006-05-02 22:08:30 +00:00
										 |  |  |   if exists("&acd") | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |    unlet s:acdkeep | 
					
						
							| 
									
										
										
										
											2006-05-02 22:08:30 +00:00
										 |  |  |   endif | 
					
						
							| 
									
										
										
										
											2008-06-24 20:19:36 +00:00
										 |  |  |   unlet s:regakeep s:eikeep s:fenkeep s:hidkeep s:ickeep s:repkeep s:vekeep s:makeep s:lzkeep s:pmkeep s:ffkeep | 
					
						
							| 
									
										
										
										
											2006-04-27 21:40:34 +00:00
										 |  |  | "  call Dret("RestoreSettings") | 
					
						
							|  |  |  | endfun | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-01-20 21:08:56 +01:00
										 |  |  | let &cpo = s:keepcpo | 
					
						
							|  |  |  | unlet s:keepcpo | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-04-27 00:02:13 +00:00
										 |  |  | " --------------------------------------------------------------------- | 
					
						
							| 
									
										
										
										
											2006-03-21 21:20:39 +00:00
										 |  |  | " Modelines: {{{1 | 
					
						
							|  |  |  | " vim: fdm=marker |