GetLatestVimScripts

git-svn-id: https://vimsuite.svn.sourceforge.net/svnroot/vimsuite/trunk@180 eb2d0018-73a3-4aeb-bfe9-1def61c9ec69
This commit is contained in:
Stefan.Liebl 2010-01-12 16:18:53 +00:00
parent af28abb1bd
commit 587fd7e78a
28 changed files with 3971 additions and 3431 deletions

View File

@ -1,38 +1,34 @@
ScriptID SourceID Filename ScriptID SourceID Filename
-------------------------- --------------------------
1075 9389 netrw.vim 1008 3118 srec.vim (ftplugin)
1502 8743 vimball.vim 1009 3119 srec.vim (syntax file)
1008 3118 srec.vim (ftplugin) 475 2535 latex-suite (install in vimfiles.latex)
1009 3119 srec.vim (syntax file) 614 3666 C-Referenz
475 2535 latex-suite (install in vimfiles.latex) 670 8073 visincr.vim (Visual Increment)
614 3666 C-Referenz 862 2635 cscope_quickfix.vim
670 8073 visincr.vim (Visual Increment) 51 171 cscope_macros.vim
862 2635 cscope_quickfix.vim 102 9375 DirDiff.vim
51 171 cscope_macros.vim 1189 8687 matrix.vim
102 9375 DirDiff.vim 1173 11513 tcomment
1189 8687 matrix.vim 948 2878 Scons Compiler plugin
1173 8689 tcomment 1709 6421 Scons Syntax file
948 2878 Scons Compiler plugin 1772 7248 DAMOS.zip DAMOS tools (von Stefan)
1709 6421 Scons Syntax file 987 11878 DoxygenToolkit.vim
1772 7248 DAMOS.zip DAMOS tools (von Stefan) 1397 11713 xml.vim
987 6978 DoxygenToolkit.vim 1290 5190 LogiPat.vim
1397 6887 xml.vim 1462 5612 dtd2xml
1290 5190 LogiPat.vim 1046 4249 Lusty Explorer
1881 9564 svndiff 2043 7805 VimPdb (debugging python)
1462 5612 dtd2xml 1776 7902 Vimgrep Replace
1046 4249 Lusty Explorer 2048 7817 BlockDiff
2043 7805 VimPdb (debugging python) 39 8196 matchit.vim
1776 7902 Vimgrep Replace 2092 8095 reloaded.vim (matrix colorscheme)
2048 7817 BlockDiff 848 8203 SrchRplcHiGrp.vim (Search/Replace on Syntax Group)
39 8196 matchit.vim 294 10110 Align.vim
2092 8095 reloaded.vim (matrix colorscheme) 479 9276 MultipleSearch.vba
848 8203 SrchRplcHiGrp.vim (Search/Replace on Syntax Group) 1066 7618 cecutil.vim
294 9414 Align.vim 1173 11513 tComment.vim
479 9276 MultipleSearch 2701 10950 editsrec
1066 7618 cecutil.vim 642 8136 :AutoInstall: getscript.vim
642 8136 getscript.vim 1075 11979 :AutoInstall: netrw.vim
90 9279 vcscommand 1502 11981 :AutoInstall: vimball.vim
642 8136 :AutoInstall: GetLatestVimScripts.vim
479 9276 :AutoInstall: MultipleSearch.vba
1173 8689 tComment.vim
2701 1 editsrec

View File

@ -1,7 +1,7 @@
" Align: tool to align multiple fields based on one or more separators " Align: tool to align multiple fields based on one or more separators
" Author: Charles E. Campbell, Jr. " Author: Charles E. Campbell, Jr.
" Date: Oct 08, 2008 " Date: Mar 03, 2009
" Version: 34 " Version: 35
" GetLatestVimScripts: 294 1 :AutoInstall: Align.vim " GetLatestVimScripts: 294 1 :AutoInstall: Align.vim
" GetLatestVimScripts: 1066 1 :AutoInstall: cecutil.vim " GetLatestVimScripts: 1066 1 :AutoInstall: cecutil.vim
" Copyright: Copyright (C) 1999-2007 Charles E. Campbell, Jr. {{{1 " Copyright: Copyright (C) 1999-2007 Charles E. Campbell, Jr. {{{1
@ -21,10 +21,10 @@
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" Load Once: {{{1 " Load Once: {{{1
if exists("g:loaded_align") || &cp if exists("g:loaded_Align") || &cp
finish finish
endif endif
let g:loaded_align = "v34" let g:loaded_Align = "v35"
if v:version < 700 if v:version < 700
echohl WarningMsg echohl WarningMsg
echo "***warning*** this version of Align needs vim 7.0" echo "***warning*** this version of Align needs vim 7.0"
@ -36,9 +36,19 @@ set cpo&vim
"DechoTabOn "DechoTabOn
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" Debugging Support: " Debugging Support: {{{1
"if !exists("g:loaded_Decho") | runtime plugin/Decho.vim | endif "if !exists("g:loaded_Decho") | runtime plugin/Decho.vim | endif
" ---------------------------------------------------------------------
" Options: {{{1
if !exists("g:Align_xstrlen")
if &enc == "latin1" || $LANG == "en_US.UTF-8" || !has("multi_byte")
let g:Align_xstrlen= 0
else
let g:Align_xstrlen= 1
endif
endif
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" Align#AlignCtrl: enter alignment patterns here {{{1 " Align#AlignCtrl: enter alignment patterns here {{{1
" "
@ -333,12 +343,17 @@ endfun
fun! Align#Align(hasctrl,...) range fun! Align#Align(hasctrl,...) range
" call Dfunc("Align#Align(hasctrl=".a:hasctrl.",...) a:0=".a:0) " call Dfunc("Align#Align(hasctrl=".a:hasctrl.",...) a:0=".a:0)
" sanity check " sanity checks
if string(a:hasctrl) != "0" && string(a:hasctrl) != "1" if string(a:hasctrl) != "0" && string(a:hasctrl) != "1"
echohl Error|echo 'usage: Align#Align(hasctrl<'.a:hasctrl.'> (should be 0 or 1),"separator(s)" (you have '.a:0.') )'|echohl None echohl Error|echo 'usage: Align#Align(hasctrl<'.a:hasctrl.'> (should be 0 or 1),"separator(s)" (you have '.a:0.') )'|echohl None
" call Dret("Align#Align") " call Dret("Align#Align")
return return
endif endif
if exists("s:AlignStyle") && s:AlignStyle == ":"
echohl Error |echo '(Align#Align) your AlignStyle is ":", which implies "do-no-alignment"!'|echohl None
" call Dret("Align#Align")
return
endif
" set up a list akin to an argument list " set up a list akin to an argument list
if a:0 > 0 if a:0 > 0
@ -986,12 +1001,12 @@ fun! s:Strlen(x)
" 'tabstop', wide CJK as 2 rather than 1, Arabic alif as zero when immediately " 'tabstop', wide CJK as 2 rather than 1, Arabic alif as zero when immediately
" preceded by lam, one otherwise, etc.) " preceded by lam, one otherwise, etc.)
" (comment from TM, solution from me) " (comment from TM, solution from me)
let modkeep= &mod let modkeep= &l:mod
exe "norm! o\<esc>" exe "norm! o\<esc>"
call setline(line("."),a:x) call setline(line("."),a:x)
let ret= virtcol("$") - 1 let ret= virtcol("$") - 1
d d
let &mod= modkeep let &l:mod= modkeep
else else
" at least give a decent default " at least give a decent default

View File

@ -1,13 +1,13 @@
" AlignMaps.vim : support functions for AlignMaps " AlignMaps.vim : support functions for AlignMaps
" Author: Charles E. Campbell, Jr. " Author: Charles E. Campbell, Jr.
" Date: Oct 24, 2008 " Date: Mar 03, 2009
" Version: 40 " Version: 41
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" Load Once: {{{1 " Load Once: {{{1
if &cp || exists("g:loaded_AlignMaps") if &cp || exists("g:loaded_AlignMaps")
finish finish
endif endif
let g:loaded_AlignMaps= "v40" let g:loaded_AlignMaps= "v41"
let s:keepcpo = &cpo let s:keepcpo = &cpo
set cpo&vim set cpo&vim
@ -16,7 +16,7 @@ set cpo&vim
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" AlignMaps#WrapperStart: {{{2 " AlignMaps#WrapperStart: {{{2
fun! AlignMaps#WrapperStart(vis) fun! AlignMaps#WrapperStart(vis) range
" call Dfunc("AlignMaps#WrapperStart(vis=".a:vis.")") " call Dfunc("AlignMaps#WrapperStart(vis=".a:vis.")")
if a:vis if a:vis
@ -55,7 +55,7 @@ endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" AlignMaps#WrapperEnd: {{{2 " AlignMaps#WrapperEnd: {{{2
fun! AlignMaps#WrapperEnd() fun! AlignMaps#WrapperEnd() range
" call Dfunc("AlignMaps#WrapperEnd() alignmaps_wrapcnt=".s:alignmaps_wrapcnt." my=".line("'y")." mz=".line("'z")) " call Dfunc("AlignMaps#WrapperEnd() alignmaps_wrapcnt=".s:alignmaps_wrapcnt." my=".line("'y")." mz=".line("'z"))
" remove trailing white space introduced by whatever in the modification zone " remove trailing white space introduced by whatever in the modification zone
@ -103,7 +103,7 @@ endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" AlignMaps#StdAlign: some semi-standard align calls {{{2 " AlignMaps#StdAlign: some semi-standard align calls {{{2
fun! AlignMaps#StdAlign(mode) fun! AlignMaps#StdAlign(mode) range
" call Dfunc("AlignMaps#StdAlign(mode=".a:mode.")") " call Dfunc("AlignMaps#StdAlign(mode=".a:mode.")")
if a:mode == 1 if a:mode == 1
" align on @ " align on @
@ -157,12 +157,12 @@ endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" AlignMaps#Equals: supports \t= and \T= {{{2 " AlignMaps#Equals: supports \t= and \T= {{{2
fun! AlignMaps#Equals() fun! AlignMaps#Equals() range
" call Dfunc("AlignMaps#Equals()") " call Dfunc("AlignMaps#Equals()")
'a,'zs/\s\+\([*/+\-%|&\~^]\==\)/ \1/e 'a,'zs/\s\+\([*/+\-%|&\~^]\==\)/ \1/e
'a,'zs@ \+\([*/+\-%|&\~^]\)=@\1=@ge 'a,'zs@ \+\([*/+\-%|&\~^]\)=@\1=@ge
'a,'zs/==/\="\<Char-0xff>\<Char-0xff>"/ge 'a,'zs/==/\="\<Char-0x0f>\<Char-0x0f>"/ge
'a,'zs/!=/\="!\<Char-0xff>"/ge 'a,'zs/\([!<>:]\)=/\=submatch(1)."\<Char-0x0f>"/ge
norm g'zk norm g'zk
AlignCtrl mIp1P1=l = AlignCtrl mIp1P1=l =
AlignCtrl g = AlignCtrl g =
@ -174,15 +174,15 @@ fun! AlignMaps#Equals()
'a,'z-1v/^\s*\/[*/]/s/\/[*/]/@&@/e 'a,'z-1v/^\s*\/[*/]/s/\/[*/]/@&@/e
'a,'z-1v/^\s*\/[*/]/s/\*\//@&/e 'a,'z-1v/^\s*\/[*/]/s/\*\//@&/e
if exists("g:mapleader") if exists("g:mapleader")
exe "norm 'zk" exe "norm 'zk"
call AlignMaps#StdAlign(1) call AlignMaps#StdAlign(1)
else else
exe "norm 'zk" exe "norm 'zk"
call AlignMaps#StdAlign(1) call AlignMaps#StdAlign(1)
endif endif
'y,'zs/^\(\s*\) @/\1/e 'y,'zs/^\(\s*\) @/\1/e
endif endif
'a,'z-1s/\%xff/=/ge 'a,'z-1s/\%x0f/=/ge
'y,'zs/ @//eg 'y,'zs/ @//eg
" call Dret("AlignMaps#Equals") " call Dret("AlignMaps#Equals")
endfun endfun

View File

@ -0,0 +1,152 @@
" Vim Library for Editing .srec Files
" Maintainer: Alexander Fleck
" <alexander.fleck@gmx.net>
" License: This File is placed in the Public Domain.
" Revision | Date [DD.MM.YY] | Changes
" 00.01.00 | 05.07.09 | 01. Revision
" create ByteCount
fun libsrec#CrBC(line)
let s:byco = ""
" Dictionary with Assumptions
let s:dict = { 0: '0F',
\ 1: '0F',
\ 2: '0F',
\ 3: '0F',
\ 4: '' ,
\ 5: '03',
\ 6: '' ,
\ 7: '05',
\ 8: '04',
\ 9: '03' }
let s:byco = s:dict[a:line[1]]
unlet s:dict
"unlet s:byco
return s:byco
endfun
" create ADdress
fun libsrec#CrAD(line)
let s:adrs = ""
" Number of Bytes for Address
let s:adby = ""
" Dictionary
let s:dict = { 0: 2,
\ 1: 2,
\ 2: 3,
\ 3: 4,
\ 4: 0,
\ 5: 2,
\ 6: 0,
\ 7: 4,
\ 8: 3,
\ 9: 2 }
let s:adby = s:dict[a:line[1]]
let s:n = 0
while 1
let s:n = s:n + 1
if s:n > s:adby
break
endif
let s:adrs = s:adrs . "00"
continue
endwhile
unlet s:n
unlet s:dict
unlet s:adby
"unlet s:adrs
return s:adrs
endfun
" create DAta
fun libsrec#CrDA(line)
let s:data = ""
" Number of Bytes for Data
let s:daby = ""
" get ByteCount from Line
let s:bchx = "0x" . a:line[2] . a:line[3]
" Dictionary
let s:dict = { 0: s:bchx - 3,
\ 1: s:bchx - 3,
\ 2: s:bchx - 4,
\ 3: s:bchx - 5,
\ 4: 0 ,
\ 5: 0 ,
\ 6: 0 ,
\ 7: 0 ,
\ 8: 0 ,
\ 9: 0 }
let s:daby = s:dict[a:line[1]]
let s:n = 0
while 1
let s:n = s:n + 1
if s:n > s:daby
break
endif
let s:data = s:data . "FF"
continue
endwhile
unlet s:n
unlet s:dict
unlet s:bchx
unlet s:daby
"unlet s:data
return s:data
endfun
" create CheckSum
fun libsrec#CrCS(line)
" CheckSum as a String
let s:chsu = ""
" get ByteCount from Line
let s:bchx = "0x" . a:line[2] . a:line[3]
if ((a:line[1] == "4") || (a:line[1] == "6"))
" there' s no S4 or S6
else
" CheckSum as a Value
let s:csby = 0
" add the Byte Values
let s:n = 0
while 1
let s:n = s:n + 1
if s:n > s:bchx
break
endif
let s:csby = s:csby + ("0x" . a:line[2*s:n] . a:line[2*s:n+1])
continue
endwhile
unlet s:n
" CheckSum is:
let s:csby = 255 - (s:csby % 256)
" convert to Hex Value,
" Hex String without "0x"
let s:hxva = "0123456789ABCDEF"
while s:csby
let s:chsu = s:hxva[s:csby % 16] . s:chsu
let s:csby = s:csby / 16
endwhile
unlet s:hxva
unlet s:csby
endif
unlet s:bchx
"unlet s:chsu
return s:chsu
endfun

File diff suppressed because it is too large Load Diff

View File

@ -145,6 +145,7 @@ fun! netrwSettings#NetrwSettings()
put = 'let g:netrw_special_syntax = '.g:netrw_special_syntax put = 'let g:netrw_special_syntax = '.g:netrw_special_syntax
put = 'let g:netrw_ssh_browse_reject = '.g:netrw_ssh_browse_reject put = 'let g:netrw_ssh_browse_reject = '.g:netrw_ssh_browse_reject
put = 'let g:netrw_scpport = '.g:netrw_scpport put = 'let g:netrw_scpport = '.g:netrw_scpport
put = 'let g:netrw_sepchr = '.g:netrw_sepchr
put = 'let g:netrw_sshport = '.g:netrw_sshport put = 'let g:netrw_sshport = '.g:netrw_sshport
put = 'let g:netrw_timefmt = '.g:netrw_timefmt put = 'let g:netrw_timefmt = '.g:netrw_timefmt
let tmpfileescline= line("$") let tmpfileescline= line("$")

View File

@ -1,10 +1,10 @@
" tcomment.vim " tcomment.vim
" @Author: Thomas Link (mailto:micathom AT gmail com?subject=[vim]) " @Author: Tom Link (mailto:micathom AT gmail com?subject=[vim])
" @Website: http://www.vim.org/account/profile.php?user_id=4037 " @Website: http://www.vim.org/account/profile.php?user_id=4037
" @License: GPL (see http://www.gnu.org/licenses/gpl.txt) " @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
" @Created: 2007-09-17. " @Created: 2007-09-17.
" @Last Change: 2008-05-07. " @Last Change: 2009-02-15.
" @Revision: 0.0.46 " @Revision: 0.0.66
if &cp || exists("loaded_tcomment_autoload") if &cp || exists("loaded_tcomment_autoload")
finish finish
@ -90,6 +90,7 @@ function! tcomment#Comment(beg, end, ...)
" We want a comment block " We want a comment block
call s:CommentBlock(a:beg, a:end, uncomment, cmtCheck, cms, indentStr) call s:CommentBlock(a:beg, a:end, uncomment, cmtCheck, cms, indentStr)
else else
" call s:CommentLines(a:beg, a:end, cstart, cend, uncomment, cmtCheck, cms0, indentStr)
" We want commented lines " We want commented lines
" final search pattern for uncommenting " final search pattern for uncommenting
let cmtCheck = escape('\V\^\(\s\{-}\)'. cmtCheck .'\$', '"/\') let cmtCheck = escape('\V\^\(\s\{-}\)'. cmtCheck .'\$', '"/\')
@ -109,10 +110,12 @@ function! tcomment#Comment(beg, end, ...)
endif endif
endf endf
function! tcomment#Operator(type, ...) "{{{3 function! tcomment#Operator(type, ...) "{{{3
let commentMode = a:0 >= 1 ? a:1 : '' let commentMode = a:0 >= 1 ? a:1 : ''
let bang = a:0 >= 2 ? a:2 : '' let bang = a:0 >= 2 ? a:2 : ''
if !exists('w:tcommentPos')
let w:tcommentPos = getpos(".")
endif
let sel_save = &selection let sel_save = &selection
let &selection = "inclusive" let &selection = "inclusive"
let reg_save = @@ let reg_save = @@
@ -384,6 +387,17 @@ function! s:ProcessedLine(uncomment, match, checkRx, replace)
return rv return rv
endf endf
function! s:CommentLines(beg, end, cstart, cend, uncomment, cmtCheck, cms0, indentStr) "{{{3
" We want commented lines
" final search pattern for uncommenting
let cmtCheck = escape('\V\^\(\s\{-}\)'. a:cmtCheck .'\$', '"/\')
" final pattern for commenting
let cmtReplace = escape(a:cms0, '"/')
silent exec a:beg .','. a:end .'s/\V'.
\ s:StartRx(a:cstart) . a:indentStr .'\zs\(\.\{-}\)'. s:EndRx(a:cend) .'/'.
\ '\=s:ProcessedLine('. a:uncomment .', submatch(0), "'. a:cmtCheck .'", "'. cmtReplace .'")/ge'
endf
function! s:CommentBlock(beg, end, uncomment, checkRx, replace, indentStr) function! s:CommentBlock(beg, end, uncomment, checkRx, replace, indentStr)
let t = @t let t = @t
try try
@ -428,28 +442,33 @@ function! s:GuessFileType(beg, end, commentMode, filetype, ...)
let cms = s:GuessCurrentCommentString(0) let cms = s:GuessCurrentCommentString(0)
endif endif
let n = a:beg let n = a:beg
" TLogVAR n, a:beg, a:end
while n <= a:end while n <= a:end
let m = indent(n) + 1 let m = indent(n) + 1
let le = col('$') let le = len(getline(n))
" TLogVAR m, le
while m < le while m < le
let syntaxName = synIDattr(synID(n, m, 1), 'name') let syntaxName = synIDattr(synID(n, m, 1), 'name')
" TLogVAR syntaxName, n, m
let ftypeMap = get(g:tcommentSyntaxMap, syntaxName) let ftypeMap = get(g:tcommentSyntaxMap, syntaxName)
if !empty(ftypeMap) if !empty(ftypeMap)
" TLogVAR ftypeMap
return s:GetCustomCommentString(ftypeMap, a:commentMode, cms) return s:GetCustomCommentString(ftypeMap, a:commentMode, cms)
elseif syntaxName =~ g:tcommentFileTypesRx elseif syntaxName =~ g:tcommentFileTypesRx
let ft = substitute(syntaxName, g:tcommentFileTypesRx, '\1', '') let ft = substitute(syntaxName, g:tcommentFileTypesRx, '\1', '')
" TLogVAR ft
if exists('g:tcommentIgnoreTypes_'. a:filetype) && g:tcommentIgnoreTypes_{a:filetype} =~ '\<'.ft.'\>' if exists('g:tcommentIgnoreTypes_'. a:filetype) && g:tcommentIgnoreTypes_{a:filetype} =~ '\<'.ft.'\>'
let m = m + 1 let m += 1
else else
return s:GetCustomCommentString(ft, a:commentMode, cms) return s:GetCustomCommentString(ft, a:commentMode, cms)
endif endif
elseif syntaxName == '' || syntaxName == 'None' || syntaxName =~ '^\u\+$' || syntaxName =~ '^\u\U*$' elseif syntaxName == '' || syntaxName == 'None' || syntaxName =~ '^\u\+$' || syntaxName =~ '^\u\U*$'
let m = m + 1 let m += 1
else else
break break
endif endif
endwh endwh
let n = n + 1 let n += 1
endwh endwh
return [cms, commentMode] return [cms, commentMode]
endf endf

View File

@ -1,9 +1,9 @@
" vimball.vim : construct a file containing both paths and files " vimball.vim : construct a file containing both paths and files
" Author: Charles E. Campbell, Jr. " Author: Charles E. Campbell, Jr.
" Date: May 30, 2008 " Date: Dec 28, 2009
" Version: 26 " Version: 30
" GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim " GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim
" Copyright: (c) 2004-2007 by Charles E. Campbell, Jr. " Copyright: (c) 2004-2009 by Charles E. Campbell, Jr.
" The VIM LICENSE applies to Vimball.vim, and Vimball.txt " The VIM LICENSE applies to Vimball.vim, and Vimball.txt
" (see |copyright|) except use "Vimball" instead of "Vim". " (see |copyright|) except use "Vimball" instead of "Vim".
" No warranty, express or implied. " No warranty, express or implied.
@ -11,11 +11,17 @@
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" Load Once: {{{1 " Load Once: {{{1
if &cp || exists("g:loaded_vimball") || v:version < 700 if &cp || exists("g:loaded_vimball")
finish finish
endif endif
let s:keepcpo = &cpo let g:loaded_vimball = "v30"
let g:loaded_vimball = "v26" if v:version < 702
echohl WarningMsg
echo "***warning*** this version of vimball needs vim 7.2"
echohl Normal
finish
endif
let s:keepcpo= &cpo
set cpo&vim set cpo&vim
"DechoTabOn "DechoTabOn
@ -52,30 +58,6 @@ if !exists("s:USAGE")
call vimball#ShowMesg(s:WARNING,"(vimball) g:vimball_mkdir undefined") call vimball#ShowMesg(s:WARNING,"(vimball) g:vimball_mkdir undefined")
endif endif
endif endif
" set up shell quoting character
if exists("g:vimball_shq") && !exists("g:netrw_shq")
let g:netrw_shq= g:vimball_shq
endif
if !exists("g:netrw_shq")
if exists("&shq") && &shq != ""
let g:netrw_shq= &shq
elseif has("win32") || has("win95") || has("win64") || has("win16")
if g:netrw_cygwin
let g:netrw_shq= "'"
else
let g:netrw_shq= '"'
endif
else
let g:netrw_shq= "'"
endif
" call Decho("g:netrw_shq<".g:netrw_shq.">")
endif
" set up escape string (used to protect paths)
if !exists("g:vimball_path_escape")
let g:vimball_path_escape= ' ;#%'
endif
endif endif
" ===================================================================== " =====================================================================
@ -106,8 +88,8 @@ fun! vimball#MkVimball(line1,line2,writelevel,...) range
let vbname= vbname.'.vba' let vbname= vbname.'.vba'
endif endif
" call Decho("vbname<".vbname.">") " call Decho("vbname<".vbname.">")
if a:1 =~ '[\/]' if !a:writelevel && a:1 =~ '[\/]'
call vimball#ShowMesg(s:ERROR,"(MkVimball) vimball name<".a:1."> should not include slashes") call vimball#ShowMesg(s:ERROR,"(MkVimball) vimball name<".a:1."> should not include slashes; use ! to insist")
" call Dret("MkVimball : vimball name<".a:1."> should not include slashes") " call Dret("MkVimball : vimball name<".a:1."> should not include slashes")
return return
endif endif
@ -125,7 +107,7 @@ fun! vimball#MkVimball(line1,line2,writelevel,...) range
let home= expand(a:2) let home= expand(a:2)
else else
" use first existing directory from rtp " use first existing directory from rtp
let home= s:VimballHome() let home= vimball#VimballHome()
endif endif
" save current directory " save current directory
@ -169,9 +151,8 @@ fun! vimball#MkVimball(line1,line2,writelevel,...) range
call setline(lastline+1,0) call setline(lastline+1,0)
" write the file from the tab " write the file from the tab
let svfilepath= s:Path(svfile,'') " call Decho("exe $r ".fnameescape(svfile))
" call Decho("exe $r ".fnameescape(svfilepath)) exe "$r ".fnameescape(svfile)
exe "$r ".fnameescape(svfilepath)
call setline(lastline+1,line("$") - lastline - 1) call setline(lastline+1,line("$") - lastline - 1)
" call Decho("lastline=".lastline." line$=".line("$")) " call Decho("lastline=".lastline." line$=".line("$"))
@ -186,13 +167,11 @@ fun! vimball#MkVimball(line1,line2,writelevel,...) range
call s:ChgDir(curdir) call s:ChgDir(curdir)
setlocal ff=unix setlocal ff=unix
if a:writelevel if a:writelevel
let vbnamepath= s:Path(vbname,'') " call Decho("exe w! ".fnameescape(vbname))
" call Decho("exe w! ".fnameescape(vbnamepath)) exe "w! ".fnameescape(vbname)
exe "w! ".fnameescape(vbnamepath)
else else
let vbnamepath= s:Path(vbname,'') " call Decho("exe w ".fnameescape(vbname))
" call Decho("exe w ".fnameescape(vbnamepath)) exe "w ".fnameescape(vbname)
exe "w ".fnameescape(vbnamepath)
endif endif
" call Decho("Vimball<".vbname."> created") " call Decho("Vimball<".vbname."> created")
echo "Vimball<".vbname."> created" echo "Vimball<".vbname."> created"
@ -215,7 +194,13 @@ endfun
fun! vimball#Vimball(really,...) fun! vimball#Vimball(really,...)
" call Dfunc("vimball#Vimball(really=".a:really.") a:0=".a:0) " call Dfunc("vimball#Vimball(really=".a:really.") a:0=".a:0)
if getline(1) !~ '^" Vimball Archiver by Charles E. Campbell, Jr., Ph.D.$' if v:version < 701 || (v:version == 701 && !exists('*fnameescape'))
echoerr "your vim is missing the fnameescape() function"
" call Dret("vimball#Vimball : needs 7.1 with patch 299")
return
endif
if getline(1) !~ '^" Vimball Archiver'
echoerr "(Vimball) The current file does not appear to be a Vimball!" echoerr "(Vimball) The current file does not appear to be a Vimball!"
" call Dret("vimball#Vimball") " call Dret("vimball#Vimball")
return return
@ -237,7 +222,7 @@ fun! vimball#Vimball(really,...)
if a:0 > 0 if a:0 > 0
let home= expand(a:1) let home= expand(a:1)
else else
let home= s:VimballHome() let home= vimball#VimballHome()
endif endif
" call Decho("home<".home.">") " call Decho("home<".home.">")
@ -269,7 +254,9 @@ fun! vimball#Vimball(really,...)
while 1 < linenr && linenr < line("$") while 1 < linenr && linenr < line("$")
let fname = substitute(getline(linenr),'\t\[\[\[1$','','') let fname = substitute(getline(linenr),'\t\[\[\[1$','','')
let fname = substitute(fname,'\\','/','g') let fname = substitute(fname,'\\','/','g')
let fsize = getline(linenr+1)+0 " let fsize = getline(linenr+1)+0
let fsize = substitute(getline(linenr+1),'^\(\d\+\).\{-}$','\1','')+0
let fenc = substitute(getline(linenr+1),'^\d\+\s*\(\S\+\)$','\1','')
let filecnt = filecnt + 1 let filecnt = filecnt + 1
" call Decho("fname<".fname."> fsize=".fsize." filecnt=".filecnt) " call Decho("fname<".fname."> fsize=".fsize." filecnt=".filecnt)
@ -304,7 +291,7 @@ fun! vimball#Vimball(really,...)
if !isdirectory(dirname) if !isdirectory(dirname)
" call Decho("making <".dirname.">") " call Decho("making <".dirname.">")
if exists("g:vimball_mkdir") if exists("g:vimball_mkdir")
call system(g:vimball_mkdir." ".s:Escape(dirname)) call system(g:vimball_mkdir." ".shellescape(dirname))
else else
call mkdir(dirname) call mkdir(dirname)
endif endif
@ -332,11 +319,15 @@ fun! vimball#Vimball(really,...)
" write tab to file " write tab to file
if a:really if a:really
let fnamepath= s:Path(home."/".fname,'') let fnamepath= home."/".fname
" call Decho("exe w! ".fnameescape(fnamepath)) " call Decho("exe w! ".fnameescape(fnamepath))
exe "silent w! ".fnameescape(fnamepath) if fenc != ""
echo "wrote ".fnamepath exe "silent w! ++enc=".fnameescape(fenc)." ".fnameescape(fnamepath)
call s:RecordInVar(home,"call delete('".fnameescape(fnamepath)."')") else
exe "silent w! ".fnameescape(fnamepath)
endif
echo "wrote ".fnameescape(fnamepath)
call s:RecordInVar(home,"call delete('".fnamepath."')")
endif endif
" return to tab with vimball " return to tab with vimball
@ -358,9 +349,9 @@ fun! vimball#Vimball(really,...)
" set up help " set up help
" call Decho("about to set up help: didhelp<".didhelp.">") " call Decho("about to set up help: didhelp<".didhelp.">")
if didhelp != "" if didhelp != ""
let htpath= s:Path(home."/".didhelp,"") let htpath= home."/".didhelp
" call Decho("exe helptags ".htpath) " call Decho("exe helptags ".htpath)
exe "helptags ".htpath exe "helptags ".fnameescape(htpath)
echo "did helptags" echo "did helptags"
endif endif
@ -415,7 +406,7 @@ fun! vimball#RmVimball(...)
if a:0 >= 2 if a:0 >= 2
let home= expand(a:2) let home= expand(a:2)
else else
let home= s:VimballHome() let home= vimball#VimballHome()
endif endif
let curdir = getcwd() let curdir = getcwd()
" call Decho("home <".home.">") " call Decho("home <".home.">")
@ -429,19 +420,20 @@ fun! vimball#RmVimball(...)
keepalt keepjumps 1split keepalt keepjumps 1split
silent! keepalt keepjumps e .VimballRecord silent! keepalt keepjumps e .VimballRecord
let keepsrch= @/ let keepsrch= @/
" call Decho("search for ^".curfile.".vba:") " call Decho('search for ^\M'.curfile.'.\m: ')
" call Decho("search for ^".curfile."[-0-9.]*.vba:") " call Decho('search for ^\M'.curfile.'.\mvba: ')
if search('^'.curfile.": ".'cw') " call Decho('search for ^\M'.curfile.'\m[-0-9.]*\.vba: ')
if search('^\M'.curfile."\m: ".'cw')
let foundit= 1 let foundit= 1
elseif search('^'.curfile.".vba: ",'cw') elseif search('^\M'.curfile.".\mvba: ",'cw')
let foundit= 1 let foundit= 1
elseif search('^'.curfile.'[-0-9.]*.vba: ','cw') elseif search('^\M'.curfile.'\m[-0-9.]*\.vba: ','cw')
let foundit= 1 let foundit= 1
else else
let foundit = 0 let foundit = 0
endif endif
if foundit if foundit
let exestring = substitute(getline("."),'^'.curfile.'\S\{-}\.vba: ','','') let exestring = substitute(getline("."),'^\M'.curfile.'\m\S\{-}\.vba: ','','')
let s:VBRstring= substitute(exestring,'call delete(','','g') let s:VBRstring= substitute(exestring,'call delete(','','g')
let s:VBRstring= substitute(s:VBRstring,"[')]",'','g') let s:VBRstring= substitute(s:VBRstring,"[')]",'','g')
" call Decho("exe ".exestring) " call Decho("exe ".exestring)
@ -469,62 +461,62 @@ endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" vimball#Decompress: attempts to automatically decompress vimballs {{{2 " vimball#Decompress: attempts to automatically decompress vimballs {{{2
fun! vimball#Decompress(fname) fun! vimball#Decompress(fname,...)
" call Dfunc("Decompress(fname<".a:fname.">)") " call Dfunc("Decompress(fname<".a:fname.">) a:0=".a:0)
" decompression: " decompression:
if expand("%") =~ '.*\.gz' && executable("gunzip") if expand("%") =~ '.*\.gz' && executable("gunzip")
" handle *.gz with gunzip " handle *.gz with gunzip
silent exe "!gunzip ".s:Escape(a:fname) silent exe "!gunzip ".shellescape(a:fname)
if v:shell_error != 0 if v:shell_error != 0
call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) gunzip may have failed with <".a:fname.">") call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) gunzip may have failed with <".a:fname.">")
endif endif
let fname= substitute(a:fname,'\.gz$','','') let fname= substitute(a:fname,'\.gz$','','')
exe "e ".escape(fname,' \') exe "e ".escape(fname,' \')
call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif
elseif expand("%") =~ '.*\.gz' && executable("gzip") elseif expand("%") =~ '.*\.gz' && executable("gzip")
" handle *.gz with gzip -d " handle *.gz with gzip -d
silent exe "!gzip -d ".s:Escape(a:fname) silent exe "!gzip -d ".shellescape(a:fname)
if v:shell_error != 0 if v:shell_error != 0
call vimball#ShowMesg(s:WARNING,'(vimball#Decompress) "gzip -d" may have failed with <'.a:fname.">") call vimball#ShowMesg(s:WARNING,'(vimball#Decompress) "gzip -d" may have failed with <'.a:fname.">")
endif endif
let fname= substitute(a:fname,'\.gz$','','') let fname= substitute(a:fname,'\.gz$','','')
exe "e ".escape(fname,' \') exe "e ".escape(fname,' \')
call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif
elseif expand("%") =~ '.*\.bz2' && executable("bunzip2") elseif expand("%") =~ '.*\.bz2' && executable("bunzip2")
" handle *.bz2 with bunzip2 " handle *.bz2 with bunzip2
silent exe "!bunzip2 ".s:Escape(a:fname) silent exe "!bunzip2 ".shellescape(a:fname)
if v:shell_error != 0 if v:shell_error != 0
call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) bunzip2 may have failed with <".a:fname.">") call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) bunzip2 may have failed with <".a:fname.">")
endif endif
let fname= substitute(a:fname,'\.bz2$','','') let fname= substitute(a:fname,'\.bz2$','','')
exe "e ".escape(fname,' \') exe "e ".escape(fname,' \')
call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif
elseif expand("%") =~ '.*\.bz2' && executable("bzip2") elseif expand("%") =~ '.*\.bz2' && executable("bzip2")
" handle *.bz2 with bzip2 -d " handle *.bz2 with bzip2 -d
silent exe "!bzip2 -d ".s:Escape(a:fname) silent exe "!bzip2 -d ".shellescape(a:fname)
if v:shell_error != 0 if v:shell_error != 0
call vimball#ShowMesg(s:WARNING,'(vimball#Decompress) "bzip2 -d" may have failed with <'.a:fname.">") call vimball#ShowMesg(s:WARNING,'(vimball#Decompress) "bzip2 -d" may have failed with <'.a:fname.">")
endif endif
let fname= substitute(a:fname,'\.bz2$','','') let fname= substitute(a:fname,'\.bz2$','','')
exe "e ".escape(fname,' \') exe "e ".escape(fname,' \')
call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif
elseif expand("%") =~ '.*\.zip' && executable("unzip") elseif expand("%") =~ '.*\.zip' && executable("unzip")
" handle *.zip with unzip " handle *.zip with unzip
silent exe "!unzip ".s:Escape(a:fname) silent exe "!unzip ".shellescape(a:fname)
if v:shell_error != 0 if v:shell_error != 0
call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) unzip may have failed with <".a:fname.">") call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) unzip may have failed with <".a:fname.">")
endif endif
let fname= substitute(a:fname,'\.zip$','','') let fname= substitute(a:fname,'\.zip$','','')
exe "e ".escape(fname,' \') exe "e ".escape(fname,' \')
call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif
endif endif
set noma bt=nofile fmr=[[[,]]] fdm=marker if a:0 == 0| setlocal noma bt=nofile fmr=[[[,]]] fdm=marker | endif
" call Dret("Decompress") " call Dret("Decompress")
endfun endfun
@ -533,20 +525,21 @@ endfun
" vimball#ShowMesg: {{{2 " vimball#ShowMesg: {{{2
fun! vimball#ShowMesg(level,msg) fun! vimball#ShowMesg(level,msg)
" call Dfunc("vimball#ShowMesg(level=".a:level." msg<".a:msg.">)") " call Dfunc("vimball#ShowMesg(level=".a:level." msg<".a:msg.">)")
let rulerkeep = &ruler let rulerkeep = &ruler
let showcmdkeep = &showcmd let showcmdkeep = &showcmd
set noruler noshowcmd set noruler noshowcmd
redraw! redraw!
if &fo =~ '[ta]' if &fo =~ '[ta]'
echomsg "***vimball*** " a:msg echomsg "***vimball*** ".a:msg
else else
if a:level == s:WARNING || a:level == s:USAGE if a:level == s:WARNING || a:level == s:USAGE
echohl WarningMsg echohl WarningMsg
elseif a:level == s:ERROR elseif a:level == s:ERROR
echohl Error echohl Error
endif endif
echomsg "***vimball*** " a:msg echomsg "***vimball*** ".a:msg
echohl None echohl None
endif endif
@ -571,27 +564,6 @@ fun! s:ChgDir(newdir)
" call Dret("ChgDir : curdir<".getcwd().">") " call Dret("ChgDir : curdir<".getcwd().">")
endfun endfun
" ---------------------------------------------------------------------
" s:Path: prepend and append quotes and do escaping {{{2
fun! s:Path(cmd,quote)
" call Dfunc("Path(cmd<".a:cmd."> quote<".a:quote.">) vimball_path_escape<".g:vimball_path_escape.">")
if (has("win32") || has("win95") || has("win64") || has("win16"))
" let cmdpath= a:quote.substitute(a:cmd,'/','\\','g').a:quote
let cmdpath= a:quote.substitute(a:cmd,'\\','/','g').a:quote
" call Decho("cmdpath<".cmdpath."> (win32 mod)")
else
let cmdpath= a:quote.a:cmd.a:quote
" call Decho("cmdpath<".cmdpath."> (not-win32 mod)")
endif
if a:quote == "" && g:vimball_path_escape !~ ' '
let cmdpath= escape(cmdpath,' ')
" call Decho("cmdpath<".cmdpath."> (empty quote case)")
endif
let cmdpath= escape(cmdpath,g:vimball_path_escape)
" call Dret("Path <".cmdpath.">")
return cmdpath
endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" s:RecordInVar: record a un-vimball command in the .VimballRecord file {{{2 " s:RecordInVar: record a un-vimball command in the .VimballRecord file {{{2
fun! s:RecordInVar(home,cmd) fun! s:RecordInVar(home,cmd)
@ -664,9 +636,9 @@ fun! s:RecordInFile(home)
endfun endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" s:VimballHome: determine/get home directory path (usually from rtp) {{{2 " vimball#VimballHome: determine/get home directory path (usually from rtp) {{{2
fun! s:VimballHome() fun! vimball#VimballHome()
" call Dfunc("VimballHome()") " call Dfunc("vimball#VimballHome()")
if exists("g:vimball_home") if exists("g:vimball_home")
let home= g:vimball_home let home= g:vimball_home
else else
@ -692,14 +664,14 @@ fun! s:VimballHome()
if !isdirectory(home) if !isdirectory(home)
if exists("g:vimball_mkdir") if exists("g:vimball_mkdir")
" call Decho("home<".home."> isn't a directory -- making it now with g:vimball_mkdir<".g:vimball_mkdir.">") " call Decho("home<".home."> isn't a directory -- making it now with g:vimball_mkdir<".g:vimball_mkdir.">")
" call Decho("system(".g:vimball_mkdir." ".s:Escape(home).")") " call Decho("system(".g:vimball_mkdir." ".shellescape(home).")")
call system(g:vimball_mkdir." ".s:Escape(home)) call system(g:vimball_mkdir." ".shellescape(home))
else else
" call Decho("home<".home."> isn't a directory -- making it now with mkdir()") " call Decho("home<".home."> isn't a directory -- making it now with mkdir()")
call mkdir(home) call mkdir(home)
endif endif
endif endif
" call Dret("VimballHome <".home.">") " call Dret("vimball#VimballHome <".home.">")
return home return home
endfun endfun
@ -713,14 +685,14 @@ fun! vimball#SaveSettings()
let s:acdkeep = &acd let s:acdkeep = &acd
endif endif
let s:eikeep = &ei let s:eikeep = &ei
let s:fenkeep = &fen let s:fenkeep = &l:fen
let s:hidkeep = &hidden let s:hidkeep = &hidden
let s:ickeep = &ic let s:ickeep = &ic
let s:lzkeep = &lz let s:lzkeep = &lz
let s:pmkeep = &pm let s:pmkeep = &pm
let s:repkeep = &report let s:repkeep = &report
let s:vekeep = &ve let s:vekeep = &ve
let s:ffkeep = &ff let s:ffkeep = &l:ff
if exists("&acd") if exists("&acd")
setlocal ei=all ve=all noacd nofen noic report=999 nohid bt= ma lz pm= ff=unix setlocal ei=all ve=all noacd nofen noic report=999 nohid bt= ma lz pm= ff=unix
else else
@ -739,7 +711,7 @@ fun! vimball#RestoreSettings()
if exists("&acd") if exists("&acd")
let &acd = s:acdkeep let &acd = s:acdkeep
endif endif
let &fen = s:fenkeep let &l:fen = s:fenkeep
let &hidden = s:hidkeep let &hidden = s:hidkeep
let &ic = s:ickeep let &ic = s:ickeep
let &lz = s:lzkeep let &lz = s:lzkeep
@ -747,7 +719,7 @@ fun! vimball#RestoreSettings()
let &report = s:repkeep let &report = s:repkeep
let &ve = s:vekeep let &ve = s:vekeep
let &ei = s:eikeep let &ei = s:eikeep
let &ff = s:ffkeep let &l:ff = s:ffkeep
if s:makeep[0] != 0 if s:makeep[0] != 0
" restore mark a " restore mark a
" call Decho("restore mark-a: makeep=".string(makeep)) " call Decho("restore mark-a: makeep=".string(makeep))
@ -760,21 +732,6 @@ fun! vimball#RestoreSettings()
" call Dret("RestoreSettings") " call Dret("RestoreSettings")
endfun endfun
" ---------------------------------------------------------------------
" s:Escape: {{{2
fun s:Escape(name)
" shellescape() was added by patch 7.0.111
if exists("*shellescape")
return shellescape(a:name)
endif
return g:netrw_shq . a:name . g:netrw_shq
endfun
" ---------------------------------------------------------------------
" Restore:
let &cpo= s:keepcpo
unlet s:keepcpo
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" Modelines: {{{1 " Modelines: {{{1
" vim: fdm=marker " vim: fdm=marker

View File

@ -1,4 +1,4 @@
*align.txt* The Alignment Tool Oct 29, 2008 *align.txt* The Alignment Tool Mar 04, 2009
Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM> Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM>
(remove NOSPAM from Campbell's email first) (remove NOSPAM from Campbell's email first)
@ -51,8 +51,17 @@ Copyright: (c) 2004-2008 by Charles E. Campbell, Jr. *Align-copyright*
============================================================================== ==============================================================================
2. Align Manual *alignman* *alignmanual* *align-manual* {{{1 2. Align Manual *alignman* *alignmanual* *align-manual* {{{1
To Enable: put <Align.vim> and <AlignMaps.vim> into your .vim/plugin Align comes as a vimball; simply typing >
To see a user's guide, see |align-usage| vim Align.vba.gz
:so %
< should put its components where they belong. The components are: >
.vim/plugin/AlignPlugin.vim
.vim/plugin/AlignMapsPlugin.vim
.vim/plugin/cecutil.vim
.vim/autoload/Align.vim
.vim/autoload/AlignMaps.vim
.vim/doc/Align.txt
< To see a user's guide, see |align-userguide|
To see examples, see |alignctrl| and |alignmaps| To see examples, see |alignctrl| and |alignmaps|
> >
/=============+=========+=====================================================\ /=============+=========+=====================================================\
@ -130,7 +139,7 @@ Copyright: (c) 2004-2008 by Charles E. Campbell, Jr. *Align-copyright*
\=============================================================================/ \=============================================================================/
============================================================================== ==============================================================================
3. Alignment Usage *alignusage* *align-usage* {{{1 3. Alignment Usage *alignusage* *align-usage* *align-userguide* {{{1
ALIGNMENT CONCEPTS *align-concept* *align-concepts* {{{2 ALIGNMENT CONCEPTS *align-concept* *align-concepts* {{{2
@ -179,8 +188,8 @@ ALIGNMENT CONCEPTS *align-concept* *align-concepts* {{{2
xx = yy = zz = 4; xx = yy = zz = 4;
zzz = yyy = zzz = 5; zzz = yyy = zzz = 5;
a = b = c = 3; a = b = c = 3;
< There are more options available for field justification: see < There are many more options available for field justification: see
|alignctrl-c|. |alignctrl-c| and |alignctrl--|.
Separators, although commonly only one character long, are actually Separators, although commonly only one character long, are actually
specified by regular expressions (see |regexp|), and one may left specified by regular expressions (see |regexp|), and one may left
@ -249,7 +258,8 @@ ALIGNMENT COMMANDS *align-command* *align-commands* {{{2
used (at least once) previously; this command used (at least once) previously; this command
restores the AlignCtrl settings when AlignPush restores the AlignCtrl settings when AlignPush
was last used. was last used.
< < Also see |alignctrl-m| for a way to automatically do
an AlignPop after an Align (primarily this is for maps).
ALIGNMENT OPTIONS *align-option* *align-options* {{{2 ALIGNMENT OPTIONS *align-option* *align-options* {{{2
*align-utf8* *align-utf* *align-codepoint* *align-strlen* *align-multibyte* *align-utf8* *align-utf* *align-codepoint* *align-strlen* *align-multibyte*
@ -258,9 +268,20 @@ ALIGNMENT OPTIONS *align-option* *align-options* {{{2
available with utf-8, Align now provides a special option which you available with utf-8, Align now provides a special option which you
may choose based upon your needs: may choose based upon your needs:
Use Built-in strlen() ~
>
let g:Align_xstrlen= 0
< This is the fastest method, but it doesn't handle multibyte characters
well. It is the default for:
enc=latin1
vim compiled without multi-byte support
$LANG is en_US.UTF-8 (assuming USA english)
Number of codepoints (Latin a + combining circumflex is two codepoints)~ Number of codepoints (Latin a + combining circumflex is two codepoints)~
> >
let g:Align_xstrlen= 1: let g:Align_xstrlen= 1 (default)
< <
Number of spacing codepoints (Latin a + combining circumflex is one~ Number of spacing codepoints (Latin a + combining circumflex is one~
spacing codepoint; a hard tab is one; wide and narrow CJK are one~ spacing codepoint; a hard tab is one; wide and narrow CJK are one~
@ -276,7 +297,7 @@ ALIGNMENT OPTIONS *align-option* *align-options* {{{2
< <
By putting one of these settings into your <.vimrc>, Align will use an By putting one of these settings into your <.vimrc>, Align will use an
internal (interpreted) function to determine a string's length instead internal (interpreted) function to determine a string's length instead
of the Vim's built-in |strlen()| function. As the function is of the Vim's built-in |strlen()| function. Since the function is
interpreted, Align will run a bit slower but will handle such strings interpreted, Align will run a bit slower but will handle such strings
correctly. The last setting (g:Align_xstrlen= 3) probably will run correctly. The last setting (g:Align_xstrlen= 3) probably will run
the slowest but be the most accurate. (thanks to Tony Mechelynck for the slowest but be the most accurate. (thanks to Tony Mechelynck for
@ -286,17 +307,17 @@ ALIGNMENT OPTIONS *align-option* *align-options* {{{2
ALIGNMENT CONTROL *alignctrl* *align-control* {{{2 ALIGNMENT CONTROL *alignctrl* *align-control* {{{2
This command doesn't do the alignment operation itself; instead, it This command doesn't do the alignment operation itself; instead, it
controls the subsequent alignment operation(s). controls subsequent alignment operation(s).
The first argument to AlignCtrl is a string which may contain one or The first argument to AlignCtrl is a string which may contain one or
more alignment control commands. Most of the commands are single more alignment control settings. Most of the settings are specified
letter commands; the exceptions are the p# and P# commands which by single letters; the exceptions are the p# and P# commands which
interpret digits following the p or P as specifying padding about the interpret a digit following the p or P as specifying padding about the
separator. separator.
The typical text line is considered to be composed of two or more The typical text line is considered to be composed of two or more
fields separated by one or more separator pattern(s): fields separated by one or more separator pattern(s): >
>
ws field ws separator ws field ws separator ... ws field ws separator ws field ws separator ...
< <
where "ws" stands for "white space" such as blanks and/or tabs. where "ws" stands for "white space" such as blanks and/or tabs.
@ -306,9 +327,11 @@ ALIGNMENT CONTROL *alignctrl* *align-control* {{{2
As a result, separators may not have white space (tabs or blanks) on As a result, separators may not have white space (tabs or blanks) on
their outsides (ie. ": :" is fine as a separator, but " :: " is their outsides (ie. ": :" is fine as a separator, but " :: " is
not). Usually such separators are not needed. not). Usually such separators are not needed, although a map has been
provided which works around this limitation and aligns on whitespace
(see |alignmap-tsp|).
However, if you really need to have such separators with leading or However, if you really need to have separators with leading or
trailing whitespace, consider handling them by performing a substitute trailing whitespace, consider handling them by performing a substitute
first (ie. s/ :: /@/g), do the alignment on the temporary pattern first (ie. s/ :: /@/g), do the alignment on the temporary pattern
(ie. @), and then perform a substitute to revert the separators back (ie. @), and then perform a substitute to revert the separators back
@ -533,7 +556,7 @@ ALIGNMENT CONTROL *alignctrl* *align-control* {{{2
Separators may be of differing lengths as shown in the example below. Separators may be of differing lengths as shown in the example below.
Hence they too may be justified left, right, or centered. Hence they too may be justified left, right, or centered.
Furthermore, separator justification specification is cyclic: Furthermore, separator justification specifications are cyclic:
< means <<<<<... justify separator(s) to the left < means <<<<<... justify separator(s) to the left
> means >>>>>... justify separator(s) to the right > means >>>>>... justify separator(s) to the right
@ -595,7 +618,7 @@ ALIGNMENT CONTROL *alignctrl* *align-control* {{{2
AlignCtrl v AlignCtrl v
< <
To see what g/v patterns are currently active, just use the reporting To see what g/v patterns are currently active, just use the reporting
capability of a plain AlignCtrl call: > capability of an unadorned call to AlignCtrl: >
AlignCtrl AlignCtrl
< <
@ -656,6 +679,13 @@ ALIGNMENT CONTROL *alignctrl* *align-control* {{{2
padded on the right with spaces (left justification), and separators padded on the right with spaces (left justification), and separators
will be padded on each side with a single space. will be padded on each side with a single space.
To change one of these items, see:
AlignCtrl......|alignctrl|
qty............|align-concept|
AlignStyle.....|alignctrl--| |alignctrl-+| |alignctrl-:||alignctrl-c|
Padding........|alignctrl-p| |alignctrl-P|
One may get a string which can be fed back into AlignCtrl: > One may get a string which can be fed back into AlignCtrl: >
:let alignctrl= Align#AlignCtrl() :let alignctrl= Align#AlignCtrl()
@ -680,7 +710,7 @@ ALIGNMENT *align-align* {{{2
:[range]Align [list-of-separators] :[range]Align [list-of-separators]
< <
where the |range| is the usual Vim-powered set of possibilities; the where the |:range| is the usual Vim-powered set of possibilities; the
list of separators is the same as the AlignCtrl capability. There is list of separators is the same as the AlignCtrl capability. There is
only one list of separators, but either AlignCtrl or Align can be used only one list of separators, but either AlignCtrl or Align can be used
to specify that list. to specify that list.
@ -728,19 +758,19 @@ ALIGNMENT *align-align* {{{2
============================================================================== ==============================================================================
4. Alignment Maps *alignmaps* *align-maps* {{{1 4. Alignment Maps *alignmaps* *align-maps* {{{1
There are a number of maps using Align#AlignCtrl() and Align#Align() in the There are a number of maps using Align#AlignCtrl() and Align#Align()
<AlignMaps.vim> file. This file may also be put into the plugins in the <AlignMapsPlugin.vim> file. This file may also be put into the
subdirectory. Since AlignCtrl and Align supercede textab and its plugins subdirectory. Since AlignCtrl and Align supercede textab and
<ttalign.vim> file, the maps either have a leading "t" (for "textab") its <ttalign.vim> file, the maps either have a leading "t" (for
or the more complicated ones an "a" (for "alignment") for backwards "textab") or the more complicated ones an "a" (for "alignment") for
compatibility. backwards compatibility.
Thee maps are shown below with a leading backslash (\). Actually, The maps are shown below with a leading backslash (\). Actually, the
the <Leader> construct is used (see :help mapleader), so the leading <Leader> construct is used (see |mapleader|), so the maps' leading
map kick-off character is easily customized. kick-off character is easily customized.
Furthermore, all AlignMaps.vim maps use the <Plug> construct (see Furthermore, all AlignMapsPlugin.vim maps use the <Plug> construct (see
|<Plug>|and |<usr_41.txt|). Hence, if one wishes to override the |<Plug>|and |usr_41.txt|). Hence, if one wishes to override the
mapping entirely, one may do that, too. As an example: > mapping entirely, one may do that, too. As an example: >
map <Leader>ACOM <Plug>AM_acom map <Leader>ACOM <Plug>AM_acom
< would have \ACOM do what \acom previously did (assuming that the < would have \ACOM do what \acom previously did (assuming that the
@ -748,6 +778,7 @@ ALIGNMENT *align-align* {{{2
\a, : useful for breaking up comma-separated \a, : useful for breaking up comma-separated
declarations prior to \adec |alignmap-a,| declarations prior to \adec |alignmap-a,|
\a( : aligns ( and , (useful for prototypes) *alignmap-a(*
\a? : aligns (...)? ...:... expressions on ? and : |alignmap-a?| \a? : aligns (...)? ...:... expressions on ? and : |alignmap-a?|
\a< : aligns << and >> for c++ |alignmap-a<| \a< : aligns << and >> for c++ |alignmap-a<|
\a= : aligns := assignments |alignmap-a=| \a= : aligns := assignments |alignmap-a=|
@ -777,6 +808,12 @@ ALIGNMENT *align-align* {{{2
(left justified) (left justified)
\ts, : like \t, but swaps whitespace on the right of *alignmap-ts,* \ts, : like \t, but swaps whitespace on the right of *alignmap-ts,*
the commas to their left the commas to their left
\ts: : like \t: but swaps whitespace on the right of *alignmap-ts:*
the colons to their left
\ts< : like \t< but swaps whitespace on the right of *alignmap-ts<*
the less-than signs to their left
\ts= : like \t= but swaps whitespace on the right of *alignmap-ts=*
the equals signs to their left
\Tsp : use Align to make a table separated by blanks |alignmap-Tsp| \Tsp : use Align to make a table separated by blanks |alignmap-Tsp|
(right justified) (right justified)
\tsq : use Align to make a table separated by blanks |alignmap-tsq| \tsq : use Align to make a table separated by blanks |alignmap-tsq|
@ -808,7 +845,7 @@ ALIGNMENT *align-align* {{{2
ALIGNMENT MAP USE WITH VISUAL MODE~ ALIGNMENT MAP USE WITH VISUAL MODE~
Alternatively, one may select the text with the "V" visual mode Alternatively, one may select the text with the "V" visual mode
selector. command.
ALIGNMENT MAP USE WITH MENUS~ ALIGNMENT MAP USE WITH MENUS~
One may use the mark-and-move style (ma, move, use the menu) or One may use the mark-and-move style (ma, move, use the menu) or
@ -816,7 +853,7 @@ ALIGNMENT *align-align* {{{2
the alignment map with menu selection). The alignment map menu the alignment map with menu selection). The alignment map menu
items are under DrChip.AlignMaps . items are under DrChip.AlignMaps .
One may change the top level menu name to whatever is wished; by One may even change the top level menu name to whatever is wished; by
default, its > default, its >
let g:DrChipTopLvlMenu= "DrChip." let g:DrChipTopLvlMenu= "DrChip."
< If you set the variable to the empty string (""), then no menu items < If you set the variable to the empty string (""), then no menu items
@ -825,14 +862,19 @@ ALIGNMENT *align-align* {{{2
must be included). must be included).
COMPLEX ALIGNMENT MAP METHOD~ COMPLEX ALIGNMENT MAP METHOD~
For those complex alignment maps which do alignment on constructs For those complex alignment maps which do alignment on constructs
(e.g. \acom, \adec, etc), a series of substitutes is used to insert (e.g. \acom, \adec, etc), a series of substitutes is used to insert
"@" symbols in appropriate locations. Align#Align() is then used to do "@" symbols in appropriate locations. Align#Align() is then used to
alignment directly on "@"s; then it is followed by further substitutes do alignment directly on "@"s; then it is followed by further
to do clean-up. However, the maps \WS and \WE protect any original substitutes to do clean-up. However, the maps \WS and \WE, used by
embedded "@" symbols by first converting them to <DEL> characters, every map supported by AlignMaps, protect any original embedded "@"
doing the requested job, and then converting them back. symbols by first converting them to <DEL> characters, doing the
requested job, and then converting them back. >
\WS calls AlignMaps#WrapperStart()
\WE calls AlignMaps#WrapperEnd()
<
--------------------------- ---------------------------
Alignment Map Examples: \a, *alignmap-a,* {{{3 Alignment Map Examples: \a, *alignmap-a,* {{{3
@ -1136,7 +1178,7 @@ ALIGNMENT *align-align* {{{2
Also see |alignmap-acom| Also see |alignmap-acom|
--------------------------- --------------------------- *alignmap-Tsp*
Alignment Map Examples: \tsp *alignmap-tsp* {{{3 Alignment Map Examples: \tsp *alignmap-tsp* {{{3
--------------------------- ---------------------------
@ -1266,9 +1308,14 @@ ALIGNMENT *align-align* {{{2
<TR><TD> ...field three... </TD><TD> ...field four... </TD></TR> <TR><TD> ...field three... </TD><TD> ...field four... </TD></TR>
< <
============================================================================== ==============================================================================
4. Alignment Tool History *align-history* {{{1 4. Alignment Tools' History *align-history* {{{1
ALIGN HISTORY {{{2 ALIGN HISTORY {{{2
35 : Nov 02, 2008 * g:loaded_AlignPlugin testing to prevent re-loading
installed
Nov 19, 2008 * new sanity check for an AlignStyle of just ":"
Jan 08, 2009 * save&restore of |'mod'| now done with local
variant
34 : Jul 08, 2008 * using :AlignCtrl before entering any alignment 34 : Jul 08, 2008 * using :AlignCtrl before entering any alignment
control commands was causing an error. control commands was causing an error.
33 : Sep 20, 2007 * s:Strlen() introduced to support various ways 33 : Sep 20, 2007 * s:Strlen() introduced to support various ways
@ -1335,6 +1382,14 @@ ALIGN HISTORY {{{2
9 : Jun 25, 2002 : implemented cyclic padding 9 : Jun 25, 2002 : implemented cyclic padding
ALIGNMENT MAP HISTORY *alignmap-history* {{{2 ALIGNMENT MAP HISTORY *alignmap-history* {{{2
v41 Nov 02, 2008 * g:loaded_AlignMapsPlugin testing to prevent
re-loading installed
* AlignMaps now use 0x0f (ctrl-p) for special
character substitutions (instead of 0xff).
Seems to avoid some problems with having to
use Strlen().
* bug fixed with \ts,
* new maps: \ts; \ts, \ts: \ts< \ts= \a(
v40 Oct 21, 2008 * Modified AlignMaps so that its maps use <Plug>s v40 Oct 21, 2008 * Modified AlignMaps so that its maps use <Plug>s
and <script>s. \t@ and related maps have been and <script>s. \t@ and related maps have been
changed to call StdAlign() instead. The changed to call StdAlign() instead. The

21
vimfiles/doc/editsrec.txt Normal file
View File

@ -0,0 +1,21 @@
" Vim Global Plugin for Editing .srec Files, doc-File
" Maintainer: Alexander Fleck
" <alexander.fleck@gmx.net>
" License: This File is placed in the Public Domain.
" Revision | Date [DD.MM.YY] | Changes
" 00.01.00 | 05.07.09 | 01. Revision
*editsrec.txt* Global Plugin for Editing .srec Files
This Plugin consists of the following Files:
/plugin/editsrec.vim
/plugin/editsrec_test.txt
/autoload/libsrec.vim
and
/doc/editsrec.txt
, this File.
The Purpose of this Plugin is to edit .srec-Files.
Currently it only allows Editing Line by Line,
but Handling of Files will be added later.

View File

@ -1,8 +1,22 @@
*pi_netrw.txt* For Vim version 7.2. Last change: 2008 Oct 23 *pi_netrw.txt* For Vim version 7.2. Last change: 2009 Dec 28
----------------------------------------------------- -----------------------------------------------------
NETRW REFERENCE MANUAL by Charles E. Campbell, Jr. NETRW REFERENCE MANUAL by Charles E. Campbell, Jr.
----------------------------------------------------- -----------------------------------------------------
Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM>
(remove NOSPAM from Campbell's email first)
Copyright: Copyright (C) 2009 Charles E Campbell, Jr *netrw-copyright*
Permission is hereby granted to use and distribute this code, with
or without modifications, provided that this copyright notice is
copied with it. Like anything else that's free, netrw.vim,
netrwPlugin.vim, netrwFileHandlers.vim, netrwSettings.vim,
syntax/netrw.vim, and pi_netrw.txt are provided *as is* and comes
with no warranty of any kind, either expressed or implied. No
guarantees of merchantability. No guarantees of suitability for
any purpose. By using this plugin, you agree that in no event will
the copyright holder be liable for any damages resulting from the
use of this software.
*dav* *ftp* *netrw-file* *Nread* *rcp* *scp* *dav* *ftp* *netrw-file* *Nread* *rcp* *scp*
@ -18,6 +32,7 @@
EXTERNAL APPLICATIONS AND PROTOCOLS................|netrw-externapp| EXTERNAL APPLICATIONS AND PROTOCOLS................|netrw-externapp|
READING............................................|netrw-read| READING............................................|netrw-read|
WRITING............................................|netrw-write| WRITING............................................|netrw-write|
SOURCING...........................................|netrw-source|
DIRECTORY LISTING..................................|netrw-dirlist| DIRECTORY LISTING..................................|netrw-dirlist|
CHANGING THE USERID AND PASSWORD...................|netrw-chgup| CHANGING THE USERID AND PASSWORD...................|netrw-chgup|
VARIABLES AND SETTINGS.............................|netrw-variables| VARIABLES AND SETTINGS.............................|netrw-variables|
@ -38,7 +53,7 @@
Browsing With A Horizontally Split Window..........|netrw-o| Browsing With A Horizontally Split Window..........|netrw-o|
Browsing With A New Tab............................|netrw-t| Browsing With A New Tab............................|netrw-t|
Browsing With A Vertically Split Window............|netrw-v| Browsing With A Vertically Split Window............|netrw-v|
Change Listing Style...............................|netrw-i| Change Listing Style.(thin wide long tree).........|netrw-i|
Changing To A Bookmarked Directory.................|netrw-gb| Changing To A Bookmarked Directory.................|netrw-gb|
Changing To A Predecessor Directory................|netrw-u| Changing To A Predecessor Directory................|netrw-u|
Changing To A Successor Directory..................|netrw-U| Changing To A Successor Directory..................|netrw-U|
@ -81,10 +96,12 @@
Renaming Files Or Directories......................|netrw-move| Renaming Files Or Directories......................|netrw-move|
Reversing Sorting Order............................|netrw-r| Reversing Sorting Order............................|netrw-r|
Selecting Sorting Style............................|netrw-s| Selecting Sorting Style............................|netrw-s|
Setting Editing Window.............................|netrw-C|
10. Problems and Fixes...................................|netrw-problems| 10. Problems and Fixes...................................|netrw-problems|
11. Debugging Netrw Itself...............................|netrw-debug| 11. Debugging Netrw Itself...............................|netrw-debug|
12. History..............................................|netrw-history| 12. History..............................................|netrw-history|
13. Credits..............................................|netrw-credits| 13. Todo.................................................|netrw-todo|
14. Credits..............................................|netrw-credits|
{Vi does not have any of this} {Vi does not have any of this}
@ -92,7 +109,7 @@
2. Starting With Netrw *netrw-start* {{{1 2. Starting With Netrw *netrw-start* {{{1
Netrw makes reading files, writing files, browsing over a network, and Netrw makes reading files, writing files, browsing over a network, and
browsing locally easy! First, make sure that you have plugins enabled, so local browsing easy! First, make sure that you have plugins enabled, so
you'll need to have at least the following in your <.vimrc>: you'll need to have at least the following in your <.vimrc>:
(or see |netrw-activate|) > (or see |netrw-activate|) >
@ -137,8 +154,11 @@ the directory name is followed by a "/"): >
< <
See |netrw-browse| for more! See |netrw-browse| for more!
There are more protocols supported by netrw just than scp and ftp, too: see the There are more protocols supported by netrw than just scp and ftp, too: see the
next section, |netrw-externapp|, for how to use these external applications. next section, |netrw-externapp|, on how to use these external applications with
netrw and vim.
PREVENTING LOADING
If you want to use plugins, but for some reason don't wish to use netrw, then If you want to use plugins, but for some reason don't wish to use netrw, then
you need to avoid loading both the plugin and the autoload portions of netrw. you need to avoid loading both the plugin and the autoload portions of netrw.
@ -151,7 +171,7 @@ You may do so by placing the following two lines in your <.vimrc>: >
============================================================================== ==============================================================================
3. Netrw Reference *netrw-ref* {{{1 3. Netrw Reference *netrw-ref* {{{1
Netrw supports several protocols in addition to scp and ftp mentioned Netrw supports several protocols in addition to scp and ftp as mentioned
in |netrw-start|. These include dav, fetch, http,... well, just look in |netrw-start|. These include dav, fetch, http,... well, just look
at the list in |netrw-externapp|. Each protocol is associated with a at the list in |netrw-externapp|. Each protocol is associated with a
variable which holds the default command supporting that protocol. variable which holds the default command supporting that protocol.
@ -175,17 +195,19 @@ EXTERNAL APPLICATIONS AND PROTOCOLS *netrw-externapp* {{{2
sftp: *g:netrw_sftp_cmd* = "sftp" sftp: *g:netrw_sftp_cmd* = "sftp"
*g:netrw_http_xcmd* : the option string for http://... protocols are *g:netrw_http_xcmd* : the option string for http://... protocols are
specified via this variable and may be independently oveerridden. specified via this variable and may be independently overridden. By
default, the option arguments for the http-handling commands are: >
elinks : "-dump >" elinks : "-source >"
links : "-dump >" links : "-source >"
curl : "-o" curl : "-o"
wget : "-q -O" wget : "-q -O"
fetch : "-o" fetch : "-o"
<
For example, if your system has elinks but you want to see the html For example, if your system has elinks, and you'd rather see the
source in detail rather than a text rendering thereof, you may wish page using an attempt at rendering the text, you may wish to have >
to have let g:netrw_http_xcmd= "-source >" in your .vimrc. let g:netrw_http_xcmd= "-dump >"
< in your .vimrc.
READING *netrw-read* *netrw-nread* {{{2 READING *netrw-read* *netrw-nread* {{{2
@ -259,8 +281,8 @@ DIRECTORY LISTING *netrw-dirlist* {{{2
:e ftp://[user]@hostname/path/ :e ftp://[user]@hostname/path/
< <
For remote directories (ie. those using scp or ftp), that trailing For remote directories (ie. those using scp or ftp), that trailing
"/" is necessary (it tells netrw that its to treat it as a directory "/" is necessary (the slash tells netrw to treat the argument as a
to browse instead of a file to download). directory to browse instead of a file to download).
However, the Nread command can also be used to accomplish this: However, the Nread command can also be used to accomplish this:
@ -293,8 +315,17 @@ preferences. One way to look at them is via the command :NetrwSettings (see
settings are described below, in |netrw-browser-options|, and in settings are described below, in |netrw-browser-options|, and in
|netrw-externapp|: |netrw-externapp|:
*b:netrw_lastfile* last file Network-read/written retained on a per-buffer *b:netrw_lastfile* last file Network-read/written retained on a
basis (supports plain :Nw ) per-buffer basis (supports plain :Nw )
*g:netrw_chgwin* specifies a window number where file edits will take
place. (also see |netrw-C|)
(default) not defined
*g:Netrw_funcref* specifies a function to be called when netrw edits
a file. The file is first edited, and then the
function reference (|Funcref|) is called.
(default) not defined
*g:netrw_ftp* if it doesn't exist, use default ftp *g:netrw_ftp* if it doesn't exist, use default ftp
=0 use default ftp (uid password) =0 use default ftp (uid password)
@ -303,7 +334,7 @@ settings are described below, in |netrw-browser-options|, and in
value of this variable to see if the alternate ftp value of this variable to see if the alternate ftp
method works for your setup. method works for your setup.
*g:netrw_extracmd* default: doesn't exist *g:netrw_ftpextracmd* default: doesn't exist
If this variable exists, then any string it contains If this variable exists, then any string it contains
will be placed into the commands set to your ftp will be placed into the commands set to your ftp
client. As an example: client. As an example:
@ -323,8 +354,8 @@ settings are described below, in |netrw-browser-options|, and in
*g:netrw_nogx* if this variable exists, then the "gx" map will not *g:netrw_nogx* if this variable exists, then the "gx" map will not
be available (see |netrw-gx|) be available (see |netrw-gx|)
*g:netrw_uid* (ftp) user-id, retained on a per-session basis *g:netrw_uid* (ftp) user-id, retained on a per-vim-session basis
*s:netrw_passwd* (ftp) password, retained on a per-session basis *s:netrw_passwd* (ftp) password, retained on a per-vim-session basis
*g:netrw_preview* =0 (default) preview window shown in a horizontally *g:netrw_preview* =0 (default) preview window shown in a horizontally
split window split window
@ -335,6 +366,13 @@ settings are described below, in |netrw-browser-options|, and in
*g:netrw_scpport* = "-P" : option to use to set port for scp *g:netrw_scpport* = "-P" : option to use to set port for scp
*g:netrw_sshport* = "-p" : option to use to set port for ssh *g:netrw_sshport* = "-p" : option to use to set port for ssh
*g:netrw_sepchr* =\0xff
=\0x01 for enc == euc-jp (and perhaps it should be for
others, too, please let me
know)
Separates priority codes from filenames internally.
See |netrw-p12|.
*g:netrw_silent* =0 : transfers done normally *g:netrw_silent* =0 : transfers done normally
=1 : transfers done silently =1 : transfers done silently
@ -398,6 +436,30 @@ series of commands (typically ftp) which it issues to an external program
from/written to a temporary file (under Unix/Linux, /tmp/...) which the from/written to a temporary file (under Unix/Linux, /tmp/...) which the
<netrw.vim> script will clean up. <netrw.vim> script will clean up.
Now, a word about Jan Minář's "FTP User Name and Password Disclosure"; first,
ftp is not a secure protocol. User names and passwords are transmitted "in
the clear" over the internet; any snooper tool can pick these up; this is not
a netrw thing, this is a ftp thing. If you're concerned about this, please
try to use scp or sftp instead.
Netrw re-uses the user id and password during the same vim session and so long
as the remote hostname remains the same.
Jan seems to be a bit confused about how netrw handles ftp; normally multiple
commands are performed in a "ftp session", and he seems to feel that the
uid/password should only be retained over one ftp session. However, netrw
does every ftp operation in a separate "ftp session"; so remembering the
uid/password for just one "ftp session" would be the same as not remembering
the uid/password at all. IMHO this would rapidly grow tiresome as one
browsed remote directories, for example.
On the other hand, thanks go to Jan M. for pointing out the many
vulnerabilities that netrw (and vim itself) had had in handling "crafted"
filenames. The |shellescape()| and |fnameescape()| functions were written in
response by Bram Moolenaar to handle these sort of problems, and netrw has
been modified to use them. Still, my advice is, if the "filename" looks like
a vim command that you aren't comfortable with having executed, don't open it.
*netrw-putty* *netrw-pscp* *netrw-psftp* *netrw-putty* *netrw-pscp* *netrw-psftp*
One may modify any protocol's implementing external application by setting a One may modify any protocol's implementing external application by setting a
variable (ex. scp uses the variable g:netrw_scp_cmd, which is defaulted to variable (ex. scp uses the variable g:netrw_scp_cmd, which is defaulted to
@ -414,8 +476,8 @@ file). Thus, concerned users may decide to write a NetReadFixup() function
that will clean up after reading with their ftp. Some Unix systems (ie., that will clean up after reading with their ftp. Some Unix systems (ie.,
FreeBSD) provide a utility called "fetch" which uses the ftp protocol but is FreeBSD) provide a utility called "fetch" which uses the ftp protocol but is
not noisy and more convenient, actually, for <netrw.vim> to use. not noisy and more convenient, actually, for <netrw.vim> to use.
Consequently, if "fetch" is executable, it will be used to do reads for Consequently, if "fetch" is available (ie. executable), it may be preferable
ftp://... (and http://...) . See |netrw-var| for more about this. to use it for ftp://... based transfers.
For rcp, scp, sftp, and http, one may use network-oriented file transfers For rcp, scp, sftp, and http, one may use network-oriented file transfers
transparently; ie. transparently; ie.
@ -423,7 +485,7 @@ transparently; ie.
vim rcp://[user@]machine/path vim rcp://[user@]machine/path
vim scp://[user@]machine/path vim scp://[user@]machine/path
< <
If your ftp supports <.netrc>, then it too can be just as transparently used If your ftp supports <.netrc>, then it too can be transparently used
if the needed triad of machine name, user id, and password are present in if the needed triad of machine name, user id, and password are present in
that file. Your ftp must be able to use the <.netrc> file on its own, however. that file. Your ftp must be able to use the <.netrc> file on its own, however.
> >
@ -586,9 +648,8 @@ below, a {netfile} is an url to a remote file.
:[range]Nw[rite] {netfile} [{netfile}]... :[range]Nw[rite] {netfile} [{netfile}]...
Write the specified lines to the {netfile}. Write the specified lines to the {netfile}.
:Nr[ead] Read the specified lines into the current :Nr[ead] Read the lines from the file specified in b:netrw_lastfile
buffer from the file specified in into the current buffer.
b:netrw_lastfile.
:Nr[ead] {netfile} {netfile}... :Nr[ead] {netfile} {netfile}...
Read the {netfile} after the current line. Read the {netfile} after the current line.
@ -651,12 +712,9 @@ set in the user's <.vimrc> file: (see also |netrw-settings| |netrw-protocol|)
to be ignored. to be ignored.
b:netrw_lastfile Holds latest method/machine/path. b:netrw_lastfile Holds latest method/machine/path.
b:netrw_line Holds current line number (during NetWrite) b:netrw_line Holds current line number (during NetWrite)
g:netrw_passwd Holds current password for ftp.
g:netrw_silent =0 transfers done normally g:netrw_silent =0 transfers done normally
=1 transfers done silently =1 transfers done silently
g:netrw_uid Holds current user-id for ftp. g:netrw_uid Holds current user-id for ftp.
=1 use alternate ftp (user uid password)
(see |netrw-options|)
g:netrw_use_nt_rcp =0 don't use WinNT/2K/XP's rcp (default) g:netrw_use_nt_rcp =0 don't use WinNT/2K/XP's rcp (default)
=1 use WinNT/2K/XP's rcp, binary mode =1 use WinNT/2K/XP's rcp, binary mode
g:netrw_win95ftp =0 use unix-style ftp even if win95/98/ME/etc g:netrw_win95ftp =0 use unix-style ftp even if win95/98/ME/etc
@ -672,9 +730,10 @@ temporarily.
Variable Meaning Variable Meaning
-------- ------------------------------------ -------- ------------------------------------
< <
g:netrw_method Index indicating rcp/ftp+.netrc/ftp b:netrw_method Index indicating rcp/ftp+.netrc/ftp
w:netrw_method (same as b:netrw_method)
g:netrw_machine Holds machine name parsed from input g:netrw_machine Holds machine name parsed from input
g:netrw_fname Holds filename being accessed > b:netrw_fname Holds filename being accessed >
------------------------------------------------------------ ------------------------------------------------------------
< <
*netrw-protocol* *netrw-protocol*
@ -764,7 +823,7 @@ renders the server treatment as "trusted".
*netrw-fixup* *netreadfixup* *netrw-fixup* *netreadfixup*
If your ftp for whatever reason generates unwanted lines (such as AUTH If your ftp for whatever reason generates unwanted lines (such as AUTH
messages) you may write a NetReadFixup(tmpfile) function: messages) you may write a NetReadFixup() function:
> >
function! NetReadFixup(method,line1,line2) function! NetReadFixup(method,line1,line2)
" a:line1: first new line in current file " a:line1: first new line in current file
@ -801,7 +860,7 @@ itself:
============================================================================== ==============================================================================
9. Browsing *netrw-browsing* *netrw-browse* *netrw-help* {{{1 9. Browsing *netrw-browsing* *netrw-browse* *netrw-help* {{{1
*netrw-browser* *netrw-dir* *netrw-list* *netrw-browser* *netrw-dir* *netrw-list*
INTRODUCTION TO BROWSING *netrw-intro-browse* {{{2 INTRODUCTION TO BROWSING *netrw-intro-browse* {{{2
(Quick References: |netrw-quickmaps| |netrw-quickcoms|) (Quick References: |netrw-quickmaps| |netrw-quickcoms|)
@ -837,7 +896,7 @@ where [protocol] is typically scp or ftp. As an example, try: >
vim ftp://ftp.home.vim.org/pub/vim/ vim ftp://ftp.home.vim.org/pub/vim/
< <
For local directories, the trailing slash is not required. Again, because its For local directories, the trailing slash is not required. Again, because it's
easy to miss: to browse remote directories, the url must terminate with a easy to miss: to browse remote directories, the url must terminate with a
slash! slash!
@ -849,6 +908,7 @@ There are several things you can do to affect the browser's display of files:
* To change the listing style, press the "i" key (|netrw-i|). * To change the listing style, press the "i" key (|netrw-i|).
Currently there are four styles: thin, long, wide, and tree. Currently there are four styles: thin, long, wide, and tree.
To make that change "permanent", see |g:netrw_liststyle|.
* To hide files (don't want to see those xyz~ files anymore?) see * To hide files (don't want to see those xyz~ files anymore?) see
|netrw-ctrl-h|. |netrw-ctrl-h|.
@ -857,6 +917,18 @@ There are several things you can do to affect the browser's display of files:
See |netrw-browse-cmds| for all the things you can do with netrw! See |netrw-browse-cmds| for all the things you can do with netrw!
*netrw-getftype* *netrw-filigree* *netrw-ftype*
The |getftype()| function is used to append a bit of filigree to indicate
filetype to locally listed files:
directory : /
executable : *
fifo : |
links : @
sockets : =
The filigree also affects the |g:netrw_sort_sequence|.
QUICK HELP *netrw-quickhelp* {{{2 QUICK HELP *netrw-quickhelp* {{{2
(Use ctrl-] to select a topic)~ (Use ctrl-] to select a topic)~
@ -895,11 +967,11 @@ QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2
hiding (suppress display of files matching g:netrw_list_hide) hiding (suppress display of files matching g:netrw_list_hide)
showing (display only files which match g:netrw_list_hide) showing (display only files which match g:netrw_list_hide)
c Make browsing directory the current directory |netrw-c| c Make browsing directory the current directory |netrw-c|
C Setting the editing window |netrw-C|
d Make a directory |netrw-d| d Make a directory |netrw-d|
D Attempt to remove the file(s)/directory(ies) |netrw-D| D Attempt to remove the file(s)/directory(ies) |netrw-D|
gb Go to previous bookmarked directory |netrw-gb| gb Go to previous bookmarked directory |netrw-gb|
gh Quick hide/unhide of dot-files |netrw-gh| gh Quick hide/unhide of dot-files |netrw-gh|
gi Display information on file |netrw-qf|
<c-h> Edit file hiding list |netrw-ctrl-h| <c-h> Edit file hiding list |netrw-ctrl-h|
i Cycle between thin, long, wide, and tree listings |netrw-i| i Cycle between thin, long, wide, and tree listings |netrw-i|
<c-l> Causes Netrw to refresh the directory listing |netrw-ctrl-l| <c-l> Causes Netrw to refresh the directory listing |netrw-ctrl-l|
@ -911,18 +983,19 @@ QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2
mh Toggle marked file suffices' presence on hiding list |netrw-mh| mh Toggle marked file suffices' presence on hiding list |netrw-mh|
mm Move marked files to marked-file target directory |netrw-mm| mm Move marked files to marked-file target directory |netrw-mm|
mp Print marked files |netrw-mp| mp Print marked files |netrw-mp|
mr Mark files satisfying a |regexp| |netrw-mr| mr Mark files satisfying a shell-style |regexp| |netrw-mr|
mt Current browsing directory becomes markfile target |netrw-mt| mt Current browsing directory becomes markfile target |netrw-mt|
mT Apply ctags to marked files |netrw-mT| mT Apply ctags to marked files |netrw-mT|
mu Unmark all marked files |netrw-mu| mu Unmark all marked files |netrw-mu|
mx Apply arbitrary shell command to marked files |netrw-mx| mx Apply arbitrary shell command to marked files |netrw-mx|
mz Compress/decompress marked files |netrw-mz| mz Compress/decompress marked files |netrw-mz|
o Enter the file/directory under the cursor in a new |netrw-o| o Enter the file/directory under the cursor in a new |netrw-o|
browser window. A horizontal split is used. browser window. A horizontal split is used.
O Obtain a file specified by cursor |netrw-O| O Obtain a file specified by cursor |netrw-O|
p Preview the file |netrw-p| p Preview the file |netrw-p|
P Browse in the previously used window |netrw-P| P Browse in the previously used window |netrw-P|
q List bookmarked directories and history |netrw-qb| qb List bookmarked directories and history |netrw-qb|
qf Display information on file |netrw-qf|
r Reverse sorting order |netrw-r| r Reverse sorting order |netrw-r|
R Rename the designed file(s)/directory(ies) |netrw-R| R Rename the designed file(s)/directory(ies) |netrw-R|
s Select sorting style: by name, time, or file size |netrw-s| s Select sorting style: by name, time, or file size |netrw-s|
@ -931,11 +1004,12 @@ QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2
u Change to recently-visited directory |netrw-u| u Change to recently-visited directory |netrw-u|
U Change to subsequently-visited directory |netrw-U| U Change to subsequently-visited directory |netrw-U|
v Enter the file/directory under the cursor in a new |netrw-v| v Enter the file/directory under the cursor in a new |netrw-v|
browser window. A vertical split is used. browser window. A vertical split is used.
x View file with an associated program |netrw-x| x View file with an associated program |netrw-x|
% Open a new file in netrw's current directory |netrw-%| % Open a new file in netrw's current directory |netrw-%|
*netrw-mouse* *netrw-leftmouse* *netrw-middlemouse* *netrw-rightmouse*
<leftmouse> (gvim only) selects word under mouse as if a <cr> <leftmouse> (gvim only) selects word under mouse as if a <cr>
had been pressed (ie. edit file, change directory) had been pressed (ie. edit file, change directory)
<middlemouse> (gvim only) same as P selecting word under mouse; <middlemouse> (gvim only) same as P selecting word under mouse;
@ -970,7 +1044,7 @@ One may easily "bookmark" a directory by using >
mb mb
< <
Bookmarks are retained in between sesions in a $HOME/.netrwbook file, and are Bookmarks are retained in between sessions in a $HOME/.netrwbook file, and are
kept in sorted order. kept in sorted order.
Related Topics: Related Topics:
@ -999,8 +1073,8 @@ horizontally or vertically, respectively. When the option is set to three, a
<cr> will cause the file to appear in a new tab. <cr> will cause the file to appear in a new tab.
When using the gui (gvim) one may select a file by pressing the <leftmouse> When using the gui (gvim), one may select a file by pressing the <leftmouse>
button. In addtion, if button. In addition, if
*|g:netrw_retmap| == 1 AND (its default value is 0) *|g:netrw_retmap| == 1 AND (its default value is 0)
* in a netrw-selected file, AND * in a netrw-selected file, AND
@ -1041,19 +1115,19 @@ new window and cursor at the bottom, have
let g:netrw_alto = 1 let g:netrw_alto = 1
in your <.vimrc>. (also see |netrw-t| |netrw-v|) in your <.vimrc>. (also see |netrw-t| |netrw-T| |netrw-v|)
There is only one tree listing buffer; using "o" on a displayed subdirectory
will split the screen, but the same buffer will be shown twice.
Associated setting variables: |g:netrw_alto| |g:netrw_winsize| Associated setting variables: |g:netrw_alto| |g:netrw_winsize|
BROWSING WITH A NEW TAB *netrw-t* {{{2 BROWSING WITH A NEW TAB *netrw-t* *netrw-T* {{{2
Normally one enters a file or directory using the <cr>. The "t" map Normally one enters a file or directory using the <cr>. The "t" map
allows one to open a new window hold the new directory listing or file in a allows one to open a new window holding the new directory listing or file in
new tab. (also see: |netrw-o| |netrw-v|) a new tab. The "T" version puts the file or directory into a background tab
(see |gT|)
Related actions: |netrw-o| |netrw-v|
BROWSING WITH A VERTICALLY SPLIT WINDOW *netrw-v* {{{2 BROWSING WITH A VERTICALLY SPLIT WINDOW *netrw-v* {{{2
@ -1068,18 +1142,19 @@ window and cursor at the right, have
let g:netrw_altv = 1 let g:netrw_altv = 1
in your <.vimrc>. (also see: |netrw-o| |netrw-t|) in your <.vimrc>. (also see: |netrw-o| |netrw-t| |netrw-T|)
There is only one tree listing buffer; using "v" on a displayed subdirectory There is only one tree listing buffer; using "v" on a displayed subdirectory
will split the screen, but the same buffer will be shown twice. will split the screen, but the same buffer will be shown twice.
Associated setting variable: |g:netrw_altv| |g:netrw_winsize| Associated setting variable: |g:netrw_altv| |g:netrw_winsize|
CHANGE LISTING STYLE *netrw-i* {{{2
CHANGE LISTING STYLE (THIN LONG WIDE TREE) *netrw-i* {{{2
The "i" map cycles between the thin, long, wide, and tree listing formats. The "i" map cycles between the thin, long, wide, and tree listing formats.
The short listing format gives just the files' and directories' names. The thin listing format gives just the files' and directories' names.
The long listing is either based on the "ls" command via ssh for remote The long listing is either based on the "ls" command via ssh for remote
directories or displays the filename, file size (in bytes), and the time and directories or displays the filename, file size (in bytes), and the time and
@ -1095,13 +1170,23 @@ This listing format is the most compact.
The tree listing format has a top directory followed by files and directories The tree listing format has a top directory followed by files and directories
preceded by a "|". One may open and close directories by pressing the <cr> preceded by a "|". One may open and close directories by pressing the <cr>
key while atop the directory name. There is only one tree listing buffer; key while atop the directory name.
hence, using "v" or "o" on a subdirectory will only show the same buffer,
twice. One may make a preferred listing style your default; see |g:netrw_liststyle|.
As an example, by putting the following line in your .vimrc, >
let g:netrw_liststyle= 4
the tree style will become your default listing style.
Associated setting variables: |g:netrw_liststyle| |g:netrw_maxfilenamelen| Associated setting variables: |g:netrw_liststyle| |g:netrw_maxfilenamelen|
|g:netrw_timefmt| |g:netrw_list_cmd| |g:netrw_timefmt| |g:netrw_list_cmd|
CHANGE FILE PERMISSION *netrw-gp* {{{2
"gp" will ask you for a new permission for the file named under the cursor.
Currently, this only works for local files.
Associated setting variables: |g:netrw_chgperm|
CHANGING TO A BOOKMARKED DIRECTORY *netrw-gb* {{{2 CHANGING TO A BOOKMARKED DIRECTORY *netrw-gb* {{{2
@ -1113,7 +1198,7 @@ Any count may be used to reference any of the bookmarks.
Related Topics: Related Topics:
|netrw-mB| how to delete bookmarks |netrw-mB| how to delete bookmarks
|netrw-mb| how to return to a bookmark |netrw-mb| how to make a bookmark
|netrw-qb| how to list bookmarks |netrw-qb| how to list bookmarks
@ -1189,7 +1274,7 @@ the handler function must exist for it to be called!
NFH_html("scp://user@host/some/path/mypgm.html") NFH_html("scp://user@host/some/path/mypgm.html")
< <
Users may write their own netrw File Handler functions to support more Users may write their own netrw File Handler functions to support more
suffixes with special handling. See <plugin/netrwFileHandlers.vim> for suffixes with special handling. See <autoload/netrwFileHandlers.vim> for
examples on how to make file handler functions. As an example: > examples on how to make file handler functions. As an example: >
" NFH_suffix(filename) " NFH_suffix(filename)
@ -1272,12 +1357,12 @@ Associated setting variable: |g:netrw_local_rmdir| |g:netrw_rm_cmd|
*netrw-rexplore* *netrw-sexplore* *netrw-texplore* *netrw-vexplore* *netrw-rexplore* *netrw-sexplore* *netrw-texplore* *netrw-vexplore*
DIRECTORY EXPLORATION COMMANDS {{{2 DIRECTORY EXPLORATION COMMANDS {{{2
:[N]Explore[!] [dir]... Explore directory of current file *:Explore* :[N]Explore[!] [dir]... Explore directory of current file *:Explore*
:[N]Hexplore[!] [dir]... Horizontal Split & Explore *:Hexplore* :[N]Hexplore[!] [dir]... Horizontal Split & Explore *:Hexplore*
:Rexplore ... Return to Explorer *:Rexplore* :Rexplore ... Return to Explorer *:Rexplore*
:[N]Sexplore[!] [dir]... Split&Explore current file's directory*:Sexplore* :[N]Sexplore[!] [dir]... Split&Explore current file's directory *:Sexplore*
:Texplore [dir]... Tab & Explore *:Texplore* :Texplore [dir]... Tab & Explore *:Texplore*
:[N]Vexplore[!] [dir]... Vertical Split & Explore *:Vexplore* :[N]Vexplore[!] [dir]... Vertical Split & Explore *:Vexplore*
Used with :Explore **/pattern : (also see |netrw-starstar|) Used with :Explore **/pattern : (also see |netrw-starstar|)
:Nexplore............. go to next matching file *:Nexplore* :Nexplore............. go to next matching file *:Nexplore*
@ -1312,8 +1397,8 @@ windows should have.
:Rexplore This command is a little different from the others. When one :Rexplore This command is a little different from the others. When one
edits a file, for example by pressing <cr> when atop a file in edits a file, for example by pressing <cr> when atop a file in
a netrw browser window, :Rexplore will return the display to a netrw browser window, :Rexplore will return the display to
that of the last netrw browser window. Its a command version that of the last netrw browser window. It is a command version
of <2-leftmouse> (which is only available under gvim and of the <2-leftmouse> map (which is only available under gvim and
cooperative terms). cooperative terms).
@ -1326,11 +1411,11 @@ the request. >
*/filepat files in current directory which satisfy filepat */filepat files in current directory which satisfy filepat
**/filepat files in current directory or below which satisfy the **/filepat files in current directory or below which satisfy the
file pattern file pattern
*//pattern files in the current directory which contain the *//pattern files in the current directory which contain the
pattern (vimgrep is used) pattern (vimgrep is used)
**//pattern files in the current directory or below which contain **//pattern files in the current directory or below which contain
the pattern (vimgrep is used) the pattern (vimgrep is used)
< <
The cursor will be placed on the first file in the list. One may then The cursor will be placed on the first file in the list. One may then
continue to go to subsequent files on that list via |:Nexplore| or to continue to go to subsequent files on that list via |:Nexplore| or to
@ -1383,6 +1468,18 @@ be the only ones displayed (see |netrw-a|).
The "gh" mapping (see |netrw-gh|) quickly alternates between the usual The "gh" mapping (see |netrw-gh|) quickly alternates between the usual
hiding list and the hiding of files or directories that begin with ".". hiding list and the hiding of files or directories that begin with ".".
As an example, >
let g:netrw_list_hide= '\(^\|\s\s\)\zs\.\S\+'
Effectively, this makes the effect of a |netrw-gh| command the initial setting.
What it means:
\(^\|\s\s\) : if the line begins with the following, -or-
two consecutive spaces are encountered
\zs : start the hiding match now
\. : if it now begins with a dot
\S\+ : and is followed by one or more non-whitespace
characters
Associated setting variables: |g:netrw_hide| |g:netrw_list_hide| Associated setting variables: |g:netrw_hide| |g:netrw_list_hide|
Associated topics: |netrw-a| |netrw-gh| |netrw-mh| Associated topics: |netrw-a| |netrw-gh| |netrw-mh|
@ -1393,7 +1490,12 @@ When "Sorted by" is name, one may specify priority via the sorting sequence
(g:netrw_sort_sequence). The sorting sequence typically prioritizes the (g:netrw_sort_sequence). The sorting sequence typically prioritizes the
name-listing by suffix, although any pattern will do. Patterns are delimited name-listing by suffix, although any pattern will do. Patterns are delimited
by commas. The default sorting sequence is (all one line): by commas. The default sorting sequence is (all one line):
>
For Unix: >
'[\/]$,\<core\%(\.\d\+\)\=,\.[a-np-z]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,
\.info$,\.swp$,\.bak$,\~$'
<
Otherwise: >
'[\/]$,\.[a-np-z]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$, '[\/]$,\.[a-np-z]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,
\.swp$,\.bak$,\~$' \.swp$,\.bak$,\~$'
< <
@ -1632,10 +1734,11 @@ MARKING FILES BY REGULAR EXPRESSION *netrw-mr* {{{2
(also see |netrw-mf|) (also see |netrw-mf|)
One may also mark files by pressing "mr"; netrw will then issue a prompt, One may also mark files by pressing "mr"; netrw will then issue a prompt,
"Enter regexp: ". You may then enter a regular expression such as \.c$ . "Enter regexp: ". You may then enter a shell-style regular expression such
All files in the current directory will then be marked. Note that the as *.c$ (see |glob()|). For remote systems, glob() doesn't work -- so netrw
regular expressions are vim-style |regexp| ones, not shell ones. So converts "*" into ".*" (see |regexp|) and marks files based on that. In the
entering *.c probably isn't what you want! future I may make it possible to use |regexp|s instead of glob()-style
expressions (yet-another-option).
MARKED FILES: ARBITRARY COMMAND *netrw-mx* {{{2 MARKED FILES: ARBITRARY COMMAND *netrw-mx* {{{2
@ -1718,7 +1821,7 @@ MARKED FILES: MOVING *netrw-mm* {{{2
first or do the copy and then delete yourself using mc and D. first or do the copy and then delete yourself using mc and D.
Use at your own risk! Use at your own risk!
Select a target directory with mT (|netrw-mt|). Then change directory, Select a target directory with mt (|netrw-mt|). Then change directory,
select file(s) (see |netrw-mf|), and press "mm". select file(s) (see |netrw-mf|), and press "mm".
Associated setting variable: |g:netrw_localmovecmd| |g:netrw_ssh_cmd| Associated setting variable: |g:netrw_localmovecmd| |g:netrw_ssh_cmd|
@ -1743,7 +1846,7 @@ MARKED FILES: TAGGING *netrw-mT* {{{2
(See |netrw-mf| and |netrw-mr| for how to mark files) (See |netrw-mf| and |netrw-mr| for how to mark files)
(uses the global marked file list) (uses the global marked file list)
The "mt" mapping will apply the command in |g:netrw_ctags| (by default, its The "mT" mapping will apply the command in |g:netrw_ctags| (by default, it is
"ctags") to marked files. For remote browsing, in order to create a tags file "ctags") to marked files. For remote browsing, in order to create a tags file
netrw will use ssh (see |g:netrw_ssh_cmd|), and so ssh must be available for netrw will use ssh (see |g:netrw_ssh_cmd|), and so ssh must be available for
this to work on remote systems. For your local system, see |ctags| on how to this to work on remote systems. For your local system, see |ctags| on how to
@ -1791,7 +1894,7 @@ The "mu" mapping will unmark all currently marked files.
NETRW BROWSER VARIABLES *netrw-browser-options* *netrw-browser-var* {{{2 NETRW BROWSER VARIABLES *netrw-browser-options* *netrw-browser-var* {{{2
(if you're interestd in the netrw file transfer settings, see |netrw-options|) (if you're interested in the netrw file transfer settings, see |netrw-options|)
The <netrw.vim> browser provides settings in the form of variables which The <netrw.vim> browser provides settings in the form of variables which
you may modify; by placing these settings in your <.vimrc>, you may customize you may modify; by placing these settings in your <.vimrc>, you may customize
@ -1808,12 +1911,21 @@ your browsing preferences. (see also: |netrw-settings|)
by setting this variable (see |netrw-v|) by setting this variable (see |netrw-v|)
default: =&spr (see |'spr'|) default: =&spr (see |'spr'|)
*g:netrw_banner* enable/suppress the banner
=0: suppress the banner
=1: banner is enabled (default)
NOTE: suppressing the banner is a new feature
which may cause problems.
*g:netrw_browse_split* when browsing, <cr> will open the file by: *g:netrw_browse_split* when browsing, <cr> will open the file by:
=0: re-using the same window =0: re-using the same window
=1: horizontally splitting the window first =1: horizontally splitting the window first
=2: vertically splitting the window first =2: vertically splitting the window first
=3: open file in new tab =3: open file in new tab
=4: act like "P" (ie. open previous window) =4: act like "P" (ie. open previous window)
Note that |g:netrw_preview| may be used
to get vertical splitting instead of
horizontal splitting.
*g:netrw_browsex_viewer* specify user's preference for a viewer: > *g:netrw_browsex_viewer* specify user's preference for a viewer: >
"kfmclient exec" "kfmclient exec"
@ -1824,6 +1936,10 @@ your browsing preferences. (see also: |netrw-settings|)
a script/function to handle the given a script/function to handle the given
extension. (see |netrw_filehandler|). extension. (see |netrw_filehandler|).
*g:netrw_chgperm* Unix/Linux: "chmod PERM FILENAME"
Windows: "cacls FILENAME /e /p PERM"
Used to change access permission for a file.
*g:netrw_compress* ="gzip" *g:netrw_compress* ="gzip"
Will compress marked files with this Will compress marked files with this
command command
@ -1836,10 +1952,10 @@ your browsing preferences. (see also: |netrw-settings|)
|g:netrw_liststyle| ==0 (thin listing) or |g:netrw_liststyle| ==0 (thin listing) or
|g:netrw_liststyle| ==1 (long listing) or |g:netrw_liststyle| ==1 (long listing) or
|g:netrw_liststyle| ==3 (tree listing) |g:netrw_liststyle| ==3 (tree listing)
(ie. doesn't affect the wide listing)
=0: off =0: off
=2: like ==1, but the wide listing gets both =2: like ==1, but the wide listing gets both
cursorline and |'cursorcolumn'|locally set cursorline and |'cursorcolumn'|locally set
(ie. doesn't affect the wide listing)
*g:netrw_decompress* = { ".gz" : "gunzip" , *g:netrw_decompress* = { ".gz" : "gunzip" ,
".bz2" : "bunzip2" , ".bz2" : "bunzip2" ,
@ -1873,7 +1989,7 @@ your browsing preferences. (see also: |netrw-settings|)
versus speed. versus speed.
*g:netrw_fname_escape* =' ?&;%' *g:netrw_fname_escape* =' ?&;%'
Used on filenames before remote reading/writing Used on filenames before remote reading/writing
*g:netrw_ftp_browse_reject* ftp can produce a number of errors and warnings *g:netrw_ftp_browse_reject* ftp can produce a number of errors and warnings
that can show up as "directories" and "files" that can show up as "directories" and "files"
@ -1907,7 +2023,7 @@ your browsing preferences. (see also: |netrw-settings|)
otherwise "dir" otherwise "dir"
*g:netrw_glob_escape* ='[]*?`{~$' *g:netrw_glob_escape* ='[]*?`{~$'
These characters in directory names are These characters in directory names are
escaped before applying glob() escaped before applying glob()
*g:netrw_hide* if true, the hiding list is used *g:netrw_hide* if true, the hiding list is used
@ -1942,12 +2058,12 @@ your browsing preferences. (see also: |netrw-settings|)
default: "" default: ""
*g:netrw_localcopycmd* ="cp" Linux/Unix/MacOS/Cygwin *g:netrw_localcopycmd* ="cp" Linux/Unix/MacOS/Cygwin
="copy" Windows ="copy" Windows
Copies marked files (|netrw-mf|) to target Copies marked files (|netrw-mf|) to target
directory (|netrw-mt|, |netrw-mc|) directory (|netrw-mt|, |netrw-mc|)
*g:netrw_localmovecmd* ="mv" Linux/Unix/MacOS/Cygwin *g:netrw_localmovecmd* ="mv" Linux/Unix/MacOS/Cygwin
="move" Windows ="move" Windows
Moves marked files (|netrw-mf|) to target Moves marked files (|netrw-mf|) to target
directory (|netrw-mt|, |netrw-mm|) directory (|netrw-mt|, |netrw-mm|)
@ -1967,6 +2083,14 @@ your browsing preferences. (see also: |netrw-settings|)
*g:netrw_mkdir_cmd* command for making a remote directory *g:netrw_mkdir_cmd* command for making a remote directory
default: "ssh USEPORT HOSTNAME mkdir" default: "ssh USEPORT HOSTNAME mkdir"
*g:netrw_mousemaps* =1 (default) enables the mouse buttons
while browsing:
leftmouse : open file/directory
shift-leftmouse : mark file
middlemouse : same as P
rightmouse : remove file/directory
=0: disables mouse maps
*g:netrw_retmap* if it exists and is set to one, then: *g:netrw_retmap* if it exists and is set to one, then:
* if in a netrw-selected file, AND * if in a netrw-selected file, AND
* no normal-mode <2-leftmouse> mapping exists, * no normal-mode <2-leftmouse> mapping exists,
@ -2010,12 +2134,14 @@ your browsing preferences. (see also: |netrw-settings|)
< default: "" < default: ""
*g:netrw_sort_sequence* when sorting by name, first sort by the *g:netrw_sort_sequence* when sorting by name, first sort by the
comma-separated pattern sequence comma-separated pattern sequence. Note that
the filigree added to indicate filetypes
should be accounted for in your pattern.
default: '[\/]$,*,\.bak$,\.o$,\.h$, default: '[\/]$,*,\.bak$,\.o$,\.h$,
\.info$,\.swp$,\.obj$' \.info$,\.swp$,\.obj$'
*g:netrw_special_syntax* If true, then certain files will be shown *g:netrw_special_syntax* If true, then certain files will be shown
in special syntax in the browser: in special syntax in the browser:
netrwBak : *.bak netrwBak : *.bak
netrwCompress: *.gz *.bz2 *.Z *.zip netrwCompress: *.gz *.bz2 *.Z *.zip
@ -2050,7 +2176,7 @@ your browsing preferences. (see also: |netrw-settings|)
*g:netrw_tmpfile_escape* =' &;' *g:netrw_tmpfile_escape* =' &;'
escape() is applied to all temporary files escape() is applied to all temporary files
to escape these characters. to escape these characters.
*g:netrw_timefmt* specify format string to vim's strftime(). *g:netrw_timefmt* specify format string to vim's strftime().
@ -2064,7 +2190,7 @@ your browsing preferences. (see also: |netrw-settings|)
default: "%c" default: "%c"
*g:netrw_use_noswf* netrw normally avoids writing swapfiles *g:netrw_use_noswf* netrw normally avoids writing swapfiles
for browser buffers. However, under some for browser buffers. However, under some
systems this apparently is causing nasty systems this apparently is causing nasty
ml_get errors to appear; if you're getting ml_get errors to appear; if you're getting
ml_get errors, try putting ml_get errors, try putting
@ -2076,18 +2202,18 @@ your browsing preferences. (see also: |netrw-settings|)
|:Hexplore| or |:Vexplore|. |:Hexplore| or |:Vexplore|.
default: "" default: ""
*g:netrw_xstrlen* Controls how netrw computes a string *g:netrw_xstrlen* Controls how netrw computes string lengths,
including multi-byte characters' string including multi-byte characters' string
length. (thanks to N Weibull, T Mechelynck) length. (thanks to N Weibull, T Mechelynck)
=0: uses Vim's built-in strlen() =0: uses Vim's built-in strlen()
=1: number of codepoints (Latin + a combining =1: number of codepoints (Latin a + combining
circumflex is two codepoints) (DEFAULT) circumflex is two codepoints) (DEFAULT)
=2: number of spacing codepoints (Latin a + =2: number of spacing codepoints (Latin a +
combining circumflex is one spacing combining circumflex is one spacing
codepoint; a hard tab is one; wide and codepoint; a hard tab is one; wide and
narrow CJK are one each; etc.) narrow CJK are one each; etc.)
=3: virtual length (counting tabs as anything =3: virtual length (counting tabs as anything
between 1 and |'tabstop'|, wide CJJK as 2 between 1 and |'tabstop'|, wide CJK as 2
rather than 1, Arabic alif as zero when rather than 1, Arabic alif as zero when
immediately preceded by lam, one immediately preceded by lam, one
otherwise, etc) otherwise, etc)
@ -2238,6 +2364,16 @@ Related topics: |netrw-r| |netrw-S|
Associated setting variables: |g:netrw_sort_by| |g:netrw_sort_sequence| Associated setting variables: |g:netrw_sort_by| |g:netrw_sort_sequence|
SETTING EDITING WINDOW *netrw-C* {{{2
One may select a netrw window for editing with the "C" mapping, or by setting
g:netrw_chgwin to the selected window number. Subsequent selection of a file
to edit (|netrw-cr|) will use that window.
Related topics: |netrw-cr|
Associated setting variables: |g:netrw_chgwin|
10. Problems and Fixes *netrw-problems* {{{1 10. Problems and Fixes *netrw-problems* {{{1
(This section is likely to grow as I get feedback) (This section is likely to grow as I get feedback)
@ -2259,7 +2395,7 @@ Associated setting variables: |g:netrw_sort_by| |g:netrw_sort_sequence|
Windows' ftp has a minimal support for ls (ie. it doesn't Windows' ftp has a minimal support for ls (ie. it doesn't
accept sorting options). It doesn't support the -F which accept sorting options). It doesn't support the -F which
gives an explanatory character (ABC/ for "ABC is a directory"). gives an explanatory character (ABC/ for "ABC is a directory").
Netrw then uses "dir" to get both its short and long listings. Netrw then uses "dir" to get both its thin and long listings.
If you think your ftp does support a full-up ls, put the If you think your ftp does support a full-up ls, put the
following into your <.vimrc>: > following into your <.vimrc>: >
@ -2350,7 +2486,7 @@ Associated setting variables: |g:netrw_sort_by| |g:netrw_sort_sequence|
http://the.earth.li/~sgtatham/putty/0.58/htmldoc/Chapter7.html#plink http://the.earth.li/~sgtatham/putty/0.58/htmldoc/Chapter7.html#plink
(Vissale Neang) Maybe you can try OpenSSH for windows, which (Vissale Neang) Maybe you can try OpenSSH for windows, which
can be obtained from: can be obtained from:
http://sshwindows.sourceforge.net/ http://sshwindows.sourceforge.net/
@ -2451,6 +2587,16 @@ Associated setting variables: |g:netrw_sort_by| |g:netrw_sort_sequence|
<leftmouse> in the browser window and then press the <leftmouse> in the browser window and then press the
<middlemouse> to select the file. <middlemouse> to select the file.
*netrw-p12*
P12. My directory isn't sorting correctly, or unwanted letters are
appearing in the listed filenames, or things aren't lining
up properly in the wide listing, ...
This may be due to an encoding problem. I myself usually use
utf-8, but really only use ascii (ie. bytes from 32-126).
Multibyte encodings use two (or more) bytes per character.
You may need to change |g:netrw_sepchr| and/or |g:netrw_xstrlen|.
============================================================================== ==============================================================================
11. Debugging Netrw Itself *netrw-debug* {{{1 11. Debugging Netrw Itself *netrw-debug* {{{1
@ -2496,7 +2642,7 @@ which is loaded automatically at startup (assuming :set nocp).
read/write your file over the network in a separate tab. read/write your file over the network in a separate tab.
To save the file, use > To save the file, use >
:wincmd j :tabnext
:set bt= :set bt=
:w! DBG :w! DBG
< Please send that information to <netrw.vim>'s maintainer, > < Please send that information to <netrw.vim>'s maintainer, >
@ -2505,6 +2651,57 @@ which is loaded automatically at startup (assuming :set nocp).
============================================================================== ==============================================================================
12. History *netrw-history* {{{1 12. History *netrw-history* {{{1
v136: Jan 14, 2009 * extended |g:Netrw_funcref| to also handle lists
of function references
Jan 14, 2009 * (reported by Marvin Renich) with spell check
enabled, some filenamess will still being
displayed as spelling errors.
Apr 13, 2009 * (Björn Winckler) writing a file using
remote scp caused syntax highlighting problem.
Solution: avoid syntax/syntax.vim's
au Filetype * syntax setting autocommand by
checking that the current buffer has the
netrw filetype before attempting a doau
in s:NetrwSafeOptions().
Apr 14, 2009 * (asgeo1) suggested the "T" map (|netrw-T|)
Apr 14, 2009 * marking wasn't working on executable and
other special filenames
Apr 20, 2009 * (Dennis Benzinger) files opened via http have
their syntax filetype auto-detected
Jun 19, 2009 * (Yukihiro Nakadaira) help document improvements
Jul 22, 2009 * g:netrw_browse_split will honor the
|'equalalways'| setting.
Jul 29, 2009 * implemented "I" mapping to toggle banner
(this is experimental and still being debugged)
Sep 19, 2009 * (Mike McEwan) writes via ftp now send both
g:netrw_ftpmode and g:netrw_ftpextracmd (if the
latter exists)
Dec 02, 2009 * netrw uses vimgrep several places; it now uses
"noautocmd vimgrep" (should be speedier).
Dec 03, 2009 * changed back to using -source instead of -dump
for elinks-using commands. (requested by James
Vega and Karsten Hopp)
v135: Oct 29, 2008 * using |simplify()| on directory names
(supporting handling ".."s in directory names)
Oct 31, 2008 * added special file highlighting for core dumps
under Unix/Linux. The default sorting sequence
now also gives core dumps priority.
Nov 10, 2008 * uses a call to netrw#Nread() instead of Nread
to avoid having to use fnameescape()
* fixed a tree redrawing problem (open directory,
open subdir, close subdir, close dir)
Nov 19, 2008 * sprinkled some histdel("/",-1)s through the code
in an attempt to prevent netrw from changing
the search history.
Jan 02, 2009 * |g:Netrw_funcref| included
Jan 05, 2009 * Explore */ **/ *// **// all clear explorer
variables
Jan 05, 2009 * (Panagiotis Louridas) extended s:WinPath()
to remove cygdrive from non-cygwin Windows
paths. Improved the determination as to
whether or not to do so.
Jan 13, 2009 * included contains=@NoSpell in every syntax
group for syntax/netrw.vim .
v134: Sep 30, 2008 * (Sander Marechal) provided a bugfix involving v134: Sep 30, 2008 * (Sander Marechal) provided a bugfix involving
the use of the |netrw-t| command with a remote the use of the |netrw-t| command with a remote
directory. directory.
@ -2656,8 +2853,8 @@ which is loaded automatically at startup (assuming :set nocp).
* executable files now displayed with trailing (*) * executable files now displayed with trailing (*)
* symbolically linked files now displayed with * symbolically linked files now displayed with
trailing (@) trailing (@)
* Somewhen, s:NetrwMarkFileMove() got damaged. Its * Somewhen, s:NetrwMarkFileMove() got damaged. It
now restored (missing an endif, for example). * is now restored (missing an endif, for example).
* |netrw-mu| implemented (unmarking marked files) * |netrw-mu| implemented (unmarking marked files)
* many bugs have been removed from the marked file * many bugs have been removed from the marked file
system (tnx to Mark S. for feedback) system (tnx to Mark S. for feedback)
@ -2728,7 +2925,7 @@ which is loaded automatically at startup (assuming :set nocp).
the end of the s:NetrwBrowseChgDir() function; the end of the s:NetrwBrowseChgDir() function;
they're now at the end of every if..elseif..else they're now at the end of every if..elseif..else
block. The edit-a-file one is not quite at the end block. The edit-a-file one is not quite at the end
of its block; instead, its just before the edit. of its block; instead, it's just before the edit.
Restores user options, then this new placement Restores user options, then this new placement
allows ftplugins, autocmds, etc to change settings allows ftplugins, autocmds, etc to change settings
(ex. ftplugin/cpp.vim sets cindent). (ex. ftplugin/cpp.vim sets cindent).
@ -2765,7 +2962,7 @@ which is loaded automatically at startup (assuming :set nocp).
marked files. marked files.
v110: May 10, 2007 * added [ and ] maps to NetrwTreeListing v110: May 10, 2007 * added [ and ] maps to NetrwTreeListing
May 25, 2007 * |g:netrw_preview| included May 25, 2007 * |g:netrw_preview| included
May 29, 2007 * modifed netrw#NetBrowseX to consistently use May 29, 2007 * modified netrw#NetBrowseX to consistently use
g:netrw_shq instead of hardcoded quotes, g:netrw_shq instead of hardcoded quotes,
and modified the snippet that sets up redir and modified the snippet that sets up redir
so Windows machines use "nul" instead of so Windows machines use "nul" instead of
@ -3226,7 +3423,16 @@ which is loaded automatically at startup (assuming :set nocp).
============================================================================== ==============================================================================
12. Credits *netrw-credits* {{{1 13. Todo *netrw-todo* {{{1
07/29/09 : banner :|g:netrw_banner| can be used to suppress the
suppression banner. This feature is new and experimental,
so its in the process of being debugged.
09/04/09 : "gp" : See if it can be made to work for remote systems.
: See if it can be made to work with marked files.
==============================================================================
14. Credits *netrw-credits* {{{1
Vim editor by Bram Moolenaar (Thanks, Bram!) Vim editor by Bram Moolenaar (Thanks, Bram!)
dav support by C Campbell dav support by C Campbell

View File

@ -1,4 +1,4 @@
*pi_vimball.txt* For Vim version 7.1. Last change: 2008 May 30 *pi_vimball.txt* For Vim version 7.2. Last change: 2009 Dec 28
---------------- ----------------
Vimball Archiver Vimball Archiver
@ -6,7 +6,7 @@
Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM> Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM>
(remove NOSPAM from Campbell's email first) (remove NOSPAM from Campbell's email first)
Copyright: (c) 2004-2008 by Charles E. Campbell, Jr. *Vimball-copyright* Copyright: (c) 2004-2009 by Charles E. Campbell, Jr. *Vimball-copyright*
The VIM LICENSE applies to Vimball.vim, and Vimball.txt The VIM LICENSE applies to Vimball.vim, and Vimball.txt
(see |copyright|) except use "Vimball" instead of "Vim". (see |copyright|) except use "Vimball" instead of "Vim".
No warranty, express or implied. No warranty, express or implied.
@ -55,7 +55,7 @@ Copyright: (c) 2004-2008 by Charles E. Campbell, Jr. *Vimball-copyright*
============================================================================== ==============================================================================
3. Vimball Manual *vimball-manual* 3. Vimball Manual *vimball-manual*
*:MkVimball* MAKING A VIMBALL *:MkVimball*
:[range]MkVimball[!] filename [path] :[range]MkVimball[!] filename [path]
The range is composed of lines holding paths to files to be included The range is composed of lines holding paths to files to be included
@ -79,29 +79,34 @@ Copyright: (c) 2004-2008 by Charles E. Campbell, Jr. *Vimball-copyright*
"filename.vba" file, overwriting it if it already exists. This "filename.vba" file, overwriting it if it already exists. This
behavior resembles that for |:w|. behavior resembles that for |:w|.
*g:vimball_mkdir* If you wish to force slashes into the filename, that can also be done
by using the exclamation mark (ie. :MkVimball! path/filename).
The tip at http://vim.wikia.com/wiki/Using_VimBall_with_%27Make%27
has a good idea on how to automate the production of vimballs using
make.
MAKING DIRECTORIES VIA VIMBALLS *g:vimball_mkdir*
First, the |mkdir()| command is tried (not all systems support it). First, the |mkdir()| command is tried (not all systems support it).
If it doesn't exist, then g:vimball_mkdir doesn't exist, it is set to: If it doesn't exist, then if g:vimball_mkdir doesn't exist, it is set
as follows: >
|g:netrw_local_mkdir|, if it exists |g:netrw_local_mkdir|, if it exists
"mkdir", if it is executable "mkdir" , if it is executable
"makedir", if it is executable "makedir" , if it is executable
Otherwise, it is undefined. Otherwise , it is undefined.
One may explicitly specify the directory making command using < One may explicitly specify the directory making command using
g:vimball_mkdir. This command is used to make directories that g:vimball_mkdir. This command is used to make directories that
are needed as indicated by the vimball. are needed as indicated by the vimball.
*g:vimball_home*
CONTROLLING THE VIMBALL EXTRACTION DIRECTORY *g:vimball_home*
You may override the use of the |'runtimepath'| by specifying a You may override the use of the |'runtimepath'| by specifying a
variable, g:vimball_home. variable, g:vimball_home.
Path Preprocessing *g:vimball_path_escape*
Paths used in vimball are preprocessed by s:Path(); in addition,
certain characters are escaped (by prepending a backslash). The
characters are in g:vimball_path_escape, and may be overridden by
the user in his/her .vimrc initialization script.
*vimball-extract* *vimball-extract*
vim filename.vba vim filename.vba
@ -112,12 +117,16 @@ Copyright: (c) 2004-2008 by Charles E. Campbell, Jr. *Vimball-copyright*
file holds the "Vimball Archiver by Charles E. Campbell, Jr., Ph.D." file holds the "Vimball Archiver by Charles E. Campbell, Jr., Ph.D."
line. line.
:VimballList *:VimballList* LISTING FILES IN A VIMBALL *:VimballList*
:VimballList
This command will tell Vimball to list the files in the archive, along This command will tell Vimball to list the files in the archive, along
with their lengths in lines. with their lengths in lines.
:UseVimball [path] *:UseVimball* MANUALLY INVOKING VIMBALL EXTRACTION *:UseVimball*
:UseVimball [path]
This command is contained within the vimball itself; it invokes the This command is contained within the vimball itself; it invokes the
vimball#Vimball() routine which is responsible for unpacking the vimball#Vimball() routine which is responsible for unpacking the
@ -126,7 +135,9 @@ Copyright: (c) 2004-2008 by Charles E. Campbell, Jr. *Vimball-copyright*
installation, thereby overriding the automatic choice of the first installation, thereby overriding the automatic choice of the first
existing directory on the |'runtimepath'|. existing directory on the |'runtimepath'|.
:RmVimball vimballfile [path] *:RmVimball* REMOVING A VIMBALL *:RmVimball*
:RmVimball vimballfile [path]
This command removes all files generated by the specified vimball This command removes all files generated by the specified vimball
(but not any directories it may have made). One may choose a path (but not any directories it may have made). One may choose a path
@ -136,10 +147,29 @@ Copyright: (c) 2004-2008 by Charles E. Campbell, Jr. *Vimball-copyright*
containing a record of what files need to be removed for all vimballs containing a record of what files need to be removed for all vimballs
used thus far. used thus far.
PREVENTING LOADING
If for some reason you don't want to be able to extract plugins
using vimballs: you may prevent the loading of vimball.vim by
putting the following two variables in your <.vimrc>: >
let g:loaded_vimballPlugin= 1
let g:loaded_vimball = 1
<
============================================================================== ==============================================================================
4. Vimball History *vimball-history* {{{1 4. Vimball History *vimball-history* {{{1
30 : Dec 08, 2008 * fnameescape() inserted to protect error
messaging using corrupted filenames from
causing problems
* RmVimball supports filenames that would
otherwise be considered to have "magic"
characters (ie. Abc[1].vba)
Feb 18, 2009 * s:Escape(), g:vimball_shq, and g:netrw_shq
removed (shellescape() used directly)
Oct 05, 2009 * (Nikolai Weibull) suggested that MkVimball
be allowed to use slashes in the filename.
26 : May 27, 2008 * g:vimball_mkdir usage installed. Makes the 26 : May 27, 2008 * g:vimball_mkdir usage installed. Makes the
$HOME/.vim (or $HOME\vimfiles) directory if $HOME/.vim (or $HOME\vimfiles) directory if
necessary. necessary.
@ -164,7 +194,7 @@ Copyright: (c) 2004-2008 by Charles E. Campbell, Jr. *Vimball-copyright*
will extract plugin/somefile to the AsNeeded/ will extract plugin/somefile to the AsNeeded/
directory directory
17 : Jun 28, 2006 * changes all \s to /s internally for Windows 17 : Jun 28, 2006 * changes all \s to /s internally for Windows
16 : Jun 15, 2006 * A. Mechylynck's idea to allow users to specify 16 : Jun 15, 2006 * A. Mechelynck's idea to allow users to specify
installation root paths implemented for installation root paths implemented for
UseVimball, MkVimball, and RmVimball. UseVimball, MkVimball, and RmVimball.
* RmVimball implemented * RmVimball implemented

View File

@ -1,12 +1,3 @@
:CVSEdit vcscommand.txt /*:CVSEdit*
:CVSEditors vcscommand.txt /*:CVSEditors*
:CVSUnedit vcscommand.txt /*:CVSUnedit*
:CVSWatch vcscommand.txt /*:CVSWatch*
:CVSWatchAdd vcscommand.txt /*:CVSWatchAdd*
:CVSWatchOff vcscommand.txt /*:CVSWatchOff*
:CVSWatchOn vcscommand.txt /*:CVSWatchOn*
:CVSWatchRemove vcscommand.txt /*:CVSWatchRemove*
:CVSWatchers vcscommand.txt /*:CVSWatchers*
:Explore pi_netrw.txt /*:Explore* :Explore pi_netrw.txt /*:Explore*
:GLVS pi_getscript.txt /*:GLVS* :GLVS pi_getscript.txt /*:GLVS*
:GetLatestVimScripts_dat pi_getscript.txt /*:GetLatestVimScripts_dat* :GetLatestVimScripts_dat pi_getscript.txt /*:GetLatestVimScripts_dat*
@ -40,6 +31,7 @@
:RmVimball pi_vimball.txt /*:RmVimball* :RmVimball pi_vimball.txt /*:RmVimball*
:Search MultipleSearch.txt /*:Search* :Search MultipleSearch.txt /*:Search*
:SearchBuffers MultipleSearch.txt /*:SearchBuffers* :SearchBuffers MultipleSearch.txt /*:SearchBuffers*
:Sexplore pi_netrw.txt /*:Sexplore*
:TComment tComment.txt /*:TComment* :TComment tComment.txt /*:TComment*
:TCommentAs tComment.txt /*:TCommentAs* :TCommentAs tComment.txt /*:TCommentAs*
:TCommentBlock tComment.txt /*:TCommentBlock* :TCommentBlock tComment.txt /*:TCommentBlock*
@ -47,23 +39,6 @@
:TCommentRight tComment.txt /*:TCommentRight* :TCommentRight tComment.txt /*:TCommentRight*
:Texplore pi_netrw.txt /*:Texplore* :Texplore pi_netrw.txt /*:Texplore*
:UseVimball pi_vimball.txt /*:UseVimball* :UseVimball pi_vimball.txt /*:UseVimball*
:VCSAdd vcscommand.txt /*:VCSAdd*
:VCSAnnotate vcscommand.txt /*:VCSAnnotate*
:VCSBlame vcscommand.txt /*:VCSBlame*
:VCSCommit vcscommand.txt /*:VCSCommit*
:VCSDelete vcscommand.txt /*:VCSDelete*
:VCSDiff vcscommand.txt /*:VCSDiff*
:VCSGotoOriginal vcscommand.txt /*:VCSGotoOriginal*
:VCSInfo vcscommand.txt /*:VCSInfo*
:VCSLock vcscommand.txt /*:VCSLock*
:VCSLog vcscommand.txt /*:VCSLog*
:VCSRemove vcscommand.txt /*:VCSRemove*
:VCSRevert vcscommand.txt /*:VCSRevert*
:VCSReview vcscommand.txt /*:VCSReview*
:VCSStatus vcscommand.txt /*:VCSStatus*
:VCSUnlock vcscommand.txt /*:VCSUnlock*
:VCSUpdate vcscommand.txt /*:VCSUpdate*
:VCSVimDiff vcscommand.txt /*:VCSVimDiff*
:Vexplore pi_netrw.txt /*:Vexplore* :Vexplore pi_netrw.txt /*:Vexplore*
:VimballList pi_vimball.txt /*:VimballList* :VimballList pi_vimball.txt /*:VimballList*
Align-copyright Align.txt /*Align-copyright* Align-copyright Align.txt /*Align-copyright*
@ -92,25 +67,6 @@ SRHiGrp SrchRplcHiGrp.txt /*SRHiGrp*
SRSearch SrchRplcHiGrp.txt /*SRSearch* SRSearch SrchRplcHiGrp.txt /*SRSearch*
SrchRplcHiGrp.txt SrchRplcHiGrp.txt /*SrchRplcHiGrp.txt* SrchRplcHiGrp.txt SrchRplcHiGrp.txt /*SrchRplcHiGrp.txt*
TCommentDefineType() tComment.txt /*TCommentDefineType()* TCommentDefineType() tComment.txt /*TCommentDefineType()*
VCSCommandCVSDiffOpt vcscommand.txt /*VCSCommandCVSDiffOpt*
VCSCommandCVSExec vcscommand.txt /*VCSCommandCVSExec*
VCSCommandCommitOnWrite vcscommand.txt /*VCSCommandCommitOnWrite*
VCSCommandDeleteOnHide vcscommand.txt /*VCSCommandDeleteOnHide*
VCSCommandDiffSplit vcscommand.txt /*VCSCommandDiffSplit*
VCSCommandDisableAll vcscommand.txt /*VCSCommandDisableAll*
VCSCommandDisableExtensionMappings vcscommand.txt /*VCSCommandDisableExtensionMappings*
VCSCommandDisableMappings vcscommand.txt /*VCSCommandDisableMappings*
VCSCommandEdit vcscommand.txt /*VCSCommandEdit*
VCSCommandEnableBufferSetup vcscommand.txt /*VCSCommandEnableBufferSetup*
VCSCommandMapPrefix vcscommand.txt /*VCSCommandMapPrefix*
VCSCommandMappings vcscommand.txt /*VCSCommandMappings*
VCSCommandResultBufferNameExtension vcscommand.txt /*VCSCommandResultBufferNameExtension*
VCSCommandResultBufferNameFunction vcscommand.txt /*VCSCommandResultBufferNameFunction*
VCSCommandSVKExec vcscommand.txt /*VCSCommandSVKExec*
VCSCommandSVNDiffExt vcscommand.txt /*VCSCommandSVNDiffExt*
VCSCommandSVNDiffOpt vcscommand.txt /*VCSCommandSVNDiffOpt*
VCSCommandSVNExec vcscommand.txt /*VCSCommandSVNExec*
VCSCommandSplit vcscommand.txt /*VCSCommandSplit*
VimPdb.txt VimPdb.txt /*VimPdb.txt* VimPdb.txt VimPdb.txt /*VimPdb.txt*
Vimball-copyright pi_vimball.txt /*Vimball-copyright* Vimball-copyright pi_vimball.txt /*Vimball-copyright*
[% matchit.txt /*[%* [% matchit.txt /*[%*
@ -132,6 +88,7 @@ align-option Align.txt /*align-option*
align-options Align.txt /*align-options* align-options Align.txt /*align-options*
align-strlen Align.txt /*align-strlen* align-strlen Align.txt /*align-strlen*
align-usage Align.txt /*align-usage* align-usage Align.txt /*align-usage*
align-userguide Align.txt /*align-userguide*
align-utf Align.txt /*align-utf* align-utf Align.txt /*align-utf*
align-utf8 Align.txt /*align-utf8* align-utf8 Align.txt /*align-utf8*
align.txt Align.txt /*align.txt* align.txt Align.txt /*align.txt*
@ -162,6 +119,8 @@ alignman Align.txt /*alignman*
alignmanual Align.txt /*alignmanual* alignmanual Align.txt /*alignmanual*
alignmap-Htd Align.txt /*alignmap-Htd* alignmap-Htd Align.txt /*alignmap-Htd*
alignmap-T= Align.txt /*alignmap-T=* alignmap-T= Align.txt /*alignmap-T=*
alignmap-Tsp Align.txt /*alignmap-Tsp*
alignmap-a( Align.txt /*alignmap-a(*
alignmap-a, Align.txt /*alignmap-a,* alignmap-a, Align.txt /*alignmap-a,*
alignmap-a< Align.txt /*alignmap-a<* alignmap-a< Align.txt /*alignmap-a<*
alignmap-a= Align.txt /*alignmap-a=* alignmap-a= Align.txt /*alignmap-a=*
@ -187,16 +146,15 @@ alignmap-t? Align.txt /*alignmap-t?*
alignmap-tab Align.txt /*alignmap-tab* alignmap-tab Align.txt /*alignmap-tab*
alignmap-tml Align.txt /*alignmap-tml* alignmap-tml Align.txt /*alignmap-tml*
alignmap-ts, Align.txt /*alignmap-ts,* alignmap-ts, Align.txt /*alignmap-ts,*
alignmap-ts: Align.txt /*alignmap-ts:*
alignmap-ts< Align.txt /*alignmap-ts<*
alignmap-ts= Align.txt /*alignmap-ts=*
alignmap-tsp Align.txt /*alignmap-tsp* alignmap-tsp Align.txt /*alignmap-tsp*
alignmap-tsq Align.txt /*alignmap-tsq* alignmap-tsq Align.txt /*alignmap-tsq*
alignmap-tt Align.txt /*alignmap-tt* alignmap-tt Align.txt /*alignmap-tt*
alignmap-t~ Align.txt /*alignmap-t~* alignmap-t~ Align.txt /*alignmap-t~*
alignmaps Align.txt /*alignmaps* alignmaps Align.txt /*alignmaps*
alignusage Align.txt /*alignusage* alignusage Align.txt /*alignusage*
b:VCSCommandCommand vcscommand.txt /*b:VCSCommandCommand*
b:VCSCommandOriginalBuffer vcscommand.txt /*b:VCSCommandOriginalBuffer*
b:VCSCommandSourceFile vcscommand.txt /*b:VCSCommandSourceFile*
b:VCSCommandVCSType vcscommand.txt /*b:VCSCommandVCSType*
b:match_col matchit.txt /*b:match_col* b:match_col matchit.txt /*b:match_col*
b:match_debug matchit.txt /*b:match_debug* b:match_debug matchit.txt /*b:match_debug*
b:match_ignorecase matchit.txt /*b:match_ignorecase* b:match_ignorecase matchit.txt /*b:match_ignorecase*
@ -1450,11 +1408,11 @@ crvdoc-licGPL crefvimdoc.txt /*crvdoc-licGPL*
crvdoc-licLGPL crefvimdoc.txt /*crvdoc-licLGPL* crvdoc-licLGPL crefvimdoc.txt /*crvdoc-licLGPL*
crvdoc-limbugs crefvimdoc.txt /*crvdoc-limbugs* crvdoc-limbugs crefvimdoc.txt /*crvdoc-limbugs*
crvdoc-usage crefvimdoc.txt /*crvdoc-usage* crvdoc-usage crefvimdoc.txt /*crvdoc-usage*
cvscommand-changes vcscommand.txt /*cvscommand-changes*
dav pi_netrw.txt /*dav* dav pi_netrw.txt /*dav*
davs pi_netrw.txt /*davs* davs pi_netrw.txt /*davs*
drv-dtArrayInit crefvim.txt /*drv-dtArrayInit* drv-dtArrayInit crefvim.txt /*drv-dtArrayInit*
drv-dtIncompleteArrayDecl crefvim.txt /*drv-dtIncompleteArrayDecl* drv-dtIncompleteArrayDecl crefvim.txt /*drv-dtIncompleteArrayDecl*
editsrec.txt editsrec.txt /*editsrec.txt*
ex-visincr-I visincr.txt /*ex-visincr-I* ex-visincr-I visincr.txt /*ex-visincr-I*
ex-visincr-IA visincr.txt /*ex-visincr-IA* ex-visincr-IA visincr.txt /*ex-visincr-IA*
ex-visincr-ID visincr.txt /*ex-visincr-ID* ex-visincr-ID visincr.txt /*ex-visincr-ID*
@ -1470,17 +1428,20 @@ g:MultipleSearchColorSequence MultipleSearch.txt /*g:MultipleSearchColorSequence
g:MultipleSearchMaxColors MultipleSearch.txt /*g:MultipleSearchMaxColors* g:MultipleSearchMaxColors MultipleSearch.txt /*g:MultipleSearchMaxColors*
g:MultipleSearchTextColorSequence MultipleSearch.txt /*g:MultipleSearchTextColorSequence* g:MultipleSearchTextColorSequence MultipleSearch.txt /*g:MultipleSearchTextColorSequence*
g:NetrwTopLvlMenu pi_netrw.txt /*g:NetrwTopLvlMenu* g:NetrwTopLvlMenu pi_netrw.txt /*g:NetrwTopLvlMenu*
g:Netrw_funcref pi_netrw.txt /*g:Netrw_funcref*
g:netrw_alto pi_netrw.txt /*g:netrw_alto* g:netrw_alto pi_netrw.txt /*g:netrw_alto*
g:netrw_altv pi_netrw.txt /*g:netrw_altv* g:netrw_altv pi_netrw.txt /*g:netrw_altv*
g:netrw_banner pi_netrw.txt /*g:netrw_banner*
g:netrw_browse_split pi_netrw.txt /*g:netrw_browse_split* g:netrw_browse_split pi_netrw.txt /*g:netrw_browse_split*
g:netrw_browsex_viewer pi_netrw.txt /*g:netrw_browsex_viewer* g:netrw_browsex_viewer pi_netrw.txt /*g:netrw_browsex_viewer*
g:netrw_chgperm pi_netrw.txt /*g:netrw_chgperm*
g:netrw_chgwin pi_netrw.txt /*g:netrw_chgwin*
g:netrw_compress pi_netrw.txt /*g:netrw_compress* g:netrw_compress pi_netrw.txt /*g:netrw_compress*
g:netrw_ctags pi_netrw.txt /*g:netrw_ctags* g:netrw_ctags pi_netrw.txt /*g:netrw_ctags*
g:netrw_cursorline pi_netrw.txt /*g:netrw_cursorline* g:netrw_cursorline pi_netrw.txt /*g:netrw_cursorline*
g:netrw_cygwin pi_netrw.txt /*g:netrw_cygwin* g:netrw_cygwin pi_netrw.txt /*g:netrw_cygwin*
g:netrw_dav_cmd pi_netrw.txt /*g:netrw_dav_cmd* g:netrw_dav_cmd pi_netrw.txt /*g:netrw_dav_cmd*
g:netrw_decompress pi_netrw.txt /*g:netrw_decompress* g:netrw_decompress pi_netrw.txt /*g:netrw_decompress*
g:netrw_extracmd pi_netrw.txt /*g:netrw_extracmd*
g:netrw_fastbrowse pi_netrw.txt /*g:netrw_fastbrowse* g:netrw_fastbrowse pi_netrw.txt /*g:netrw_fastbrowse*
g:netrw_fetch_cmd pi_netrw.txt /*g:netrw_fetch_cmd* g:netrw_fetch_cmd pi_netrw.txt /*g:netrw_fetch_cmd*
g:netrw_fname_escape pi_netrw.txt /*g:netrw_fname_escape* g:netrw_fname_escape pi_netrw.txt /*g:netrw_fname_escape*
@ -1490,6 +1451,7 @@ g:netrw_ftp_cmd pi_netrw.txt /*g:netrw_ftp_cmd*
g:netrw_ftp_list_cmd pi_netrw.txt /*g:netrw_ftp_list_cmd* g:netrw_ftp_list_cmd pi_netrw.txt /*g:netrw_ftp_list_cmd*
g:netrw_ftp_sizelist_cmd pi_netrw.txt /*g:netrw_ftp_sizelist_cmd* g:netrw_ftp_sizelist_cmd pi_netrw.txt /*g:netrw_ftp_sizelist_cmd*
g:netrw_ftp_timelist_cmd pi_netrw.txt /*g:netrw_ftp_timelist_cmd* g:netrw_ftp_timelist_cmd pi_netrw.txt /*g:netrw_ftp_timelist_cmd*
g:netrw_ftpextracmd pi_netrw.txt /*g:netrw_ftpextracmd*
g:netrw_ftpmode pi_netrw.txt /*g:netrw_ftpmode* g:netrw_ftpmode pi_netrw.txt /*g:netrw_ftpmode*
g:netrw_glob_escape pi_netrw.txt /*g:netrw_glob_escape* g:netrw_glob_escape pi_netrw.txt /*g:netrw_glob_escape*
g:netrw_hide pi_netrw.txt /*g:netrw_hide* g:netrw_hide pi_netrw.txt /*g:netrw_hide*
@ -1508,6 +1470,7 @@ g:netrw_localmovecmd pi_netrw.txt /*g:netrw_localmovecmd*
g:netrw_maxfilenamelen pi_netrw.txt /*g:netrw_maxfilenamelen* g:netrw_maxfilenamelen pi_netrw.txt /*g:netrw_maxfilenamelen*
g:netrw_menu pi_netrw.txt /*g:netrw_menu* g:netrw_menu pi_netrw.txt /*g:netrw_menu*
g:netrw_mkdir_cmd pi_netrw.txt /*g:netrw_mkdir_cmd* g:netrw_mkdir_cmd pi_netrw.txt /*g:netrw_mkdir_cmd*
g:netrw_mousemaps pi_netrw.txt /*g:netrw_mousemaps*
g:netrw_nogx pi_netrw.txt /*g:netrw_nogx* g:netrw_nogx pi_netrw.txt /*g:netrw_nogx*
g:netrw_preview pi_netrw.txt /*g:netrw_preview* g:netrw_preview pi_netrw.txt /*g:netrw_preview*
g:netrw_rcp_cmd pi_netrw.txt /*g:netrw_rcp_cmd* g:netrw_rcp_cmd pi_netrw.txt /*g:netrw_rcp_cmd*
@ -1518,6 +1481,7 @@ g:netrw_rmf_cmd pi_netrw.txt /*g:netrw_rmf_cmd*
g:netrw_rsync_cmd pi_netrw.txt /*g:netrw_rsync_cmd* g:netrw_rsync_cmd pi_netrw.txt /*g:netrw_rsync_cmd*
g:netrw_scp_cmd pi_netrw.txt /*g:netrw_scp_cmd* g:netrw_scp_cmd pi_netrw.txt /*g:netrw_scp_cmd*
g:netrw_scpport pi_netrw.txt /*g:netrw_scpport* g:netrw_scpport pi_netrw.txt /*g:netrw_scpport*
g:netrw_sepchr pi_netrw.txt /*g:netrw_sepchr*
g:netrw_sftp_cmd pi_netrw.txt /*g:netrw_sftp_cmd* g:netrw_sftp_cmd pi_netrw.txt /*g:netrw_sftp_cmd*
g:netrw_silent pi_netrw.txt /*g:netrw_silent* g:netrw_silent pi_netrw.txt /*g:netrw_silent*
g:netrw_sort_by pi_netrw.txt /*g:netrw_sort_by* g:netrw_sort_by pi_netrw.txt /*g:netrw_sort_by*
@ -1544,7 +1508,6 @@ g:tcommentMapLeaderOp2 tComment.txt /*g:tcommentMapLeaderOp2*
g:tcommentOpModeExtra tComment.txt /*g:tcommentOpModeExtra* g:tcommentOpModeExtra tComment.txt /*g:tcommentOpModeExtra*
g:vimball_home pi_vimball.txt /*g:vimball_home* g:vimball_home pi_vimball.txt /*g:vimball_home*
g:vimball_mkdir pi_vimball.txt /*g:vimball_mkdir* g:vimball_mkdir pi_vimball.txt /*g:vimball_mkdir*
g:vimball_path_escape pi_vimball.txt /*g:vimball_path_escape*
g:visincr_datedivset visincr.txt /*g:visincr_datedivset* g:visincr_datedivset visincr.txt /*g:visincr_datedivset*
getlatestvimscripts-install pi_getscript.txt /*getlatestvimscripts-install* getlatestvimscripts-install pi_getscript.txt /*getlatestvimscripts-install*
getscript pi_getscript.txt /*getscript* getscript pi_getscript.txt /*getscript*
@ -1611,11 +1574,13 @@ netreadfixup pi_netrw.txt /*netreadfixup*
netrw pi_netrw.txt /*netrw* netrw pi_netrw.txt /*netrw*
netrw-% pi_netrw.txt /*netrw-%* netrw-% pi_netrw.txt /*netrw-%*
netrw-- pi_netrw.txt /*netrw--* netrw-- pi_netrw.txt /*netrw--*
netrw-C pi_netrw.txt /*netrw-C*
netrw-D pi_netrw.txt /*netrw-D* netrw-D pi_netrw.txt /*netrw-D*
netrw-O pi_netrw.txt /*netrw-O* netrw-O pi_netrw.txt /*netrw-O*
netrw-P pi_netrw.txt /*netrw-P* netrw-P pi_netrw.txt /*netrw-P*
netrw-R pi_netrw.txt /*netrw-R* netrw-R pi_netrw.txt /*netrw-R*
netrw-S pi_netrw.txt /*netrw-S* netrw-S pi_netrw.txt /*netrw-S*
netrw-T pi_netrw.txt /*netrw-T*
netrw-U pi_netrw.txt /*netrw-U* netrw-U pi_netrw.txt /*netrw-U*
netrw-a pi_netrw.txt /*netrw-a* netrw-a pi_netrw.txt /*netrw-a*
netrw-activate pi_netrw.txt /*netrw-activate* netrw-activate pi_netrw.txt /*netrw-activate*
@ -1633,6 +1598,7 @@ netrw-cadaver pi_netrw.txt /*netrw-cadaver*
netrw-chgup pi_netrw.txt /*netrw-chgup* netrw-chgup pi_netrw.txt /*netrw-chgup*
netrw-clean pi_netrw.txt /*netrw-clean* netrw-clean pi_netrw.txt /*netrw-clean*
netrw-contents pi_netrw.txt /*netrw-contents* netrw-contents pi_netrw.txt /*netrw-contents*
netrw-copyright pi_netrw.txt /*netrw-copyright*
netrw-cr pi_netrw.txt /*netrw-cr* netrw-cr pi_netrw.txt /*netrw-cr*
netrw-credits pi_netrw.txt /*netrw-credits* netrw-credits pi_netrw.txt /*netrw-credits*
netrw-ctrl-h pi_netrw.txt /*netrw-ctrl-h* netrw-ctrl-h pi_netrw.txt /*netrw-ctrl-h*
@ -1652,10 +1618,14 @@ netrw-explore pi_netrw.txt /*netrw-explore*
netrw-explore-cmds pi_netrw.txt /*netrw-explore-cmds* netrw-explore-cmds pi_netrw.txt /*netrw-explore-cmds*
netrw-externapp pi_netrw.txt /*netrw-externapp* netrw-externapp pi_netrw.txt /*netrw-externapp*
netrw-file pi_netrw.txt /*netrw-file* netrw-file pi_netrw.txt /*netrw-file*
netrw-filigree pi_netrw.txt /*netrw-filigree*
netrw-fixup pi_netrw.txt /*netrw-fixup* netrw-fixup pi_netrw.txt /*netrw-fixup*
netrw-ftp pi_netrw.txt /*netrw-ftp* netrw-ftp pi_netrw.txt /*netrw-ftp*
netrw-ftype pi_netrw.txt /*netrw-ftype*
netrw-gb pi_netrw.txt /*netrw-gb* netrw-gb pi_netrw.txt /*netrw-gb*
netrw-getftype pi_netrw.txt /*netrw-getftype*
netrw-gh pi_netrw.txt /*netrw-gh* netrw-gh pi_netrw.txt /*netrw-gh*
netrw-gp pi_netrw.txt /*netrw-gp*
netrw-gx pi_netrw.txt /*netrw-gx* netrw-gx pi_netrw.txt /*netrw-gx*
netrw-handler pi_netrw.txt /*netrw-handler* netrw-handler pi_netrw.txt /*netrw-handler*
netrw-help pi_netrw.txt /*netrw-help* netrw-help pi_netrw.txt /*netrw-help*
@ -1667,6 +1637,7 @@ netrw-horiz pi_netrw.txt /*netrw-horiz*
netrw-i pi_netrw.txt /*netrw-i* netrw-i pi_netrw.txt /*netrw-i*
netrw-incompatible pi_netrw.txt /*netrw-incompatible* netrw-incompatible pi_netrw.txt /*netrw-incompatible*
netrw-intro-browse pi_netrw.txt /*netrw-intro-browse* netrw-intro-browse pi_netrw.txt /*netrw-intro-browse*
netrw-leftmouse pi_netrw.txt /*netrw-leftmouse*
netrw-list pi_netrw.txt /*netrw-list* netrw-list pi_netrw.txt /*netrw-list*
netrw-listbookmark pi_netrw.txt /*netrw-listbookmark* netrw-listbookmark pi_netrw.txt /*netrw-listbookmark*
netrw-listhack pi_netrw.txt /*netrw-listhack* netrw-listhack pi_netrw.txt /*netrw-listhack*
@ -1680,8 +1651,10 @@ netrw-me pi_netrw.txt /*netrw-me*
netrw-mf pi_netrw.txt /*netrw-mf* netrw-mf pi_netrw.txt /*netrw-mf*
netrw-mg pi_netrw.txt /*netrw-mg* netrw-mg pi_netrw.txt /*netrw-mg*
netrw-mh pi_netrw.txt /*netrw-mh* netrw-mh pi_netrw.txt /*netrw-mh*
netrw-middlemouse pi_netrw.txt /*netrw-middlemouse*
netrw-ml_get pi_netrw.txt /*netrw-ml_get* netrw-ml_get pi_netrw.txt /*netrw-ml_get*
netrw-mm pi_netrw.txt /*netrw-mm* netrw-mm pi_netrw.txt /*netrw-mm*
netrw-mouse pi_netrw.txt /*netrw-mouse*
netrw-move pi_netrw.txt /*netrw-move* netrw-move pi_netrw.txt /*netrw-move*
netrw-mp pi_netrw.txt /*netrw-mp* netrw-mp pi_netrw.txt /*netrw-mp*
netrw-mr pi_netrw.txt /*netrw-mr* netrw-mr pi_netrw.txt /*netrw-mr*
@ -1700,6 +1673,7 @@ netrw-p pi_netrw.txt /*netrw-p*
netrw-p1 pi_netrw.txt /*netrw-p1* netrw-p1 pi_netrw.txt /*netrw-p1*
netrw-p10 pi_netrw.txt /*netrw-p10* netrw-p10 pi_netrw.txt /*netrw-p10*
netrw-p11 pi_netrw.txt /*netrw-p11* netrw-p11 pi_netrw.txt /*netrw-p11*
netrw-p12 pi_netrw.txt /*netrw-p12*
netrw-p2 pi_netrw.txt /*netrw-p2* netrw-p2 pi_netrw.txt /*netrw-p2*
netrw-p3 pi_netrw.txt /*netrw-p3* netrw-p3 pi_netrw.txt /*netrw-p3*
netrw-p4 pi_netrw.txt /*netrw-p4* netrw-p4 pi_netrw.txt /*netrw-p4*
@ -1732,6 +1706,7 @@ netrw-ref pi_netrw.txt /*netrw-ref*
netrw-rename pi_netrw.txt /*netrw-rename* netrw-rename pi_netrw.txt /*netrw-rename*
netrw-reverse pi_netrw.txt /*netrw-reverse* netrw-reverse pi_netrw.txt /*netrw-reverse*
netrw-rexplore pi_netrw.txt /*netrw-rexplore* netrw-rexplore pi_netrw.txt /*netrw-rexplore*
netrw-rightmouse pi_netrw.txt /*netrw-rightmouse*
netrw-s pi_netrw.txt /*netrw-s* netrw-s pi_netrw.txt /*netrw-s*
netrw-settings pi_netrw.txt /*netrw-settings* netrw-settings pi_netrw.txt /*netrw-settings*
netrw-sexplore pi_netrw.txt /*netrw-sexplore* netrw-sexplore pi_netrw.txt /*netrw-sexplore*
@ -1746,6 +1721,7 @@ netrw-starstarpat pi_netrw.txt /*netrw-starstarpat*
netrw-start pi_netrw.txt /*netrw-start* netrw-start pi_netrw.txt /*netrw-start*
netrw-t pi_netrw.txt /*netrw-t* netrw-t pi_netrw.txt /*netrw-t*
netrw-texplore pi_netrw.txt /*netrw-texplore* netrw-texplore pi_netrw.txt /*netrw-texplore*
netrw-todo pi_netrw.txt /*netrw-todo*
netrw-transparent pi_netrw.txt /*netrw-transparent* netrw-transparent pi_netrw.txt /*netrw-transparent*
netrw-u pi_netrw.txt /*netrw-u* netrw-u pi_netrw.txt /*netrw-u*
netrw-uidpass pi_netrw.txt /*netrw-uidpass* netrw-uidpass pi_netrw.txt /*netrw-uidpass*
@ -1791,29 +1767,6 @@ v_]% matchit.txt /*v_]%*
v_a% matchit.txt /*v_a%* v_a% matchit.txt /*v_a%*
v_g% matchit.txt /*v_g%* v_g% matchit.txt /*v_g%*
vba pi_vimball.txt /*vba* vba pi_vimball.txt /*vba*
vcscommand vcscommand.txt /*vcscommand*
vcscommand-buffer-management vcscommand.txt /*vcscommand-buffer-management*
vcscommand-buffer-variables vcscommand.txt /*vcscommand-buffer-variables*
vcscommand-bugs vcscommand.txt /*vcscommand-bugs*
vcscommand-commands vcscommand.txt /*vcscommand-commands*
vcscommand-config vcscommand.txt /*vcscommand-config*
vcscommand-contents vcscommand.txt /*vcscommand-contents*
vcscommand-customize vcscommand.txt /*vcscommand-customize*
vcscommand-events vcscommand.txt /*vcscommand-events*
vcscommand-install vcscommand.txt /*vcscommand-install*
vcscommand-intro vcscommand.txt /*vcscommand-intro*
vcscommand-manual vcscommand.txt /*vcscommand-manual*
vcscommand-mappings vcscommand.txt /*vcscommand-mappings*
vcscommand-mappings-override vcscommand.txt /*vcscommand-mappings-override*
vcscommand-naming vcscommand.txt /*vcscommand-naming*
vcscommand-options vcscommand.txt /*vcscommand-options*
vcscommand-ssh vcscommand.txt /*vcscommand-ssh*
vcscommand-ssh-config vcscommand.txt /*vcscommand-ssh-config*
vcscommand-ssh-env vcscommand.txt /*vcscommand-ssh-env*
vcscommand-ssh-other vcscommand.txt /*vcscommand-ssh-other*
vcscommand-ssh-wrapper vcscommand.txt /*vcscommand-ssh-wrapper*
vcscommand-statusline vcscommand.txt /*vcscommand-statusline*
vcscommand.txt vcscommand.txt /*vcscommand.txt*
vimball pi_vimball.txt /*vimball* vimball pi_vimball.txt /*vimball*
vimball-contents pi_vimball.txt /*vimball-contents* vimball-contents pi_vimball.txt /*vimball-contents*
vimball-extract pi_vimball.txt /*vimball-extract* vimball-extract pi_vimball.txt /*vimball-extract*

View File

@ -2,8 +2,8 @@
" FileType: XML " FileType: XML
" Author: Rene de Zwart <renez (at) lightcon.xs4all.nl> " Author: Rene de Zwart <renez (at) lightcon.xs4all.nl>
" Maintainer: Rene de Zwart <renez (at) lightcon.xs4all.nl> " Maintainer: Rene de Zwart <renez (at) lightcon.xs4all.nl>
" Last Change: $Date: 2007/03/17 12:39:40 $ " Last Change: Date: 2009-11-12
" Version: $Revision: 1.35 $ " Version: Revision: 1.37
" "
" Licence: This program is free software; you can redistribute it " Licence: This program is free software; you can redistribute it
" and/or modify it under the terms of the GNU General Public " and/or modify it under the terms of the GNU General Public
@ -12,12 +12,17 @@
" for the original code. Guo-Peng Wen for the self " for the original code. Guo-Peng Wen for the self
" install documentation code. " install documentation code.
" Bart vam Deenen for makeElement function " Bart vam Deenen for makeElement function
" Rene de Zwart
" Observation - If you want to do something to a match pair most of the time " Observation - If you want to do something to a match pair most of the time
" you must do first the close tag. Because doing first the open " you must do first the close tag. Because doing first the open
" tag could change the close tag position. " tag could change the close tag position.
" NOTE with filetype index on de standard indent/html.vim interferes
" with xml.vim. You can
" 1) set filetype indent off in .vimrc
" 2) echo "let b:did_indent = 1" > .vim/indent/html.vim
" Only do this when not done yet for this buffer " Only do this when not done yet for this buffer
@ -54,7 +59,7 @@ let s:OptAttrib = s:Attrib . '*'. s:NoSlashBeforeGt
let s:ReqAttrib = s:Attrib . '\+'. s:NoSlashBeforeGt let s:ReqAttrib = s:Attrib . '\+'. s:NoSlashBeforeGt
let s:OpenTag = '<[^!/?][^>]*' . s:OptAttrib let s:OpenTag = '<[^!/?][^>]*' . s:OptAttrib
let s:OpenOrCloseTag = '<[^!?][^>]*'. s:OptAttrib let s:OpenOrCloseTag = '<[^!?][^>]*'. s:OptAttrib
let s:CloseTag = '<\/[^>]*'. s:OptAttrib let s:CloseTag = '<\/[^>]*'. s:NoSlashBeforeGt
let s:SpaceInfront = '^\s*<' let s:SpaceInfront = '^\s*<'
let s:EndofName = '\($\|\s\|>\)' let s:EndofName = '\($\|\s\|>\)'
@ -109,25 +114,19 @@ endfunction
endif endif
" SavePos() saves position in bufferwide variable {{{1 " SavePos() saves position in bufferwide variable {{{1
if !exists('*s:SavePos')
fun! s:SavePos() fun! s:SavePos()
retu 'call cursor('.line('.').','. col('.'). ')' retu 'call cursor('.line('.').','. col('.'). ')'
endf endf
en
" findOpenTag() {{{1 " findOpenTag() {{{1
if !exists('*s:findOpenTag')
fun! s:findOpenTag(flag) fun! s:findOpenTag(flag)
call search(s:OpenTag,a:flag) call search(s:OpenTag,a:flag)
endf endf
en
" findCloseTag() {{{1 " findCloseTag() {{{1
if !exists('*s:findCloseTag')
fun! s:findCloseTag(flag) fun! s:findCloseTag(flag)
call search(s:CloseTag,a:flag) call search(s:CloseTag,a:flag)
endf endf
en
" GetTagName() Gets the tagname from start position {{{1 " GetTagName() Gets the tagname from start position {{{1
"Now lets go for the name part. The namepart are xmlnamechars which "Now lets go for the name part. The namepart are xmlnamechars which
@ -141,7 +140,6 @@ endf
en en
" hasAtt() Looks for attribute in open tag {{{1 " hasAtt() Looks for attribute in open tag {{{1
" expect cursor to be on < " expect cursor to be on <
if !exists('*s:hasAtt')
fun! s:hasAtt() fun! s:hasAtt()
"Check if this open tag has attributes "Check if this open tag has attributes
let l:line = line('.') | let l:col = col('.') let l:line = line('.') | let l:col = col('.')
@ -151,7 +149,6 @@ fun! s:hasAtt()
en en
en en
endf endf
en
" TagUnderCursor() Is there a tag under the cursor? {{{1 " TagUnderCursor() Is there a tag under the cursor? {{{1
@ -266,7 +263,7 @@ fun! s:Match(name)
let l:flags='bW' let l:flags='bW'
let l:level = -1 let l:level = -1
el el
exe 'normal '.b:endline.'G0'.(b:endcol-1).'l' exe 'normal! '.b:endline.'G0'.(b:endcol-1).'l'
let l:flags='W' let l:flags='W'
let l:level = 1 let l:level = 1
en en
@ -351,16 +348,16 @@ fun! s:DelComment()
if s:InComment() if s:InComment()
if b:begcom if b:begcom
if search('-->','W' ) >=0 if search('-->','W' ) >=0
normal hh3x normal! hh3x
call cursor(b:begcomline,b:begcomcol) call cursor(b:begcomline,b:begcomcol)
normal 4x normal! 4x
retu 1 retu 1
en en
el el
if search('<!--','bW' ) >=0 if search('<!--','bW' ) >=0
normal 4x normal! 4x
call cursor(b:endcomline,b:endcomcol) call cursor(b:endcomline,b:endcomcol)
normal hh3x normal! hh3x
retu 1 retu 1
en en
en en
@ -382,20 +379,20 @@ fun! s:DelCommentSection()
let l:len = strlen(l:sentinel) let l:len = strlen(l:sentinel)
if b:begcom if b:begcom
if search('-->','W' ) >=0 if search('-->','W' ) >=0
exe "normal f>a".l:sentinel."\<Esc>" exe "normal! f>a".l:sentinel."\<Esc>"
call cursor(b:begcomline,b:begcomcol) call cursor(b:begcomline,b:begcomcol)
exe "normal \"xd/".l:sentinel."/e-".l:len."\<Cr>" exe "normal! \"xd/".l:sentinel."/e-".l:len."\<Cr>"
exe "normal ".l:len."x" exe "normal! ".l:len."x"
retu 1 retu 1
en en
el el
if search('<!--','bW' ) >=0 if search('<!--','bW' ) >=0
let l:restore = s:SavePos() let l:restore = s:SavePos()
call cursor(b:endcomline,b:endcomcol) call cursor(b:endcomline,b:endcomcol)
exe "normal a".l:sentinel."\<Esc>" exe "normal! a".l:sentinel."\<Esc>"
exe l:restore exe l:restore
exe "normal \"xd/".l:sentinel."/e-".l:len."\<Cr>" exe "normal! \"xd/".l:sentinel."/e-".l:len."\<Cr>"
exe "normal ".l:len."x" exe "normal! ".l:len."x"
retu 1 retu 1
en en
en en
@ -415,16 +412,16 @@ fun! s:DelCData()
if s:InCData() if s:InCData()
if b:begdat if b:begdat
if search(']]>','W' ) >=0 if search(']]>','W' ) >=0
normal hh3x normal! hh3x
call cursor(b:begdatline,b:begdatcol) call cursor(b:begdatline,b:begdatcol)
normal 9x normal! 9x
retu 1 retu 1
en en
el el
if search('<![CDATA[','bW' ) >=0 if search('<![CDATA[','bW' ) >=0
normal 9x normal! 9x
call cursor(b:enddatline,b:enddatcol) call cursor(b:enddatline,b:enddatcol)
normal hh3x normal! hh3x
retu 1 retu 1
en en
en en
@ -503,20 +500,20 @@ fun! s:DelCDataSection()
let l:len = strlen(l:sentinel) let l:len = strlen(l:sentinel)
if b:begdat if b:begdat
if search(']]>','W' ) >=0 if search(']]>','W' ) >=0
exe "normal f>a".l:sentinel."\<Esc>" exe "normal! f>a".l:sentinel."\<Esc>"
call cursor(b:begdatline,b:begdatcol) call cursor(b:begdatline,b:begdatcol)
exe "normal \"xd/".l:sentinel."/e-".l:len."\<Cr>" exe "normal! \"xd/".l:sentinel."/e-".l:len."\<Cr>"
exe "normal ".l:len."x" exe "normal! ".l:len."x"
retu 1 retu 1
en en
el el
if search('<![CDATA[','bW' ) >=0 if search('<![CDATA[','bW' ) >=0
let l:restore = s:SavePos() let l:restore = s:SavePos()
call cursor(b:enddatline,b:enddatcol) call cursor(b:enddatline,b:enddatcol)
exe "normal a".l:sentinel."\<Esc>" exe "normal! a".l:sentinel."\<Esc>"
exe l:restore exe l:restore
exe "normal \"xd/".l:sentinel."/e-".l:len."\<Cr>" exe "normal! \"xd/".l:sentinel."/e-".l:len."\<Cr>"
exe "normal ".l:len."x" exe "normal! ".l:len."x"
retu 1 retu 1
en en
en en
@ -546,16 +543,16 @@ fun! s:MatchesVisual()
let l:restore = s:SavePos() let l:restore = s:SavePos()
if s:TagUnderCursor() if s:TagUnderCursor()
if b:firstWasEndTag if b:firstWasEndTag
normal f> normal! f>
en en
normal gv normal! gv
if s:Match(b:tagName) if s:Match(b:tagName)
if b:firstWasEndTag == 0 if b:firstWasEndTag == 0
normal f> normal! f>
en en
retu retu
en en
normal v normal! v
en en
exe l:restore exe l:restore
endf endf
@ -568,18 +565,18 @@ function! s:makeElement()
let b:haveAtt = 0 let b:haveAtt = 0
let l:alone = (match(getline('.'),'^\s*>\s*$') >= 0) let l:alone = (match(getline('.'),'^\s*>\s*$') >= 0)
let l:endOfLine = ((col('.')+1) == col('$')) let l:endOfLine = ((col('.')+1) == col('$'))
normal i<pf> normal! i<pf>
if b:html_mode && b:tagName =~? b:emptyTags if b:html_mode && b:tagName =~? b:emptyTags
if b:haveAtt == 0 if b:haveAtt == 0
call s:Callback (b:tagName, b:html_mode) call s:Callback (b:tagName, b:html_mode)
endif endif
if b:xml_use_xhtml if b:xml_use_xhtml
exe "normal i/\<Esc>l" exe "normal! i/\<Esc>l"
en en
if l:endOfLine if l:endOfLine
start! start!
el el
normal l normal! l
start start
en en
el el
@ -607,29 +604,29 @@ fun! s:CloseTagFun()
"<t> "<t>
" cursor comes here " cursor comes here
"</t> "</t>
normal h normal! h
if s:TagUnderCursor() if s:TagUnderCursor()
if b:firstWasEndTag == 0 if b:firstWasEndTag == 0
exe "normal 2f>s\<Cr>\<Esc>Ox\<Esc>>>$x" exe "normal! 2f>s\<Cr>\<Esc>Ox\<Esc>>>$x"
start! start!
retu retu
en en
en en
elseif s:TagUnderCursor() elseif s:TagUnderCursor()
if b:firstWasEndTag == 0 if b:firstWasEndTag == 0
exe "normal />\<Cr>" exe "normal! />\<Cr>"
if b:html_mode && b:tagName =~? b:emptyTags if b:html_mode && b:tagName =~? b:emptyTags
if b:haveAtt == 0 if b:haveAtt == 0
call s:Callback (b:tagName, b:html_mode) call s:Callback (b:tagName, b:html_mode)
en en
if b:xml_use_xhtml if b:xml_use_xhtml
exe "normal i/\<Esc>l" exe "normal! i/\<Esc>l"
en en
if l:endOfLine if l:endOfLine
start! start!
retu retu
el el
normal l normal! l
start start
retu retu
en en
@ -647,7 +644,7 @@ fun! s:CloseTagFun()
if (col('.')+1) == col("$") if (col('.')+1) == col("$")
startinsert! startinsert!
else else
normal l normal! l
startinsert startinsert
en en
endf endf
@ -671,14 +668,14 @@ fun! s:BlockTag(multi)
"Get at the end of the block "Get at the end of the block
if col('.') == col("'<") && line('.') == line("'<") if col('.') == col("'<") && line('.') == line("'<")
normal gvov normal! gvov
en en
if a:multi if a:multi
exe "normal! a\<Cr></".l:newname.">\<Cr>\<Esc>" exe "normal! a\<Cr></".l:newname.">\<Cr>\<Esc>"
let l:eline = line('.') let l:eline = line('.')
normal gvov normal! gvov
if col('.') == col("'>") && line('.') == line("'>") if col('.') == col("'>") && line('.') == line("'>")
normal gvov normal! gvov
en en
let l:sline = line(".") + 2 let l:sline = line(".") + 2
exe "normal! i\<Cr><".l:newname. exe "normal! i\<Cr><".l:newname.
@ -688,11 +685,11 @@ fun! s:BlockTag(multi)
let &report=999999 let &report=999999
exe l:sline.','.l:eline.'>' exe l:sline.','.l:eline.'>'
let &report= l:rep let &report= l:rep
exe 'normal '.l:sline.'G0mh'.l:eline."G$v'hgq" exe 'normal! '.l:sline.'G0mh'.l:eline."G$v'hgq"
el el
exe "normal! a</".l:newname.">\<Esc>gvov" exe "normal! a</".l:newname.">\<Esc>gvov"
if col('.') == col("'>") && line('.') == line("'>") if col('.') == col("'>") && line('.') == line("'>")
normal gvov normal! gvov
en en
exe "normal! i<".l:newname. exe "normal! i<".l:newname.
\ (strlen(l:newatt) ? ' '.l:newatt : '' ) \ (strlen(l:newatt) ? ' '.l:newatt : '' )
@ -707,10 +704,10 @@ en
if !exists('*s:BlockWith') if !exists('*s:BlockWith')
fun! s:BlockWith(open,close) fun! s:BlockWith(open,close)
if col('.') == col("'<") && line('.') == line("'<") if col('.') == col("'<") && line('.') == line("'<")
normal gvov normal! gvov
en en
exe "normal! a\<Cr>;x\<Esc>0cfx".a:close."\<Cr>\<Esc>" exe "normal! a\<Cr>;x\<Esc>0cfx".a:close."\<Cr>\<Esc>"
normal gvov normal! gvov
exe "normal! i\<Cr>;x\<Esc>0cfx".a:open."\<Cr>\<Esc>" exe "normal! i\<Cr>;x\<Esc>0cfx".a:open."\<Cr>\<Esc>"
endf endf
en en
@ -722,10 +719,10 @@ if !exists('*s:vlistitem')
fun! s:vlistitem() fun! s:vlistitem()
"Get at the end of the block "Get at the end of the block
if col('.') == col("'<") && line('.') == line("'<") if col('.') == col("'<") && line('.') == line("'<")
normal gvov normal! gvov
en en
exe "normal! a</para>\<Cr></listitem>\<Esc>mh" exe "normal! a</para>\<Cr></listitem>\<Esc>mh"
normal gvov normal! gvov
exe "normal! i\<Cr><listitem>\<Cr>\<Tab><para>\<Esc>'h/listitem>/e+1\<Cr>" exe "normal! i\<Cr><listitem>\<Cr>\<Tab><para>\<Esc>'h/listitem>/e+1\<Cr>"
endf endf
en en
@ -741,9 +738,9 @@ fun! s:Change()
let b:lastTag = l:newname let b:lastTag = l:newname
if s:Match(b:tagName) if s:Match(b:tagName)
exe b:gotoCloseTag exe b:gotoCloseTag
exe 'normal 2lcw' . l:newname . "\<Esc>" exe 'normal! 2lcw' . l:newname . "\<Esc>"
exe b:gotoOpenTag exe b:gotoOpenTag
exe 'normal lcw' . l:newname . "\<Esc>" exe 'normal! lcw' . l:newname . "\<Esc>"
en en
en en
endf endf
@ -777,7 +774,7 @@ fun! s:Join()
el el
let b:gotoCloseTag = s:SavePos() let b:gotoCloseTag = s:SavePos()
en en
let l:DeleteTag = "normal d/>/e\<Cr>" let l:DeleteTag = "normal! d/>/e\<Cr>"
exe b:gotoCloseTag exe b:gotoCloseTag
exe l:DeleteTag exe l:DeleteTag
exe b:gotoOpenTag exe b:gotoOpenTag
@ -804,9 +801,9 @@ fun! s:ChangeWholeTag()
en en
if s:Match(b:tagName) if s:Match(b:tagName)
exe b:gotoCloseTag exe b:gotoCloseTag
exe "normal 2lc/>\<Cr>".l:newname."\<Esc>" exe "normal! 2lc/>\<Cr>".l:newname."\<Esc>"
exe b:gotoOpenTag exe b:gotoOpenTag
exe "normal lc/>/\<Cr>".l:newname. exe "normal! lc/>/\<Cr>".l:newname.
\ (strlen(l:newatt) ? ' '.l:newatt : '' ) \ (strlen(l:newatt) ? ' '.l:newatt : '' )
\."\<Esc>" \."\<Esc>"
en en
@ -820,7 +817,7 @@ fun! s:Delete()
let l:restore = s:SavePos() let l:restore = s:SavePos()
if s:TagUnderCursor() if s:TagUnderCursor()
if s:Match(b:tagName) if s:Match(b:tagName)
let l:DeleteTag = "normal d/>/e\<Cr>" let l:DeleteTag = "normal! d/>/e\<Cr>"
exe b:gotoCloseTag exe b:gotoCloseTag
exe l:DeleteTag exe l:DeleteTag
exe b:gotoOpenTag exe b:gotoOpenTag
@ -845,10 +842,10 @@ fun! s:DeleteSection()
let l:rep=&report let l:rep=&report
let &report=999999 let &report=999999
exe b:gotoCloseTag exe b:gotoCloseTag
exe "normal />\<Cr>a".l:sentinel."\<Esc>" exe "normal! />\<Cr>a".l:sentinel."\<Esc>"
exe b:gotoOpenTag exe b:gotoOpenTag
exe "normal \"xd/".l:sentinel."/e-".l:len."\<Cr>" exe "normal! \"xd/".l:sentinel."/e-".l:len."\<Cr>"
exe "normal ".l:len."x" exe "normal! ".l:len."x"
let &report= l:rep let &report= l:rep
en en
en en
@ -889,7 +886,7 @@ fun! s:FoldTagAll()
en en
let b:lastTag = l:tname let b:lastTag = l:tname
en en
normal G$ normal! G$
let l:flag='w' let l:flag='w'
while search('<'.l:tname.s:OptAttrib,l:flag) > 0 while search('<'.l:tname.s:OptAttrib,l:flag) > 0
let l:flag='W' let l:flag='W'
@ -952,7 +949,7 @@ fun! s:EndTag()
if l:level == 0 if l:level == 0
let l:Name = s:GetTagName(col('.')) let l:Name = s:GetTagName(col('.'))
exe l:restore exe l:restore
exe 'normal a</'. l:Name.">\e" exe 'normal! a</'. l:Name.">\e"
el el
exe l:restore exe l:restore
en en
@ -1087,9 +1084,9 @@ fun! s:FormatTag()
if s:TagUnderCursor() if s:TagUnderCursor()
if s:Match(b:tagName) if s:Match(b:tagName)
exe b:gotoCloseTag exe b:gotoCloseTag
normal hhmh normal! hhmh
exe b:gotoOpenTag exe b:gotoOpenTag
exe "normal />/e+1\<Cr>v'hgq" exe "normal! />/e+1\<Cr>v'hgq"
en en
en en
endf endf
@ -1112,18 +1109,18 @@ fun! s:FormatTagAll()
retu retu
en en
en en
normal G$ normal! G$
let l:flag = 'w' let l:flag = 'w'
while search('<'.l:tname . s:OptAttrib, l:flag) > 0 while search('<'.l:tname . s:OptAttrib, l:flag) > 0
let l:flag = 'W' let l:flag = 'W'
let l:sline = line('.') let l:sline = line('.')
let l:level = 1 let l:level = 1
exe "normal />/e+1\<cr>mh" exe "normal! />/e+1\<cr>mh"
while l:level && search('</\='.l:tname . s:EndofName,'W') > 0 while l:level && search('</\='.l:tname . s:EndofName,'W') > 0
let l:level = l:level + (getline('.')[col('.')] == '/' ? -1 : 1) let l:level = l:level + (getline('.')[col('.')] == '/' ? -1 : 1)
endwhile endwhile
if l:level == 0 if l:level == 0
normal hv'hogq normal! hv'hogq
el el
let l:tmp = let l:tmp =
\ inputdialog("The tag ".l:tname."(".l:sline.") doesn't have a closetag") \ inputdialog("The tag ".l:tname."(".l:sline.") doesn't have a closetag")
@ -1143,39 +1140,39 @@ fun! s:IndentAll()
let l:rep=&report let l:rep=&report
let &report=999999 let &report=999999
"shift everything left "shift everything left
normal 1G<G<G<G<G<G<GG$ normal! 1G<G<G<G<G<G<GG$
if search(s:OpenTag,'w') > 0 if search(s:OpenTag,'w') > 0
let l:level = 1 let l:level = 1
normal f> normal! f>
"if there is something after the tag move that to the next line "if there is something after the tag move that to the next line
if col('.')+1 != col('$') if col('.')+1 != col('$')
echo "after tag".line('.') echo "after tag".line('.')
exe "normal a\<Cr>\<Esc>" exe "normal! a\<Cr>\<Esc>"
el el
normal j normal! j
en en
normal >Gk$ normal! >Gk$
while search(s:OpenOrCloseTag,'W') > 0 while search(s:OpenOrCloseTag,'W') > 0
"if there is text before the tag then move the tag to the next line "if there is text before the tag then move the tag to the next line
if match(getline('.'),s:SpaceInfront) == -1 if match(getline('.'),s:SpaceInfront) == -1
exe "normal i\<Cr>\<Esc>l" exe "normal! i\<Cr>\<Esc>l"
en en
if getline('.')[col('.')] == '/' if getline('.')[col('.')] == '/'
normal <G0f> normal! <G0f>
"if there is something after the tag move that to the next line "if there is something after the tag move that to the next line
if col('.')+1 != col('$') if col('.')+1 != col('$')
exe "normal a\<Cr>\<Esc>" exe "normal! a\<Cr>\<Esc>"
en en
let l:level = l:level - 1 let l:level = l:level - 1
el el
normal f> normal! f>
"if there is something after the tag move that to the next line "if there is something after the tag move that to the next line
if col('.')+1 != col('$') if col('.')+1 != col('$')
exe "normal a\<Cr>\<Esc>" exe "normal! a\<Cr>\<Esc>"
el el
normal j0 normal! j0
en en
normal >Gk$ normal! >Gk$
let l:level = l:level + 1 let l:level = l:level + 1
en en
endwhile endwhile
@ -1298,7 +1295,7 @@ function! s:XmlInstallDocumentation(full_name, revision)
" Try a default configuration in user home: " Try a default configuration in user home:
"let l:vim_doc_path = expand("~") . l:doc_home "let l:vim_doc_path = expand("~") . l:doc_home
let l:vim_doc_path = matchstr(&rtp, let l:vim_doc_path = matchstr(&rtp,
\ escape($HOME, '\') .'[/\\]\%(\.vim\|vimfiles\)') \ escape($HOME, ' \') .'[/\\]\%(\.vim\|vimfiles\)')
if (!(filewritable(l:vim_doc_path) == 2)) if (!(filewritable(l:vim_doc_path) == 2))
execute l:mkdir_cmd . l:vim_doc_path execute l:mkdir_cmd . l:vim_doc_path
if (!(filewritable(l:vim_doc_path) == 2)) if (!(filewritable(l:vim_doc_path) == 2))
@ -1367,7 +1364,7 @@ function! s:XmlInstallDocumentation(full_name, revision)
call append(line('$'), ' v' . 'im:tw=78:ts=8:fen:fdm=marker:ft=help:norl:') call append(line('$'), ' v' . 'im:tw=78:ts=8:fen:fdm=marker:ft=help:norl:')
" Replace revision: " Replace revision:
exe "normal :1,5s/#version#/ v" . a:revision . "/\<CR>" exe "normal! :1,5s/#version#/ v" . a:revision . "/\<CR>"
" Save the help document: " Save the help document:
exe 'w! ' . l:doc_file exe 'w! ' . l:doc_file
@ -1382,7 +1379,7 @@ endfunction
" }}}2 " }}}2
let s:revision= let s:revision=
\ substitute("$Revision: 1.35 $",'\$\S*: \([.0-9]\+\) \$','\1','') \ substitute("$Revision: 1.36 $",'\$\S*: \([.0-9]\+\) \$','\1','')
silent! let s:install_status = silent! let s:install_status =
\ s:XmlInstallDocumentation(expand('<sfile>:p'), s:revision) \ s:XmlInstallDocumentation(expand('<sfile>:p'), s:revision)
if (s:install_status == 1) if (s:install_status == 1)
@ -1744,9 +1741,6 @@ for details.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
*xml-plugin-callbacks* *xml-plugin-callbacks*
------------------------------------------------------------------------------
*xml-plugin-callbacks*
Callback Functions {{{2 ~ Callback Functions {{{2 ~
A callback function is a function used to customize features on a per tag A callback function is a function used to customize features on a per tag

View File

@ -1,6 +1,6 @@
" AlignMapsPlugin: Alignment maps based upon <Align.vim> and <AlignMaps.vim> " AlignMapsPlugin: Alignment maps based upon <Align.vim> and <AlignMaps.vim>
" Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz> " Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
" Date: Oct 24, 2008 " Date: Mar 03, 2009
" "
" NOTE: the code herein needs vim 6.0 or later " NOTE: the code herein needs vim 6.0 or later
" needs <Align.vim> v6 or later " needs <Align.vim> v6 or later
@ -36,10 +36,11 @@
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" Load Once: {{{1 " Load Once: {{{1
if &cp if &cp || exists("g:loaded_AlignMapsPlugin")
finish finish
endif endif
let s:keepcpo= &cpo let s:keepcpo = &cpo
let g:loaded_AlignMapsPlugin = "v41"
set cpo&vim set cpo&vim
" ===================================================================== " =====================================================================
@ -63,11 +64,12 @@ endif
nmap <silent> <script> <Plug>AlignMapsWrapperEnd :call AlignMaps#WrapperEnd()<CR>:set nolz<CR> nmap <silent> <script> <Plug>AlignMapsWrapperEnd :call AlignMaps#WrapperEnd()<CR>:set nolz<CR>
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" Complex C-code alignment maps: {{{2!= "" " Complex C-code alignment maps: {{{2
if !hasmapto('<Plug>AM_a?') |map <unique> <Leader>a? <Plug>AM_a?|endif if !hasmapto('<Plug>AM_a?') |map <unique> <Leader>a? <Plug>AM_a?|endif
if !hasmapto('<Plug>AM_a,') |map <unique> <Leader>a, <Plug>AM_a,|endif if !hasmapto('<Plug>AM_a,') |map <unique> <Leader>a, <Plug>AM_a,|endif
if !hasmapto('<Plug>AM_a<') |map <unique> <Leader>a< <Plug>AM_a<|endif if !hasmapto('<Plug>AM_a<') |map <unique> <Leader>a< <Plug>AM_a<|endif
if !hasmapto('<Plug>AM_a=') |map <unique> <Leader>a= <Plug>AM_a=|endif if !hasmapto('<Plug>AM_a=') |map <unique> <Leader>a= <Plug>AM_a=|endif
if !hasmapto('<Plug>AM_a(') |map <unique> <Leader>a( <Plug>AM_a(|endif
if !hasmapto('<Plug>AM_abox') |map <unique> <Leader>abox <Plug>AM_abox|endif if !hasmapto('<Plug>AM_abox') |map <unique> <Leader>abox <Plug>AM_abox|endif
if !hasmapto('<Plug>AM_acom') |map <unique> <Leader>acom <Plug>AM_acom|endif if !hasmapto('<Plug>AM_acom') |map <unique> <Leader>acom <Plug>AM_acom|endif
if !hasmapto('<Plug>AM_adcom')|map <unique> <Leader>adcom <Plug>AM_adcom|endif if !hasmapto('<Plug>AM_adcom')|map <unique> <Leader>adcom <Plug>AM_adcom|endif
@ -88,6 +90,7 @@ endif
map <silent> <script> <Plug>AM_a? <SID>WS:AlignCtrl mIp1P1lC ? : : : : <CR>:'a,.Align<CR>:'a,'z-1s/\(\s\+\)? /?\1/e<CR><SID>WE map <silent> <script> <Plug>AM_a? <SID>WS:AlignCtrl mIp1P1lC ? : : : : <CR>:'a,.Align<CR>:'a,'z-1s/\(\s\+\)? /?\1/e<CR><SID>WE
map <silent> <script> <Plug>AM_a, <SID>WS:'y,'zs/\(\S\)\s\+/\1 /ge<CR>'yjma'zk:call AlignMaps#CharJoiner(",")<cr>:silent 'y,'zg/,/call AlignMaps#FixMultiDec()<CR>'z:exe "norm \<Plug>AM_adec"<cr><SID>WE map <silent> <script> <Plug>AM_a, <SID>WS:'y,'zs/\(\S\)\s\+/\1 /ge<CR>'yjma'zk:call AlignMaps#CharJoiner(",")<cr>:silent 'y,'zg/,/call AlignMaps#FixMultiDec()<CR>'z:exe "norm \<Plug>AM_adec"<cr><SID>WE
map <silent> <script> <Plug>AM_a< <SID>WS:AlignCtrl mIp1P1=l << >><CR>:'a,.Align<CR><SID>WE map <silent> <script> <Plug>AM_a< <SID>WS:AlignCtrl mIp1P1=l << >><CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_a( <SID>WS:AlignCtrl mIp0P1=l<CR>:'a,.Align [(,]<CR>:sil 'y+1,'z-1s/\(\s\+\),/,\1/ge<CR><SID>WE
map <silent> <script> <Plug>AM_a= <SID>WS:AlignCtrl mIp1P1=l<CR>:AlignCtrl g :=<CR>:'a,'zAlign :\==<CR><SID>WE map <silent> <script> <Plug>AM_a= <SID>WS:AlignCtrl mIp1P1=l<CR>:AlignCtrl g :=<CR>:'a,'zAlign :\==<CR><SID>WE
map <silent> <script> <Plug>AM_abox <SID>WS:let g:alignmaps_iws=substitute(getline("'a"),'^\(\s*\).*$','\1','e')<CR>:'a,'z-1s/^\s\+//e<CR>:'a,'z-1s/^.*$/@&@/<CR>:AlignCtrl m=p01P0w @<CR>:'a,.Align<CR>:'a,'z-1s/@/ * /<CR>:'a,'z-1s/@$/*/<CR>'aYP:s/./*/g<CR>0r/'zkYp:s/./*/g<CR>0r A/<Esc>:exe "'a-1,'z-1s/^/".g:alignmaps_iws."/e"<CR><SID>WE map <silent> <script> <Plug>AM_abox <SID>WS:let g:alignmaps_iws=substitute(getline("'a"),'^\(\s*\).*$','\1','e')<CR>:'a,'z-1s/^\s\+//e<CR>:'a,'z-1s/^.*$/@&@/<CR>:AlignCtrl m=p01P0w @<CR>:'a,.Align<CR>:'a,'z-1s/@/ * /<CR>:'a,'z-1s/@$/*/<CR>'aYP:s/./*/g<CR>0r/'zkYp:s/./*/g<CR>0r A/<Esc>:exe "'a-1,'z-1s/^/".g:alignmaps_iws."/e"<CR><SID>WE
map <silent> <script> <Plug>AM_acom <SID>WS:'a,.s/\/[*/]\/\=/@&@/e<CR>:'a,.s/\*\//@&/e<CR>:'y,'zs/^\( *\) @/\1@/e<CR>'zk:call AlignMaps#StdAlign(2)<CR>:'y,'zs/^\(\s*\) @/\1/e<CR>:'y,'zs/ @//eg<CR><SID>WE map <silent> <script> <Plug>AM_acom <SID>WS:'a,.s/\/[*/]\/\=/@&@/e<CR>:'a,.s/\*\//@&/e<CR>:'y,'zs/^\( *\) @/\1@/e<CR>'zk:call AlignMaps#StdAlign(2)<CR>:'y,'zs/^\(\s*\) @/\1/e<CR>:'y,'zs/ @//eg<CR><SID>WE
@ -97,8 +100,8 @@ map <silent> <script> <Plug>AM_ascom <SID>WS:'a,.s/\/[*/]/@&@/e<CR>:'a,.s/\*\//@
map <silent> <script> <Plug>AM_adec <SID>WS:'a,'zs/\([^ \t/(]\)\([*&]\)/\1 \2/e<CR>:'y,'zv/^\//s/\([^ \t]\)\s\+/\1 /ge<CR>:'y,'zv/^\s*[*/]/s/\([^/][*&]\)\s\+/\1/ge<CR>:'y,'zv/^\s*[*/]/s/^\(\s*\%(\K\k*\s\+\%([a-zA-Z_*(&]\)\@=\)\+\)\([*(&]*\)\s*\([a-zA-Z0-9_()]\+\)\s*\(\(\[.\{-}]\)*\)\s*\(=\)\=\s*\(.\{-}\)\=\s*;/\1@\2#@\3\4@\6@\7;@/e<CR>:'y,'zv/^\s*[*/]/s/\*\/\s*$/@*\//e<CR>:'y,'zv/^\s*[*/]/s/^\s\+\*/@@@@@* /e<CR>:'y,'zv/^\s*[*/]/s/^@@@@@\*\(.*[^*/]\)$/&@*/e<CR>'yjma'zk:AlignCtrl v ^\s*[*/#]<CR>:call AlignMaps#StdAlign(1)<cr>:'y,'zv/^\s*[*/]/s/@ //ge<CR>:'y,'zv/^\s*[*/]/s/\(\s*\);/;\1/e<CR>:'y,'zv/^#/s/# //e<CR>:'y,'zv/^\s\+[*/#]/s/\([^/*]\)\(\*\+\)\( \+\)/\1\3\2/e<CR>:'y,'zv/^\s\+[*/#]/s/\((\+\)\( \+\)\*/\2\1*/e<CR>:'y,'zv/^\s\+[*/#]/s/^\(\s\+\) \*/\1*/e<CR>:'y,'zv/^\s\+[*/#]/s/[ \t@]*$//e<CR>:'y,'zs/^[*]/ */e<CR><SID>WE map <silent> <script> <Plug>AM_adec <SID>WS:'a,'zs/\([^ \t/(]\)\([*&]\)/\1 \2/e<CR>:'y,'zv/^\//s/\([^ \t]\)\s\+/\1 /ge<CR>:'y,'zv/^\s*[*/]/s/\([^/][*&]\)\s\+/\1/ge<CR>:'y,'zv/^\s*[*/]/s/^\(\s*\%(\K\k*\s\+\%([a-zA-Z_*(&]\)\@=\)\+\)\([*(&]*\)\s*\([a-zA-Z0-9_()]\+\)\s*\(\(\[.\{-}]\)*\)\s*\(=\)\=\s*\(.\{-}\)\=\s*;/\1@\2#@\3\4@\6@\7;@/e<CR>:'y,'zv/^\s*[*/]/s/\*\/\s*$/@*\//e<CR>:'y,'zv/^\s*[*/]/s/^\s\+\*/@@@@@* /e<CR>:'y,'zv/^\s*[*/]/s/^@@@@@\*\(.*[^*/]\)$/&@*/e<CR>'yjma'zk:AlignCtrl v ^\s*[*/#]<CR>:call AlignMaps#StdAlign(1)<cr>:'y,'zv/^\s*[*/]/s/@ //ge<CR>:'y,'zv/^\s*[*/]/s/\(\s*\);/;\1/e<CR>:'y,'zv/^#/s/# //e<CR>:'y,'zv/^\s\+[*/#]/s/\([^/*]\)\(\*\+\)\( \+\)/\1\3\2/e<CR>:'y,'zv/^\s\+[*/#]/s/\((\+\)\( \+\)\*/\2\1*/e<CR>:'y,'zv/^\s\+[*/#]/s/^\(\s\+\) \*/\1*/e<CR>:'y,'zv/^\s\+[*/#]/s/[ \t@]*$//e<CR>:'y,'zs/^[*]/ */e<CR><SID>WE
map <silent> <script> <Plug>AM_adef <SID>WS:AlignPush<CR>:AlignCtrl v ^\s*\(\/\*\<bar>\/\/\)<CR>:'a,.v/^\s*\(\/\*\<bar>\/\/\)/s/^\(\s*\)#\(\s\)*define\s*\(\I[a-zA-Z_0-9(),]*\)\s*\(.\{-}\)\($\<Bar>\/\*\)/#\1\2define @\3@\4@\5/e<CR>:'a,.v/^\s*\(\/\*\<bar>\/\/\)/s/\($\<Bar>\*\/\)/@&/e<CR>'zk:call AlignMaps#StdAlign(1)<cr>'yjma'zk:'a,.v/^\s*\(\/\*\<bar>\/\/\)/s/ @//g<CR><SID>WE map <silent> <script> <Plug>AM_adef <SID>WS:AlignPush<CR>:AlignCtrl v ^\s*\(\/\*\<bar>\/\/\)<CR>:'a,.v/^\s*\(\/\*\<bar>\/\/\)/s/^\(\s*\)#\(\s\)*define\s*\(\I[a-zA-Z_0-9(),]*\)\s*\(.\{-}\)\($\<Bar>\/\*\)/#\1\2define @\3@\4@\5/e<CR>:'a,.v/^\s*\(\/\*\<bar>\/\/\)/s/\($\<Bar>\*\/\)/@&/e<CR>'zk:call AlignMaps#StdAlign(1)<cr>'yjma'zk:'a,.v/^\s*\(\/\*\<bar>\/\/\)/s/ @//g<CR><SID>WE
map <silent> <script> <Plug>AM_afnc :<c-u>set lz<CR>:silent call AlignMaps#Afnc()<CR>:set nolz<CR> map <silent> <script> <Plug>AM_afnc :<c-u>set lz<CR>:silent call AlignMaps#Afnc()<CR>:set nolz<CR>
map <silent> <script> <Plug>AM_aunum <SID>WS:'a,'zs/\%([0-9.]\)\s\+\zs\([-+.]\=\d\)/@\1/ge<CR>:'a,'zs/\(\(^\|\s\)\d\+\)\(\s\+\)@/\1@\3@/ge<CR>:'a,'zs/\.@/\.0@/ge<CR>:AlignCtrl mp0P0r<CR>:'a,'zAlign [.@]<CR>:'a,'zs/@/ /ge<CR>:'a,'zs/\(\.\)\(\s\+\)\([0-9.,eE+]\+\)/\1\3\2/ge<CR>:'a,'zs/\([eE]\)\(\s\+\)\([0-9+\-+]\+\)/\1\3\2/ge<CR><SID>WE map <silent> <script> <Plug>AM_aunum <SID>WS:'a,'zs/\%([0-9.]\)\s\+\zs\([-+.]\=\d\)/@\1/ge<CR>:'a,'zs/\(\(^\|\s\)\d\+\)\(\s\+\)@/\1@\3@/ge<CR>:'a,'zs/\.@/\.0@/ge<CR>:AlignCtrl wmp0P0r<CR>:'a,'zAlign [.@]<CR>:'a,'zs/@/ /ge<CR>:'a,'zs/\(\.\)\(\s\+\)\([0-9.,eE+]\+\)/\1\3\2/ge<CR>:'a,'zs/\([eE]\)\(\s\+\)\([0-9+\-+]\+\)/\1\3\2/ge<CR><SID>WE
map <silent> <script> <Plug>AM_aenum <SID>WS:'a,'zs/\%([0-9.]\)\s\+\([-+]\=\d\)/\1@\2/ge<CR>:'a,'zs/\.@/\.0@/ge<CR>:AlignCtrl mp0P0r<CR>:'a,'zAlign [,@]<CR>:'a,'zs/@/ /ge<CR>:'a,'zs/\(,\)\(\s\+\)\([-0-9.,eE+]\+\)/\1\3\2/ge<CR>:'a,'zs/\([eE]\)\(\s\+\)\([0-9+\-+]\+\)/\1\3\2/ge<CR><SID>WE map <silent> <script> <Plug>AM_aenum <SID>WS:'a,'zs/\%([0-9.]\)\s\+\([-+]\=\d\)/\1@\2/ge<CR>:'a,'zs/\.@/\.0@/ge<CR>:AlignCtrl wmp0P0r<CR>:'a,'zAlign [,@]<CR>:'a,'zs/@/ /ge<CR>:'a,'zs/\(,\)\(\s\+\)\([-0-9.,eE+]\+\)/\1\3\2/ge<CR>:'a,'zs/\([eE]\)\(\s\+\)\([0-9+\-+]\+\)/\1\3\2/ge<CR><SID>WE
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" html table alignment {{{2 " html table alignment {{{2
@ -128,7 +131,7 @@ map <silent> <script> <Plug>AM_Ts, <SID>WS:AlignCtrl mIp0P1=r ,<CR>:'a,.Align<C
map <silent> <script> <Plug>AM_T: <SID>WS:AlignCtrl mIp1P1=r :<CR>:'a,.Align<CR><SID>WE map <silent> <script> <Plug>AM_T: <SID>WS:AlignCtrl mIp1P1=r :<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_T; <SID>WS:AlignCtrl mIp0P0=r ;<CR>:'a,.Align<CR><SID>WE map <silent> <script> <Plug>AM_T; <SID>WS:AlignCtrl mIp0P0=r ;<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_T< <SID>WS:AlignCtrl mIp0P0=r <<CR>:'a,.Align<CR><SID>WE map <silent> <script> <Plug>AM_T< <SID>WS:AlignCtrl mIp0P0=r <<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_T= <SID>WS:'a,'z-1s/\s\+\([*/+\-%<Bar>&\~^]\==\)/ \1/e<CR>:'a,'z-1s@ \+\([*/+\-%<Bar>&\~^]\)=@\1=@ge<CR>:'a,'z-1s/; */;@/e<CR>:'a,'z-1s/==/\="\<Char-0xff>\<Char-0xff>"/ge<CR>:'a,'z-1s/!=/\x="!\<Char-0xff>"/ge<CR>:AlignCtrl mIp1P1=r = @<CR>:AlignCtrl g =<CR>:'a,'z-1Align<CR>:'a,'z-1s/; *@/;/e<CR>:'a,'z-1s/; *$/;/e<CR>:'a,'z-1s@\([*/+\-%<Bar>&\~^]\)\( \+\)=@\2\1=@ge<CR>:'a,'z-1s/\( \+\);/;\1/ge<CR>:'a,'z-1s/\xff/=/ge<CR><SID>WE:exe "norm <Plug>acom" map <silent> <script> <Plug>AM_T= <SID>WS:'a,'z-1s/\s\+\([*/+\-%<Bar>&\~^]\==\)/ \1/e<CR>:'a,'z-1s@ \+\([*/+\-%<Bar>&\~^]\)=@\1=@ge<CR>:'a,'z-1s/; */;@/e<CR>:'a,'z-1s/==/\="\<Char-0x0f>\<Char-0x0f>"/ge<CR>:'a,'z-1s/!=/\x="!\<Char-0x0f>"/ge<CR>:AlignCtrl mIp1P1=r = @<CR>:AlignCtrl g =<CR>:'a,'z-1Align<CR>:'a,'z-1s/; *@/;/e<CR>:'a,'z-1s/; *$/;/e<CR>:'a,'z-1s@\([*/+\-%<Bar>&\~^]\)\( \+\)=@\2\1=@ge<CR>:'a,'z-1s/\( \+\);/;\1/ge<CR>:'a,'z-1s/\xff/=/ge<CR><SID>WE:exe "norm <Plug>acom"
map <silent> <script> <Plug>AM_T? <SID>WS:AlignCtrl mIp0P0=r ?<CR>:'a,.Align<CR>:'y,'zs/ \( *\);/;\1/ge<CR><SID>WE map <silent> <script> <Plug>AM_T? <SID>WS:AlignCtrl mIp0P0=r ?<CR>:'a,.Align<CR>:'y,'zs/ \( *\);/;\1/ge<CR><SID>WE
map <silent> <script> <Plug>AM_T@ <SID>WS:AlignCtrl mIp0P0=r @<CR>:'a,.Align<CR><SID>WE map <silent> <script> <Plug>AM_T@ <SID>WS:AlignCtrl mIp0P0=r @<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_Tab <SID>WS:'a,.s/^\(\t*\)\(.*\)/\=submatch(1).escape(substitute(submatch(2),'\t','@','g'),'\')/<CR>:AlignCtrl mI=r @<CR>:'a,.Align<CR>:'y+1,'z-1s/@/ /g<CR><SID>WE map <silent> <script> <Plug>AM_Tab <SID>WS:'a,.s/^\(\t*\)\(.*\)/\=submatch(1).escape(substitute(submatch(2),'\t','@','g'),'\')/<CR>:AlignCtrl mI=r @<CR>:'a,.Align<CR>:'y+1,'z-1s/@/ /g<CR><SID>WE
@ -140,11 +143,15 @@ map <silent> <script> <Plug>AM_T~ <SID>WS:AlignCtrl mIp0P0=r ~<CR>:'a,.Align<C
if !hasmapto('<Plug>AM_t|') |map <unique> <Leader>t| <Plug>AM_t||endif if !hasmapto('<Plug>AM_t|') |map <unique> <Leader>t| <Plug>AM_t||endif
if !hasmapto('<Plug>AM_t#') |map <unique> <Leader>t# <Plug>AM_t#|endif if !hasmapto('<Plug>AM_t#') |map <unique> <Leader>t# <Plug>AM_t#|endif
if !hasmapto('<Plug>AM_t,') |map <unique> <Leader>t, <Plug>AM_t,|endif if !hasmapto('<Plug>AM_t,') |map <unique> <Leader>t, <Plug>AM_t,|endif
if !hasmapto('<Plug>AM_ts,') |map <unique> <Leader>ts, <Plug>AM_ts,|endif
if !hasmapto('<Plug>AM_t:') |map <unique> <Leader>t: <Plug>AM_t:|endif if !hasmapto('<Plug>AM_t:') |map <unique> <Leader>t: <Plug>AM_t:|endif
if !hasmapto('<Plug>AM_t;') |map <unique> <Leader>t; <Plug>AM_t;|endif if !hasmapto('<Plug>AM_t;') |map <unique> <Leader>t; <Plug>AM_t;|endif
if !hasmapto('<Plug>AM_t<') |map <unique> <Leader>t< <Plug>AM_t<|endif if !hasmapto('<Plug>AM_t<') |map <unique> <Leader>t< <Plug>AM_t<|endif
if !hasmapto('<Plug>AM_t=') |map <unique> <Leader>t= <Plug>AM_t=|endif if !hasmapto('<Plug>AM_t=') |map <unique> <Leader>t= <Plug>AM_t=|endif
if !hasmapto('<Plug>AM_ts,') |map <unique> <Leader>ts, <Plug>AM_ts,|endif
if !hasmapto('<Plug>AM_ts:') |map <unique> <Leader>ts: <Plug>AM_ts:|endif
if !hasmapto('<Plug>AM_ts;') |map <unique> <Leader>ts; <Plug>AM_ts;|endif
if !hasmapto('<Plug>AM_ts<') |map <unique> <Leader>ts< <Plug>AM_ts<|endif
if !hasmapto('<Plug>AM_ts=') |map <unique> <Leader>ts= <Plug>AM_ts=|endif
if !hasmapto('<Plug>AM_w=') |map <unique> <Leader>w= <Plug>AM_w=|endif if !hasmapto('<Plug>AM_w=') |map <unique> <Leader>w= <Plug>AM_w=|endif
if !hasmapto('<Plug>AM_t?') |map <unique> <Leader>t? <Plug>AM_t?|endif if !hasmapto('<Plug>AM_t?') |map <unique> <Leader>t? <Plug>AM_t?|endif
if !hasmapto('<Plug>AM_t~') |map <unique> <Leader>t~ <Plug>AM_t~|endif if !hasmapto('<Plug>AM_t~') |map <unique> <Leader>t~ <Plug>AM_t~|endif
@ -159,17 +166,22 @@ if !hasmapto('<Plug>AM_tt') |map <unique> <Leader>tt <Plug>AM_tt|endif
map <silent> <script> <Plug>AM_t| <SID>WS:AlignCtrl mIp0P0=l <Bar><CR>:'a,.Align<CR><SID>WE map <silent> <script> <Plug>AM_t| <SID>WS:AlignCtrl mIp0P0=l <Bar><CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_t# <SID>WS:AlignCtrl mIp0P0=l #<CR>:'a,.Align<CR><SID>WE map <silent> <script> <Plug>AM_t# <SID>WS:AlignCtrl mIp0P0=l #<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_t, <SID>WS:AlignCtrl mIp0P1=l ,<CR>:'a,.Align<CR><SID>WE map <silent> <script> <Plug>AM_t, <SID>WS:AlignCtrl mIp0P1=l ,<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_ts, <SID>WS:AlignCtrl mIp0P1=l ,<CR>:'a,.Align<CR>:'a,.s/\(\s*\),/,\1/ge<CR><SID>WE
map <silent> <script> <Plug>AM_t: <SID>WS:AlignCtrl mIp1P1=l :<CR>:'a,.Align<CR><SID>WE map <silent> <script> <Plug>AM_t: <SID>WS:AlignCtrl mIp1P1=l :<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_t; <SID>WS:AlignCtrl mIp0P1=l ;<CR>:'a,.Align<CR>:'y,'zs/\( *\);/;\1/ge<CR><SID>WE map <silent> <script> <Plug>AM_t; <SID>WS:AlignCtrl mIp0P1=l ;<CR>:'a,.Align<CR>:sil 'y,'zs/\( *\);/;\1/ge<CR><SID>WE
map <silent> <script> <Plug>AM_t< <SID>WS:AlignCtrl mIp0P0=l <<CR>:'a,.Align<CR><SID>WE map <silent> <script> <Plug>AM_t< <SID>WS:AlignCtrl mIp0P0=l <<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_t= <SID>WS:call AlignMaps#Equals()<CR><SID>WE map <silent> <script> <Plug>AM_t= <SID>WS:call AlignMaps#Equals()<CR><SID>WE
map <silent> <script> <Plug>AM_w= <SID>WS:'a,'zg/=/s/\s\+\([*/+\-%<Bar>&\~^]\==\)/ \1/e<CR>:'a,'zg/=/s@ \+\([*/+\-%<Bar>&\~^]\)=@\1=@ge<CR>:'a,'zg/=/s/==/\="\<Char-0xff>\<Char-0xff>"/ge<CR>:'a,'zg/=/s/!=/\="!\<Char-0xff>"/ge<CR>'zk:AlignCtrl mWp1P1=l =<CR>:AlignCtrl g =<CR>:'a,'z-1g/=/Align<CR>:'a,'z-1g/=/s@\([*/+\-%<Bar>&\~^!=]\)\( \+\)=@\2\1=@ge<CR>:'a,'z-1g/=/s/\( \+\);/;\1/ge<CR>:'a,'z-1v/^\s*\/[*/]/s/\/[*/]/@&@/e<CR>:'a,'z-1v/^\s*\/[*/]/s/\*\//@&/e<CR>'zk:call AlignMaps#StdAlign(1)<cr>:'y,'zs/^\(\s*\) @/\1/e<CR>:'a,'z-1g/=/s/\xff/=/ge<CR>:'y,'zg/=/s/ @//eg<CR><SID>WE map <silent> <script> <Plug>AM_ts, <SID>WS:AlignCtrl mIp0P1=l #<CR>:'a,.Align<CR>:sil 'y+1,'z-1s/\(\s*\)#/,\1/ge<CR><SID>WE
map <silent> <script> <Plug>AM_ts, <SID>WS:AlignCtrl mIp0P1=l ,<CR>:'a,.Align<CR>:sil 'y+1,'z-1s/\(\s*\),/,\1/ge<CR><SID>WE
map <silent> <script> <Plug>AM_ts: <SID>WS:AlignCtrl mIp1P1=l :<CR>:'a,.Align<CR>:sil 'y+1,'z-1s/\(\s*\):/:\1/ge<CR><SID>WE
map <silent> <script> <Plug>AM_ts; <SID>WS:AlignCtrl mIp1P1=l ;<CR>:'a,.Align<CR>:sil 'y+1,'z-1s/\(\s*\);/;\1/ge<CR><SID>WE
map <silent> <script> <Plug>AM_ts< <SID>WS:AlignCtrl mIp1P1=l <<CR>:'a,.Align<CR>:sil 'y+1,'z-1s/\(\s*\)</<\1/ge<CR><SID>WE
map <silent> <script> <Plug>AM_ts= <SID>WS:AlignCtrl mIp1P1=l =<CR>:'a,.Align<CR>:sil 'y+1,'z-1s/\(\s*\)=/=\1/ge<CR><SID>WE
map <silent> <script> <Plug>AM_w= <SID>WS:'a,'zg/=/s/\s\+\([*/+\-%<Bar>&\~^]\==\)/ \1/e<CR>:'a,'zg/=/s@ \+\([*/+\-%<Bar>&\~^]\)=@\1=@ge<CR>:'a,'zg/=/s/==/\="\<Char-0x0f>\<Char-0x0f>"/ge<CR>:'a,'zg/=/s/!=/\="!\<Char-0x0f>"/ge<CR>'zk:AlignCtrl mWp1P1=l =<CR>:AlignCtrl g =<CR>:'a,'z-1g/=/Align<CR>:'a,'z-1g/=/s@\([*/+\-%<Bar>&\~^!=]\)\( \+\)=@\2\1=@ge<CR>:'a,'z-1g/=/s/\( \+\);/;\1/ge<CR>:'a,'z-1v/^\s*\/[*/]/s/\/[*/]/@&@/e<CR>:'a,'z-1v/^\s*\/[*/]/s/\*\//@&/e<CR>'zk:call AlignMaps#StdAlign(1)<cr>:'y,'zs/^\(\s*\) @/\1/e<CR>:'a,'z-1g/=/s/\xff/=/ge<CR>:'y,'zg/=/s/ @//eg<CR><SID>WE
map <silent> <script> <Plug>AM_t? <SID>WS:AlignCtrl mIp0P0=l ?<CR>:'a,.Align<CR>:.,'zs/ \( *\);/;\1/ge<CR><SID>WE map <silent> <script> <Plug>AM_t? <SID>WS:AlignCtrl mIp0P0=l ?<CR>:'a,.Align<CR>:.,'zs/ \( *\);/;\1/ge<CR><SID>WE
map <silent> <script> <Plug>AM_t~ <SID>WS:AlignCtrl mIp0P0=l ~<CR>:'a,.Align<CR>:'y,'zs/ \( *\);/;\1/ge<CR><SID>WE map <silent> <script> <Plug>AM_t~ <SID>WS:AlignCtrl mIp0P0=l ~<CR>:'a,.Align<CR>:'y,'zs/ \( *\);/;\1/ge<CR><SID>WE
map <silent> <script> <Plug>AM_t@ <SID>WS::call AlignMaps#StdAlign(1)<cr>:<SID>WE map <silent> <script> <Plug>AM_t@ <SID>WS::call AlignMaps#StdAlign(1)<cr>:<SID>WE
map <silent> <script> <Plug>AM_m= <SID>WS:'a,'zs/\s\+\([*/+\-%<Bar>&\~^]\==\)/ \1/e<CR>:'a,'zs@ \+\([*/+\-%<Bar>&\~^]\)=@\1=@ge<CR>:'a,'zs/==/\="\<Char-0xff>\<Char-0xff>"/ge<CR>:'a,'zs/!=/\="!\<Char-0xff>"/ge<CR>'zk:AlignCtrl mIp1P1=l =<CR>:AlignCtrl g =<CR>:'a,'z-1Align<CR>:'a,'z-1s@\([*/+\-%<Bar>&\~^!=]\)\( \+\)=@\2\1=@ge<CR>:'a,'z-1s/\( \+\);/;\1/ge<CR>:'a,'z-s/%\ze[^=]/ @%@ /e<CR>'zk:call AlignMaps#StdAlign(1)<cr>:'y,'zs/^\(\s*\) @/\1/e<CR>:'a,'z-1s/\xff/=/ge<CR>:'y,'zs/ @//eg<CR><SID>WE map <silent> <script> <Plug>AM_m= <SID>WS:'a,'zs/\s\+\([*/+\-%<Bar>&\~^]\==\)/ \1/e<CR>:'a,'zs@ \+\([*/+\-%<Bar>&\~^]\)=@\1=@ge<CR>:'a,'zs/==/\="\<Char-0x0f>\<Char-0x0f>"/ge<CR>:'a,'zs/!=/\="!\<Char-0x0f>"/ge<CR>'zk:AlignCtrl mIp1P1=l =<CR>:AlignCtrl g =<CR>:'a,'z-1Align<CR>:'a,'z-1s@\([*/+\-%<Bar>&\~^!=]\)\( \+\)=@\2\1=@ge<CR>:'a,'z-1s/\( \+\);/;\1/ge<CR>:'a,'z-s/%\ze[^=]/ @%@ /e<CR>'zk:call AlignMaps#StdAlign(1)<cr>:'y,'zs/^\(\s*\) @/\1/e<CR>:'a,'z-1s/\xff/=/ge<CR>:'y,'zs/ @//eg<CR><SID>WE
map <silent> <script> <Plug>AM_tab <SID>WS:'a,.s/^\(\t*\)\(.*\)$/\=submatch(1).escape(substitute(submatch(2),'\t',"\<Char-0xff>",'g'),'\')/<CR>:if &ts == 1<bar>exe "AlignCtrl mI=lp0P0 \<Char-0xff>"<bar>else<bar>exe "AlignCtrl mI=l \<Char-0xff>"<bar>endif<CR>:'a,.Align<CR>:exe "'y+1,'z-1s/\<Char-0xff>/".((&ts == 1)? '\t' : ' ')."/g"<CR><SID>WE map <silent> <script> <Plug>AM_tab <SID>WS:'a,.s/^\(\t*\)\(.*\)$/\=submatch(1).escape(substitute(submatch(2),'\t',"\<Char-0x0f>",'g'),'\')/<CR>:if &ts == 1<bar>exe "AlignCtrl mI=lp0P0 \<Char-0x0f>"<bar>else<bar>exe "AlignCtrl mI=l \<Char-0x0f>"<bar>endif<CR>:'a,.Align<CR>:exe "'y+1,'z-1s/\<Char-0x0f>/".((&ts == 1)? '\t' : ' ')."/g"<CR><SID>WE
map <silent> <script> <Plug>AM_tml <SID>WS:AlignCtrl mWp1P0=l \\\@<!\\\s*$<CR>:'a,.Align<CR><SID>WE map <silent> <script> <Plug>AM_tml <SID>WS:AlignCtrl mWp1P0=l \\\@<!\\\s*$<CR>:'a,.Align<CR><SID>WE
map <silent> <script> <Plug>AM_tsp <SID>WS:'a,.s/^\(\s*\)\(.*\)/\=submatch(1).escape(substitute(submatch(2),'\s\+','@','g'),'\')/<CR>:AlignCtrl mI=lp0P0 @<CR>:'a,.Align<CR>:'y+1,'z-1s/@/ /g<CR><SID>WE map <silent> <script> <Plug>AM_tsp <SID>WS:'a,.s/^\(\s*\)\(.*\)/\=submatch(1).escape(substitute(submatch(2),'\s\+','@','g'),'\')/<CR>:AlignCtrl mI=lp0P0 @<CR>:'a,.Align<CR>:'y+1,'z-1s/@/ /g<CR><SID>WE
map <silent> <script> <Plug>AM_tsq <SID>WS:'a,.AlignReplaceQuotedSpaces<CR>:'a,.s/^\(\s*\)\(.*\)/\=submatch(1).substitute(submatch(2),'\s\+','@','g')/<CR>:AlignCtrl mIp0P0=l @<CR>:'a,.Align<CR>:'y+1,'z-1s/[%@]/ /g<CR><SID>WE map <silent> <script> <Plug>AM_tsq <SID>WS:'a,.AlignReplaceQuotedSpaces<CR>:'a,.s/^\(\s*\)\(.*\)/\=submatch(1).substitute(submatch(2),'\s\+','@','g')/<CR>:AlignCtrl mIp0P0=l @<CR>:'a,.Align<CR>:'y+1,'z-1s/[%@]/ /g<CR><SID>WE

View File

@ -1,6 +1,6 @@
" AlignPlugin: tool to align multiple fields based on one or more separators " AlignPlugin: tool to align multiple fields based on one or more separators
" Author: Charles E. Campbell, Jr. " Author: Charles E. Campbell, Jr.
" Date: Nov 15, 2007 " Date: Nov 02, 2008
" GetLatestVimScripts: 294 1 :AutoInstall: Align.vim " GetLatestVimScripts: 294 1 :AutoInstall: Align.vim
" GetLatestVimScripts: 1066 1 :AutoInstall: cecutil.vim " GetLatestVimScripts: 1066 1 :AutoInstall: cecutil.vim
" Copyright: Copyright (C) 1999-2007 Charles E. Campbell, Jr. {{{1 " Copyright: Copyright (C) 1999-2007 Charles E. Campbell, Jr. {{{1
@ -19,10 +19,10 @@
" faith to faith. " faith to faith.
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" Load Once: {{{1 " Load Once: {{{1
if &cp || exists("g:loaded_alignPlugin") if &cp || exists("g:loaded_AlignPlugin")
finish finish
endif endif
let g:loaded_alignPlugin = 1 let g:loaded_AlignPlugin = "v35"
let s:keepcpo = &cpo let s:keepcpo = &cpo
set cpo&vim set cpo&vim

File diff suppressed because it is too large Load Diff

View File

@ -1,468 +0,0 @@
" ---------------------------------------------------------------------
" GetLatestVimScripts.vim
" Author: Charles E. Campbell, Jr.
" Date: Feb 15, 2006
" Version: 20
" Installing: :help glvs-install
" Usage: :help glvs
"
" GetLatestVimScripts: 642 1 :AutoInstall: GetLatestVimScripts.vim
" ---------------------------------------------------------------------
" Initialization: {{{1
" if you're sourcing this file, surely you can't be
" expecting vim to be in its vi-compatible mode
if &cp
echoerr "GetLatestVimScripts is not vi-compatible; not loaded (you need to set nocp)"
finish
endif
let s:keepfo = &fo
let s:keepcpo = &cpo
set cpo&vim
if exists("loaded_GetLatestVimScripts")
finish
endif
let g:loaded_GetLatestVimScripts= "v20"
" ---------------------------------------------------------------------
" Global Variables: {{{1
" allow user to change the command for obtaining scripts (does fetch work?)
if !exists("g:GetLatestVimScripts_wget")
let g:GetLatestVimScripts_wget= "wget"
endif
if !exists("g:GetLatestVimScripts_options")
let g:GetLatestVimScripts_options= "-q -O"
endif
if !exists("g:GetLatestVimScripts_allowautoinstall")
let g:GetLatestVimScripts_allowautoinstall= 1
endif
"" For debugging:
"let g:GetLatestVimScripts_wget = "echo"
"let g:GetLatestVimScripts_options = "options"
" check if s:autoinstall is possible
let s:autoinstall= ""
if g:GetLatestVimScripts_allowautoinstall
if (has("win32") || has("gui_win32") || has("gui_win32s") || has("win16") || has("win64") || has("win32unix") || has("win95")) && &shell != "bash"
" windows (but not cygwin/bash)
let s:dotvim= "vimfiles"
if !exists("g:GetLatestVimScripts_mv")
let g:GetLatestVimScripts_mv= "ren"
endif
else
" unix
let s:dotvim= ".vim"
if !exists("g:GetLatestVimScripts_mv")
let g:GetLatestVimScripts_mv= "mv"
endif
endif
if exists('$HOME') && isdirectory(expand("$HOME")."/".s:dotvim)
let s:autoinstall= $HOME."/".s:dotvim
endif
" call Decho("s:autoinstall<".s:autoinstall.">")
else
" call Decho("g:GetLatestVimScripts_allowautoinstall=".g:GetLatestVimScripts_allowautoinstall.": :AutoInstall: disabled")
endif
" ---------------------------------------------------------------------
" Public Interface: {{{1
com! -nargs=0 GetLatestVimScripts call <SID>GetLatestVimScripts()
silent! com -nargs=0 GLVS call <SID>GetLatestVimScripts()
" ---------------------------------------------------------------------
" GetOneScript: (Get Latest Vim Script) this function operates {{{1
" on the current line, interpreting two numbers and text as
" ScriptID, SourceID, and Filename.
" It downloads any scripts that have newer versions from vim.sf.net.
fun! <SID>GetOneScript(...)
" call Dfunc("GetOneScript()")
" set options to allow progress to be shown on screen
let t_ti= &t_ti
let t_te= &t_te
let rs = &rs
set t_ti= t_te= nors
" put current line on top-of-screen and interpret it into
" a script identifer : used to obtain webpage
" source identifier : used to identify current version
" and an associated comment: used to report on what's being considered
if a:0 >= 3
let scriptid = a:1
let srcid = a:2
let cmmnt = a:3
" call Decho("scriptid<".scriptid.">")
" call Decho("srcid <".srcid.">")
" call Decho("cmmnt <".cmmnt.">")
else
let curline = getline(".")
let parsepat = '^\s*\(\d\+\)\s\+\(\d\+\)\s\+\(.\{-}\)$'
try
let scriptid = substitute(curline,parsepat,'\1','e')
catch /^Vim\%((\a\+)\)\=:E486/
let scriptid= 0
endtry
try
let srcid = substitute(curline,parsepat,'\2','e')
catch /^Vim\%((\a\+)\)\=:E486/
let srcid= 0
endtry
try
let cmmnt = substitute(curline,parsepat,'\3','e')
catch /^Vim\%((\a\+)\)\=:E486/
let cmmnt= ""
endtry
" call Decho("curline <".curline.">")
" call Decho("parsepat<".parsepat.">")
" call Decho("scriptid<".scriptid.">")
" call Decho("srcid <".srcid.">")
" call Decho("cmmnt <".cmmnt.">")
endif
if scriptid == 0 || srcid == 0
" When looking for :AutoInstall: lines, skip scripts that
" have 0 0 scriptname
" call Dret("GetOneScript : skipping a scriptid==srcid==0 line")
return
endif
let doautoinstall= 0
if cmmnt =~ ":AutoInstall:"
" call Decho("cmmnt<".cmmnt."> has :AutoInstall:...")
let aicmmnt= substitute(cmmnt,'\s\+:AutoInstall:\s\+',' ','')
" call Decho("aicmmnt<".aicmmnt."> s:autoinstall=".s:autoinstall)
if s:autoinstall != ""
let doautoinstall = g:GetLatestVimScripts_allowautoinstall
endif
else
let aicmmnt= cmmnt
endif
" call Decho("aicmmnt<".aicmmnt.">: doautoinstall=".doautoinstall)
exe "norm z\<CR>"
redraw!
" call Decho('considering <'.aicmmnt.'> scriptid='.scriptid.' srcid='.srcid)
echomsg 'considering <'.aicmmnt.'> scriptid='.scriptid.' srcid='.srcid
" grab a copy of the plugin's vim.sf.net webpage
let scriptaddr = 'http://vim.sf.net/script.php?script_id='.scriptid
let tmpfile = tempname()
let v:errmsg = ""
" make three tries at downloading the description
let itry= 1
while itry <= 3
" call Decho("try#".itry." to download description of <".aicmmnt."> with addr=".scriptaddr)
if has("win32") || has("win16") || has("win95")
" call Decho("silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".tmpfile.' "'.scriptaddr.'"')
exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".tmpfile.' "'.scriptaddr.'"'
else
" call Decho("silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".tmpfile." '".scriptaddr."'")
exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".tmpfile." '".scriptaddr."'"
endif
if itry == 1
exe "silent vsplit ".tmpfile
else
silent! e %
endif
" find the latest source-id in the plugin's webpage
silent! 1
let findpkg= search('Click on the package to download','W')
if findpkg > 0
break
endif
let itry= itry + 1
endwhile
" call Decho(" --- end downloading tries while loop --- itry=".itry)
" testing: did finding /Click on the package.../ fail?
if findpkg == 0 || itry >= 4
silent q!
call delete(tmpfile)
" restore options
let &t_ti = t_ti
let &t_te = t_te
let &rs = rs
let s:downerrors = s:downerrors + 1
" call Decho("***warning*** couldn'".'t find "Click on the package..." in description page for <'.aicmmnt.">")
echomsg "***warning*** couldn'".'t find "Click on the package..." in description page for <'.aicmmnt.">"
" call Dret("GetOneScript : srch for /Click on the package/ failed")
return
endif
" call Decho('found "Click on the package to download"')
let findsrcid= search('src_id=','W')
if findsrcid == 0
silent q!
call delete(tmpfile)
" restore options
let &t_ti = t_ti
let &t_te = t_te
let &rs = rs
let s:downerrors = s:downerrors + 1
" call Decho("***warning*** couldn'".'t find "src_id=" in description page for <'.aicmmnt.">")
echomsg "***warning*** couldn'".'t find "src_id=" in description page for <'.aicmmnt.">"
" call Dret("GetOneScript : srch for /src_id/ failed")
return
endif
" call Decho('found "src_id=" in description page')
let srcidpat = '^\s*<td class.*src_id=\(\d\+\)">\([^<]\+\)<.*$'
let latestsrcid= substitute(getline("."),srcidpat,'\1','')
let fname = substitute(getline("."),srcidpat,'\2','')
" call Decho("srcidpat<".srcidpat."> latestsrcid<".latestsrcid."> fname<".fname.">")
silent q!
call delete(tmpfile)
" convert the strings-of-numbers into numbers
let srcid = srcid + 0
let latestsrcid = latestsrcid + 0
" call Decho("srcid=".srcid." latestsrcid=".latestsrcid." fname<".fname.">")
" has the plugin's most-recent srcid increased, which indicates
" that it has been updated
if latestsrcid > srcid
let s:downloads= s:downloads + 1
if fname == bufname("%")
" GetLatestVimScript has to be careful about downloading itself
let fname= "NEW_".fname
endif
" the plugin has been updated since we last obtained it, so download a new copy
" call Decho("...downloading new <".fname.">")
echomsg "...downloading new <".fname.">"
if has("win32") || has("gui_win32") || has("gui_win32s") || has("win16") || has("win64") || has("win32unix") || has("win95")
" call Decho("windows: silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".fname.' "'.'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid.'"')
exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".fname.' "'.'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid.'"'
else
" call Decho("unix: silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".fname." '".'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid."'")
exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".fname." '".'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid."'"
endif
" AutoInstall: only if doautoinstall is so indicating
if doautoinstall
" call Decho("attempting to do autoinstall: getcwd<".getcwd()."> filereadable(".fname.")=".filereadable(fname))
if filereadable(fname)
" call Decho("move <".fname."> to ".s:autoinstall)
" call Decho("DISABLED for testing")
exe "silent !"g:GetLatestVimScripts_mv." ".fname." ".s:autoinstall
let curdir= escape(substitute(getcwd(),'\','/','ge'),"|[]*'\" #")
exe "cd ".s:autoinstall
if fname =~ '\.bz2$'
" call Decho("attempt to bunzip2 ".fname)
exe "silent !bunzip2 ".fname
let fname= substitute(fname,'\.bz2$','','')
elseif fname =~ '\.gz$'
" call Decho("attempt to gunzip ".fname)
exe "silent !gunzip ".fname
let fname= substitute(fname,'\.gz$','','')
endif
if fname =~ '\.zip$'
" call Decho("attempt to unzip ".fname)
exe "silent !unzip -o".fname
elseif fname =~ '\.tar$'
" call Decho("attempt to untar ".fname)
exe "silent !tar -oxvf ".fname
endif
if fname =~ '.vim$'
" call Decho("attempt to simply move ".fname." to plugin")
exe "silent !".g:GetLatestVimScripts_mv." ".fname." plugin"
endif
exe "helptags ../".s:dotvim."/doc"
exe "cd ".curdir
endif
endif
" update the data in the <GetLatestVimScripts.dat> file
let modline=scriptid." ".latestsrcid." ".cmmnt
call setline(line("."),modline)
" call Decho("modline<".modline."> (updated GetLatestVimScripts.dat file)")
endif
" restore options
let &t_ti= t_ti
let &t_te= t_te
let &rs = rs
" call Dret("GetOneScript")
endfun
" ---------------------------------------------------------------------
" GetLatestVimScripts: this function gets the latest versions of {{{1
" scripts based on the list in
"
" (first dir in runtimepath)/GetLatest/GetLatestVimScripts.dat
fun! <SID>GetLatestVimScripts()
" call Dfunc("GetLatestVimScripts() autoinstall<".s:autoinstall.">")
" insure that wget is executable
if executable(g:GetLatestVimScripts_wget) != 1
echoerr "GetLatestVimScripts needs ".g:GetLatestVimScripts_wget." which apparently is not available on your system"
" call Dret("GetLatestVimScripts : wget not executable/availble")
return
endif
" Find the .../GetLatest sudirectory under the runtimepath
let rtplist= &rtp
while rtplist != ""
let datadir= substitute(rtplist,',.*$','','e')."/GetLatest"
if isdirectory(datadir)
" call Decho("found directory<".datadir.">")
break
endif
unlet datadir
if rtplist =~ ','
let rtplist= substitute(rtplist,'^.\{-},','','e')
else
let rtplist= ""
endif
endwhile
" Sanity checks: readability and writability
if !exists("datadir")
echoerr "Unable to find a GetLatest subdirectory on your runtimepath"
" call Dret("GetLatestVimScripts : unable to find a GetLatest subdirectory")
return
endif
if filewritable(datadir) != 2
echoerr "Your ".datadir." isn't writable"
" call Dret("GetLatestVimScripts : non-writable directory<".datadir.">")
return
endif
let datafile= datadir."/GetLatestVimScripts.dat"
if !filereadable(datafile)
echoerr "Your data file<".datafile."> isn't readable"
" call Dret("GetLatestVimScripts : non-readable datafile<".datafile.">")
return
endif
if !filewritable(datafile)
echoerr "Your data file<".datafile."> isn't writable"
" call Dret("GetLatestVimScripts : non-writable datafile<".datafile.">")
return
endif
" call Decho("datadir <".datadir.">")
" call Decho("datafile <".datafile.">")
" don't let any events interfere (like winmanager's, taglist's, etc)
let eikeep= &ei
set ei=all
" record current directory, change to datadir, open split window with
" datafile
let origdir= getcwd()
exe "cd ".escape(substitute(datadir,'\','/','ge'),"|[]*'\" #")
split
exe "e ".escape(substitute(datafile,'\','/','ge'),"|[]*'\" #")
res 1000
let s:downloads = 0
let s:downerrors= 0
" Check on dependencies mentioned in plugins
" call Decho(" ")
" call Decho("searching plugins for GetLatestVimScripts dependencies")
let lastline = line("$")
let plugins = globpath(&rtp,"plugin/*.vim")
let foundscript = 0
" call Decho("plugins<".plugins."> lastline#".lastline)
while plugins != ""
let plugin = substitute(plugins,'\n.*$','','e')
let plugins= (plugins =~ '\n')? substitute(plugins,'^.\{-}\n\(.*\)$','\1','e') : ""
$
" call Decho(".dependency checking<".plugin."> line$=".line("$"))
exe "silent r ".plugin
while search('^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+','W') != 0
let newscript= substitute(getline("."),'^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+\s\+\(.*\)$','\1','e')
let llp1 = lastline+1
if newscript !~ '^"'
" found a "GetLatestVimScripts: # #" line in the script; check if its already in the datafile
let curline = line(".")
let noai_script = substitute(newscript,'\s*:AutoInstall:\s*','','e')
exe llp1
let srchline = search('\<'.noai_script.'\>','bW')
" call Decho("..newscript<".newscript."> noai_script<".noai_script."> srch=".srchline." lastline=".lastline)
if srchline == 0
" found a new script to permanently include in the datafile
let keep_rega = @a
let @a = substitute(getline(curline),'^"\s\+GetLatestVimScripts:\s\+','','')
exe lastline."put a"
echomsg "Appending <".@a."> to ".datafile." for ".newscript
" call Decho("..APPEND (".noai_script.")<".@a."> to GetLatestVimScripts.dat")
let @a = keep_rega
let lastline = llp1
let curline = curline + 1
let foundscript = foundscript + 1
" else " Decho
" call Decho("..found <".noai_script."> (already in datafile at line#".srchline.")")
endif
let curline = curline + 1
exe curline
endif
endwhile
let llp1= lastline + 1
" call Decho(".deleting lines: ".llp1.",$d")
exe "silent! ".llp1.",$d"
endwhile
if foundscript == 0
set nomod
endif
" Check on out-of-date scripts using GetLatest/GetLatestVimScripts.dat
set lz
" call Decho(" --- end of dependency checking loop --- ")
" call Decho("call GetOneScript on lines at end of datafile<".datafile.">")
1
/^-----/,$g/^\s*\d/call <SID>GetOneScript()
" Final report (an echomsg)
try
silent! ?^-------?
catch /^Vim\%((\a\+)\)\=:E114/
" call Dret("GetLatestVimScripts : nothing done!")
return
endtry
exe "norm! kz\<CR>"
let s:msg = ""
if s:downloads == 1
let s:msg = "Downloaded one updated script to <".datadir.">"
elseif s:downloads == 2
let s:msg= "Downloaded two updated scripts to <".datadir.">"
elseif s:downloads > 1
let s:msg= "Downloaded ".s:downloads." updated scripts to <".datadir.">"
else
let s:msg= "Everything was already current"
endif
if s:downerrors > 0
let s:msg= s:msg." (".s:downerrors." downloading errors)"
endif
echomsg s:msg
" save the file
if &mod
wq
else
q
endif
" restore events and current directory
exe "cd ".escape(substitute(origdir,'\','/','ge'),"|[]*'\" #")
let &ei= eikeep
set nolz
" call Dret("GetLatestVimScripts : did ".s:downloads." downloads")
endfun
" ---------------------------------------------------------------------
" Restore Options: {{{1
let &fo = s:keepfo
let &cpo= s:keepcpo
" vim: ts=4 fdm=marker nowrap

View File

@ -83,7 +83,7 @@ fun! SaveWinPosn(...)
return "" return ""
endif endif
let so_keep = &l:so let so_keep = &l:so
let siso_keep = &l:siso let siso_keep = &siso
let ss_keep = &l:ss let ss_keep = &l:ss
setlocal so=0 siso=0 ss=0 setlocal so=0 siso=0 ss=0
@ -114,9 +114,9 @@ fun! SaveWinPosn(...)
let b:cecutil_winposn{b:cecutil_iwinposn}= savedposn let b:cecutil_winposn{b:cecutil_iwinposn}= savedposn
endif endif
let &l:so = so_keep let &l:so = so_keep
let &l:siso = siso_keep let &siso = siso_keep
let &l:ss = ss_keep let &l:ss = ss_keep
" if exists("b:cecutil_iwinposn") " Decho " if exists("b:cecutil_iwinposn") " Decho
" call Decho("b:cecutil_winpos{".b:cecutil_iwinposn."}[".b:cecutil_winposn{b:cecutil_iwinposn}."]") " call Decho("b:cecutil_winpos{".b:cecutil_iwinposn."}[".b:cecutil_winposn{b:cecutil_iwinposn}."]")
@ -129,6 +129,8 @@ endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" RestoreWinPosn: {{{2 " RestoreWinPosn: {{{2
" call RestoreWinPosn()
" call RestoreWinPosn(winposn)
fun! RestoreWinPosn(...) fun! RestoreWinPosn(...)
" call Dfunc("RestoreWinPosn() a:0=".a:0) " call Dfunc("RestoreWinPosn() a:0=".a:0)
" call Decho("getline(1)<".getline(1).">") " call Decho("getline(1)<".getline(1).">")

View File

@ -0,0 +1,169 @@
" Vim Global Plugin for Editing .srec Files
" Maintainer: Alexander Fleck
" <alexander.fleck@gmx.net>
" License: This File is placed in the Public Domain.
" Revision | Date [DD.MM.YY] | Changes
" 00.01.00 | 05.07.09 | 01. Revision
if exists("loaded_editsrec")
finish
endif
let loaded_editsrec = 1
let s:save_cpo = &cpo
set cpo&vim
" BC = ByteCount
if !hasmapto('<Plug>EditSrecLineBC')
map <unique> <Leader>lb <Plug>EditSrecLineBC
endif
noremap <unique> <script> <Plug>EditSrecLineBC <SID>AutoLineBC
noremap <SID>AutoLineBC <Esc>:call <SID>AutoLineBC()<CR>
if !hasmapto('<Plug>EditSrecPartBC')
map <unique> <Leader>pb <Plug>EditSrecPartBC
endif
noremap <unique> <script> <Plug>EditSrecPartBC <SID>AutoPartBC
noremap <SID>AutoPartBC <Esc>:call <SID>AutoPartBC()<CR>
" AD = ADdress
if !hasmapto('<Plug>EditSrecLineAD')
map <unique> <Leader>la <Plug>EditSrecLineAD
endif
noremap <unique> <script> <Plug>EditSrecLineAD <SID>AutoLineAD
noremap <SID>AutoLineAD <Esc>:call <SID>AutoLineAD()<CR>
if !hasmapto('<Plug>EditSrecPartAD')
map <unique> <Leader>pa <Plug>EditSrecPartAD
endif
noremap <unique> <script> <Plug>EditSrecPartAD <SID>AutoPartAD
noremap <SID>AutoPartAD <Esc>:call <SID>AutoPartAD()<CR>
" DA = DAta
if !hasmapto('<Plug>EditSrecLineDA')
map <unique> <Leader>ld <Plug>EditSrecLineDA
endif
noremap <unique> <script> <Plug>EditSrecLineDA <SID>AutoLineDA
noremap <SID>AutoLineDA <Esc>:call <SID>AutoLineDA()<CR>
if !hasmapto('<Plug>EditSrecPartDA')
map <unique> <Leader>pd <Plug>EditSrecPartDA
endif
noremap <unique> <script> <Plug>EditSrecPartDA <SID>AutoPartDA
noremap <SID>AutoPartDA <Esc>:call <SID>AutoPartDA()<CR>
" CS = CheckSum
if !hasmapto('<Plug>EditSrecLineCS')
map <unique> <Leader>lc <Plug>EditSrecLineCS
endif
noremap <unique> <script> <Plug>EditSrecLineCS <SID>AutoLineCS
noremap <SID>AutoLineCS <Esc>:call <SID>AutoLineCS()<CR>
if !hasmapto('<Plug>EditSrecPartCS')
map <unique> <Leader>pc <Plug>EditSrecPartCS
endif
noremap <unique> <script> <Plug>EditSrecPartCS <SID>AutoPartCS
noremap <SID>AutoPartCS <Esc>:call <SID>AutoPartCS()<CR>
" obsolete Mappings
"imap <F5> <Esc>:call <SID>AutoLineBC()<CR>a
"imap <F6> <Esc>:call <SID>AutoLineAD()<CR>a
"imap <F7> <Esc>:call <SID>AutoLineDA()<CR>a
"imap <F8> <Esc>:call <SID>AutoLineCS()<CR>a
"imap <C-F5> <Esc>:call <SID>AutoPartBC()<CR>a
"imap <C-F6> <Esc>:call <SID>AutoPartAD()<CR>a
"imap <C-F7> <Esc>:call <SID>AutoPartDA()<CR>a
"imap <C-F8> <Esc>:call <SID>AutoPartCS()<CR>a
" create Line from ByteCount
fun s:AutoLineBC()
let s:ln = getline(".")
let s:ln = s:ln . libsrec#CrBC(s:ln)
let s:ln = s:ln . libsrec#CrAD(s:ln)
let s:ln = s:ln . libsrec#CrDA(s:ln)
let s:ln = s:ln . libsrec#CrCS(s:ln)
call setline(".", s:ln)
unlet s:ln
endfun
" create only ByteCount
fun s:AutoPartBC()
let s:ln = getline(".")
let s:ln = s:ln . libsrec#CrBC(s:ln)
call setline(".", s:ln)
unlet s:ln
endfun
" create Line from ADdress
fun s:AutoLineAD()
let s:ln = getline(".")
let s:ln = s:ln . libsrec#CrAD(s:ln)
let s:ln = s:ln . libsrec#CrDA(s:ln)
let s:ln = s:ln . libsrec#CrCS(s:ln)
call setline(".", s:ln)
unlet s:ln
endfun
" create only ADdress
fun s:AutoPartAD()
let s:ln = getline(".")
let s:ln = s:ln . libsrec#CrAD(s:ln)
call setline(".", s:ln)
unlet s:ln
endfun
" create Line from DAta
fun s:AutoLineDA()
let s:ln = getline(".")
let s:ln = s:ln . libsrec#CrDA(s:ln)
let s:ln = s:ln . libsrec#CrCS(s:ln)
call setline(".", s:ln)
unlet s:ln
endfun
" create only DAta
fun s:AutoPartDA()
let s:ln = getline(".")
let s:ln = s:ln . libsrec#CrDA(s:ln)
call setline(".", s:ln)
unlet s:ln
endfun
" create Line from CheckSum
fun s:AutoLineCS()
let s:ln = getline(".")
let s:ln = s:ln . libsrec#CrCS(s:ln)
call setline(".", s:ln)
unlet s:ln
endfun
" create only CheckSum
fun s:AutoPartCS()
let s:ln = getline(".")
let s:ln = s:ln . libsrec#CrCS(s:ln)
call setline(".", s:ln)
unlet s:ln
endfun
let &cpo = s:save_cpo

View File

@ -0,0 +1,337 @@
" Vim Test Cases for Editing .srec Files
" Maintainer: Alexander Fleck
" <alexander.fleck@gmx.net>
" License: This File is placed in the Public Domain.
" Revision | Date [DD.MM.YY] | Changes
" 00.01.00 | 05.07.09 | 01. Revision
" This File contains Test Cases for the Plugin 'editsrec.vim'
" and its Library 'libsrec.vim'.
TestCases for ByteCount
Line -----------------------------
insert a new Line and type "S0"
type "<Esc><Leader>lb"
the following Line will be created
S00F0000FFFFFFFFFFFFFFFFFFFFFFFFFC
insert a new Line and type "S1"
type "<Esc><Leader>lb"
the following Line will be created
S10F0000FFFFFFFFFFFFFFFFFFFFFFFFFC
insert a new Line and type "S2"
type "<Esc><Leader>lb"
the following Line will be created
S20F000000FFFFFFFFFFFFFFFFFFFFFFFB
insert a new Line and type "S3"
type "<Esc><Leader>lb"
the following Line will be created
S30F00000000FFFFFFFFFFFFFFFFFFFFFA
insert a new Line and type "S4"
type "<Esc><Leader>lb"
Nothing will be created
insert a new Line and type "S5"
type "<Esc><Leader>lb"
the following Line will be created
S5030000FC
insert a new Line and type "S6"
type "<Esc><Leader>lb"
Nothing will be created
insert a new Line and type "S7"
type "<Esc><Leader>lb"
the following Line will be created
S70500000000FA
insert a new Line and type "S8"
type "<Esc><Leader>lb"
the following Line will be created
S804000000FB
insert a new Line and type "S9"
type "<Esc><Leader>lb"
the following Line will be created
S9030000FC
Part -----------------------------
insert a new Line and type "S0"
type "<Esc><Leader>pb"
the following Line will be created
S00F
insert a new Line and type "S1"
type "<Esc><Leader>pb"
the following Line will be created
S10F
insert a new Line and type "S2"
type "<Esc><Leader>pb"
the following Line will be created
S20F
insert a new Line and type "S3"
type "<Esc><Leader>pb"
the following Line will be created
S30F
insert a new Line and type "S4"
type "<Esc><Leader>pb"
Nothing will be created
insert a new Line and type "S5"
type "<Esc><Leader>pb"
the following Line will be created
S503
insert a new Line and type "S6"
type "<Esc><Leader>pb"
Nothing will be created
insert a new Line and type "S7"
type "<Esc><Leader>pb"
the following Line will be created
S705
insert a new Line and type "S8"
type "<Esc><Leader>pb"
the following Line will be created
S804
insert a new Line and type "S9"
type "<Esc><Leader>pb"
the following Line will be created
S903
TestCases for ADdress
Line -----------------------------
insert a new Line and type "S00F"
type "<Esc><Leader>la"
the following Line will be created
S00F0000FFFFFFFFFFFFFFFFFFFFFFFFFC
insert a new Line and type "S10F"
type "<Esc><Leader>la"
the following Line will be created
S10F0000FFFFFFFFFFFFFFFFFFFFFFFFFC
insert a new Line and type "S20F"
type "<Esc><Leader>la"
the following Line will be created
S20F000000FFFFFFFFFFFFFFFFFFFFFFFB
insert a new Line and type "S30F"
type "<Esc><Leader>la"
the following Line will be created
S30F00000000FFFFFFFFFFFFFFFFFFFFFA
insert a new Line and type "S40F"
type "<Esc><Leader>la"
Nothing will be created
insert a new Line and type "S503"
type "<Esc><Leader>la"
the following Line will be created
S5030000FC
insert a new Line and type "S60F"
type "<Esc><Leader>la"
Nothing will be created
insert a new Line and type "S705"
type "<Esc><Leader>la"
the following Line will be created
S70500000000FA
insert a new Line and type "S804"
type "<Esc><Leader>la"
the following Line will be created
S804000000FB
insert a new Line and type "S903"
type "<Esc><Leader>la"
the following Line will be created
S9030000FC
Part -----------------------------
insert a new Line and type "S00F"
type "<Esc><Leader>pa"
the following Line will be created
S00F0000
insert a new Line and type "S10F"
type "<Esc><Leader>pa"
the following Line will be created
S10F0000
insert a new Line and type "S20F"
type "<Esc><Leader>pa"
the following Line will be created
S20F000000
insert a new Line and type "S30F"
type "<Esc><Leader>pa"
the following Line will be created
S30F00000000
insert a new Line and type "S40F"
type "<Esc><Leader>pa"
Nothing will be created
insert a new Line and type "S503"
type "<Esc><Leader>pa"
the following Line will be created
S5030000
insert a new Line and type "S60F"
type "<Esc><Leader>pa"
Nothing will be created
insert a new Line and type "S705"
type "<Esc><Leader>pa"
the following Line will be created
S70500000000
insert a new Line and type "S804"
type "<Esc><Leader>pa"
the following Line will be created
S804000000
insert a new Line and type "S903"
type "<Esc><Leader>pa"
the following Line will be created
S9030000
TestCases for DAta
Line -----------------------------
insert a new Line and type "S00F0000"
type "<Esc><Leader>ld"
the following Line will be created
S00F0000FFFFFFFFFFFFFFFFFFFFFFFFFC
insert a new Line and type "S10F0000"
type "<Esc><Leader>ld"
the following Line will be created
S10F0000FFFFFFFFFFFFFFFFFFFFFFFFFC
insert a new Line and type "S20F000000"
type "<Esc><Leader>ld"
the following Line will be created
S20F000000FFFFFFFFFFFFFFFFFFFFFFFB
insert a new Line and type "S30F00000000"
type "<Esc><Leader>ld"
the following Line will be created
S30F00000000FFFFFFFFFFFFFFFFFFFFFA
insert a new Line and type "S40F0000"
type "<Esc><Leader>ld"
Nothing will be created
insert a new Line and type "S5030000"
type "<Esc><Leader>ld"
the following Line will be created
S5030000FC
insert a new Line and type "S60F0000"
type "<Esc><Leader>ld"
Nothing will be created
insert a new Line and type "S70500000000"
type "<Esc><Leader>ld"
the following Line will be created
S70500000000FA
insert a new Line and type "S804000000"
type "<Esc><Leader>ld"
the following Line will be created
S804000000FB
insert a new Line and type "S9030000"
type "<Esc><Leader>ld"
the following Line will be created
S9030000FC
Part -----------------------------
insert a new Line and type "S00F0000"
type "<Esc><Leader>pd"
the following Line will be created
S00F0000FFFFFFFFFFFFFFFFFFFFFFFF
insert a new Line and type "S10F0000"
type "<Esc><Leader>pd"
the following Line will be created
S00F0000FFFFFFFFFFFFFFFFFFFFFFFF
insert a new Line and type "S20F000000"
type "<Esc><Leader>pd"
the following Line will be created
S00F000000FFFFFFFFFFFFFFFFFFFFFF
insert a new Line and type "S30F00000000"
type "<Esc><Leader>pd"
the following Line will be created
S00F00000000FFFFFFFFFFFFFFFFFFFF
insert a new Line and type "S40F0000"
type "<Esc><Leader>pd"
Nothing will be created
insert a new Line and type "S5030000"
type "<Esc><Leader>pd"
the following Line will be created
S5030000
insert a new Line and type "S60F0000"
type "<Esc><Leader>pd"
Nothing will be created
insert a new Line and type "S70500000000"
type "<Esc><Leader>pd"
the following Line will be created
S70500000000
insert a new Line and type "S804000000"
type "<Esc><Leader>pd"
the following Line will be created
S804000000
insert a new Line and type "S9030000"
type "<Esc><Leader>pd"
the following Line will be created
S9030000
TestCases for CheckSum
Line -----------------------------
insert a new Line and type "S00F0000FFFFFFFFFFFFFFFFFFFFFFFF"
type "<Esc><Leader>lc"
the following Line will be created
S00F0000FFFFFFFFFFFFFFFFFFFFFFFFFC
insert a new Line and type "S10F0000FFFFFFFFFFFFFFFFFFFFFFFF"
type "<Esc><Leader>lc"
the following Line will be created
S10F0000FFFFFFFFFFFFFFFFFFFFFFFFFC
insert a new Line and type "S20F000000FFFFFFFFFFFFFFFFFFFFFF"
type "<Esc><Leader>lc"
the following Line will be created
S20F000000FFFFFFFFFFFFFFFFFFFFFFFB
insert a new Line and type "S30F00000000FFFFFFFFFFFFFFFFFFFF"
type "<Esc><Leader>lc"
the following Line will be created
S30F00000000FFFFFFFFFFFFFFFFFFFFFA
insert a new Line and type "S40F0000"
type "<Esc><Leader>lc"
Nothing will be created
insert a new Line and type "S5030000"
type "<Esc><Leader>lc"
the following Line will be created
S5030000FC
insert a new Line and type "S60F0000"
type "<Esc><Leader>lc"
Nothing will be created
insert a new Line and type
type "<Esc><Leader>lc"
the following Line will be created
S70500000000FA
insert a new Line and type "S804000000"
type "<Esc><Leader>lc"
the following Line will be created
S804000000FB
insert a new Line and type "S9030000"
type "<Esc><Leader>lc"
the following Line will be created
S9030000FC
Part -----------------------------
insert a new Line and type "S00F0000FFFFFFFFFFFFFFFFFFFFFFFF"
type "<Esc><Leader>pc"
the following Line will be created
S00F0000FFFFFFFFFFFFFFFFFFFFFFFFFC
insert a new Line and type "S10F0000FFFFFFFFFFFFFFFFFFFFFFFF"
type "<Esc><Leader>pc"
the following Line will be created
S10F0000FFFFFFFFFFFFFFFFFFFFFFFFFC
insert a new Line and type "S20F000000FFFFFFFFFFFFFFFFFFFFFF"
type "<Esc><Leader>pc"
the following Line will be created
S20F000000FFFFFFFFFFFFFFFFFFFFFFFB
insert a new Line and type "S30F00000000FFFFFFFFFFFFFFFFFFFF"
type "<Esc><Leader>pc"
the following Line will be created
S30F00000000FFFFFFFFFFFFFFFFFFFFFA
insert a new Line and type "S40F0000"
type "<Esc><Leader>pc"
Nothing will be created
insert a new Line and type "S5030000"
type "<Esc><Leader>pc"
the following Line will be created
S5030000FC
insert a new Line and type "S60F0000"
type "<Esc><Leader>pc"
Nothing will be created
insert a new Line and type "S70500000000"
type "<Esc><Leader>pc"
the following Line will be created
S70500000000FA
insert a new Line and type "S804000000"
type "<Esc><Leader>pc"
the following Line will be created
S804000000FB
insert a new Line and type "S9030000"
type "<Esc><Leader>pc"
the following Line will be created
S9030000FC

View File

@ -20,7 +20,7 @@
if &cp || exists("g:loaded_netrwPlugin") if &cp || exists("g:loaded_netrwPlugin")
finish finish
endif endif
let g:loaded_netrwPlugin = "v134" let g:loaded_netrwPlugin = "v136"
if v:version < 702 if v:version < 702
echohl WarningMsg | echo "***netrw*** you need vim version 7.2 for this version of netrw" | echohl None echohl WarningMsg | echo "***netrw*** you need vim version 7.2 for this version of netrw" | echohl None
finish finish
@ -49,8 +49,8 @@ augroup Network
au BufReadCmd file://* exe "silent doau BufReadPre ".fnameescape(netrw#RFC2396(expand("<amatch>")))|exe 'e '.fnameescape(substitute(netrw#RFC2396(expand("<amatch>")),'file://\(.*\)','\1',""))|exe "bwipe ".fnameescape(expand("<amatch>"))|exe "silent doau BufReadPost ".fnameescape(netrw#RFC2396(expand("<amatch>"))) au BufReadCmd file://* exe "silent doau BufReadPre ".fnameescape(netrw#RFC2396(expand("<amatch>")))|exe 'e '.fnameescape(substitute(netrw#RFC2396(expand("<amatch>")),'file://\(.*\)','\1',""))|exe "bwipe ".fnameescape(expand("<amatch>"))|exe "silent doau BufReadPost ".fnameescape(netrw#RFC2396(expand("<amatch>")))
au BufReadCmd file://localhost/* exe "silent doau BufReadPre ".fnameescape(netrw#RFC2396(expand("<amatch>")))|exe 'e '.fnameescape(substitute(netrw#RFC2396(expand("<amatch>")),'file://localhost/\(.*\)','\1',""))|exe "bwipe ".fnameescape(substitute(expand("<amatch>"),'file://\(\k\+@\)\=','',''))|exe "silent doau BufReadPost ".fnameescape(netrw#RFC2396(expand("<amatch>"))) au BufReadCmd file://localhost/* exe "silent doau BufReadPre ".fnameescape(netrw#RFC2396(expand("<amatch>")))|exe 'e '.fnameescape(substitute(netrw#RFC2396(expand("<amatch>")),'file://localhost/\(.*\)','\1',""))|exe "bwipe ".fnameescape(substitute(expand("<amatch>"),'file://\(\k\+@\)\=','',''))|exe "silent doau BufReadPost ".fnameescape(netrw#RFC2396(expand("<amatch>")))
endif endif
au BufReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,davs://*,rsync://*,sftp://* exe "silent doau BufReadPre ".fnameescape(expand("<amatch>"))|exe '2Nread '.fnameescape(expand("<amatch>"))|exe "silent doau BufReadPost ".fnameescape(expand("<amatch>")) au BufReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,davs://*,rsync://*,sftp://* exe "silent doau BufReadPre ".fnameescape(expand("<amatch>"))|call netrw#Nread(2,expand("<amatch>"))|exe "silent doau BufReadPost ".fnameescape(expand("<amatch>"))
au FileReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,davs://*,rsync://*,sftp://* exe "silent doau FileReadPre ".fnameescape(expand("<amatch>"))|exe 'Nread '.fnameescape(expand("<amatch>"))|exe "silent doau FileReadPost ".fnameescape(expand("<amatch>")) au FileReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,davs://*,rsync://*,sftp://* exe "silent doau FileReadPre ".fnameescape(expand("<amatch>"))|call netrw#Nread(1,expand("<amatch>"))|exe "silent doau FileReadPost ".fnameescape(expand("<amatch>"))
au BufWriteCmd ftp://*,rcp://*,scp://*,dav://*,davs://*,rsync://*,sftp://* exe "silent doau BufWritePre ".fnameescape(expand("<amatch>"))|exe 'Nwrite '.fnameescape(expand("<amatch>"))|exe "silent doau BufWritePost ".fnameescape(expand("<amatch>")) au BufWriteCmd ftp://*,rcp://*,scp://*,dav://*,davs://*,rsync://*,sftp://* exe "silent doau BufWritePre ".fnameescape(expand("<amatch>"))|exe 'Nwrite '.fnameescape(expand("<amatch>"))|exe "silent doau BufWritePost ".fnameescape(expand("<amatch>"))
au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,davs://*,rsync://*,sftp://* exe "silent doau FileWritePre ".fnameescape(expand("<amatch>"))|exe "'[,']".'Nwrite '.fnameescape(expand("<amatch>"))|exe "silent doau FileWritePost ".fnameescape(expand("<amatch>")) au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,davs://*,rsync://*,sftp://* exe "silent doau FileWritePre ".fnameescape(expand("<amatch>"))|exe "'[,']".'Nwrite '.fnameescape(expand("<amatch>"))|exe "silent doau FileWritePost ".fnameescape(expand("<amatch>"))
try try

View File

@ -1,374 +0,0 @@
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" svndiff (C) 2007 Ico Doornekamp
"
" This program is free software; you can redistribute it and/or modify it
" under the terms of the GNU General Public License as published by the Free
" Software Foundation; either version 2 of the License, or (at your option)
" any later version.
"
" This program is distributed in the hope that it will be useful, but WITHOUT
" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
" more details.
"
" Introduction
" ------------
"
" NOTE: This plugin is unix-only!
"
" An small vim 7.0 plugin for showing RCS diff information in a file while
" editing. This plugin runs a diff between the current buffer and the original
" file from svn or git, and shows coloured signs indicating where the buffer
" differs from the original file from the repository. The original
" text is not shown, only signs are used to indicate where changes were made.
"
" The plugin can be used for files managed with subversion or GIT. The type of
" RCS will be detected when first issuing a svndiff command on the file.
"
" The following symbols and syntax highlight groups are used for the signs:
"
" > DiffAdd: Newly added lines. (default=blue)
"
" ! DiffChange: Lines which are changed from the original. (default=cyan)
"
" < DiffDel: Applied to the lines directly above and below a deleted block
" (default=magenta)
" Usage
" -----
"
" The plugin defines one function: Svndiff(). This function figures out the
" difference between the current buffer and it's svn/git original, and adds
" the signs at the places where the buffer differs from the original file from
" svn or git. You'll need to call this function after making changes to update
" the highlighting.
"
" The function takes one argument specifying an additional action to perform:
"
" "prev" : jump to the previous different block
" "next" : jump to the next different block
" "clear" : clean up all signs
"
" You might want to map some keys to run the Svndiff function. For
" example, add to your .vimrc:
"
" noremap <F3> :call Svndiff("prev")<CR>
" noremap <F4> :call Svndiff("next")<CR>
" noremap <F5> :call Svndiff("clear")<CR>
"
"
" Configuration
" -------------
"
" The following configuration variables are availabe:
"
" * g:svndiff_autoupdate
"
" If this variable is defined, svndiff will automatically update the signs
" when the user stops typing for a short while, and when leaving insert
" mode. This might slow things down on large files, so use with caution.
" The vim variable 'updatetime' can be used to set the auto-update intervar,
" but not that changing this variable other effects as well. (refer to the
" vim docs for more info)
" To use, add to your .vimrc:
"
" let g:svndiff_autoupdate = 1
"
" * g:svndiff_one_sign_delete
"
" Normally, two 'delete' signs are placed around the location where
" text was deleted. When this variable is defined, only one sign is
" placed, above the location of the deleted text.
" To use, add to your .vimrc:
"
" let g:svndiff_one_sign_delete = 1
"
" Colors
" ------
"
" Personally, I find the following colours more intuitive for diff colours:
" red=deleted, green=added, yellow=changed. If you want to use these colours,
" try adding the following lines to your .vimrc
"
" hi DiffAdd ctermfg=0 ctermbg=2 guibg='green'
" hi DiffDelete ctermfg=0 ctermbg=1 guibg='red'
" hi DiffChange ctermfg=0 ctermbg=3 guibg='yellow'
"
" Changelog
" ---------
"
" 1.0 2007-04-02 Initial version
"
" 1.1 2007-04-02 Added goto prev/next diffblock commands
"
" 1.2 2007-06-14 Updated diff arguments from -u0 (obsolete) to -U0
"
" 2.0 2007-08-16 Changed from syntax highlighting to using signs, thanks
" to Noah Spurrier for the idea. NOTE: the name of the
" function changed from Svndiff_show() to Svndiff(), so
" you might need to update your .vimrc mappings!
"
" 3.0 2008-02-02 Redesign with some ideas from Jan Bezdekovsky. The
" diff is only updated when the buffer actually changes,
" cleanup of signs is now done properly and some info
" about each diff block is printed in the status line.
"
" 3.1 2008-02-04 Fixed bug that broke plugin in non-english locales, thanks
" to Bernhard Walle for the patch
"
" 3.2 2008-02-27 The latest rewrite broke vim 6 compatiblity. The plugin
" is now simply disabled for older vim versions to avoid
" a lot of warnings when loading.
"
" 4.0 2008-11-24 Added GIT support. The RCS type is now detected (svn/git)
"
" 4.1 2008-11-25 Added CVS support.
"
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
if v:version < 700
finish
endif
" Globals for this plugin
let s:sign_base = 200000 " Base for our sign id's, hoping to avoid colisions
let s:is_active = {} " dictionary with buffer names that have svndiff active
let s:rcs_type = {} " RCS type, will be autodetected to 'svn' or 'git'
let s:rcs_cmd = {} " Shell command to execute to get contents of clean file from RCS
let s:diff_signs = {} " dict with list of ids of all signs, per file
let s:diff_blocks = {} " dict with list of ids of first line of each diff block, per file
let s:changedtick = {} " dict with changedticks of each buffer since last invocation
" Commands to execute to get current file contents in various rcs systems
let s:rcs_cmd_svn = "svn cat "
let s:rcs_cmd_git = "git cat-file -p HEAD:"
let s:rcs_cmd_cvs = "cvs -q update -p "
"
" Do the diff and update signs.
"
function s:Svndiff_update(...)
let fname = bufname("%")
if ! exists("s:is_active[fname]")
return 0
end
" Guess RCS type for this file
if ! has_key(s:rcs_type, fname)
let info = system("LANG=C svn info " . fname)
if match(info, "Path") != -1
let s:rcs_type[fname] = "svn"
let s:rcs_cmd[fname] = s:rcs_cmd_svn
end
let info = system("git st " . fname)
if v:shell_error == 0
let s:rcs_type[fname] = "git"
let s:rcs_cmd[fname] = s:rcs_cmd_git
end
let info = system("cvs st " . fname)
if v:shell_error == 0
let s:rcs_type[fname] = "cvs"
let s:rcs_cmd[fname] = s:rcs_cmd_cvs
end
end
" Could not detect RCS type, print message and exit
if ! has_key(s:rcs_type, fname)
echom "Svndiff: Warning, file " . fname . " is not managed by subversion or git"
unlet s:is_active[fname]
return
end
" Check if the changedticks changed since the last invocation of this
" function. If nothing changed, there's no need to update the signs.
if exists("s:changedtick[fname]") && s:changedtick[fname] == b:changedtick
return 1
end
let s:changedtick[fname] = b:changedtick
" The diff has changed since the last time, so we need to update the signs.
" This is where the magic happens: pipe the current buffer contents to a
" shell command calculating the diff in a friendly parsable format.
let contents = join(getbufline("%", 1, "$"), "\n")
let diff = system("diff -U0 <(" . s:rcs_cmd[fname] . fname . ") <(cat;echo)", contents)
" clear the old signs
call s:Svndiff_clear()
" Parse the output of the diff command and put signs at changed, added and
" removed lines
for line in split(diff, '\n')
let part = matchlist(line, '@@ -\([0-9]*\),*\([0-9]*\) +\([0-9]*\),*\([0-9]*\) @@')
if ! empty(part)
let old_from = part[1]
let old_count = part[2] == '' ? 1 : part[2]
let new_from = part[3]
let new_count = part[4] == '' ? 1 : part[4]
" Figure out if text was added, removed or changed.
if old_count == 0
let from = new_from
let to = new_from + new_count - 1
let name = 'svndiff_add'
let info = new_count . " lines added"
elseif new_count == 0
let from = new_from
let to = new_from
let name = 'svndiff_delete'
let info = old_count . " lines deleted"
if ! exists("g:svndiff_one_sign_delete")
let to += 1
endif
else
let from = new_from
let to = new_from + new_count - 1
let name = 'svndiff_change'
let info = new_count . " lines changed"
endif
let id = from + s:sign_base
let s:diff_blocks[fname] += [{ 'id': id, 'info': info }]
" Add signs to mark the changed lines
let line = from
while line <= to
let id = line + s:sign_base
exec 'sign place ' . id . ' line=' . line . ' name=' . name . ' file=' . fname
let s:diff_signs[fname] += [id]
let line = line + 1
endwhile
endif
endfor
endfunction
"
" Remove all signs we placed earlier
"
function s:Svndiff_clear(...)
let fname = bufname("%")
if exists("s:diff_signs[fname]")
for id in s:diff_signs[fname]
exec 'sign unplace ' . id . ' file=' . fname
endfor
end
let s:diff_blocks[fname] = []
let s:diff_signs[fname] = []
endfunction
"
" Jump to previous diff block sign above the current line
"
function s:Svndiff_prev(...)
let fname = bufname("%")
let diff_blocks_reversed = reverse(copy(s:diff_blocks[fname]))
for block in diff_blocks_reversed
let line = block.id - s:sign_base
if line < line(".")
call setpos(".", [ 0, line, 1, 0 ])
echom 'svndiff: ' . block.info
return
endif
endfor
echom 'svndiff: no more diff blocks above cursor'
endfunction
"
" Jump to next diff block sign below the current line
"
function s:Svndiff_next(...)
let fname = bufname("%")
for block in s:diff_blocks[fname]
let line = block.id - s:sign_base
if line > line(".")
call setpos(".", [ 0, line, 1, 0 ])
echom 'svndiff: ' . block.info
return
endif
endfor
echom 'svndiff: no more diff blocks below cursor'
endfunction
"
" Wrapper function: Takes one argument, which is the action to perform:
" {next|prev|clear}
"
function Svndiff(...)
let cmd = exists("a:1") ? a:1 : ''
let fname = bufname("%")
if fname == ""
echom "Buffer has no file name, can not do a svn diff"
return
endif
if cmd == 'clear'
let s:changedtick[fname] = 0
if exists("s:is_active[fname]")
unlet s:is_active[fname]
endif
call s:Svndiff_clear()
end
if cmd == 'prev'
let s:is_active[fname] = 1
let ok = s:Svndiff_update()
if ok
call s:Svndiff_prev()
endif
endif
if cmd == 'next'
let s:is_active[fname] = 1
let ok = s:Svndiff_update()
if ok
call s:Svndiff_next()
endif
endif
endfunction
" Define sign characters and colors
sign define svndiff_add text=> texthl=diffAdd
sign define svndiff_delete text=< texthl=diffDelete
sign define svndiff_change text=! texthl=diffChange
" Define autocmds if autoupdate is enabled
if exists("g:svndiff_autoupdate")
autocmd CursorHold,CursorHoldI * call s:Svndiff_update()
autocmd InsertLeave * call s:Svndiff_update()
endif
" vi: ts=2 sw=2

View File

@ -1,9 +1,9 @@
" tComment.vim -- An easily extensible & universal comment plugin " tComment.vim -- An easily extensible & universal comment plugin
" @Author: Thomas Link (micathom AT gmail com) " @Author: Tom Link (micathom AT gmail com)
" @License: GPL (see http://www.gnu.org/licenses/gpl.txt) " @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
" @Created: 27-Dez-2004. " @Created: 27-Dez-2004.
" @Last Change: 2008-05-15. " @Last Change: 2009-08-07.
" @Revision: 1.9.664 " @Revision: 1.9.671
" "
" GetLatestVimScripts: 1173 1 tComment.vim " GetLatestVimScripts: 1173 1 tComment.vim
@ -129,6 +129,7 @@ call TCommentDefineType('c_inline', g:tcommentInlineC )
call TCommentDefineType('c_block', g:tcommentBlockC ) call TCommentDefineType('c_block', g:tcommentBlockC )
call TCommentDefineType('cfg', '# %s' ) call TCommentDefineType('cfg', '# %s' )
call TCommentDefineType('conf', '# %s' ) call TCommentDefineType('conf', '# %s' )
call TCommentDefineType('crontab', '# %s' )
call TCommentDefineType('desktop', '# %s' ) call TCommentDefineType('desktop', '# %s' )
call TCommentDefineType('docbk', '<!-- %s -->' ) call TCommentDefineType('docbk', '<!-- %s -->' )
call TCommentDefineType('docbk_inline', g:tcommentInlineXML) call TCommentDefineType('docbk_inline', g:tcommentInlineXML)
@ -158,7 +159,9 @@ call TCommentDefineType('java', '/* %s */' )
call TCommentDefineType('java_inline', g:tcommentInlineC ) call TCommentDefineType('java_inline', g:tcommentInlineC )
call TCommentDefineType('java_block', g:tcommentBlockC ) call TCommentDefineType('java_block', g:tcommentBlockC )
call TCommentDefineType('java_doc_block', g:tcommentBlockC2 ) call TCommentDefineType('java_doc_block', g:tcommentBlockC2 )
call TCommentDefineType('jproperties', '# %s' )
call TCommentDefineType('lisp', '; %s' ) call TCommentDefineType('lisp', '; %s' )
call TCommentDefineType('lynx', '# %s' )
call TCommentDefineType('m4', 'dnl %s' ) call TCommentDefineType('m4', 'dnl %s' )
call TCommentDefineType('mail', '> %s' ) call TCommentDefineType('mail', '> %s' )
call TCommentDefineType('msidl', '// %s' ) call TCommentDefineType('msidl', '// %s' )
@ -376,3 +379,7 @@ new: >)
1.9 1.9
- Fix left offset for inline comments (via operator binding) - Fix left offset for inline comments (via operator binding)
1.10
- tcomment#Operator defines w:tcommentPos if invoked repeatedly
- s:GuessFileType: use len(getline()) instead of col()

View File

@ -1,6 +1,6 @@
" vimballPlugin : construct a file containing both paths and files " vimballPlugin : construct a file containing both paths and files
" Author: Charles E. Campbell, Jr. " Author: Charles E. Campbell, Jr.
" Copyright: (c) 2004-2007 by Charles E. Campbell, Jr. " Copyright: (c) 2004-2009 by Charles E. Campbell, Jr.
" The VIM LICENSE applies to Vimball.vim, and Vimball.txt " The VIM LICENSE applies to Vimball.vim, and Vimball.txt
" (see |copyright|) except use "Vimball" instead of "Vim". " (see |copyright|) except use "Vimball" instead of "Vim".
" No warranty, express or implied. " No warranty, express or implied.
@ -16,18 +16,18 @@
if &cp || exists("g:loaded_vimballPlugin") if &cp || exists("g:loaded_vimballPlugin")
finish finish
endif endif
let g:loaded_vimballPlugin = "v26" let g:loaded_vimballPlugin = "v30"
let s:keepcpo = &cpo let s:keepcpo = &cpo
set cpo&vim set cpo&vim
" ------------------------------------------------------------------------------ " ------------------------------------------------------------------------------
" Public Interface: {{{1 " Public Interface: {{{1
com! -ra -complete=file -na=+ -bang MkVimball call vimball#MkVimball(<line1>,<line2>,<bang>0,<f-args>) com! -ra -complete=file -na=+ -bang MkVimball call vimball#MkVimball(<line1>,<line2>,<bang>0,<f-args>)
com! -na=? -complete=dir UseVimball call vimball#Vimball(1,<f-args>) com! -na=? -complete=dir UseVimball call vimball#Vimball(1,<f-args>)
com! -na=0 VimballList call vimball#Vimball(0) com! -na=0 VimballList call vimball#Vimball(0)
com! -na=* -complete=dir RmVimball call vimball#SaveSettings()|call vimball#RmVimball(<f-args>)|call vimball#RestoreSettings() com! -na=* -complete=dir RmVimball call vimball#SaveSettings()|call vimball#RmVimball(<f-args>)|call vimball#RestoreSettings()
au BufEnter *.vba.gz,*.vba.bz2,*.vba.zip call vimball#Decompress(expand("<amatch>")) au SourceCmd *.vba.gz,*.vba.bz2,*.vba.zip call vimball#Decompress(expand("<amatch>"))|call vimball#Vimball(1)
au BufEnter *.vba setlocal ff=unix noma bt=nofile fmr=[[[,]]] fdm=marker|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)") au BufEnter *.vba,*.vba.gz,*.vba.bz2,*.vba.zip setlocal bt=nofile fmr=[[[,]]] fdm=marker|if &ff != 'unix'| setlocal ff=unix|endif|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)")
" ===================================================================== " =====================================================================
" Restoration And Modelines: {{{1 " Restoration And Modelines: {{{1

View File

@ -1,7 +1,7 @@
" Language : Netrw Remote-Directory Listing Syntax " Language : Netrw Remote-Directory Listing Syntax
" Maintainer : Charles E. Campbell, Jr. " Maintainer : Charles E. Campbell, Jr.
" Last change: Aug 12, 2008 " Last change: Jan 14, 2009
" Version : 14 " Version : 16
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" Syntax Clearing: {{{1 " Syntax Clearing: {{{1
@ -16,51 +16,55 @@ endif
syn cluster NetrwGroup contains=netrwHide,netrwSortBy,netrwSortSeq,netrwQuickHelp,netrwVersion,netrwCopyTgt syn cluster NetrwGroup contains=netrwHide,netrwSortBy,netrwSortSeq,netrwQuickHelp,netrwVersion,netrwCopyTgt
syn cluster NetrwTreeGroup contains=netrwDir,netrwSymLink,netrwExe syn cluster NetrwTreeGroup contains=netrwDir,netrwSymLink,netrwExe
syn match netrwSpecial "\%(\S\+ \)*\S\+[*|=]\ze\%(\s\{2,}\|$\)" contains=netrwClassify syn match netrwPlain "\(\S\+ \)*\S\+" contains=@NoSpell
syn match netrwDir "\.\{1,2}/" contains=netrwClassify syn match netrwSpecial "\%(\S\+ \)*\S\+[*|=]\ze\%(\s\{2,}\|$\)" contains=netrwClassify,@NoSpell
syn match netrwDir "\%(\S\+ \)*\S\+/" contains=netrwClassify syn match netrwDir "\.\{1,2}/" contains=netrwClassify,@NoSpell
syn match netrwSizeDate "\<\d\+\s\d\{1,2}/\d\{1,2}/\d\{4}\s" contains=netrwDateSep skipwhite nextgroup=netrwTime syn match netrwDir "\%(\S\+ \)*\S\+/" contains=netrwClassify,@NoSpell
syn match netrwSymLink "\%(\S\+ \)*\S\+@\ze\%(\s\{2,}\|$\)" contains=netrwClassify syn match netrwSizeDate "\<\d\+\s\d\{1,2}/\d\{1,2}/\d\{4}\s" skipwhite contains=netrwDateSep,@NoSpell nextgroup=netrwTime
syn match netrwExe "\%(\S\+ \)*\S\+\*\ze\%(\s\{2,}\|$\)" contains=netrwClassify syn match netrwSymLink "\%(\S\+ \)*\S\+@\ze\%(\s\{2,}\|$\)" contains=netrwClassify,@NoSpell
syn match netrwTreeBar "^\%([-+|] \)*" contains=netrwTreeBarSpace nextgroup=@netrwTreeGroup syn match netrwExe "\%(\S\+ \)*\S\+\*\ze\%(\s\{2,}\|$\)" contains=netrwClassify,@NoSpell
syn match netrwTreeBarSpace " " contained syn match netrwTreeBar "^\%([-+|] \)\+" contains=netrwTreeBarSpace nextgroup=@netrwTreeGroup
syn match netrwTreeBarSpace " " contained
syn match netrwClassify "[*=|@/]\ze\%(\s\{2,}\|$\)" contained syn match netrwClassify "[*=|@/]\ze\%(\s\{2,}\|$\)" contained
syn match netrwDateSep "/" contained syn match netrwDateSep "/" contained
syn match netrwTime "\d\{1,2}:\d\{2}:\d\{2}" contained contains=netrwTimeSep syn match netrwTime "\d\{1,2}:\d\{2}:\d\{2}" contained contains=netrwTimeSep
syn match netrwTimeSep ":" syn match netrwTimeSep ":"
syn match netrwComment '".*\%(\t\|$\)' contains=@NetrwGroup syn match netrwComment '".*\%(\t\|$\)' contains=@NetrwGroup,@NoSpell
syn match netrwHide '^"\s*\(Hid\|Show\)ing:' skipwhite nextgroup=netrwHidePat syn match netrwHide '^"\s*\(Hid\|Show\)ing:' skipwhite contains=@NoSpell nextgroup=netrwHidePat
syn match netrwSlash "/" contained syn match netrwSlash "/" contained
syn match netrwHidePat "[^,]\+" contained skipwhite nextgroup=netrwHideSep syn match netrwHidePat "[^,]\+" contained skipwhite contains=@NoSpell nextgroup=netrwHideSep
syn match netrwHideSep "," contained skipwhite nextgroup=netrwHidePat syn match netrwHideSep "," contained skipwhite nextgroup=netrwHidePat
syn match netrwSortBy "Sorted by" contained transparent skipwhite nextgroup=netrwList syn match netrwSortBy "Sorted by" contained transparent skipwhite nextgroup=netrwList
syn match netrwSortSeq "Sort sequence:" contained transparent skipwhite nextgroup=netrwList syn match netrwSortSeq "Sort sequence:" contained transparent skipwhite nextgroup=netrwList
syn match netrwCopyTgt "Copy/Move Tgt:" contained transparent skipwhite nextgroup=netrwList syn match netrwCopyTgt "Copy/Move Tgt:" contained transparent skipwhite nextgroup=netrwList
syn match netrwList ".*$" contained contains=netrwComma syn match netrwList ".*$" contained contains=netrwComma,@NoSpell
syn match netrwComma "," contained syn match netrwComma "," contained
syn region netrwQuickHelp matchgroup=Comment start="Quick Help:\s\+" end="$" contains=netrwHelpCmd keepend contained syn region netrwQuickHelp matchgroup=Comment start="Quick Help:\s\+" end="$" contains=netrwHelpCmd,@NoSpell keepend contained
syn match netrwHelpCmd "\S\ze:" contained skipwhite nextgroup=netrwCmdSep syn match netrwHelpCmd "\S\ze:" contained skipwhite contains=@NoSpell nextgroup=netrwCmdSep
syn match netrwCmdSep ":" contained nextgroup=netrwCmdNote syn match netrwCmdSep ":" contained nextgroup=netrwCmdNote
syn match netrwCmdNote ".\{-}\ze " contained syn match netrwCmdNote ".\{-}\ze " contained contains=@NoSpell
syn match netrwVersion "(netrw.*)" contained syn match netrwVersion "(netrw.*)" contained contains=@NoSpell
" ----------------------------- " -----------------------------
" Special filetype highlighting {{{1 " Special filetype highlighting {{{1
" ----------------------------- " -----------------------------
if exists("g:netrw_special_syntax") && netrw_special_syntax if exists("g:netrw_special_syntax") && netrw_special_syntax
syn match netrwBak "\(\S\+ \)*\S\+\.bak\>" contains=netrwTreeBar syn match netrwBak "\(\S\+ \)*\S\+\.bak\>" contains=netrwTreeBar,@NoSpell
syn match netrwCompress "\(\S\+ \)*\S\+\.\%(gz\|bz2\|Z\|zip\)\>" contains=netrwTreeBar syn match netrwCompress "\(\S\+ \)*\S\+\.\%(gz\|bz2\|Z\|zip\)\>" contains=netrwTreeBar,@NoSpell
syn match netrwData "\(\S\+ \)*\S\+\.dat\>" contains=netrwTreeBar if has("unix")
syn match netrwHdr "\(\S\+ \)*\S\+\.h\>" contains=netrwTreeBar syn match netrwCoreDump "\<core\%(\.\d\+\)\=\>" contains=netrwTreeBar,@NoSpell
syn match netrwLib "\(\S\+ \)*\S*\.\%(a\|so\|lib\|dll\)\>" contains=netrwTreeBar endif
syn match netrwMakeFile "\<[mM]akefile\>\|\(\S\+ \)*\S\+\.mak\>" contains=netrwTreeBar syn match netrwData "\(\S\+ \)*\S\+\.dat\>" contains=netrwTreeBar,@NoSpell
syn match netrwObj "\(\S\+ \)*\S*\.\%(o\|obj\)\>" contains=netrwTreeBar syn match netrwHdr "\(\S\+ \)*\S\+\.h\>" contains=netrwTreeBar,@NoSpell
syn match netrwTags "\<tags\>" contains=netrwTreeBar syn match netrwLib "\(\S\+ \)*\S*\.\%(a\|so\|lib\|dll\)\>" contains=netrwTreeBar,@NoSpell
syn match netrwTags "\<\(ANmenu\|ANtags\)\>" contains=netrwTreeBar syn match netrwMakeFile "\<[mM]akefile\>\|\(\S\+ \)*\S\+\.mak\>" contains=netrwTreeBar,@NoSpell
syn match netrwTilde "\(\S\+ \)*\S\+\~\>" contains=netrwTreeBar syn match netrwObj "\(\S\+ \)*\S*\.\%(o\|obj\)\>" contains=netrwTreeBar,@NoSpell
syn match netrwTmp "\<tmp\(\S\+ \)*\S\+\>\|\(\S\+ \)*\S*tmp\>" contains=netrwTreeBar syn match netrwTags "\<tags\>" contains=netrwTreeBar,@NoSpell
syn match netrwTags "\<\(ANmenu\|ANtags\)\>" contains=netrwTreeBar,@NoSpell
syn match netrwTilde "\(\S\+ \)*\S\+\~\>" contains=netrwTreeBar,@NoSpell
syn match netrwTmp "\<tmp\(\S\+ \)*\S\+\>\|\(\S\+ \)*\S*tmp\>" contains=netrwTreeBar,@NoSpell
endif endif
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
@ -89,6 +93,7 @@ if !exists("did_drchip_netrwlist_syntax")
" special syntax highlighting (see :he g:netrw_special_syntax) " special syntax highlighting (see :he g:netrw_special_syntax)
hi default link netrwBak NonText hi default link netrwBak NonText
hi default link netrwCompress Folded hi default link netrwCompress Folded
hi default link netrwCoreDump WarningMsg
hi default link netrwData DiffChange hi default link netrwData DiffChange
hi default link netrwLib DiffChange hi default link netrwLib DiffChange
hi default link netrwMakefile DiffChange hi default link netrwMakefile DiffChange