0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

updated for version 7.0150

This commit is contained in:
Bram Moolenaar 2005-09-25 22:16:38 +00:00
parent bfd8fc0529
commit 1e01546026
38 changed files with 1826 additions and 1496 deletions

View File

@ -1,7 +1,7 @@
" Vim completion script " Vim completion script
" Language: CSS 2.1 " Language: CSS 2.1
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl ) " Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
" Last Change: 2005 Sep 19 " Last Change: 2005 Sep 23
function! csscomplete#CompleteCSS(findstart, base) function! csscomplete#CompleteCSS(findstart, base)
if a:findstart if a:findstart
@ -18,6 +18,8 @@ else
" 3. if } we are outside of css definitions " 3. if } we are outside of css definitions
" 4. for comments ignoring is be the easiest but assume they are the same " 4. for comments ignoring is be the easiest but assume they are the same
" as 1. " as 1.
" 5. if @ complete at-rule
" 6. if ! complete important
let line = a:base let line = a:base
let res = [] let res = []
@ -26,14 +28,16 @@ else
" We need the last occurrence of char so reverse line " We need the last occurrence of char so reverse line
let revline = join(reverse(split(line, '.\zs')), '') let revline = join(reverse(split(line, '.\zs')), '')
let openbrace = stridx(revline, '{') let openbrace = stridx(revline, '{')
let closebrace = stridx(revline, '}') let closebrace = stridx(revline, '}')
let colon = stridx(revline, ':') let colon = stridx(revline, ':')
let semicolon = stridx(revline, ';') let semicolon = stridx(revline, ';')
let opencomm = stridx(revline, '*/') " Line was reversed let opencomm = stridx(revline, '*/') " Line was reversed
let closecomm = stridx(revline, '/*') " Line was reversed let closecomm = stridx(revline, '/*') " Line was reversed
let style = stridx(revline, '=\s*elyts') " Line was reversed let style = stridx(revline, '=\s*elyts') " Line was reversed
let atrule = stridx(revline, '@') let atrule = stridx(revline, '@')
let exclam = stridx(revline, '!')
if openbrace > -1 if openbrace > -1
let borders[openbrace] = "openbrace" let borders[openbrace] = "openbrace"
@ -59,6 +63,9 @@ else
if atrule > -1 if atrule > -1
let borders[atrule] = "atrule" let borders[atrule] = "atrule"
endif endif
if exclam > -1
let borders[exclam] = "exclam"
endif
if len(borders) == 0 || borders[min(keys(borders))] =~ '^\(openbrace\|semicolon\|opencomm\|closecomm\|style\)$' if len(borders) == 0 || borders[min(keys(borders))] =~ '^\(openbrace\|semicolon\|opencomm\|closecomm\|style\)$'
" Complete properties " Complete properties
@ -318,6 +325,22 @@ else
return [] 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' elseif borders[min(keys(borders))] == 'atrule'
let afterat = matchstr(line, '.*@\zs.*') let afterat = matchstr(line, '.*@\zs.*')
@ -368,7 +391,7 @@ else
endif endif
let values = ["charset", "page", "media", "import"] let values = ["charset", "page", "media", "import", "font-face"]
let atrulebase = matchstr(line, '.*@\ze[a-zA-Z -]*$') let atrulebase = matchstr(line, '.*@\ze[a-zA-Z -]*$')
let entered_atrule = matchstr(line, '.*@\zs[a-zA-Z-]*$') let entered_atrule = matchstr(line, '.*@\zs[a-zA-Z-]*$')

View File

@ -1,7 +1,7 @@
" Vim completion script " Vim completion script
" Language: XHTML 1.0 Strict " Language: XHTML 1.0 Strict
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl ) " Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
" Last Change: 2005 Sep 19 " Last Change: 2005 Sep 23
function! htmlcomplete#CompleteTags(findstart, base) function! htmlcomplete#CompleteTags(findstart, base)
if a:findstart if a:findstart
@ -66,8 +66,13 @@ function! htmlcomplete#CompleteTags(findstart, base)
" it possible? " it possible?
" Also retrieving class names from current file and linked " Also retrieving class names from current file and linked
" stylesheets. " stylesheets.
if a:base =~ "\\(on[a-z]*\\|style\\|class\\)\\s*=\\s*[\"']" if a:base =~ "\\(on[a-z]*\\|id\\|style\\|class\\)\\s*=\\s*[\"']"
if a:base =~ "class\\s*=\\s*[\"'][a-zA-Z0-9_ -]*$" 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 " Handle class name completion
" 1. Find lines of <link stylesheet> " 1. Find lines of <link stylesheet>
" 1a. Check file for @import " 1a. Check file for @import
@ -76,9 +81,22 @@ function! htmlcomplete#CompleteTags(findstart, base)
let head = getline(search('<head\>'), search('<\/head>')) let head = getline(search('<head\>'), search('<\/head>'))
let headjoined = join(copy(head), ' ') let headjoined = join(copy(head), ' ')
if headjoined =~ '<style' if headjoined =~ '<style'
let stylehead = substitute(headjoined, '+>\*[', ' ', 'g') let stylehead = substitute(headjoined, '+>\*[,', ' ', 'g')
let styleheadlines = split(stylehead) if search_for == 'class'
let headclasslines = filter(copy(styleheadlines), "v:val =~ '\\([a-zA-Z0-9:]\\+\\)\\?\\.[a-zA-Z0-9_-]\\+'") 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 let internal = 1
else else
let internal = 0 let internal = 0
@ -93,13 +111,15 @@ function! htmlcomplete#CompleteTags(findstart, base)
let styletable += [matchstr(line, "href\\s*=\\s*[\"']\\zs\\f\\+\\ze")] let styletable += [matchstr(line, "href\\s*=\\s*[\"']\\zs\\f\\+\\ze")]
endif endif
endfor endfor
for file in filestable for file in styletable
if filereadable(file) if filereadable(file)
let stylesheet = readfile(file) let stylesheet = readfile(file)
let secimport = filter(copy(stylesheet), "v:val =~ '@import'") let secimport = filter(copy(stylesheet), "v:val =~ '@import'")
if len(secimport) > 0 if len(secimport) > 0
for line in secimport 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 endfor
endif endif
endif endif
@ -109,10 +129,24 @@ function! htmlcomplete#CompleteTags(findstart, base)
for file in cssfiles for file in cssfiles
if filereadable(file) if filereadable(file)
let stylesheet = readfile(file) let stylesheet = readfile(file)
let stylefile = join(stylesheet) let stylefile = join(stylesheet, ' ')
let stylefile = substitute(stylefile, '+>\*[', ' ', 'g') let stylefile = substitute(stylefile, '+>\*[,', ' ', 'g')
let stylesheet = split(stylefile) if search_for == 'class'
let classlines = filter(copy(stylesheet), "v:val =~ '\\([a-zA-Z0-9:]\\+\\)\\?\\.[a-zA-Z0-9_-]\\+'") 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 endif
" We gathered classes definitions from all external files " We gathered classes definitions from all external files
let classes += classlines let classes += classlines
@ -120,43 +154,71 @@ function! htmlcomplete#CompleteTags(findstart, base)
if internal == 1 if internal == 1
let classes += headclasslines let classes += headclasslines
endif endif
let elements = {}
for element in classes if search_for == 'class'
if element =~ '^\.' let elements = {}
let class = matchstr(element, '^\.\zs[a-zA-Z][a-zA-Z0-9_-]*\ze') for element in classes
let class = substitute(class, ':.*', '', '') if element =~ '^\.'
if has_key(elements, "common") let class = matchstr(element, '^\.\zs[a-zA-Z][a-zA-Z0-9_-]*\ze')
let elements["common"] .= " ".class let class = substitute(class, ':.*', '', '')
else if has_key(elements, 'common')
let elements["common"] = 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 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 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 []
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
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 endif
" We need special version of sbase " We need special version of sbase
let classbase = matchstr(a:base, ".*[\"']") let classbase = matchstr(a:base, ".*[\"']")
let classquote = matchstr(classbase, '.$') let classquote = matchstr(classbase, '.$')
let entered_class = matchstr(attr, ".*=\\s*[\"']\\zs.*") let entered_class = matchstr(attr, ".*=\\s*[\"']\\zs.*")
@ -229,6 +291,10 @@ function! htmlcomplete#CompleteTags(findstart, base)
let values = ["text", "password", "checkbox", "radio", "submit", "reset", "file", "hidden", "image", "button"] let values = ["text", "password", "checkbox", "radio", "submit", "reset", "file", "hidden", "image", "button"]
elseif a:base =~ '^button' elseif a:base =~ '^button'
let values = ["button", "submit", "reset"] let values = ["button", "submit", "reset"]
elseif a:base =~ '^style'
let values = ["text/css"]
elseif a:base =~ '^script'
let values = ["text/javascript"]
endif endif
else else
return [] return []
@ -313,11 +379,11 @@ function! htmlcomplete#CompleteTags(findstart, base)
elseif tag == 'q' elseif tag == 'q'
let attrs = coreattrs + ["cite"] let attrs = coreattrs + ["cite"]
elseif tag == 'script' 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' elseif tag == 'select'
let attrs = coreattrs + ["name", "size", "multiple", "disabled", "tabindex", "onfocus", "onblur", "onchange"] let attrs = coreattrs + ["name", "size", "multiple", "disabled", "tabindex", "onfocus", "onblur", "onchange"]
elseif tag == 'style' 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' elseif tag == 'table'
let attrs = coreattrs + ["summary", "width", "border", "frame", "rules", "cellspacing", "cellpadding"] let attrs = coreattrs + ["summary", "width", "border", "frame", "rules", "cellspacing", "cellpadding"]
elseif tag =~ '^\(thead\|tfoot\|tbody\|tr\)$' elseif tag =~ '^\(thead\|tfoot\|tbody\|tr\)$'

View File

@ -1,7 +1,6 @@
" netrw.vim: Handles file transfer and remote directory listing across a network " netrw.vim: Handles file transfer and remote directory listing across a network
" AUTOLOAD PORTION " AUTOLOAD PORTION
" Date: Sep 12, 2005 " Last Change: Aug 29, 2005
" Version: 70
" Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz> " Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
" GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
" Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1 " 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 " But be doers of the Word, and not only hearers, deluding your own selves {{{1
" (James 1:22 RSV) " (James 1:22 RSV)
" =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- " =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
let s:keepcpo= &cpo
" Exception for &cp: {{{1 set cpo&vim
if &cp " call Decho("doing autoload/netrw.vim")
finish
endif
if v:version < 700 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 echohl WarningMsg | echo "***netrw*** you need vim version 7.0 or later for version ".g:loaded_netrw." of netrw" | echohl None
finish finish
endif 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 " Default values for global netrw variables {{{1
@ -1133,7 +1126,7 @@ fun! s:NetBrowse(dirname)
" call Decho("new path<".path.">") " call Decho("new path<".path.">")
" remote-read the requested file into current buffer " remote-read the requested file into current buffer
keepjumps keepalt enew! enew!
set ma set ma
" call Decho("exe file .method."://".user.machine."/".escape(path,s:netrw_cd_escape)) " call Decho("exe file .method."://".user.machine."/".escape(path,s:netrw_cd_escape))
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 @@ fun! s:NetBrowse(dirname)
keepjumps 1d keepjumps 1d
" save certain window-oriented variables into buffer-oriented variables " save certain window-oriented variables into buffer-oriented variables
call s:SetBufWinVars() call s:BufWinVars()
call s:NetOptionRestore() call s:NetOptionRestore()
setlocal nomod setlocal nomod
@ -1169,7 +1162,7 @@ fun! s:NetBrowse(dirname)
endif endif
else else
" call Decho("generate a new buffer") " call Decho("generate a new buffer")
keepjumps keepalt enew! enew!
endif endif
" rename file to reflect where its from " rename file to reflect where its from
@ -1207,7 +1200,7 @@ fun! s:NetBrowse(dirname)
nnoremap <buffer> <silent> U :<c-u>call <SID>NetBookmarkDir(5,expand("%"))<cr> nnoremap <buffer> <silent> U :<c-u>call <SID>NetBookmarkDir(5,expand("%"))<cr>
nnoremap <buffer> <silent> v :call <SID>NetSplit(1)<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> 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 'nnoremap <buffer> <silent> <del> :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>'
exe 'vnoremap <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>' exe 'nnoremap <buffer> <silent> d :call <SID>NetMakeDir("'.user.machine.'")<cr>'
@ -1267,7 +1260,6 @@ fun! s:NetBrowse(dirname)
if g:netrw_ftp_browse_reject != "" if g:netrw_ftp_browse_reject != ""
exe "silent! g/".g:netrw_ftp_browse_reject."/keepjumps d" exe "silent! g/".g:netrw_ftp_browse_reject."/keepjumps d"
endif endif
silent! keepjumps %s/\r$//e
" if there's no ../ listed, then put ./ and ../ in " if there's no ../ listed, then put ./ and ../ in
let line1= line(".") let line1= line(".")
@ -1282,9 +1274,9 @@ fun! s:NetBrowse(dirname)
keepjumps norm! 0 keepjumps norm! 0
" more cleanup " more cleanup
exe 'silent! keepjumps '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e' exe 'keepjumps silent! '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e'
exe "silent! keepjumps ".w:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#e' exe "keepjumps silent! ".w:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#e'
exe "silent! keepjumps ".w:netrw_bannercnt.',$g/ -> /s# -> .*$#/#e' exe "keepjumps silent! ".w:netrw_bannercnt.',$g/ -> /s# -> .*$#/#e'
endif endif
else else
@ -1341,33 +1333,33 @@ fun! s:NetBrowse(dirname)
keepjumps norm! 0 keepjumps norm! 0
endif endif
exe 'silent keepjumps '.w:netrw_bannercnt.',$s/ -> .*$//e' exe 'keepjumps silent '.w:netrw_bannercnt.',$s/ -> .*$//e'
exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2\t\1/e' exe 'keepjumps silent '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2\t\1/e'
exe 'silent keepjumps '.w:netrw_bannercnt exe w:netrw_bannercnt
endif endif
if line("$") >= w:netrw_bannercnt if line("$") >= w:netrw_bannercnt
if g:netrw_sort_by =~ "^n" if g:netrw_sort_by =~ "^n"
call s:SetSort() call s:SetSort()
if g:netrw_sort_direction =~ 'n' if g:netrw_sort_direction =~ 'n'
exe 'silent keepjumps '.w:netrw_bannercnt.',$sort' exe 'keepjumps silent '.w:netrw_bannercnt.',$sort'
else else
exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!' exe 'keepjumps silent '.w:netrw_bannercnt.',$sort!'
endif endif
exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}\///e' exe 'keepjumps silent '.w:netrw_bannercnt.',$s/^\d\{3}\///e'
endif endif
if w:netrw_longlist == 1 if w:netrw_longlist == 1
" shorten the list to keep its width <= winwidth characters " 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 endif
endif endif
" cleanup any windows mess at end-of-line
keepjumps silent! %s/\r$//e
call s:NetrwWideListing() call s:NetrwWideListing()
if line("$") >= w:netrw_bannercnt if line("$") >= w:netrw_bannercnt
" place cursor on the top-left corner of the file listing
exe "keepjumps ".w:netrw_bannercnt exe "keepjumps ".w:netrw_bannercnt
norm! 0
endif endif
call s:NetOptionRestore() call s:NetOptionRestore()
@ -1457,7 +1449,7 @@ fun! s:NetGetWord()
let s:netrw_skipbrowse= 1 let s:netrw_skipbrowse= 1
echo 'Pressing "a" also works' echo 'Pressing "a" also works'
elseif line("$") > w:netrw_bannercnt elseif line("$") > w:netrw_bannercnt
exe 'silent keepjumps '.w:netrw_bannercnt exe w:netrw_bannercnt
endif endif
elseif w:netrw_longlist == 0 elseif w:netrw_longlist == 0
@ -1698,7 +1690,7 @@ fun! s:NetBrowseX(fname,remote)
" create a local copy " create a local copy
let fname= tempname().".".exten let fname= tempname().".".exten
" call Decho("create a local copy of <".a:fname."> as <".fname.">") " 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 set bh=delete
exe "w! ".fname exe "w! ".fname
q q
@ -1823,14 +1815,14 @@ fun! s:NetBrowseFtpCmd(path,cmd)
" cleanup for Windows " cleanup for Windows
if has("win32") || has("win95") || has("win64") || has("win16") if has("win32") || has("win95") || has("win64") || has("win16")
silent! keepjumps! %s/\r$//e keepjumps silent!! %s/\r$//e
endif endif
if a:cmd == "dir" if a:cmd == "dir"
" infer directory/link based on the file permission string " infer directory/link based on the file permission string
silent! keepjumps g/d\%([-r][-w][-x]\)\{3}/s@$@/@ keepjumps silent! g/d\%([-r][-w][-x]\)\{3}/s@$@/@
silent! keepjumps g/l\%([-r][-w][-x]\)\{3}/s/$/@/ keepjumps silent! g/l\%([-r][-w][-x]\)\{3}/s/$/@/
if w:netrw_longlist == 0 || w:netrw_longlist == 2 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
endif endif
@ -1868,9 +1860,9 @@ fun! s:NetrwListHide()
" Prune the list by hiding any files which match " Prune the list by hiding any files which match
" call Decho("pruning <".hide."> listhide<".listhide.">") " call Decho("pruning <".hide."> listhide<".listhide.">")
if g:netrw_hide == 1 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 elseif g:netrw_hide == 2
exe 'silent keepjumps '.w:netrw_bannercnt.',$v~'.hide.'~d' exe 'keepjumps silent '.w:netrw_bannercnt.',$v~'.hide.'~d'
endif endif
endwhile endwhile
@ -2004,7 +1996,7 @@ fun! s:NetrwWideListing()
exe "silent keepjumps norm! 0\<c-v>".newcolqty.'j$hx'.w:netrw_bannercnt.'G$p' exe "silent keepjumps norm! 0\<c-v>".newcolqty.'j$hx'.w:netrw_bannercnt.'G$p'
endif endif
exe "silent keepjumps ".newcolstart.','.newcolend.'d' exe "silent keepjumps ".newcolstart.','.newcolend.'d'
exe 'silent keepjumps '.w:netrw_bannercnt exe w:netrw_bannercnt
endwhile endwhile
exe "silent keepjumps ".w:netrw_bannercnt.',$s/\s\+$//e' exe "silent keepjumps ".w:netrw_bannercnt.',$s/\s\+$//e'
set noma nomod set noma nomod
@ -2138,7 +2130,7 @@ fun! s:NetBookmarkDir(chg,curdir)
if exists("w:netrw_bannercnt") && line(".") <= w:netrw_bannercnt if exists("w:netrw_bannercnt") && line(".") <= w:netrw_bannercnt
" looks like a "b" was pressed while in the banner region " looks like a "b" was pressed while in the banner region
if line("$") > w:netrw_bannercnt if line("$") > w:netrw_bannercnt
exe 'silent keepjumps '.w:netrw_bannercnt exe w:netrw_bannercnt
endif endif
echo "" echo ""
" call Dret("NetBookmarkDir - ignoring") " call Dret("NetBookmarkDir - ignoring")
@ -2237,10 +2229,12 @@ endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" NetObtain: obtain file under cursor (for remote browsing support) {{{2 " NetObtain: obtain file under cursor (for remote browsing support) {{{2
fun! s:NetObtain() fun! s:NetObtain()
if !exists("s:netrw_users_stl")
let s:netrw_users_stl= &stl
endif
let fname= expand("<cWORD>") let fname= expand("<cWORD>")
exe 'set stl=%f\ %h%m%r%=Obtaining\ '.escape(fname,' ')
" NetrwStatusLine support - for obtaining support redraw!
call s:SetupNetrwStatusLine('%f %h%m%r%=%9*Obtaining '.fname)
" call Dfunc("NetObtain() method=".w:netrw_method) " call Dfunc("NetObtain() method=".w:netrw_method)
if exists("w:netrw_method") && w:netrw_method =~ '[235]' if exists("w:netrw_method") && w:netrw_method =~ '[235]'
@ -2318,8 +2312,6 @@ fun! s:NetObtain()
echohl Error | echo "***netrw*** this system doesn't support ftp" | echohl None echohl Error | echo "***netrw*** this system doesn't support ftp" | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore() call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif endif
let &stl = s:netrw_users_stl
let &laststatus = s:netrw_users_ls
" call Dret("NetObtain") " call Dret("NetObtain")
return return
endif endif
@ -2343,8 +2335,7 @@ fun! s:NetObtain()
endif endif
" restore status line " restore status line
let &stl = s:netrw_users_stl let &stl= s:netrw_users_stl
let &laststatus = s:netrw_users_ls
redraw! redraw!
" call Dret("NetObtain") " call Dret("NetObtain")
@ -2413,7 +2404,7 @@ fun! netrw#DirBrowse(dirname)
" get cleared buffer " get cleared buffer
if bufnum < 0 || !bufexists(bufnum) if bufnum < 0 || !bufexists(bufnum)
keepjumps keepalt enew! keepalt enew!
" call Decho("enew buffer") " call Decho("enew buffer")
else else
exe "keepalt b ".bufnum exe "keepalt b ".bufnum
@ -2505,7 +2496,7 @@ fun! netrw#DirBrowse(dirname)
nnoremap <buffer> <silent> U :<c-u>call <SID>NetBookmarkDir(5,expand("%"))<cr> nnoremap <buffer> <silent> U :<c-u>call <SID>NetBookmarkDir(5,expand("%"))<cr>
nnoremap <buffer> <silent> v :call <SID>NetSplit(3)<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> 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-up> :Pexplore<cr>
nnoremap <buffer> <silent> <s-down> :Nexplore<cr> nnoremap <buffer> <silent> <s-down> :Nexplore<cr>
exe 'nnoremap <buffer> <silent> <del> :call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>' exe 'nnoremap <buffer> <silent> <del> :call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>'
@ -2583,19 +2574,19 @@ fun! netrw#DirBrowse(dirname)
call s:SetSort() call s:SetSort()
if g:netrw_sort_direction =~ 'n' if g:netrw_sort_direction =~ 'n'
exe 'silent keepjumps '.w:netrw_bannercnt.',$sort' exe 'keepjumps silent '.w:netrw_bannercnt.',$sort'
else else
exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!' exe 'keepjumps silent '.w:netrw_bannercnt.',$sort!'
endif endif
exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}\///e' exe 'keepjumps silent '.w:netrw_bannercnt.',$s/^\d\{3}\///e'
else else
if g:netrw_sort_direction =~ 'n' if g:netrw_sort_direction =~ 'n'
exe 'silent keepjumps '.w:netrw_bannercnt.',$sort' exe 'keepjumps silent '.w:netrw_bannercnt.',$sort'
else else
exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!' exe 'keepjumps silent '.w:netrw_bannercnt.',$sort!'
endif endif
exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{-}\///e' exe 'keepjumps silent '.w:netrw_bannercnt.',$s/^\d\{-}\///e'
endif endif
endif endif
@ -2603,16 +2594,14 @@ fun! netrw#DirBrowse(dirname)
call s:NetrwWideListing() call s:NetrwWideListing()
if exists("w:netrw_bannercnt") && line("$") > w:netrw_bannercnt if exists("w:netrw_bannercnt") && line("$") > w:netrw_bannercnt
" place cursor on the top-left corner of the file listing exe w:netrw_bannercnt
exe 'silent '.w:netrw_bannercnt
norm! 0
endif endif
" record previous current directory " record previous current directory
let w:netrw_prvdir= b:netrw_curdir let w:netrw_prvdir= b:netrw_curdir
" save certain window-oriented variables into buffer-oriented variables " save certain window-oriented variables into buffer-oriented variables
call s:SetBufWinVars() call s:BufWinVars()
call s:NetOptionRestore() call s:NetOptionRestore()
setlocal noma nomod nonu bh=hide nobl setlocal noma nomod nonu bh=hide nobl
@ -2712,7 +2701,7 @@ fun! s:LocalBrowseList()
endwhile endwhile
" cleanup any windows mess at end-of-line " cleanup any windows mess at end-of-line
silent! keepjumps %s/\r$//e keepjumps silent! %s/\r$//e
setlocal ts=32 setlocal ts=32
" call Dret("LocalBrowseList") " call Dret("LocalBrowseList")
@ -3043,8 +3032,12 @@ fun! netrw#Explore(indx,dosplit,style,...)
endif endif
endif endif
" NetrwStatusLine support - for exploring support " NetrwStatusLine support
let w:netrw_explore_indx= indx 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) " call Decho("explorelist<".join(w:netrw_explore_list,',')."> len=".w:netrw_explore_listlen)
" sanity check " sanity check
@ -3057,21 +3050,15 @@ fun! netrw#Explore(indx,dosplit,style,...)
endif endif
exe "let dirfile= w:netrw_explore_list[".indx."]" 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') let newdir= substitute(dirfile,'/[^/]*$','','e')
" call Decho("newdir<".newdir.">") " call Decho("newdir<".newdir.">")
" call Decho("calling LocalBrowse(newdir<".newdir.">)") " call Decho("calling LocalBrowse(newdir<".newdir.">)")
call s:LocalBrowse(newdir) call s:LocalBrowse(newdir)
if w:netrw_longlist == 0 || w:netrw_longlist == 1 call search(substitute(dirfile,"^.*/","",""),"W")
call search('^'.substitute(dirfile,"^.*/","","").'\>',"W")
else
call search('\<'.substitute(dirfile,"^.*/","","").'\>',"w")
endif
let w:netrw_explore_mtchcnt = indx + 1 let w:netrw_explore_mtchcnt = indx + 1
let w:netrw_explore_bufnr = bufnr(".") let w:netrw_explore_bufnr = bufnr(".")
let w:netrw_explore_line = line(".") 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) " call Decho("explore: mtchcnt=".w:netrw_explore_mtchcnt." bufnr=".w:netrw_explore_bufnr." line#".w:netrw_explore_line)
else else
@ -3090,74 +3077,13 @@ fun! netrw#Explore(indx,dosplit,style,...)
" call Dret("Explore") " call Dret("Explore")
endfun 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 " NetrwStatusLine: {{{2
fun! NetrwStatusLine() fun! NetrwStatusLine()
" let g:stlmsg= "Xbufnr=".w:netrw_explore_bufnr." bufnr=".bufnr(".")." Xline#".w:netrw_explore_line." line#".line(".")
" 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 ^^^
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") 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 " restore user's status line
let &stl = s:netrw_users_stl let &stl= s:netrw_users_stl
let &laststatus = s:netrw_users_ls
if exists("w:netrw_explore_bufnr")|unlet w:netrw_explore_bufnr|endif if exists("w:netrw_explore_bufnr")|unlet w:netrw_explore_bufnr|endif
if exists("w:netrw_explore_line")|unlet w:netrw_explore_line|endif if exists("w:netrw_explore_line")|unlet w:netrw_explore_line|endif
return "" return ""
@ -3410,12 +3336,6 @@ fun! NetUserPass(...)
" call Decho("a:0=".a:0." case >1: a:2<".a:2.">") " call Decho("a:0=".a:0." case >1: a:2<".a:2.">")
let g:netrw_passwd=a:2 let g:netrw_passwd=a:2
endif 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") " call Dret("NetUserPass")
endfun endfun
@ -3472,21 +3392,22 @@ fun! s:NetOptionRestore()
endif endif
unlet w:netoptionsave unlet w:netoptionsave
if exists("w:aikeep")| let &ai= w:aikeep|endif let &ai = w:aikeep
if (has("netbeans_intg") || has("sun_workshop")) && exists("w:acdkeep") if has("netbeans_intg") || has("sun_workshop")
let &acd= w:acdkeep let &acd = w:acdkeep
unlet w:acdkeep
endif endif
if exists("w:cinkeep") |let &cin = w:cinkeep |unlet w:cinkeep |endif let &cin = w:cinkeep
if exists("w:cinokeep")|let &cino = w:cinokeep|unlet w:cinokeep|endif let &cino = w:cinokeep
if exists("w:comkeep") |let &com = w:comkeep |unlet w:comkeep |endif let &com = w:comkeep
if exists("w:cpokeep") |let &cpo = w:cpokeep |unlet w:cpokeep |endif let &cpo = w:cpokeep
if exists("w:dirkeep") |exe "lcd ".w:dirkeep |unlet w:dirkeep |endif if exists("w:dirkeep")
if exists("w:gdkeep") |let &gd = w:gdkeep |unlet w:gdkeep |endif exe "lcd ".w:dirkeep
if exists("w:repkeep") |let &report = w:repkeep |unlet w:repkeep |endif endif
if exists("w:twkeep") |let &tw = w:twkeep |unlet w:twkeep |endif let &gd = w:gdkeep
let &report = w:repkeep
let &tw = w:twkeep
if exists("w:swfkeep") if exists("w:swfkeep")
if &directory == "" && exists("w:swfkeep") if &directory == ""
" user hasn't specified a swapfile directory; " user hasn't specified a swapfile directory;
" netrw will temporarily make the swapfile " netrw will temporarily make the swapfile
" directory the current local one. " directory the current local one.
@ -3498,6 +3419,17 @@ fun! s:NetOptionRestore()
endif endif
unlet w:swfkeep unlet w:swfkeep
endif 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") " call Dret("NetOptionRestore")
endfun endfun
@ -3509,7 +3441,7 @@ endfun
" example and as a fix for a Windows 95 problem: in my " example and as a fix for a Windows 95 problem: in my
" experience, win95's ftp always dumped four blank lines " experience, win95's ftp always dumped four blank lines
" at the end of the transfer. " 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) fun! NetReadFixup(method, line1, line2)
" call Dfunc("NetReadFixup(method<".a:method."> line1=".a:line1." line2=".a:line2.")") " call Dfunc("NetReadFixup(method<".a:method."> line1=".a:line1." line2=".a:line2.")")
if method == 3 " ftp (no <.netrc>) if method == 3 " ftp (no <.netrc>)
@ -3610,14 +3542,14 @@ fun! s:SetSort()
return return
endif endif
if seq == '*' 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 else
exe 'silent keepjumps '.w:netrw_bannercnt.',$g/'.eseq.'/s/^/'.spriority.'/' exe 'keepjumps silent '.w:netrw_bannercnt.',$g/'.eseq.'/s/^/'.spriority.'/'
endif endif
let priority = priority + 1 let priority = priority + 1
endwhile 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") " call Dret("SetSort")
endfun endfun
@ -3655,14 +3587,14 @@ fun! s:CopyWinVars()
endfun 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 " To allow separate windows to have their own activities, such as
" Explore **/pattern, several variables have been made window-oriented. " Explore **/pattern, several variables have been made window-oriented.
" However, when the user splits a browser window (ex: ctrl-w s), these " 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. " UseBufWinVars() get around that.
fun! s:SetBufWinVars() fun! s:BufWinVars()
" call Dfunc("SetBufWinVars()") " call Dfunc("BufWinVars()")
if exists("w:netrw_longlist") |let b:netrw_longlist = w:netrw_longlist |endif 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_bannercnt") |let b:netrw_bannercnt = w:netrw_bannercnt |endif
if exists("w:netrw_method") |let b:netrw_method = w:netrw_method |endif if exists("w:netrw_method") |let b:netrw_method = w:netrw_method |endif
@ -3673,7 +3605,7 @@ fun! s:SetBufWinVars()
if exists("w:netrw_explore_bufnr") |let b:netrw_explore_bufnr = w:netrw_explore_bufnr |endif 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_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 if exists("w:netrw_explore_list") |let b:netrw_explore_list = w:netrw_explore_list |endif
" call Dret("SetBufWinVars") " call Dret("BufWinVars")
endfun endfun
" --------------------------------------------------------------------- " ---------------------------------------------------------------------

View File

@ -24,13 +24,22 @@ endif
let s:cpo_save = &cpo let s:cpo_save = &cpo
set cpo-=C 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, CompilerSet errorformat=
\%E%f:%l:\ %m, \eruby:\ %f:%l:%m,
\%-Z%p^, \%+E%f:%l:\ parse\ error,
\%C%m, \%W%f:%l:\ warning:\ %m,
\%-G%.%# \%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 let &cpo = s:cpo_save
unlet s:cpo_save unlet s:cpo_save

View File

@ -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 VIM REFERENCE MANUAL by Bram Moolenaar
@ -218,7 +218,7 @@ It is an error if there is no change for the cursor to move to.
============================================================================== ==============================================================================
4. Diff copying *copy-diffs* *E99* *E100* *E101* *E102* *E103* 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 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. that the buffers will be equal within the specified range.
@ -235,6 +235,8 @@ that the buffers will be equal within the specified range.
Modify another buffer to undo difference with the current Modify another buffer to undo difference with the current
buffer. Just like ":diffget" but the other buffer is modified buffer. Just like ":diffget" but the other buffer is modified
instead of the current one. 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]. See below for [range].
*do* *do*

View File

@ -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 VIM REFERENCE MANUAL by Bram Moolenaar
@ -2547,11 +2547,12 @@ getcmdpos() *getcmdpos()*
getcmdtype() *getcmdtype()* getcmdtype() *getcmdtype()*
Return the current command-line type. Possible return values Return the current command-line type. Possible return values
are: are:
/ Search forward command : normal Ex command
? Search backward command > debug mode command |debug-mode|
: Ex-command mode / forward search command
@ Input mode ? backward search command
> Debug mode @ |input()| command
- |:insert| or |:append| command
Only works when editing the command line, thus requires use of Only works when editing the command line, thus requires use of
|c_CTRL-\_e| or |c_CTRL-R_=|. Returns an empty string |c_CTRL-\_e| or |c_CTRL-R_=|. Returns an empty string
otherwise. otherwise.
@ -2939,8 +2940,8 @@ input({prompt} [, {text} [, {completion}]]) *input()*
: echo "Cheers!" : echo "Cheers!"
:endif :endif
< <
If the optional {text} is present, this is used for the If the optional {text} is present and not empty, this is used
default reply, as if the user typed this. Example: > for the default reply, as if the user typed this. Example: >
:let color = input("Color? ", "white") :let color = input("Color? ", "white")
< The optional {completion} argument specifies the type of < The optional {completion} argument specifies the type of
@ -4049,10 +4050,30 @@ soundfold({word})
the method can be quite slow. the method can be quite slow.
*spellbadword()* *spellbadword()*
spellbadword() Return the badly spelled word under or after the cursor. spellbadword([{sentence}])
The cursor is moved to the start of the bad word. Without argument: The result is the badly spelled word under
When no bad word is found in the cursor line an empty String or after the cursor. The cursor is moved to the start of the
is returned and the cursor doesn't move. 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()*
spellsuggest({word} [, {max}]) spellsuggest({word} [, {max}])

View File

@ -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 VIM REFERENCE MANUAL by Bram Moolenaar
@ -988,20 +988,35 @@ are included.
(X)HTML *ft-html-omni* (X)HTML *ft-html-omni*
When using after CTRL-X CTRL-O after "<" it is completed with tag name CTRL-X CTRL-O provides completion of various elements of (X)HTML files.
available in current context. Inside of tag completion aids to choose It is designed to support writing of XHTML 1.0 Strict files but will
proper attributes, and when possible choose appropriate attribute value also works for other versions of HTML. Features:
including class names for CSS styles.
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 File htmlcomplete.vim provides through |autoload| mechanism
GetLastOpenTag function which can be used in XML files to get name of 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") :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* 8. Insert mode commands *inserting*

View File

@ -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 VIM REFERENCE MANUAL by Bram Moolenaar
@ -306,11 +306,12 @@ If you type a space, then "foo" will get inserted, plus the space. If you
type "a", then "bar" will get inserted. type "a", then "bar" will get inserted.
{Vi does not allow ambiguous mappings} {Vi does not allow ambiguous mappings}
*map_CTRL_C* *map_CTRL-C*
It's not possible to use a CTRL-C in the {lhs}. You just can't map CTRL-C. Using CTRL-C in the {lhs} is possible, but it will only work when Vim is
The reason is that CTRL-C must always be available to break a running command. waiting for a key, not when Vim is busy with something. When Vim is busy
Exception: When using the GUI version on MS-Windows CTRL-C can be mapped to CTRL-C interrupts/breaks the command.
allow a Copy command to the clipboard. Use CTRL-Break to interrupt Vim. 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* *map_space_in_lhs*
To include a space in {lhs} precede it with a CTRL-V (type two CTRL-Vs for To include a space in {lhs} precede it with a CTRL-V (type two CTRL-Vs for

View File

@ -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 VIM REFERENCE MANUAL by Bram Moolenaar
@ -23,7 +23,7 @@ The number of remembered messages is fixed at 20.
*g<* *g<*
The "g<" command can be used to see the last page of previous command output. 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. prompt.
Note: when you stopped the output with "q" at the more prompt only up to that Note: when you stopped the output with "q" at the more prompt only up to that
point will be displayed. point will be displayed.
@ -813,4 +813,8 @@ Any other key causes the meaning of the keys to be displayed.
Note: The typed key is directly obtained from the terminal, it is not mapped Note: The typed key is directly obtained from the terminal, it is not mapped
and typeahead is ignored. 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: vim:tw=78:ts=8:ft=help:norl:

View File

@ -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 VIM REFERENCE MANUAL by Bram Moolenaar
@ -3647,9 +3647,11 @@ A jump table for the options with a short description can be found at |Q_op|.
Pattern to be used to find an include command. It is a search Pattern to be used to find an include command. It is a search
pattern, just like for the "/" command (See |pattern|). The default pattern, just like for the "/" command (See |pattern|). The default
value is for C programs. This option is used for the commands "[i", 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 "]I", "[d", etc.
name that comes after the matched pattern. See |option-backslash| Normally the 'isfname' option is used to recognize the file name that
about including spaces and backslashes. 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'*
'includeexpr' 'inex' string (default "") 'includeexpr' 'inex' string (default "")
@ -5160,6 +5162,9 @@ A jump table for the options with a short description can be found at |Q_op|.
Minimal number of lines to scroll when the cursor gets off the 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, screen (e.g., with "j"). Not used for scroll commands (e.g., CTRL-E,
CTRL-D). Useful if your terminal scrolls very slowly. 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. NOTE: This option is set to 1 when 'compatible' is set.
*'scrolloff'* *'so'* *'scrolloff'* *'so'*

View File

@ -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. VIM REFERENCE MANUAL by Charles E. Campbell, Jr.
@ -25,7 +25,7 @@
4. Transparent File Transfer............................|netrw-transparent| 4. Transparent File Transfer............................|netrw-transparent|
5. Ex Commands..........................................|netrw-ex| 5. Ex Commands..........................................|netrw-ex|
6. Variables and Options................................|netrw-var| 6. Variables and Options................................|netrw-var|
7. Directory Browsing...................................|netrw-browse| {{{1 7. Directory Browser....................................|netrw-browse| {{{1
Maps...............................................|netrw-maps| Maps...............................................|netrw-maps|
Exploring..........................................|netrw-explore-cmds| Exploring..........................................|netrw-explore-cmds|
Quick Reference Commands Table.....................|netrw-browse-cmds| Quick Reference Commands Table.....................|netrw-browse-cmds|
@ -40,7 +40,7 @@
Making A New Directory.............................|netrw-d| Making A New Directory.............................|netrw-d|
Deleting Files Or Directories......................|netrw-delete| Deleting Files Or Directories......................|netrw-delete|
Renaming Files Or Directories......................|netrw-move| 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| Edit File Or Directory Hiding List.................|netrw-h|
Browsing With A Horizontally Split Window..........|netrw-o| Browsing With A Horizontally Split Window..........|netrw-o|
Preview Window.....................................|netrw-p| Preview Window.....................................|netrw-p|
@ -194,8 +194,8 @@ file using root-relative paths, use the full path:
2. Network-Oriented File Transfer *netrw-xfer* 2. Network-Oriented File Transfer *netrw-xfer*
Network-oriented file transfer under Vim is implemented by a VimL-based script Network-oriented file transfer under Vim is implemented by a VimL-based script
(<netrw.vim>) using plugin techniques. It currently supports both reading and (<netrw.vim>) using plugin techniques. It currently supports both reading
writing across networks using rcp, scp, ftp or ftp+<.netrc>, scp, fetch, and writing across networks using rcp, scp, ftp or ftp+<.netrc>, scp, fetch,
dav/cadaver, rsync, or sftp. dav/cadaver, rsync, or sftp.
http is currently supported read-only via use of wget or fetch. http is currently supported read-only via use of wget or fetch.
@ -206,23 +206,24 @@ FileReadCmd, BufWriteCmd) to intercept reads/writes with url-like filenames. >
ex. vim ftp://hostname/path/to/file ex. vim ftp://hostname/path/to/file
< <
The characters preceding the colon specify the protocol to use; in the The characters preceding the colon specify the protocol to use;
example, its ftp. The <netrw.vim> script then formulates a command or a in the example, its ftp. The <netrw.vim> script then formulates
series of commands (typically ftp) which it issues to an external program a command or a series of commands (typically ftp) which it issues
(ftp, scp, etc) which does the actual file transfer/protocol. Files are read to an external program (ftp, scp, etc) which does the actual file
from/written to a temporary file (under Unix/Linux, /tmp/...) which the transfer/protocol. Files are read from/written to a temporary file
<netrw.vim> script will clean up. (under Unix/Linux, /tmp/...) which the <netrw.vim> script will
clean up.
One may modify any protocol's implementing external application by setting a One may modify any protocol's implementing external application
variable (ex. scp uses the variable g:netrw_scp_cmd, which is defaulted to by setting a variable (ex. scp uses the variable g:netrw_scp_cmd,
"scp -q"). which is defaulted to "scp -q").
Ftp, an old protocol, seems to be blessed by numerous implementations. Ftp, an old protocol, seems to be blessed by numerous implementations.
Unfortunately, some implementations are noisy (ie., add junk to the end of the Unfortunately, some implementations are noisy (ie., add junk to the end
file). Thus, concerned users may decide to write a NetReadFixup() function of the file). Thus, concerned users may decide to write a NetReadFixup()
that will clean up after reading with their ftp. Some Unix systems (ie., function that will clean up after reading with their ftp. Some Unix systems
FreeBSD) provide a utility called "fetch" which uses the ftp protocol but is (ie., FreeBSD) provide a utility called "fetch" which uses the ftp protocol
not noisy and more convenient, actually, for <netrw.vim> to use. 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 Consequently, if "fetch" is executable, it will be used to do reads for
ftp://... (and http://...) . See |netrw-var| for more about this. ftp://... (and http://...) . See |netrw-var| for more about this.
@ -331,9 +332,8 @@ The script attempts to get passwords for ftp invisibly using |inputsecret()|,
a built-in Vim function. See |netrw-uidpass| for how to change the password a built-in Vim function. See |netrw-uidpass| for how to change the password
after one has set it. after one has set it.
Unfortunately there doesn't appear to be a way for netrw to feed a password to Unfortunately there doesn't appear to be a way for netrw to feed a password
scp. Thus every transfer via scp will require re-entry of the password. to scp. Thus every transfer via scp will require re-entry of the password.
However, |netrw-listhack| can help with this problem.
============================================================================== ==============================================================================
@ -341,28 +341,21 @@ However, |netrw-listhack| can help with this problem.
Network-oriented file transfers are available by default whenever Network-oriented file transfers are available by default whenever
|'nocompatible'| mode is enabled. The <netrw.vim> file resides in your |'nocompatible'| mode is enabled. The <netrw.vim> file resides in your
system's vim-plugin directory and is sourced automatically whenever you bring system's vim-plugin directory and is sourced automatically whenever you
up vim. I suggest that, at a minimum, you have at least the following in your bring up vim.
<.vimrc> customization file: >
set nocp
if version >= 600
filetype plugin indent on
endif
<
============================================================================== ==============================================================================
4. Transparent File Transfer *netrw-transparent* 4. Transparent File Transfer *netrw-transparent*
Transparent file transfers occur whenever a regular file read or write Transparent file transfers occur whenever a regular file read or write
(invoked via an |:autocmd| for |BufReadCmd| or |BufWriteCmd| events) is made. (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 vim ftp://[user@]machine/path
... ...
:wq :wq
See |netrw-activate| for more on how to encourage your vim to use plugins
such as netrw.
============================================================================== ==============================================================================
5. Ex Commands *netrw-ex* 5. Ex Commands *netrw-ex*
@ -376,14 +369,15 @@ additional commands available.
:[range]Nw {netfile} [{netfile}]... :[range]Nw {netfile} [{netfile}]...
Write the specified lines to the {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 buffer from the file specified in
b:netrw_lastfile. b:netrw_lastfile.
:Nread {netfile} {netfile}... :Nread {netfile} {netfile}...
Read the {netfile} after the current line. Read the {netfile} after the current line.
*netrw-uidpass* *netrw-uidpass*
:call NetUserPass() :call NetUserPass()
If b:netrw_uid and b:netrw_passwd don't exist, If b:netrw_uid and b:netrw_passwd don't exist,
this function query the user for them. this function query the user for them.
@ -407,11 +401,10 @@ additional commands available.
The script <netrw.vim> uses several variables which can affect <netrw.vim>'s 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: behavior. These variables typically may be set in the user's <.vimrc> file:
(also see |netrw-settings|) > >
-------------
------------- Netrw Options
Netrw Options -------------
-------------
Option Meaning Option Meaning
-------------- ----------------------------------------------- -------------- -----------------------------------------------
< <
@ -434,7 +427,7 @@ behavior. These variables typically may be set in the user's <.vimrc> file:
g:netrw_silent =0 transfers done normally g:netrw_silent =0 transfers done normally
=1 transfers done silently =1 transfers done silently
g:netrw_uid Holds current user-id for ftp. g:netrw_uid Holds current user-id for ftp.
=1 use alternate ftp (user uid password) =1 use alternate ftp (user uid password)
(see |netrw-options|) (see |netrw-options|)
g:netrw_use_nt_rcp =0 don't use WinNT/2K/XP's rcp (default) g:netrw_use_nt_rcp =0 don't use WinNT/2K/XP's rcp (default)
=1 use WinNT/2K/XP's rcp, binary mode =1 use WinNT/2K/XP's rcp, binary mode
@ -488,12 +481,12 @@ variables listed below, and may be modified by the user.
------------------------------------------------------------------------- -------------------------------------------------------------------------
< <
*netrw-ftp* *netrw-ftp*
The first two options both help with certain ftp's that give trouble The first two options both help with certain ftp's that give trouble otherwise.
otherwise. In order to best understand how to use these options if ftp is In order to best understand how to use these options if ftp is giving you
giving you troubles, a bit of discussion follows on how netrw does ftp reads. 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 The g:netrw_..._cmd variables specify the external program to use handle
associated protocol (rcp, ftp, etc), plus any options. the associated protocol (rcp, ftp, etc), plus any options.
The g:netrw_list_cmd's HOSTNAME entry will be changed via substitution with The g:netrw_list_cmd's HOSTNAME entry will be changed via substitution with
whatever the current request is for a hostname. whatever the current request is for a hostname.
@ -526,8 +519,8 @@ userid and password. The transferred file is put into a temporary file.
The temporary file is then read into the main editing session window that The temporary file is then read into the main editing session window that
requested it and the temporary file deleted. requested it and the temporary file deleted.
If your ftp doesn't accept the "user" command and immediately just demands a If your ftp doesn't accept the "user" command and immediately just demands
userid, then try putting "let netrw_ftp=1" in your <.vimrc>. a userid, then try putting "let netrw_ftp=1" in your <.vimrc>.
*netrw-cadaver* *netrw-cadaver*
To handle the SSL certificate dialog for untrusted servers, one may pull To handle the SSL certificate dialog for untrusted servers, one may pull
@ -554,12 +547,12 @@ messages) you may write a NetReadFixup(tmpfile) function:
endif endif
endfunction endfunction
> >
The NetReadFixup() function will be called if it exists and thus allows you to The NetReadFixup() function will be called if it exists and thus allows
customize your reading process. As a further example, <netrw.vim> contains you to customize your reading process. As a further example, <netrw.vim>
just such a function to handle Windows 95 ftp. For whatever reason, Windows contains just such a function to handle Windows 95 ftp. For whatever
95's ftp dumps four blank lines at the end of a transfer, and so it is reason, Windows 95's ftp dumps four blank lines at the end of a transfer,
desirable to automate their removal. Here's some code taken from <netrw.vim> and so it is desirable to automate their removal. Here's some code taken
itself: from <netrw.vim> itself:
> >
if has("win95") && g:netrw_win95ftp if has("win95") && g:netrw_win95ftp
fun! NetReadFixup(method, line1, line2) fun! NetReadFixup(method, line1, line2)
@ -572,7 +565,7 @@ itself:
> >
============================================================================== ==============================================================================
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* MAPS *netrw-maps*
?................Help.......................................|netrw-help| ?................Help.......................................|netrw-help|
@ -739,7 +732,7 @@ NETRW BROWSER VARIABLES *netrw-browse-var*
INTRODUCTION TO DIRECTORY BROWSING *netrw-browse-intro* INTRODUCTION TO DIRECTORY BROWSING *netrw-browse-intro*
Netrw supports the browsing of directories on the local system and on remote 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 files therein, deleting files/directories, making new directories, and moving
(renaming) files and directories. The Netrw browser generally implements the (renaming) files and directories. The Netrw browser generally implements the
previous explorer maps and commands for remote directories, although details previous explorer maps and commands for remote directories, although details
@ -750,15 +743,13 @@ ftp. The protocol in the url, if it is ftp, will cause netrw to use ftp
in its remote browsing. Any other protocol will be used for file transfers, 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. 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: trailing slash and it will be interpreted as a request to list a directory:
vim [protocol]://[user@]hostname/path/ 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 directory listings, scp,
ssh interaction, etc, see |netrw-listhack|.
If you'd like to avoid entering the password in for remote directory listings
with ssh or scp, see |netrw-listhack|.
*netrw-explore* *netrw-pexplore* *netrw-explore* *netrw-pexplore*
*netrw-hexplore* *netrw-sexplore* *netrw-hexplore* *netrw-sexplore*
@ -792,8 +783,7 @@ By default, these commands use the current file's directory. However, one
may explicitly provide a directory (path) to use. may explicitly provide a directory (path) to use.
(Following needs v7.0 or later) *netrw-starstar* (Following needs v7.0 or later) *netrw-starstar*
When Explore, Sexplore, Hexplore, or Vexplore are used with a **, When Explore, Sexplore, Hexplore, or Vexplore are used like
such as:
> >
:Explore **/filename_pattern :Explore **/filename_pattern
< <
@ -807,8 +797,7 @@ The directory display is updated to show the subdirectory containing a
matching file. One may then proceed to the next (or previous) matching files' matching file. One may then proceed to the next (or previous) matching files'
directories by using Nexplore or Pexplore, respectively. If your console or directories by using Nexplore or Pexplore, respectively. If your console or
gui produces recognizable shift-up or shift-down sequences, then you'll likely 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 find the following mappings convenient:
netrw:
<s-down> == Nexplore, and <s-down> == Nexplore, and
<s-up> == Pexplore. <s-up> == Pexplore.
@ -833,12 +822,11 @@ refresh a local directory by using ":e .".
GOING UP *netrw--* 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. entry in the listing.
Netrw will use the command in |g:netrw_list_cmd| to perform the directory Netrw will modify the command in |g:netrw_list_cmd| to perform the directory
listing operation after changing HOSTNAME to the host specified by the listing operation. By default the command is:
user-provided url. By default netrw provides the command as:
ssh HOSTNAME ls -FLa ssh HOSTNAME ls -FLa
@ -855,33 +843,13 @@ Hitting the <cr> (the return key) will select the file or directory.
Directories will themselves be listed, and files will be opened using the Directories will themselves be listed, and files will be opened using the
protocol given in the original read request. 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.
OBTAINING A FILE *netrw-O* OBTAINING A FILE *netrw-O*
When browsing a remote directory, one may obtain a file under the cursor (ie. 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. 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 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 available for browsing, that shouldn't be a problem).
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|.
THIN, LONG, AND WIDE LISTINGS *netrw-i* THIN, LONG, AND WIDE LISTINGS *netrw-i*
@ -891,27 +859,21 @@ The "i" map cycles between the thin, long, and wide listing formats.
The short listing format gives just the files' and directories' names. 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 The long listing is either based on the "ls" command via ssh for remote
directories or displays the filename, file size (in bytes), and the time and directories or displays the filename, file size (in bytes), and the
date of last modification for local directories. With the long listing time and date of last modification for local directories.
format, netrw is not able to recognize filenames which have trailing spaces.
Use the thin listing format for such files.
The wide listing format has a multi-column display of the various files in the The wide listing format has a multi-column display of the various
netrw current directory, rather like the Unix "ls" presents. In this mode the files in the netrw current directory, rather like the Unix "ls" presents.
"b" and "B" maps are not available; instead, use Nb (|netrw-Nb|) and NB In this mode the "b" and "B" maps are not available; instead, use
(|netrw-NB|). The wide listing format uses two or more contiguous spaces to Nb (|netrw-Nb|) and NB (|netrw-NB|).
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.
MAKING A NEW DIRECTORY *netrw-d* MAKING A NEW DIRECTORY *netrw-d*
With the "d" map one may make a new directory either remotely (which depends With the "d" map one may make a new directory either remotely (which
on the global variable g:netrw_mkdir_cmd) or locally (which depends on the depends on the global variable g:netrw_mkdir_cmd) or locally (which depends on
global variable g:netrw_local_mkdir). Netrw will issue a request for the new the global variable g:netrw_local_mkdir). Netrw will issue a request for the
directory's name. A bare <CR> at that point will abort the making of 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 directory. Attempts to make a local directory that already exists (as either
a file or a directory) will be detected, reported on, and ignored. a file or a directory) will be detected, reported on, and ignored.
@ -919,12 +881,12 @@ a file or a directory) will be detected, reported on, and ignored.
DELETING FILES OR DIRECTORIES *netrw-delete* *netrw-D* DELETING FILES OR DIRECTORIES *netrw-delete* *netrw-D*
Deleting/removing files and directories involves moving the cursor to the Deleting/removing files and directories involves moving the cursor to the
file/directory to be deleted and pressing "D". Directories must be empty file/directory to be deleted and pressing "D". Directories must be empty first
first before they can be successfully removed. If the directory is a softlink before they can be successfully removed. If the directory is a softlink to a
to a directory, then netrw will make two requests to remove the directory directory, then netrw will make two requests to remove the directory before
before succeeding. Netrw will ask for confirmation before doing the succeeding. Netrw will ask for confirmation before doing the removal(s).
removal(s). You may select a range of lines with the "V" command (visual You may select a range of lines with the "V" command (visual selection),
selection), and then pressing "D". and then pressing "D".
The g:netrw_rm_cmd, g:netrw_rmf_cmd, and g:netrw_rmdir_cmd variables are used 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 to control the attempts to remove files and directories. The g:netrw_rm_cmd
@ -959,19 +921,19 @@ One may rename a block of files and directories by selecting them with
the V (|linewise-visual|). 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 Netrw's browsing facility allows one to use the hiding list in one of
ways: ignore it, hide files which match, and show only those files which three ways: ignore it, hide files which match, and show only those files
match. The "a" map allows the user to cycle about these three ways. 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. The g:netrw_list_hide variable holds a comma delimited list of patterns
\.obj) which specify the hiding list. (also see |netrw-h|) To set the hiding (ex. \.obj) which specify the hiding list. (also see |netrw-h|) To
list, use the <c-h> map. As an example, to hide files which begin with a ".", set the hiding list, use the <c-h> map. As an example, to hide files
one may use the <c-h> map to set the hiding list to '^\..*' (or one may put which begin with a ".", one may use the <c-h> map to set the hiding
let g:netrw_list_hide= '^\..*' in one's <.vimrc>). One may then use the "a" list to '^\..*' (or one may put let g:netrw_list_hide= '^\..*' in
key to show all files, hide matching files, or to show only the matching one's <.vimrc>). One may then use the "a" key to show all files,
files. hide matching files, or to show only the matching files.
EDIT FILE OR DIRECTORY HIDING LIST *netrw-h* *netrw-edithide* EDIT FILE OR DIRECTORY HIDING LIST *netrw-h* *netrw-edithide*
@ -979,8 +941,7 @@ EDIT FILE OR DIRECTORY HIDING LIST *netrw-h* *netrw-edithide*
The "<ctrl-h>" map brings up a requestor allowing the user to change the 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 file/directory hiding list. The hiding list consists of one or more patterns
delimited by commas. Files and/or directories satisfying these patterns will delimited by commas. Files and/or directories satisfying these patterns will
either be hidden (ie. not shown) or be the only ones displayed (see either be hidden (ie. not shown) or be the only ones displayed (see |netrw-a|).
|netrw-a|).
BROWSING WITH A HORIZONTALLY SPLIT WINDOW *netrw-o* *netrw-horiz* BROWSING WITH A HORIZONTALLY SPLIT WINDOW *netrw-o* *netrw-horiz*
@ -989,9 +950,9 @@ Normally one enters a file or directory using the <cr>. However, the "o" map
allows one to open a new window to hold the new directory listing or file. A 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|) horizontal split is used. (for vertical splitting, see |netrw-v|)
Normally, the o key splits the window horizontally with the new window and Normally, the o key splits the window horizontally with the new window
cursor at the top. To change to splitting the window horizontally with the and cursor at the top. To change to splitting the window horizontally
new window and cursor at the bottom, have with the new window and cursor at the bottom, have
let g:netrw_alto = 1 let g:netrw_alto = 1
@ -1000,30 +961,30 @@ in your <.vimrc>.
PREVIEW WINDOW *netrw-p* *netrw-preview* PREVIEW WINDOW *netrw-p* *netrw-preview*
One may use a preview window (currently only for local browsing) by using the One may use a preview window (currently only for local browsing) by using
"p" key when the cursor is atop the desired filename to be previewed. the "p" key when the cursor is atop the desired filename to be previewed.
SELECTING SORTING STYLE *netrw-s* *netrw-sort* SELECTING SORTING STYLE *netrw-s* *netrw-sort*
One may select the sorting style by name, time, or (file) size. The "s" map One may select the sorting style by name, time, or (file) size. The
allows one to circulate amongst the three choices; the directory listing will "s" map allows one to circulate amongst the three choices; the directory
automatically be refreshed to reflect the selected style. listing will automatically be refreshed to reflect the selected style.
EDITING THE SORTING SEQUENCE *netrw-S* *netrw-sortsequence* EDITING THE SORTING SEQUENCE *netrw-S* *netrw-sortsequence*
When "Sorted by" is name, one may specify priority via the sorting sequence When "Sorted by" is name, one may specify priority via the sorting
(g:netrw_sort_sequence). The sorting sequence typically prioritizes the sequence (g:netrw_sort_sequence). The sorting sequence typically
name-listing by suffix, although any pattern will do. Patterns are delimited prioritizes the name-listing by suffix, although any pattern will do.
by commas. The default sorting sequence is: Patterns are delimited by commas. The default sorting sequence is:
> >
[\/]$,*,\.bak$,\.o$,\.h$,\.info$,\.swp$,\.obj$ [\/]$,*,\.bak$,\.o$,\.h$,\.info$,\.swp$,\.obj$
< <
The lone * is where all filenames not covered by one of the other patterns The lone * is where all filenames not covered by one of the other
will end up. One may change the sorting sequence by modifying the patterns will end up. One may change the sorting sequence by modifying
g:netrw_sort_sequence variable (either manually or in your <.vimrc>) or by the g:netrw_sort_sequence variable (either manually or in your <.vimrc>)
using the "S" map. or by using the "S" map.
REVERSING SORTING ORDER *netrw-r* *netrw-reverse* REVERSING SORTING ORDER *netrw-r* *netrw-reverse*
@ -1050,20 +1011,20 @@ q map to list both the bookmarks and history. (see |netrw-q|)
BROWSING WITH A VERTICALLY SPLIT WINDOW *netrw-v* BROWSING WITH A VERTICALLY SPLIT WINDOW *netrw-v*
Normally one enters a file or directory using the <cr>. However, the "v" map Normally one enters a file or directory using the <cr>. However, the "v"
allows one to open a new window to hold the new directory listing or file. A map allows one to open a new window to hold the new directory listing or
vertical split is used. (for horizontal splitting, see |netrw-o|) 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 Normally, the v key splits the window vertically with the new window
cursor at the left. To change to splitting the window vertically with the new and cursor at the left. To change to splitting the window vertically
window and cursor at the right, have with the new window and cursor at the right, have
let g:netrw_altv = 1 let g:netrw_altv = 1
in your <.vimrc>. 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 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 other application, for example, on a file by hitting the "x" key. The special
@ -1075,9 +1036,9 @@ handler varies:
* otherwise the NetrwFileHandler plugin is used. * otherwise the NetrwFileHandler plugin is used.
The file's suffix is used by these various approaches to determine an The file's suffix is used by these various approaches to determine an
appropriate application to use to "handle" these files. Such things as appropriate application to use to "handle" these files. Such things
OpenOffice (*.sfx), visualization (*.jpg, *.gif, etc), and PostScript (*.ps, as OpenOffice (*.sfx), visualization (*.jpg, *.gif, etc), and PostScript
*.eps) can be handled. (*.ps, *.eps) can be handled.
The NetrwFileHandler applies a user-defined function to a file, based on its 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! extension. Of course, the handler function must exist for it to be called!
@ -1102,8 +1063,8 @@ g:netrw_keepdir to 0 (say, in your <.vimrc>) will tell netrw to have the
currently browsed directory be the current directory. currently browsed directory be the current directory.
With the default setting for g:netrw_keepdir, in order to make the two 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 directories the same, use the "c" map (just type c). That map will set
current directory to the current browsing directory. the current directory to the current browsing directory.
BOOKMARKING A DIRECTORY *netrw-b* *netrw-bookmark* *netrw-bookmarks* BOOKMARKING A DIRECTORY *netrw-b* *netrw-bookmark* *netrw-bookmarks*
@ -1126,8 +1087,8 @@ To change directory back to a bookmarked directory, use
{cnt}B {cnt}B
Any count may be used to reference any of the bookmarks. See |netrw-b| on Any count may be used to reference any of the bookmarks. See |netrw-b|
how to bookmark a directory and |netrw-q| on how to list bookmarks. 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; When wide listing is in use (see |netrw-i|), then the B map is not available;
instead, use {cnt}NB. instead, use {cnt}NB.
@ -1157,9 +1118,9 @@ NETRW SETTINGS *netrw-settings*
With the NetrwSettings.vim plugin, > With the NetrwSettings.vim plugin, >
:NetrwSettings :NetrwSettings
will bring up a window with the many variables that netrw uses for its 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. You may change any of their values; when you save the file,
settings therein will be used. One may also press "?" on any of the lines for the settings therein will be used. One may also press "?" on any of
help on what each of the variables do. the lines for help on what each of the variables do.
============================================================================== ==============================================================================
@ -1240,10 +1201,10 @@ which is loaded automatically at startup (assuming :set nocp).
1. Get the <Decho.vim> script, available as: 1. Get the <Decho.vim> script, available as:
http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_scripts http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_scripts
as "Decho, a vimL debugging aid" as "Decho, a vimL debugging aid"
or 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. and put it into your local plugin directory.
@ -1279,14 +1240,6 @@ which is loaded automatically at startup (assuming :set nocp).
============================================================================== ==============================================================================
10. History *netrw-history* 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 v66: * Netrw now seems to work with a few more Windows situations
* O now obtains a file: remote browsing file -> local copy, * O now obtains a file: remote browsing file -> local copy,
locally browsing file -> current directory (see :pwd) locally browsing file -> current directory (see :pwd)
@ -1443,7 +1396,7 @@ which is loaded automatically at startup (assuming :set nocp).
Vim editor by Bram Moolenaar (Thanks, Bram!) Vim editor by Bram Moolenaar (Thanks, Bram!)
dav support by C Campbell dav support by C Campbell
fetch support by Bram Moolenaar and 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> http support by Bram Moolenaar <bram@moolenaar.net>
rcp rcp
rsync support by C Campbell (suggested by Erik Warendorph) rsync support by C Campbell (suggested by Erik Warendorph)
@ -1453,13 +1406,11 @@ which is loaded automatically at startup (assuming :set nocp).
inputsecret(), BufReadCmd, BufWriteCmd contributed by C Campbell inputsecret(), BufReadCmd, BufWriteCmd contributed by C Campbell
Jérôme Augé -- also using new buffer method with ftp+.netrc Jérôme Augé -- also using new buffer method with ftp+.netrc
Bram Moolenaar -- obviously vim itself, :e and v:cmdarg use, Bram Moolenaar -- obviously vim itself, :e and v:cmdarg use, fetch,...
fetch,...
Yasuhiro Matsumoto -- pointing out undo+0r problem and a solution Yasuhiro Matsumoto -- pointing out undo+0r problem and a solution
Erik Warendorph -- for several suggestions (g:netrw_..._cmd Erik Warendorph -- for several suggestions (g:netrw_..._cmd
variables, rsync etc) variables, rsync etc)
Doug Claar -- modifications to test for success with ftp Doug Claar -- modifications to test for success with ftp operation
operation
============================================================================== ==============================================================================
vim:tw=78:ts=8:ft=help:norl:fdm=marker vim:tw=78:ts=8:ft=help:norl:fdm=marker

View File

@ -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 VIM REFERENCE MANUAL by Bram Moolenaar
@ -1124,6 +1124,10 @@ Don't include simple one-character replacements or swaps. Vim will try these
anyway. You can include whole words if you want to, but you might want to use anyway. You can include whole words if you want to, but you might want to use
the "file:" item in 'spellsuggest' instead. the "file:" item in 'spellsuggest' instead.
You can include a space by using an underscore:
REP the_the the ~
SIMILAR CHARACTERS *spell-MAP* SIMILAR CHARACTERS *spell-MAP*

View File

@ -4973,6 +4973,7 @@ ft-chill-syntax syntax.txt /*ft-chill-syntax*
ft-cobol-syntax syntax.txt /*ft-cobol-syntax* ft-cobol-syntax syntax.txt /*ft-cobol-syntax*
ft-coldfusion-syntax syntax.txt /*ft-coldfusion-syntax* ft-coldfusion-syntax syntax.txt /*ft-coldfusion-syntax*
ft-csh-syntax syntax.txt /*ft-csh-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-cweb-syntax syntax.txt /*ft-cweb-syntax*
ft-cynlib-syntax syntax.txt /*ft-cynlib-syntax* ft-cynlib-syntax syntax.txt /*ft-cynlib-syntax*
ft-desktop-syntax syntax.txt /*ft-desktop-syntax* ft-desktop-syntax syntax.txt /*ft-desktop-syntax*
@ -5082,6 +5083,7 @@ g'a motion.txt /*g'a*
g, motion.txt /*g,* g, motion.txt /*g,*
g0 motion.txt /*g0* g0 motion.txt /*g0*
g8 various.txt /*g8* g8 various.txt /*g8*
g:netrw-a pi_netrw.txt /*g:netrw-a*
g:netrw_alto pi_netrw.txt /*g:netrw_alto* g:netrw_alto pi_netrw.txt /*g:netrw_alto*
g:netrw_altv pi_netrw.txt /*g:netrw_altv* g:netrw_altv pi_netrw.txt /*g:netrw_altv*
g:netrw_cygwin pi_netrw.txt /*g:netrw_cygwin* g:netrw_cygwin pi_netrw.txt /*g:netrw_cygwin*
@ -5705,7 +5707,7 @@ map-self-destroy tips.txt /*map-self-destroy*
map-typing map.txt /*map-typing* map-typing map.txt /*map-typing*
map-which-keys map.txt /*map-which-keys* map-which-keys map.txt /*map-which-keys*
map.txt map.txt /*map.txt* 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_backslash map.txt /*map_backslash*
map_bar map.txt /*map_bar* map_bar map.txt /*map_bar*
map_empty_rhs map.txt /*map_empty_rhs* map_empty_rhs map.txt /*map_empty_rhs*
@ -5747,6 +5749,7 @@ menu-priority gui.txt /*menu-priority*
menu-separator gui.txt /*menu-separator* menu-separator gui.txt /*menu-separator*
menu.vim gui.txt /*menu.vim* menu.vim gui.txt /*menu.vim*
menus gui.txt /*menus* menus gui.txt /*menus*
merge diff.txt /*merge*
message-history message.txt /*message-history* message-history message.txt /*message-history*
message.txt message.txt /*message.txt* message.txt message.txt /*message.txt*
messages message.txt /*messages* messages message.txt /*messages*
@ -5853,7 +5856,6 @@ netrw-O pi_netrw.txt /*netrw-O*
netrw-R pi_netrw.txt /*netrw-R* netrw-R pi_netrw.txt /*netrw-R*
netrw-S pi_netrw.txt /*netrw-S* netrw-S pi_netrw.txt /*netrw-S*
netrw-U pi_netrw.txt /*netrw-U* netrw-U pi_netrw.txt /*netrw-U*
netrw-a pi_netrw.txt /*netrw-a*
netrw-activate pi_netrw.txt /*netrw-activate* netrw-activate pi_netrw.txt /*netrw-activate*
netrw-b pi_netrw.txt /*netrw-b* netrw-b pi_netrw.txt /*netrw-b*
netrw-bookmark pi_netrw.txt /*netrw-bookmark* netrw-bookmark pi_netrw.txt /*netrw-bookmark*
@ -7322,13 +7324,6 @@ zf fold.txt /*zf*
zg spell.txt /*zg* zg spell.txt /*zg*
zh scroll.txt /*zh* zh scroll.txt /*zh*
zi fold.txt /*zi* 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* zj fold.txt /*zj*
zk fold.txt /*zk* zk fold.txt /*zk*
zl scroll.txt /*zl* zl scroll.txt /*zl*

View File

@ -1,7 +1,7 @@
" Vim support file to detect file types " Vim support file to detect file types
" "
" Maintainer: Bram Moolenaar <Bram@vim.org> " 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 " Listen very carefully, I will say this only once
if exists("did_load_filetypes") if exists("did_load_filetypes")
@ -16,7 +16,7 @@ set cpo&vim
augroup filetypedetect augroup filetypedetect
" Ignored extensions " 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") \ exe "doau filetypedetect BufRead " . expand("<afile>:r")
au BufNewFile,BufRead *~ au BufNewFile,BufRead *~
\ let s:name = expand("<afile>") | \ let s:name = expand("<afile>") |
@ -26,7 +26,7 @@ au BufNewFile,BufRead *~
\ endif | \ endif |
\ unlet s:name | \ unlet s:name |
\ unlet s:short \ unlet s:short
au BufNewFile,BufRead *.in au BufNewFile,BufRead ?\+.in
\ if expand("<afile>:t") != "configure.in" | \ if expand("<afile>:t") != "configure.in" |
\ exe "doau filetypedetect BufRead " . expand("<afile>:r") | \ exe "doau filetypedetect BufRead " . expand("<afile>:r") |
\ endif \ endif

20
runtime/indent/eruby.vim Normal file
View File

@ -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

File diff suppressed because it is too large Load Diff

View File

@ -82,7 +82,7 @@ let s:end_start_regex = '^\s*\zs\<\%(module\|class\|def\|if\|for' .
let s:end_middle_regex = '\<\%(ensure\|else\|\%(\%(^\|;\)\s*\)\@<=\<rescue\>\|when\|elsif\)\>' let s:end_middle_regex = '\<\%(ensure\|else\|\%(\%(^\|;\)\s*\)\@<=\<rescue\>\|when\|elsif\)\>'
" Regex that defines the end-match for the 'end' keyword. " 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. " Expression used for searchpair() call for finding match for 'end' keyword.
let s:end_skip_expr = s:skip_expr . let s:end_skip_expr = s:skip_expr .
@ -244,17 +244,12 @@ function GetRubyIndent()
" If we have a deindenting keyword, find its match and indent to its level. " If we have a deindenting keyword, find its match and indent to its level.
" TODO: this is messy " TODO: this is messy
if s:Match(v:lnum, s:ruby_deindent_keywords) 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) call cursor(v:lnum, 1)
if searchpair(s:end_start_regex, s:end_middle_regex, s:end_end_regex, 'bW', if searchpair(s:end_start_regex, s:end_middle_regex, s:end_end_regex, 'bW',
\ s:end_skip_expr) > 0 \ 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 let ind = virtcol('.') - 1
else else
let ind = indent('.') let ind = indent('.')
@ -380,5 +375,3 @@ endfunction
let &cpo = s:cpo_save let &cpo = s:cpo_save
unlet s:cpo_save unlet s:cpo_save
" vim: nowrap sw=2 sts=2 ts=8 ff=unix:

215
runtime/indent/sml.vim Normal file
View File

@ -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

View File

@ -1,7 +1,8 @@
" netrw.vim: Handles file transfer and remote directory listing across a network " netrw.vim: Handles file transfer and remote directory listing across a network
" PLUGIN PORTION " PLUGIN PORTION
" Date: Sep 08, 2005 " Last Change: Aug 29, 2005
" Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz> " Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
" Version: 66
" License: Vim License (see vim's :help license) " License: Vim License (see vim's :help license)
" GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
" Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1 " Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
@ -20,6 +21,17 @@
" --------------------------------------------------------------------- " ---------------------------------------------------------------------
" Load Once: {{{1 " 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 let s:keepcpo= &cpo
set cpo&vim set cpo&vim
@ -126,7 +138,7 @@ endfun
" example and as a fix for a Windows 95 problem: in my " example and as a fix for a Windows 95 problem: in my
" experience, win95's ftp always dumped four blank lines " experience, win95's ftp always dumped four blank lines
" at the end of the transfer. " 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) fun! NetReadFixup(method, line1, line2)
" call Dfunc("NetReadFixup(method<".a:method."> line1=".a:line1." line2=".a:line2.")") " call Dfunc("NetReadFixup(method<".a:method."> line1=".a:line1." line2=".a:line2.")")
if method == 3 " ftp (no <.netrc>) if method == 3 " ftp (no <.netrc>)

View File

@ -1,7 +1,7 @@
" NetrwSettings.vim: makes netrw settings simpler " 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> " Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
" Version: 3 " Version: 3
" Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1 " Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
" Permission is hereby granted to use and distribute this code, " Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright " with or without modifications, provided that this copyright

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -79,10 +79,10 @@ syn region rubySymbol start=":\@<!:\"" end="\"" skip="\\\\\|\\\""
syn match rubyBlockParameter "\%(\%(\<do\>\|{\)\s*\)\@<=|\s*\zs[( ,a-zA-Z0-9_*)]\+\ze\s*|" display syn match rubyBlockParameter "\%(\%(\<do\>\|{\)\s*\)\@<=|\s*\zs[( ,a-zA-Z0-9_*)]\+\ze\s*|" display
syn match rubyPredefinedVariable #$[!$&"'*+,./0:;<=>?@\`~1-9]# syn match rubyPredefinedVariable #$[!$&"'*+,./0:;<=>?@\`~1-9]#
syn match rubyPredefinedVariable "$_\>" display syn match rubyPredefinedVariable "$_\>" display
syn match rubyPredefinedVariable "$-[0FIKadilpvw]\>" display syn match rubyPredefinedVariable "$-[0FIKadilpvw]\>" display
syn match rubyPredefinedVariable "$\%(deferr\|defout\|stderr\|stdin\|stdout\)\>" display syn match rubyPredefinedVariable "$\%(deferr\|defout\|stderr\|stdin\|stdout\)\>" display
syn match rubyPredefinedVariable "$\%(DEBUG\|FILENAME\|KCODE\|LOAD_PATH\|SAFE\|VERBOSE\)\>" 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\%(MatchingData\|ARGF\|ARGV\|ENV\)\>\%(\s*(\)\@!"
syn match rubyPredefinedConstant "\%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(DATA\|FALSE\|NIL\|RUBY_PLATFORM\|RUBY_RELEASE_DATE\)\>\%(\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*(\)\@!" syn match rubyPredefinedConstant "\%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(RUBY_VERSION\|STDERR\|STDIN\|STDOUT\|TOPLEVEL_BINDING\|TRUE\)\>\%(\s*(\)\@!"
@ -166,8 +166,8 @@ if !exists("ruby_no_expensive")
syn region rubyNoDoBlock matchgroup=rubyControl start="\<\%(case\|begin\)\>" start="\%(^\|\.\.\.\=\|[,;=([<>~\*/%!&^|+-]\)\s*\zs\%(if\|unless\)\>" end="\<end\>" contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo fold syn region rubyNoDoBlock matchgroup=rubyControl start="\<\%(case\|begin\)\>" start="\%(^\|\.\.\.\=\|[,;=([<>~\*/%!&^|+-]\)\s*\zs\%(if\|unless\)\>" end="\<end\>" contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo fold
" statement with optional *do* " 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 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="\%(\%(^\|\.\.\.\=\|[,;=([<>~\*/%!&^|+-]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyControl end="\<end\>" contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo nextgroup=rubyOptDoLine fold 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") if !exists("ruby_minlines")
let ruby_minlines = 50 let ruby_minlines = 50
@ -196,7 +196,7 @@ syn keyword rubyBeginEnd BEGIN END
if !exists("ruby_no_special_methods") if !exists("ruby_no_special_methods")
syn keyword rubyAccess public protected private syn keyword rubyAccess public protected private
syn keyword rubyAttribute attr attr_accessor attr_reader attr_writer 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 rubyEval eval class_eval instance_eval module_eval
syn keyword rubyException raise fail catch throw syn keyword rubyException raise fail catch throw
syn keyword rubyInclude autoload extend include load require syn keyword rubyInclude autoload extend include load require

View File

@ -1905,7 +1905,10 @@ ex_diffgetput(eap)
{ {
/* No argument: Find the other buffer in the list of diff buffers. */ /* No argument: Find the other buffer in the list of diff buffers. */
for (idx_other = 0; idx_other < DB_COUNT; ++idx_other) for (idx_other = 0; idx_other < DB_COUNT; ++idx_other)
if (diffbuf[idx_other] != curbuf && diffbuf[idx_other] != NULL) if (diffbuf[idx_other] != curbuf
&& diffbuf[idx_other] != NULL
&& (eap->cmdidx != CMD_diffput
|| diffbuf[idx_other]->b_p_ma))
break; break;
if (idx_other == DB_COUNT) if (idx_other == DB_COUNT)
{ {
@ -1915,7 +1918,9 @@ ex_diffgetput(eap)
/* Check that there isn't a third buffer in the list */ /* Check that there isn't a third buffer in the list */
for (i = idx_other + 1; i < DB_COUNT; ++i) for (i = idx_other + 1; i < DB_COUNT; ++i)
if (diffbuf[i] != curbuf && diffbuf[i] != NULL) if (diffbuf[i] != curbuf
&& diffbuf[i] != NULL
&& (eap->cmdidx != CMD_diffput || diffbuf[i]->b_p_ma))
{ {
EMSG(_("E101: More than two buffers in diff mode, don't know which one to use")); EMSG(_("E101: More than two buffers in diff mode, don't know which one to use"));
return; return;

View File

@ -295,6 +295,7 @@ edit(cmdchar, startln, count)
*/ */
if (cmdchar != 'r' && cmdchar != 'v') if (cmdchar != 'r' && cmdchar != 'v')
{ {
# ifdef FEAT_EVAL
if (cmdchar == 'R') if (cmdchar == 'R')
ptr = (char_u *)"r"; ptr = (char_u *)"r";
else if (cmdchar == 'V') else if (cmdchar == 'V')
@ -302,6 +303,7 @@ edit(cmdchar, startln, count)
else else
ptr = (char_u *)"i"; ptr = (char_u *)"i";
set_vim_var_string(VV_INSERTMODE, ptr, 1); set_vim_var_string(VV_INSERTMODE, ptr, 1);
# endif
apply_autocmds(EVENT_INSERTENTER, NULL, NULL, FALSE, curbuf); apply_autocmds(EVENT_INSERTENTER, NULL, NULL, FALSE, curbuf);
} }
#endif #endif
@ -6580,9 +6582,11 @@ ins_insert(replaceState)
#endif #endif
#ifdef FEAT_AUTOCMD #ifdef FEAT_AUTOCMD
# ifdef FEAT_EVAL
set_vim_var_string(VV_INSERTMODE, set_vim_var_string(VV_INSERTMODE,
(char_u *)((State & REPLACE_FLAG) ? "i" : (char_u *)((State & REPLACE_FLAG) ? "i" :
replaceState == VREPLACE ? "v" : "r"), 1); replaceState == VREPLACE ? "v" : "r"), 1);
# endif
apply_autocmds(EVENT_INSERTCHANGE, NULL, NULL, FALSE, curbuf); apply_autocmds(EVENT_INSERTCHANGE, NULL, NULL, FALSE, curbuf);
#endif #endif
if (State & REPLACE_FLAG) if (State & REPLACE_FLAG)

View File

@ -114,7 +114,6 @@ static int getargopt __ARGS((exarg_T *eap));
# define ex_cc ex_ni # define ex_cc ex_ni
# define ex_cnext ex_ni # define ex_cnext ex_ni
# define ex_cfile ex_ni # define ex_cfile ex_ni
# define ex_cexpr ex_ni
# define qf_list ex_ni # define qf_list ex_ni
# define qf_age ex_ni # define qf_age ex_ni
# define ex_helpgrep ex_ni # define ex_helpgrep ex_ni
@ -125,6 +124,9 @@ static int getargopt __ARGS((exarg_T *eap));
# define ex_copen ex_ni # define ex_copen ex_ni
# define ex_cwindow ex_ni # define ex_cwindow ex_ni
#endif #endif
#if !defined(FEAT_QUICKFIX) || !defined(FEAT_EVAL)
# define ex_cexpr ex_ni
#endif
static int check_more __ARGS((int, int)); static int check_more __ARGS((int, int));
static linenr_T get_address __ARGS((char_u **, int skip, int to_other_file)); static linenr_T get_address __ARGS((char_u **, int skip, int to_other_file));

View File

@ -428,13 +428,10 @@ getcmdline(firstc, count, indent)
if (p_wmnu && wild_menu_showing != 0) if (p_wmnu && wild_menu_showing != 0)
{ {
int skt = KeyTyped; int skt = KeyTyped;
int old_RedrawingDisabled; int old_RedrawingDisabled = RedrawingDisabled;
if (ccline.input_fn) if (ccline.input_fn)
{
old_RedrawingDisabled = RedrawingDisabled;
RedrawingDisabled = 0; RedrawingDisabled = 0;
}
if (wild_menu_showing == WM_SCROLLED) if (wild_menu_showing == WM_SCROLLED)
{ {
@ -463,10 +460,10 @@ getcmdline(firstc, count, indent)
# endif # endif
redraw_statuslines(); redraw_statuslines();
} }
if (ccline.input_fn)
RedrawingDisabled = old_RedrawingDisabled;
KeyTyped = skt; KeyTyped = skt;
wild_menu_showing = 0; wild_menu_showing = 0;
if (ccline.input_fn)
RedrawingDisabled = old_RedrawingDisabled;
} }
#endif #endif
} }
@ -4876,7 +4873,7 @@ set_cmdline_pos(pos)
/* /*
* Get the current command-line type. * Get the current command-line type.
* Returns ':' or '/' or '?' or '@' or '>' * Returns ':' or '/' or '?' or '@' or '>' or '-'
* Only works when the command line is being edited. * Only works when the command line is being edited.
* Returns NUL when something is wrong. * Returns NUL when something is wrong.
*/ */
@ -4887,6 +4884,8 @@ get_cmdline_type()
if (p == NULL) if (p == NULL)
return NUL; return NUL;
if (p->cmdfirstc == NUL)
return (p->input_fn) ? '@' : '-';
return p->cmdfirstc; return p->cmdfirstc;
} }

View File

@ -201,13 +201,6 @@
# define VIM_BACKTICK /* internal backtick expansion */ # define VIM_BACKTICK /* internal backtick expansion */
#endif #endif
/*
* +textobjects Text objects: "vaw", "das", etc.
*/
#ifdef FEAT_NORMAL
# define FEAT_TEXTOBJ
#endif
/* /*
* +visual Visual mode. * +visual Visual mode.
* +visualextra Extra features for Visual mode (mostly block operators). * +visualextra Extra features for Visual mode (mostly block operators).
@ -383,11 +376,19 @@
* +profile Profiling for functions and scripts. * +profile Profiling for functions and scripts.
*/ */
#if defined(FEAT_HUGE) \ #if defined(FEAT_HUGE) \
&& defined(FEAT_EVAL) \
&& ((defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)) \ && ((defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)) \
|| defined(WIN3264)) || defined(WIN3264))
# define FEAT_PROFILE # define FEAT_PROFILE
#endif #endif
/*
* +textobjects Text objects: "vaw", "das", etc.
*/
#if defined(FEAT_NORMAL) && defined(FEAT_EVAL)
# define FEAT_TEXTOBJ
#endif
/* /*
* Insert mode completion with 'completefunc'. * Insert mode completion with 'completefunc'.
*/ */

View File

@ -2796,14 +2796,22 @@ buf_write(buf, fname, sfname, start, end, eap, append, forceit,
if (!buf_valid(buf)) if (!buf_valid(buf))
buf = NULL; buf = NULL;
if (buf == NULL || (buf->b_ml.ml_mfp == NULL && !empty_memline) if (buf == NULL || (buf->b_ml.ml_mfp == NULL && !empty_memline)
|| did_cmd || nofile_err || aborting()) || did_cmd || nofile_err
#ifdef FEAT_EVAL
|| aborting()
#endif
)
{ {
--no_wait_return; --no_wait_return;
msg_scroll = msg_save; msg_scroll = msg_save;
if (nofile_err) if (nofile_err)
EMSG(_("E676: No matching autocommands for acwrite buffer")); EMSG(_("E676: No matching autocommands for acwrite buffer"));
if (aborting() || nofile_err) if (nofile_err
#ifdef FEAT_EVAL
|| aborting()
#endif
)
/* An aborting error, interrupt or exception in the /* An aborting error, interrupt or exception in the
* autocommands. */ * autocommands. */
return FAIL; return FAIL;
@ -6021,8 +6029,10 @@ buf_check_timestamp(buf, focus)
* Avoid being called recursively by setting "busy". * Avoid being called recursively by setting "busy".
*/ */
busy = TRUE; busy = TRUE;
# ifdef FEAT_EVAL
set_vim_var_string(VV_FCS_REASON, (char_u *)reason, -1); set_vim_var_string(VV_FCS_REASON, (char_u *)reason, -1);
set_vim_var_string(VV_FCS_CHOICE, (char_u *)"", -1); set_vim_var_string(VV_FCS_CHOICE, (char_u *)"", -1);
# endif
n = apply_autocmds(EVENT_FILECHANGEDSHELL, n = apply_autocmds(EVENT_FILECHANGEDSHELL,
buf->b_fname, buf->b_fname, FALSE, buf); buf->b_fname, buf->b_fname, FALSE, buf);
busy = FALSE; busy = FALSE;
@ -6030,12 +6040,14 @@ buf_check_timestamp(buf, focus)
{ {
if (!buf_valid(buf)) if (!buf_valid(buf))
EMSG(_("E246: FileChangedShell autocommand deleted buffer")); EMSG(_("E246: FileChangedShell autocommand deleted buffer"));
# ifdef FEAT_EVAL
s = get_vim_var_str(VV_FCS_CHOICE); s = get_vim_var_str(VV_FCS_CHOICE);
if (STRCMP(s, "reload") == 0 && *reason != 'd') if (STRCMP(s, "reload") == 0 && *reason != 'd')
reload = TRUE; reload = TRUE;
else if (STRCMP(s, "ask") == 0) else if (STRCMP(s, "ask") == 0)
n = FALSE; n = FALSE;
else else
# endif
return 2; return 2;
} }
if (!n) if (!n)
@ -7978,12 +7990,18 @@ apply_autocmds_retval(event, fname, fname_io, force, buf, retval)
{ {
int did_cmd; int did_cmd;
#ifdef FEAT_EVAL
if (should_abort(*retval)) if (should_abort(*retval))
return FALSE; return FALSE;
#endif
did_cmd = apply_autocmds_group(event, fname, fname_io, force, did_cmd = apply_autocmds_group(event, fname, fname_io, force,
AUGROUP_ALL, buf, NULL); AUGROUP_ALL, buf, NULL);
if (did_cmd && aborting()) if (did_cmd
#ifdef FEAT_EVAL
&& aborting()
#endif
)
*retval = FAIL; *retval = FAIL;
return did_cmd; return did_cmd;
} }

File diff suppressed because it is too large Load Diff

View File

@ -3749,6 +3749,7 @@ tv_nr(tvs, idxp)
/* /*
* Get string argument from "idxp" entry in "tvs". First entry is 1. * Get string argument from "idxp" entry in "tvs". First entry is 1.
* Returns NULL for an error.
*/ */
static char * static char *
tv_str(tvs, idxp) tv_str(tvs, idxp)

View File

@ -20,6 +20,7 @@
#include "vim.h" #include "vim.h"
static void comp_botline __ARGS((win_T *wp)); static void comp_botline __ARGS((win_T *wp));
static int scrolljump_value __ARGS((void));
static int check_top_offset __ARGS((void)); static int check_top_offset __ARGS((void));
static void curs_rows __ARGS((win_T *wp, int do_botline)); static void curs_rows __ARGS((win_T *wp, int do_botline));
static void validate_botline_win __ARGS((win_T *wp)); static void validate_botline_win __ARGS((win_T *wp));
@ -249,7 +250,7 @@ update_topline()
scroll_cursor_halfway(FALSE); scroll_cursor_halfway(FALSE);
else else
{ {
scroll_cursor_top((int)p_sj, FALSE); scroll_cursor_top(scrolljump_value(), FALSE);
check_botline = TRUE; check_botline = TRUE;
} }
} }
@ -341,7 +342,7 @@ update_topline()
line_count = curwin->w_cursor.lnum - curwin->w_botline line_count = curwin->w_cursor.lnum - curwin->w_botline
+ 1 + p_so; + 1 + p_so;
if (line_count <= curwin->w_height + 1) if (line_count <= curwin->w_height + 1)
scroll_cursor_bot((int)p_sj, FALSE); scroll_cursor_bot(scrolljump_value(), FALSE);
else else
scroll_cursor_halfway(FALSE); scroll_cursor_halfway(FALSE);
} }
@ -376,6 +377,19 @@ update_topline()
#endif #endif
} }
/*
* Return the scrolljump value to use for the current window.
* When 'scrolljump' is positive use it as-is.
* When 'scrolljump' is negative use it as a percentage of the window height.
*/
static int
scrolljump_value()
{
if (p_sj >= 0)
return (int)p_sj;
return (curwin->w_height * -p_sj) / 100;
}
/* /*
* Return TRUE when there are not 'scrolloff' lines above the cursor for the * Return TRUE when there are not 'scrolloff' lines above the cursor for the
* current window. * current window.

View File

@ -7420,7 +7420,7 @@ set_num_option(opt_idx, varp, value, errbuf, errbuflen, opt_flags)
errmsg = e_positive; errmsg = e_positive;
p_report = 1; p_report = 1;
} }
if ((p_sj < 0 || p_sj >= Rows) && full_screen) if ((p_sj < -100 || p_sj >= Rows) && full_screen)
{ {
if (Rows != old_Rows) /* Rows changed, just adjust p_sj */ if (Rows != old_Rows) /* Rows changed, just adjust p_sj */
p_sj = Rows / 2; p_sj = Rows / 2;

View File

@ -2215,8 +2215,10 @@ ex_make(eap)
{ {
apply_autocmds(EVENT_QUICKFIXCMDPRE, au_name, apply_autocmds(EVENT_QUICKFIXCMDPRE, au_name,
curbuf->b_fname, TRUE, curbuf); curbuf->b_fname, TRUE, curbuf);
# ifdef FEAT_EVAL
if (did_throw || force_abort) if (did_throw || force_abort)
return; return;
# endif
} }
#endif #endif
@ -2974,6 +2976,7 @@ ex_cbuffer(eap)
} }
} }
#if defined(FEAT_EVAL) || defined(PROTO)
/* /*
* ":cexpr {expr}" command. * ":cexpr {expr}" command.
*/ */
@ -2994,6 +2997,7 @@ ex_cexpr(eap)
clear_tv(tv); clear_tv(tv);
} }
#endif
/* /*
* ":helpgrep {pattern}" * ":helpgrep {pattern}"

View File

@ -511,15 +511,15 @@ typedef struct suggest_S
#define SCORE_RARE 180 /* rare word */ #define SCORE_RARE 180 /* rare word */
#define SCORE_SWAP 90 /* swap two characters */ #define SCORE_SWAP 90 /* swap two characters */
#define SCORE_SWAP3 110 /* swap two characters in three */ #define SCORE_SWAP3 110 /* swap two characters in three */
#define SCORE_REP 87 /* REP replacement */ #define SCORE_REP 65 /* REP replacement */
#define SCORE_SUBST 93 /* substitute a character */ #define SCORE_SUBST 93 /* substitute a character */
#define SCORE_SIMILAR 33 /* substitute a similar character */ #define SCORE_SIMILAR 33 /* substitute a similar character */
#define SCORE_SUBCOMP 33 /* substitute a composing character */ #define SCORE_SUBCOMP 33 /* substitute a composing character */
#define SCORE_DEL 94 /* delete a character */ #define SCORE_DEL 94 /* delete a character */
#define SCORE_DELDUP 64 /* delete a duplicated character */ #define SCORE_DELDUP 66 /* delete a duplicated character */
#define SCORE_DELCOMP 28 /* delete a composing character */ #define SCORE_DELCOMP 28 /* delete a composing character */
#define SCORE_INS 96 /* insert a character */ #define SCORE_INS 96 /* insert a character */
#define SCORE_INSDUP 66 /* insert a duplicate character */ #define SCORE_INSDUP 67 /* insert a duplicate character */
#define SCORE_INSCOMP 30 /* insert a composing character */ #define SCORE_INSCOMP 30 /* insert a composing character */
#define SCORE_NONWORD 103 /* change non-word to word char */ #define SCORE_NONWORD 103 /* change non-word to word char */
@ -5049,7 +5049,17 @@ spell_read_aff(spin, fname)
if (itemcnt > 3 && items[3][0] != '#') if (itemcnt > 3 && items[3][0] != '#')
smsg((char_u *)_(e_afftrailing), fname, lnum, items[3]); smsg((char_u *)_(e_afftrailing), fname, lnum, items[3]);
if (do_rep) if (do_rep)
{
/* Replace underscore with space (can't include a space
* directly). */
for (p = items[1]; *p != NUL; mb_ptr_adv(p))
if (*p == '_')
*p = ' ';
for (p = items[2]; *p != NUL; mb_ptr_adv(p))
if (*p == '_')
*p = ' ';
add_fromto(spin, &spin->si_rep, items[1], items[2]); add_fromto(spin, &spin->si_rep, items[1], items[2]);
}
} }
else if (STRCMP(items[0], "MAP") == 0 && itemcnt == 2) else if (STRCMP(items[0], "MAP") == 0 && itemcnt == 2)
{ {
@ -11081,13 +11091,21 @@ add_suggestion(su, gap, goodword, badlen, score, altscore, had_bonus, slang)
int had_bonus; /* value for st_had_bonus */ int had_bonus; /* value for st_had_bonus */
slang_T *slang; /* language for sound folding */ slang_T *slang; /* language for sound folding */
{ {
int goodlen = STRLEN(goodword);
suggest_T *stp; suggest_T *stp;
int i; int i;
char_u *p = NULL; char_u *p = NULL;
int c = 0; int c = 0;
int attr = 0;
char_u longword[MAXWLEN + 1];
/* Check that the word wasn't banned. */ /* Check that the word really is valid. Esp. for banned words and for
if (was_banned(su, goodword)) * split words, such as "the the". Need to append what follows to check
* for that. */
STRCPY(longword, goodword);
vim_strncpy(longword + goodlen, su->su_badptr + badlen, MAXWLEN - goodlen);
(void)spell_check(curwin, longword, &attr, NULL);
if (attr != 0)
return; return;
/* If past "su_badlen" and the rest is identical stop at "su_badlen". /* If past "su_badlen" and the rest is identical stop at "su_badlen".
@ -11097,7 +11115,7 @@ add_suggestion(su, gap, goodword, badlen, score, altscore, had_bonus, slang)
{ {
/* This assumes there was no case folding or it didn't change the /* This assumes there was no case folding or it didn't change the
* length... */ * length... */
p = goodword + STRLEN(goodword) - i; p = goodword + goodlen - i;
if (p > goodword && STRNICMP(su->su_badptr + su->su_badlen, p, i) == 0) if (p > goodword && STRNICMP(su->su_badptr + su->su_badlen, p, i) == 0)
{ {
badlen = su->su_badlen; badlen = su->su_badlen;
@ -11112,7 +11130,7 @@ add_suggestion(su, gap, goodword, badlen, score, altscore, had_bonus, slang)
/* When replacing part of the word check that we actually change /* When replacing part of the word check that we actually change
* something. For "the the" a suggestion can be replacing the first * something. For "the the" a suggestion can be replacing the first
* "the" with itself, since "the" wasn't banned. */ * "the" with itself, since "the" wasn't banned. */
if (badlen == (int)STRLEN(goodword) if (badlen == (int)goodlen
&& STRNCMP(su->su_badword, goodword, badlen) == 0) && STRNCMP(su->su_badword, goodword, badlen) == 0)
return; return;
} }

View File

@ -33,7 +33,7 @@ STARTTEST
normal 0f:]s normal 0f:]s
let prevbad = '' let prevbad = ''
while 1 while 1
let bad = spellbadword() let [bad, a] = spellbadword()
if bad == '' || bad == prevbad || bad == 'badend' if bad == '' || bad == prevbad || bad == 'badend'
break break
endif endif
@ -64,31 +64,31 @@ gg:/^addstart/+1,/^addend/-1w! Xtest.utf-8.add
:mkspell! Xtest.utf-8.add.spl Xtest.utf-8.add :mkspell! Xtest.utf-8.add.spl Xtest.utf-8.add
:set spellfile=Xtest.utf-8.add :set spellfile=Xtest.utf-8.add
/^test2: /^test2:
]s:let str = spellbadword() ]s:let [str, a] = spellbadword()
:$put =str :$put =str
:set spl=Xtest_us.utf-8.spl :set spl=Xtest_us.utf-8.spl
/^test2: /^test2:
]smm:let str = spellbadword() ]smm:let [str, a] = spellbadword()
:$put =str :$put =str
`m]s:let str = spellbadword() `m]s:let [str, a] = spellbadword()
:$put =str :$put =str
:set spl=Xtest_gb.utf-8.spl :set spl=Xtest_gb.utf-8.spl
/^test2: /^test2:
]smm:let str = spellbadword() ]smm:let [str, a] = spellbadword()
:$put =str :$put =str
`m]s:let str = spellbadword() `m]s:let [str, a] = spellbadword()
:$put =str :$put =str
:set spl=Xtest_nz.utf-8.spl :set spl=Xtest_nz.utf-8.spl
/^test2: /^test2:
]smm:let str = spellbadword() ]smm:let [str, a] = spellbadword()
:$put =str :$put =str
`m]s:let str = spellbadword() `m]s:let [str, a] = spellbadword()
:$put =str :$put =str
:set spl=Xtest_ca.utf-8.spl :set spl=Xtest_ca.utf-8.spl
/^test2: /^test2:
]smm:let str = spellbadword() ]smm:let [str, a] = spellbadword()
:$put =str :$put =str
`m]s:let str = spellbadword() `m]s:let [str, a] = spellbadword()
:$put =str :$put =str
:" :"
:" Postponed prefixes :" Postponed prefixes

View File

@ -36,5 +36,5 @@
#define VIM_VERSION_NODOT "vim70aa" #define VIM_VERSION_NODOT "vim70aa"
#define VIM_VERSION_SHORT "7.0aa" #define VIM_VERSION_SHORT "7.0aa"
#define VIM_VERSION_MEDIUM "7.0aa ALPHA" #define VIM_VERSION_MEDIUM "7.0aa ALPHA"
#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0aa ALPHA (2005 Sep 20)" #define VIM_VERSION_LONG "VIM - Vi IMproved 7.0aa ALPHA (2005 Sep 25)"
#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2005 Sep 20, compiled " #define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2005 Sep 25, compiled "