Mercurial > vim
comparison runtime/autoload/netrw.vim @ 650:662e40bd2be1
updated for version 7.0191
author | vimboss |
---|---|
date | Wed, 01 Feb 2006 21:51:12 +0000 |
parents | 7fe13e0f5dce |
children | 82ef0c58b012 |
comparison
equal
deleted
inserted
replaced
649:8157079cea85 | 650:662e40bd2be1 |
---|---|
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 " AUTOLOAD PORTION | 2 " AUTOLOAD PORTION |
3 " Date: Nov 28, 2005 | 3 " Date: Jan 30, 2006 |
4 " Version: 76 | 4 " Version: 78 |
5 " Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz> | 5 " Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz> |
6 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim | 6 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim |
7 " Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1 | 7 " Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1 |
8 " Permission is hereby granted to use and distribute this code, | 8 " Permission is hereby granted to use and distribute this code, |
9 " with or without modifications, provided that this copyright | 9 " with or without modifications, provided that this copyright |
21 | 21 |
22 " Exception for &cp: {{{1 | 22 " Exception for &cp: {{{1 |
23 if &cp || exists("g:loaded_netrw") | 23 if &cp || exists("g:loaded_netrw") |
24 finish | 24 finish |
25 endif | 25 endif |
26 let g:loaded_netrw = "v76" | 26 let g:loaded_netrw = "v78" |
27 if v:version < 700 | 27 if v:version < 700 |
28 echohl WarningMsg | echo "***netrw*** you need vim version 7.0 or later for version ".g:loaded_netrw." of netrw" | echohl None | 28 echohl WarningMsg | echo "***netrw*** you need vim version 7.0 or later for version ".g:loaded_netrw." of netrw" | echohl None |
29 finish | 29 finish |
30 endif | 30 endif |
31 let s:keepcpo= &cpo | 31 let s:keepcpo= &cpo |
32 set cpo&vim | 32 set cpo&vim |
33 " call Decho("doing autoload/netrw.vim") | 33 " call Decho("doing autoload/netrw.vim") |
34 | 34 |
35 " --------------------------------------------------------------------- | 35 " ====================== |
36 " Default values for netrw's global protocol variables {{{1 | 36 " Netrw Variables: {{{1 |
37 " ====================== | |
38 | |
39 " --------------------------------------------------------------------- | |
40 " Default values for netrw's global protocol variables {{{2 | |
37 if !exists("g:netrw_dav_cmd") | 41 if !exists("g:netrw_dav_cmd") |
38 let g:netrw_dav_cmd = "cadaver" | 42 let g:netrw_dav_cmd = "cadaver" |
39 endif | 43 endif |
40 if !exists("g:netrw_fetch_cmd") | 44 if !exists("g:netrw_fetch_cmd") |
41 if executable("fetch") | 45 if executable("fetch") |
82 let s:netrw_has_nt_rcp = 0 | 86 let s:netrw_has_nt_rcp = 0 |
83 let s:netrw_rcpmode = '' | 87 let s:netrw_rcpmode = '' |
84 endif | 88 endif |
85 | 89 |
86 " --------------------------------------------------------------------- | 90 " --------------------------------------------------------------------- |
87 " Default values for netrw's global variables {{{1 | 91 " Default values for netrw's global variables {{{2 |
88 " Default values - a-c ---------- {{{2 | 92 " Default values - a-c ---------- {{{3 |
89 if !exists("g:netrw_alto") | 93 if !exists("g:netrw_alto") |
90 let g:netrw_alto= 0 | 94 let g:netrw_alto= 0 |
91 endif | 95 endif |
92 if !exists("g:netrw_altv") | 96 if !exists("g:netrw_altv") |
93 let g:netrw_altv= 0 | 97 let g:netrw_altv= 0 |
98 endif | |
99 if !exists("g:netrw_browse_split") | |
100 let g:netrw_browse_split= 0 | |
94 endif | 101 endif |
95 if !exists("g:netrw_cygwin") | 102 if !exists("g:netrw_cygwin") |
96 if has("win32") || has("win95") || has("win64") || has("win16") | 103 if has("win32") || has("win95") || has("win64") || has("win16") |
97 if &shell == "bash" | 104 if &shell == "bash" |
98 let g:netrw_cygwin= 1 | 105 let g:netrw_cygwin= 1 |
101 endif | 108 endif |
102 else | 109 else |
103 let g:netrw_cygwin= 0 | 110 let g:netrw_cygwin= 0 |
104 endif | 111 endif |
105 endif | 112 endif |
106 " Default values - d-f ---------- {{{2 | 113 " Default values - d-f ---------- {{{3 |
107 if !exists("g:NETRW_DIRHIST_CNT") | 114 if !exists("g:NETRW_DIRHIST_CNT") |
108 let g:NETRW_DIRHIST_CNT= 0 | 115 let g:NETRW_DIRHIST_CNT= 0 |
109 endif | 116 endif |
110 if !exists("g:netrw_dirhistmax") | 117 if !exists("g:netrw_dirhistmax") |
111 let g:netrw_dirhistmax= 10 | 118 let g:netrw_dirhistmax= 10 |
121 endif | 128 endif |
122 endif | 129 endif |
123 if !exists("g:netrw_ftpmode") | 130 if !exists("g:netrw_ftpmode") |
124 let g:netrw_ftpmode= "binary" | 131 let g:netrw_ftpmode= "binary" |
125 endif | 132 endif |
126 " Default values - h-lh ---------- {{{2 | 133 " Default values - h-lh ---------- {{{3 |
127 if !exists("g:netrw_hide") | 134 if !exists("g:netrw_hide") |
128 let g:netrw_hide= 1 | 135 let g:netrw_hide= 1 |
129 endif | 136 endif |
130 if !exists("g:netrw_keepdir") | 137 if !exists("g:netrw_keepdir") |
131 let g:netrw_keepdir= 1 | 138 let g:netrw_keepdir= 1 |
140 endif | 147 endif |
141 endif | 148 endif |
142 if !exists("g:netrw_list_hide") | 149 if !exists("g:netrw_list_hide") |
143 let g:netrw_list_hide= "" | 150 let g:netrw_list_hide= "" |
144 endif | 151 endif |
145 " Default values - lh-lz ---------- {{{2 | 152 " Default values - lh-lz ---------- {{{3 |
146 if !exists("g:netrw_local_mkdir") | 153 if !exists("g:netrw_local_mkdir") |
147 let g:netrw_local_mkdir= "mkdir" | 154 let g:netrw_local_mkdir= "mkdir" |
148 endif | 155 endif |
149 if !exists("g:netrw_local_rmdir") | 156 if !exists("g:netrw_local_rmdir") |
150 let g:netrw_local_rmdir= "rmdir" | 157 let g:netrw_local_rmdir= "rmdir" |
157 let g:netrw_longlist= 0 | 164 let g:netrw_longlist= 0 |
158 endif | 165 endif |
159 if g:netrw_longlist == 1 | 166 if g:netrw_longlist == 1 |
160 let g:netrw_list_cmd= g:netrw_list_cmd." -l" | 167 let g:netrw_list_cmd= g:netrw_list_cmd." -l" |
161 endif | 168 endif |
162 " Default values - m-r ---------- {{{2 | 169 " Default values - m-r ---------- {{{3 |
163 if !exists("g:netrw_maxfilenamelen") | 170 if !exists("g:netrw_maxfilenamelen") |
164 let g:netrw_maxfilenamelen= 32 | 171 let g:netrw_maxfilenamelen= 32 |
165 endif | 172 endif |
166 if !exists("g:netrw_mkdir_cmd") | 173 if !exists("g:netrw_mkdir_cmd") |
167 let g:netrw_mkdir_cmd= g:netrw_ssh_cmd." HOSTNAME mkdir" | 174 let g:netrw_mkdir_cmd= g:netrw_ssh_cmd." HOSTNAME mkdir" |
176 let g:netrw_rmdir_cmd = g:netrw_ssh_cmd." HOSTNAME rmdir" | 183 let g:netrw_rmdir_cmd = g:netrw_ssh_cmd." HOSTNAME rmdir" |
177 endif | 184 endif |
178 if !exists("g:netrw_rmf_cmd") | 185 if !exists("g:netrw_rmf_cmd") |
179 let g:netrw_rmf_cmd = g:netrw_ssh_cmd." HOSTNAME rm -f" | 186 let g:netrw_rmf_cmd = g:netrw_ssh_cmd." HOSTNAME rm -f" |
180 endif | 187 endif |
181 " Default values - s ---------- {{{2 | 188 " Default values - s ---------- {{{3 |
182 if exists("g:netrw_silent") && g:netrw_silent != 0 | 189 if exists("g:netrw_silent") && g:netrw_silent != 0 |
183 let g:netrw_silentxfer= "silent " | 190 let g:netrw_silentxfer= "silent " |
184 else | 191 else |
185 let g:netrw_silentxfer= "" | 192 let g:netrw_silentxfer= "" |
186 endif | 193 endif |
196 let g:netrw_sort_sequence= '[\/]$,*,\.bak$,\.o$,\.h$,\.info$,\.swp$,\.obj$' | 203 let g:netrw_sort_sequence= '[\/]$,*,\.bak$,\.o$,\.h$,\.info$,\.swp$,\.obj$' |
197 endif | 204 endif |
198 if !exists("g:netrw_ssh_browse_reject") | 205 if !exists("g:netrw_ssh_browse_reject") |
199 let g:netrw_ssh_browse_reject='^total\s\+\d\+$' | 206 let g:netrw_ssh_browse_reject='^total\s\+\d\+$' |
200 endif | 207 endif |
201 " Default values - t-w ---------- {{{2 | 208 " Default values - t-w ---------- {{{3 |
202 if !exists("g:netrw_timefmt") | 209 if !exists("g:netrw_timefmt") |
203 let g:netrw_timefmt= "%c" | 210 let g:netrw_timefmt= "%c" |
204 endif | 211 endif |
205 if !exists("g:netrw_win95ftp") | 212 if !exists("g:netrw_win95ftp") |
206 let g:netrw_win95ftp= 1 | 213 let g:netrw_win95ftp= 1 |
207 endif | 214 endif |
208 if !exists("g:netrw_winsize") | 215 if !exists("g:netrw_winsize") |
209 let g:netrw_winsize= "" | 216 let g:netrw_winsize= "" |
210 endif | 217 endif |
211 " --------------------------------------------------------------------- | 218 " --------------------------------------------------------------------- |
212 " Default values for netrw's script variables: {{{1 | 219 " Default values for netrw's script variables: {{{2 |
213 if !exists("s:netrw_cd_escape") | 220 if !exists("s:netrw_cd_escape") |
214 if has("win32") || has("win95") || has("win64") || has("win16") | 221 if has("win32") || has("win95") || has("win64") || has("win16") |
215 let s:netrw_cd_escape="#% " | 222 let s:netrw_cd_escape="#% " |
216 else | 223 else |
217 let s:netrw_cd_escape="[]#*$%'\" ?`!&();<>\\" | 224 let s:netrw_cd_escape="[]#*$%'\" ?`!&();<>\\" |
228 " BufEnter event ignored by decho when following variable is true | 235 " BufEnter event ignored by decho when following variable is true |
229 " Has a side effect that doau BufReadPost doesn't work, so | 236 " Has a side effect that doau BufReadPost doesn't work, so |
230 " files read by network transfer aren't appropriately highlighted. | 237 " files read by network transfer aren't appropriately highlighted. |
231 "let g:decho_bufenter = 1 "Decho | 238 "let g:decho_bufenter = 1 "Decho |
232 | 239 |
240 " ============================== | |
241 " Netrw Utility Functions: {{{1 | |
242 " ============================== | |
243 | |
233 " ------------------------------------------------------------------------ | 244 " ------------------------------------------------------------------------ |
234 " NetSavePosn: saves position of cursor on screen {{{1 | 245 " NetSavePosn: saves position of cursor on screen {{{2 |
235 fun! netrw#NetSavePosn() | 246 fun! netrw#NetSavePosn() |
236 " call Dfunc("NetSavePosn()") | 247 " call Dfunc("NetSavePosn()") |
237 " Save current line and column | 248 " Save current line and column |
238 let w:netrw_winnr= winnr() | 249 let w:netrw_winnr= winnr() |
239 let w:netrw_line = line(".") | 250 let w:netrw_line = line(".") |
246 call netrw#NetRestorePosn() | 257 call netrw#NetRestorePosn() |
247 " call Dret("NetSavePosn : winnr=".w:netrw_winnr." line=".w:netrw_line." col=".w:netrw_col." hline=".w:netrw_hline) | 258 " call Dret("NetSavePosn : winnr=".w:netrw_winnr." line=".w:netrw_line." col=".w:netrw_col." hline=".w:netrw_hline) |
248 endfun | 259 endfun |
249 | 260 |
250 " ------------------------------------------------------------------------ | 261 " ------------------------------------------------------------------------ |
251 " NetRestorePosn: restores the cursor and file position as saved by NetSavePosn() {{{1 | 262 " NetRestorePosn: restores the cursor and file position as saved by NetSavePosn() {{{2 |
252 fun! netrw#NetRestorePosn() | 263 fun! netrw#NetRestorePosn() |
253 " call Dfunc("NetRestorePosn() winnr=".w:netrw_winnr." line=".w:netrw_line." col=".w:netrw_col." hline=".w:netrw_hline) | 264 " call Dfunc("NetRestorePosn() winnr=".w:netrw_winnr." line=".w:netrw_line." col=".w:netrw_col." hline=".w:netrw_hline) |
254 let eikeep= &ei | 265 let eikeep= &ei |
255 set ei=all | 266 set ei=all |
256 | 267 |
273 | 284 |
274 let &ei= eikeep | 285 let &ei= eikeep |
275 " call Dret("NetRestorePosn") | 286 " call Dret("NetRestorePosn") |
276 endfun | 287 endfun |
277 | 288 |
289 " =============================== | |
290 " Netrw Transfer Functions: {{{1 | |
291 " =============================== | |
292 | |
278 " ------------------------------------------------------------------------ | 293 " ------------------------------------------------------------------------ |
279 " NetRead: responsible for reading a file over the net {{{1 | 294 " NetRead: responsible for reading a file over the net {{{2 |
280 fun! netrw#NetRead(...) | 295 fun! netrw#NetRead(...) |
281 " call Dfunc("NetRead(a:1<".a:1.">)") | 296 " call Dfunc("NetRead(a:1<".a:1.">)") |
282 | 297 |
283 " save options | 298 " save options |
284 call s:NetOptionSave() | 299 call s:NetOptionSave() |
285 | 300 |
286 " Special Exception: if a file is named "0r", then | 301 " Special Exception: if a file is named "0r", then {{{3 |
287 " "0r" will be used to read the | 302 " "0r" will be used to read the |
288 " following files instead of "r" | 303 " following files instead of "r" |
289 if a:0 == 0 | 304 if a:0 == 0 |
290 let readcmd= "r" | 305 let readcmd= "r" |
291 let ichoice= 0 | 306 let ichoice= 0 |
295 else | 310 else |
296 let readcmd = "r" | 311 let readcmd = "r" |
297 let ichoice = 1 | 312 let ichoice = 1 |
298 endif | 313 endif |
299 | 314 |
300 " get name of a temporary file and set up shell-quoting character | 315 " get name of a temporary file and set up shell-quoting character {{{3 |
301 let tmpfile= tempname() | 316 let tmpfile= tempname() |
302 let tmpfile= substitute(tmpfile,'\','/','ge') | 317 let tmpfile= substitute(tmpfile,'\','/','ge') |
303 if !isdirectory(substitute(tmpfile,'[^/]\+$','','e')) | 318 if !isdirectory(substitute(tmpfile,'[^/]\+$','','e')) |
304 echohl Error | echo "***netrw*** your <".substitute(tmpfile,'[^/]\+$','','e')."> directory is missing!" | echohl None | 319 echohl Error | echo "***netrw*** your <".substitute(tmpfile,'[^/]\+$','','e')."> directory is missing!" | echohl None |
305 call inputsave()|call input("Press <cr> to continue")|call inputrestore() | 320 call inputsave()|call input("Press <cr> to continue")|call inputrestore() |
375 | 390 |
376 exe 'lcd ' . fnamemodify(tmpfile,':h') | 391 exe 'lcd ' . fnamemodify(tmpfile,':h') |
377 let tmpfile = fnamemodify(tmpfile,':t') | 392 let tmpfile = fnamemodify(tmpfile,':t') |
378 endif | 393 endif |
379 | 394 |
380 " Determine method of read (ftp, rcp, etc) | 395 " Determine method of read (ftp, rcp, etc) {{{3 |
381 call s:NetMethod(choice) | 396 call s:NetMethod(choice) |
382 | 397 |
383 " Check if NetBrowse() should be handling this request | 398 " Check if NetBrowse() should be handling this request |
384 " call Decho("checking if netlist: choice<".choice."> netrw_list_cmd<".g:netrw_list_cmd.">") | 399 " call Decho("checking if netlist: choice<".choice."> netrw_list_cmd<".g:netrw_list_cmd.">") |
385 if choice =~ "^.*[\/]$" | 400 if choice =~ "^.*[\/]$" |
387 " call Dret("NetRead") | 402 " call Dret("NetRead") |
388 return | 403 return |
389 endif | 404 endif |
390 | 405 |
391 " use filename's suffix for the temporary file | 406 " use filename's suffix for the temporary file |
392 if b:netrw_fname =~ '\.[^./]\+' | 407 if b:netrw_fname =~ '\.[^./]\+$' |
393 let suffix = substitute(b:netrw_fname,'^.*\(\.[^./]\+\)','\1','e') | 408 let suffix = substitute(b:netrw_fname,'^.*\(\.[^./]\+\)$','\1','e') |
394 let tmpfile= substitute(tmpfile,"$",suffix,'e') | 409 let tmpfile= substitute(tmpfile,"$",suffix,'e') |
395 " call Decho("chgd tmpfile<".tmpfile."> (added ".suffix." suffix)") | 410 " call Decho("chgd tmpfile<".tmpfile."> (added ".suffix." suffix) netrw_fname<".b:netrw_fname.">") |
396 endif | 411 endif |
397 | 412 |
398 " ============ | 413 " ============ |
399 " Perform Read | 414 " Perform Protocol-Based Read {{{3 |
400 " ============ | 415 " =========================== |
401 if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1 | 416 if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1 |
402 echo "(netrw) Processing your read request..." | 417 echo "(netrw) Processing your read request..." |
403 endif | 418 endif |
404 | 419 |
405 "......................................... | 420 "......................................... |
406 " rcp: NetRead Method #1 | 421 " rcp: NetRead Method #1 {{{3 |
407 if b:netrw_method == 1 " read with rcp | 422 if b:netrw_method == 1 " read with rcp |
408 " call Decho("read via rcp (method #1)") | 423 " call Decho("read via rcp (method #1)") |
409 " ER: noting done with g:netrw_uid yet? | 424 " ER: noting done with g:netrw_uid yet? |
410 " ER: on Win2K" rcp machine[.user]:file tmpfile | 425 " ER: on Win2K" rcp machine[.user]:file tmpfile |
411 " ER: if machine contains '.' adding .user is required (use $USERNAME) | 426 " ER: if machine contains '.' adding .user is required (use $USERNAME) |
428 exe g:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".uid_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile | 443 exe g:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".uid_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile |
429 let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) | 444 let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) |
430 let b:netrw_lastfile = choice | 445 let b:netrw_lastfile = choice |
431 | 446 |
432 "......................................... | 447 "......................................... |
433 " ftp + <.netrc>: NetRead Method #2 | 448 " ftp + <.netrc>: NetRead Method #2 {{{3 |
434 elseif b:netrw_method == 2 " read with ftp + <.netrc> | 449 elseif b:netrw_method == 2 " read with ftp + <.netrc> |
435 " call Decho("read via ftp+.netrc (method #2)") | 450 " call Decho("read via ftp+.netrc (method #2)") |
436 let netrw_fname= b:netrw_fname | 451 let netrw_fname= b:netrw_fname |
437 new | 452 new |
438 setlocal ff=unix | 453 setlocal ff=unix |
458 bd! | 473 bd! |
459 let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) | 474 let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) |
460 let b:netrw_lastfile = choice | 475 let b:netrw_lastfile = choice |
461 | 476 |
462 "......................................... | 477 "......................................... |
463 " ftp + machine,id,passwd,filename: NetRead Method #3 | 478 " ftp + machine,id,passwd,filename: NetRead Method #3 {{{3 |
464 elseif b:netrw_method == 3 " read with ftp + machine, id, passwd, and fname | 479 elseif b:netrw_method == 3 " read with ftp + machine, id, passwd, and fname |
465 " Construct execution string (four lines) which will be passed through filter | 480 " Construct execution string (four lines) which will be passed through filter |
466 " call Decho("read via ftp+mipf (method #3)") | 481 " call Decho("read via ftp+mipf (method #3)") |
467 let netrw_fname= b:netrw_fname | 482 let netrw_fname= b:netrw_fname |
468 new | 483 new |
510 bd! | 525 bd! |
511 let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) | 526 let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) |
512 let b:netrw_lastfile = choice | 527 let b:netrw_lastfile = choice |
513 | 528 |
514 "......................................... | 529 "......................................... |
515 " scp: NetRead Method #4 | 530 " scp: NetRead Method #4 {{{3 |
516 elseif b:netrw_method == 4 " read with scp | 531 elseif b:netrw_method == 4 " read with scp |
517 " call Decho("read via scp (method #4)") | 532 " call Decho("read via scp (method #4)") |
518 if exists("g:netrw_port") && g:netrw_port != "" | 533 if exists("g:netrw_port") && g:netrw_port != "" |
519 let useport= " -P ".g:netrw_port | 534 let useport= " -P ".g:netrw_port |
520 else | 535 else |
521 let useport= "" | 536 let useport= "" |
522 endif | 537 endif |
523 if g:netrw_cygwin == 1 | 538 if g:netrw_cygwin == 1 |
524 let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') | 539 let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') |
525 " call Decho("executing: !".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile) | 540 " call Decho("executing: !".g:netrw_scp_cmd.useport." '".g:netrw_machine.":".escape(b:netrw_fname,' ?&')."' ".cygtmpfile) |
526 exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile | 541 exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." '".g:netrw_machine.":".escape(b:netrw_fname,' ?&')."' ".cygtmpfile |
527 else | 542 else |
528 " call Decho("executing: !".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile) | 543 " call Decho("executing: !".g:netrw_scp_cmd.useport." '".g:netrw_machine.":".escape(b:netrw_fname,' ?&')."' ".tmpfile) |
529 exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile | 544 exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." '".g:netrw_machine.":".escape(b:netrw_fname,' ?&')."' ".tmpfile |
530 endif | 545 endif |
531 let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) | 546 let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) |
532 let b:netrw_lastfile = choice | 547 let b:netrw_lastfile = choice |
533 | 548 |
534 "......................................... | 549 "......................................... |
535 elseif b:netrw_method == 5 " read with http (wget) | 550 " http: NetRead Method #5 (wget) {{{3 |
551 elseif b:netrw_method == 5 | |
536 " call Decho("read via http (method #5)") | 552 " call Decho("read via http (method #5)") |
537 if g:netrw_http_cmd == "" | 553 if g:netrw_http_cmd == "" |
538 if !exists("g:netrw_quiet") | 554 if !exists("g:netrw_quiet") |
539 echohl Error | echo "***netrw*** neither wget nor fetch command is available" | echohl None | 555 echohl Error | echo "***netrw*** neither wget nor fetch command is available" | echohl None |
540 call inputsave()|call input("Press <cr> to continue")|call inputrestore() | 556 call inputsave()|call input("Press <cr> to continue")|call inputrestore() |
562 exe 'norm! 1G/<\s*a\s*name=\s*"'.netrw_tag.'"/'."\<CR>" | 578 exe 'norm! 1G/<\s*a\s*name=\s*"'.netrw_tag.'"/'."\<CR>" |
563 endif | 579 endif |
564 let b:netrw_lastfile = choice | 580 let b:netrw_lastfile = choice |
565 | 581 |
566 "......................................... | 582 "......................................... |
567 " cadaver: NetRead Method #6 | 583 " cadaver: NetRead Method #6 {{{3 |
568 elseif b:netrw_method == 6 " read with cadaver | 584 elseif b:netrw_method == 6 |
569 " call Decho("read via cadaver (method #6)") | 585 " call Decho("read via cadaver (method #6)") |
570 | 586 |
571 " Construct execution string (four lines) which will be passed through filter | 587 " Construct execution string (four lines) which will be passed through filter |
572 let netrw_fname= b:netrw_fname | 588 let netrw_fname= b:netrw_fname |
573 new | 589 new |
594 bd! | 610 bd! |
595 let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) | 611 let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) |
596 let b:netrw_lastfile = choice | 612 let b:netrw_lastfile = choice |
597 | 613 |
598 "......................................... | 614 "......................................... |
599 " rsync: NetRead Method #7 | 615 " rsync: NetRead Method #7 {{{3 |
600 elseif b:netrw_method == 7 " read with rsync | 616 elseif b:netrw_method == 7 |
601 " call Decho("read via rsync (method #7)") | 617 " call Decho("read via rsync (method #7)") |
602 if g:netrw_cygwin == 1 | 618 if g:netrw_cygwin == 1 |
603 let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') | 619 let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') |
604 " call Decho("executing: !".g:netrw_rsync_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile) | 620 " call Decho("executing: !".g:netrw_rsync_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile) |
605 exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile | 621 exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile |
609 endif | 625 endif |
610 let result = s:NetGetFile(readcmd,tmpfile, b:netrw_method) | 626 let result = s:NetGetFile(readcmd,tmpfile, b:netrw_method) |
611 let b:netrw_lastfile = choice | 627 let b:netrw_lastfile = choice |
612 | 628 |
613 "......................................... | 629 "......................................... |
614 " fetch: NetRead Method #8 | 630 " fetch: NetRead Method #8 {{{3 |
615 " fetch://[user@]host[:http]/path | 631 " fetch://[user@]host[:http]/path |
616 elseif b:netrw_method == 8 " read with fetch | 632 elseif b:netrw_method == 8 |
617 if g:netrw_fetch_cmd == "" | 633 if g:netrw_fetch_cmd == "" |
618 if !exists("g:netrw_quiet") | 634 if !exists("g:netrw_quiet") |
619 echohl Error | echo "***netrw*** fetch command not available" | echohl None | 635 echohl Error | echo "***netrw*** fetch command not available" | echohl None |
620 call inputsave()|call input("Press <cr> to continue")|call inputrestore() | 636 call inputsave()|call input("Press <cr> to continue")|call inputrestore() |
621 endif | 637 endif |
638 | 654 |
639 let result = s:NetGetFile(readcmd,tmpfile, b:netrw_method) | 655 let result = s:NetGetFile(readcmd,tmpfile, b:netrw_method) |
640 let b:netrw_lastfile = choice | 656 let b:netrw_lastfile = choice |
641 | 657 |
642 "......................................... | 658 "......................................... |
643 " sftp: NetRead Method #9 | 659 " sftp: NetRead Method #9 {{{3 |
644 elseif b:netrw_method == 9 " read with sftp | 660 elseif b:netrw_method == 9 |
645 " call Decho("read via sftp (method #4)") | 661 " call Decho("read via sftp (method #4)") |
646 if g:netrw_cygwin == 1 | 662 if g:netrw_cygwin == 1 |
647 let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') | 663 let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') |
648 " call Decho("!".g:netrw_sftp_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile) | 664 " call Decho("!".g:netrw_sftp_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile) |
649 " call Decho("executing: !".g:netrw_sftp_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile) | 665 " call Decho("executing: !".g:netrw_sftp_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile) |
654 endif | 670 endif |
655 let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) | 671 let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) |
656 let b:netrw_lastfile = choice | 672 let b:netrw_lastfile = choice |
657 | 673 |
658 "......................................... | 674 "......................................... |
659 else " Complain | 675 " Complain {{{3 |
676 else | |
660 echo "***warning*** unable to comply with your request<" . choice . ">" | 677 echo "***warning*** unable to comply with your request<" . choice . ">" |
661 endif | 678 endif |
662 endwhile | 679 endwhile |
663 | 680 |
664 " cleanup | 681 " cleanup {{{3 |
665 " call Decho("cleanup") | 682 " call Decho("cleanup") |
666 if exists("b:netrw_method") | 683 if exists("b:netrw_method") |
667 unlet b:netrw_method | 684 unlet b:netrw_method |
668 unlet b:netrw_fname | 685 unlet b:netrw_fname |
669 endif | 686 endif |
671 | 688 |
672 " call Dret("NetRead") | 689 " call Dret("NetRead") |
673 endfun | 690 endfun |
674 | 691 |
675 " ------------------------------------------------------------------------ | 692 " ------------------------------------------------------------------------ |
676 " NetGetFile: Function to read temporary file "tfile" with command "readcmd". {{{1 | 693 " NetGetFile: Function to read temporary file "tfile" with command "readcmd". {{{2 |
677 fun! s:NetGetFile(readcmd, tfile, method) | 694 fun! s:NetGetFile(readcmd, tfile, method) |
678 " call Dfunc("NetGetFile(readcmd<".a:readcmd.">,tfile<".a:tfile."> method<".a:method.">)") | 695 " call Dfunc("NetGetFile(readcmd<".a:readcmd.">,tfile<".a:tfile."> method<".a:method.">)") |
679 | 696 |
680 " get name of remote filename (ie. url and all) | 697 " get name of remote filename (ie. url and all) |
681 let rfile= bufname("%") | 698 let rfile= bufname("%") |
713 if rfile =~ '\.zip$' | 730 if rfile =~ '\.zip$' |
714 call zip#Browse(tfile) | 731 call zip#Browse(tfile) |
715 elseif rfile =~ '\.tar$' | 732 elseif rfile =~ '\.tar$' |
716 call tar#Browse(tfile) | 733 call tar#Browse(tfile) |
717 else | 734 else |
735 " call Decho("edit temporary file") | |
718 e | 736 e |
719 endif | 737 endif |
720 | 738 |
721 " rename buffer back to remote filename | 739 " rename buffer back to remote filename |
722 keepalt exe "file ".rfile | 740 keepalt exe "file ".escape(rfile,' ') |
723 filetype detect | 741 filetype detect |
724 " call Dredir("ls!","renamed buffer back to remote filename<".rfile.">") | 742 " call Dredir("ls!","renamed buffer back to remote filename<".rfile."> : expand(%)<".expand("%").">") |
725 let line1 = 1 | 743 let line1 = 1 |
726 let line2 = line("$") | 744 let line2 = line("$") |
727 | 745 |
728 elseif filereadable(tfile) | 746 elseif filereadable(tfile) |
729 " read file after current line | 747 " read file after current line |
762 redraw! | 780 redraw! |
763 " call Dret("NetGetFile") | 781 " call Dret("NetGetFile") |
764 endfun | 782 endfun |
765 | 783 |
766 " ------------------------------------------------------------------------ | 784 " ------------------------------------------------------------------------ |
767 " NetWrite: responsible for writing a file over the net {{{1 | 785 " NetWrite: responsible for writing a file over the net {{{2 |
768 fun! netrw#NetWrite(...) range | 786 fun! netrw#NetWrite(...) range |
769 " call Dfunc("NetWrite(a:0=".a:0.")") | 787 " call Dfunc("NetWrite(a:0=".a:0.")") |
770 | 788 |
771 " option handling | 789 " option handling |
772 let mod= 0 | 790 let mod= 0 |
773 call s:NetOptionSave() | 791 call s:NetOptionSave() |
774 | 792 |
775 " Get Temporary Filename | 793 " Get Temporary Filename {{{3 |
776 let tmpfile= tempname() | 794 let tmpfile= tempname() |
777 if !isdirectory(substitute(tmpfile,'[^/]\+$','','e')) | 795 if !isdirectory(substitute(tmpfile,'[^/]\+$','','e')) |
778 echohl Error | echo "***netrw*** your ".substitute(tmpfile,'[^/]\+$','','e')." directory is missing!" | 796 echohl Error | echo "***netrw*** your ".substitute(tmpfile,'[^/]\+$','','e')." directory is missing!" |
779 call inputsave()|call input("Press <cr> to continue")|call inputrestore() | 797 call inputsave()|call input("Press <cr> to continue")|call inputrestore() |
780 " call Dret("NetWrite") | 798 " call Dret("NetWrite") |
798 silent exe a:firstline."," . a:lastline . "w! ".v:cmdarg." ".tmpfile | 816 silent exe a:firstline."," . a:lastline . "w! ".v:cmdarg." ".tmpfile |
799 endif | 817 endif |
800 | 818 |
801 while ichoice <= a:0 | 819 while ichoice <= a:0 |
802 | 820 |
821 " Process arguments: {{{3 | |
803 " attempt to repeat with previous host-file-etc | 822 " attempt to repeat with previous host-file-etc |
804 if exists("b:netrw_lastfile") && a:0 == 0 | 823 if exists("b:netrw_lastfile") && a:0 == 0 |
805 " call Decho("using b:netrw_lastfile<" . b:netrw_lastfile . ">") | 824 " call Decho("using b:netrw_lastfile<" . b:netrw_lastfile . ">") |
806 let choice = b:netrw_lastfile | 825 let choice = b:netrw_lastfile |
807 let ichoice= ichoice + 1 | 826 let ichoice= ichoice + 1 |
858 "ER: see NetRead() | 877 "ER: see NetRead() |
859 exe 'lcd ' . fnamemodify(tmpfile,':h') | 878 exe 'lcd ' . fnamemodify(tmpfile,':h') |
860 let tmpfile = fnamemodify(tmpfile,':t') | 879 let tmpfile = fnamemodify(tmpfile,':t') |
861 endif | 880 endif |
862 | 881 |
863 " Determine method of read (ftp, rcp, etc) | 882 " Determine method of read (ftp, rcp, etc) {{{3 |
864 call s:NetMethod(choice) | 883 call s:NetMethod(choice) |
865 | 884 |
866 " ============= | 885 " ============= |
867 " Perform Write | 886 " Perform Protocol-Based Write {{{3 |
868 " ============= | 887 " ============================ |
869 if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1 | 888 if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1 |
870 echo "(netrw) Processing your write request..." | 889 echo "(netrw) Processing your write request..." |
871 endif | 890 endif |
872 | 891 |
873 "......................................... | 892 "......................................... |
874 " rcp: NetWrite Method #1 | 893 " rcp: NetWrite Method #1 {{{3 |
875 if b:netrw_method == 1 " write with rcp | 894 if b:netrw_method == 1 |
876 " call Decho("write via rcp (method #1)") | 895 " call Decho("write via rcp (method #1)") |
877 if s:netrw_has_nt_rcp == 1 | 896 if s:netrw_has_nt_rcp == 1 |
878 if exists("g:netrw_uid") && ( g:netrw_uid != "" ) | 897 if exists("g:netrw_uid") && ( g:netrw_uid != "" ) |
879 let uid_machine = g:netrw_machine .'.'. g:netrw_uid | 898 let uid_machine = g:netrw_machine .'.'. g:netrw_uid |
880 else | 899 else |
890 " call Decho("executing: !".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".tmpfile." ".uid_machine.":".escape(b:netrw_fname,' ?&')) | 909 " call Decho("executing: !".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".tmpfile." ".uid_machine.":".escape(b:netrw_fname,' ?&')) |
891 exe g:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".tmpfile." ".uid_machine.":".escape(b:netrw_fname,' ?&') | 910 exe g:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".tmpfile." ".uid_machine.":".escape(b:netrw_fname,' ?&') |
892 let b:netrw_lastfile = choice | 911 let b:netrw_lastfile = choice |
893 | 912 |
894 "......................................... | 913 "......................................... |
895 " ftp + <.netrc>: NetWrite Method #2 | 914 " ftp + <.netrc>: NetWrite Method #2 {{{3 |
896 elseif b:netrw_method == 2 " write with ftp + <.netrc> | 915 elseif b:netrw_method == 2 |
897 let netrw_fname = b:netrw_fname | 916 let netrw_fname = b:netrw_fname |
898 new | 917 new |
899 setlocal ff=unix | 918 setlocal ff=unix |
900 exe "put ='".g:netrw_ftpmode."'" | 919 exe "put ='".g:netrw_ftpmode."'" |
901 " call Decho(" filter input: ".getline(".")) | 920 " call Decho(" filter input: ".getline(".")) |
918 endif | 937 endif |
919 bd! | 938 bd! |
920 let b:netrw_lastfile = choice | 939 let b:netrw_lastfile = choice |
921 | 940 |
922 "......................................... | 941 "......................................... |
923 " ftp + machine, id, passwd, filename: NetWrite Method #3 | 942 " ftp + machine, id, passwd, filename: NetWrite Method #3 {{{3 |
924 elseif b:netrw_method == 3 " write with ftp + machine, id, passwd, and fname | 943 elseif b:netrw_method == 3 |
925 let netrw_fname= b:netrw_fname | 944 let netrw_fname= b:netrw_fname |
926 new | 945 new |
927 setlocal ff=unix | 946 setlocal ff=unix |
928 if exists("g:netrw_port") && g:netrw_port != "" | 947 if exists("g:netrw_port") && g:netrw_port != "" |
929 put ='open '.g:netrw_machine.' '.g:netrw_port | 948 put ='open '.g:netrw_machine.' '.g:netrw_port |
962 let mod=1 | 981 let mod=1 |
963 endif | 982 endif |
964 bd! | 983 bd! |
965 | 984 |
966 "......................................... | 985 "......................................... |
967 " scp: NetWrite Method #4 | 986 " scp: NetWrite Method #4 {{{3 |
968 elseif b:netrw_method == 4 " write with scp | 987 elseif b:netrw_method == 4 |
969 if exists("g:netrw_port") && g:netrw_port != "" | 988 if exists("g:netrw_port") && g:netrw_port != "" |
970 let useport= " -P ".g:netrw_port | 989 let useport= " -P ".g:netrw_port |
971 else | 990 else |
972 let useport= "" | 991 let useport= "" |
973 endif | 992 endif |
974 if g:netrw_cygwin == 1 | 993 if g:netrw_cygwin == 1 |
975 let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') | 994 let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') |
976 " call Decho("executing: !".g:netrw_scp_cmd.useport." ".cygtmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')) | 995 " call Decho("executing: !".g:netrw_scp_cmd.useport." ".cygtmpfile." '".g:netrw_machine.":".escape(b:netrw_fname,' ?&')."'") |
977 exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".cygtmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&') | 996 exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".cygtmpfile." '".g:netrw_machine.":".escape(b:netrw_fname,' ?&')."'" |
978 else | 997 else |
979 " call Decho("executing: !".g:netrw_scp_cmd.useport." ".tmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')) | 998 " call Decho("executing: !".g:netrw_scp_cmd.useport." ".tmpfile." '".g:netrw_machine.":".escape(b:netrw_fname,' ?&')."'") |
980 exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".tmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&') | 999 exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".tmpfile." '".g:netrw_machine.":".escape(b:netrw_fname,' ?&')."'" |
981 endif | 1000 endif |
982 let b:netrw_lastfile = choice | 1001 let b:netrw_lastfile = choice |
983 | 1002 |
984 "......................................... | 1003 "......................................... |
985 " http: NetWrite Method #5 | 1004 " http: NetWrite Method #5 {{{3 |
986 elseif b:netrw_method == 5 | 1005 elseif b:netrw_method == 5 |
987 if !exists("g:netrw_quiet") | 1006 if !exists("g:netrw_quiet") |
988 echohl Error | echo "***netrw*** currently <netrw.vim> does not support writing using http:" | echohl None | 1007 echohl Error | echo "***netrw*** currently <netrw.vim> does not support writing using http:" | echohl None |
989 call inputsave()|call input("Press <cr> to continue")|call inputrestore() | 1008 call inputsave()|call input("Press <cr> to continue")|call inputrestore() |
990 endif | 1009 endif |
991 | 1010 |
992 "......................................... | 1011 "......................................... |
993 " dav: NetWrite Method #6 | 1012 " dav: NetWrite Method #6 (cadaver) {{{3 |
994 elseif b:netrw_method == 6 " write with cadaver | 1013 elseif b:netrw_method == 6 |
995 " call Decho("write via cadaver (method #6)") | 1014 " call Decho("write via cadaver (method #6)") |
996 | 1015 |
997 " Construct execution string (four lines) which will be passed through filter | 1016 " Construct execution string (four lines) which will be passed through filter |
998 let netrw_fname= b:netrw_fname | 1017 let netrw_fname= b:netrw_fname |
999 new | 1018 new |
1018 exe g:netrw_silentxfer."%!".g:netrw_dav_cmd | 1037 exe g:netrw_silentxfer."%!".g:netrw_dav_cmd |
1019 bd! | 1038 bd! |
1020 let b:netrw_lastfile = choice | 1039 let b:netrw_lastfile = choice |
1021 | 1040 |
1022 "......................................... | 1041 "......................................... |
1023 " rsync: NetWrite Method #7 | 1042 " rsync: NetWrite Method #7 {{{3 |
1024 elseif b:netrw_method == 7 " write with rsync | 1043 elseif b:netrw_method == 7 |
1025 if g:netrw_cygwin == 1 | 1044 if g:netrw_cygwin == 1 |
1026 let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') | 1045 let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') |
1027 " call Decho("executing: !".g:netrw_rsync_cmd." ".cygtmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')) | 1046 " call Decho("executing: !".g:netrw_rsync_cmd." ".cygtmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')) |
1028 exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".cygtmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&') | 1047 exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".cygtmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&') |
1029 else | 1048 else |
1031 exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".tmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&') | 1050 exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".tmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&') |
1032 endif | 1051 endif |
1033 let b:netrw_lastfile = choice | 1052 let b:netrw_lastfile = choice |
1034 | 1053 |
1035 "......................................... | 1054 "......................................... |
1036 " scp: NetWrite Method #9 | 1055 " sftp: NetWrite Method #9 {{{3 |
1037 elseif b:netrw_method == 9 " write with sftp | 1056 elseif b:netrw_method == 9 |
1038 let netrw_fname= b:netrw_fname | 1057 let netrw_fname= b:netrw_fname |
1039 if exists("g:netrw_uid") && ( g:netrw_uid != "" ) | 1058 if exists("g:netrw_uid") && ( g:netrw_uid != "" ) |
1040 let uid_machine = g:netrw_uid .'@'. g:netrw_machine | 1059 let uid_machine = g:netrw_uid .'@'. g:netrw_machine |
1041 else | 1060 else |
1042 let uid_machine = g:netrw_machine | 1061 let uid_machine = g:netrw_machine |
1049 exe g:netrw_silentxfer."%!".g:netrw_sftp_cmd.' '.uid_machine | 1068 exe g:netrw_silentxfer."%!".g:netrw_sftp_cmd.' '.uid_machine |
1050 bd! | 1069 bd! |
1051 let b:netrw_lastfile= choice | 1070 let b:netrw_lastfile= choice |
1052 | 1071 |
1053 "......................................... | 1072 "......................................... |
1054 else " Complain | 1073 " Complain {{{3 |
1074 else | |
1055 echo "***warning*** unable to comply with your request<" . choice . ">" | 1075 echo "***warning*** unable to comply with your request<" . choice . ">" |
1056 endif | 1076 endif |
1057 endwhile | 1077 endwhile |
1058 | 1078 |
1059 " cleanup | 1079 " cleanup {{{3 |
1060 " call Decho("cleanup") | 1080 " call Decho("cleanup") |
1061 let result=delete(tmpfile) | 1081 let result=delete(tmpfile) |
1062 call s:NetOptionRestore() | 1082 call s:NetOptionRestore() |
1063 | 1083 |
1064 if a:firstline == 1 && a:lastline == line("$") | 1084 if a:firstline == 1 && a:lastline == line("$") |
1070 | 1090 |
1071 " =========================================== | 1091 " =========================================== |
1072 " Remote Directory Browsing Support: {{{1 | 1092 " Remote Directory Browsing Support: {{{1 |
1073 " =========================================== | 1093 " =========================================== |
1074 | 1094 |
1095 " --------------------------------------------------------------------- | |
1075 " NetBrowse: This function uses the command in g:netrw_list_cmd to get a list {{{2 | 1096 " NetBrowse: This function uses the command in g:netrw_list_cmd to get a list {{{2 |
1076 " of the contents of a remote directory. It is assumed that the | 1097 " of the contents of a remote directory. It is assumed that the |
1077 " g:netrw_list_cmd has a string, HOSTNAME, that needs to be substituted | 1098 " g:netrw_list_cmd has a string, HOSTNAME, that needs to be substituted |
1078 " with the requested remote hostname first. | 1099 " with the requested remote hostname first. |
1079 fun! s:NetBrowse(dirname) | 1100 fun! s:NetBrowse(dirname) |
1233 setlocal bt=nofile bh=wipe nobl noswf | 1254 setlocal bt=nofile bh=wipe nobl noswf |
1234 exe "setlocal ts=".g:netrw_maxfilenamelen | 1255 exe "setlocal ts=".g:netrw_maxfilenamelen |
1235 " call Decho("exe file ".escape(bufname,s:netrw_cd_escape)) | 1256 " call Decho("exe file ".escape(bufname,s:netrw_cd_escape)) |
1236 exe 'file '.escape(bufname,s:netrw_cd_escape) | 1257 exe 'file '.escape(bufname,s:netrw_cd_escape) |
1237 " call Decho("renaming file to bufname<".bufname.">") | 1258 " call Decho("renaming file to bufname<".bufname.">") |
1238 setlocal bh=hide bt=nofile nobl nonu | 1259 setlocal bh=hide bt=nofile nobl nonu noswf |
1239 | 1260 |
1240 " save current directory on directory history list | 1261 " save current directory on directory history list |
1241 call <SID>NetBookmarkDir(3,expand("%")) | 1262 call s:NetBookmarkDir(3,expand("%")) |
1242 | 1263 |
1243 " set up buffer-local mappings | 1264 " set up buffer-local mappings |
1244 " call Decho("set up buffer-local mappings") | 1265 " call Decho("set up buffer-local mappings") |
1245 nnoremap <buffer> <silent> <cr> :call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr> | 1266 nnoremap <buffer> <silent> <cr> :call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr> |
1246 nnoremap <buffer> <silent> <c-l> :call <SID>NetRefresh(<SID>NetBrowseChgDir(expand("%"),'./'),0)<cr> | 1267 nnoremap <buffer> <silent> <c-l> :call <SID>NetRefresh(<SID>NetBrowseChgDir(expand("%"),'./'),0)<cr> |
1254 nnoremap <buffer> <silent> NB :<c-u>call <SID>NetBookmarkDir(0,expand("%"))<cr> | 1275 nnoremap <buffer> <silent> NB :<c-u>call <SID>NetBookmarkDir(0,expand("%"))<cr> |
1255 nnoremap <buffer> <silent> <c-h> :call <SID>NetHideEdit(0)<cr> | 1276 nnoremap <buffer> <silent> <c-h> :call <SID>NetHideEdit(0)<cr> |
1256 nnoremap <buffer> <silent> i :call <SID>NetLongList(0)<cr> | 1277 nnoremap <buffer> <silent> i :call <SID>NetLongList(0)<cr> |
1257 nnoremap <buffer> <silent> o :call <SID>NetSplit(0)<cr> | 1278 nnoremap <buffer> <silent> o :call <SID>NetSplit(0)<cr> |
1258 nnoremap <buffer> <silent> O :call <SID>NetObtain()<cr> | 1279 nnoremap <buffer> <silent> O :call <SID>NetObtain()<cr> |
1280 nnoremap <buffer> <silent> P :call <SID>NetPrevWinOpen(0)<cr> | |
1259 nnoremap <buffer> <silent> q :<c-u>call <SID>NetBookmarkDir(2,expand("%"))<cr> | 1281 nnoremap <buffer> <silent> q :<c-u>call <SID>NetBookmarkDir(2,expand("%"))<cr> |
1260 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("%"),'./'))<cr> | 1282 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("%"),'./'))<cr> |
1261 nnoremap <buffer> <silent> s :call <SID>NetSaveWordPosn()<bar>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("%"),'./'))<bar>call <SID>NetRestoreWordPosn()<cr> | 1283 nnoremap <buffer> <silent> s :call <SID>NetSaveWordPosn()<bar>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("%"),'./'))<bar>call <SID>NetRestoreWordPosn()<cr> |
1262 nnoremap <buffer> <silent> S :call <SID>NetSortSequence(0)<cr> | 1284 nnoremap <buffer> <silent> S :call <SID>NetSortSequence(0)<cr> |
1263 nnoremap <buffer> <silent> u :<c-u>call <SID>NetBookmarkDir(4,expand("%"))<cr> | 1285 nnoremap <buffer> <silent> u :<c-u>call <SID>NetBookmarkDir(4,expand("%"))<cr> |
1264 nnoremap <buffer> <silent> U :<c-u>call <SID>NetBookmarkDir(5,expand("%"))<cr> | 1286 nnoremap <buffer> <silent> U :<c-u>call <SID>NetBookmarkDir(5,expand("%"))<cr> |
1265 nnoremap <buffer> <silent> v :call <SID>NetSplit(1)<cr> | 1287 nnoremap <buffer> <silent> v :call <SID>NetSplit(1)<cr> |
1266 nnoremap <buffer> <silent> x :call <SID>NetBrowseX(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()),1)<cr> | 1288 nnoremap <buffer> <silent> x :call netrw#NetBrowseX(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()),1)<cr> |
1267 nnoremap <buffer> <silent> <2-leftmouse> :call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr> | 1289 nnoremap <buffer> <silent> <2-leftmouse> :call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr> |
1268 exe 'nnoremap <buffer> <silent> <del> :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>' | 1290 exe 'nnoremap <buffer> <silent> <del> :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>' |
1269 exe 'vnoremap <buffer> <silent> <del> :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>' | 1291 exe 'vnoremap <buffer> <silent> <del> :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>' |
1270 exe 'nnoremap <buffer> <silent> d :call <SID>NetMakeDir("'.user.machine.'")<cr>' | 1292 exe 'nnoremap <buffer> <silent> d :call <SID>NetMakeDir("'.user.machine.'")<cr>' |
1271 exe 'nnoremap <buffer> <silent> D :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>' | 1293 exe 'nnoremap <buffer> <silent> D :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>' |
1444 let newdir = a:newdir | 1466 let newdir = a:newdir |
1445 | 1467 |
1446 if newdir !~ '[\/]$' | 1468 if newdir !~ '[\/]$' |
1447 " handling a file | 1469 " handling a file |
1448 let dirname= dirname.newdir | 1470 let dirname= dirname.newdir |
1471 if g:netrw_browse_split == 1 | |
1472 new | |
1473 wincmd _ | |
1474 elseif g:netrw_browse_split == 2 | |
1475 rightb vert new | |
1476 wincmd | | |
1477 endif | |
1449 " call Decho("handling a file: dirname<".dirname.">") | 1478 " call Decho("handling a file: dirname<".dirname.">") |
1450 | 1479 |
1451 elseif newdir == './' | 1480 elseif newdir == './' |
1452 " refresh the directory list | 1481 " refresh the directory list |
1453 " call Decho("refresh directory listing") | 1482 " call Decho("refresh directory listing") |
1477 " call Dret("NetBrowseChgDir <".dirname.">") | 1506 " call Dret("NetBrowseChgDir <".dirname.">") |
1478 return dirname | 1507 return dirname |
1479 endfun | 1508 endfun |
1480 | 1509 |
1481 " --------------------------------------------------------------------- | 1510 " --------------------------------------------------------------------- |
1482 " NetGetWord: it gets the directory named under the cursor | 1511 " NetGetWord: it gets the directory named under the cursor {{{2 |
1483 fun! s:NetGetWord() | 1512 fun! s:NetGetWord() |
1484 " call Dfunc("NetGetWord() line#".line(".")) | 1513 " call Dfunc("NetGetWord() line#".line(".")) |
1485 call s:UseBufWinVars() | 1514 call s:UseBufWinVars() |
1486 | 1515 |
1487 " insure that w:netrw_longlist is set up | 1516 " insure that w:netrw_longlist is set up |
1649 endwhile | 1678 endwhile |
1650 | 1679 |
1651 " refresh the directory | 1680 " refresh the directory |
1652 let curline= line(".")-1 | 1681 let curline= line(".")-1 |
1653 " call Decho("refresh the directory") | 1682 " call Decho("refresh the directory") |
1654 call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'./')) | 1683 call s:NetBrowse(s:NetBrowseChgDir(expand("%"),'./')) |
1655 exe curline | 1684 exe curline |
1656 | 1685 |
1657 " call Dret("NetBrowseRm") | 1686 " call Dret("NetBrowseRm") |
1658 endfun | 1687 endfun |
1659 | 1688 |
1690 let ctr= ctr + 1 | 1719 let ctr= ctr + 1 |
1691 endwhile | 1720 endwhile |
1692 | 1721 |
1693 " refresh the directory | 1722 " refresh the directory |
1694 let curline= line(".") | 1723 let curline= line(".") |
1695 call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'./')) | 1724 call s:NetBrowse(s:NetBrowseChgDir(expand("%"),'./')) |
1696 exe "keepjumps ".curline | 1725 exe "keepjumps ".curline |
1697 " call Dret("NetBrowseRename") | 1726 " call Dret("NetBrowseRename") |
1698 endfun | 1727 endfun |
1699 | 1728 |
1700 " --------------------------------------------------------------------- | 1729 " --------------------------------------------------------------------- |
1719 " =0 : net and o | 1748 " =0 : net and o |
1720 " =1 : net and v | 1749 " =1 : net and v |
1721 " =2 : local and o | 1750 " =2 : local and o |
1722 " =3 : local and v | 1751 " =3 : local and v |
1723 fun! s:NetSplit(mode) | 1752 fun! s:NetSplit(mode) |
1724 " call Dfunc("NetSplit(mode=".a:mode.")") | 1753 " call Dfunc("NetSplit(mode=".a:mode.") alto=".g:netrw_alto." altv=".g:netrw_altv) |
1725 | 1754 |
1726 call s:SaveWinVars() | 1755 call s:SaveWinVars() |
1727 if a:mode == 0 | 1756 if a:mode == 0 |
1728 exe (g:netrw_alto? "bel " : "abo ").g:netrw_winsize."wincmd s" | 1757 exe (g:netrw_alto? "bel " : "abo ").g:netrw_winsize."wincmd s" |
1729 call s:CopyWinVars() | 1758 call s:CopyWinVars() |
1730 exe "norm! 0" | 1759 exe "norm! 0" |
1731 call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord())) | 1760 call s:NetBrowse(s:NetBrowseChgDir(expand("%"),s:NetGetWord())) |
1732 elseif a:mode ==1 | 1761 elseif a:mode ==1 |
1733 exe (g:netrw_altv? "rightb " : "lefta ").g:netrw_winsize."wincmd v" | 1762 exe (g:netrw_altv? "rightb " : "lefta ").g:netrw_winsize."wincmd v" |
1734 call s:CopyWinVars() | 1763 call s:CopyWinVars() |
1735 exe "norm! 0" | 1764 exe "norm! 0" |
1736 call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord())) | 1765 call s:NetBrowse(s:NetBrowseChgDir(expand("%"),s:NetGetWord())) |
1737 elseif a:mode ==2 | 1766 elseif a:mode ==2 |
1738 exe (g:netrw_alto? "bel " : "abo ").g:netrw_winsize."wincmd s" | 1767 exe (g:netrw_alto? "bel " : "abo ").g:netrw_winsize."wincmd s" |
1739 call s:CopyWinVars() | 1768 call s:CopyWinVars() |
1740 exe "norm! 0" | 1769 exe "norm! 0" |
1741 call s:LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord())) | 1770 call s:LocalBrowse(s:LocalBrowseChgDir(b:netrw_curdir,s:NetGetWord())) |
1742 else | 1771 else |
1743 exe (g:netrw_altv? "rightb " : "lefta ").g:netrw_winsize."wincmd v" | 1772 exe (g:netrw_altv? "rightb " : "lefta ").g:netrw_winsize."wincmd v" |
1744 call s:CopyWinVars() | 1773 call s:CopyWinVars() |
1745 exe "norm! 0" | 1774 exe "norm! 0" |
1746 call s:LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord())) | 1775 call s:LocalBrowse(s:LocalBrowseChgDir(b:netrw_curdir,s:NetGetWord())) |
1747 endif | 1776 endif |
1748 | 1777 |
1749 " call Dret("NetSplit") | 1778 " call Dret("NetSplit") |
1750 endfun | 1779 endfun |
1751 | 1780 |
1752 " --------------------------------------------------------------------- | 1781 " --------------------------------------------------------------------- |
1753 " NetBrowseX: allows users to write custom functions to operate on {{{2 | 1782 " NetBrowseX: allows users to write custom functions to operate on {{{2 |
1754 " files given their extension. Passes 0=local, 1=remote | 1783 " files given their extension. Passes 0=local, 1=remote |
1755 fun! s:NetBrowseX(fname,remote) | 1784 fun! netrw#NetBrowseX(fname,remote) |
1756 " call Dfunc("NetBrowseX(".a:fname." remote=".a:remote.")") | 1785 " call Dfunc("NetBrowseX(fname<".a:fname."> remote=".a:remote.")") |
1757 | 1786 |
1758 " set up the filename | 1787 " set up the filename |
1759 " (lower case the extension, make a local copy of a remote file) | 1788 " (lower case the extension, make a local copy of a remote file) |
1760 let exten= substitute(a:fname,'.*\.\(.\{-}\)','\1','e') | 1789 let exten= substitute(a:fname,'.*\.\(.\{-}\)','\1','e') |
1761 if has("win32") || has("win95") || has("win64") || has("win16") | 1790 if has("win32") || has("win95") || has("win64") || has("win16") |
1762 let exten= substitute(exten,'^.*$','\L&\E','') | 1791 let exten= substitute(exten,'^.*$','\L&\E','') |
1763 endif | 1792 endif |
1764 let fname= escape(a:fname,"%#") | 1793 let fname= escape(a:fname,"%#") |
1765 " call Decho("fname<".fname."> after escape()") | 1794 " call Decho("fname<".fname."> after escape()") |
1795 | |
1796 " seems kde systems often have gnome-open due to dependencies, even though | |
1797 " gnome-open's subsidiary display tools are largely absent. Kde systems | |
1798 " usually have "kicker" running, though... (tnx Mikolaj Machowski) | |
1799 if !exists("s:haskicker") | |
1800 if has("unix") | |
1801 let v:shell_error=0 | |
1802 silent! let s:haskicker= system('ps -e') =~ 'kicker' | |
1803 if v:shell_error | |
1804 let s:haskicker = 0 | |
1805 let v:shell_error = 0 | |
1806 endif | |
1807 else | |
1808 let s:haskicker= 0 | |
1809 endif | |
1810 " call Decho("setting s:haskicker=".s:haskicker) | |
1811 endif | |
1766 | 1812 |
1767 if a:remote == 1 | 1813 if a:remote == 1 |
1768 " create a local copy | 1814 " create a local copy |
1769 let fname= tempname().".".exten | 1815 let fname= tempname().".".exten |
1770 " call Decho("create a local copy of <".a:fname."> as <".fname.">") | 1816 " call Decho("create a local copy of <".a:fname."> as <".fname.">") |
1781 else | 1827 else |
1782 let redir= &srr . "/dev/null" | 1828 let redir= &srr . "/dev/null" |
1783 endif | 1829 endif |
1784 " call Decho("redir:".redir.":") | 1830 " call Decho("redir:".redir.":") |
1785 | 1831 |
1832 if exists("g:netrw_browsex_viewer") && executable(g:netrw_browsex_viewer) | |
1833 if g:netrw_browsex_viewer == '-' | |
1834 call netrwFileHandlers#Init() | |
1835 if exten != "" && exists("*netrwFileHandlers#NFH_".exten) | |
1836 " call Decho("let ret= netrwFileHandlers#NFH_".exten.'("'.fname.'")') | |
1837 exe "let ret= netrwFileHandlers#NFH_".exten.'("'.fname.'")' | |
1838 endif | |
1839 else | |
1840 " call Decho("exe silent !".g:netrw_browsex_viewer." '".escape(fname,'%#')."' ".redir) | |
1841 exe "silent !".g:netrw_browsex_viewer." '".escape(fname,'%#')."'".redir | |
1842 let ret= v:shell_error | |
1843 endif | |
1844 | |
1786 " execute the file handler | 1845 " execute the file handler |
1787 if has("win32") || has("win64") | 1846 elseif has("win32") || has("win64") |
1788 " call Decho('exe silent !start rundll32 url.dll,FileProtocolHandler "'.escape(fname, '%#').'"') | 1847 " call Decho('exe silent !start rundll32 url.dll,FileProtocolHandler "'.escape(fname, '%#').'"') |
1789 exe 'silent !start rundll32 url.dll,FileProtocolHandler "'.escape(fname, '%#').'"' | 1848 exe 'silent !start rundll32 url.dll,FileProtocolHandler "'.escape(fname, '%#').'"' |
1790 let ret= v:shell_error | 1849 let ret= v:shell_error |
1791 | 1850 |
1792 elseif has("unix") && executable("gnome-open") | 1851 elseif has("unix") && executable("gnome-open") && !s:haskicker |
1793 " call Decho("exe silent !gnome-open '".escape(fname,'%#')."' ".redir) | 1852 " call Decho("exe silent !gnome-open '".escape(fname,'%#')."' ".redir) |
1794 exe "silent !gnome-open '".escape(fname,'%#')."'".redir | 1853 exe "silent !gnome-open '".escape(fname,'%#')."'".redir |
1795 let ret= v:shell_error | 1854 let ret= v:shell_error |
1796 | 1855 |
1797 elseif has("unix") && executable("kfmclient") | 1856 elseif has("unix") && executable("kfmclient") && s:haskicker |
1798 " call Decho("exe silent !kfmclient exec '".escape(fname,'%#')."' ".redir) | 1857 " call Decho("exe silent !kfmclient exec '".escape(fname,'%#')."' ".redir) |
1799 exe "silent !kfmclient exec '".escape(fname,'%#')."' ".redir | 1858 exe "silent !kfmclient exec '".escape(fname,'%#')."' ".redir |
1800 let ret= v:shell_error | 1859 let ret= v:shell_error |
1801 | 1860 |
1802 else | 1861 else |
1967 | 2026 |
1968 " refresh the listing | 2027 " refresh the listing |
1969 if a:islocal == 0 | 2028 if a:islocal == 0 |
1970 silent call s:NetBrowse(s:NetBrowseChgDir(expand("%"),'./')) | 2029 silent call s:NetBrowse(s:NetBrowseChgDir(expand("%"),'./')) |
1971 else | 2030 else |
1972 silent call s:NetRefresh(<SID>LocalBrowseChgDir(b:netrw_curdir,"./"),a:islocal) | 2031 silent call s:NetRefresh(s:LocalBrowseChgDir(b:netrw_curdir,"./"),a:islocal) |
1973 endif | 2032 endif |
1974 | 2033 |
1975 " call Dret("NetHideEdit") | 2034 " call Dret("NetHideEdit") |
1976 endfun | 2035 endfun |
1977 | 2036 |
1987 " refresh the listing | 2046 " refresh the listing |
1988 let g:netrw_sort_sequence= newsortseq | 2047 let g:netrw_sort_sequence= newsortseq |
1989 if a:mode == 0 | 2048 if a:mode == 0 |
1990 silent call s:NetBrowse(s:NetBrowseChgDir(expand("%"),'./')) | 2049 silent call s:NetBrowse(s:NetBrowseChgDir(expand("%"),'./')) |
1991 else | 2050 else |
1992 silent call s:LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,"./")) | 2051 silent call s:LocalBrowse(s:LocalBrowseChgDir(b:netrw_curdir,"./")) |
1993 endif | 2052 endif |
1994 | 2053 |
1995 " call Dret("NetSortSequence") | 2054 " call Dret("NetSortSequence") |
1996 endfun | 2055 endfun |
1997 | 2056 |
2023 " clear buffer - this will cause NetBrowse/LocalBrowse to do a refresh | 2082 " clear buffer - this will cause NetBrowse/LocalBrowse to do a refresh |
2024 %d | 2083 %d |
2025 | 2084 |
2026 " refresh the listing | 2085 " refresh the listing |
2027 if a:mode == 0 | 2086 if a:mode == 0 |
2028 silent call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),"./")) | 2087 silent call s:NetBrowse(s:NetBrowseChgDir(expand("%"),"./")) |
2029 else | 2088 else |
2030 silent call s:LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,"./")) | 2089 silent call s:LocalBrowse(s:LocalBrowseChgDir(b:netrw_curdir,"./")) |
2031 endif | 2090 endif |
2032 | 2091 |
2033 " keep cursor on the filename | 2092 " keep cursor on the filename |
2034 silent keepjumps $ | 2093 silent keepjumps $ |
2035 if fname =~ '/$' | 2094 if fname =~ '/$' |
2432 redraw! | 2491 redraw! |
2433 | 2492 |
2434 " call Dret("NetObtain") | 2493 " call Dret("NetObtain") |
2435 endfun | 2494 endfun |
2436 | 2495 |
2496 " --------------------------------------------------------------------- | |
2497 " NetPrevWinOpen: opoen file/directory in previous window. {{{2 | |
2498 " If there's only one window, then the window will first be split. | |
2499 fun! s:NetPrevWinOpen(islocal) | |
2500 " call Dfunc("NetPrevWinOpen(islocal=".a:islocal.")") | |
2501 | |
2502 " get last window number and the word currently under the cursor | |
2503 let lastwinnr = winnr("$") | |
2504 let curword = s:NetGetWord() | |
2505 let curdir = b:netrw_curdir | |
2506 " call Decho("lastwinnr=".lastwinnr." curword<".curword.">") | |
2507 | |
2508 let didsplit = 0 | |
2509 if lastwinnr == 1 | |
2510 " if only one window, open a new one first | |
2511 " call Decho("only one window, so open a new one (g:netrw_alto=".g:netrw_alto.")") | |
2512 exe (g:netrw_alto? "bel " : "abo ").g:netrw_winsize."wincmd s" | |
2513 let didsplit = 1 | |
2514 | |
2515 else | |
2516 wincmd p | |
2517 " if the previous window's buffer has been changed (is modified), | |
2518 " and it doesn't appear in any other extant window, then ask the | |
2519 " user if s/he wants to abandon modifications therein. | |
2520 let bnr = winbufnr(0) | |
2521 let bnrcnt = 0 | |
2522 if &mod | |
2523 windo if winbufnr(0) == bnr | let bnrcnt=bnrcnt+1 | endif | |
2524 " call Decho("bnr=".bnr." bnrcnt=".bnrcnt) | |
2525 if bnrcnt == 1 | |
2526 let bufname= bufname(winbufnr(winnr())) | |
2527 let choice= confirm("Save modified file<".bufname.">?","&Yes\n&No\n&Cancel") | |
2528 | |
2529 if choice == 1 | |
2530 " Yes -- write file & then browse | |
2531 let v:errmsg= "" | |
2532 silent w | |
2533 if v:errmsg != "" | |
2534 echohl Error | echo "***netrw*** "unable to write <".bufname.">!" | echohl None | |
2535 call inputsave()|call input("Press <cr> to continue")|call inputrestore() | |
2536 if didsplit | |
2537 q | |
2538 else | |
2539 wincmd p | |
2540 endif | |
2541 " call Dret("NetPrevWinOpen : unable to write <".bufname.">") | |
2542 return | |
2543 endif | |
2544 | |
2545 elseif choice == 2 | |
2546 " No -- don't worry about changed file, just browse anyway | |
2547 set nomod | |
2548 echohl WarningMsg | echo "***netrw*** ".bufname." changes abandoned" | echohl None | |
2549 | |
2550 else | |
2551 " Cancel -- don't do this | |
2552 if didsplit | |
2553 q | |
2554 else | |
2555 wincmd p | |
2556 endif | |
2557 " call Dret("NetPrevWinOpen : cancelled") | |
2558 return | |
2559 endif | |
2560 endif | |
2561 endif | |
2562 endif | |
2563 | |
2564 if a:islocal | |
2565 call s:LocalBrowse(s:LocalBrowseChgDir(curdir,curword)) | |
2566 else | |
2567 call s:NetBrowse(s:NetBrowseChgDir(expand("%"),curword)) | |
2568 endif | |
2569 " call Dret("NetPrevWinOpen") | |
2570 endfun | |
2571 | |
2437 " ========================================== | 2572 " ========================================== |
2438 " Local Directory Browsing Support: {{{1 | 2573 " Local Directory Browsing Support: {{{1 |
2439 " ========================================== | 2574 " ========================================== |
2440 | 2575 |
2441 " --------------------------------------------------------------------- | 2576 " --------------------------------------------------------------------- |
2443 fun! s:LocalBrowse(dirname) | 2578 fun! s:LocalBrowse(dirname) |
2444 " unfortunate interaction -- debugging calls can't be used here; | 2579 " unfortunate interaction -- debugging calls can't be used here; |
2445 " the BufEnter event causes triggering when attempts to write to | 2580 " the BufEnter event causes triggering when attempts to write to |
2446 " the DBG buffer are made. | 2581 " the DBG buffer are made. |
2447 if isdirectory(a:dirname) | 2582 if isdirectory(a:dirname) |
2448 call netrw#DirBrowse(a:dirname) | 2583 silent! call netrw#DirBrowse(a:dirname) |
2449 endif | 2584 endif |
2450 " not a directory, ignore it | 2585 " not a directory, ignore it |
2451 endfun | 2586 endfun |
2452 | 2587 |
2453 " --------------------------------------------------------------------- | 2588 " --------------------------------------------------------------------- |
2460 if exists("s:netrw_skipbrowse") | 2595 if exists("s:netrw_skipbrowse") |
2461 unlet s:netrw_skipbrowse | 2596 unlet s:netrw_skipbrowse |
2462 " call Dret("DirBrowse") | 2597 " call Dret("DirBrowse") |
2463 return | 2598 return |
2464 endif | 2599 endif |
2600 | |
2465 call s:NetOptionSave() | 2601 call s:NetOptionSave() |
2466 | 2602 |
2467 if v:version < 603 | 2603 if v:version < 603 |
2468 if !exists("g:netrw_quiet") | 2604 if !exists("g:netrw_quiet") |
2469 echohl Error | echo "***netrw*** vim version<".v:version."> too old for browsing with netrw" | echohl None | 2605 echohl Error | echo "***netrw*** vim version<".v:version."> too old for browsing with netrw" | echohl None |
2548 endif | 2684 endif |
2549 endtry | 2685 endtry |
2550 endif | 2686 endif |
2551 | 2687 |
2552 " change the name of the buffer to reflect the b:netrw_curdir | 2688 " change the name of the buffer to reflect the b:netrw_curdir |
2689 " Hmm. When another vim is open to the same directory, I get | |
2690 " a "Press ENTER" ... ok, setting "noswf" avoids it. | |
2691 " call Decho('exe silent! file '.escape(b:netrw_curdir,s:netrw_cd_escape)) | |
2553 exe 'silent! file '.escape(b:netrw_curdir,s:netrw_cd_escape) | 2692 exe 'silent! file '.escape(b:netrw_curdir,s:netrw_cd_escape) |
2554 | 2693 |
2555 " make this buffer not-a-file, modifiable, not line-numbered, etc | 2694 " make this buffer not-a-file, modifiable, not line-numbered, etc |
2556 setlocal bh=hide bt=nofile nobl ma nonu | 2695 setlocal bh=hide bt=nofile nobl ma nonu noswf |
2557 keepalt silent! %d | 2696 keepalt silent! %d |
2558 | 2697 |
2559 " --------------------------- | 2698 " --------------------------- |
2560 " Perform Directory Listing: | 2699 " Perform Directory Listing: |
2561 if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1 | 2700 if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1 |
2562 echo "(netrw) Processing your browsing request..." | 2701 echo "(netrw) Processing your browsing request..." |
2563 endif | 2702 endif |
2564 | 2703 |
2565 " save current directory on directory history list | 2704 " save current directory on directory history list |
2566 call <SID>NetBookmarkDir(3,b:netrw_curdir) | 2705 call s:NetBookmarkDir(3,b:netrw_curdir) |
2567 | 2706 |
2568 " set up all the maps | 2707 " set up all the maps |
2569 " call Decho("Setting up local browser maps") | 2708 " call Decho("Setting up local browser maps") |
2570 nnoremap <buffer> <silent> <cr> :call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr> | 2709 nnoremap <buffer> <silent> <cr> :call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr> |
2571 nnoremap <buffer> <silent> <c-l> :call <SID>NetRefresh(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'),1)<cr> | 2710 nnoremap <buffer> <silent> <c-l> :call <SID>NetRefresh(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'),1)<cr> |
2582 nnoremap <buffer> <silent> <c-h> :call <SID>NetHideEdit(1)<cr> | 2721 nnoremap <buffer> <silent> <c-h> :call <SID>NetHideEdit(1)<cr> |
2583 nnoremap <buffer> <silent> i :call <SID>NetLongList(1)<cr> | 2722 nnoremap <buffer> <silent> i :call <SID>NetLongList(1)<cr> |
2584 nnoremap <buffer> <silent> o :call <SID>NetSplit(2)<cr> | 2723 nnoremap <buffer> <silent> o :call <SID>NetSplit(2)<cr> |
2585 nnoremap <buffer> <silent> O :call <SID>LocalObtain()<cr> | 2724 nnoremap <buffer> <silent> O :call <SID>LocalObtain()<cr> |
2586 nnoremap <buffer> <silent> p :call <SID>LocalPreview(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord(),1))<cr> | 2725 nnoremap <buffer> <silent> p :call <SID>LocalPreview(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord(),1))<cr> |
2726 nnoremap <buffer> <silent> P :call <SID>NetPrevWinOpen(1)<cr> | |
2587 nnoremap <buffer> <silent> q :<c-u>call <SID>NetBookmarkDir(2,b:netrw_curdir)<cr> | 2727 nnoremap <buffer> <silent> q :<c-u>call <SID>NetBookmarkDir(2,b:netrw_curdir)<cr> |
2588 nnoremap <buffer> <silent> r :let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetRefresh(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'),1)<cr> | 2728 nnoremap <buffer> <silent> r :let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetRefresh(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'),1)<cr> |
2589 nnoremap <buffer> <silent> s :call <SID>NetSaveWordPosn()<bar>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(b:netrw_curdir,'./'))<bar>call <SID>NetRestoreWordPosn()<cr> | 2729 nnoremap <buffer> <silent> s :call <SID>NetSaveWordPosn()<bar>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(b:netrw_curdir,'./'))<bar>call <SID>NetRestoreWordPosn()<cr> |
2590 nnoremap <buffer> <silent> S :call <SID>NetSortSequence(1)<cr> | 2730 nnoremap <buffer> <silent> S :call <SID>NetSortSequence(1)<cr> |
2591 nnoremap <buffer> <silent> u :<c-u>call <SID>NetBookmarkDir(4,expand("%"))<cr> | 2731 nnoremap <buffer> <silent> u :<c-u>call <SID>NetBookmarkDir(4,expand("%"))<cr> |
2592 nnoremap <buffer> <silent> U :<c-u>call <SID>NetBookmarkDir(5,expand("%"))<cr> | 2732 nnoremap <buffer> <silent> U :<c-u>call <SID>NetBookmarkDir(5,expand("%"))<cr> |
2593 nnoremap <buffer> <silent> v :call <SID>NetSplit(3)<cr> | 2733 nnoremap <buffer> <silent> v :call <SID>NetSplit(3)<cr> |
2594 nnoremap <buffer> <silent> x :call <SID>NetBrowseX(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord(),0),0)"<cr> | 2734 nnoremap <buffer> <silent> x :call netrw#NetBrowseX(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord(),0),0)"<cr> |
2595 nnoremap <buffer> <silent> <2-leftmouse> :call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr> | 2735 nnoremap <buffer> <silent> <2-leftmouse> :call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr> |
2596 nnoremap <buffer> <silent> <s-up> :Pexplore<cr> | 2736 nnoremap <buffer> <silent> <s-up> :Pexplore<cr> |
2597 nnoremap <buffer> <silent> <s-down> :Nexplore<cr> | 2737 nnoremap <buffer> <silent> <s-down> :Nexplore<cr> |
2598 exe 'nnoremap <buffer> <silent> <del> :call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>' | 2738 exe 'nnoremap <buffer> <silent> <del> :call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>' |
2599 exe 'vnoremap <buffer> <silent> <del> :call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>' | 2739 exe 'vnoremap <buffer> <silent> <del> :call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>' |
2782 " call Decho("getftime(".filename.")=".getftime(filename)) | 2922 " call Decho("getftime(".filename.")=".getftime(filename)) |
2783 let t = getftime(filename) | 2923 let t = getftime(filename) |
2784 let ft = strpart("000000000000000000",1,18-strlen(t)).t | 2924 let ft = strpart("000000000000000000",1,18-strlen(t)).t |
2785 " call Decho("exe keepjumps put ='".ft.'/'.filename."'") | 2925 " call Decho("exe keepjumps put ='".ft.'/'.filename."'") |
2786 let ftpfile= ft.'/'.pfile | 2926 let ftpfile= ft.'/'.pfile |
2787 keepjumps put=ftpfile | 2927 keepjumps silent! put=ftpfile |
2788 | 2928 |
2789 elseif g:netrw_sort_by =~ "^s" | 2929 elseif g:netrw_sort_by =~ "^s" |
2790 " sort by size (handles file sizes up to 1 quintillion bytes, US) | 2930 " sort by size (handles file sizes up to 1 quintillion bytes, US) |
2791 " call Decho("getfsize(".filename.")=".getfsize(filename)) | 2931 " call Decho("getfsize(".filename.")=".getfsize(filename)) |
2792 let sz = getfsize(filename) | 2932 let sz = getfsize(filename) |
2793 let fsz = strpart("000000000000000000",1,18-strlen(sz)).sz | 2933 let fsz = strpart("000000000000000000",1,18-strlen(sz)).sz |
2794 " call Decho("exe keepjumps put ='".fsz.'/'.filename."'") | 2934 " call Decho("exe keepjumps put ='".fsz.'/'.filename."'") |
2795 let fszpfile= fsz.'/'.pfile | 2935 let fszpfile= fsz.'/'.pfile |
2796 keepjumps put =fszpfile | 2936 keepjumps silent! put =fszpfile |
2797 | 2937 |
2798 else | 2938 else |
2799 " sort by name | 2939 " sort by name |
2800 " call Decho("exe keepjumps put ='".pfile."'") | 2940 " call Decho("exe keepjumps put ='".pfile."'") |
2801 keepjumps put=pfile | 2941 keepjumps silent! put=pfile |
2802 endif | 2942 endif |
2803 endwhile | 2943 endwhile |
2804 | 2944 |
2805 " cleanup any windows mess at end-of-line | 2945 " cleanup any windows mess at end-of-line |
2806 silent! keepjumps %s/\r$//e | 2946 silent! keepjumps %s/\r$//e |
2831 " call Decho("handling a file: dirname<".dirname.">") | 2971 " call Decho("handling a file: dirname<".dirname.">") |
2832 " this lets NetBrowseX avoid the edit | 2972 " this lets NetBrowseX avoid the edit |
2833 if a:0 < 1 | 2973 if a:0 < 1 |
2834 " call Decho("dirname<".dirname."> netrw_cd_escape<".s:netrw_cd_escape.">") | 2974 " call Decho("dirname<".dirname."> netrw_cd_escape<".s:netrw_cd_escape.">") |
2835 " call Decho("about to edit<".escape(dirname,s:netrw_cd_escape).">") | 2975 " call Decho("about to edit<".escape(dirname,s:netrw_cd_escape).">") |
2976 if g:netrw_browse_split == 1 | |
2977 new | |
2978 wincmd _ | |
2979 elseif g:netrw_browse_split == 2 | |
2980 rightb vert new | |
2981 wincmd | | |
2982 endif | |
2836 exe "e! ".escape(dirname,s:netrw_cd_escape) | 2983 exe "e! ".escape(dirname,s:netrw_cd_escape) |
2837 set ma nomod | 2984 set ma nomod |
2838 endif | 2985 endif |
2839 | 2986 |
2840 elseif newdir == './' | 2987 elseif newdir == './' |
3061 fun! netrw#Explore(indx,dosplit,style,...) | 3208 fun! netrw#Explore(indx,dosplit,style,...) |
3062 " call Dfunc("Explore(indx=".a:indx." dosplit=".a:dosplit." style=".a:style.")") | 3209 " call Dfunc("Explore(indx=".a:indx." dosplit=".a:dosplit." style=".a:style.")") |
3063 | 3210 |
3064 " if dosplit or file has been modified | 3211 " if dosplit or file has been modified |
3065 if a:dosplit || &modified | 3212 if a:dosplit || &modified |
3066 call <SID>SaveWinVars() | 3213 call s:SaveWinVars() |
3067 | 3214 |
3068 if a:style == 0 " Explore, Sexplore | 3215 if a:style == 0 " Explore, Sexplore |
3069 exe g:netrw_winsize."wincmd s" | 3216 exe g:netrw_winsize."wincmd s" |
3070 " call Decho("style=0: Explore or Sexplore") | 3217 " call Decho("style=0: Explore or Sexplore") |
3071 | 3218 |
3273 " call Dret("NetGetcwd <".curdir.">") | 3420 " call Dret("NetGetcwd <".curdir.">") |
3274 return curdir | 3421 return curdir |
3275 endfun | 3422 endfun |
3276 | 3423 |
3277 " --------------------------------------------------------------------- | 3424 " --------------------------------------------------------------------- |
3278 " NetMethod: determine method of transfer {{{1 | 3425 " NetMethod: determine method of transfer {{{2 |
3279 " method == 1: rcp | 3426 " method == 1: rcp |
3280 " 2: ftp + <.netrc> | 3427 " 2: ftp + <.netrc> |
3281 " 3: ftp + machine, id, password, and [path]filename | 3428 " 3: ftp + machine, id, password, and [path]filename |
3282 " 4: scp | 3429 " 4: scp |
3283 " 5: http (wget) | 3430 " 5: http (wget) |
3473 " call Decho("b:netrw_fname <".b:netrw_fname.">") | 3620 " call Decho("b:netrw_fname <".b:netrw_fname.">") |
3474 " call Dret("NetMethod") | 3621 " call Dret("NetMethod") |
3475 endfun | 3622 endfun |
3476 | 3623 |
3477 " ------------------------------------------------------------------------ | 3624 " ------------------------------------------------------------------------ |
3478 " NetUserPass: set username and password for subsequent ftp transfer {{{1 | 3625 " NetUserPass: set username and password for subsequent ftp transfer {{{2 |
3479 " Usage: :call NetUserPass() -- will prompt for userid and password | 3626 " Usage: :call NetUserPass() -- will prompt for userid and password |
3480 " :call NetUserPass("uid") -- will prompt for password | 3627 " :call NetUserPass("uid") -- will prompt for password |
3481 " :call NetUserPass("uid","password") -- sets global userid and password | 3628 " :call NetUserPass("uid","password") -- sets global userid and password |
3482 fun! NetUserPass(...) | 3629 fun! NetUserPass(...) |
3483 | 3630 |
3504 | 3651 |
3505 " call Dret("NetUserPass") | 3652 " call Dret("NetUserPass") |
3506 endfun | 3653 endfun |
3507 | 3654 |
3508 " ------------------------------------------------------------------------ | 3655 " ------------------------------------------------------------------------ |
3509 " NetOptionSave: save options and set to "standard" form {{{1 | 3656 " NetOptionSave: save options and set to "standard" form {{{2 |
3510 fun! s:NetOptionSave() | 3657 fun! s:NetOptionSave() |
3511 " call Dfunc("NetOptionSave()") | 3658 " call Dfunc("NetOptionSave()") |
3512 if !exists("w:netoptionsave") | 3659 if !exists("w:netoptionsave") |
3513 let w:netoptionsave= 1 | 3660 let w:netoptionsave= 1 |
3514 else | 3661 else |
3548 | 3695 |
3549 " call Dret("NetOptionSave") | 3696 " call Dret("NetOptionSave") |
3550 endfun | 3697 endfun |
3551 | 3698 |
3552 " ------------------------------------------------------------------------ | 3699 " ------------------------------------------------------------------------ |
3553 " NetOptionRestore: restore options {{{1 | 3700 " NetOptionRestore: restore options {{{2 |
3554 fun! s:NetOptionRestore() | 3701 fun! s:NetOptionRestore() |
3555 " call Dfunc("NetOptionRestore()") | 3702 " call Dfunc("NetOptionRestore()") |
3556 if !exists("w:netoptionsave") | 3703 if !exists("w:netoptionsave") |
3557 " call Dret("NetOptionRestore : w:netoptionsave doesn't exist") | 3704 " call Dret("NetOptionRestore : w:netoptionsave doesn't exist") |
3558 return | 3705 return |
3589 | 3736 |
3590 " call Dret("NetOptionRestore") | 3737 " call Dret("NetOptionRestore") |
3591 endfun | 3738 endfun |
3592 | 3739 |
3593 " ------------------------------------------------------------------------ | 3740 " ------------------------------------------------------------------------ |
3594 " NetReadFixup: this sort of function is typically written by the user {{{1 | 3741 " NetReadFixup: this sort of function is typically written by the user {{{2 |
3595 " to handle extra junk that their system's ftp dumps | 3742 " to handle extra junk that their system's ftp dumps |
3596 " into the transfer. This function is provided as an | 3743 " into the transfer. This function is provided as an |
3597 " example and as a fix for a Windows 95 problem: in my | 3744 " example and as a fix for a Windows 95 problem: in my |
3598 " experience, win95's ftp always dumped four blank lines | 3745 " experience, win95's ftp always dumped four blank lines |
3599 " at the end of the transfer. | 3746 " at the end of the transfer. |
3607 " call Dret("NetReadFixup") | 3754 " call Dret("NetReadFixup") |
3608 endfun | 3755 endfun |
3609 endif | 3756 endif |
3610 | 3757 |
3611 " --------------------------------------------------------------------- | 3758 " --------------------------------------------------------------------- |
3612 " NetSort: Piet Delport's BISort2() function, modified to take a range {{{1 | 3759 " NetSort: Piet Delport's BISort2() function, modified to take a range {{{2 |
3613 if v:version < 700 | 3760 if v:version < 700 |
3614 fun! s:NetSort() range | 3761 fun! s:NetSort() range |
3615 " " call Dfunc("NetSort()") | 3762 " " call Dfunc("NetSort()") |
3616 | 3763 |
3617 let i = a:firstline + 1 | 3764 let i = a:firstline + 1 |
3652 " " call Dret("NetSort") | 3799 " " call Dret("NetSort") |
3653 endfun | 3800 endfun |
3654 endif | 3801 endif |
3655 | 3802 |
3656 " --------------------------------------------------------------------- | 3803 " --------------------------------------------------------------------- |
3657 " SetSort: sets up the sort based on the g:netrw_sort_sequence {{{1 | 3804 " SetSort: sets up the sort based on the g:netrw_sort_sequence {{{2 |
3658 " What this function does is to compute a priority for the patterns | 3805 " What this function does is to compute a priority for the patterns |
3659 " in the g:netrw_sort_sequence. It applies a substitute to any | 3806 " in the g:netrw_sort_sequence. It applies a substitute to any |
3660 " "files" that satisfy each pattern, putting the priority / in | 3807 " "files" that satisfy each pattern, putting the priority / in |
3661 " front. An "*" pattern handles the default priority. | 3808 " front. An "*" pattern handles the default priority. |
3662 fun! s:SetSort() | 3809 fun! s:SetSort() |
3709 | 3856 |
3710 " call Dret("SetSort") | 3857 " call Dret("SetSort") |
3711 endfun | 3858 endfun |
3712 | 3859 |
3713 " --------------------------------------------------------------------- | 3860 " --------------------------------------------------------------------- |
3714 " SaveWinVars: (used by Explore()) {{{1 | 3861 " SaveWinVars: (used by Explore()) {{{2 |
3715 fun! s:SaveWinVars() | 3862 fun! s:SaveWinVars() |
3716 " call Dfunc("SaveWinVars()") | 3863 " call Dfunc("SaveWinVars()") |
3717 if exists("w:netrw_bannercnt") |let s:bannercnt = w:netrw_bannercnt |endif | 3864 if exists("w:netrw_bannercnt") |let s:bannercnt = w:netrw_bannercnt |endif |
3718 if exists("w:netrw_method") |let s:method = w:netrw_method |endif | 3865 if exists("w:netrw_method") |let s:method = w:netrw_method |endif |
3719 if exists("w:netrw_prvdir") |let s:prvdir = w:netrw_prvdir |endif | 3866 if exists("w:netrw_prvdir") |let s:prvdir = w:netrw_prvdir |endif |
3725 if exists("w:netrw_explore_list") |let s:explore_list = w:netrw_explore_list |endif | 3872 if exists("w:netrw_explore_list") |let s:explore_list = w:netrw_explore_list |endif |
3726 " call Dret("SaveWinVars") | 3873 " call Dret("SaveWinVars") |
3727 endfun | 3874 endfun |
3728 | 3875 |
3729 " --------------------------------------------------------------------- | 3876 " --------------------------------------------------------------------- |
3730 " CopyWinVars: (used by Explore()) {{{1 | 3877 " CopyWinVars: (used by Explore()) {{{2 |
3731 fun! s:CopyWinVars() | 3878 fun! s:CopyWinVars() |
3732 " call Dfunc("CopyWinVars()") | 3879 " call Dfunc("CopyWinVars()") |
3733 if exists("s:bannercnt") |let w:netrw_bannercnt = s:bannercnt |unlet s:bannercnt |endif | 3880 if exists("s:bannercnt") |let w:netrw_bannercnt = s:bannercnt |unlet s:bannercnt |endif |
3734 if exists("s:method") |let w:netrw_method = s:method |unlet s:method |endif | 3881 if exists("s:method") |let w:netrw_method = s:method |unlet s:method |endif |
3735 if exists("s:prvdir") |let w:netrw_prvdir = s:prvdir |unlet s:prvdir |endif | 3882 if exists("s:prvdir") |let w:netrw_prvdir = s:prvdir |unlet s:prvdir |endif |
3741 if exists("s:explore_list") |let w:netrw_explore_list = s:explore_list |unlet s:explore_list |endif | 3888 if exists("s:explore_list") |let w:netrw_explore_list = s:explore_list |unlet s:explore_list |endif |
3742 " call Dret("CopyWinVars") | 3889 " call Dret("CopyWinVars") |
3743 endfun | 3890 endfun |
3744 | 3891 |
3745 " --------------------------------------------------------------------- | 3892 " --------------------------------------------------------------------- |
3746 " SetBufWinVars: (used by NetBrowse() and LocalBrowse()) {{{1 | 3893 " SetBufWinVars: (used by NetBrowse() and LocalBrowse()) {{{2 |
3747 " To allow separate windows to have their own activities, such as | 3894 " To allow separate windows to have their own activities, such as |
3748 " Explore **/pattern, several variables have been made window-oriented. | 3895 " Explore **/pattern, several variables have been made window-oriented. |
3749 " However, when the user splits a browser window (ex: ctrl-w s), these | 3896 " However, when the user splits a browser window (ex: ctrl-w s), these |
3750 " variables are not inherited by the new window. SetBufWinVars() and | 3897 " variables are not inherited by the new window. SetBufWinVars() and |
3751 " UseBufWinVars() get around that. | 3898 " UseBufWinVars() get around that. |
3763 if exists("w:netrw_explore_list") |let b:netrw_explore_list = w:netrw_explore_list |endif | 3910 if exists("w:netrw_explore_list") |let b:netrw_explore_list = w:netrw_explore_list |endif |
3764 " call Dret("SetBufWinVars") | 3911 " call Dret("SetBufWinVars") |
3765 endfun | 3912 endfun |
3766 | 3913 |
3767 " --------------------------------------------------------------------- | 3914 " --------------------------------------------------------------------- |
3768 " UseBufWinVars: (used by NetBrowse() and LocalBrowse() {{{1 | 3915 " UseBufWinVars: (used by NetBrowse() and LocalBrowse() {{{2 |
3769 " Matching function to BufferWinVars() | 3916 " Matching function to BufferWinVars() |
3770 fun! s:UseBufWinVars() | 3917 fun! s:UseBufWinVars() |
3771 " call Dfunc("UseBufWinVars()") | 3918 " call Dfunc("UseBufWinVars()") |
3772 if exists("b:netrw_longlist") && !exists("w:netrw_longlist") |let w:netrw_longlist = b:netrw_longlist |endif | 3919 if exists("b:netrw_longlist") && !exists("w:netrw_longlist") |let w:netrw_longlist = b:netrw_longlist |endif |
3773 if exists("b:netrw_bannercnt") && !exists("w:netrw_bannercnt") |let w:netrw_bannercnt = b:netrw_bannercnt |endif | 3920 if exists("b:netrw_bannercnt") && !exists("w:netrw_bannercnt") |let w:netrw_bannercnt = b:netrw_bannercnt |endif |
3781 if exists("b:netrw_explore_list") && !exists("w:netrw_explore_list") |let w:netrw_explore_list = b:netrw_explore_list |endif | 3928 if exists("b:netrw_explore_list") && !exists("w:netrw_explore_list") |let w:netrw_explore_list = b:netrw_explore_list |endif |
3782 " call Dret("UseBufWinVars") | 3929 " call Dret("UseBufWinVars") |
3783 endfun | 3930 endfun |
3784 | 3931 |
3785 " --------------------------------------------------------------------- | 3932 " --------------------------------------------------------------------- |
3786 " RFC2396: converts %xx into characters | 3933 " RFC2396: converts %xx into characters {{{2 |
3787 fun! netrw#RFC2396(fname) | 3934 fun! netrw#RFC2396(fname) |
3788 " call Dfunc("RFC2396(fname<".a:fname.">)") | 3935 " call Dfunc("RFC2396(fname<".a:fname.">)") |
3789 let fname = escape(substitute(a:fname,'%\(\x\x\)','\=nr2char("0x".submatch(1))','ge')," \t") | 3936 let fname = escape(substitute(a:fname,'%\(\x\x\)','\=nr2char("0x".submatch(1))','ge')," \t") |
3790 " call Dret("RFC2396 ".fname) | 3937 " call Dret("RFC2396 ".fname) |
3791 return fname | 3938 return fname |
3792 endfun | 3939 endfun |
3793 | 3940 |
3794 " ------------------------------------------------------------------------ | 3941 " ------------------------------------------------------------------------ |
3795 " Settings Restoration: {{{1 | 3942 " Settings Restoration: {{{2 |
3796 let &cpo= s:keepcpo | 3943 let &cpo= s:keepcpo |
3797 unlet s:keepcpo | 3944 unlet s:keepcpo |
3798 | 3945 |
3799 " ------------------------------------------------------------------------ | 3946 " ------------------------------------------------------------------------ |
3800 " Modelines: {{{1 | 3947 " Modelines: {{{1 |