diff options
author | Bram Moolenaar <Bram@vim.org> | 2005-08-19 20:40:30 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2005-08-19 20:40:30 +0000 |
commit | 8aff23a13e69dd6290e9a6f2c3aeb4b486f28279 (patch) | |
tree | 361a4567d1f0459e4efbe2b5d05db96991679251 /runtime/autoload/netrw.vim | |
parent | 5195e45609b26b3d262a90822a2283a4adcf65c9 (diff) | |
download | vim-git-8aff23a13e69dd6290e9a6f2c3aeb4b486f28279.tar.gz |
updated for version 7.0132v7.0132
Diffstat (limited to 'runtime/autoload/netrw.vim')
-rw-r--r-- | runtime/autoload/netrw.vim | 158 |
1 files changed, 104 insertions, 54 deletions
diff --git a/runtime/autoload/netrw.vim b/runtime/autoload/netrw.vim index e077e25e7..c797beca3 100644 --- a/runtime/autoload/netrw.vim +++ b/runtime/autoload/netrw.vim @@ -1,8 +1,8 @@ " netrw.vim: Handles file transfer and remote directory listing across a network " AUTOLOAD PORTION -" Last Change: Aug 16, 2005 +" Last Change: Aug 19, 2005 " Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz> -" Version: 63 +" Version: 65 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim " Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1 " Permission is hereby granted to use and distribute this code, @@ -690,8 +690,6 @@ fun! s:NetGetFile(readcmd, fname, method) exe a:readcmd." ".v:cmdarg." ".fname let line1 = curline + 1 let line2 = line("$") - lastline + 1 - let s:netrw_line = s:netrw_line + 1 - let s:netrw_col = 1 else " not readable " call Dret("NetGetFile : fname<".fname."> not readable") @@ -1025,6 +1023,8 @@ fun! s:NetBrowse(dirname) return endif + call s:NetOptionSave() + " sanity check if exists("b:netrw_method") && b:netrw_method =~ '[235]' " call Decho("b:netrw_method=".b:netrw_method) @@ -1033,6 +1033,7 @@ fun! s:NetBrowse(dirname) echohl Error | echo "***netrw*** this system doesn't support remote directory listing via ftp" | echohl None call inputsave()|call input("Press <cr> to continue")|call inputrestore() endif + call s:NetOptionRestore() " call Dret("NetBrowse") return endif @@ -1042,6 +1043,7 @@ fun! s:NetBrowse(dirname) call inputsave()|call input("Press <cr> to continue")|call inputrestore() endif + call s:NetOptionRestore() " call Dret("NetBrowse") return endif @@ -1061,6 +1063,7 @@ fun! s:NetBrowse(dirname) echohl Error | echo "***netrw*** netrw doesn't understand your dirname<".dirname.">" | echohl None call inputsave()|call input("Press <cr> to continue")|call inputrestore() endif + call s:NetOptionRestore() " call Dret("NetBrowse : badly formatted dirname<".dirname.">") return endif @@ -1109,6 +1112,7 @@ fun! s:NetBrowse(dirname) " call Decho("attempt transfer of symlink as file") call s:NetBrowse(substitute(dirname,'@$','','e')) redraw! + call s:NetOptionRestore() " call Dret("NetBrowse : symlink") return @@ -1119,7 +1123,7 @@ fun! s:NetBrowse(dirname) " remove any filetype indicator from end of dirname, except for the " "this is a directory" indicator (/). There shouldn't be one of those, " anyway. - let path= substitute(path,'[*=@|]$','','e') + let path= substitute(path,'[*=@|]\r\=$','','e') " call Decho("new path<".path.">") " remote-read the requested file into current buffer @@ -1133,7 +1137,7 @@ fun! s:NetBrowse(dirname) " save certain window-oriented variables into buffer-oriented variables call s:BufWinVars() - + call s:NetOptionRestore() setlocal nonu nomod noma " call Dret("NetBrowse : file<".fname.">") @@ -1152,6 +1156,7 @@ fun! s:NetBrowse(dirname) " call Decho("buffer already exists, switching to it") exe "b ".bufnamenr if line("$") >= 5 + call s:NetOptionRestore() " call Dret("NetBrowse") return endif @@ -1166,7 +1171,7 @@ fun! s:NetBrowse(dirname) " call Decho("exe file ".escape(bufname,s:netrw_cd_escape)) exe 'file '.escape(bufname,s:netrw_cd_escape) " call Decho("renaming file to bufname<".bufname.">") - setlocal bh=hide nobl nonu + setlocal bh=hide bt=nofile nobl nonu " save current directory on directory history list call <SID>NetBookmarkDir(3,expand("%")) @@ -1281,7 +1286,6 @@ fun! s:NetBrowse(dirname) exe "silent! g/".g:netrw_ssh_browse_reject."/keepjumps d" endif endif - " set up syntax highlighting if has("syntax") @@ -1347,8 +1351,12 @@ fun! s:NetBrowse(dirname) endif endif endif + + " cleanup any windows mess at end-of-line + keepjumps silent! %s/\r$//e exe "keepjumps ".w:netrw_bannercnt + call s:NetOptionRestore() setlocal nomod noma nonu " call Dret("NetBrowse") @@ -1772,6 +1780,16 @@ fun! s:NetBrowseFtpCmd(path,cmd) endif endif + " ftp's ls doesn't seem to include ./ or ../ + if !search('^\.\/$','wn') + exe 'keepjumps '.curline + if a:path !~ '^$' + put ='../' + endif + put ='./' + exe 'keepjumps '.curline + endif + " restore settings let &ff= ffkeep " call Dret("NetBrowseFtpCmd") @@ -2128,22 +2146,18 @@ fun! netrw#DirBrowse(dirname) " call Dret("DirBrowse") return endif + call s:NetOptionSave() if v:version < 603 if !exists("g:netrw_quiet") echohl Error | echo "***netrw*** vim version<".v:version."> too old for browsing with netrw" | echohl None call inputsave()|call input("Press <cr> to continue")|call inputrestore() endif + call s:NetOptionRestore() " call Dret("DirBrowse : vim version<".v:version."> too old") return endif - " record autochdir setting and then insure its unset (tnx to David Fishburn) - if has("netbeans_intg") || has("sun_workshop") - let keep_autochdir= &autochdir - set noautochdir - endif - " use buffer-oriented WinVars if buffer ones exist but window ones don't call s:UseBufWinVars() @@ -2166,7 +2180,7 @@ fun! netrw#DirBrowse(dirname) endif " get cleared buffer - if bufnum < 0 + if bufnum < 0 || !bufexists(bufnum) if v:version < 700 enew! else @@ -2185,6 +2199,7 @@ fun! netrw#DirBrowse(dirname) " call Decho("change directory: cd ".b:netrw_curdir) exe 'cd '.escape(b:netrw_curdir,s:netrw_cd_escape) endif + call s:NetOptionRestore() " call Dret("DirBrowse : reusing buffer#".bufnum."<".a:dirname.">") return endif @@ -2201,6 +2216,11 @@ fun! netrw#DirBrowse(dirname) if b:netrw_curdir =~ '[/\\]$' let b:netrw_curdir= substitute(b:netrw_curdir,'[/\\]$','','e') endif + if b:netrw_curdir == '' + " under unix, when the root directory is encountered, the result + " from the preceding substitute is an empty string. + let b:netrw_curdir= '/' + endif " call Decho("b:netrw_curdir<".b:netrw_curdir.">") " make netrw's idea of the current directory vim's if the user wishes @@ -2214,6 +2234,7 @@ fun! netrw#DirBrowse(dirname) if exists("w:netrw_prvdir") let b:netrw_curdir= w:netrw_prvdir else + call s:NetOptionRestore() " call Dret("DirBrowse : reusing buffer#".bufnum."<".a:dirname.">") return endif @@ -2223,8 +2244,8 @@ fun! netrw#DirBrowse(dirname) " change the name of the buffer to reflect the b:netrw_curdir exe 'silent! file '.escape(b:netrw_curdir,s:netrw_cd_escape) - " make this buffer modifiable and hidden - setlocal ma hidden nonu bt=nofile + " make this buffer not-a-file, modifiable, not line-numbered, etc + setlocal bh=hide bt=nofile nobl ma nonu if v:version < 700 silent! %d else @@ -2367,11 +2388,8 @@ fun! netrw#DirBrowse(dirname) " save certain window-oriented variables into buffer-oriented variables call s:BufWinVars() - + call s:NetOptionRestore() setlocal noma nomod nonu bh=hide nobl - if has("netbeans_intg") || has("sun_workshop") - let &autochdir= keep_autochdir - endif " call Dret("DirBrowse : file<".expand("%:p")."> bufname<".bufname("%").">") endfun @@ -2470,6 +2488,9 @@ fun! s:LocalBrowseList() keepjumps put=pfile endif endwhile + + " cleanup any windows mess at end-of-line + keepjumps silent! %s/\r$//e setlocal ts=32 " call Dret("LocalBrowseList") @@ -3091,27 +3112,42 @@ endfun " ------------------------------------------------------------------------ " NetOptionSave: save options and set to "standard" form {{{1 -fun!s:NetOptionSave() +fun! s:NetOptionSave() " call Dfunc("NetOptionSave()") + if !exists("w:netoptionsave") + let w:netoptionsave= 1 + else +" call Dret("NetOptionSave : netoptionsave=".w:netoptionsave) + return + endif " Get Temporary Filename - let s:aikeep = &ai - let s:cinkeep = &cin - let s:cinokeep = &cino - let s:comkeep = &com - let s:cpokeep = &cpo - let s:dirkeep = getcwd() - let s:gdkeep = &gd - let s:twkeep = &tw + let w:aikeep = &ai + " record autochdir setting and then insure its unset (tnx to David Fishburn) + if has("netbeans_intg") || has("sun_workshop") + let w:acdkeep = &autochdir + set noautochdir + endif + let w:cinkeep = &cin + let w:cinokeep = &cino + let w:comkeep = &com + let w:cpokeep = &cpo + if !g:netrw_keepdir + let w:dirkeep = getcwd() + endif + let w:gdkeep = &gd + let w:repkeep = &report + let w:twkeep = &tw setlocal cino = setlocal com = setlocal cpo -=aA setlocal nocin noai setlocal tw =0 + setlocal report=10000 if has("win32") && !has("win95") - let s:swfkeep= &swf + let w:swfkeep= &swf setlocal noswf -" call Decho("setting s:swfkeep to <".&swf.">") +" call Decho("setting w:swfkeep to <".&swf.">") endif " call Dret("NetOptionSave") @@ -3121,36 +3157,50 @@ endfun " NetOptionRestore: restore options {{{1 fun! s:NetOptionRestore() " call Dfunc("NetOptionRestore()") + if !exists("w:netoptionsave") +" call Dret("NetOptionRestore : netoptionsave=".w:netoptionsave) + return + endif + unlet w:netoptionsave - let &ai = s:aikeep - let &cin = s:cinkeep - let &cino = s:cinokeep - let &com = s:comkeep - let &cpo = s:cpokeep - exe "lcd ".s:dirkeep - let &gd = s:gdkeep - let &tw = s:twkeep - if exists("s:swfkeep") + let &ai = w:aikeep + if has("netbeans_intg") || has("sun_workshop") + let &acd = w:acdkeep + endif + let &cin = w:cinkeep + let &cino = w:cinokeep + let &com = w:comkeep + let &cpo = w:cpokeep + if exists("w:dirkeep") + exe "lcd ".w:dirkeep + endif + let &gd = w:gdkeep + let &report = w:repkeep + let &tw = w:twkeep + if exists("w:swfkeep") if &directory == "" " user hasn't specified a swapfile directory; " netrw will temporarily make the swapfile " directory the current local one. let &directory = getcwd() - silent! let &swf = s:swfkeep + silent! let &swf = w:swfkeep set directory= else - let &swf= s:swfkeep - endif - unlet s:swfkeep - endif - unlet s:aikeep - unlet s:cinkeep - unlet s:cinokeep - unlet s:comkeep - unlet s:cpokeep - unlet s:gdkeep - unlet s:twkeep - unlet s:dirkeep + let &swf= w:swfkeep + endif + unlet w:swfkeep + endif + unlet w:aikeep + unlet w:cinkeep + unlet w:cinokeep + unlet w:comkeep + unlet w:cpokeep + unlet w:gdkeep + unlet w:repkeep + unlet w:twkeep + if exists("w:dirkeep") + unlet w:dirkeep + endif " call Dret("NetOptionRestore") endfun |