comparison runtime/plugin/netrw.vim @ 21:db5102f7e29f

updated for version 7.0013
author vimboss
date Thu, 29 Jul 2004 08:43:53 +0000
parents 631143ac4a01
children cc049b00ee70
comparison
equal deleted inserted replaced
20:4ac1dce8dd5e 21:db5102f7e29f
1 " netrw.vim: Handles file transfer and remote directory listing across a network 1 " netrw.vim: Handles file transfer and remote directory listing across a network
2 " Last Change: Jul 08, 2004 2 " Last Change: Jul 26, 2004
3 " Maintainer: Charles E. Campbell, Jr. PhD <drchipNOSPAM at campbellfamily.biz> 3 " Maintainer: Charles E. Campbell, Jr. PhD <drchipNOSPAM at campbellfamily.biz>
4 " Version: 47l ASTRO-ONLY 4 " Version: 47m
5 " License: Vim License (see vim's :help license) 5 " License: Vim License (see vim's :help license)
6 " 6 "
7 " But be doers of the word, and not only hearers, deluding your own selves 7 " But be doers of the word, and not only hearers, deluding your own selves
8 " (James 1:22 RSV) 8 " (James 1:22 RSV)
9 " =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 9 " =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
10 10
11 " Exit quickly when already loaded or when 'compatible' is set. {{{1 11 " Exit quickly when already loaded or when 'compatible' is set. {{{1
12 if exists("loaded_netrw") || &cp 12 if exists("loaded_netrw") || &cp
13 finish 13 finish
14 endif 14 endif
15 let loaded_netrw = "v47l ASTRO-ONLY" 15 let loaded_netrw = "v47m"
16 let s:save_cpo = &cpo 16 let s:save_cpo = &cpo
17 let loaded_explorer = 1 17 let loaded_explorer = 1
18 set cpo&vim 18 set cpo&vim
19 19
20 " --------------------------------------------------------------------- 20 " ---------------------------------------------------------------------
77 endif 77 endif
78 if !exists("g:netrw_longlist") || g:netrw_longlist == 0 78 if !exists("g:netrw_longlist") || g:netrw_longlist == 0
79 let g:netrw_longlist= 0 79 let g:netrw_longlist= 0
80 else 80 else
81 let g:netrw_longlist= 1 81 let g:netrw_longlist= 1
82 let g:netrw_list_cmd= "ssh HOSTNAME ls -FLa -l" 82 let g:netrw_list_cmd= "ssh HOSTNAME ls -FLa -lk"
83 endif 83 endif
84 if !exists("g:netrw_timefmt") 84 if !exists("g:netrw_timefmt")
85 let g:netrw_timefmt= "%c" 85 let g:netrw_timefmt= "%c"
86 endif 86 endif
87 if !exists("g:netrw_local_rmdir") 87 if !exists("g:netrw_local_rmdir")
97 if !exists("g:netrw_local_mkdir") 97 if !exists("g:netrw_local_mkdir")
98 let g:netrw_local_mkdir= "mkdir" 98 let g:netrw_local_mkdir= "mkdir"
99 endif 99 endif
100 if !exists("g:netrw_mkdir_cmd") 100 if !exists("g:netrw_mkdir_cmd")
101 let g:netrw_mkdir_cmd= "ssh HOSTNAME mkdir" 101 let g:netrw_mkdir_cmd= "ssh HOSTNAME mkdir"
102 endif
103 if !exists("g:netrw_hide")
104 let g:netrw_hide= 1
102 endif 105 endif
103 106
104 " BufEnter event ignored by decho when following variable is true 107 " BufEnter event ignored by decho when following variable is true
105 " Has a side effect that doau BufReadPost doesn't work, so 108 " Has a side effect that doau BufReadPost doesn't work, so
106 " files read by network transfer aren't appropriately highlighted. 109 " files read by network transfer aren't appropriately highlighted.
171 au BufReadCmd file:///* exe "silent doau BufReadPre ".expand("<afile>")|exe 'e /'.substitute(expand("<afile>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<afile>") 174 au BufReadCmd file:///* exe "silent doau BufReadPre ".expand("<afile>")|exe 'e /'.substitute(expand("<afile>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<afile>")
172 au BufReadCmd file://localhost/* exe "silent doau BufReadPre ".expand("<afile>")|exe 'e /'.substitute(expand("<afile>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<afile>") 175 au BufReadCmd file://localhost/* exe "silent doau BufReadPre ".expand("<afile>")|exe 'e /'.substitute(expand("<afile>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<afile>")
173 endif 176 endif
174 au BufReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "silent doau BufReadPre ".expand("<afile>")|exe "Nread 0r ".expand("<afile>")|exe "silent doau BufReadPost ".expand("<afile>") 177 au BufReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "silent doau BufReadPre ".expand("<afile>")|exe "Nread 0r ".expand("<afile>")|exe "silent doau BufReadPost ".expand("<afile>")
175 au FileReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "silent doau BufReadPre ".expand("<afile>")|exe "Nread " .expand("<afile>")|exe "silent doau BufReadPost ".expand("<afile>") 178 au FileReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "silent doau BufReadPre ".expand("<afile>")|exe "Nread " .expand("<afile>")|exe "silent doau BufReadPost ".expand("<afile>")
176 au BufWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://* exe "Nwrite " .expand("<afile>")|call <SID>NetRestorePosn() 179 au BufWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://* exe "silent doau BufWritePre ".expand("<afile>")|exe "Nwrite " .expand("<afile>")|exe "silent doau BufWritePost ".expand("<afile>")
177 augroup END 180 augroup END
178 endif 181 endif
179 182
180 " ------------------------------------------------------------------------ 183 " ------------------------------------------------------------------------
181 " Commands: :Nread, :Nwrite, and :NetUserPass {{{1 184 " Commands: :Nread, :Nwrite, and :NetUserPass {{{1
984 if a:dirname !~ dirpat 987 if a:dirname !~ dirpat
985 echoerr "NetBrowse: I don't understand your dirname<".a:dirname.">" 988 echoerr "NetBrowse: I don't understand your dirname<".a:dirname.">"
986 " call Dret("NetBrowse 0 : badly formatted dirname") 989 " call Dret("NetBrowse 0 : badly formatted dirname")
987 return 0 990 return 0
988 endif 991 endif
992
989 let method = substitute(a:dirname,dirpat,'\1','') 993 let method = substitute(a:dirname,dirpat,'\1','')
990 let user = substitute(a:dirname,dirpat,'\2','') 994 let user = substitute(a:dirname,dirpat,'\2','')
991 let machine = substitute(a:dirname,dirpat,'\3','') 995 let machine = substitute(a:dirname,dirpat,'\3','')
992 let path = substitute(a:dirname,dirpat,'\4','') 996 let path = substitute(a:dirname,dirpat,'\4','')
993 let fname = substitute(a:dirname,'^.*/\ze.','','') 997 let fname = substitute(a:dirname,'^.*/\ze.','','')
1059 else 1063 else
1060 enew! 1064 enew!
1061 endif 1065 endif
1062 setlocal ts=32 bt=nofile bh=wipe nobl 1066 setlocal ts=32 bt=nofile bh=wipe nobl
1063 exe 'file '.escape(bufname,' ') 1067 exe 'file '.escape(bufname,' ')
1068 " call Decho("renaming file to bufname<".bufname.">")
1064 setlocal bt=nowrite bh=hide nobl 1069 setlocal bt=nowrite bh=hide nobl
1065 nnoremap <buffer> <silent> <cr> :exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetDir()))<cr> 1070 nnoremap <buffer> <silent> <cr> :exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetDir()))<cr>
1066 nnoremap <buffer> <silent> <c-l> :exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'./'))<cr> 1071 nnoremap <buffer> <silent> <c-l> :exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'./'))<cr>
1067 nnoremap <buffer> <silent> - :exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'../'))<cr> 1072 nnoremap <buffer> <silent> - :exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'../'))<cr>
1068 nnoremap <buffer> <silent> a :let g:netrw_list_showall=1<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'./'))<cr> 1073 nnoremap <buffer> <silent> a :let g:netrw_hide=!g:netrw_hide<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'./'))<cr>
1069 nnoremap <buffer> <silent> <Leader>H :call <SID>NetHideEdit(0)<cr> 1074 nnoremap <buffer> <silent> <Leader>h :call <SID>NetHideEdit(0)<cr>
1070 nnoremap <buffer> <silent> i :call <SID>NetLongList(0)<cr> 1075 nnoremap <buffer> <silent> i :call <SID>NetSavePosn()<bar>call <SID>NetLongList(0)<bar>call <SID>NetRestorePosn()<cr>
1071 nnoremap <buffer> <silent> o :exe g:netrw_winsize."wincmd s"<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetDir()))<cr> 1076 nnoremap <buffer> <silent> o :exe g:netrw_winsize."wincmd s"<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetDir()))<cr>
1072 nnoremap <buffer> <silent> r :let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetDir()))<cr> 1077 nnoremap <buffer> <silent> r :let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetDir()))<cr>
1073 nnoremap <buffer> <silent> s :let g:netrw_sort_by= (g:netrw_sort_by =~ 'n')? 'time' : (g:netrw_sort_by =~ 't')? 'size' : 'name'<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'./'))<cr> 1078 nnoremap <buffer> <silent> s :let g:netrw_sort_by= (g:netrw_sort_by =~ 'n')? 'time' : (g:netrw_sort_by =~ 't')? 'size' : 'name'<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'./'))<cr>
1074 nnoremap <buffer> <silent> v :exe g:netrw_winsize."wincmd v"<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetDir()))<cr> 1079 nnoremap <buffer> <silent> v :exe g:netrw_winsize."wincmd v"<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetDir()))<cr>
1075 nnoremap <buffer> <silent> x :exe "norm! 0"<bar>call <SID>NetBrowseX(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetDir()),1)<cr> 1080 nnoremap <buffer> <silent> x :exe "norm! 0"<bar>call <SID>NetBrowseX(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetDir()),1)<cr>
1077 exe 'nnoremap <buffer> <silent> <del> :exe "norm! 0"<bar>call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>' 1082 exe 'nnoremap <buffer> <silent> <del> :exe "norm! 0"<bar>call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>'
1078 exe 'vnoremap <buffer> <silent> <del> :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>' 1083 exe 'vnoremap <buffer> <silent> <del> :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>'
1079 exe 'nnoremap <buffer> <silent> D :exe "norm! 0"<bar>call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>' 1084 exe 'nnoremap <buffer> <silent> D :exe "norm! 0"<bar>call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>'
1080 exe 'vnoremap <buffer> <silent> D :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>' 1085 exe 'vnoremap <buffer> <silent> D :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>'
1081 exe 'nnoremap <buffer> <silent> R :exe "norm! 0"<bar>call <SID>NetBrowseRename("'.user.machine.'","'.path.'")<cr>' 1086 exe 'nnoremap <buffer> <silent> R :exe "norm! 0"<bar>call <SID>NetBrowseRename("'.user.machine.'","'.path.'")<cr>'
1082 exe 'nnoremap <buffer> <silent> <Leader>M :call <SID>NetMakeDir("'.user.machine.'")<cr>' 1087 exe 'vnoremap <buffer> <silent> R :call <SID>NetBrowseRename("'.user.machine.'","'.path.'")<cr>'
1088 exe 'nnoremap <buffer> <silent> <Leader>m :call <SID>NetMakeDir("'.user.machine.'")<cr>'
1083 nnoremap <buffer> ? :he netrw-browse-cmds<cr> 1089 nnoremap <buffer> ? :he netrw-browse-cmds<cr>
1084 setlocal ma 1090 setlocal ma
1085 1091
1086 " Set up the banner 1092 " Set up the banner
1087 " call Decho("executing: r! ".listcmd." '".path."'") 1093 " call Decho("executing: r! ".listcmd." '".path."'")
1096 keepjumps put ='\" Sort sequence: '.g:netrw_sort_sequence 1102 keepjumps put ='\" Sort sequence: '.g:netrw_sort_sequence
1097 else 1103 else
1098 " sorted by size or date 1104 " sorted by size or date
1099 keepjumps put ='\" Sorted by '.g:netrw_sort_by 1105 keepjumps put ='\" Sorted by '.g:netrw_sort_by
1100 endif 1106 endif
1101 if g:netrw_list_hide != "" && !exists("g:netrw_list_showall") 1107 if g:netrw_list_hide != "" && g:netrw_hide
1102 keepjumps put ='\" Hiding: '.g:netrw_list_hide 1108 keepjumps put ='\" Hiding: '.g:netrw_list_hide
1103 let g:netrw_bannercnt= g:netrw_bannercnt + 1 1109 let g:netrw_bannercnt= g:netrw_bannercnt + 1
1104 endif 1110 endif
1105 keepjumps put ='\" ==============================' 1111 keepjumps put ='\" =============================='
1106 1112
1109 keepjumps 1d 1115 keepjumps 1d
1110 1116
1111 " manipulate the directory listing (hide, sort) 1117 " manipulate the directory listing (hide, sort)
1112 setlocal ft=netrwlist 1118 setlocal ft=netrwlist
1113 if line("$") >= g:netrw_bannercnt 1119 if line("$") >= g:netrw_bannercnt
1114 if !exists("g:netrw_list_showall") 1120 if g:netrw_hide && g:netrw_list_hide != ""
1115 if g:netrw_list_hide != "" 1121 call s:NetrwListHide()
1116 call s:NetrwListHide()
1117 endif
1118 else
1119 unlet g:netrw_list_showall
1120 endif 1122 endif
1121 if g:netrw_longlist 1123 if g:netrw_longlist
1122 " do a long listing; these substitutions need to be done prior to sorting 1124 " do a long listing; these substitutions need to be done prior to sorting
1123 keepjumps silent /^total\s*\d\+$/d 1125 keepjumps silent /^total\s*\d\+$/d
1124 exe 'keepjumps silent '.g:netrw_bannercnt.',$s/ -> .*$//e' 1126 exe 'keepjumps silent '.g:netrw_bannercnt.',$s/ -> .*$//e'
1125 exe 'keepjumps silent '.g:netrw_bannercnt.',$s/\(\S\+\s\+\S\+\s\+\S\+\s\+\S\+\s\+\S\+\s\+\S\+\s\+\S\+\s\+\S\+\)\s\+\(\S\+\)$/\2\t\1/e' 1127 exe 'keepjumps silent '.g:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2\t\1/e'
1126 exe g:netrw_bannercnt 1128 exe g:netrw_bannercnt
1127 endif 1129 endif
1128 if g:netrw_sort_by =~ "^n" 1130 if g:netrw_sort_by =~ "^n"
1129 call s:SetSort() 1131 call s:SetSort()
1130 exe 'keepjumps silent '.g:netrw_bannercnt.',$call s:NetSort()' 1132 exe 'keepjumps silent '.g:netrw_bannercnt.',$call s:NetSort()'
1131 exe 'keepjumps silent '.g:netrw_bannercnt.',$s/^\d\{3}\///e' 1133 exe 'keepjumps silent '.g:netrw_bannercnt.',$s/^\d\{3}\///e'
1132 endif 1134 endif
1133 endif 1135 if g:netrw_longlist
1134 let prvbuf= bufnr(bufname) 1136 " shorten the list to keep its width <= 80 characters
1135 if prvbuf != -1 1137 exe "keepjumps silent ".g:netrw_bannercnt.',$s/\t[-dstrwx]\+/\t/e'
1136 exe "silent! b ".prvbuf 1138 endif
1137 endif 1139 endif
1138 1140
1139 setlocal noma nomod 1141 setlocal noma nomod
1140 1142
1141 " call Dret("NetBrowse 1") 1143 " call Dret("NetBrowse 1")
1186 endfun 1188 endfun
1187 1189
1188 " --------------------------------------------------------------------- 1190 " ---------------------------------------------------------------------
1189 " NetGetDir: it gets the directory named under the cursor 1191 " NetGetDir: it gets the directory named under the cursor
1190 fun! <SID>NetGetDir() 1192 fun! <SID>NetGetDir()
1191 " call Dfunc("NetGetDir()") 1193 " call Dfunc("NetGetDir() line#".line("."))
1192 let dirname= getline(".") 1194 let dirname= getline(".")
1193 if dirname =~ '\t' 1195 if dirname =~ '\t'
1194 let dirname= substitute(dirname,'\t.*$','','e') 1196 let dirname= substitute(dirname,'\t.*$','','e')
1195 endif 1197 endif
1196 " call Dret("NetGetDir <".dirname.">") 1198 " call Dret("NetGetDir <".dirname.">")
1209 " remove multiple files and directories 1211 " remove multiple files and directories
1210 while ctr <= a:lastline 1212 while ctr <= a:lastline
1211 exe ctr 1213 exe ctr
1212 1214
1213 norm! 0 1215 norm! 0
1214 let rmfile= a:path.expand("<cWORD>") 1216 let rmfile= a:path.s:NetGetDir()
1215 " call Decho("rmfile<".rmfile.">") 1217 " call Decho("rmfile<".rmfile.">")
1216 1218
1217 if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '/$') 1219 if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '/$')
1218 " attempt to remove file 1220 " attempt to remove file
1219 let netrw_rm_cmd= substitute(g:netrw_rm_cmd,'HOSTNAME',a:usrhost,'').' '.rmfile 1221 let netrw_rm_cmd= substitute(g:netrw_rm_cmd,'HOSTNAME',a:usrhost,'').' '.rmfile
1263 " call Dret("NetBrowseRm") 1265 " call Dret("NetBrowseRm")
1264 endfun 1266 endfun
1265 1267
1266 " --------------------------------------------------------------------- 1268 " ---------------------------------------------------------------------
1267 " NetBrowseRename: rename a remote file or directory {{{2 1269 " NetBrowseRename: rename a remote file or directory {{{2
1268 fun! <SID>NetBrowseRename(usrhost,path) 1270 fun! <SID>NetBrowseRename(usrhost,path) range
1269 " call Dfunc("NetBrowseRename(usrhost<".a:usrhost."> path<".a:path.">)") 1271 " call Dfunc("NetBrowseRename(usrhost<".a:usrhost."> path<".a:path.">)")
1270 1272
1271 " preparation for removing multiple files/directories 1273 " preparation for removing multiple files/directories
1272 let ctr = a:firstline 1274 let ctr = a:firstline
1273 let rename_cmd = substitute(g:netrw_rename_cmd,'\<HOSTNAME\>',a:usrhost,'') 1275 let rename_cmd = substitute(g:netrw_rename_cmd,'\<HOSTNAME\>',a:usrhost,'')
1275 " attempt to rename files/directories 1277 " attempt to rename files/directories
1276 while ctr <= a:lastline 1278 while ctr <= a:lastline
1277 exe "keepjumps ".ctr 1279 exe "keepjumps ".ctr
1278 1280
1279 norm! 0 1281 norm! 0
1280 let oldname= a:path.expand("<cWORD>") 1282 let oldname= a:path.s:NetGetDir()
1281 " call Decho("oldname<".oldname.">") 1283 " call Decho("oldname<".oldname.">")
1282 1284
1283 call inputsave() 1285 call inputsave()
1284 let newname= input("Moving ".a:usrhost."'s ".oldname." to : ",oldname) 1286 let newname= input("Moving ".a:usrhost."'s ".oldname." to : ",oldname)
1285 call inputrestore() 1287 call inputrestore()
1424 1426
1425 if newdirname == "" 1427 if newdirname == ""
1426 " call Dret("NetMakeDir : user aborted with bare <cr>") 1428 " call Dret("NetMakeDir : user aborted with bare <cr>")
1427 return 1429 return
1428 endif 1430 endif
1431 let newdirname= escape(newdirname,' ')
1429 1432
1430 if a:usrhost == "" 1433 if a:usrhost == ""
1431 1434
1432 " Local mkdir: 1435 " Local mkdir:
1433 " sanity checks 1436 " sanity checks
1483 1486
1484 " " unfortunate interaction -- when putting Dfunc/Dret above 1487 " " unfortunate interaction -- when putting Dfunc/Dret above
1485 " one can no longer enter the DBG buffer. 1488 " one can no longer enter the DBG buffer.
1486 " call Dfunc("LocalBrowse(dirname<".a:dirname.">)") 1489 " call Dfunc("LocalBrowse(dirname<".a:dirname.">)")
1487 1490
1488 exe 'cd '.escape(a:dirname,' ') 1491 exe 'cd '.escape(substitute(a:dirname,'\\','/','ge'),' ')
1489 let dirname= getcwd()."/" 1492 let dirname= substitute(getcwd(),'\\','/','ge')."/"
1490 " call Decho("dirname<".dirname.">") 1493 " call Decho("dirname<".dirname.">")
1491 1494
1492 " make this buffer modifiable 1495 " make this buffer modifiable
1493 setlocal ma 1496 setlocal ma
1494 1497
1500 if dirnamenr != -1 && bufname(dirnamenr) != dirname 1503 if dirnamenr != -1 && bufname(dirnamenr) != dirname
1501 " try removing the trailing "/" 1504 " try removing the trailing "/"
1502 let dirnamenr= bufnr(substitute(dirname,'/$','','e')) 1505 let dirnamenr= bufnr(substitute(dirname,'/$','','e'))
1503 endif 1506 endif
1504 " call Decho("bufnr(dirname<".dirname.">)=".dirnamenr) 1507 " call Decho("bufnr(dirname<".dirname.">)=".dirnamenr)
1508 " call Dredir("file")
1505 1509
1506 if dirnamenr != -1 && bufexists(dirname) 1510 if dirnamenr != -1 && bufexists(dirname)
1507 " buffer already exists (hidden), so switch to it! 1511 " buffer already exists (hidden), so switch to it!
1512 " call Dredir("file")
1508 exe "b ".dirnamenr 1513 exe "b ".dirnamenr
1509 exe 'cd '.escape(dirname,' ') 1514 " call Dredir("file")
1515 exe 'cd '.escape(substitute(a:dirname,'\\','/','ge'),' ')
1516 " call Dredir("file")
1510 " call Decho("changed directory to<".dirname.">") 1517 " call Decho("changed directory to<".dirname.">")
1518 " call Dredir("file")
1511 if a:dirname != "." && line("$") >= 5 1519 if a:dirname != "." && line("$") >= 5
1512 " call Dret("LocalBrowse : buffer already exists with info") 1520 " call Dret("LocalBrowse : buffer already exists with info")
1513 return 1521 return
1514 endif 1522 endif
1523 " call Dredir("file")
1515 " call Decho("buffer already exists, but needs listing (buf#".dirnamenr.")") 1524 " call Decho("buffer already exists, but needs listing (buf#".dirnamenr.")")
1516 keepjumps %d 1525 keepjumps %d
1526 " call Dredir("file")
1527 if expand("%:p") != escape(dirname,' ')
1528 exe 'silent! file '.escape(dirname,' ')
1529 " call Decho("renamed file to<".escape(dirname,' ').">")
1530 endif
1531 " call Dredir("file")
1517 else 1532 else
1518 " call Dredir("ls!") 1533 " call Dredir("ls!")
1519 " call Decho("generate new buffer named<".dirname.">") 1534 " call Decho("generate new buffer named<".escape(dirname,' ').">")
1520 silent! enew! 1535 silent! enew!
1521 exe 'silent! file '.escape(dirname,' ') 1536 exe 'silent! file '.escape(dirname,' ')
1537 " call Decho("renamed file to<".escape(dirname,' ').">")
1522 endif 1538 endif
1523 " set standard browser options on buffer 1539 " set standard browser options on buffer
1524 setlocal ts=32 bt=nowrite bh=hide nobl 1540 setlocal ts=32 bt=nowrite bh=hide nobl
1525 1541
1526 " set up all the maps 1542 " set up all the maps
1527 nnoremap <buffer> <silent> <cr> :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(expand("%:p"),<SID>NetGetDir()))<cr> 1543 " call Decho("Setting up local browser maps")
1528 nnoremap <buffer> <silent> <c-l> :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(expand("%:p"),'./'))<cr> 1544 nnoremap <buffer> <silent> <cr> :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(getcwd(),<SID>NetGetDir()))<cr>
1529 nnoremap <buffer> <silent> - :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(expand("%:p"),'../'))<cr> 1545 nnoremap <buffer> <silent> <c-l> :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(getcwd(),'./'))<cr>
1530 nnoremap <buffer> <silent> a :let g:netrw_list_showall=1<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(expand("%:p"),'./'))<cr> 1546 nnoremap <buffer> <silent> - :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(getcwd(),'../'))<cr>
1531 nnoremap <buffer> <silent> <Leader>H :call <SID>NetHideEdit(1)<cr> 1547 nnoremap <buffer> <silent> a :let g:netrw_hide=!g:netrw_hide<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(getcwd(),'./'))<cr>
1532 nnoremap <buffer> <silent> <Leader>M :call <SID>NetMakeDir("")<cr> 1548 nnoremap <buffer> <silent> <Leader>h :call <SID>NetHideEdit(1)<cr>
1549 nnoremap <buffer> <silent> <Leader>m :call <SID>NetMakeDir("")<cr>
1533 nnoremap <buffer> <silent> i :call <SID>NetLongList(1)<cr> 1550 nnoremap <buffer> <silent> i :call <SID>NetLongList(1)<cr>
1534 nnoremap <buffer> <silent> o :exe g:netrw_winsize."wincmd s"<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(expand("%:p"),<SID>NetGetDir()))<cr> 1551 nnoremap <buffer> <silent> o :exe g:netrw_winsize."wincmd s"<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(getcwd(),<SID>NetGetDir()))<cr>
1535 nnoremap <buffer> <silent> r :let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(expand("%:p"),<SID>NetGetDir()))<cr> 1552 nnoremap <buffer> <silent> r :let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(getcwd(),<SID>NetGetDir()))<cr>
1536 nnoremap <buffer> <silent> s :let g:netrw_sort_by= (g:netrw_sort_by =~ 'n')? 'time' : (g:netrw_sort_by =~ 't')? 'size' : 'name'<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(expand("%:p"),'./'))<cr> 1553 nnoremap <buffer> <silent> s :let g:netrw_sort_by= (g:netrw_sort_by =~ 'n')? 'time' : (g:netrw_sort_by =~ 't')? 'size' : 'name'<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(getcwd(),'./'))<cr>
1537 nnoremap <buffer> <silent> v :exe g:netrw_winsize."wincmd v"<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(expand("%:p"),<SID>NetGetDir()))<cr> 1554 nnoremap <buffer> <silent> v :exe g:netrw_winsize."wincmd v"<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(getcwd(),<SID>NetGetDir()))<cr>
1538 nnoremap <buffer> <silent> x :exe "norm! 0"<bar>call <SID>NetBrowseX(<SID>LocalBrowseChgDir(expand("%:p"),<SID>NetGetDir()),0)<cr> 1555 nnoremap <buffer> <silent> x :exe "norm! 0"<bar>call <SID>NetBrowseX(<SID>LocalBrowseChgDir(getcwd(),<SID>NetGetDir()),0)<cr>
1539 nnoremap <buffer> <silent> <2-leftmouse> :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(expand("%:p"),<SID>NetGetDir()))<cr> 1556 nnoremap <buffer> <silent> <2-leftmouse> :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(getcwd(),<SID>NetGetDir()))<cr>
1540 exe 'nnoremap <buffer> <silent> <del> :exe "norm! 0"<bar>call <SID>LocalBrowseRm("'.expand("%:p").<SID>NetGetDir().'")<cr>' 1557 exe 'nnoremap <buffer> <silent> <del> :exe "norm! 0"<bar>call <SID>LocalBrowseRm("'.getcwd().'/")<cr>'
1541 exe 'vnoremap <buffer> <silent> <del> :call <SID>LocalBrowseRm("'.expand("%:p").<SID>NetGetDir().'")<cr>' 1558 exe 'vnoremap <buffer> <silent> <del> :call <SID>LocalBrowseRm("'.getcwd().'/")<cr>'
1542 exe 'nnoremap <buffer> <silent> D :exe "norm! 0"<bar>call <SID>LocalBrowseRm("'.expand("%:p").<SID>NetGetDir().'")<cr>' 1559 exe 'nnoremap <buffer> <silent> D :exe "norm! 0"<bar>call <SID>LocalBrowseRm("'.getcwd().'/")<cr>'
1543 exe 'vnoremap <buffer> <silent> D :call <SID>LocalBrowseRm("'.expand("%:p").<SID>NetGetDir().'")<cr>' 1560 exe 'vnoremap <buffer> <silent> D :call <SID>LocalBrowseRm("'.getcwd().'/")<cr>'
1544 exe 'nnoremap <buffer> <silent> R :exe "norm! 0"<bar>call <SID>LocalBrowseRename("'.expand("%:p").<SID>NetGetDir().'")<cr>' 1561 exe 'nnoremap <buffer> <silent> R :exe "norm! 0"<bar>call <SID>LocalBrowseRename("'.getcwd().'/")<cr>'
1562 exe 'vnoremap <buffer> <silent> R :call <SID>LocalBrowseRename("'.getcwd().'/")<cr>'
1563 exe 'nnoremap <buffer> <silent> <Leader>m :call <SID>NetMakeDir("")<cr>'
1545 nnoremap <buffer> ? :he netrw-dir<cr> 1564 nnoremap <buffer> ? :he netrw-dir<cr>
1546 1565
1547 " Set up the banner 1566 " Set up the banner
1567 " call Decho("set up banner")
1548 keepjumps put ='\" =================' 1568 keepjumps put ='\" ================='
1549 keepjumps 1d 1569 keepjumps 1d
1550 keepjumps put ='\" Directory Listing' 1570 keepjumps put ='\" Directory Listing'
1551 keepjumps put ='\" '.dirname 1571 keepjumps put ='\" '.dirname
1552 let g:netrw_bannercnt= 6 1572 let g:netrw_bannercnt= 6
1573
1553 if g:netrw_sort_by =~ "^n" 1574 if g:netrw_sort_by =~ "^n"
1575 " call Decho("directories will be sorted by name")
1554 " sorted by name 1576 " sorted by name
1555 let g:netrw_bannercnt= g:netrw_bannercnt + 1 1577 let g:netrw_bannercnt= g:netrw_bannercnt + 1
1556 keepjumps put ='\" Sorted by '.g:netrw_sort_by 1578 keepjumps put ='\" Sorted by '.g:netrw_sort_by
1557 keepjumps put ='\" Sort sequence: '.g:netrw_sort_sequence 1579 keepjumps put ='\" Sort sequence: '.g:netrw_sort_sequence
1558 else 1580 else
1581 " call Decho("directories will be sorted by size or date")
1559 " sorted by size or date 1582 " sorted by size or date
1560 keepjumps put ='\" Sorted by '.g:netrw_sort_by 1583 keepjumps put ='\" Sorted by '.g:netrw_sort_by
1561 endif 1584 endif
1562 if g:netrw_list_hide != "" && !exists("g:netrw_list_showall") 1585 if g:netrw_list_hide != "" && g:netrw_hide
1563 keepjumps put ='\" Hiding: '.g:netrw_list_hide 1586 keepjumps put ='\" Hiding: '.g:netrw_list_hide
1564 let g:netrw_bannercnt= g:netrw_bannercnt + 1 1587 let g:netrw_bannercnt= g:netrw_bannercnt + 1
1565 endif 1588 endif
1566 keepjumps put ='\" =================' 1589 keepjumps put ='\" ================='
1567 1590
1569 call LocalBrowseList(dirname) 1592 call LocalBrowseList(dirname)
1570 1593
1571 " manipulate the directory listing (hide, sort) 1594 " manipulate the directory listing (hide, sort)
1572 setlocal ft=netrwlist 1595 setlocal ft=netrwlist
1573 if line("$") >= g:netrw_bannercnt 1596 if line("$") >= g:netrw_bannercnt
1574 if !exists("g:netrw_list_showall") 1597 if g:netrw_hide && g:netrw_list_hide != ""
1575 if g:netrw_list_hide != "" 1598 call s:NetrwListHide()
1576 call s:NetrwListHide()
1577 endif
1578 else
1579 unlet g:netrw_list_showall
1580 endif 1599 endif
1581 if g:netrw_sort_by =~ "^n" 1600 if g:netrw_sort_by =~ "^n"
1582 call s:SetSort() 1601 call s:SetSort()
1583 exe 'keepjumps silent '.g:netrw_bannercnt.',$call s:NetSort()' 1602 exe 'keepjumps silent '.g:netrw_bannercnt.',$call s:NetSort()'
1584 exe 'keepjumps silent '.g:netrw_bannercnt.',$s/^\d\{3}\///e' 1603 exe 'keepjumps silent '.g:netrw_bannercnt.',$s/^\d\{3}\///e'
1586 exe 'keepjumps silent '.g:netrw_bannercnt.',$call s:NetSort()' 1605 exe 'keepjumps silent '.g:netrw_bannercnt.',$call s:NetSort()'
1587 exe 'keepjumps silent '.g:netrw_bannercnt.',$s/^\d\{-}\///e' 1606 exe 'keepjumps silent '.g:netrw_bannercnt.',$s/^\d\{-}\///e'
1588 endif 1607 endif
1589 endif 1608 endif
1590 exe g:netrw_bannercnt 1609 exe g:netrw_bannercnt
1591 try
1592 exe 'cd '.escape(substitute(dirname,'/$','','e'),' ')
1593 " call Decho("changed directory to<".dirname.">")
1594 catch
1595 echoerr "Not a directory: <".dirname.">"
1596 endtry
1597 1610
1598 setlocal noma nomod 1611 setlocal noma nomod
1599 1612
1600 " call Dret("LocalBrowse") 1613 " call Dret("LocalBrowse : file<".expand("%:p").">")
1601 endfun 1614 endfun
1602 1615
1603 " --------------------------------------------------------------------- 1616 " ---------------------------------------------------------------------
1604 " LocalBrowseList: does the job of "ls" for local directories {{{2 1617 " LocalBrowseList: does the job of "ls" for local directories {{{2
1605 fun! LocalBrowseList(dirname) 1618 fun! LocalBrowseList(dirname)
1621 if isdirectory(file) 1634 if isdirectory(file)
1622 let pfile= file."/" 1635 let pfile= file."/"
1623 endif 1636 endif
1624 let pfile= strpart(pfile,dirnamelen) 1637 let pfile= strpart(pfile,dirnamelen)
1625 if g:netrw_longlist 1638 if g:netrw_longlist
1626 let pfile= pfile."\t".getfsize(file)."\t".strftime(g:netrw_timefmt,getftime(file)) 1639 let sz = getfsize(file)
1640 let fsz = strpart(" ",1,15-strlen(sz)).sz
1641 let pfile= pfile."\t".fsz." ".strftime(g:netrw_timefmt,getftime(file))
1627 endif 1642 endif
1628 if g:netrw_sort_by =~ "^t" 1643 if g:netrw_sort_by =~ "^t"
1629 " sort by time (handles time up to 1 quintillion seconds, US) 1644 " sort by time (handles time up to 1 quintillion seconds, US)
1630 " call Decho("getftime(".file.")=".getftime(file)) 1645 " call Decho("getftime(".file.")=".getftime(file))
1631 let t = getftime(file) 1646 let t = getftime(file)
1653 " LocalBrowseChgDir: constructs a new directory based on the current {{{2 1668 " LocalBrowseChgDir: constructs a new directory based on the current {{{2
1654 " directory and a new directory name 1669 " directory and a new directory name
1655 fun! <SID>LocalBrowseChgDir(dirname,newdir) 1670 fun! <SID>LocalBrowseChgDir(dirname,newdir)
1656 " call Dfunc("LocalBrowseChgDir(dirname<".a:dirname."> newdir<".a:newdir.">)") 1671 " call Dfunc("LocalBrowseChgDir(dirname<".a:dirname."> newdir<".a:newdir.">)")
1657 1672
1658 let dirname= a:dirname 1673 let dirname= substitute(a:dirname,'\\','/','ge')
1659 let newdir = a:newdir 1674 let newdir = a:newdir
1660 1675
1661 if dirname !~ '/$' 1676 if dirname !~ '/$'
1662 " apparently vim is "recognizing" that it is in the home directory and 1677 " apparently vim is "recognizing" that it is in the home directory and
1663 " is removing the "/". Bad idea, so I have to put it back. 1678 " is removing the "/". Bad idea, so I have to put it back.
1704 " remove multiple files and directories 1719 " remove multiple files and directories
1705 while ctr <= a:lastline 1720 while ctr <= a:lastline
1706 exe ctr 1721 exe ctr
1707 1722
1708 norm! 0 1723 norm! 0
1709 let rmfile= a:path.expand("<cWORD>") 1724 let rmfile= a:path.s:NetGetDir()
1710 " call Decho("rmfile<".rmfile.">") 1725 " call Decho("rmfile<".rmfile.">")
1711 1726
1712 if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '/$') 1727 if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '/$')
1713 " attempt to remove file 1728 " attempt to remove file
1714 call inputsave() 1729 call inputsave()
1722 else 1737 else
1723 " attempt to remove directory 1738 " attempt to remove directory
1724 call inputsave() 1739 call inputsave()
1725 let ok= input("Confirm deletion of directory<".rmfile."> ","y") 1740 let ok= input("Confirm deletion of directory<".rmfile."> ","y")
1726 call inputrestore() 1741 call inputrestore()
1727 let rmfile= substitute(rmfile,'/$','','e') 1742 let rmfile= escape(substitute(rmfile,'/$','','e'),' ')
1728 1743
1729 if ok == "y" 1744 if ok == "y"
1730 call system(g:netrw_local_rmdir." ".rmfile) 1745 call system(g:netrw_local_rmdir." ".rmfile)
1731 " call Decho("v:shell_error=".v:shell_error) 1746 " call Decho("v:shell_error=".v:shell_error)
1732 1747
1762 " call Dret("LocalBrowseRm") 1777 " call Dret("LocalBrowseRm")
1763 endfun 1778 endfun
1764 1779
1765 " --------------------------------------------------------------------- 1780 " ---------------------------------------------------------------------
1766 " LocalBrowseRename: rename a remote file or directory {{{2 1781 " LocalBrowseRename: rename a remote file or directory {{{2
1767 fun! <SID>LocalBrowseRename(path) 1782 fun! <SID>LocalBrowseRename(path) range
1768 " call Dfunc("LocalBrowseRename(path<".a:path.">)") 1783 " call Dfunc("LocalBrowseRename(path<".a:path.">)")
1769 1784
1770 " preparation for removing multiple files/directories 1785 " preparation for removing multiple files/directories
1771 let ctr= a:firstline 1786 let ctr= a:firstline
1772 1787
1773 " attempt to rename files/directories 1788 " attempt to rename files/directories
1774 while ctr <= a:lastline 1789 while ctr <= a:lastline
1775 exe "keepjumps ".ctr 1790 exe "keepjumps ".ctr
1776 1791
1777 norm! 0 1792 norm! 0
1778 let oldname= a:path.expand("<cWORD>") 1793 let oldname= a:path.s:NetGetDir()
1779 " call Decho("oldname<".oldname.">") 1794 " call Decho("oldname<".oldname.">")
1780 1795
1781 call inputsave() 1796 call inputsave()
1782 let newname= input("Moving ".oldname." to : ",oldname) 1797 let newname= input("Moving ".oldname." to : ",oldname)
1783 call inputrestore() 1798 call inputrestore()
1788 let ctr= ctr + 1 1803 let ctr= ctr + 1
1789 endwhile 1804 endwhile
1790 1805
1791 " refresh the directory 1806 " refresh the directory
1792 let curline= line(".") 1807 let curline= line(".")
1808 " call Decho("refresh the directory listing")
1793 call <SID>LocalBrowse(<SID>LocalBrowseChgDir(expand("%"),'./')) 1809 call <SID>LocalBrowse(<SID>LocalBrowseChgDir(expand("%"),'./'))
1794 exe "keepjumps ".curline 1810 exe "keepjumps ".curline
1795 " call Dret("LocalBrowseRename") 1811 " call Dret("LocalBrowseRename")
1796 endfun 1812 endfun
1797 1813