updated for version 7.0150
diff --git a/runtime/autoload/csscomplete.vim b/runtime/autoload/csscomplete.vim
index 8ac3600..9461f39 100644
--- a/runtime/autoload/csscomplete.vim
+++ b/runtime/autoload/csscomplete.vim
@@ -1,7 +1,7 @@
" Vim completion script
" Language: CSS 2.1
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
-" Last Change: 2005 Sep 19
+" Last Change: 2005 Sep 23
function! csscomplete#CompleteCSS(findstart, base)
if a:findstart
@@ -18,6 +18,8 @@
" 3. if } we are outside of css definitions
" 4. for comments ignoring is be the easiest but assume they are the same
" as 1.
+ " 5. if @ complete at-rule
+ " 6. if ! complete important
let line = a:base
let res = []
@@ -26,14 +28,16 @@
" We need the last occurrence of char so reverse line
let revline = join(reverse(split(line, '.\zs')), '')
+
let openbrace = stridx(revline, '{')
let closebrace = stridx(revline, '}')
- let colon = stridx(revline, ':')
- let semicolon = stridx(revline, ';')
- let opencomm = stridx(revline, '*/') " Line was reversed
- let closecomm = stridx(revline, '/*') " Line was reversed
- let style = stridx(revline, '=\s*elyts') " Line was reversed
- let atrule = stridx(revline, '@')
+ let colon = stridx(revline, ':')
+ let semicolon = stridx(revline, ';')
+ let opencomm = stridx(revline, '*/') " Line was reversed
+ let closecomm = stridx(revline, '/*') " Line was reversed
+ let style = stridx(revline, '=\s*elyts') " Line was reversed
+ let atrule = stridx(revline, '@')
+ let exclam = stridx(revline, '!')
if openbrace > -1
let borders[openbrace] = "openbrace"
@@ -59,6 +63,9 @@
if atrule > -1
let borders[atrule] = "atrule"
endif
+ if exclam > -1
+ let borders[exclam] = "exclam"
+ endif
if len(borders) == 0 || borders[min(keys(borders))] =~ '^\(openbrace\|semicolon\|opencomm\|closecomm\|style\)$'
" Complete properties
@@ -318,6 +325,22 @@
return []
+ elseif borders[min(keys(borders))] == 'exclam'
+
+ " Complete values
+ let impbase = matchstr(line, '.\{-}!\s*\ze[a-zA-Z ]*$')
+ let entered_imp = matchstr(line, '.\{-}!\s*\zs[a-zA-Z ]*$')
+
+ let values = ["important"]
+
+ for m in values
+ if m =~? '^'.entered_imp
+ call add(res, impbase . m)
+ endif
+ endfor
+
+ return res
+
elseif borders[min(keys(borders))] == 'atrule'
let afterat = matchstr(line, '.*@\zs.*')
@@ -368,7 +391,7 @@
endif
- let values = ["charset", "page", "media", "import"]
+ let values = ["charset", "page", "media", "import", "font-face"]
let atrulebase = matchstr(line, '.*@\ze[a-zA-Z -]*$')
let entered_atrule = matchstr(line, '.*@\zs[a-zA-Z-]*$')
diff --git a/runtime/autoload/htmlcomplete.vim b/runtime/autoload/htmlcomplete.vim
index ab50952..9dd5830 100644
--- a/runtime/autoload/htmlcomplete.vim
+++ b/runtime/autoload/htmlcomplete.vim
@@ -1,7 +1,7 @@
" Vim completion script
" Language: XHTML 1.0 Strict
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
-" Last Change: 2005 Sep 19
+" Last Change: 2005 Sep 23
function! htmlcomplete#CompleteTags(findstart, base)
if a:findstart
@@ -66,8 +66,13 @@
" it possible?
" Also retrieving class names from current file and linked
" stylesheets.
- if a:base =~ "\\(on[a-z]*\\|style\\|class\\)\\s*=\\s*[\"']"
- if a:base =~ "class\\s*=\\s*[\"'][a-zA-Z0-9_ -]*$"
+ if a:base =~ "\\(on[a-z]*\\|id\\|style\\|class\\)\\s*=\\s*[\"']"
+ if a:base =~ "\\(id\\|class\\)\\s*=\\s*[\"'][a-zA-Z0-9_ -]*$"
+ if a:base =~ "class\\s*=\\s*[\"'][a-zA-Z0-9_ -]*$"
+ let search_for = "class"
+ elseif a:base =~ "id\\s*=\\s*[\"'][a-zA-Z0-9_ -]*$"
+ let search_for = "id"
+ endif
" Handle class name completion
" 1. Find lines of <link stylesheet>
" 1a. Check file for @import
@@ -76,9 +81,22 @@
let head = getline(search('<head\>'), search('<\/head>'))
let headjoined = join(copy(head), ' ')
if headjoined =~ '<style'
- let stylehead = substitute(headjoined, '+>\*[', ' ', 'g')
- let styleheadlines = split(stylehead)
- let headclasslines = filter(copy(styleheadlines), "v:val =~ '\\([a-zA-Z0-9:]\\+\\)\\?\\.[a-zA-Z0-9_-]\\+'")
+ let stylehead = substitute(headjoined, '+>\*[,', ' ', 'g')
+ if search_for == 'class'
+ let styleheadlines = split(stylehead)
+ let headclasslines = filter(copy(styleheadlines), "v:val =~ '\\([a-zA-Z0-9:]\\+\\)\\?\\.[a-zA-Z0-9_-]\\+'")
+ else
+ let stylesheet = split(headjoined, '[{}]')
+ " Get all lines which fit id syntax
+ let classlines = filter(copy(stylesheet), "v:val =~ '#[a-zA-Z0-9_-]\\+'")
+ " Filter out possible color definitions
+ call filter(classlines, "v:val !~ ':\\s*#[a-zA-Z0-9_-]\\+'")
+ " Filter out complex border definitions
+ call filter(classlines, "v:val !~ '\\(none\\|hidden\\|dotted\\|dashed\\|solid\\|double\\|groove\\|ridge\\|inset\\|outset\\)\\s*#[a-zA-Z0-9_-]\\+'")
+ let templines = join(classlines, ' ')
+ let headclasslines = split(templines)
+ call filter(headclasslines, "v:val =~ '#[a-zA-Z0-9_-]\\+'")
+ endif
let internal = 1
else
let internal = 0
@@ -93,13 +111,15 @@
let styletable += [matchstr(line, "href\\s*=\\s*[\"']\\zs\\f\\+\\ze")]
endif
endfor
- for file in filestable
+ for file in styletable
if filereadable(file)
let stylesheet = readfile(file)
let secimport = filter(copy(stylesheet), "v:val =~ '@import'")
if len(secimport) > 0
for line in secimport
- let secimportfiles += [matchstr(line, "import\\s\\+\\(url(\\)\\?[\"']\\?\\zs\\f\\+\\ze")]
+ let secfile = matchstr(line, "import\\s\\+\\(url(\\)\\?[\"']\\?\\zs\\f\\+\\ze")
+ let secfile = fnamemodify(file, ":p:h").'/'.secfile
+ let secimportfiles += [secfile]
endfor
endif
endif
@@ -109,10 +129,24 @@
for file in cssfiles
if filereadable(file)
let stylesheet = readfile(file)
- let stylefile = join(stylesheet)
- let stylefile = substitute(stylefile, '+>\*[', ' ', 'g')
- let stylesheet = split(stylefile)
- let classlines = filter(copy(stylesheet), "v:val =~ '\\([a-zA-Z0-9:]\\+\\)\\?\\.[a-zA-Z0-9_-]\\+'")
+ let stylefile = join(stylesheet, ' ')
+ let stylefile = substitute(stylefile, '+>\*[,', ' ', 'g')
+ if search_for == 'class'
+ let stylesheet = split(stylefile)
+ let classlines = filter(copy(stylesheet), "v:val =~ '\\([a-zA-Z0-9:]\\+\\)\\?\\.[a-zA-Z0-9_-]\\+'")
+ else
+ let stylesheet = split(stylefile, '[{}]')
+ " Get all lines which fit id syntax
+ let classlines = filter(copy(stylesheet), "v:val =~ '#[a-zA-Z0-9_-]\\+'")
+ " Filter out possible color definitions
+ call filter(classlines, "v:val !~ ':\\s*#[a-zA-Z0-9_-]\\+'")
+ " Filter out complex border definitions
+ call filter(classlines, "v:val !~ '\\(none\\|hidden\\|dotted\\|dashed\\|solid\\|double\\|groove\\|ridge\\|inset\\|outset\\)\\s*#[a-zA-Z0-9_-]\\+'")
+ let templines = join(classlines, ' ')
+ let stylelines = split(templines)
+ let classlines = filter(stylelines, "v:val =~ '#[a-zA-Z0-9_-]\\+'")
+
+ endif
endif
" We gathered classes definitions from all external files
let classes += classlines
@@ -120,43 +154,71 @@
if internal == 1
let classes += headclasslines
endif
- let elements = {}
- for element in classes
- if element =~ '^\.'
- let class = matchstr(element, '^\.\zs[a-zA-Z][a-zA-Z0-9_-]*\ze')
- let class = substitute(class, ':.*', '', '')
- if has_key(elements, "common")
- let elements["common"] .= " ".class
- else
- let elements["common"] = class
- endif
- else
- let class = matchstr(element, '[a-zA-Z1-6]*\.\zs[a-zA-Z][a-zA-Z0-9_-]*\ze')
- let tagname = tolower(matchstr(element, '[a-zA-Z1-6]*\ze.'))
- if tagname != ''
- if has_key(elements, tagname)
- let elements[tagname] .= " ".class
+
+ if search_for == 'class'
+ let elements = {}
+ for element in classes
+ if element =~ '^\.'
+ let class = matchstr(element, '^\.\zs[a-zA-Z][a-zA-Z0-9_-]*\ze')
+ let class = substitute(class, ':.*', '', '')
+ if has_key(elements, 'common')
+ let elements['common'] .= ' '.class
else
- let elements[tagname] = class
+ let elements['common'] = class
+ endif
+ else
+ let class = matchstr(element, '[a-zA-Z1-6]*\.\zs[a-zA-Z][a-zA-Z0-9_-]*\ze')
+ let tagname = tolower(matchstr(element, '[a-zA-Z1-6]*\ze.'))
+ if tagname != ''
+ if has_key(elements, tagname)
+ let elements[tagname] .= ' '.class
+ else
+ let elements[tagname] = class
+ endif
endif
endif
- endif
- endfor
+ endfor
- if has_key(elements, tag) && has_key(elements, "common")
- let values = split(elements[tag]." ".elements["common"])
- elseif has_key(elements, tag) && !has_key(elements, "common")
- let values = split(elements[tag])
- elseif !has_key(elements, tag) && has_key(elements, "common")
- let values = split(elements["common"])
- else
- return []
+ if has_key(elements, tag) && has_key(elements, 'common')
+ let values = split(elements[tag]." ".elements['common'])
+ elseif has_key(elements, tag) && !has_key(elements, 'common')
+ let values = split(elements[tag])
+ elseif !has_key(elements, tag) && has_key(elements, 'common')
+ let values = split(elements['common'])
+ else
+ return []
+ endif
+
+ elseif search_for == 'id'
+ " Find used IDs
+ " 1. Catch whole file
+ let filelines = getline(1, line('$'))
+ " 2. Find lines with possible id
+ let used_id_lines = filter(filelines, 'v:val =~ "id\\s*=\\s*[\"''][a-zA-Z0-9_-]\\+"')
+ " 3a. Join all filtered lines
+ let id_string = join(used_id_lines, ' ')
+ " 3b. And split them to be sure each id is in separate item
+ let id_list = split(id_string, 'id\s*=\s*')
+ " 4. Extract id values
+ let used_id = map(id_list, 'matchstr(v:val, "[\"'']\\zs[a-zA-Z0-9_-]\\+\\ze")')
+ let joined_used_id = ','.join(used_id, ',').','
+
+ let allvalues = map(classes, 'matchstr(v:val, ".*#\\zs[a-zA-Z0-9_-]\\+")')
+
+ let values = []
+
+ for element in classes
+ if joined_used_id !~ ','.element.','
+ let values += [element]
+ endif
+
+ endfor
+
endif
" We need special version of sbase
let classbase = matchstr(a:base, ".*[\"']")
- let classquote = matchstr(classbase, '.$')
-
+ let classquote = matchstr(classbase, '.$')
let entered_class = matchstr(attr, ".*=\\s*[\"']\\zs.*")
@@ -229,6 +291,10 @@
let values = ["text", "password", "checkbox", "radio", "submit", "reset", "file", "hidden", "image", "button"]
elseif a:base =~ '^button'
let values = ["button", "submit", "reset"]
+ elseif a:base =~ '^style'
+ let values = ["text/css"]
+ elseif a:base =~ '^script'
+ let values = ["text/javascript"]
endif
else
return []
@@ -313,11 +379,11 @@
elseif tag == 'q'
let attrs = coreattrs + ["cite"]
elseif tag == 'script'
- let attrs = ["id", "charset", "type", "src", "defer", "xml:space"]
+ let attrs = ["id", "charset", "type=\"text/javascript\"", "type", "src", "defer", "xml:space"]
elseif tag == 'select'
let attrs = coreattrs + ["name", "size", "multiple", "disabled", "tabindex", "onfocus", "onblur", "onchange"]
elseif tag == 'style'
- let attrs = coreattrs + ["id", "type", "media", "title", "xml:space"]
+ let attrs = coreattrs + ["id", "type=\"text/css\"", "type", "media", "title", "xml:space"]
elseif tag == 'table'
let attrs = coreattrs + ["summary", "width", "border", "frame", "rules", "cellspacing", "cellpadding"]
elseif tag =~ '^\(thead\|tfoot\|tbody\|tr\)$'
diff --git a/runtime/autoload/netrw.vim b/runtime/autoload/netrw.vim
index c7434af..10dd285 100644
--- a/runtime/autoload/netrw.vim
+++ b/runtime/autoload/netrw.vim
@@ -1,7 +1,6 @@
" netrw.vim: Handles file transfer and remote directory listing across a network
" AUTOLOAD PORTION
-" Date: Sep 12, 2005
-" Version: 70
+" Last Change: Aug 29, 2005
" Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
" GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
" Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
@@ -17,19 +16,13 @@
" But be doers of the Word, and not only hearers, deluding your own selves {{{1
" (James 1:22 RSV)
" =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-
-" Exception for &cp: {{{1
-if &cp
- finish
-endif
+let s:keepcpo= &cpo
+set cpo&vim
+" call Decho("doing autoload/netrw.vim")
if v:version < 700
echohl WarningMsg | echo "***netrw*** you need vim version 7.0 or later for version ".g:loaded_netrw." of netrw" | echohl None
finish
endif
-let g:loaded_netrw = "v70"
-let s:keepcpo = &cpo
-set cpo&vim
-" call Decho("doing autoload/netrw.vim")
" ---------------------------------------------------------------------
" Default values for global netrw variables {{{1
@@ -1133,7 +1126,7 @@
" call Decho("new path<".path.">")
" remote-read the requested file into current buffer
- keepjumps keepalt enew!
+ enew!
set ma
" call Decho("exe file .method."://".user.machine."/".escape(path,s:netrw_cd_escape))
exe "file ".method."://".user.machine."/".escape(path,s:netrw_cd_escape)
@@ -1143,7 +1136,7 @@
keepjumps 1d
" save certain window-oriented variables into buffer-oriented variables
- call s:SetBufWinVars()
+ call s:BufWinVars()
call s:NetOptionRestore()
setlocal nomod
@@ -1169,7 +1162,7 @@
endif
else
" call Decho("generate a new buffer")
- keepjumps keepalt enew!
+ enew!
endif
" rename file to reflect where its from
@@ -1207,7 +1200,7 @@
nnoremap <buffer> <silent> U :<c-u>call <SID>NetBookmarkDir(5,expand("%"))<cr>
nnoremap <buffer> <silent> v :call <SID>NetSplit(1)<cr>
nnoremap <buffer> <silent> x :call <SID>NetBrowseX(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()),1)<cr>
- nnoremap <buffer> <silent> <2-leftmouse> :call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr>
+ nnoremap <buffer> <silent> <2-leftmouse> :call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr>
exe 'nnoremap <buffer> <silent> <del> :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>'
exe 'vnoremap <buffer> <silent> <del> :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>'
exe 'nnoremap <buffer> <silent> d :call <SID>NetMakeDir("'.user.machine.'")<cr>'
@@ -1267,7 +1260,6 @@
if g:netrw_ftp_browse_reject != ""
exe "silent! g/".g:netrw_ftp_browse_reject."/keepjumps d"
endif
- silent! keepjumps %s/\r$//e
" if there's no ../ listed, then put ./ and ../ in
let line1= line(".")
@@ -1282,9 +1274,9 @@
keepjumps norm! 0
" more cleanup
- exe 'silent! keepjumps '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e'
- exe "silent! keepjumps ".w:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#e'
- exe "silent! keepjumps ".w:netrw_bannercnt.',$g/ -> /s# -> .*$#/#e'
+ exe 'keepjumps silent! '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e'
+ exe "keepjumps silent! ".w:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#e'
+ exe "keepjumps silent! ".w:netrw_bannercnt.',$g/ -> /s# -> .*$#/#e'
endif
else
@@ -1341,33 +1333,33 @@
keepjumps norm! 0
endif
- exe 'silent keepjumps '.w:netrw_bannercnt.',$s/ -> .*$//e'
- exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2\t\1/e'
- exe 'silent keepjumps '.w:netrw_bannercnt
+ exe 'keepjumps silent '.w:netrw_bannercnt.',$s/ -> .*$//e'
+ exe 'keepjumps silent '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2\t\1/e'
+ exe w:netrw_bannercnt
endif
if line("$") >= w:netrw_bannercnt
if g:netrw_sort_by =~ "^n"
call s:SetSort()
if g:netrw_sort_direction =~ 'n'
- exe 'silent keepjumps '.w:netrw_bannercnt.',$sort'
+ exe 'keepjumps silent '.w:netrw_bannercnt.',$sort'
else
- exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'
+ exe 'keepjumps silent '.w:netrw_bannercnt.',$sort!'
endif
- exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}\///e'
+ exe 'keepjumps silent '.w:netrw_bannercnt.',$s/^\d\{3}\///e'
endif
if w:netrw_longlist == 1
" shorten the list to keep its width <= winwidth characters
- exe "silent keepjumps ".w:netrw_bannercnt.',$s/\t[-dstrwx]\+/\t/e'
+ exe "keepjumps silent ".w:netrw_bannercnt.',$s/\t[-dstrwx]\+/\t/e'
endif
endif
endif
+ " cleanup any windows mess at end-of-line
+ keepjumps silent! %s/\r$//e
call s:NetrwWideListing()
if line("$") >= w:netrw_bannercnt
- " place cursor on the top-left corner of the file listing
exe "keepjumps ".w:netrw_bannercnt
- norm! 0
endif
call s:NetOptionRestore()
@@ -1457,7 +1449,7 @@
let s:netrw_skipbrowse= 1
echo 'Pressing "a" also works'
elseif line("$") > w:netrw_bannercnt
- exe 'silent keepjumps '.w:netrw_bannercnt
+ exe w:netrw_bannercnt
endif
elseif w:netrw_longlist == 0
@@ -1698,7 +1690,7 @@
" create a local copy
let fname= tempname().".".exten
" call Decho("create a local copy of <".a:fname."> as <".fname.">")
- exe "silent keepjumps bot 1new ".a:fname
+ exe "keepjumps silent bot 1new ".a:fname
set bh=delete
exe "w! ".fname
q
@@ -1823,14 +1815,14 @@
" cleanup for Windows
if has("win32") || has("win95") || has("win64") || has("win16")
- silent! keepjumps! %s/\r$//e
+ keepjumps silent!! %s/\r$//e
endif
if a:cmd == "dir"
" infer directory/link based on the file permission string
- silent! keepjumps g/d\%([-r][-w][-x]\)\{3}/s@$@/@
- silent! keepjumps g/l\%([-r][-w][-x]\)\{3}/s/$/@/
+ keepjumps silent! g/d\%([-r][-w][-x]\)\{3}/s@$@/@
+ keepjumps silent! g/l\%([-r][-w][-x]\)\{3}/s/$/@/
if w:netrw_longlist == 0 || w:netrw_longlist == 2
- exe "silent! keepjumps ".curline.',$s/^\%(\S\+\s\+\)\{8}//e'
+ exe "keepjumps silent! ".curline.',$s/^\%(\S\+\s\+\)\{8}//e'
endif
endif
@@ -1868,9 +1860,9 @@
" Prune the list by hiding any files which match
" call Decho("pruning <".hide."> listhide<".listhide.">")
if g:netrw_hide == 1
- exe 'silent keepjumps '.w:netrw_bannercnt.',$g~'.hide.'~d'
+ exe 'keepjumps silent '.w:netrw_bannercnt.',$g~'.hide.'~d'
elseif g:netrw_hide == 2
- exe 'silent keepjumps '.w:netrw_bannercnt.',$v~'.hide.'~d'
+ exe 'keepjumps silent '.w:netrw_bannercnt.',$v~'.hide.'~d'
endif
endwhile
@@ -2004,7 +1996,7 @@
exe "silent keepjumps norm! 0\<c-v>".newcolqty.'j$hx'.w:netrw_bannercnt.'G$p'
endif
exe "silent keepjumps ".newcolstart.','.newcolend.'d'
- exe 'silent keepjumps '.w:netrw_bannercnt
+ exe w:netrw_bannercnt
endwhile
exe "silent keepjumps ".w:netrw_bannercnt.',$s/\s\+$//e'
set noma nomod
@@ -2138,7 +2130,7 @@
if exists("w:netrw_bannercnt") && line(".") <= w:netrw_bannercnt
" looks like a "b" was pressed while in the banner region
if line("$") > w:netrw_bannercnt
- exe 'silent keepjumps '.w:netrw_bannercnt
+ exe w:netrw_bannercnt
endif
echo ""
" call Dret("NetBookmarkDir - ignoring")
@@ -2237,10 +2229,12 @@
" ---------------------------------------------------------------------
" NetObtain: obtain file under cursor (for remote browsing support) {{{2
fun! s:NetObtain()
+ if !exists("s:netrw_users_stl")
+ let s:netrw_users_stl= &stl
+ endif
let fname= expand("<cWORD>")
-
- " NetrwStatusLine support - for obtaining support
- call s:SetupNetrwStatusLine('%f %h%m%r%=%9*Obtaining '.fname)
+ exe 'set stl=%f\ %h%m%r%=Obtaining\ '.escape(fname,' ')
+ redraw!
" call Dfunc("NetObtain() method=".w:netrw_method)
if exists("w:netrw_method") && w:netrw_method =~ '[235]'
@@ -2318,8 +2312,6 @@
echohl Error | echo "***netrw*** this system doesn't support ftp" | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
- let &stl = s:netrw_users_stl
- let &laststatus = s:netrw_users_ls
" call Dret("NetObtain")
return
endif
@@ -2343,8 +2335,7 @@
endif
" restore status line
- let &stl = s:netrw_users_stl
- let &laststatus = s:netrw_users_ls
+ let &stl= s:netrw_users_stl
redraw!
" call Dret("NetObtain")
@@ -2413,7 +2404,7 @@
" get cleared buffer
if bufnum < 0 || !bufexists(bufnum)
- keepjumps keepalt enew!
+ keepalt enew!
" call Decho("enew buffer")
else
exe "keepalt b ".bufnum
@@ -2505,7 +2496,7 @@
nnoremap <buffer> <silent> U :<c-u>call <SID>NetBookmarkDir(5,expand("%"))<cr>
nnoremap <buffer> <silent> v :call <SID>NetSplit(3)<cr>
nnoremap <buffer> <silent> x :call <SID>NetBrowseX(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord(),0),0)"<cr>
- nnoremap <buffer> <silent> <2-leftmouse> :call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr>
+ nnoremap <buffer> <silent> <2-leftmouse> :exe "call <SID>LocalRefresh(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))"<cr>
nnoremap <buffer> <silent> <s-up> :Pexplore<cr>
nnoremap <buffer> <silent> <s-down> :Nexplore<cr>
exe 'nnoremap <buffer> <silent> <del> :call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>'
@@ -2583,19 +2574,19 @@
call s:SetSort()
if g:netrw_sort_direction =~ 'n'
- exe 'silent keepjumps '.w:netrw_bannercnt.',$sort'
+ exe 'keepjumps silent '.w:netrw_bannercnt.',$sort'
else
- exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'
+ exe 'keepjumps silent '.w:netrw_bannercnt.',$sort!'
endif
- exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}\///e'
+ exe 'keepjumps silent '.w:netrw_bannercnt.',$s/^\d\{3}\///e'
else
if g:netrw_sort_direction =~ 'n'
- exe 'silent keepjumps '.w:netrw_bannercnt.',$sort'
+ exe 'keepjumps silent '.w:netrw_bannercnt.',$sort'
else
- exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'
+ exe 'keepjumps silent '.w:netrw_bannercnt.',$sort!'
endif
- exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{-}\///e'
+ exe 'keepjumps silent '.w:netrw_bannercnt.',$s/^\d\{-}\///e'
endif
endif
@@ -2603,16 +2594,14 @@
call s:NetrwWideListing()
if exists("w:netrw_bannercnt") && line("$") > w:netrw_bannercnt
- " place cursor on the top-left corner of the file listing
- exe 'silent '.w:netrw_bannercnt
- norm! 0
+ exe w:netrw_bannercnt
endif
" record previous current directory
let w:netrw_prvdir= b:netrw_curdir
" save certain window-oriented variables into buffer-oriented variables
- call s:SetBufWinVars()
+ call s:BufWinVars()
call s:NetOptionRestore()
setlocal noma nomod nonu bh=hide nobl
@@ -2712,7 +2701,7 @@
endwhile
" cleanup any windows mess at end-of-line
- silent! keepjumps %s/\r$//e
+ keepjumps silent! %s/\r$//e
setlocal ts=32
" call Dret("LocalBrowseList")
@@ -3043,8 +3032,12 @@
endif
endif
- " NetrwStatusLine support - for exploring support
+ " NetrwStatusLine support
let w:netrw_explore_indx= indx
+ if !exists("s:netrw_users_stl")
+ let s:netrw_users_stl= &stl
+ endif
+ set stl=%f\ %h%m%r%=%{NetrwStatusLine()}
" call Decho("explorelist<".join(w:netrw_explore_list,',')."> len=".w:netrw_explore_listlen)
" sanity check
@@ -3057,21 +3050,15 @@
endif
exe "let dirfile= w:netrw_explore_list[".indx."]"
-" call Decho("dirfile=w:netrw_explore_list[indx=".indx."]= <".dirfile.">")
+" call Decho("dirfile<".dirfile."> indx=".indx)
let newdir= substitute(dirfile,'/[^/]*$','','e')
" call Decho("newdir<".newdir.">")
-
" call Decho("calling LocalBrowse(newdir<".newdir.">)")
call s:LocalBrowse(newdir)
- if w:netrw_longlist == 0 || w:netrw_longlist == 1
- call search('^'.substitute(dirfile,"^.*/","","").'\>',"W")
- else
- call search('\<'.substitute(dirfile,"^.*/","","").'\>',"w")
- endif
+ call search(substitute(dirfile,"^.*/","",""),"W")
let w:netrw_explore_mtchcnt = indx + 1
let w:netrw_explore_bufnr = bufnr(".")
let w:netrw_explore_line = line(".")
- call s:SetupNetrwStatusLine('%f %h%m%r%=%9*%{NetrwStatusLine()}')
" call Decho("explore: mtchcnt=".w:netrw_explore_mtchcnt." bufnr=".w:netrw_explore_bufnr." line#".w:netrw_explore_line)
else
@@ -3091,73 +3078,12 @@
endfun
" ---------------------------------------------------------------------
-" SetupNetrwStatusLine: {{{2
-fun! s:SetupNetrwStatusLine(statline)
-" call Dfunc("SetupNetrwStatusLine(statline<".a:statline.">)")
-
- if !exists("s:netrw_setup_statline")
- let s:netrw_setup_statline= 1
-" call Decho("do first-time status line setup")
-
- if !exists("s:netrw_users_stl")
- let s:netrw_users_stl= &stl
- endif
- if !exists("s:netrw_users_ls")
- let s:netrw_users_ls= &laststatus
- endif
-
- " set up User9 highlighting as needed
- let keepa= @a
- redir @a
- try
- hi User9
- catch /^Vim\%((\a\+)\)\=:E411/
- if &bg == "dark"
- hi User9 ctermfg=yellow ctermbg=blue guifg=yellow guibg=blue
- else
- hi User9 ctermbg=yellow ctermfg=blue guibg=yellow guifg=blue
- endif
- endtry
- redir END
- let @a= keepa
- endif
-
- " set up status line (may use User9 highlighting)
- " insure that windows have a statusline
- " make sure statusline is displayed
- let &stl=a:statline
- set laststatus=2
-" call Decho("stl=".&stl)
- redraw!
-
-" call Dret("SetupNetrwStatusLine : stl=".&stl)
-endfun
-
-" ---------------------------------------------------------------------
" NetrwStatusLine: {{{2
fun! NetrwStatusLine()
-
- " vvv NetrwStatusLine() debugging vvv
-" let g:stlmsg=""
-" if !exists("w:netrw_explore_bufnr")
-" let g:stlmsg="!X<explore_bufnr>"
-" elseif w:netrw_explore_bufnr != bufnr(".")
-" let g:stlmsg="explore_bufnr!=".bufnr(".")
-" endif
-" if !exists("w:netrw_explore_line")
-" let g:stlmsg=" !X<explore_line>"
-" elseif w:netrw_explore_line != line(".")
-" let g:stlmsg=" explore_line!={line(.)<".line(".").">"
-" endif
-" if !exists("w:netrw_explore_list")
-" let g:stlmsg=" !X<explore_list>"
-" endif
- " ^^^ NetrwStatusLine() debugging ^^^
-
+" let g:stlmsg= "Xbufnr=".w:netrw_explore_bufnr." bufnr=".bufnr(".")." Xline#".w:netrw_explore_line." line#".line(".")
if !exists("w:netrw_explore_bufnr") || w:netrw_explore_bufnr != bufnr(".") || !exists("w:netrw_explore_line") || w:netrw_explore_line != line(".") || !exists("w:netrw_explore_list")
" restore user's status line
- let &stl = s:netrw_users_stl
- let &laststatus = s:netrw_users_ls
+ let &stl= s:netrw_users_stl
if exists("w:netrw_explore_bufnr")|unlet w:netrw_explore_bufnr|endif
if exists("w:netrw_explore_line")|unlet w:netrw_explore_line|endif
return ""
@@ -3410,12 +3336,6 @@
" call Decho("a:0=".a:0." case >1: a:2<".a:2.">")
let g:netrw_passwd=a:2
endif
-
- " surround password with double-quotes if it contains embedded blanks
- if g:netrw_passwd !~ '^"' && g:netrw_passwd =~ ' '
- let g:netrw_passwd= '"'.g:netrw_passwd.'"'
- endif
-
" call Dret("NetUserPass")
endfun
@@ -3472,21 +3392,22 @@
endif
unlet w:netoptionsave
- if exists("w:aikeep")| let &ai= w:aikeep|endif
- if (has("netbeans_intg") || has("sun_workshop")) && exists("w:acdkeep")
- let &acd= w:acdkeep
- unlet w:acdkeep
+ let &ai = w:aikeep
+ if has("netbeans_intg") || has("sun_workshop")
+ let &acd = w:acdkeep
endif
- if exists("w:cinkeep") |let &cin = w:cinkeep |unlet w:cinkeep |endif
- if exists("w:cinokeep")|let &cino = w:cinokeep|unlet w:cinokeep|endif
- if exists("w:comkeep") |let &com = w:comkeep |unlet w:comkeep |endif
- if exists("w:cpokeep") |let &cpo = w:cpokeep |unlet w:cpokeep |endif
- if exists("w:dirkeep") |exe "lcd ".w:dirkeep |unlet w:dirkeep |endif
- if exists("w:gdkeep") |let &gd = w:gdkeep |unlet w:gdkeep |endif
- if exists("w:repkeep") |let &report = w:repkeep |unlet w:repkeep |endif
- if exists("w:twkeep") |let &tw = w:twkeep |unlet w:twkeep |endif
+ let &cin = w:cinkeep
+ let &cino = w:cinokeep
+ let &com = w:comkeep
+ let &cpo = w:cpokeep
+ if exists("w:dirkeep")
+ exe "lcd ".w:dirkeep
+ endif
+ let &gd = w:gdkeep
+ let &report = w:repkeep
+ let &tw = w:twkeep
if exists("w:swfkeep")
- if &directory == "" && exists("w:swfkeep")
+ if &directory == ""
" user hasn't specified a swapfile directory;
" netrw will temporarily make the swapfile
" directory the current local one.
@@ -3498,6 +3419,17 @@
endif
unlet w:swfkeep
endif
+ unlet w:aikeep
+ unlet w:cinkeep
+ unlet w:cinokeep
+ unlet w:comkeep
+ unlet w:cpokeep
+ unlet w:gdkeep
+ unlet w:repkeep
+ unlet w:twkeep
+ if exists("w:dirkeep")
+ unlet w:dirkeep
+ endif
" call Dret("NetOptionRestore")
endfun
@@ -3509,7 +3441,7 @@
" example and as a fix for a Windows 95 problem: in my
" experience, win95's ftp always dumped four blank lines
" at the end of the transfer.
-if has("win95") && exists("g:netrw_win95ftp") && g:netrw_win95ftp
+if has("win95") && g:netrw_win95ftp
fun! NetReadFixup(method, line1, line2)
" call Dfunc("NetReadFixup(method<".a:method."> line1=".a:line1." line2=".a:line2.")")
if method == 3 " ftp (no <.netrc>)
@@ -3610,14 +3542,14 @@
return
endif
if seq == '*'
- exe 'silent keepjumps '.w:netrw_bannercnt.',$v/^\d\{3}\//s/^/'.spriority.'/'
+ exe 'keepjumps silent '.w:netrw_bannercnt.',$v/^\d\{3}\//s/^/'.spriority.'/'
else
- exe 'silent keepjumps '.w:netrw_bannercnt.',$g/'.eseq.'/s/^/'.spriority.'/'
+ exe 'keepjumps silent '.w:netrw_bannercnt.',$g/'.eseq.'/s/^/'.spriority.'/'
endif
let priority = priority + 1
endwhile
- exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\d\{3}\/\)\%(\d\{3}\/\)\+/\1/e'
+ exe 'keepjumps silent '.w:netrw_bannercnt.',$s/^\(\d\{3}\/\)\%(\d\{3}\/\)\+/\1/e'
" call Dret("SetSort")
endfun
@@ -3655,14 +3587,14 @@
endfun
" ---------------------------------------------------------------------
-" SetBufWinVars: (used by NetBrowse() and LocalBrowse()) {{{1
+" BufWinVars: (used by NetBrowse() and LocalBrowse()) {{{1
" To allow separate windows to have their own activities, such as
" Explore **/pattern, several variables have been made window-oriented.
" However, when the user splits a browser window (ex: ctrl-w s), these
-" variables are not inherited by the new window. SetBufWinVars() and
+" variables are not inherited by the new window. BufWinVars() and
" UseBufWinVars() get around that.
-fun! s:SetBufWinVars()
-" call Dfunc("SetBufWinVars()")
+fun! s:BufWinVars()
+" call Dfunc("BufWinVars()")
if exists("w:netrw_longlist") |let b:netrw_longlist = w:netrw_longlist |endif
if exists("w:netrw_bannercnt") |let b:netrw_bannercnt = w:netrw_bannercnt |endif
if exists("w:netrw_method") |let b:netrw_method = w:netrw_method |endif
@@ -3673,7 +3605,7 @@
if exists("w:netrw_explore_bufnr") |let b:netrw_explore_bufnr = w:netrw_explore_bufnr |endif
if exists("w:netrw_explore_line") |let b:netrw_explore_line = w:netrw_explore_line |endif
if exists("w:netrw_explore_list") |let b:netrw_explore_list = w:netrw_explore_list |endif
-" call Dret("SetBufWinVars")
+" call Dret("BufWinVars")
endfun
" ---------------------------------------------------------------------
diff --git a/runtime/compiler/eruby.vim b/runtime/compiler/eruby.vim
index 5d85bf1..77292bc 100644
--- a/runtime/compiler/eruby.vim
+++ b/runtime/compiler/eruby.vim
@@ -24,13 +24,22 @@
let s:cpo_save = &cpo
set cpo-=C
-CompilerSet makeprg=eruby
+if exists("eruby_compiler") && eruby_compiler == "eruby"
+ CompilerSet makeprg=eruby
+else
+ CompilerSet makeprg=erb
+endif
-CompilerSet errorformat=eruby:\ %f:%l:%m,
- \%E%f:%l:\ %m,
- \%-Z%p^,
- \%C%m,
- \%-G%.%#
+CompilerSet errorformat=
+ \eruby:\ %f:%l:%m,
+ \%+E%f:%l:\ parse\ error,
+ \%W%f:%l:\ warning:\ %m,
+ \%E%f:%l:in\ %*[^:]:\ %m,
+ \%E%f:%l:\ %m,
+ \%-C%\tfrom\ %f:%l:in\ %.%#,
+ \%-Z%\tfrom\ %f:%l,
+ \%-Z%p^,
+ \%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save
diff --git a/runtime/doc/diff.txt b/runtime/doc/diff.txt
index 7d63831..fdd820f 100644
--- a/runtime/doc/diff.txt
+++ b/runtime/doc/diff.txt
@@ -1,4 +1,4 @@
-*diff.txt* For Vim version 7.0aa. Last change: 2005 Apr 26
+*diff.txt* For Vim version 7.0aa. Last change: 2005 Sep 21
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -218,7 +218,7 @@
==============================================================================
4. Diff copying *copy-diffs* *E99* *E100* *E101* *E102* *E103*
-
+ *merge*
There are two commands to copy text from one buffer to another. The result is
that the buffers will be equal within the specified range.
@@ -235,6 +235,8 @@
Modify another buffer to undo difference with the current
buffer. Just like ":diffget" but the other buffer is modified
instead of the current one.
+ When [bufspec] is omitted and there is more than one other
+ buffer in diff mode where 'modifiable' is set this fails.
See below for [range].
*do*
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index ed6ee89..6c32f16 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt* For Vim version 7.0aa. Last change: 2005 Sep 20
+*eval.txt* For Vim version 7.0aa. Last change: 2005 Sep 25
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -2547,11 +2547,12 @@
getcmdtype() *getcmdtype()*
Return the current command-line type. Possible return values
are:
- / Search forward command
- ? Search backward command
- : Ex-command mode
- @ Input mode
- > Debug mode
+ : normal Ex command
+ > debug mode command |debug-mode|
+ / forward search command
+ ? backward search command
+ @ |input()| command
+ - |:insert| or |:append| command
Only works when editing the command line, thus requires use of
|c_CTRL-\_e| or |c_CTRL-R_=|. Returns an empty string
otherwise.
@@ -2939,8 +2940,8 @@
: echo "Cheers!"
:endif
<
- If the optional {text} is present, this is used for the
- default reply, as if the user typed this. Example: >
+ If the optional {text} is present and not empty, this is used
+ for the default reply, as if the user typed this. Example: >
:let color = input("Color? ", "white")
< The optional {completion} argument specifies the type of
@@ -4049,10 +4050,30 @@
the method can be quite slow.
*spellbadword()*
-spellbadword() Return the badly spelled word under or after the cursor.
- The cursor is moved to the start of the bad word.
- When no bad word is found in the cursor line an empty String
- is returned and the cursor doesn't move.
+spellbadword([{sentence}])
+ Without argument: The result is the badly spelled word under
+ or after the cursor. The cursor is moved to the start of the
+ bad word. When no bad word is found in the cursor line the
+ result is an empty string and the cursor doesn't move.
+
+ With argument: The result is the first word in {sentence} that
+ is badly spelled. If there are no spelling mistakes the
+ result is an empty string.
+
+ The return value is a list with two items:
+ - The badly spelled word or an empty string.
+ - The type of the spelling error:
+ "bad" spelling mistake
+ "rare" rare word
+ "local" word only valid in another region
+ "caps" word should start with Capital
+ Example: >
+ echo spellbadword("the quik brown fox")
+< ['quik', 'bad'] ~
+
+ The spelling information for the current window is used. The
+ 'spell' option must be set and the value of 'spelllang' is
+ used.
*spellsuggest()*
spellsuggest({word} [, {max}])
diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt
index 30fe2d4..f668c00 100644
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -1,4 +1,4 @@
-*insert.txt* For Vim version 7.0aa. Last change: 2005 Sep 18
+*insert.txt* For Vim version 7.0aa. Last change: 2005 Sep 23
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -988,20 +988,35 @@
(X)HTML *ft-html-omni*
-When using after CTRL-X CTRL-O after "<" it is completed with tag name
-available in current context. Inside of tag completion aids to choose
-proper attributes, and when possible choose appropriate attribute value
-including class names for CSS styles.
+CTRL-X CTRL-O provides completion of various elements of (X)HTML files.
+It is designed to support writing of XHTML 1.0 Strict files but will
+also works for other versions of HTML. Features:
-When used after "</" CTRL-X CTRL-O will close the last opened tag.
+- after "<" complete tag name depending on context (no div suggest
+ inside of an a tag)
+- inside of tag complete proper attributes (no width attribute for an
+ a tag)
+- when attribute has limited number of possible values help to complete
+ them
+- complete values of "class" and "id" attributes with data obtained from
+ style tag and included CSS files
+- when completing "style" attribute or working inside of "style" tag
+ switch to |ft-css-omni| completion
+- when used after "</" CTRL-X CTRL-O will close the last opened tag
File htmlcomplete.vim provides through |autoload| mechanism
GetLastOpenTag function which can be used in XML files to get name of
-last open tag with: >
+last open tag with (b:unaryTagsStack has to be defined): >
:echo htmlcomplete#GetLastOpenTag("b:unaryTagsStack")
+CSS *ft-css-omni*
+
+Complete properties and their appropriate values according to CSS 2.1
+specification.
+
+
==============================================================================
8. Insert mode commands *inserting*
diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt
index c33023a..618c767 100644
--- a/runtime/doc/map.txt
+++ b/runtime/doc/map.txt
@@ -1,4 +1,4 @@
-*map.txt* For Vim version 7.0aa. Last change: 2005 Aug 16
+*map.txt* For Vim version 7.0aa. Last change: 2005 Sep 22
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -306,11 +306,12 @@
type "a", then "bar" will get inserted.
{Vi does not allow ambiguous mappings}
- *map_CTRL_C*
-It's not possible to use a CTRL-C in the {lhs}. You just can't map CTRL-C.
-The reason is that CTRL-C must always be available to break a running command.
-Exception: When using the GUI version on MS-Windows CTRL-C can be mapped to
-allow a Copy command to the clipboard. Use CTRL-Break to interrupt Vim.
+ *map_CTRL-C*
+Using CTRL-C in the {lhs} is possible, but it will only work when Vim is
+waiting for a key, not when Vim is busy with something. When Vim is busy
+CTRL-C interrupts/breaks the command.
+When using the GUI version on MS-Windows CTRL-C can be mapped to allow a Copy
+command to the clipboard. Use CTRL-Break to interrupt Vim.
*map_space_in_lhs*
To include a space in {lhs} precede it with a CTRL-V (type two CTRL-Vs for
diff --git a/runtime/doc/message.txt b/runtime/doc/message.txt
index a1c18be..87429e0 100644
--- a/runtime/doc/message.txt
+++ b/runtime/doc/message.txt
@@ -1,4 +1,4 @@
-*message.txt* For Vim version 7.0aa. Last change: 2005 Aug 01
+*message.txt* For Vim version 7.0aa. Last change: 2005 Sep 25
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -23,7 +23,7 @@
*g<*
The "g<" command can be used to see the last page of previous command output.
-This is especially useful if you accidentally typed <Space> at the hit-return
+This is especially useful if you accidentally typed <Space> at the hit-enter
prompt.
Note: when you stopped the output with "q" at the more prompt only up to that
point will be displayed.
@@ -813,4 +813,8 @@
Note: The typed key is directly obtained from the terminal, it is not mapped
and typeahead is ignored.
+The |g<| command can be used to see the last page of previous command output.
+This is especially useful if you accidentally typed <Space> at the hit-enter
+prompt.
+
vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 7cc8170..39a6f40 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt* For Vim version 7.0aa. Last change: 2005 Sep 13
+*options.txt* For Vim version 7.0aa. Last change: 2005 Sep 25
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -3647,9 +3647,11 @@
Pattern to be used to find an include command. It is a search
pattern, just like for the "/" command (See |pattern|). The default
value is for C programs. This option is used for the commands "[i",
- "]I", "[d", etc. The 'isfname' option is used to recognize the file
- name that comes after the matched pattern. See |option-backslash|
- about including spaces and backslashes.
+ "]I", "[d", etc.
+ Normally the 'isfname' option is used to recognize the file name that
+ comes after the matched pattern. But if both "\zs" and "\ze" appear
+ in the pattern then the text spanned by them is used as the file name.
+ See |option-backslash| about including spaces and backslashes.
*'includeexpr'* *'inex'*
'includeexpr' 'inex' string (default "")
@@ -5160,6 +5162,9 @@
Minimal number of lines to scroll when the cursor gets off the
screen (e.g., with "j"). Not used for scroll commands (e.g., CTRL-E,
CTRL-D). Useful if your terminal scrolls very slowly.
+ When set to a negative number from -1 to -100 this is used as the
+ percentage of the window height. Thus -50 scrolls half the window
+ height.
NOTE: This option is set to 1 when 'compatible' is set.
*'scrolloff'* *'so'*
diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt
index 4d446f6..d1ca623 100644
--- a/runtime/doc/pi_netrw.txt
+++ b/runtime/doc/pi_netrw.txt
@@ -1,4 +1,4 @@
-*pi_netrw.txt* For Vim version 7.0. Last change: Sep 12, 2005
+*pi_netrw.txt* For Vim version 7.0. Last change: Aug 25, 2005
VIM REFERENCE MANUAL by Charles E. Campbell, Jr.
@@ -25,7 +25,7 @@
4. Transparent File Transfer............................|netrw-transparent|
5. Ex Commands..........................................|netrw-ex|
6. Variables and Options................................|netrw-var|
-7. Directory Browsing...................................|netrw-browse| {{{1
+7. Directory Browser....................................|netrw-browse| {{{1
Maps...............................................|netrw-maps|
Exploring..........................................|netrw-explore-cmds|
Quick Reference Commands Table.....................|netrw-browse-cmds|
@@ -40,7 +40,7 @@
Making A New Directory.............................|netrw-d|
Deleting Files Or Directories......................|netrw-delete|
Renaming Files Or Directories......................|netrw-move|
- Hiding Files Or Directories........................|netrw-a|
+ Hiding Files Or Directories........................|g:netrw-a|
Edit File Or Directory Hiding List.................|netrw-h|
Browsing With A Horizontally Split Window..........|netrw-o|
Preview Window.....................................|netrw-p|
@@ -194,8 +194,8 @@
2. Network-Oriented File Transfer *netrw-xfer*
Network-oriented file transfer under Vim is implemented by a VimL-based script
-(<netrw.vim>) using plugin techniques. It currently supports both reading and
-writing across networks using rcp, scp, ftp or ftp+<.netrc>, scp, fetch,
+(<netrw.vim>) using plugin techniques. It currently supports both reading
+and writing across networks using rcp, scp, ftp or ftp+<.netrc>, scp, fetch,
dav/cadaver, rsync, or sftp.
http is currently supported read-only via use of wget or fetch.
@@ -206,23 +206,24 @@
ex. vim ftp://hostname/path/to/file
<
-The characters preceding the colon specify the protocol to use; in the
-example, its ftp. The <netrw.vim> script then formulates a command or a
-series of commands (typically ftp) which it issues to an external program
-(ftp, scp, etc) which does the actual file transfer/protocol. Files are read
-from/written to a temporary file (under Unix/Linux, /tmp/...) which the
-<netrw.vim> script will clean up.
+The characters preceding the colon specify the protocol to use;
+in the example, its ftp. The <netrw.vim> script then formulates
+a command or a series of commands (typically ftp) which it issues
+to an external program (ftp, scp, etc) which does the actual file
+transfer/protocol. Files are read from/written to a temporary file
+(under Unix/Linux, /tmp/...) which the <netrw.vim> script will
+clean up.
-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
-"scp -q").
+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 "scp -q").
Ftp, an old protocol, seems to be blessed by numerous implementations.
-Unfortunately, some implementations are noisy (ie., add junk to the end of the
-file). Thus, concerned users may decide to write a NetReadFixup() function
-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
-not noisy and more convenient, actually, for <netrw.vim> to use.
+Unfortunately, some implementations are noisy (ie., add junk to the end
+of the file). Thus, concerned users may decide to write a NetReadFixup()
+function 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 not noisy and more convenient, actually, for <netrw.vim> to use.
Consequently, if "fetch" is executable, it will be used to do reads for
ftp://... (and http://...) . See |netrw-var| for more about this.
@@ -331,9 +332,8 @@
a built-in Vim function. See |netrw-uidpass| for how to change the password
after one has set it.
-Unfortunately there doesn't appear to be a way for netrw to feed a password to
-scp. Thus every transfer via scp will require re-entry of the password.
-However, |netrw-listhack| can help with this problem.
+Unfortunately there doesn't appear to be a way for netrw to feed a password
+to scp. Thus every transfer via scp will require re-entry of the password.
==============================================================================
@@ -341,28 +341,21 @@
Network-oriented file transfers are available by default whenever
|'nocompatible'| mode is enabled. The <netrw.vim> file resides in your
-system's vim-plugin directory and is sourced automatically whenever you bring
-up vim. I suggest that, at a minimum, you have at least the following in your
-<.vimrc> customization file: >
- set nocp
- if version >= 600
- filetype plugin indent on
- endif
-<
+system's vim-plugin directory and is sourced automatically whenever you
+bring up vim.
+
==============================================================================
4. Transparent File Transfer *netrw-transparent*
Transparent file transfers occur whenever a regular file read or write
(invoked via an |:autocmd| for |BufReadCmd| or |BufWriteCmd| events) is made.
-Thus one may use files across networks just as simply as if they were local. >
+Thus one may use files across networks as if they were local. >
vim ftp://[user@]machine/path
...
:wq
-See |netrw-activate| for more on how to encourage your vim to use plugins
-such as netrw.
==============================================================================
5. Ex Commands *netrw-ex*
@@ -376,14 +369,15 @@
:[range]Nw {netfile} [{netfile}]...
Write the specified lines to the {netfile}.
-:Nread Read the specified lines into the current
+:Nread
+ Read the specified lines into the current
buffer from the file specified in
b:netrw_lastfile.
:Nread {netfile} {netfile}...
Read the {netfile} after the current line.
- *netrw-uidpass*
+ *netrw-uidpass*
:call NetUserPass()
If b:netrw_uid and b:netrw_passwd don't exist,
this function query the user for them.
@@ -407,11 +401,10 @@
The script <netrw.vim> uses several variables which can affect <netrw.vim>'s
behavior. These variables typically may be set in the user's <.vimrc> file:
-(also see |netrw-settings|) >
-
- -------------
- Netrw Options
- -------------
+>
+ -------------
+ Netrw Options
+ -------------
Option Meaning
-------------- -----------------------------------------------
<
@@ -434,7 +427,7 @@
g:netrw_silent =0 transfers done normally
=1 transfers done silently
g:netrw_uid Holds current user-id for ftp.
- =1 use alternate ftp (user uid password)
+ =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)
=1 use WinNT/2K/XP's rcp, binary mode
@@ -488,12 +481,12 @@
-------------------------------------------------------------------------
<
*netrw-ftp*
-The first two options both help with certain ftp's that give trouble
-otherwise. In order to best understand how to use these options if ftp is
-giving you troubles, a bit of discussion follows on how netrw does ftp reads.
+The first two options both help with certain ftp's that give trouble otherwise.
+In order to best understand how to use these options if ftp is giving you
+troubles, a bit of discussion follows on how netrw does ftp reads.
-The g:netrw_..._cmd variables specify the external program to use handle the
-associated protocol (rcp, ftp, etc), plus any options.
+The g:netrw_..._cmd variables specify the external program to use handle
+the associated protocol (rcp, ftp, etc), plus any options.
The g:netrw_list_cmd's HOSTNAME entry will be changed via substitution with
whatever the current request is for a hostname.
@@ -526,8 +519,8 @@
The temporary file is then read into the main editing session window that
requested it and the temporary file deleted.
-If your ftp doesn't accept the "user" command and immediately just demands a
-userid, then try putting "let netrw_ftp=1" in your <.vimrc>.
+If your ftp doesn't accept the "user" command and immediately just demands
+a userid, then try putting "let netrw_ftp=1" in your <.vimrc>.
*netrw-cadaver*
To handle the SSL certificate dialog for untrusted servers, one may pull
@@ -554,12 +547,12 @@
endif
endfunction
>
-The NetReadFixup() function will be called if it exists and thus allows you to
-customize your reading process. As a further example, <netrw.vim> contains
-just such a function to handle Windows 95 ftp. For whatever reason, Windows
-95's ftp dumps four blank lines at the end of a transfer, and so it is
-desirable to automate their removal. Here's some code taken from <netrw.vim>
-itself:
+The NetReadFixup() function will be called if it exists and thus allows
+you to customize your reading process. As a further example, <netrw.vim>
+contains just such a function to handle Windows 95 ftp. For whatever
+reason, Windows 95's ftp dumps four blank lines at the end of a transfer,
+and so it is desirable to automate their removal. Here's some code taken
+from <netrw.vim> itself:
>
if has("win95") && g:netrw_win95ftp
fun! NetReadFixup(method, line1, line2)
@@ -572,7 +565,7 @@
>
==============================================================================
-7. Directory Browsing *netrw-browse* *netrw-dir* *netrw-list* *netrw-help*
+7. Directory Browser *netrw-browse* *netrw-dir* *netrw-list* *netrw-help*
MAPS *netrw-maps*
?................Help.......................................|netrw-help|
@@ -739,7 +732,7 @@
INTRODUCTION TO DIRECTORY BROWSING *netrw-browse-intro*
Netrw supports the browsing of directories on the local system and on remote
-hosts, including listing files and directories, entering directories, editing
+hosts, including generating listing directories, entering directories, editing
files therein, deleting files/directories, making new directories, and moving
(renaming) files and directories. The Netrw browser generally implements the
previous explorer maps and commands for remote directories, although details
@@ -750,15 +743,13 @@
in its remote browsing. Any other protocol will be used for file transfers,
but otherwise the ssh protocol will be used to do remote directory browsing.
-To use Netrw's remote directory browser, simply attempt to read a "file" with a
+To enter the netrw directory browser, simply attempt to read a "file" with a
trailing slash and it will be interpreted as a request to list a directory:
vim [protocol]://[user@]hostname/path/
-For local directories, the trailing slash is not required.
-
-If you'd like to avoid entering the password in for remote directory listings
-with ssh or scp, see |netrw-listhack|.
+If you'd like to avoid entering the password in for directory listings, scp,
+ssh interaction, etc, see |netrw-listhack|.
*netrw-explore* *netrw-pexplore*
*netrw-hexplore* *netrw-sexplore*
@@ -792,8 +783,7 @@
may explicitly provide a directory (path) to use.
(Following needs v7.0 or later) *netrw-starstar*
-When Explore, Sexplore, Hexplore, or Vexplore are used with a **,
-such as:
+When Explore, Sexplore, Hexplore, or Vexplore are used like
>
:Explore **/filename_pattern
<
@@ -807,8 +797,7 @@
matching file. One may then proceed to the next (or previous) matching files'
directories by using Nexplore or Pexplore, respectively. If your console or
gui produces recognizable shift-up or shift-down sequences, then you'll likely
-find using shift-downarrow and shift-uparrow convenient. They're mapped by
-netrw:
+find the following mappings convenient:
<s-down> == Nexplore, and
<s-up> == Pexplore.
@@ -833,12 +822,11 @@
GOING UP *netrw--*
-To go up a directory, press - or press the <cr> when atop the ../ directory
+To go up a directory, press - or his the <cr> when atop the ../ directory
entry in the listing.
-Netrw will use the command in |g:netrw_list_cmd| to perform the directory
-listing operation after changing HOSTNAME to the host specified by the
-user-provided url. By default netrw provides the command as:
+Netrw will modify the command in |g:netrw_list_cmd| to perform the directory
+listing operation. By default the command is:
ssh HOSTNAME ls -FLa
@@ -853,13 +841,7 @@
Browsing is simple: move the cursor onto a file or directory of interest.
Hitting the <cr> (the return key) will select the file or directory.
Directories will themselves be listed, and files will be opened using the
-protocol given in the original read request.
-
- CAVEAT: There are three forms of listing (see |netrw-i|). Netrw assumes
- that two or more spaces delimit filenames and directory names for the long
- and wide listing formats. Thus, if your filename or directory name has two
- or more spaces embedded in it, or any trailing spaces, then you'll need to
- use the "thin" format to select it.
+protocol given in the original read request.
OBTAINING A FILE *netrw-O*
@@ -867,21 +849,7 @@
When browsing a remote directory, one may obtain a file under the cursor (ie.
get a copy on your local machine, but not edit it) by pressing the O key.
Only ftp and scp are supported for this operation (but since these two are
-available for browsing, that shouldn't be a problem). The status bar
-will then show, on its right hand side, a message like "Obtaining filename".
-The statusline will be restored after the transfer is complete.
-
-Netrw can also "obtain" a file using the local browser. Netrw's display
-of a directory is not necessarily the same as Vim's "current directory",
-unless |g:netrw_keepdir| is set to 0 in the user's <.vimrc>. One may select
-a file using the local browser (by putting the cursor on it) and pressing
-"O" will then "obtain" the file; ie. copy it to Vim's current directory.
-
-Related topics:
- * To see what the current directory is, use |:pwd|
- * To make the currently browsed directory the current directory, see |netrw-c|
- * To automatically make the currently browsed directory the current
- directory, see |g:netrw_keepdir|.
+available for browsing, that shouldn't be a problem).
THIN, LONG, AND WIDE LISTINGS *netrw-i*
@@ -891,27 +859,21 @@
The short listing format gives just the files' and directories' names.
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
-date of last modification for local directories. With the long listing
-format, netrw is not able to recognize filenames which have trailing spaces.
-Use the thin listing format for such files.
+directories or displays the filename, file size (in bytes), and the
+time and date of last modification for local directories.
-The wide listing format has a multi-column display of the various files in the
-netrw current directory, rather like the Unix "ls" presents. In this mode the
-"b" and "B" maps are not available; instead, use Nb (|netrw-Nb|) and NB
-(|netrw-NB|). The wide listing format uses two or more contiguous spaces to
-delineate filenames; when using that format, netrw won't be able to recognize
-or use filenames which have two or more contiguous spaces embedded in the name
-or any trailing spaces. The thin listing format will, however, work with such
-files.
+The wide listing format has a multi-column display of the various
+files in the netrw current directory, rather like the Unix "ls" presents.
+In this mode the "b" and "B" maps are not available; instead, use
+Nb (|netrw-Nb|) and NB (|netrw-NB|).
MAKING A NEW DIRECTORY *netrw-d*
-With the "d" map one may make a new directory either remotely (which depends
-on the global variable g:netrw_mkdir_cmd) or locally (which depends on the
-global variable g:netrw_local_mkdir). Netrw will issue a request for the new
-directory's name. A bare <CR> at that point will abort the making of the
+With the "d" map one may make a new directory either remotely (which
+depends on the global variable g:netrw_mkdir_cmd) or locally (which depends on
+the global variable g:netrw_local_mkdir). Netrw will issue a request for the
+new directory's name. A bare <CR> at that point will abort the making of the
directory. Attempts to make a local directory that already exists (as either
a file or a directory) will be detected, reported on, and ignored.
@@ -919,12 +881,12 @@
DELETING FILES OR DIRECTORIES *netrw-delete* *netrw-D*
Deleting/removing files and directories involves moving the cursor to the
-file/directory to be deleted and pressing "D". Directories must be empty
-first before they can be successfully removed. If the directory is a softlink
-to a directory, then netrw will make two requests to remove the directory
-before succeeding. Netrw will ask for confirmation before doing the
-removal(s). You may select a range of lines with the "V" command (visual
-selection), and then pressing "D".
+file/directory to be deleted and pressing "D". Directories must be empty first
+before they can be successfully removed. If the directory is a softlink to a
+directory, then netrw will make two requests to remove the directory before
+succeeding. Netrw will ask for confirmation before doing the removal(s).
+You may select a range of lines with the "V" command (visual selection),
+and then pressing "D".
The g:netrw_rm_cmd, g:netrw_rmf_cmd, and g:netrw_rmdir_cmd variables are used
to control the attempts to remove files and directories. The g:netrw_rm_cmd
@@ -959,19 +921,19 @@
the V (|linewise-visual|).
-HIDING FILES OR DIRECTORIES *netrw-a*
+HIDING FILES OR DIRECTORIES *g:netrw-a*
-Netrw's browsing facility allows one to use the hiding list in one of three
-ways: ignore it, hide files which match, and show only those files which
-match. The "a" map allows the user to cycle about these three ways.
+Netrw's browsing facility allows one to use the hiding list in one of
+three ways: ignore it, hide files which match, and show only those files
+which match. The "a" map allows the user to cycle about these three ways.
-The g:netrw_list_hide variable holds a comma delimited list of patterns (ex.
-\.obj) which specify the hiding list. (also see |netrw-h|) To set the hiding
-list, use the <c-h> map. As an example, to hide files which begin with a ".",
-one may use the <c-h> map to set the hiding list to '^\..*' (or one may put
-let g:netrw_list_hide= '^\..*' in one's <.vimrc>). One may then use the "a"
-key to show all files, hide matching files, or to show only the matching
-files.
+The g:netrw_list_hide variable holds a comma delimited list of patterns
+(ex. \.obj) which specify the hiding list. (also see |netrw-h|) To
+set the hiding list, use the <c-h> map. As an example, to hide files
+which begin with a ".", one may use the <c-h> map to set the hiding
+list to '^\..*' (or one may put let g:netrw_list_hide= '^\..*' in
+one's <.vimrc>). One may then use the "a" key to show all files,
+hide matching files, or to show only the matching files.
EDIT FILE OR DIRECTORY HIDING LIST *netrw-h* *netrw-edithide*
@@ -979,8 +941,7 @@
The "<ctrl-h>" map brings up a requestor allowing the user to change the
file/directory hiding list. The hiding list consists of one or more patterns
delimited by commas. Files and/or directories satisfying these patterns will
-either be hidden (ie. not shown) or be the only ones displayed (see
-|netrw-a|).
+either be hidden (ie. not shown) or be the only ones displayed (see |netrw-a|).
BROWSING WITH A HORIZONTALLY SPLIT WINDOW *netrw-o* *netrw-horiz*
@@ -989,9 +950,9 @@
allows one to open a new window to hold the new directory listing or file. A
horizontal split is used. (for vertical splitting, see |netrw-v|)
-Normally, the o key splits the window horizontally with the new window and
-cursor at the top. To change to splitting the window horizontally with the
-new window and cursor at the bottom, have
+Normally, the o key splits the window horizontally with the new window
+and cursor at the top. To change to splitting the window horizontally
+with the new window and cursor at the bottom, have
let g:netrw_alto = 1
@@ -1000,30 +961,30 @@
PREVIEW WINDOW *netrw-p* *netrw-preview*
-One may use a preview window (currently only for local browsing) by using the
-"p" key when the cursor is atop the desired filename to be previewed.
+One may use a preview window (currently only for local browsing) by using
+the "p" key when the cursor is atop the desired filename to be previewed.
SELECTING SORTING STYLE *netrw-s* *netrw-sort*
-One may select the sorting style by name, time, or (file) size. The "s" map
-allows one to circulate amongst the three choices; the directory listing will
-automatically be refreshed to reflect the selected style.
+One may select the sorting style by name, time, or (file) size. The
+"s" map allows one to circulate amongst the three choices; the directory
+listing will automatically be refreshed to reflect the selected style.
EDITING THE SORTING SEQUENCE *netrw-S* *netrw-sortsequence*
-When "Sorted by" is name, one may specify priority via the sorting sequence
-(g:netrw_sort_sequence). The sorting sequence typically prioritizes the
-name-listing by suffix, although any pattern will do. Patterns are delimited
-by commas. The default sorting sequence is:
+When "Sorted by" is name, one may specify priority via the sorting
+sequence (g:netrw_sort_sequence). The sorting sequence typically
+prioritizes the name-listing by suffix, although any pattern will do.
+Patterns are delimited by commas. The default sorting sequence is:
>
[\/]$,*,\.bak$,\.o$,\.h$,\.info$,\.swp$,\.obj$
<
-The lone * is where all filenames not covered by one of the other patterns
-will end up. One may change the sorting sequence by modifying the
-g:netrw_sort_sequence variable (either manually or in your <.vimrc>) or by
-using the "S" map.
+The lone * is where all filenames not covered by one of the other
+patterns will end up. One may change the sorting sequence by modifying
+the g:netrw_sort_sequence variable (either manually or in your <.vimrc>)
+or by using the "S" map.
REVERSING SORTING ORDER *netrw-r* *netrw-reverse*
@@ -1050,20 +1011,20 @@
BROWSING WITH A VERTICALLY SPLIT WINDOW *netrw-v*
-Normally one enters a file or directory using the <cr>. However, the "v" map
-allows one to open a new window to hold the new directory listing or file. A
-vertical split is used. (for horizontal splitting, see |netrw-o|)
+Normally one enters a file or directory using the <cr>. However, the "v"
+map allows one to open a new window to hold the new directory listing or
+file. A vertical split is used. (for horizontal splitting, see |netrw-o|)
-Normally, the v key splits the window vertically with the new window and
-cursor at the left. To change to splitting the window vertically with the new
-window and cursor at the right, have
+Normally, the v key splits the window vertically with the new window
+and cursor at the left. To change to splitting the window vertically
+with the new window and cursor at the right, have
let g:netrw_altv = 1
in your <.vimrc>.
-CUSTOMIZING BROWSING WITH A USER FUNCTION *netrw-x* *netrw-handler*
+CUSTOMIZING BROWSING WITH A USER FUNCTION *netrw-x* *netrw-handler*
One may "enter" a file with a special handler, thereby firing up a browser or
other application, for example, on a file by hitting the "x" key. The special
@@ -1075,9 +1036,9 @@
* otherwise the NetrwFileHandler plugin is used.
The file's suffix is used by these various approaches to determine an
-appropriate application to use to "handle" these files. Such things as
-OpenOffice (*.sfx), visualization (*.jpg, *.gif, etc), and PostScript (*.ps,
-*.eps) can be handled.
+appropriate application to use to "handle" these files. Such things
+as OpenOffice (*.sfx), visualization (*.jpg, *.gif, etc), and PostScript
+(*.ps, *.eps) can be handled.
The NetrwFileHandler applies a user-defined function to a file, based on its
extension. Of course, the handler function must exist for it to be called!
@@ -1102,8 +1063,8 @@
currently browsed directory be the current directory.
With the default setting for g:netrw_keepdir, in order to make the two
-directories the same, use the "c" map (just type c). That map will set the
-current directory to the current browsing directory.
+directories the same, use the "c" map (just type c). That map will set
+the current directory to the current browsing directory.
BOOKMARKING A DIRECTORY *netrw-b* *netrw-bookmark* *netrw-bookmarks*
@@ -1126,8 +1087,8 @@
{cnt}B
-Any count may be used to reference any of the bookmarks. See |netrw-b| on
-how to bookmark a directory and |netrw-q| on how to list bookmarks.
+Any count may be used to reference any of the bookmarks. See |netrw-b|
+for how to bookmark a directory and |netrw-q| for how to list them.
When wide listing is in use (see |netrw-i|), then the B map is not available;
instead, use {cnt}NB.
@@ -1157,9 +1118,9 @@
With the NetrwSettings.vim plugin, >
:NetrwSettings
will bring up a window with the many variables that netrw uses for its
-settings. You may change any of their values; when you save the file, the
-settings therein will be used. One may also press "?" on any of the lines for
-help on what each of the variables do.
+settings. You may change any of their values; when you save the file,
+the settings therein will be used. One may also press "?" on any of
+the lines for help on what each of the variables do.
==============================================================================
@@ -1240,10 +1201,10 @@
1. Get the <Decho.vim> script, available as:
- http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_scripts
- as "Decho, a vimL debugging aid"
+ http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_scripts
+ as "Decho, a vimL debugging aid"
or
- http://vim.sourceforge.net/scripts/script.php?script_id=120
+ http://vim.sourceforge.net/scripts/script.php?script_id=120
and put it into your local plugin directory.
@@ -1279,14 +1240,6 @@
==============================================================================
10. History *netrw-history*
- v70: * when using |netrw-O|, the "Obtaining filename" message is now
- shown using |hl-User9|. If User9 has not been defined, netrw
- will define it.
- v69: * Bugfix: win95/98 machines were experiencing a
- "E121: Undefined variable: g:netrw_win95ftp" message
- v68: * double-click-leftmouse selects word under mouse
- v67: * Passwords which contain blanks will now be surrounded by
- double-quotes automatically (Yongwei)
v66: * Netrw now seems to work with a few more Windows situations
* O now obtains a file: remote browsing file -> local copy,
locally browsing file -> current directory (see :pwd)
@@ -1443,7 +1396,7 @@
Vim editor by Bram Moolenaar (Thanks, Bram!)
dav support by C Campbell
fetch support by Bram Moolenaar and C Campbell
- ftp support by C Campbell <NdrOchip@ScampbellPfamily.AbizM>
+ ftp support by C Campbell <NdrOchip@ScampbellPfamily.AbizM> - NOSPAM
http support by Bram Moolenaar <bram@moolenaar.net>
rcp
rsync support by C Campbell (suggested by Erik Warendorph)
@@ -1453,13 +1406,11 @@
inputsecret(), BufReadCmd, BufWriteCmd contributed by C Campbell
Jérôme Augé -- also using new buffer method with ftp+.netrc
- Bram Moolenaar -- obviously vim itself, :e and v:cmdarg use,
- fetch,...
+ Bram Moolenaar -- obviously vim itself, :e and v:cmdarg use, fetch,...
Yasuhiro Matsumoto -- pointing out undo+0r problem and a solution
Erik Warendorph -- for several suggestions (g:netrw_..._cmd
variables, rsync etc)
- Doug Claar -- modifications to test for success with ftp
- operation
+ Doug Claar -- modifications to test for success with ftp operation
==============================================================================
vim:tw=78:ts=8:ft=help:norl:fdm=marker
diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt
index d2fa976..023476a 100644
--- a/runtime/doc/spell.txt
+++ b/runtime/doc/spell.txt
@@ -1,4 +1,4 @@
-*spell.txt* For Vim version 7.0aa. Last change: 2005 Sep 12
+*spell.txt* For Vim version 7.0aa. Last change: 2005 Sep 25
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1124,6 +1124,10 @@
anyway. You can include whole words if you want to, but you might want to use
the "file:" item in 'spellsuggest' instead.
+You can include a space by using an underscore:
+
+ REP the_the the ~
+
SIMILAR CHARACTERS *spell-MAP*
diff --git a/runtime/doc/tags b/runtime/doc/tags
index cc4d2a8..36d9b22 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -4973,6 +4973,7 @@
ft-cobol-syntax syntax.txt /*ft-cobol-syntax*
ft-coldfusion-syntax syntax.txt /*ft-coldfusion-syntax*
ft-csh-syntax syntax.txt /*ft-csh-syntax*
+ft-css-omni insert.txt /*ft-css-omni*
ft-cweb-syntax syntax.txt /*ft-cweb-syntax*
ft-cynlib-syntax syntax.txt /*ft-cynlib-syntax*
ft-desktop-syntax syntax.txt /*ft-desktop-syntax*
@@ -5082,6 +5083,7 @@
g, motion.txt /*g,*
g0 motion.txt /*g0*
g8 various.txt /*g8*
+g:netrw-a pi_netrw.txt /*g:netrw-a*
g:netrw_alto pi_netrw.txt /*g:netrw_alto*
g:netrw_altv pi_netrw.txt /*g:netrw_altv*
g:netrw_cygwin pi_netrw.txt /*g:netrw_cygwin*
@@ -5705,7 +5707,7 @@
map-typing map.txt /*map-typing*
map-which-keys map.txt /*map-which-keys*
map.txt map.txt /*map.txt*
-map_CTRL_C map.txt /*map_CTRL_C*
+map_CTRL-C map.txt /*map_CTRL-C*
map_backslash map.txt /*map_backslash*
map_bar map.txt /*map_bar*
map_empty_rhs map.txt /*map_empty_rhs*
@@ -5747,6 +5749,7 @@
menu-separator gui.txt /*menu-separator*
menu.vim gui.txt /*menu.vim*
menus gui.txt /*menus*
+merge diff.txt /*merge*
message-history message.txt /*message-history*
message.txt message.txt /*message.txt*
messages message.txt /*messages*
@@ -5853,7 +5856,6 @@
netrw-R pi_netrw.txt /*netrw-R*
netrw-S pi_netrw.txt /*netrw-S*
netrw-U pi_netrw.txt /*netrw-U*
-netrw-a pi_netrw.txt /*netrw-a*
netrw-activate pi_netrw.txt /*netrw-activate*
netrw-b pi_netrw.txt /*netrw-b*
netrw-bookmark pi_netrw.txt /*netrw-bookmark*
@@ -7322,13 +7324,6 @@
zg spell.txt /*zg*
zh scroll.txt /*zh*
zi fold.txt /*zi*
-zip zip.txt /*zip*
-zip-contents zip.txt /*zip-contents*
-zip-copyright zip.txt /*zip-copyright*
-zip-history zip.txt /*zip-history*
-zip-manual zip.txt /*zip-manual*
-zip-usage zip.txt /*zip-usage*
-zip.txt zip.txt /*zip.txt*
zj fold.txt /*zj*
zk fold.txt /*zk*
zl scroll.txt /*zl*
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index a09f895..af6465f 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2005 Sep 19
+" Last Change: 2005 Sep 25
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
@@ -16,7 +16,7 @@
augroup filetypedetect
" Ignored extensions
-au BufNewFile,BufRead *.orig,*.bak,*.old,*.new,*.rpmsave,*.rpmnew
+au BufNewFile,BufRead ?\+.orig,?\+.bak,?\+.old,?\+.new,?\+.rpmsave,?\+.rpmnew
\ exe "doau filetypedetect BufRead " . expand("<afile>:r")
au BufNewFile,BufRead *~
\ let s:name = expand("<afile>") |
@@ -26,7 +26,7 @@
\ endif |
\ unlet s:name |
\ unlet s:short
-au BufNewFile,BufRead *.in
+au BufNewFile,BufRead ?\+.in
\ if expand("<afile>:t") != "configure.in" |
\ exe "doau filetypedetect BufRead " . expand("<afile>:r") |
\ endif
diff --git a/runtime/indent/eruby.vim b/runtime/indent/eruby.vim
new file mode 100644
index 0000000..664f9c2
--- /dev/null
+++ b/runtime/indent/eruby.vim
@@ -0,0 +1,20 @@
+" Vim indent file
+" Language: Ruby
+" Maintainer: Doug Kearns <djkea2 at gus.gscit.monash.edu.au>
+" Info: $Id$
+" URL: http://vim-ruby.rubyforge.org/
+" Anon CVS: See above site
+" Licence: GPL (http://www.gnu.org)
+" Disclaimer:
+" 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.
+" ----------------------------------------------------------------------------
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+ finish
+endif
+
+runtime! indent/html.vim
diff --git a/runtime/indent/php.vim b/runtime/indent/php.vim
index 3e7a990..22210ce 100644
--- a/runtime/indent/php.vim
+++ b/runtime/indent/php.vim
@@ -2,30 +2,27 @@
" Language: PHP
" Author: John Wellesz <John.wellesz (AT) teaser (DOT) fr>
" URL: http://www.2072productions.com/vim/indent/php.vim
-" Last Change: 2005 Aug 15
-" Version: 1.17
+" Last Change: 2005 September 22th
+" Version: 1.181
"
-" For a complete change log and lots of comments in the code, download the script on
+" The change log and all the comments have been removed from this file.
+"
+" For a complete change log and fully commented code, download the script on
" 2072productions.com at the URI provided above.
-"
"
-"
+"
" If you find a bug, please e-mail me at John.wellesz (AT) teaser (DOT) fr
-" with an example of code that break the algorithm.
-"
-"
-" Thanks a lot for using this script.
+" with an example of code that breaks the algorithm.
"
"
" NOTE: This script must be used with PHP syntax ON and with the php syntax
-" script by Lutz Eymers (http://www.isp.de/data/php.vim ) that's the script bundled with Gvim.
+" script by Lutz Eymers (http://www.isp.de/data/php.vim ) that's the script bundled with Gvim.
"
"
" In the case you have syntax errors in your script such as end of HereDoc
" tags not at col 1 you'll have to indent your file 2 times (This script
" will automatically put HereDoc end tags at col 1).
"
-"
" NOTE: If you are editing file in Unix file format and that (by accident)
" there are '\r' before new lines, this script won't be able to proceed
" correctly and will make many mistakes because it won't be able to match
@@ -38,56 +35,51 @@
" silently remove them when VIM load this script (at each bufread).
" Options: PHP_default_indenting = # of sw (default is 0), # of sw will be
-" added to the indent of each line of PHP code.
+" added to the indent of each line of PHP code.
"
" Options: PHP_removeCRwhenUnix = 1 to make the script automatically remove CR
-" at end of lines (by default this option is unset), NOTE that you
-" MUST remove CR when the fileformat is UNIX else the indentation
-" won't be correct...
+" at end of lines (by default this option is unset), NOTE that you
+" MUST remove CR when the fileformat is UNIX else the indentation
+" won't be correct...
"
" Options: PHP_BracesAtCodeLevel = 1 to indent the '{' and '}' at the same
-" level than the code they contain.
-" Exemple:
-" Instead of:
-" if ($foo)
+" level than the code they contain.
+" Exemple:
+" Instead of:
+" if ($foo)
+" {
+" foo();
+" }
+"
+" You will write:
+" if ($foo)
" {
-" foo();
+" foo();
" }
"
-" You will write:
-" if ($foo)
-" {
-" foo();
-" }
-"
-" NOTE: The script will be a bit slower if you use this option because
-" some optimizations won't be available.
+" NOTE: The script will be a bit slower if you use this option because
+" some optimizations won't be available.
if exists("b:did_indent")
- finish
+ finish
endif
let b:did_indent = 1
-" This script set the option php_sync_method of PHP syntax script to 0
-" (fromstart indenting method) in order to have an accurate syntax.
-" If you are using very big PHP files (which is a bad idea) you will
-" experience slowings down while editing, if your code contains only PHP
-" code you can comment the line below.
let php_sync_method = 0
if exists("PHP_default_indenting")
- let b:PHP_default_indenting = PHP_default_indenting * &sw
+ let b:PHP_default_indenting = PHP_default_indenting * &sw
else
- let b:PHP_default_indenting = 0
+ let b:PHP_default_indenting = 0
endif
if exists("PHP_BracesAtCodeLevel")
- let b:PHP_BracesAtCodeLevel = PHP_BracesAtCodeLevel
+ let b:PHP_BracesAtCodeLevel = PHP_BracesAtCodeLevel
else
- let b:PHP_BracesAtCodeLevel = 0
+ let b:PHP_BracesAtCodeLevel = 0
endif
@@ -108,24 +100,21 @@
setlocal nosmartindent
setlocal noautoindent
setlocal nocindent
-setlocal nolisp " autoindent must be on, so this line is also useless...
+setlocal nolisp
setlocal indentexpr=GetPhpIndent()
setlocal indentkeys=0{,0},0),:,!^F,o,O,e,*<Return>,=?>,=<?,=*/
-if version <= 603 && &encoding == 'utf-8'
- let s:searchpairflags = 'bW'
-else
- let s:searchpairflags = 'bWr'
-endif
+
+let s:searchpairflags = 'bWr'
if &fileformat == "unix" && exists("PHP_removeCRwhenUnix") && PHP_removeCRwhenUnix
- silent! %s/\r$//g
+ silent! %s/\r$//g
endif
if exists("*GetPhpIndent")
- finish " XXX
+ finish " XXX
endif
let s:endline= '\s*\%(//.*\|#.*\|/\*.*\*/\s*\)\=$'
@@ -134,537 +123,544 @@
function! GetLastRealCodeLNum(startline) " {{{
- "Inspired from the function SkipJavaBlanksAndComments by Toby Allsopp for indent/java.vim
- let lnum = a:startline
- let old_lnum = lnum
+ let lnum = a:startline
+ let old_lnum = lnum
- while lnum > 1
- let lnum = prevnonblank(lnum)
+ while lnum > 1
+ let lnum = prevnonblank(lnum)
+ let lastline = getline(lnum)
+
+ if b:InPHPcode_and_script && lastline =~ '?>\s*$'
+ let lnum = lnum - 1
+ elseif lastline =~ '^\s*?>.*<?\%(php\)\=\s*$'
+ let lnum = lnum - 1
+ elseif lastline =~ '^\s*\%(//\|#\|/\*.*\*/\s*$\)'
+ let lnum = lnum - 1
+ elseif lastline =~ '\*/\s*$'
+ call cursor(lnum, 1)
+ if lastline !~ '^\*/'
+ call search('\*/', 'W')
+ endif
+ let lnum = searchpair('/\*', '', '\*/', s:searchpairflags)
+
+ let lastline = getline(lnum)
+ if lastline =~ '^\s*/\*'
+ let lnum = lnum - 1
+ else
+ break
+ endif
+
+
+ elseif lastline =~? '\%(//\s*\|?>.*\)\@<!<?\%(php\)\=\s*$\|^\s*<script\>'
+
+ while lastline !~ '\(<?.*\)\@<!?>' && lnum > 1
+ let lnum = lnum - 1
let lastline = getline(lnum)
-
- if b:InPHPcode_and_script && lastline =~ '?>\s*$'
- let lnum = lnum - 1
- elseif lastline =~ '^\s*?>.*<?\%(php\)\=\s*$'
- let lnum = lnum - 1
- elseif lastline =~ '^\s*\%(//\|#\|/\*.*\*/\s*$\)' " if line is under comment
- let lnum = lnum - 1
- elseif lastline =~ '\*/\s*$' " skip multiline comments
- call cursor(lnum, 1)
- call search('\*/\zs', 'W') " positition the cursor after the first */
- let lnum = searchpair('/\*', '', '\*/\zs', s:searchpairflags) " find the most outside /*
-
- let lastline = getline(lnum)
- if lastline =~ '^\s*/\*' " if line contains nothing but comment
- let lnum = lnum - 1 " do the job again on the line before (a comment can hide another...)
- else
- break
- endif
-
-
- elseif lastline =~? '\%(//\s*\|?>.*\)\@<!<?\%(php\)\=\s*$\|^\s*<script\>' " skip non php code
-
- while lastline !~ '\(<?.*\)\@<!?>' && lnum > 1
- let lnum = lnum - 1
- let lastline = getline(lnum)
- endwhile
- if lastline =~ '^\s*?>' " if line contains nothing but end tag
- let lnum = lnum - 1
- else
- break " else there is something important before the ?>
- endif
+ endwhile
+ if lastline =~ '^\s*?>'
+ let lnum = lnum - 1
+ else
+ break
+ endif
- elseif lastline =~? '^\a\w*;$' && lastline !~? s:notPhpHereDoc " match the end of a heredoc
- let tofind=substitute( lastline, '\([^;]\+\);', '<<<\1$', '')
- while getline(lnum) !~? tofind && lnum > 1
- let lnum = lnum - 1
- endwhile
- else
- break " if none of these were true then we are done
- endif
- endwhile
-
- if lnum==1 && getline(lnum)!~ '<?'
- let lnum=0
+ elseif lastline =~? '^\a\w*;$' && lastline !~? s:notPhpHereDoc
+ let tofind=substitute( lastline, '\([^;]\+\);', '<<<\1$', '')
+ while getline(lnum) !~? tofind && lnum > 1
+ let lnum = lnum - 1
+ endwhile
+ else
+ break
endif
-
- if b:InPHPcode_and_script && !b:InPHPcode
- let b:InPHPcode_and_script = 0
- endif
- return lnum
-endfunction
-" }}}
+ endwhile
+
+ if lnum==1 && getline(lnum)!~ '<?'
+ let lnum=0
+ endif
+
+ if b:InPHPcode_and_script && !b:InPHPcode
+ let b:InPHPcode_and_script = 0
+ endif
+ return lnum
+endfunction " }}}
function! Skippmatch() " {{{
- let synname = synIDattr(synID(line("."), col("."), 0), "name")
- if synname == "Delimiter" || synname == "phpParent" || synname == "javaScriptBraces" || synname == "phpComment" && b:UserIsTypingComment
- return 0
- else
- return 1
- endif
-endfun
-" }}}
+ let synname = synIDattr(synID(line("."), col("."), 0), "name")
+ if synname == "Delimiter" || synname == "phpParent" || synname == "javaScriptBraces" || synname == "phpComment" && b:UserIsTypingComment
+ return 0
+ else
+ return 1
+ endif
+endfun " }}}
function! FindOpenBracket(lnum) " {{{
- call cursor(a:lnum, 1) " set the cursor to the start of the lnum line
- return searchpair('{', '', '}', 'bW', 'Skippmatch()')
-endfun
-" }}}
+ call cursor(a:lnum, 1)
+ return searchpair('{', '', '}', 'bW', 'Skippmatch()')
+endfun " }}}
function! FindTheIfOfAnElse (lnum, StopAfterFirstPrevElse) " {{{
-" A very clever recoursive function created by me (John Wellesz) that find the "if" corresponding to an
-" "else". This function can easily be adapted for other languages :)
-
- if getline(a:lnum) =~# '^\s*}\s*else\%(if\)\=\>'
- let beforeelse = a:lnum " we do this so we can find the opened bracket to speed up the process
- else
- let beforeelse = GetLastRealCodeLNum(a:lnum - 1)
+
+ if getline(a:lnum) =~# '^\s*}\s*else\%(if\)\=\>'
+ let beforeelse = a:lnum
+ else
+ let beforeelse = GetLastRealCodeLNum(a:lnum - 1)
+ endif
+
+ if !s:level
+ let s:iftoskip = 0
+ endif
+
+ if getline(beforeelse) =~# '^\s*\%(}\s*\)\=else\%(\s*if\)\@!\>'
+ let s:iftoskip = s:iftoskip + 1
+ endif
+
+ if getline(beforeelse) =~ '^\s*}'
+ let beforeelse = FindOpenBracket(beforeelse)
+
+ if getline(beforeelse) =~ '^\s*{'
+ let beforeelse = GetLastRealCodeLNum(beforeelse - 1)
endif
-
- if !s:level
- let s:iftoskip = 0
- endif
-
- if getline(beforeelse) =~# '^\s*\%(}\s*\)\=else\%(\s*if\)\@!\>'
- let s:iftoskip = s:iftoskip + 1
- endif
-
- if getline(beforeelse) =~ '^\s*}'
- let beforeelse = FindOpenBracket(beforeelse)
-
- if getline(beforeelse) =~ '^\s*{'
- let beforeelse = GetLastRealCodeLNum(beforeelse - 1)
- endif
- endif
+ endif
- if !s:iftoskip && a:StopAfterFirstPrevElse && getline(beforeelse) =~# '^\s*\%([}]\s*\)\=else\%(if\)\=\>'
- return beforeelse
- endif
-
- if getline(beforeelse) !~# '^\s*if\>' && beforeelse>1 || s:iftoskip && beforeelse>1
-
- if s:iftoskip && getline(beforeelse) =~# '^\s*if\>'
- let s:iftoskip = s:iftoskip - 1
- endif
-
- let s:level = s:level + 1
- let beforeelse = FindTheIfOfAnElse(beforeelse, a:StopAfterFirstPrevElse)
- endif
-
+ if !s:iftoskip && a:StopAfterFirstPrevElse && getline(beforeelse) =~# '^\s*\%([}]\s*\)\=else\%(if\)\=\>'
return beforeelse
+ endif
-endfunction
-" }}}
+ if getline(beforeelse) !~# '^\s*if\>' && beforeelse>1 || s:iftoskip && beforeelse>1
+
+ if s:iftoskip && getline(beforeelse) =~# '^\s*if\>'
+ let s:iftoskip = s:iftoskip - 1
+ endif
+
+ let s:level = s:level + 1
+ let beforeelse = FindTheIfOfAnElse(beforeelse, a:StopAfterFirstPrevElse)
+ endif
+
+ return beforeelse
+
+endfunction " }}}
function! IslinePHP (lnum, tofind) " {{{
- let cline = getline(a:lnum)
+ let cline = getline(a:lnum)
- if a:tofind==""
- let tofind = "^\\s*[\"']*\s*\\zs\\S" " This correct the issue where lines beginning by a
- " single or double quote were not indented in some cases.
- else
- let tofind = a:tofind
- endif
+ if a:tofind==""
+ let tofind = "^\\s*[\"']*\s*\\zs\\S"
+ else
+ let tofind = a:tofind
+ endif
- let tofind = tofind . '\c' " ignorecase
+ let tofind = tofind . '\c'
- let coltotest = match (cline, tofind) + 1 "find the first non blank char in the current line
-
- let synname = synIDattr(synID(a:lnum, coltotest, 0), "name") " ask to syntax what is its name
+ let coltotest = match (cline, tofind) + 1
- if synname =~ '^php' || synname=="Delimiter" || synname =~? '^javaScript'
- return synname
- else
- return ""
- endif
-endfunction
-" }}}
+ let synname = synIDattr(synID(a:lnum, coltotest, 0), "name")
+
+ if synname =~ '^php' || synname=="Delimiter" || synname =~? '^javaScript'
+ return synname
+ else
+ return ""
+ endif
+endfunction " }}}
let s:notPhpHereDoc = '\%(break\|return\|continue\|exit\);'
-let s:blockstart = '\%(\%(\%(}\s*\)\=else\%(\s\+\)\=\)\=if\>\|while\>\|switch\>\|for\%(each\)\=\>\|declare\>\|[|&]\)'
+let s:blockstart = '\%(\%(\%(}\s*\)\=else\%(\s\+\)\=\)\=if\>\|else\>\|while\>\|switch\>\|for\%(each\)\=\>\|declare\>\|class\>\|[|&]\)'
let s:autorestoptions = 0
if ! s:autorestoptions
- au BufWinEnter,Syntax *.php,*.php3,*.php4,*.php5 call ResetOptions()
- let s:autorestoptions = 1
+ au BufWinEnter,Syntax *.php,*.php3,*.php4,*.php5 call ResetOptions()
+ let s:autorestoptions = 1
endif
function! ResetOptions()
- if ! b:optionsset
- setlocal formatoptions=qroc
- let b:optionsset = 1
- endif
+ if ! b:optionsset
+ setlocal formatoptions=qroc
+ let b:optionsset = 1
+ endif
endfunc
function! GetPhpIndent()
- "##############################################
- "########### MAIN INDENT FUNCTION #############
- "##############################################
- let UserIsEditing=0
- if b:PHP_oldchangetick != b:changedtick
- let b:PHP_oldchangetick = b:changedtick
- let UserIsEditing=1
+ let UserIsEditing=0
+ if b:PHP_oldchangetick != b:changedtick
+ let b:PHP_oldchangetick = b:changedtick
+ let UserIsEditing=1
+ endif
+
+ if b:PHP_default_indenting
+ let b:PHP_default_indenting = g:PHP_default_indenting * &sw
+ endif
+
+ let cline = getline(v:lnum)
+
+ if !b:PHP_indentinghuge && b:PHP_lastindented > b:PHP_indentbeforelast
+ if b:PHP_indentbeforelast
+ let b:PHP_indentinghuge = 1
+ echom 'Large indenting detected, speed optimizations engaged'
endif
+ let b:PHP_indentbeforelast = b:PHP_lastindented
+ endif
- if b:PHP_default_indenting
- let b:PHP_default_indenting = g:PHP_default_indenting * &sw
+ if b:InPHPcode_checked && prevnonblank(v:lnum - 1) != b:PHP_lastindented
+ if b:PHP_indentinghuge
+ echom 'Large indenting deactivated'
+ let b:PHP_indentinghuge = 0
+ let b:PHP_CurrentIndentLevel = b:PHP_default_indenting
endif
+ let b:PHP_lastindented = v:lnum
+ let b:PHP_LastIndentedWasComment=0
+ let b:PHP_InsideMultilineComment=0
+ let b:PHP_indentbeforelast = 0
- let cline = getline(v:lnum) " current line
+ let b:InPHPcode = 0
+ let b:InPHPcode_checked = 0
+ let b:InPHPcode_and_script = 0
+ let b:InPHPcode_tofind = ""
- if !b:PHP_indentinghuge && b:PHP_lastindented > b:PHP_indentbeforelast
- if b:PHP_indentbeforelast
- let b:PHP_indentinghuge = 1
- echom 'Large indenting detected, speed optimizations engaged'
- endif
- let b:PHP_indentbeforelast = b:PHP_lastindented
- endif
+ elseif v:lnum > b:PHP_lastindented
+ let real_PHP_lastindented = b:PHP_lastindented
+ let b:PHP_lastindented = v:lnum
+ endif
- if b:InPHPcode_checked && prevnonblank(v:lnum - 1) != b:PHP_lastindented
- if b:PHP_indentinghuge
- echom 'Large indenting deactivated'
- let b:PHP_indentinghuge = 0
- let b:PHP_CurrentIndentLevel = b:PHP_default_indenting
- endif
- let b:PHP_lastindented = v:lnum
- let b:PHP_LastIndentedWasComment=0
- let b:PHP_InsideMultilineComment=0
- let b:PHP_indentbeforelast = 0
-
- let b:InPHPcode = 0
- let b:InPHPcode_checked = 0
- let b:InPHPcode_and_script = 0
+
+ if !b:InPHPcode_checked " {{{ One time check
+ let b:InPHPcode_checked = 1
+
+ let synname = IslinePHP (prevnonblank(v:lnum), "")
+
+ if synname!=""
+ if synname != "phpHereDoc"
+ let b:InPHPcode = 1
let b:InPHPcode_tofind = ""
- elseif v:lnum > b:PHP_lastindented " we are indenting line in > order (we can rely on the line before)
- let real_PHP_lastindented = b:PHP_lastindented
- let b:PHP_lastindented = v:lnum
- endif
-
-
- if !b:InPHPcode_checked " {{{ One time check
- let b:InPHPcode_checked = 1
-
- let synname = IslinePHP (prevnonblank(v:lnum), "") " the line could be blank (if the user presses 'return')
-
- if synname!=""
- if synname != "phpHereDoc"
- let b:InPHPcode = 1
- let b:InPHPcode_tofind = ""
-
- if synname == "phpComment"
- let b:UserIsTypingComment = 1
- else
- let b:UserIsTypingComment = 0
- endif
-
- if synname =~? '^javaScript'
- let b:InPHPcode_and_script = 1
- endif
-
- else
- let b:InPHPcode = 0
- let b:UserIsTypingComment = 0
-
- let lnum = v:lnum - 1
- while getline(lnum) !~? '<<<\a\w*$' && lnum > 1
- let lnum = lnum - 1
- endwhile
-
- let b:InPHPcode_tofind = substitute( getline(lnum), '^.*<<<\(\a\w*\)\c', '^\\s*\1;$', '')
- endif
- else " IslinePHP returned "" => we are not in PHP or Javascript
- let b:InPHPcode = 0
- let b:UserIsTypingComment = 0
- " Then we have to find a php start tag...
- let b:InPHPcode_tofind = '<?\%(.*?>\)\@!\|<script.*>'
- endif
- endif "!b:InPHPcode_checked }}}
-
-
- let lnum = prevnonblank(v:lnum - 1)
- let last_line = getline(lnum)
-
- if b:InPHPcode_tofind!=""
- if cline =~? b:InPHPcode_tofind
- let b:InPHPcode = 1
- let b:InPHPcode_tofind = ""
- let b:UserIsTypingComment = 0
- if cline =~ '\*/' " End comment tags must be indented like start comment tags
- call cursor(v:lnum, 1)
- call search('\*/\zs', 'W')
- let lnum = searchpair('/\*', '', '\*/\zs', s:searchpairflags) " find the most outside /*
-
- let b:PHP_CurrentIndentLevel = b:PHP_default_indenting
- let b:PHP_LastIndentedWasComment = 0 " prevent a problem if multiline /**/ comment are surounded by
- " other types of comments
-
- if cline =~ '^\s*\*/'
- return indent(lnum) + 1
- else
- return indent(lnum)
- endif
-
- elseif cline =~? '<script\>' " a more accurate test is useless since there isn't any other possibility
- let b:InPHPcode_and_script = 1
- endif
- endif
- endif
-
-
- if b:InPHPcode
-
- if !b:InPHPcode_and_script && last_line =~ '\%(<?.*\)\@<!?>\%(.*<?\)\@!' && IslinePHP(lnum, '?>')=="Delimiter"
- if cline !~? s:PHP_startindenttag
- let b:InPHPcode = 0
- let b:InPHPcode_tofind = s:PHP_startindenttag
- elseif cline =~? '<script\>'
- let b:InPHPcode_and_script = 1
- endif
-
- elseif last_line =~? '<<<\a\w*$'
- let b:InPHPcode = 0
- let b:InPHPcode_tofind = substitute( last_line, '^.*<<<\(\a\w*\)\c', '^\\s*\1;$', '')
-
- elseif !UserIsEditing && cline =~ '^\s*/\*\%(.*\*/\)\@!' && getline(v:lnum + 1) !~ '^\s*\*' " XXX indent comments
- let b:InPHPcode = 0
- let b:InPHPcode_tofind = '\*/'
-
- elseif cline =~? '^\s*</script>'
- let b:InPHPcode = 0
- let b:InPHPcode_tofind = s:PHP_startindenttag
- endif
- endif " }}}
-
- if !b:InPHPcode && !b:InPHPcode_and_script
- return -1
- endif
-
-
- " Indent successive // or # comment the same way the first is {{{
- if cline =~ '^\s*\%(//\|#\|/\*.*\*/\s*$\)'
- if b:PHP_LastIndentedWasComment == 1
- return indent(real_PHP_lastindented) " line replaced in 1.02
- endif
- let b:PHP_LastIndentedWasComment = 1
- else
- let b:PHP_LastIndentedWasComment = 0
- endif
- " }}}
-
- " Indent multiline /* comments correctly {{{
-
-
- if b:PHP_InsideMultilineComment || b:UserIsTypingComment
- if cline =~ '^\s*\*\%(\/\)\@!' " if cline == '*'
- if last_line =~ '^\s*/\*' " if last_line == '/*'
- return indent(lnum) + 1
- else
- return indent(lnum)
- endif
+ if synname == "phpComment"
+ let b:UserIsTypingComment = 1
else
- let b:PHP_InsideMultilineComment = 0
+ let b:UserIsTypingComment = 0
endif
- endif
-
- if !b:PHP_InsideMultilineComment && cline =~ '^\s*/\*' " if cline == '/*'
- let b:PHP_InsideMultilineComment = 1
- return -1
- endif
- " }}}
- if cline =~# '^\s*<?' && cline !~ '?>' " Added the ^\s* part in version 1.03
- return 0
- endif
-
- if cline =~ '^\s*?>' && cline !~# '<?'
- return 0
- endif
-
- if cline =~? '^\s*\a\w*;$' && cline !~? s:notPhpHereDoc
- return 0
- endif
- " }}}
-
- let s:level = 0
-
- let lnum = GetLastRealCodeLNum(v:lnum - 1)
- let last_line = getline(lnum) " last line
- let ind = indent(lnum) " by default
- let endline= s:endline
-
- if ind==0 && b:PHP_default_indenting
- let ind = b:PHP_default_indenting
- endif
-
- if lnum == 0
- return b:PHP_default_indenting
- endif
-
-
- if cline =~ '^\s*}\%(}}\)\@!'
- let ind = indent(FindOpenBracket(v:lnum))
- let b:PHP_CurrentIndentLevel = b:PHP_default_indenting
- return ind
- endif
-
- if cline =~ '^\s*\*/' " End comment tags must be indented like start comment tags
- call cursor(v:lnum, 1)
- call search('\*/\zs', 'W')
- let lnum = searchpair('/\*', '', '\*/\zs', s:searchpairflags) " find the most outside /*
-
- let b:PHP_CurrentIndentLevel = b:PHP_default_indenting
-
- if cline =~ '^\s*\*/'
- return indent(lnum) + 1
- else
- return indent(lnum)
+ if synname =~? '^javaScript'
+ let b:InPHPcode_and_script = 1
endif
- endif
- let defaultORcase = '^\s*\%(default\|case\).*:'
+ else
+ let b:InPHPcode = 0
+ let b:UserIsTypingComment = 0
- if last_line =~ '[;}]'.endline && last_line !~# defaultORcase
- if ind==b:PHP_default_indenting " if no indentation for the previous line
- return b:PHP_default_indenting
- elseif b:PHP_indentinghuge && ind==b:PHP_CurrentIndentLevel && cline !~# '^\s*\%(else\|\%(case\|default\).*:\|[})];\=\)' && last_line !~# '^\s*\%(\%(}\s*\)\=else\)' && getline(GetLastRealCodeLNum(lnum - 1))=~';'.endline
- return b:PHP_CurrentIndentLevel
- endif
- endif
-
- let LastLineClosed = 0 " used to prevent redundant tests in the last part of the script
-
- let terminated = '\%(;\%(\s*?>\)\=\|<<<\a\w*\|}\)'.endline
-
- let unstated = '\%(^\s*'.s:blockstart.'.*)\|\%(//.*\)\@<!\<e'.'lse\>\)'.endline
-
- if ind != b:PHP_default_indenting && cline =~# '^\s*else\%(if\)\=\>'
- let b:PHP_CurrentIndentLevel = b:PHP_default_indenting " prevent optimized to work at next call
- return indent(FindTheIfOfAnElse(v:lnum, 1))
- elseif last_line =~# unstated && cline !~ '^\s*{\|^\s*);\='.endline
- let ind = ind + &sw
- return ind
-
-
- elseif ind != b:PHP_default_indenting && last_line =~ terminated
- let previous_line = last_line
- let last_line_num = lnum
- let LastLineClosed = 1
-
-
- while 1
- if previous_line =~ '^\s*}'
- let last_line_num = FindOpenBracket(last_line_num)
-
- if getline(last_line_num) =~ '^\s*{'
- let last_line_num = GetLastRealCodeLNum(last_line_num - 1)
- endif
-
- let previous_line = getline(last_line_num)
-
- continue
- else
- if getline(last_line_num) =~# '^\s*else\%(if\)\=\>'
- let last_line_num = FindTheIfOfAnElse(last_line_num, 0)
- continue " re-run the loop (we could find a '}' again)
- endif
-
-
- let last_match = last_line_num " remember the 'topest' line we found so far
-
- let one_ahead_indent = indent(last_line_num)
- let last_line_num = GetLastRealCodeLNum(last_line_num - 1)
- let two_ahead_indent = indent(last_line_num)
- let after_previous_line = previous_line
- let previous_line = getline(last_line_num)
-
-
- if previous_line =~# defaultORcase.'\|{'.endline
- break
- endif
-
- if after_previous_line=~# '^\s*'.s:blockstart.'.*)'.endline && previous_line =~# '[;}]'.endline
- break
- endif
-
- if one_ahead_indent == two_ahead_indent || last_line_num < 1
- if previous_line =~# '[;}]'.endline || last_line_num < 1
- break
- endif
- endif
- endif
+ let lnum = v:lnum - 1
+ while getline(lnum) !~? '<<<\a\w*$' && lnum > 1
+ let lnum = lnum - 1
endwhile
- if indent(last_match) != ind " if nothing was done lets the old script continue
- let ind = indent(last_match) " let's use the indent of the last line matched by the alhorithm above
- let b:PHP_CurrentIndentLevel = b:PHP_default_indenting " line added in version 1.02 to prevent optimized mode
- " from acting in some special cases
-
- if cline =~# defaultORcase
- let ind = ind - &sw
- endif
- return ind
- endif
+ let b:InPHPcode_tofind = substitute( getline(lnum), '^.*<<<\(\a\w*\)\c', '^\\s*\1;$', '')
+ endif
+ else
+ let b:InPHPcode = 0
+ let b:UserIsTypingComment = 0
+ let b:InPHPcode_tofind = '<?\%(.*?>\)\@!\|<script.*>'
endif
-
- let plinnum = GetLastRealCodeLNum(lnum - 1)
- let pline = getline(plinnum) " previous to last line
-
- let last_line = substitute(last_line,"\\(//\\|#\\)\\(\\(\\([^\"']*\\([\"']\\)[^\"']*\\5\\)\\+[^\"']*$\\)\\|\\([^\"']*$\\)\\)",'','')
+ endif "!b:InPHPcode_checked }}}
- if ind == b:PHP_default_indenting
- if last_line =~ terminated
- let LastLineClosed = 1
+ " Test if we are indenting PHP code {{{
+ let lnum = prevnonblank(v:lnum - 1)
+ let last_line = getline(lnum)
+
+ if b:InPHPcode_tofind!=""
+ if cline =~? b:InPHPcode_tofind
+ let b:InPHPcode = 1
+ let b:InPHPcode_tofind = ""
+ let b:UserIsTypingComment = 0
+ if cline =~ '\*/'
+ call cursor(v:lnum, 1)
+ if cline !~ '^\*/'
+ call search('\*/', 'W')
endif
- endif
-
- if !LastLineClosed " the last line isn't a .*; or a }$ line
- if last_line =~# '[{(]'.endline || last_line =~? '\h\w*\s*(.*,$' && pline !~ '[,(]'.endline
+ let lnum = searchpair('/\*', '', '\*/', s:searchpairflags)
- if !b:PHP_BracesAtCodeLevel || last_line !~# '^\s*{' " XXX mod {
- let ind = ind + &sw
- endif
+ let b:PHP_CurrentIndentLevel = b:PHP_default_indenting
- if b:PHP_BracesAtCodeLevel || cline !~# defaultORcase " XXX mod (2) {
- " case and default are not indented inside blocks
- let b:PHP_CurrentIndentLevel = ind
- return ind
- endif
+ let b:PHP_LastIndentedWasComment = 0
- elseif last_line =~ '\S\+\s*),'.endline
- call cursor(lnum, 1)
- call search('),'.endline, 'W')
- let openedparent = searchpair('(', '', ')', 'bW', 'Skippmatch()')
- if openedparent != lnum
- let ind = indent(openedparent)
- endif
-
- elseif cline !~ '^\s*{' && pline =~ '\%(;\%(\s*?>\)\=\|<<<\a\w*\|{\|^\s*'.s:blockstart.'\s*(.*)\)'.endline.'\|^\s*}\|'.defaultORcase
-
- let ind = ind + &sw
-
- endif
- if b:PHP_BracesAtCodeLevel && cline =~# '^\s*{' " XXX mod {
- let ind = ind + &sw
+ if cline =~ '^\s*\*/'
+ return indent(lnum) + 1
+ else
+ return indent(lnum)
endif
- elseif last_line =~# defaultORcase
- let ind = ind + &sw
+ elseif cline =~? '<script\>'
+ let b:InPHPcode_and_script = 1
+ endif
endif
+ endif
- if cline =~ '^\s*);\='
- let ind = ind - &sw
- elseif cline =~# defaultORcase
- let ind = ind - &sw
-
+ if b:InPHPcode
+
+ if !b:InPHPcode_and_script && last_line =~ '\%(<?.*\)\@<!?>\%(.*<?\)\@!' && IslinePHP(lnum, '?>')=="Delimiter"
+ if cline !~? s:PHP_startindenttag
+ let b:InPHPcode = 0
+ let b:InPHPcode_tofind = s:PHP_startindenttag
+ elseif cline =~? '<script\>'
+ let b:InPHPcode_and_script = 1
+ endif
+
+ elseif last_line =~? '<<<\a\w*$'
+ let b:InPHPcode = 0
+ let b:InPHPcode_tofind = substitute( last_line, '^.*<<<\(\a\w*\)\c', '^\\s*\1;$', '')
+
+ elseif !UserIsEditing && cline =~ '^\s*/\*\%(.*\*/\)\@!' && getline(v:lnum + 1) !~ '^\s*\*'
+ let b:InPHPcode = 0
+ let b:InPHPcode_tofind = '\*/'
+
+ elseif cline =~? '^\s*</script>'
+ let b:InPHPcode = 0
+ let b:InPHPcode_tofind = s:PHP_startindenttag
endif
+ endif " }}}
- let b:PHP_CurrentIndentLevel = ind
+ if !b:InPHPcode && !b:InPHPcode_and_script
+ return -1
+ endif
+
+
+ " Indent successive // or # comment the same way the first is {{{
+ if cline =~ '^\s*\%(//\|#\|/\*.*\*/\s*$\)'
+ if b:PHP_LastIndentedWasComment == 1
+ return indent(real_PHP_lastindented)
+ endif
+ let b:PHP_LastIndentedWasComment = 1
+ else
+ let b:PHP_LastIndentedWasComment = 0
+ endif " }}}
+
+ " Indent multiline /* comments correctly {{{
+
+ if b:PHP_InsideMultilineComment || b:UserIsTypingComment
+ if cline =~ '^\s*\*\%(\/\)\@!'
+ if last_line =~ '^\s*/\*'
+ return indent(lnum) + 1
+ else
+ return indent(lnum)
+ endif
+ else
+ let b:PHP_InsideMultilineComment = 0
+ endif
+ endif
+
+ if !b:PHP_InsideMultilineComment && cline =~ '^\s*/\*'
+ let b:PHP_InsideMultilineComment = 1
+ return -1
+ endif " }}}
+
+
+ " Things always indented at col 1 (PHP delimiter: <?, ?>, Heredoc end) {{{
+ if cline =~# '^\s*<?' && cline !~ '?>'
+ return 0
+ endif
+
+ if cline =~ '^\s*?>' && cline !~# '<?'
+ return 0
+ endif
+
+ if cline =~? '^\s*\a\w*;$' && cline !~? s:notPhpHereDoc
+ return 0
+ endif " }}}
+
+ let s:level = 0
+
+ let lnum = GetLastRealCodeLNum(v:lnum - 1)
+ let last_line = getline(lnum)
+ let ind = indent(lnum)
+ let endline= s:endline
+
+ if ind==0 && b:PHP_default_indenting
+ let ind = b:PHP_default_indenting
+ endif
+
+ if lnum == 0
+ return b:PHP_default_indenting
+ endif
+
+
+ if cline =~ '^\s*}\%(}}\)\@!'
+ let ind = indent(FindOpenBracket(v:lnum))
+ let b:PHP_CurrentIndentLevel = b:PHP_default_indenting
return ind
+ endif
+
+ if cline =~ '^\s*\*/'
+ call cursor(v:lnum, 1)
+ if cline !~ '^\*/'
+ call search('\*/', 'W')
+ endif
+ let lnum = searchpair('/\*', '', '\*/', s:searchpairflags)
+
+ let b:PHP_CurrentIndentLevel = b:PHP_default_indenting
+
+ if cline =~ '^\s*\*/'
+ return indent(lnum) + 1
+ else
+ return indent(lnum)
+ endif
+ endif
+
+ let defaultORcase = '^\s*\%(default\|case\).*:'
+
+ if last_line =~ '[;}]'.endline && last_line !~# defaultORcase
+ if ind==b:PHP_default_indenting
+ return b:PHP_default_indenting
+ elseif b:PHP_indentinghuge && ind==b:PHP_CurrentIndentLevel && cline !~# '^\s*\%(else\|\%(case\|default\).*:\|[})];\=\)' && last_line !~# '^\s*\%(\%(}\s*\)\=else\)' && getline(GetLastRealCodeLNum(lnum - 1))=~';'.endline
+ return b:PHP_CurrentIndentLevel
+ endif
+ endif
+
+ let LastLineClosed = 0
+
+ let terminated = '\%(;\%(\s*?>\)\=\|<<<\a\w*\|}\)'.endline
+
+ let unstated = '\%(^\s*'.s:blockstart.'.*)\|\%(//.*\)\@<!\<e'.'lse\>\)'.endline
+
+ if ind != b:PHP_default_indenting && cline =~# '^\s*else\%(if\)\=\>'
+ let b:PHP_CurrentIndentLevel = b:PHP_default_indenting
+ return indent(FindTheIfOfAnElse(v:lnum, 1))
+ elseif cline =~ '^\s*{'
+ let previous_line = last_line
+ let last_line_num = lnum
+
+ while last_line_num > 1
+
+ if previous_line =~ '^\s*\%(' . s:blockstart . '\|\%([a-zA-Z]\s*\)*function\)' && previous_line !~ '^\s*[|&]'
+
+ let ind = indent(last_line_num)
+
+ if b:PHP_BracesAtCodeLevel
+ let ind = ind + &sw
+ endif
+
+ return ind
+ endif
+
+ let last_line_num = last_line_num - 1
+ let previous_line = getline(last_line_num)
+ endwhile
+
+ elseif last_line =~# unstated && cline !~ '^\s*{\|^\s*);\='.endline
+ let ind = ind + &sw
+ return ind
+
+ elseif ind != b:PHP_default_indenting && last_line =~ terminated
+ let previous_line = last_line
+ let last_line_num = lnum
+ let LastLineClosed = 1
+
+ while 1
+ if previous_line =~ '^\s*}'
+ let last_line_num = FindOpenBracket(last_line_num)
+
+ if getline(last_line_num) =~ '^\s*{'
+ let last_line_num = GetLastRealCodeLNum(last_line_num - 1)
+ endif
+
+ let previous_line = getline(last_line_num)
+
+ continue
+ else
+
+ if getline(last_line_num) =~# '^\s*else\%(if\)\=\>'
+ let last_line_num = FindTheIfOfAnElse(last_line_num, 0)
+ continue
+ endif
+
+
+ let last_match = last_line_num
+
+ let one_ahead_indent = indent(last_line_num)
+ let last_line_num = GetLastRealCodeLNum(last_line_num - 1)
+ let two_ahead_indent = indent(last_line_num)
+ let after_previous_line = previous_line
+ let previous_line = getline(last_line_num)
+
+
+ if previous_line =~# defaultORcase.'\|{'.endline
+ break
+ endif
+
+ if after_previous_line=~# '^\s*'.s:blockstart.'.*)'.endline && previous_line =~# '[;}]'.endline
+ break
+ endif
+
+ if one_ahead_indent == two_ahead_indent || last_line_num < 1
+ if previous_line =~# '[;}]'.endline || last_line_num < 1
+ break
+ endif
+ endif
+ endif
+ endwhile
+
+ if indent(last_match) != ind
+ let ind = indent(last_match)
+ let b:PHP_CurrentIndentLevel = b:PHP_default_indenting
+
+ if cline =~# defaultORcase
+ let ind = ind - &sw
+ endif
+ return ind
+ endif
+ endif
+
+ let plinnum = GetLastRealCodeLNum(lnum - 1)
+ let pline = getline(plinnum)
+
+ let last_line = substitute(last_line,"\\(//\\|#\\)\\(\\(\\([^\"']*\\([\"']\\)[^\"']*\\5\\)\\+[^\"']*$\\)\\|\\([^\"']*$\\)\\)",'','')
+
+
+ if ind == b:PHP_default_indenting
+ if last_line =~ terminated
+ let LastLineClosed = 1
+ endif
+ endif
+
+ if !LastLineClosed
+
+ if last_line =~# '[{(]'.endline || last_line =~? '\h\w*\s*(.*,$' && pline !~ '[,(]'.endline
+
+ if !b:PHP_BracesAtCodeLevel || last_line !~# '^\s*{'
+ let ind = ind + &sw
+ endif
+
+ if b:PHP_BracesAtCodeLevel || cline !~# defaultORcase
+ let b:PHP_CurrentIndentLevel = ind
+ return ind
+ endif
+
+ elseif last_line =~ '\S\+\s*),'.endline
+ call cursor(lnum, 1)
+ call search('),'.endline, 'W')
+ let openedparent = searchpair('(', '', ')', 'bW', 'Skippmatch()')
+ if openedparent != lnum
+ let ind = indent(openedparent)
+ endif
+
+
+ elseif cline !~ '^\s*{' && pline =~ '\%(;\%(\s*?>\)\=\|<<<\a\w*\|{\|^\s*'.s:blockstart.'\s*(.*)\)'.endline.'\|^\s*}\|'.defaultORcase
+
+ let ind = ind + &sw
+
+ endif
+
+ elseif last_line =~# defaultORcase
+ let ind = ind + &sw
+ endif
+
+ if cline =~ '^\s*);\='
+ let ind = ind - &sw
+ elseif cline =~# defaultORcase
+ let ind = ind - &sw
+
+ endif
+
+ let b:PHP_CurrentIndentLevel = ind
+ return ind
endfunction
-" vim: set ts=4 sw=4:
-" vim: set ff=unix:
+" vim: set ts=8 sw=4 sts=4:
diff --git a/runtime/indent/ruby.vim b/runtime/indent/ruby.vim
index ff22bbb..e5946eb 100644
--- a/runtime/indent/ruby.vim
+++ b/runtime/indent/ruby.vim
@@ -82,7 +82,7 @@
let s:end_middle_regex = '\<\%(ensure\|else\|\%(\%(^\|;\)\s*\)\@<=\<rescue\>\|when\|elsif\)\>'
" Regex that defines the end-match for the 'end' keyword.
-let s:end_end_regex = '\%(^\|[^.]\)\@<=\<end\>'
+let s:end_end_regex = '\%(^\|[^.:]\)\@<=\<end\>'
" Expression used for searchpair() call for finding match for 'end' keyword.
let s:end_skip_expr = s:skip_expr .
@@ -244,17 +244,12 @@
" If we have a deindenting keyword, find its match and indent to its level.
" TODO: this is messy
if s:Match(v:lnum, s:ruby_deindent_keywords)
-" let lnum = s:PrevNonBlankNonString(v:lnum - 1)
-"
-" if lnum == 0
-" return 0
-" endif
-"
-" return indent(v:lnum) - &sw
call cursor(v:lnum, 1)
if searchpair(s:end_start_regex, s:end_middle_regex, s:end_end_regex, 'bW',
\ s:end_skip_expr) > 0
- if strpart(getline('.'), 0, col('.') - 1) =~ '=\s*'
+ let line = getline('.')
+ if strpart(line, 0, col('.') - 1) =~ '=\s*$' &&
+ \ strpart(line, col('.') - 1, 2) !~ 'do'
let ind = virtcol('.') - 1
else
let ind = indent('.')
@@ -380,5 +375,3 @@
let &cpo = s:cpo_save
unlet s:cpo_save
-
-" vim: nowrap sw=2 sts=2 ts=8 ff=unix:
diff --git a/runtime/indent/sml.vim b/runtime/indent/sml.vim
new file mode 100644
index 0000000..30d3108
--- /dev/null
+++ b/runtime/indent/sml.vim
@@ -0,0 +1,215 @@
+" Vim indent file
+" Language: SML
+" Maintainer: Saikat Guha <sg266@cornell.edu>
+" Hubert Chao <hc85@cornell.edu>
+" Original OCaml Version:
+" Jean-Francois Yuen <jfyuen@ifrance.com>
+" Mike Leary <leary@nwlink.com>
+" Markus Mottl <markus@oefai.at>
+" OCaml URL: http://www.oefai.at/~markus/vim/indent/ocaml.vim
+" Last Change: 2003 Jan 04 - Adapted to SML
+" 2002 Nov 06 - Some fixes (JY)
+" 2002 Oct 28 - Fixed bug with indentation of ']' (MM)
+" 2002 Oct 22 - Major rewrite (JY)
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+ finish
+endif
+let b:did_indent = 1
+
+setlocal expandtab
+setlocal indentexpr=GetSMLIndent()
+setlocal indentkeys+=0=and,0=else,0=end,0=handle,0=if,0=in,0=let,0=then,0=val,0=fun,0=\|,0=*),0)
+setlocal nolisp
+setlocal nosmartindent
+setlocal textwidth=80
+setlocal shiftwidth=2
+
+" Comment formatting
+if (has("comments"))
+ set comments=sr:(*,mb:*,ex:*)
+ set fo=cqort
+endif
+
+" Only define the function once.
+"if exists("*GetSMLIndent")
+"finish
+"endif
+
+" Define some patterns:
+let s:beflet = '^\s*\(initializer\|method\|try\)\|\(\<\(begin\|do\|else\|in\|then\|try\)\|->\|;\)\s*$'
+let s:letpat = '^\s*\(let\|type\|module\|class\|open\|exception\|val\|include\|external\)\>'
+let s:letlim = '\(\<\(sig\|struct\)\|;;\)\s*$'
+let s:lim = '^\s*\(exception\|external\|include\|let\|module\|open\|type\|val\)\>'
+let s:module = '\<\%(let\|sig\|struct\)\>'
+let s:obj = '^\s*\(constraint\|inherit\|initializer\|method\|val\)\>\|\<\(object\|object\s*(.*)\)\s*$'
+let s:type = '^\s*\%(let\|type\)\>.*='
+let s:val = '^\s*\(val\|external\)\>.*:'
+
+" Skipping pattern, for comments
+function! s:SkipPattern(lnum, pat)
+ let def = prevnonblank(a:lnum - 1)
+ while def > 0 && getline(def) =~ a:pat
+ let def = prevnonblank(def - 1)
+ endwhile
+ return def
+endfunction
+
+" Indent for ';;' to match multiple 'let'
+function! s:GetInd(lnum, pat, lim)
+ let llet = search(a:pat, 'bW')
+ let old = indent(a:lnum)
+ while llet > 0
+ let old = indent(llet)
+ let nb = s:SkipPattern(llet, '^\s*(\*.*\*)\s*$')
+ if getline(nb) =~ a:lim
+ return old
+ endif
+ let llet = search(a:pat, 'bW')
+ endwhile
+ return old
+endfunction
+
+" Indent pairs
+function! s:FindPair(pstart, pmid, pend)
+ call search(a:pend, 'bW')
+" return indent(searchpair(a:pstart, a:pmid, a:pend, 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"'))
+ let lno = searchpair(a:pstart, a:pmid, a:pend, 'bW', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"')
+ if lno == -1
+ return indent(lno)
+ else
+ return col(".") - 1
+ endif
+endfunction
+
+function! s:FindLet(pstart, pmid, pend)
+ call search(a:pend, 'bW')
+" return indent(searchpair(a:pstart, a:pmid, a:pend, 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"'))
+ let lno = searchpair(a:pstart, a:pmid, a:pend, 'bW', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"')
+ let moduleLine = getline(lno)
+ if lno == -1 || moduleLine =~ '^\s*\(fun\|structure\|signature\)\>'
+ return indent(lno)
+ else
+ return col(".") - 1
+ endif
+endfunction
+
+" Indent 'let'
+"function! s:FindLet(pstart, pmid, pend)
+" call search(a:pend, 'bW')
+" return indent(searchpair(a:pstart, a:pmid, a:pend, 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment" || getline(".") =~ "^\\s*let\\>.*=.*\\<in\\s*$" || getline(prevnonblank(".") - 1) =~ "^\\s*let\\>.*=\\s*$\\|" . s:beflet'))
+"endfunction
+
+function! GetSMLIndent()
+ " Find a non-blank line above the current line.
+ let lnum = prevnonblank(v:lnum - 1)
+
+ " At the start of the file use zero indent.
+ if lnum == 0
+ return 0
+ endif
+
+ let ind = indent(lnum)
+ let lline = getline(lnum)
+
+ " Return double 'shiftwidth' after lines matching:
+ if lline =~ '^\s*|.*=>\s*$'
+ return ind + &sw + &sw
+ elseif lline =~ '^\s*val\>.*=\s*$'
+ return ind + &sw
+ endif
+
+ let line = getline(v:lnum)
+
+ " Indent lines starting with 'end' to matching module
+ if line =~ '^\s*end\>'
+ return s:FindLet(s:module, '', '\<end\>')
+
+ " Match 'else' with 'if'
+ elseif line =~ '^\s*else\>'
+ if lline !~ '^\s*\(if\|else\|then\)\>'
+ return s:FindPair('\<if\>', '', '\<then\>')
+ else return ind
+ endif
+
+ " Match 'then' with 'if'
+ elseif line =~ '^\s*then\>'
+ if lline !~ '^\s*\(if\|else\|then\)\>'
+ return s:FindPair('\<if\>', '', '\<then\>')
+ else return ind
+ endif
+
+ " Indent if current line begins with ']'
+ elseif line =~ '^\s*\]'
+ return s:FindPair('\[','','\]')
+
+ " Indent current line starting with 'in' to last matching 'let'
+ elseif line =~ '^\s*in\>'
+ let ind = s:FindLet('\<let\>','','\<in\>')
+
+ " Indent from last matching module if line matches:
+ elseif line =~ '^\s*\(fun\|val\|open\|structure\|and\|datatype\|type\|exception\)\>'
+ cursor(lnum,1)
+ let lastModule = indent(searchpair(s:module, '', '\<end\>', 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"'))
+ if lastModule == -1
+ return 0
+ else
+ return lastModule + &sw
+ endif
+
+ " Indent lines starting with '|' from matching 'case', 'handle'
+ elseif line =~ '^\s*|'
+ " cursor(lnum,1)
+ let lastSwitch = search('\<\(case\|handle\|fun\|datatype\)\>','bW')
+ let switchLine = getline(lastSwitch)
+ let switchLineIndent = indent(lastSwitch)
+ if lline =~ '^\s*|'
+ return ind
+ endif
+ if switchLine =~ '\<case\>'
+ return col(".") + 2
+ elseif switchLine =~ '\<handle\>'
+ return switchLineIndent + &sw
+ elseif switchLine =~ '\<datatype\>'
+ call search('=')
+ return col(".") - 1
+ else
+ return switchLineIndent + 2
+ endif
+
+
+ " Indent if last line ends with 'sig', 'struct', 'let', 'then', 'else',
+ " 'in'
+ elseif lline =~ '\<\(sig\|struct\|let\|in\|then\|else\)\s*$'
+ let ind = ind + &sw
+
+ " Indent if last line ends with 'of', align from 'case'
+ elseif lline =~ '\<\(of\)\s*$'
+ call search('\<case\>',"bW")
+ let ind = col(".")+4
+
+ " Indent if current line starts with 'of'
+ elseif line =~ '^\s*of\>'
+ call search('\<case\>',"bW")
+ let ind = col(".")+1
+
+
+ " Indent if last line starts with 'fun', 'case', 'fn'
+ elseif lline =~ '^\s*\(fun\|fn\|case\)\>'
+ let ind = ind + &sw
+
+ endif
+
+ " Don't indent 'let' if last line started with 'fun', 'fn'
+ if line =~ '^\s*let\>'
+ if lline =~ '^\s*\(fun\|fn\)'
+ let ind = ind - &sw
+ endif
+ endif
+
+ return ind
+
+endfunction
+
+" vim:sw=2
diff --git a/runtime/plugin/NetrwPlugin.vim b/runtime/plugin/NetrwPlugin.vim
index 42bdbd9..8013c8f 100644
--- a/runtime/plugin/NetrwPlugin.vim
+++ b/runtime/plugin/NetrwPlugin.vim
@@ -1,7 +1,8 @@
" netrw.vim: Handles file transfer and remote directory listing across a network
" PLUGIN PORTION
-" Date: Sep 08, 2005
+" Last Change: Aug 29, 2005
" Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
+" Version: 66
" License: Vim License (see vim's :help license)
" GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
" Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
@@ -20,6 +21,17 @@
" ---------------------------------------------------------------------
" Load Once: {{{1
+if exists("g:loaded_netrw") || &cp
+ finish
+endif
+if v:version < 600
+ echoerr "***netrw*** doesn't support Vim version ".v:version
+ finish
+endif
+let g:loaded_netrw = "v66"
+if v:version < 700
+ let loaded_explorer = 1
+endif
let s:keepcpo= &cpo
set cpo&vim
@@ -126,7 +138,7 @@
" example and as a fix for a Windows 95 problem: in my
" experience, win95's ftp always dumped four blank lines
" at the end of the transfer.
-if has("win95") && exists("g:netrw_win95ftp") && g:netrw_win95ftp
+if has("win95") && g:netrw_win95ftp
fun! NetReadFixup(method, line1, line2)
" call Dfunc("NetReadFixup(method<".a:method."> line1=".a:line1." line2=".a:line2.")")
if method == 3 " ftp (no <.netrc>)
diff --git a/runtime/plugin/NetrwSettings.vim b/runtime/plugin/NetrwSettings.vim
index 7d8089c..eecdcd2 100644
--- a/runtime/plugin/NetrwSettings.vim
+++ b/runtime/plugin/NetrwSettings.vim
@@ -1,7 +1,7 @@
" NetrwSettings.vim: makes netrw settings simpler
-" Date: Aug 16, 2005
+" Last Change: Aug 16, 2005
" Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
-" Version: 3
+" Version: 3
" Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
" Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright
diff --git a/runtime/spell/en.ascii.spl b/runtime/spell/en.ascii.spl
index c6ebea9..0715e55 100644
--- a/runtime/spell/en.ascii.spl
+++ b/runtime/spell/en.ascii.spl
Binary files differ
diff --git a/runtime/spell/en.latin1.spl b/runtime/spell/en.latin1.spl
index fe6b90e..6d4fe5f 100644
--- a/runtime/spell/en.latin1.spl
+++ b/runtime/spell/en.latin1.spl
Binary files differ
diff --git a/runtime/spell/en.utf-8.spl b/runtime/spell/en.utf-8.spl
index 46ef9a5..d3cd823 100644
--- a/runtime/spell/en.utf-8.spl
+++ b/runtime/spell/en.utf-8.spl
Binary files differ
diff --git a/runtime/syntax/ruby.vim b/runtime/syntax/ruby.vim
index 0a00dfc..aba8697 100644
--- a/runtime/syntax/ruby.vim
+++ b/runtime/syntax/ruby.vim
@@ -79,10 +79,10 @@
syn match rubyBlockParameter "\%(\%(\<do\>\|{\)\s*\)\@<=|\s*\zs[( ,a-zA-Z0-9_*)]\+\ze\s*|" display
syn match rubyPredefinedVariable #$[!$&"'*+,./0:;<=>?@\`~1-9]#
-syn match rubyPredefinedVariable "$_\>" display
-syn match rubyPredefinedVariable "$-[0FIKadilpvw]\>" display
-syn match rubyPredefinedVariable "$\%(deferr\|defout\|stderr\|stdin\|stdout\)\>" display
-syn match rubyPredefinedVariable "$\%(DEBUG\|FILENAME\|KCODE\|LOAD_PATH\|SAFE\|VERBOSE\)\>" display
+syn match rubyPredefinedVariable "$_\>" display
+syn match rubyPredefinedVariable "$-[0FIKadilpvw]\>" display
+syn match rubyPredefinedVariable "$\%(deferr\|defout\|stderr\|stdin\|stdout\)\>" display
+syn match rubyPredefinedVariable "$\%(DEBUG\|FILENAME\|KCODE\|LOADED_FEATURES\|LOAD_PATH\|PROGRAM_NAME\|SAFE\|VERBOSE\)\>" display
syn match rubyPredefinedConstant "\%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(MatchingData\|ARGF\|ARGV\|ENV\)\>\%(\s*(\)\@!"
syn match rubyPredefinedConstant "\%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(DATA\|FALSE\|NIL\|RUBY_PLATFORM\|RUBY_RELEASE_DATE\)\>\%(\s*(\)\@!"
syn match rubyPredefinedConstant "\%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(RUBY_VERSION\|STDERR\|STDIN\|STDOUT\|TOPLEVEL_BINDING\|TRUE\)\>\%(\s*(\)\@!"
@@ -166,8 +166,8 @@
syn region rubyNoDoBlock matchgroup=rubyControl start="\<\%(case\|begin\)\>" start="\%(^\|\.\.\.\=\|[,;=([<>~\*/%!&^|+-]\)\s*\zs\%(if\|unless\)\>" end="\<end\>" contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo fold
" statement with optional *do*
- syn region rubyOptDoLine matchgroup=rubyControl start="\<for\>" start="\%(\%(^\|\.\.\.\=\|[,;=([<>~\*/%!&^|+-]\)\s*\)\@<=\<\%(until\|while\)\>" end="\%(\<do\>\|:\)" end="\ze\%(;\|$\)" oneline contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo
- syn region rubyOptDoBlock start="\<for\>" start="\%(\%(^\|\.\.\.\=\|[,;=([<>~\*/%!&^|+-]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyControl end="\<end\>" contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo nextgroup=rubyOptDoLine fold
+ syn region rubyOptDoLine matchgroup=rubyControl start="\<for\>" start="\%(\%(^\|\.\.\.\=\|[?:,;=([<>~\*/%!&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" end="\%(\<do\>\|:\)" end="\ze\%(;\|$\)" oneline contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo
+ syn region rubyOptDoBlock start="\<for\>" start="\%(\%(^\|\.\.\.\=\|[:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyControl end="\<end\>" contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo nextgroup=rubyOptDoLine fold
if !exists("ruby_minlines")
let ruby_minlines = 50
@@ -196,7 +196,7 @@
if !exists("ruby_no_special_methods")
syn keyword rubyAccess public protected private
syn keyword rubyAttribute attr attr_accessor attr_reader attr_writer
- syn keyword rubyControl abort at_exit exit fork loop trap
+ syn match rubyControl "\<\%(exit!\|\%(abort\|at_exit\|exit\|fork\|loop\|trap\)\>\)"
syn keyword rubyEval eval class_eval instance_eval module_eval
syn keyword rubyException raise fail catch throw
syn keyword rubyInclude autoload extend include load require