Mercurial > vim
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 |