comparison runtime/autoload/netrw.vim @ 559:8ec588470508

updated for version 7.0159
author vimboss
date Fri, 25 Nov 2005 19:54:28 +0000
parents 862863033fdd
children db92c5cc4f66
comparison
equal deleted inserted replaced
558:7ccb59c211b7 559:8ec588470508
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 " Last Change: Aug 31, 2005 3 " Date: Nov 18, 2005
4 " Version: 75
4 " Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz> 5 " Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
5 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim 6 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
6 " Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1 7 " Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
7 " Permission is hereby granted to use and distribute this code, 8 " Permission is hereby granted to use and distribute this code,
8 " with or without modifications, provided that this copyright 9 " with or without modifications, provided that this copyright
9 " notice is copied with it. Like anything else that's free, 10 " notice is copied with it. Like anything else that's free,
10 " netrw.vim is provided *as is* and comes with no warranty 11 " netrw.vim, netrwPlugin.vim, and netrwSettings.vim are provided
11 " of any kind, either expressed or implied. By using this 12 " *as is* and comes with no warranty of any kind, either
12 " plugin, you agree that in no event will the copyright 13 " expressed or implied. By using this plugin, you agree that
13 " holder be liable for any damages resulting from the use 14 " in no event will the copyright holder be liable for any damages
15 " resulting from the use of this software.
14 " of this software. 16 " of this software.
15 " 17 "
16 " But be doers of the Word, and not only hearers, deluding your own selves {{{1 18 " But be doers of the Word, and not only hearers, deluding your own selves {{{1
17 " (James 1:22 RSV) 19 " (James 1:22 RSV)
18 " =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 20 " =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
21
22 " Exception for &cp: {{{1
23 if &cp || exists("g:loaded_netrw")
24 finish
25 endif
26 let g:loaded_netrw = "v75"
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
29 finish
30 endif
19 let s:keepcpo= &cpo 31 let s:keepcpo= &cpo
20 set cpo&vim 32 set cpo&vim
21 " call Decho("doing autoload/netrw.vim") 33 " call Decho("doing autoload/netrw.vim")
22 if v:version < 700 34
23 echohl WarningMsg | echo "***netrw*** you need vim version 7.0 or later for version ".g:loaded_netrw." of netrw" | echohl None 35 " ---------------------------------------------------------------------
24 finish 36 " Default values for netrw's global protocol variables {{{1
25 endif 37 if !exists("g:netrw_dav_cmd")
26 38 let g:netrw_dav_cmd = "cadaver"
27 " --------------------------------------------------------------------- 39 endif
28 " Default values for global netrw variables {{{1 40 if !exists("g:netrw_fetch_cmd")
29 if !exists("g:netrw_ftpmode") 41 if executable("fetch")
30 let g:netrw_ftpmode= "binary" 42 let g:netrw_fetch_cmd = "fetch -o"
31 endif
32 if !exists("g:netrw_win95ftp")
33 let g:netrw_win95ftp= 1
34 endif
35 if !exists("g:netrw_cygwin")
36 if has("win32") || has("win95") || has("win64") || has("win16")
37 if &shell == "bash"
38 let g:netrw_cygwin= 1
39 else
40 let g:netrw_cygwin= 0
41 endif
42 else 43 else
43 let g:netrw_cygwin= 0 44 let g:netrw_fetch_cmd = ""
44 endif 45 endif
45 endif
46 if !exists("g:netrw_list_cmd")
47 if executable("ssh")
48 " provide a default listing command
49 let g:netrw_list_cmd= "ssh HOSTNAME ls -FLa"
50 else
51 " call Decho("ssh is not executable, can't do remote directory exploring with ssh")
52 let g:netrw_list_cmd= ""
53 endif
54 endif
55 if !exists("g:netrw_ftp_list_cmd")
56 if has("unix") || exists("g:netrw_cygwin")
57 let g:netrw_ftp_list_cmd= "ls -lF"
58 else
59 let g:netrw_ftp_list_cmd= "dir"
60 endif
61 endif
62 if !exists("g:netrw_rm_cmd")
63 let g:netrw_rm_cmd = "ssh HOSTNAME rm"
64 endif
65 if !exists("g:netrw_rmf_cmd")
66 let g:netrw_rmf_cmd = "ssh HOSTNAME rm -f"
67 endif
68 if !exists("g:netrw_rmdir_cmd")
69 let g:netrw_rmdir_cmd = "ssh HOSTNAME rmdir"
70 endif
71 if !exists("g:netrw_rename_cmd")
72 let g:netrw_rename_cmd= "ssh HOSTNAME mv"
73 endif
74 if exists("g:netrw_silent") && g:netrw_silent != 0
75 let g:netrw_silentxfer= "silent "
76 else
77 let g:netrw_silentxfer= ""
78 endif
79 if !exists("g:netrw_winsize")
80 let g:netrw_winsize= ""
81 endif
82 if !exists("g:netrw_list_hide")
83 let g:netrw_list_hide= ""
84 endif
85 if !exists("g:netrw_sort_by")
86 " alternatives: date size
87 let g:netrw_sort_by= "name"
88 endif
89 if !exists("g:netrw_sort_sequence")
90 let g:netrw_sort_sequence= '[\/]$,*,\.bak$,\.o$,\.h$,\.info$,\.swp$,\.obj$'
91 endif
92 if !exists("g:netrw_sort_direction")
93 " alternative: reverse (z y x ...)
94 let g:netrw_sort_direction= "normal"
95 endif
96 if !exists("g:netrw_longlist")
97 let g:netrw_longlist= 0
98 endif
99 if g:netrw_longlist == 0 || g:netrw_longlist == 2
100 let g:netrw_list_cmd= "ssh HOSTNAME ls -FLa"
101 else
102 let g:netrw_longlist= 1
103 let g:netrw_list_cmd= "ssh HOSTNAME ls -FLa -l"
104 endif
105 if !exists("g:netrw_list_cmd")
106 endif
107 if !exists("g:netrw_timefmt")
108 let g:netrw_timefmt= "%c"
109 endif
110 if !exists("g:netrw_local_rmdir")
111 let g:netrw_local_rmdir= "rmdir"
112 endif
113 if !exists("g:netrw_local_mkdir")
114 let g:netrw_local_mkdir= "mkdir"
115 endif
116 if !exists("g:netrw_mkdir_cmd")
117 let g:netrw_mkdir_cmd= "ssh HOSTNAME mkdir"
118 endif
119 if !exists("g:netrw_hide")
120 let g:netrw_hide= 1
121 endif
122 if !exists("g:netrw_ftp_browse_reject")
123 let g:netrw_ftp_browse_reject='^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not\|No such file\|: connect to address [0-9a-fA-F:]*: No route to host$'
124 endif
125 if !exists("g:netrw_ssh_browse_reject")
126 let g:netrw_ssh_browse_reject='^total\s\+\d\+$'
127 endif
128 if !exists("g:netrw_keepdir")
129 let g:netrw_keepdir= 1
130 endif
131 if !exists("s:netrw_cd_escape")
132 if has("win32") || has("win95") || has("win64") || has("win16")
133 let s:netrw_cd_escape="#% "
134 else
135 let s:netrw_cd_escape="[]#*$%'\" ?`!&();<>\\"
136 endif
137 endif
138 if !exists("s:netrw_glob_escape")
139 if has("win32") || has("win95") || has("win64") || has("win16")
140 let s:netrw_glob_escape= ""
141 else
142 let s:netrw_glob_escape= '[]*?`{~$'
143 endif
144 endif
145 if !exists("g:netrw_alto")
146 let g:netrw_alto= 0
147 endif
148 if !exists("g:netrw_altv")
149 let g:netrw_altv= 0
150 endif
151 if !exists("g:netrw_maxfilenamelen")
152 let g:netrw_maxfilenamelen= 32
153 endif
154 if !exists("g:netrw_dirhistmax")
155 let g:netrw_dirhistmax= 10
156 endif
157 if !exists("g:NETRW_DIRHIST_CNT")
158 let g:NETRW_DIRHIST_CNT= 0
159 endif
160
161 " BufEnter event ignored by decho when following variable is true
162 " Has a side effect that doau BufReadPost doesn't work, so
163 " files read by network transfer aren't appropriately highlighted.
164 "let g:decho_bufenter = 1 "Decho
165
166 " ---------------------------------------------------------------------
167 " Default values for global protocol variables {{{1
168 if !exists("g:netrw_rcp_cmd")
169 let g:netrw_rcp_cmd = "rcp"
170 endif 46 endif
171 if !exists("g:netrw_ftp_cmd") 47 if !exists("g:netrw_ftp_cmd")
172 let g:netrw_ftp_cmd = "ftp" 48 let g:netrw_ftp_cmd = "ftp"
173 endif
174 if !exists("g:netrw_scp_cmd")
175 let g:netrw_scp_cmd = "scp -q"
176 endif
177 if !exists("g:netrw_sftp_cmd")
178 let g:netrw_sftp_cmd = "sftp"
179 endif 49 endif
180 if !exists("g:netrw_http_cmd") 50 if !exists("g:netrw_http_cmd")
181 if executable("wget") 51 if executable("wget")
182 let g:netrw_http_cmd = "wget -q -O" 52 let g:netrw_http_cmd = "wget -q -O"
183 elseif executable("fetch") 53 elseif executable("fetch")
184 let g:netrw_http_cmd = "fetch -o" 54 let g:netrw_http_cmd = "fetch -o"
185 else 55 else
186 let g:netrw_http_cmd = "" 56 let g:netrw_http_cmd = ""
187 endif 57 endif
188 endif 58 endif
189 if !exists("g:netrw_dav_cmd") 59 if !exists("g:netrw_rcp_cmd")
190 let g:netrw_dav_cmd = "cadaver" 60 let g:netrw_rcp_cmd = "rcp"
191 endif 61 endif
192 if !exists("g:netrw_rsync_cmd") 62 if !exists("g:netrw_rsync_cmd")
193 let g:netrw_rsync_cmd = "rsync" 63 let g:netrw_rsync_cmd = "rsync"
194 endif 64 endif
195 if !exists("g:netrw_fetch_cmd") 65 if !exists("g:netrw_scp_cmd")
196 if executable("fetch") 66 let g:netrw_scp_cmd = "scp -q"
197 let g:netrw_fetch_cmd = "fetch -o" 67 endif
198 else 68 if !exists("g:netrw_sftp_cmd")
199 let g:netrw_fetch_cmd = "" 69 let g:netrw_sftp_cmd = "sftp"
200 endif 70 endif
71 if !exists("g:netrw_ssh_cmd")
72 let g:netrw_ssh_cmd= "ssh"
201 endif 73 endif
202 74
203 if has("win32") || has("win95") || has("win64") || has("win16") 75 if has("win32") || has("win95") || has("win64") || has("win16")
204 \ && exists("g:netrw_use_nt_rcp") 76 \ && exists("g:netrw_use_nt_rcp")
205 \ && g:netrw_use_nt_rcp 77 \ && g:netrw_use_nt_rcp
208 let s:netrw_rcpmode = '-b' 80 let s:netrw_rcpmode = '-b'
209 else 81 else
210 let s:netrw_has_nt_rcp = 0 82 let s:netrw_has_nt_rcp = 0
211 let s:netrw_rcpmode = '' 83 let s:netrw_rcpmode = ''
212 endif 84 endif
85
86 " ---------------------------------------------------------------------
87 " Default values for netrw's global variables {{{1
88 " Default values - a-c ---------- {{{2
89 if !exists("g:netrw_alto")
90 let g:netrw_alto= 0
91 endif
92 if !exists("g:netrw_altv")
93 let g:netrw_altv= 0
94 endif
95 if !exists("g:netrw_cygwin")
96 if has("win32") || has("win95") || has("win64") || has("win16")
97 if &shell == "bash"
98 let g:netrw_cygwin= 1
99 else
100 let g:netrw_cygwin= 0
101 endif
102 else
103 let g:netrw_cygwin= 0
104 endif
105 endif
106 " Default values - d-f ---------- {{{2
107 if !exists("g:NETRW_DIRHIST_CNT")
108 let g:NETRW_DIRHIST_CNT= 0
109 endif
110 if !exists("g:netrw_dirhistmax")
111 let g:netrw_dirhistmax= 10
112 endif
113 if !exists("g:netrw_ftp_browse_reject")
114 let g:netrw_ftp_browse_reject='^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not\|No such file\|: connect to address [0-9a-fA-F:]*: No route to host$'
115 endif
116 if !exists("g:netrw_ftp_list_cmd")
117 if has("unix") || exists("g:netrw_cygwin")
118 let g:netrw_ftp_list_cmd= "ls -lF"
119 else
120 let g:netrw_ftp_list_cmd= "dir"
121 endif
122 endif
123 if !exists("g:netrw_ftpmode")
124 let g:netrw_ftpmode= "binary"
125 endif
126 " Default values - h-lh ---------- {{{2
127 if !exists("g:netrw_hide")
128 let g:netrw_hide= 1
129 endif
130 if !exists("g:netrw_keepdir")
131 let g:netrw_keepdir= 1
132 endif
133 if !exists("g:netrw_list_cmd")
134 if executable(g:netrw_ssh_cmd)
135 " provide a default listing command
136 let g:netrw_list_cmd= g:netrw_ssh_cmd." HOSTNAME ls -FLa"
137 else
138 " call Decho(g:netrw_ssh_cmd." is not executable, can't do remote directory exploring)
139 let g:netrw_list_cmd= ""
140 endif
141 endif
142 if !exists("g:netrw_list_hide")
143 let g:netrw_list_hide= ""
144 endif
145 " Default values - lh-lz ---------- {{{2
146 if !exists("g:netrw_local_mkdir")
147 let g:netrw_local_mkdir= "mkdir"
148 endif
149 if !exists("g:netrw_local_rmdir")
150 let g:netrw_local_rmdir= "rmdir"
151 endif
152 if !exists("g:netrw_longlist")
153 let g:netrw_longlist= 0
154 endif
155 if g:netrw_longlist < 0 || g:netrw_longlist > 2
156 " sanity check
157 let g:netrw_longlist= 0
158 endif
159 if g:netrw_longlist == 1
160 let g:netrw_list_cmd= g:netrw_list_cmd." -l"
161 endif
162 " Default values - m-r ---------- {{{2
163 if !exists("g:netrw_maxfilenamelen")
164 let g:netrw_maxfilenamelen= 32
165 endif
166 if !exists("g:netrw_mkdir_cmd")
167 let g:netrw_mkdir_cmd= g:netrw_ssh_cmd." HOSTNAME mkdir"
168 endif
169 if !exists("g:netrw_rename_cmd")
170 let g:netrw_rename_cmd= g:netrw_ssh_cmd." HOSTNAME mv"
171 endif
172 if !exists("g:netrw_rm_cmd")
173 let g:netrw_rm_cmd = g:netrw_ssh_cmd." HOSTNAME rm"
174 endif
175 if !exists("g:netrw_rmdir_cmd")
176 let g:netrw_rmdir_cmd = g:netrw_ssh_cmd." HOSTNAME rmdir"
177 endif
178 if !exists("g:netrw_rmf_cmd")
179 let g:netrw_rmf_cmd = g:netrw_ssh_cmd." HOSTNAME rm -f"
180 endif
181 " Default values - s ---------- {{{2
182 if exists("g:netrw_silent") && g:netrw_silent != 0
183 let g:netrw_silentxfer= "silent "
184 else
185 let g:netrw_silentxfer= ""
186 endif
187 if !exists("g:netrw_sort_by")
188 " alternatives: date size
189 let g:netrw_sort_by= "name"
190 endif
191 if !exists("g:netrw_sort_direction")
192 " alternative: reverse (z y x ...)
193 let g:netrw_sort_direction= "normal"
194 endif
195 if !exists("g:netrw_sort_sequence")
196 let g:netrw_sort_sequence= '[\/]$,*,\.bak$,\.o$,\.h$,\.info$,\.swp$,\.obj$'
197 endif
198 if !exists("g:netrw_ssh_browse_reject")
199 let g:netrw_ssh_browse_reject='^total\s\+\d\+$'
200 endif
201 " Default values - t-w ---------- {{{2
202 if !exists("g:netrw_timefmt")
203 let g:netrw_timefmt= "%c"
204 endif
205 if !exists("g:netrw_win95ftp")
206 let g:netrw_win95ftp= 1
207 endif
208 if !exists("g:netrw_winsize")
209 let g:netrw_winsize= ""
210 endif
211 " ---------------------------------------------------------------------
212 " Default values for netrw's script variables: {{{1
213 if !exists("s:netrw_cd_escape")
214 if has("win32") || has("win95") || has("win64") || has("win16")
215 let s:netrw_cd_escape="#% "
216 else
217 let s:netrw_cd_escape="[]#*$%'\" ?`!&();<>\\"
218 endif
219 endif
220 if !exists("s:netrw_glob_escape")
221 if has("win32") || has("win95") || has("win64") || has("win16")
222 let s:netrw_glob_escape= ""
223 else
224 let s:netrw_glob_escape= '[]*?`{~$'
225 endif
226 endif
227
228 " BufEnter event ignored by decho when following variable is true
229 " Has a side effect that doau BufReadPost doesn't work, so
230 " files read by network transfer aren't appropriately highlighted.
231 "let g:decho_bufenter = 1 "Decho
213 232
214 " ------------------------------------------------------------------------ 233 " ------------------------------------------------------------------------
215 " NetSavePosn: saves position of cursor on screen {{{1 234 " NetSavePosn: saves position of cursor on screen {{{1
216 fun! netrw#NetSavePosn() 235 fun! netrw#NetSavePosn()
217 " call Dfunc("NetSavePosn()") 236 " call Dfunc("NetSavePosn()")
366 if choice =~ "^.*[\/]$" 385 if choice =~ "^.*[\/]$"
367 keepjumps call s:NetBrowse(choice) 386 keepjumps call s:NetBrowse(choice)
368 " call Dret("NetRead") 387 " call Dret("NetRead")
369 return 388 return
370 endif 389 endif
390
391 " use filename's suffix for the temporary file
392 if b:netrw_fname =~ '\.[^./]\+'
393 let suffix = substitute(b:netrw_fname,'^.*\(\.[^./]\+\)','\1','e')
394 let tmpfile= substitute(tmpfile,"$",suffix,'e')
395 " call Decho("chgd tmpfile<".tmpfile."> (added ".suffix." suffix)")
396 endif
371 397
372 " ============ 398 " ============
373 " Perform Read 399 " Perform Read
374 " ============ 400 " ============
401 if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1
402 echo "(netrw) Processing your read request..."
403 endif
375 404
376 "......................................... 405 ".........................................
377 " rcp: NetRead Method #1 406 " rcp: NetRead Method #1
378 if b:netrw_method == 1 " read with rcp 407 if b:netrw_method == 1 " read with rcp
379 " call Decho("read via rcp (method #1)") 408 " call Decho("read via rcp (method #1)")
401 let b:netrw_lastfile = choice 430 let b:netrw_lastfile = choice
402 431
403 "......................................... 432 ".........................................
404 " ftp + <.netrc>: NetRead Method #2 433 " ftp + <.netrc>: NetRead Method #2
405 elseif b:netrw_method == 2 " read with ftp + <.netrc> 434 elseif b:netrw_method == 2 " read with ftp + <.netrc>
406 " call Decho("read via ftp+.netrc (method #2)") 435 " call Decho("read via ftp+.netrc (method #2)")
407 let netrw_fname= b:netrw_fname 436 let netrw_fname= b:netrw_fname
408 new 437 new
409 setlocal ff=unix 438 setlocal ff=unix
410 exe "put ='".g:netrw_ftpmode."'" 439 exe "put ='".g:netrw_ftpmode."'"
411 exe "put ='"."get ".netrw_fname." ".tmpfile."'" 440 " call Decho("filter input: ".getline("."))
441 exe "put ='".'get \"'.netrw_fname.'\" '.tmpfile."'"
442 " call Decho("filter input: ".getline("."))
412 if exists("g:netrw_port") && g:netrw_port != "" 443 if exists("g:netrw_port") && g:netrw_port != ""
413 " call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port) 444 " call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port)
414 exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port 445 exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port
415 else 446 else
416 " call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine) 447 " call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine)
423 echohl Error | echo "***netrw*** ".getline(1) | echohl None 454 echohl Error | echo "***netrw*** ".getline(1) | echohl None
424 call inputsave()|call input("Press <cr> to continue")|call inputrestore() 455 call inputsave()|call input("Press <cr> to continue")|call inputrestore()
425 let &debug= debugkeep 456 let &debug= debugkeep
426 endif 457 endif
427 bd! 458 bd!
428 let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) 459 let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method)
429 let b:netrw_lastfile = choice 460 let b:netrw_lastfile = choice
430 461
431 "......................................... 462 ".........................................
432 " ftp + machine,id,passwd,filename: NetRead Method #3 463 " ftp + machine,id,passwd,filename: NetRead Method #3
433 elseif b:netrw_method == 3 " read with ftp + machine, id, passwd, and fname 464 elseif b:netrw_method == 3 " read with ftp + machine, id, passwd, and fname
436 let netrw_fname= b:netrw_fname 467 let netrw_fname= b:netrw_fname
437 new 468 new
438 setlocal ff=unix 469 setlocal ff=unix
439 if exists("g:netrw_port") && g:netrw_port != "" 470 if exists("g:netrw_port") && g:netrw_port != ""
440 put ='open '.g:netrw_machine.' '.g:netrw_port 471 put ='open '.g:netrw_machine.' '.g:netrw_port
472 " call Decho("filter input: ".getline("."))
441 else 473 else
442 put ='open '.g:netrw_machine 474 put ='open '.g:netrw_machine
475 " call Decho("filter input: ".getline("."))
443 endif 476 endif
444 477
445 if exists("g:netrw_ftp") && g:netrw_ftp == 1 478 if exists("g:netrw_ftp") && g:netrw_ftp == 1
446 put =g:netrw_uid 479 put =g:netrw_uid
447 put =g:netrw_passwd 480 " call Decho("filter input: ".getline("."))
481 put ='\"'.g:netrw_passwd.'\"'
482 " call Decho("filter input: ".getline("."))
448 else 483 else
449 put ='user '.g:netrw_uid.' '.g:netrw_passwd 484 put ='user \"'.g:netrw_uid.'\" \"'.g:netrw_passwd.'\"'
485 " call Decho("filter input: ".getline("."))
450 endif 486 endif
451 487
452 if exists("g:netrw_ftpmode") && g:netrw_ftpmode != "" 488 if exists("g:netrw_ftpmode") && g:netrw_ftpmode != ""
453 put =g:netrw_ftpmode 489 put =g:netrw_ftpmode
454 endif 490 " call Decho("filter input: ".getline("."))
455 put ='get '.netrw_fname.' '.tmpfile 491 endif
492 put ='get \"'.netrw_fname.'\" '.tmpfile
493 " call Decho("filter input: ".getline("."))
456 494
457 " perform ftp: 495 " perform ftp:
458 " -i : turns off interactive prompting from ftp 496 " -i : turns off interactive prompting from ftp
459 " -n unix : DON'T use <.netrc>, even though it exists 497 " -n unix : DON'T use <.netrc>, even though it exists
460 " -n win32: quit being obnoxious about password 498 " -n win32: quit being obnoxious about password
461 " call Decho('performing ftp -i -n')
462 norm! 1Gdd 499 norm! 1Gdd
463 " call Decho("executing: %!".g:netrw_ftp_cmd." -i -n") 500 " call Decho("executing: %!".g:netrw_ftp_cmd." -i -n")
464 exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n" 501 exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n"
465 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) 502 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
466 if getline(1) !~ "^$" 503 if getline(1) !~ "^$"
489 exe g:netrw_silentxfer."!".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
490 else 527 else
491 " call Decho("executing: !".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile) 528 " call Decho("executing: !".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile)
492 exe g:netrw_silentxfer."!".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
493 endif 530 endif
494 let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) 531 let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method)
495 let b:netrw_lastfile = choice 532 let b:netrw_lastfile = choice
496 533
497 "......................................... 534 ".........................................
498 elseif b:netrw_method == 5 " read with http (wget) 535 elseif b:netrw_method == 5 " read with http (wget)
499 " call Decho("read via http (method #5)") 536 " call Decho("read via http (method #5)")
500 if g:netrw_http_cmd == "" 537 if g:netrw_http_cmd == ""
501 if !exists("g:netrw_quiet") 538 if !exists("g:netrw_quiet")
502 echohl Error | echo "***netrw*** neither wget nor fetch command is available" | echohl None 539 echohl Error | echo "***netrw*** neither wget nor fetch command is available" | echohl None
503 call inputsave()|call input("Press <cr> to continue")|call inputrestore() 540 call inputsave()|call input("Press <cr> to continue")|call inputrestore()
504 endif 541 endif
505 exit 542 " call Dret("NetRead")
543 return
506 endif 544 endif
507 545
508 if match(b:netrw_fname,"#") == -1 546 if match(b:netrw_fname,"#") == -1
509 " simple wget 547 " simple wget
510 " call Decho("executing: !".g:netrw_http_cmd." ".tmpfile." http://".g:netrw_machine.escape(b:netrw_fname,' ?&')) 548 " call Decho("executing: !".g:netrw_http_cmd." ".tmpfile." http://".g:netrw_machine.escape(b:netrw_fname,' ?&'))
579 if g:netrw_fetch_cmd == "" 617 if g:netrw_fetch_cmd == ""
580 if !exists("g:netrw_quiet") 618 if !exists("g:netrw_quiet")
581 echohl Error | echo "***netrw*** fetch command not available" | echohl None 619 echohl Error | echo "***netrw*** fetch command not available" | echohl None
582 call inputsave()|call input("Press <cr> to continue")|call inputrestore() 620 call inputsave()|call input("Press <cr> to continue")|call inputrestore()
583 endif 621 endif
584 exit 622 " call Dret("NetRead")
585 endif 623 endif
586 if exists("g:netrw_option") && g:netrw_option == ":http" 624 if exists("g:netrw_option") && g:netrw_option == ":http"
587 let netrw_option= "http" 625 let netrw_option= "http"
588 else 626 else
589 let netrw_option= "ftp" 627 let netrw_option= "ftp"
633 671
634 " call Dret("NetRead") 672 " call Dret("NetRead")
635 endfun 673 endfun
636 674
637 " ------------------------------------------------------------------------ 675 " ------------------------------------------------------------------------
638 " NetGetFile: Function to read file "fname" with command "readcmd". {{{1 676 " NetGetFile: Function to read temporary file "tfile" with command "readcmd". {{{1
639 fun! s:NetGetFile(readcmd, fname, method) 677 fun! s:NetGetFile(readcmd, tfile, method)
640 " call Dfunc("NetGetFile(readcmd<".a:readcmd.">,fname<".a:fname."> method<".a:method.">)") 678 " call Dfunc("NetGetFile(readcmd<".a:readcmd.">,tfile<".a:tfile."> method<".a:method.">)")
679
680 " get name of remote filename (ie. url and all)
681 let rfile= bufname("%")
682 " call Decho("rfile<".rfile.">")
641 683
642 if exists("*NetReadFixup") 684 if exists("*NetReadFixup")
643 " for the use of NetReadFixup (not otherwise used internally) 685 " for the use of NetReadFixup (not otherwise used internally)
644 let line2= line("$") 686 let line2= line("$")
645 endif 687 endif
646 688
647 " transform paths from / to \ for Windows (except for cygwin) 689 " transform paths from / to \ for Windows (except for cygwin)
648 if &term == "win32" 690 if &term == "win32"
649 if g:netrw_cygwin 691 if g:netrw_cygwin
650 let fname= a:fname 692 let tfile= a:tfile
651 " call Decho("(win32 && cygwin) fname<".fname.">") 693 " call Decho("(win32 && cygwin) tfile<".tfile.">")
652 else 694 else
653 let fname= substitute(a:fname,'/','\\\\','ge') 695 let tfile= substitute(a:tfile,'/','\\\\','ge')
654 " call Decho("(win32 && !cygwin) fname<".fname.">") 696 " call Decho("(win32 && !cygwin) tfile<".tfile.">")
655 endif 697 endif
656 else 698 else
657 let fname= a:fname 699 let tfile= a:tfile
658 " call Decho("(copied) fname<".fname.">") 700 " call Decho("tfile=a:tfile<".tfile.">")
659 endif 701 endif
660 702
661 if a:readcmd[0] == '0' 703 if a:readcmd[0] == '0'
662 " get file into buffer 704 " get file into buffer
663 705
664 " record remote filename
665 let rfile= bufname(".")
666 " call Decho("remotefile<".rfile.">")
667 " call Dredir("ls!","starting buffer list") 706 " call Dredir("ls!","starting buffer list")
668 707
669 " rename the current buffer to the temp file (ie. fname) 708 " rename the current buffer to the temp file (ie. tfile)
670 keepalt exe "file ".fname 709 keepalt exe "file ".tfile
671 " call Dredir("ls!","after renaming current buffer to <".fname.">") 710 " call Dredir("ls!","after renaming current buffer to <".tfile.">")
672 711
673 " edit temporary file 712 " edit temporary file (ie. read the temporary file in)
674 e 713 if rfile =~ '\.zip$'
675 " call Dredir("ls!","after editing temporary file") 714 call zip#Browse(tfile)
715 elseif rfile =~ '\.tar$'
716 call tar#Browse(tfile)
717 else
718 e
719 endif
676 720
677 " rename buffer back to remote filename 721 " rename buffer back to remote filename
678 keepalt exe "file ".rfile 722 keepalt exe "file ".rfile
679 " call Dredir("ls!","renaming buffer back to remote filename<".rfile.">") 723 filetype detect
724 " call Dredir("ls!","renamed buffer back to remote filename<".rfile.">")
680 let line1 = 1 725 let line1 = 1
681 let line2 = line("$") 726 let line2 = line("$")
682 727
683 elseif filereadable(fname) 728 elseif filereadable(tfile)
684 " read file after current line 729 " read file after current line
685 let curline = line(".") 730 let curline = line(".")
686 let lastline= line("$") 731 let lastline= line("$")
687 " call Decho("exe<".a:readcmd." ".v:cmdarg." ".fname."> line#".curline) 732 " call Decho("exe<".a:readcmd." ".v:cmdarg." ".tfile."> line#".curline)
688 exe a:readcmd." ".v:cmdarg." ".fname 733 exe a:readcmd." ".v:cmdarg." ".tfile
689 let line1 = curline + 1 734 let line1 = curline + 1
690 let line2 = line("$") - lastline + 1 735 let line2 = line("$") - lastline + 1
736
691 else 737 else
692 " not readable 738 " not readable
693 " call Dret("NetGetFile : fname<".fname."> not readable") 739 " call Dfunc("NetGetFile(readcmd<".a:readcmd.">,tfile<".a:tfile."> method<".a:method.">)")
740 echohl WarningMsg | echo "***netrw*** file <".tfile."> not readable"| echohl None
741 call inputsave()|call input("Press <cr> to continue")|call inputrestore()
742 " call Dret("NetGetFile : tfile<".tfile."> not readable")
694 return 743 return
695 endif 744 endif
696 745
697 " User-provided (ie. optional) fix-it-up command 746 " User-provided (ie. optional) fix-it-up command
698 if exists("*NetReadFixup") 747 if exists("*NetReadFixup")
705 " update the Buffers menu 754 " update the Buffers menu
706 if has("gui") && has("gui_running") 755 if has("gui") && has("gui_running")
707 silent! emenu Buffers.Refresh\ menu 756 silent! emenu Buffers.Refresh\ menu
708 endif 757 endif
709 758
710 " call Decho("readcmd<".a:readcmd."> cmdarg<".v:cmdarg."> fname<".a:fname."> readable=".filereadable(a:fname)) 759 " call Decho("readcmd<".a:readcmd."> cmdarg<".v:cmdarg."> tfile<".a:tfile."> readable=".filereadable(a:tfile))
711 760
712 " insure that we have the right filetype and that its being displayed 761 " make sure file is being displayed
713 filetype detect
714 redraw! 762 redraw!
715 " call Dret("NetGetFile") 763 " call Dret("NetGetFile")
716 endfun 764 endfun
717 765
718 " ------------------------------------------------------------------------ 766 " ------------------------------------------------------------------------
727 " Get Temporary Filename 775 " Get Temporary Filename
728 let tmpfile= tempname() 776 let tmpfile= tempname()
729 if !isdirectory(substitute(tmpfile,'[^/]\+$','','e')) 777 if !isdirectory(substitute(tmpfile,'[^/]\+$','','e'))
730 echohl Error | echo "***netrw*** your ".substitute(tmpfile,'[^/]\+$','','e')." directory is missing!" 778 echohl Error | echo "***netrw*** your ".substitute(tmpfile,'[^/]\+$','','e')." directory is missing!"
731 call inputsave()|call input("Press <cr> to continue")|call inputrestore() 779 call inputsave()|call input("Press <cr> to continue")|call inputrestore()
732 " call Dret("NetRead") 780 " call Dret("NetWrite")
733 return 781 return
734 endif 782 endif
735 783
736 if a:0 == 0 784 if a:0 == 0
737 let ichoice = 0 785 let ichoice = 0
738 else 786 else
739 let ichoice = 1 787 let ichoice = 1
740 endif 788 endif
741 789
742 " write (selected portion of) file to temporary 790 if &binary
743 silent exe a:firstline."," . a:lastline . "w! ".v:cmdarg." ".tmpfile 791 " for binary writes, write entire file. Line numbers don't really make sense.
792 " Supports the writing of tar and zip files.
793 " call Decho("silent exe w! ".v:cmdarg." ".tmpfile)
794 silent exe "w! ".v:cmdarg." ".tmpfile
795 else
796 " write (selected portion of) file to temporary
797 " call Decho("silent exe ".a:firstline."," . a:lastline . "w! ".v:cmdarg." ".tmpfile)
798 silent exe a:firstline."," . a:lastline . "w! ".v:cmdarg." ".tmpfile
799 endif
744 800
745 while ichoice <= a:0 801 while ichoice <= a:0
746 802
747 " attempt to repeat with previous host-file-etc 803 " attempt to repeat with previous host-file-etc
748 if exists("b:netrw_lastfile") && a:0 == 0 804 if exists("b:netrw_lastfile") && a:0 == 0
808 call s:NetMethod(choice) 864 call s:NetMethod(choice)
809 865
810 " ============= 866 " =============
811 " Perform Write 867 " Perform Write
812 " ============= 868 " =============
869 if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1
870 echo "(netrw) Processing your write request..."
871 endif
813 872
814 "......................................... 873 ".........................................
815 " rcp: NetWrite Method #1 874 " rcp: NetWrite Method #1
816 if b:netrw_method == 1 " write with rcp 875 if b:netrw_method == 1 " write with rcp
817 " Decho "write via rcp (method #1)" 876 " call Decho("write via rcp (method #1)")
818 if s:netrw_has_nt_rcp == 1 877 if s:netrw_has_nt_rcp == 1
819 if exists("g:netrw_uid") && ( g:netrw_uid != "" ) 878 if exists("g:netrw_uid") && ( g:netrw_uid != "" )
820 let uid_machine = g:netrw_machine .'.'. g:netrw_uid 879 let uid_machine = g:netrw_machine .'.'. g:netrw_uid
821 else 880 else
822 let uid_machine = g:netrw_machine .'.'. $USERNAME 881 let uid_machine = g:netrw_machine .'.'. $USERNAME
837 elseif b:netrw_method == 2 " write with ftp + <.netrc> 896 elseif b:netrw_method == 2 " write with ftp + <.netrc>
838 let netrw_fname = b:netrw_fname 897 let netrw_fname = b:netrw_fname
839 new 898 new
840 setlocal ff=unix 899 setlocal ff=unix
841 exe "put ='".g:netrw_ftpmode."'" 900 exe "put ='".g:netrw_ftpmode."'"
842 " call Decho(" NetWrite: put ='".g:netrw_ftpmode."'") 901 " call Decho(" filter input: ".getline("."))
843 exe "put ='"."put ".tmpfile." ".netrw_fname."'" 902 exe "put ='"."put ".tmpfile.' \"'.netrw_fname.'\"'."'"
844 " call Decho("put ='"."put ".tmpfile." ".netrw_fname."'") 903 " call Decho(" filter input: ".getline("."))
845 if exists("g:netrw_port") && g:netrw_port != "" 904 if exists("g:netrw_port") && g:netrw_port != ""
846 " call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port) 905 " call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port)
847 exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port 906 exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port
848 else 907 else
849 " call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine) 908 " call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine)
866 let netrw_fname= b:netrw_fname 925 let netrw_fname= b:netrw_fname
867 new 926 new
868 setlocal ff=unix 927 setlocal ff=unix
869 if exists("g:netrw_port") && g:netrw_port != "" 928 if exists("g:netrw_port") && g:netrw_port != ""
870 put ='open '.g:netrw_machine.' '.g:netrw_port 929 put ='open '.g:netrw_machine.' '.g:netrw_port
930 " call Decho("filter input: ".getline("."))
871 else 931 else
872 put ='open '.g:netrw_machine 932 put ='open '.g:netrw_machine
933 " call Decho("filter input: ".getline("."))
873 endif 934 endif
874 if exists("g:netrw_ftp") && g:netrw_ftp == 1 935 if exists("g:netrw_ftp") && g:netrw_ftp == 1
875 put =g:netrw_uid 936 put =g:netrw_uid
876 put =g:netrw_passwd 937 " call Decho("filter input: ".getline("."))
938 put ='\"'.g:netrw_passwd.'\"'
939 " call Decho("filter input: ".getline("."))
877 else 940 else
878 put ='user '.g:netrw_uid.' '.g:netrw_passwd 941 put ='user \"'.g:netrw_uid.'\" \"'.g:netrw_passwd.'\"'
879 endif 942 " call Decho("filter input: ".getline("."))
880 put ='put '.tmpfile.' '.netrw_fname 943 endif
944 put ='put '.tmpfile.' \"'.netrw_fname.'\"'
945 " call Decho("filter input: ".getline("."))
881 " save choice/id/password for future use 946 " save choice/id/password for future use
882 let b:netrw_lastfile = choice 947 let b:netrw_lastfile = choice
883 948
884 " perform ftp: 949 " perform ftp:
885 " -i : turns off interactive prompting from ftp 950 " -i : turns off interactive prompting from ftp
886 " -n unix : DON'T use <.netrc>, even though it exists 951 " -n unix : DON'T use <.netrc>, even though it exists
887 " -n win32: quit being obnoxious about password 952 " -n win32: quit being obnoxious about password
888 " call Decho('performing ftp -i -n')
889 norm! 1Gdd 953 norm! 1Gdd
890 " call Decho("executing: %!".g:netrw_ftp_cmd." -i -n") 954 " call Decho("executing: %!".g:netrw_ftp_cmd." -i -n")
891 exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n" 955 exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n"
892 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) 956 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
893 if getline(1) !~ "^$" 957 if getline(1) !~ "^$"
1036 " call Dret("NetBrowse") 1100 " call Dret("NetBrowse")
1037 return 1101 return
1038 endif 1102 endif
1039 elseif !exists("g:netrw_list_cmd") || g:netrw_list_cmd == '' 1103 elseif !exists("g:netrw_list_cmd") || g:netrw_list_cmd == ''
1040 if !exists("g:netrw_quiet") 1104 if !exists("g:netrw_quiet")
1041 echohl Error | echo "***netrw*** this system doesn't support remote directory listing via ssh" | echohl None 1105 echohl Error | echo "***netrw*** this system doesn't support remote directory listing via ".g:netrw_list_cmd | echohl None
1042 call inputsave()|call input("Press <cr> to continue")|call inputrestore() 1106 call inputsave()|call input("Press <cr> to continue")|call inputrestore()
1043 endif 1107 endif
1044 1108
1045 call s:NetOptionRestore() 1109 call s:NetOptionRestore()
1046 " call Dret("NetBrowse") 1110 " call Dret("NetBrowse")
1054 setlocal ma nonu nowrap 1118 setlocal ma nonu nowrap
1055 1119
1056 " analyze a:dirname and g:netrw_list_cmd 1120 " analyze a:dirname and g:netrw_list_cmd
1057 let dirpat = '^\(\w\{-}\)://\(\w\+@\)\=\([^/]\+\)/\(.*\)$' 1121 let dirpat = '^\(\w\{-}\)://\(\w\+@\)\=\([^/]\+\)/\(.*\)$'
1058 let dirname = substitute(a:dirname,'\\','/','ge') 1122 let dirname = substitute(a:dirname,'\\','/','ge')
1059 " call Decho("dirpat<".dirpat.">") 1123 " call Decho("dirname<".dirname.">")
1060 if dirname !~ dirpat 1124 if dirname !~ dirpat
1061 if !exists("g:netrw_quiet") 1125 if !exists("g:netrw_quiet")
1062 echohl Error | echo "***netrw*** netrw doesn't understand your dirname<".dirname.">" | echohl None 1126 echohl Error | echo "***netrw*** netrw doesn't understand your dirname<".dirname.">" | echohl None
1063 call inputsave()|call input("Press <cr> to continue")|call inputrestore() 1127 call inputsave()|call input("Press <cr> to continue")|call inputrestore()
1064 endif 1128 endif
1124 " anyway. 1188 " anyway.
1125 let path= substitute(path,'[*=@|]\r\=$','','e') 1189 let path= substitute(path,'[*=@|]\r\=$','','e')
1126 " call Decho("new path<".path.">") 1190 " call Decho("new path<".path.">")
1127 1191
1128 " remote-read the requested file into current buffer 1192 " remote-read the requested file into current buffer
1129 enew! 1193 keepjumps keepalt enew!
1130 set ma 1194 set ma
1131 " call Decho("exe file .method."://".user.machine."/".escape(path,s:netrw_cd_escape)) 1195 " call Decho("exe file ".method."://".user.machine."/".escape(path,s:netrw_cd_escape))
1132 exe "file ".method."://".user.machine."/".escape(path,s:netrw_cd_escape) 1196 exe "file ".method."://".user.machine."/".escape(path,s:netrw_cd_escape)
1133 exe "silent doau BufReadPre ".fname 1197 exe "silent doau BufReadPre ".fname
1134 silent call netrw#NetRead(method."://".user.machine."/".path) 1198 silent call netrw#NetRead(method."://".user.machine."/".path)
1135 exe "silent doau BufReadPost ".fname 1199 exe "silent doau BufReadPost ".fname
1136 keepjumps 1d 1200 keepjumps 1d
1137 1201
1138 " save certain window-oriented variables into buffer-oriented variables 1202 " save certain window-oriented variables into buffer-oriented variables
1139 call s:BufWinVars() 1203 call s:SetBufWinVars()
1140 call s:NetOptionRestore() 1204 call s:NetOptionRestore()
1141 setlocal nomod 1205 setlocal nomod
1142 1206
1143 " call Dret("NetBrowse : file<".fname.">") 1207 " call Dret("NetBrowse : file<".fname.">")
1144 return 1208 return
1160 " call Dret("NetBrowse") 1224 " call Dret("NetBrowse")
1161 return 1225 return
1162 endif 1226 endif
1163 else 1227 else
1164 " call Decho("generate a new buffer") 1228 " call Decho("generate a new buffer")
1165 enew! 1229 keepjumps keepalt enew!
1166 endif 1230 endif
1167 1231
1168 " rename file to reflect where its from 1232 " rename file to reflect where its from
1169 setlocal bt=nofile bh=wipe nobl noswf 1233 setlocal bt=nofile bh=wipe nobl noswf
1170 exe "setlocal ts=".g:netrw_maxfilenamelen 1234 exe "setlocal ts=".g:netrw_maxfilenamelen
1177 call <SID>NetBookmarkDir(3,expand("%")) 1241 call <SID>NetBookmarkDir(3,expand("%"))
1178 1242
1179 " set up buffer-local mappings 1243 " set up buffer-local mappings
1180 " call Decho("set up buffer-local mappings") 1244 " call Decho("set up buffer-local mappings")
1181 nnoremap <buffer> <silent> <cr> :call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr> 1245 nnoremap <buffer> <silent> <cr> :call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr>
1182 nnoremap <buffer> <silent> <c-l> :call <SID>NetRefresh(<SID>NetBrowseChgDir(expand("%"),'./'))<cr> 1246 nnoremap <buffer> <silent> <c-l> :call <SID>NetRefresh(<SID>NetBrowseChgDir(expand("%"),'./'),0)<cr>
1183 nnoremap <buffer> <silent> - :exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'../'))<cr> 1247 nnoremap <buffer> <silent> - :exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'../'))<cr>
1184 nnoremap <buffer> <silent> a :let g:netrw_hide=(g:netrw_hide+1)%3<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'./'))<cr> 1248 nnoremap <buffer> <silent> a :let g:netrw_hide=(g:netrw_hide+1)%3<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'./'))<cr>
1185 if w:netrw_longlist != 2 1249 if w:netrw_longlist != 2
1186 nnoremap <buffer> <silent> b :<c-u>call <SID>NetBookmarkDir(0,expand("%"))<cr> 1250 nnoremap <buffer> <silent> b :<c-u>call <SID>NetBookmarkDir(0,expand("%"))<cr>
1187 nnoremap <buffer> <silent> B :<c-u>call <SID>NetBookmarkDir(1,expand("%"))<cr> 1251 nnoremap <buffer> <silent> B :<c-u>call <SID>NetBookmarkDir(1,expand("%"))<cr>
1198 nnoremap <buffer> <silent> S :call <SID>NetSortSequence(0)<cr> 1262 nnoremap <buffer> <silent> S :call <SID>NetSortSequence(0)<cr>
1199 nnoremap <buffer> <silent> u :<c-u>call <SID>NetBookmarkDir(4,expand("%"))<cr> 1263 nnoremap <buffer> <silent> u :<c-u>call <SID>NetBookmarkDir(4,expand("%"))<cr>
1200 nnoremap <buffer> <silent> U :<c-u>call <SID>NetBookmarkDir(5,expand("%"))<cr> 1264 nnoremap <buffer> <silent> U :<c-u>call <SID>NetBookmarkDir(5,expand("%"))<cr>
1201 nnoremap <buffer> <silent> v :call <SID>NetSplit(1)<cr> 1265 nnoremap <buffer> <silent> v :call <SID>NetSplit(1)<cr>
1202 nnoremap <buffer> <silent> x :call <SID>NetBrowseX(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()),1)<cr> 1266 nnoremap <buffer> <silent> x :call <SID>NetBrowseX(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()),1)<cr>
1203 nnoremap <buffer> <silent> <2-leftmouse> :call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr> 1267 nnoremap <buffer> <silent> <2-leftmouse> :call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr>
1204 exe 'nnoremap <buffer> <silent> <del> :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>' 1268 exe 'nnoremap <buffer> <silent> <del> :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>'
1205 exe 'vnoremap <buffer> <silent> <del> :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>' 1269 exe 'vnoremap <buffer> <silent> <del> :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>'
1206 exe 'nnoremap <buffer> <silent> d :call <SID>NetMakeDir("'.user.machine.'")<cr>' 1270 exe 'nnoremap <buffer> <silent> d :call <SID>NetMakeDir("'.user.machine.'")<cr>'
1207 exe 'nnoremap <buffer> <silent> D :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>' 1271 exe 'nnoremap <buffer> <silent> D :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>'
1208 exe 'vnoremap <buffer> <silent> D :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>' 1272 exe 'vnoremap <buffer> <silent> D :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>'
1230 else 1294 else
1231 " sorted by size or date 1295 " sorted by size or date
1232 keepjumps put ='\" Sorted by '.sortby 1296 keepjumps put ='\" Sorted by '.sortby
1233 endif 1297 endif
1234 if g:netrw_list_hide != "" && g:netrw_hide 1298 if g:netrw_list_hide != "" && g:netrw_hide
1299 " call Decho("g:netrw_hide=".g:netrw_hide)
1235 if g:netrw_hide == 1 1300 if g:netrw_hide == 1
1236 keepjumps put ='\" Hiding: '.g:netrw_list_hide 1301 keepjumps put ='\" Hiding: '.g:netrw_list_hide
1237 else 1302 else
1238 keepjumps put ='\" Showing: '.g:netrw_list_hide 1303 keepjumps put ='\" Showing: '.g:netrw_list_hide
1239 endif 1304 endif
1258 1323
1259 " cleanup 1324 " cleanup
1260 if g:netrw_ftp_browse_reject != "" 1325 if g:netrw_ftp_browse_reject != ""
1261 exe "silent! g/".g:netrw_ftp_browse_reject."/keepjumps d" 1326 exe "silent! g/".g:netrw_ftp_browse_reject."/keepjumps d"
1262 endif 1327 endif
1328 silent! keepjumps %s/\r$//e
1263 1329
1264 " if there's no ../ listed, then put ./ and ../ in 1330 " if there's no ../ listed, then put ./ and ../ in
1265 let line1= line(".") 1331 let line1= line(".")
1266 keepjumps 1 1332 keepjumps 1
1267 silent keepjumps call search('^\.\.\/\%(\s\|$\)','W') 1333 silent keepjumps call search('^\.\.\/\%(\s\|$\)','W')
1272 endif 1338 endif
1273 exe "keepjumps ".line1 1339 exe "keepjumps ".line1
1274 keepjumps norm! 0 1340 keepjumps norm! 0
1275 1341
1276 " more cleanup 1342 " more cleanup
1277 exe 'keepjumps silent! '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e' 1343 exe 'silent! keepjumps '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e'
1278 exe "keepjumps silent! ".w:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#e' 1344 exe "silent! keepjumps ".w:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#e'
1279 exe "keepjumps silent! ".w:netrw_bannercnt.',$g/ -> /s# -> .*$#/#e' 1345 exe "silent! keepjumps ".w:netrw_bannercnt.',$g/ -> /s# -> .*$#/#e'
1280 endif 1346 endif
1281 1347
1282 else 1348 else
1283 " use ssh to get remote file listing 1349 " use ssh to get remote file listing
1284 " call Decho("use ssh to get remote file listing") 1350 " call Decho("use ssh to get remote file listing")
1331 endif 1397 endif
1332 exe "keepjumps ".line1 1398 exe "keepjumps ".line1
1333 keepjumps norm! 0 1399 keepjumps norm! 0
1334 endif 1400 endif
1335 1401
1336 exe 'keepjumps silent '.w:netrw_bannercnt.',$s/ -> .*$//e' 1402 exe 'silent keepjumps '.w:netrw_bannercnt.',$s/ -> .*$//e'
1337 exe 'keepjumps silent '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2\t\1/e' 1403 exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2\t\1/e'
1338 exe w:netrw_bannercnt 1404 exe 'silent keepjumps '.w:netrw_bannercnt
1339 endif 1405 endif
1340 1406
1341 if line("$") >= w:netrw_bannercnt 1407 if line("$") >= w:netrw_bannercnt
1342 if g:netrw_sort_by =~ "^n" 1408 if g:netrw_sort_by =~ "^n"
1343 call s:SetSort() 1409 call s:SetSort()
1344 if g:netrw_sort_direction =~ 'n' 1410 if g:netrw_sort_direction =~ 'n'
1345 exe 'keepjumps silent '.w:netrw_bannercnt.',$sort' 1411 exe 'silent keepjumps '.w:netrw_bannercnt.',$sort'
1346 else 1412 else
1347 exe 'keepjumps silent '.w:netrw_bannercnt.',$sort!' 1413 exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'
1348 endif 1414 endif
1349 exe 'keepjumps silent '.w:netrw_bannercnt.',$s/^\d\{3}\///e' 1415 exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}\///e'
1350 endif 1416 endif
1351 if w:netrw_longlist == 1 1417 if w:netrw_longlist == 1
1352 " shorten the list to keep its width <= winwidth characters 1418 " shorten the list to keep its width <= winwidth characters
1353 exe "keepjumps silent ".w:netrw_bannercnt.',$s/\t[-dstrwx]\+/\t/e' 1419 exe "silent keepjumps ".w:netrw_bannercnt.',$s/\t[-dstrwx]\+/\t/e'
1354 endif 1420 endif
1355 endif 1421 endif
1356 endif 1422 endif
1357 1423
1358 " cleanup any windows mess at end-of-line
1359 keepjumps silent! %s/\r$//e
1360 call s:NetrwWideListing() 1424 call s:NetrwWideListing()
1361 if line("$") >= w:netrw_bannercnt 1425 if line("$") >= w:netrw_bannercnt
1426 " place cursor on the top-left corner of the file listing
1362 exe "keepjumps ".w:netrw_bannercnt 1427 exe "keepjumps ".w:netrw_bannercnt
1428 norm! 0
1363 endif 1429 endif
1364 1430
1365 call s:NetOptionRestore() 1431 call s:NetOptionRestore()
1366 setlocal nomod noma nonu 1432 setlocal nomod noma nonu
1367 1433
1447 elseif curline =~ '"\s*\%(Hiding\|Showing\):' 1513 elseif curline =~ '"\s*\%(Hiding\|Showing\):'
1448 norm a 1514 norm a
1449 let s:netrw_skipbrowse= 1 1515 let s:netrw_skipbrowse= 1
1450 echo 'Pressing "a" also works' 1516 echo 'Pressing "a" also works'
1451 elseif line("$") > w:netrw_bannercnt 1517 elseif line("$") > w:netrw_bannercnt
1452 exe w:netrw_bannercnt 1518 exe 'silent keepjumps '.w:netrw_bannercnt
1453 endif 1519 endif
1454 1520
1455 elseif w:netrw_longlist == 0 1521 elseif w:netrw_longlist == 0
1456 " call Decho("thin column handling") 1522 " call Decho("thin column handling")
1457 norm! 0 1523 norm! 0
1511 echohl Statement 1577 echohl Statement
1512 call inputsave() 1578 call inputsave()
1513 let ok= input("Confirm deletion of file<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ") 1579 let ok= input("Confirm deletion of file<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ")
1514 call inputrestore() 1580 call inputrestore()
1515 echohl NONE 1581 echohl NONE
1582 if ok == ""
1583 let ok="no"
1584 endif
1516 let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e') 1585 let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e')
1517 if ok =~ 'a\%[ll]' 1586 if ok =~ 'a\%[ll]'
1518 let all= 1 1587 let all= 1
1519 endif 1588 endif
1520 endif 1589 endif
1537 " attempt to remove directory 1606 " attempt to remove directory
1538 if !all 1607 if !all
1539 call inputsave() 1608 call inputsave()
1540 let ok= input("Confirm deletion of directory<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ") 1609 let ok= input("Confirm deletion of directory<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ")
1541 call inputrestore() 1610 call inputrestore()
1611 if ok == ""
1612 let ok="no"
1613 endif
1542 let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e') 1614 let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e')
1543 if ok =~ 'a\%[ll]' 1615 if ok =~ 'a\%[ll]'
1544 let all= 1 1616 let all= 1
1545 endif 1617 endif
1546 endif 1618 endif
1625 " call Dret("NetBrowseRename") 1697 " call Dret("NetBrowseRename")
1626 endfun 1698 endfun
1627 1699
1628 " --------------------------------------------------------------------- 1700 " ---------------------------------------------------------------------
1629 " NetRefresh: {{{2 1701 " NetRefresh: {{{2
1630 fun! s:NetRefresh(dirname) 1702 fun! s:NetRefresh(dirname,islocal)
1631 " call Dfunc("NetRefresh(dirname<".a:dirname.">)") 1703 " call Dfunc("NetRefresh(dirname<".a:dirname.">,islocal=".a:islocal.")")
1704 call netrw#NetSavePosn()
1632 set ma 1705 set ma
1633 %d 1706 %d
1634 call <SID>NetBrowse(dirname) 1707 if a:islocal
1708 call s:LocalBrowse(a:dirname)
1709 else
1710 call s:NetBrowse(a:dirname)
1711 endif
1712 call netrw#NetRestorePosn()
1635 redraw! 1713 redraw!
1636 " call Dret("NetRefresh") 1714 " call Dret("NetRefresh")
1637 endfun 1715 endfun
1638 1716
1639 " --------------------------------------------------------------------- 1717 " ---------------------------------------------------------------------
1688 1766
1689 if a:remote == 1 1767 if a:remote == 1
1690 " create a local copy 1768 " create a local copy
1691 let fname= tempname().".".exten 1769 let fname= tempname().".".exten
1692 " call Decho("create a local copy of <".a:fname."> as <".fname.">") 1770 " call Decho("create a local copy of <".a:fname."> as <".fname.">")
1693 exe "keepjumps silent bot 1new ".a:fname 1771 exe "silent keepjumps bot 1new ".a:fname
1694 set bh=delete 1772 set bh=delete
1695 exe "w! ".fname 1773 exe "w! ".fname
1696 q 1774 q
1697 endif 1775 endif
1698 " call Decho("exten<".exten."> "."NetrwFileHandler_".exten."():exists=".exists("*NetrwFileHandler_".exten)) 1776 " call Decho("exten<".exten."> "."netrwFileHandlers#NFH_".exten."():exists=".exists("*netrwFileHandlers#NFH_".exten))
1699 1777
1700 " set up redirection 1778 " set up redirection
1701 if &srr =~ "%s" 1779 if &srr =~ "%s"
1702 let redir= substitute(&srr,"%s","/dev/null"."") 1780 let redir= substitute(&srr,"%s","/dev/null"."")
1703 else 1781 else
1709 if has("win32") || has("win64") 1787 if has("win32") || has("win64")
1710 " call Decho('exe silent !start rundll32 url.dll,FileProtocolHandler "'.escape(fname, '%#').'"') 1788 " call Decho('exe silent !start rundll32 url.dll,FileProtocolHandler "'.escape(fname, '%#').'"')
1711 exe 'silent !start rundll32 url.dll,FileProtocolHandler "'.escape(fname, '%#').'"' 1789 exe 'silent !start rundll32 url.dll,FileProtocolHandler "'.escape(fname, '%#').'"'
1712 let ret= v:shell_error 1790 let ret= v:shell_error
1713 1791
1792 elseif has("unix") && executable("gnome-open")
1793 " call Decho("exe silent !gnome-open '".escape(fname,'%#')."' ".redir)
1794 exe "silent !gnome-open '".escape(fname,'%#')."'".redir
1795 let ret= v:shell_error
1796
1714 elseif has("unix") && executable("kfmclient") 1797 elseif has("unix") && executable("kfmclient")
1715 " call Decho("exe silent !kfmclient exec '".escape(fname,'%#')."' ".redir) 1798 " call Decho("exe silent !kfmclient exec '".escape(fname,'%#')."' ".redir)
1716 exe "silent !kfmclient exec '".escape(fname,'%#')."' ".redir 1799 exe "silent !kfmclient exec '".escape(fname,'%#')."' ".redir
1717 let ret= v:shell_error 1800 let ret= v:shell_error
1718 1801
1719 elseif has("unix") && executable("gnome-open") 1802 else
1720 " call Decho("exe silent !gnome-open '".escape(fname,'%#')."' ".redir) 1803 call netrwFileHandlers#Init()
1721 exe "silent !gnome-open '".escape(fname,'%#')."'".redir 1804 if exten != "" && exists("*netrwFileHandlers#NFH_".exten)
1722 let ret= v:shell_error 1805 " call Decho("let ret= netrwFileHandlers#NFH_".exten.'("'.fname.'")')
1723 1806 exe "let ret= netrwFileHandlers#NFH_".exten.'("'.fname.'")'
1724 elseif exten != "" && exists("*NetrwFileHandler_".exten) 1807 endif
1725 " call Decho("let ret= NetrwFileHandler_".exten.'("'.fname.'")')
1726 exe "let ret= NetrwFileHandler_".exten.'("'.fname.'")'
1727 endif 1808 endif
1728 redraw! 1809 redraw!
1729 1810
1730 " cleanup: remove temporary file, 1811 " cleanup: remove temporary file,
1731 " delete current buffer if success with handler, 1812 " delete current buffer if success with handler,
1763 1844
1764 "......................................... 1845 ".........................................
1765 if w:netrw_method == 2 || w:netrw_method == 5 1846 if w:netrw_method == 2 || w:netrw_method == 5
1766 " ftp + <.netrc>: Method #2 1847 " ftp + <.netrc>: Method #2
1767 if a:path != "" 1848 if a:path != ""
1768 put ='cd '.a:path 1849 put ='cd \"'.a:path.'\"'
1769 " call Decho("ftp: cd ".a:path) 1850 " call Decho('ftp: '.getline("."))
1770 endif 1851 endif
1771 exe "put ='".a:cmd."'" 1852 exe "put ='".a:cmd."'"
1772 " call Decho("ftp: ".a:cmd) 1853 " call Decho("ftp: ".getline("."))
1773 " redraw!|call inputsave()|call input("Pausing...")|call inputrestore() 1854 " redraw!|call inputsave()|call input("Pausing...")|call inputrestore()
1774 if exists("g:netrw_port") && g:netrw_port != "" 1855 if exists("g:netrw_port") && g:netrw_port != ""
1775 " call Decho("exe ".g:netrw_silentxfer.curline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port) 1856 " call Decho("exe ".g:netrw_silentxfer.curline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port)
1776 exe g:netrw_silentxfer.curline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port 1857 exe g:netrw_silentxfer.curline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port
1777 else 1858 else
1789 put ='open '.g:netrw_machine 1870 put ='open '.g:netrw_machine
1790 endif 1871 endif
1791 1872
1792 if exists("g:netrw_ftp") && g:netrw_ftp == 1 1873 if exists("g:netrw_ftp") && g:netrw_ftp == 1
1793 put =g:netrw_uid 1874 put =g:netrw_uid
1794 put =g:netrw_passwd 1875 put ='\"'.g:netrw_passwd.'\"'
1795 else 1876 else
1796 put ='user '.g:netrw_uid.' '.g:netrw_passwd 1877 put ='user \"'.g:netrw_uid.'\" \"'.g:netrw_passwd.'\"'
1797 endif 1878 endif
1798 1879
1799 if a:path != "" 1880 if a:path != ""
1800 put ='cd '.a:path 1881 put ='cd \"'.a:path.'\"'
1801 endif 1882 endif
1802 exe "put ='".a:cmd."'" 1883 exe "put ='".a:cmd."'"
1803 1884
1804 " perform ftp: 1885 " perform ftp:
1805 " -i : turns off interactive prompting from ftp 1886 " -i : turns off interactive prompting from ftp
1813 echo "***warning*** unable to comply with your request<" . choice . ">" 1894 echo "***warning*** unable to comply with your request<" . choice . ">"
1814 endif 1895 endif
1815 1896
1816 " cleanup for Windows 1897 " cleanup for Windows
1817 if has("win32") || has("win95") || has("win64") || has("win16") 1898 if has("win32") || has("win95") || has("win64") || has("win16")
1818 keepjumps silent!! %s/\r$//e 1899 silent! keepjumps! %s/\r$//e
1819 endif 1900 endif
1820 if a:cmd == "dir" 1901 if a:cmd == "dir"
1821 " infer directory/link based on the file permission string 1902 " infer directory/link based on the file permission string
1822 keepjumps silent! g/d\%([-r][-w][-x]\)\{3}/s@$@/@ 1903 silent! keepjumps g/d\%([-r][-w][-x]\)\{3}/s@$@/@
1823 keepjumps silent! g/l\%([-r][-w][-x]\)\{3}/s/$/@/ 1904 silent! keepjumps g/l\%([-r][-w][-x]\)\{3}/s/$/@/
1824 if w:netrw_longlist == 0 || w:netrw_longlist == 2 1905 if w:netrw_longlist == 0 || w:netrw_longlist == 2
1825 exe "keepjumps silent! ".curline.',$s/^\%(\S\+\s\+\)\{8}//e' 1906 exe "silent! keepjumps ".curline.',$s/^\%(\S\+\s\+\)\{8}//e'
1826 endif 1907 endif
1827 endif 1908 endif
1828 1909
1829 " ftp's ls doesn't seem to include ./ or ../ 1910 " ftp's ls doesn't seem to include ./ or ../
1830 if !search('^\.\/$','wn') 1911 if !search('^\.\/$','wn')
1843 1924
1844 " --------------------------------------------------------------------- 1925 " ---------------------------------------------------------------------
1845 " NetrwListHide: uses [range]g~...~d to delete files that match comma {{{2 1926 " NetrwListHide: uses [range]g~...~d to delete files that match comma {{{2
1846 " separated patterns given in g:netrw_list_hide 1927 " separated patterns given in g:netrw_list_hide
1847 fun! s:NetrwListHide() 1928 fun! s:NetrwListHide()
1848 " call Dfunc("NetrwListHide() listhide<".g:netrw_list_hide.">") 1929 " call Dfunc("NetrwListHide() hide=".g:netrw_hide." listhide<".g:netrw_list_hide.">")
1849 1930
1850 let listhide= g:netrw_list_hide 1931 let listhide= g:netrw_list_hide
1851 while listhide != "" 1932 while listhide != ""
1852 if listhide =~ ',' 1933 if listhide =~ ','
1853 let hide = substitute(listhide,',.*$','','e') 1934 let hide = substitute(listhide,',.*$','','e')
1856 let hide = listhide 1937 let hide = listhide
1857 let listhide= "" 1938 let listhide= ""
1858 endif 1939 endif
1859 1940
1860 " Prune the list by hiding any files which match 1941 " Prune the list by hiding any files which match
1861 " call Decho("pruning <".hide."> listhide<".listhide.">")
1862 if g:netrw_hide == 1 1942 if g:netrw_hide == 1
1863 exe 'keepjumps silent '.w:netrw_bannercnt.',$g~'.hide.'~d' 1943 " call Decho("hiding<".hide."> listhide<".listhide.">")
1944 " call Decho('exe silent keepjumps '.w:netrw_bannercnt.',$g~'.hide.'~d')
1945 exe 'silent keepjumps '.w:netrw_bannercnt.',$g~'.hide.'~d'
1864 elseif g:netrw_hide == 2 1946 elseif g:netrw_hide == 2
1865 exe 'keepjumps silent '.w:netrw_bannercnt.',$v~'.hide.'~d' 1947 " call Decho("showing<".hide."> listhide<".listhide.">")
1948 " call Decho('exe silent keepjumps '.w:netrw_bannercnt.',$v~'.hide.'~d')
1949 exe 'silent keepjumps '.w:netrw_bannercnt.',$v~'.hide.'~d'
1866 endif 1950 endif
1867 endwhile 1951 endwhile
1868 1952
1869 " call Dret("NetrwListHide") 1953 " call Dret("NetrwListHide")
1870 endfun 1954 endfun
1871 1955
1872 " --------------------------------------------------------------------- 1956 " ---------------------------------------------------------------------
1873 " NetHideEdit: allows user to edit the file/directory hiding list 1957 " NetHideEdit: allows user to edit the file/directory hiding list
1874 fun! s:NetHideEdit(mode) 1958 fun! s:NetHideEdit(islocal)
1875 " call Dfunc("NetHideEdit(mode=".a:mode.")") 1959 " call Dfunc("NetHideEdit(islocal=".a:islocal.")")
1876 1960
1961 " get new hiding list from user
1877 call inputsave() 1962 call inputsave()
1878 let newhide= input("Edit Hiding List: ",g:netrw_list_hide) 1963 let newhide= input("Edit Hiding List: ",g:netrw_list_hide)
1879 call inputrestore() 1964 call inputrestore()
1965 let g:netrw_list_hide= newhide
1966 " call Decho("new g:netrw_list_hide<".g:netrw_list_hide.">")
1880 1967
1881 " refresh the listing 1968 " refresh the listing
1882 let g:netrw_list_hide= newhide 1969 if a:islocal == 0
1883 if a:mode == 0
1884 silent call s:NetBrowse(s:NetBrowseChgDir(expand("%"),'./')) 1970 silent call s:NetBrowse(s:NetBrowseChgDir(expand("%"),'./'))
1885 else 1971 else
1886 silent call s:LocalRefresh(<SID>LocalBrowseChgDir(b:netrw_curdir,"./")) 1972 silent call s:NetRefresh(<SID>LocalBrowseChgDir(b:netrw_curdir,"./"),a:islocal)
1887 endif 1973 endif
1888 1974
1889 " call Dret("NetHideEdit") 1975 " call Dret("NetHideEdit")
1890 endfun 1976 endfun
1891 1977
1956 endfun 2042 endfun
1957 2043
1958 " --------------------------------------------------------------------- 2044 " ---------------------------------------------------------------------
1959 " NetrwWideListing: {{{2 2045 " NetrwWideListing: {{{2
1960 fun! s:NetrwWideListing() 2046 fun! s:NetrwWideListing()
1961 " call Dfunc("NetrwWideListing()") 2047 " call Dfunc("NetrwWideListing() w:netrw_longlist=".w:netrw_longlist)
1962 2048
1963 if w:netrw_longlist == 2 2049 if w:netrw_longlist == 2
1964 " look for longest filename (cpf=characters per filename) 2050 " look for longest filename (cpf=characters per filename)
1965 " cpf: characters per file 2051 " cpf: characters per file
1966 " fpl: files per line 2052 " fpl: files per line
1994 exe "silent keepjumps norm! 0\<c-v>$hx".w:netrw_bannercnt."G$p" 2080 exe "silent keepjumps norm! 0\<c-v>$hx".w:netrw_bannercnt."G$p"
1995 else 2081 else
1996 exe "silent keepjumps norm! 0\<c-v>".newcolqty.'j$hx'.w:netrw_bannercnt.'G$p' 2082 exe "silent keepjumps norm! 0\<c-v>".newcolqty.'j$hx'.w:netrw_bannercnt.'G$p'
1997 endif 2083 endif
1998 exe "silent keepjumps ".newcolstart.','.newcolend.'d' 2084 exe "silent keepjumps ".newcolstart.','.newcolend.'d'
1999 exe w:netrw_bannercnt 2085 exe 'silent keepjumps '.w:netrw_bannercnt
2000 endwhile 2086 endwhile
2001 exe "silent keepjumps ".w:netrw_bannercnt.',$s/\s\+$//e' 2087 exe "silent keepjumps ".w:netrw_bannercnt.',$s/\s\+$//e'
2002 set noma nomod 2088 setlocal noma nomod
2003 endif 2089 endif
2004 2090
2005 " call Dret("NetrwWideListing") 2091 " call Dret("NetrwWideListing")
2006 endfun 2092 endfun
2007 2093
2128 fun! s:NetBookmarkDir(chg,curdir) 2214 fun! s:NetBookmarkDir(chg,curdir)
2129 " call Dfunc("NetBookmarkDir(chg=".a:chg." curdir<".a:curdir.">) cnt=".v:count) 2215 " call Dfunc("NetBookmarkDir(chg=".a:chg." curdir<".a:curdir.">) cnt=".v:count)
2130 if exists("w:netrw_bannercnt") && line(".") <= w:netrw_bannercnt 2216 if exists("w:netrw_bannercnt") && line(".") <= w:netrw_bannercnt
2131 " looks like a "b" was pressed while in the banner region 2217 " looks like a "b" was pressed while in the banner region
2132 if line("$") > w:netrw_bannercnt 2218 if line("$") > w:netrw_bannercnt
2133 exe w:netrw_bannercnt 2219 exe 'silent keepjumps '.w:netrw_bannercnt
2134 endif 2220 endif
2135 echo "" 2221 if &ch > 1
2222 " "clear" the message
2223 echo ""
2224 endif
2136 " call Dret("NetBookmarkDir - ignoring") 2225 " call Dret("NetBookmarkDir - ignoring")
2137 return 2226 return
2138 endif 2227 endif
2139 2228
2140 if a:chg == 0 2229 if a:chg == 0
2227 endfun 2316 endfun
2228 2317
2229 " --------------------------------------------------------------------- 2318 " ---------------------------------------------------------------------
2230 " NetObtain: obtain file under cursor (for remote browsing support) {{{2 2319 " NetObtain: obtain file under cursor (for remote browsing support) {{{2
2231 fun! s:NetObtain() 2320 fun! s:NetObtain()
2232 if !exists("s:netrw_users_stl")
2233 let s:netrw_users_stl= &stl
2234 endif
2235 let fname= expand("<cWORD>") 2321 let fname= expand("<cWORD>")
2236 exe 'set stl=%f\ %h%m%r%=Obtaining\ '.escape(fname,' ') 2322
2237 redraw! 2323 " NetrwStatusLine support - for obtaining support
2324 call s:SetupNetrwStatusLine('%f %h%m%r%=%9*Obtaining '.fname)
2238 2325
2239 " call Dfunc("NetObtain() method=".w:netrw_method) 2326 " call Dfunc("NetObtain() method=".w:netrw_method)
2240 if exists("w:netrw_method") && w:netrw_method =~ '[235]' 2327 if exists("w:netrw_method") && w:netrw_method =~ '[235]'
2241 if executable("ftp") 2328 if executable("ftp")
2242 let curdir = expand("%") 2329 let curdir = expand("%")
2247 keepjumps $ 2334 keepjumps $
2248 2335
2249 "......................................... 2336 ".........................................
2250 if w:netrw_method == 2 2337 if w:netrw_method == 2
2251 " ftp + <.netrc>: Method #2 2338 " ftp + <.netrc>: Method #2
2339 setlocal ff=unix
2252 if path != "" 2340 if path != ""
2253 put ='cd '.path 2341 put ='cd '.path
2254 " call Decho("ftp: cd ".path) 2342 " call Decho("ftp: cd ".path)
2255 endif 2343 endif
2256 put ='get '.fname 2344 put ='get '.fname
2275 " call Decho('ftp: open '.g:netrw_machine 2363 " call Decho('ftp: open '.g:netrw_machine
2276 endif 2364 endif
2277 2365
2278 if exists("g:netrw_ftp") && g:netrw_ftp == 1 2366 if exists("g:netrw_ftp") && g:netrw_ftp == 1
2279 put =g:netrw_uid 2367 put =g:netrw_uid
2280 put =g:netrw_passwd 2368 put ='\"'.g:netrw_passwd.'\"'
2281 " call Decho('ftp: g:netrw_uid') 2369 " call Decho('ftp: g:netrw_uid')
2282 " call Decho('ftp: g:netrw_passwd') 2370 " call Decho('ftp: g:netrw_passwd')
2283 else 2371 else
2284 put ='user '.g:netrw_uid.' '.g:netrw_passwd 2372 put ='user \"'.g:netrw_uid.'\" \"'.g:netrw_passwd.'\"'
2285 " call Decho('user '.g:netrw_uid.' '.g:netrw_passwd) 2373 " call Decho('user '.g:netrw_uid.' '.g:netrw_passwd)
2286 endif 2374 endif
2287 2375
2288 if a:path != "" 2376 if a:path != ""
2289 put ='cd '.a:path 2377 put ='cd '.a:path
2304 echo "***warning*** unable to comply with your request<" . choice . ">" 2392 echo "***warning*** unable to comply with your request<" . choice . ">"
2305 endif 2393 endif
2306 " restore 2394 " restore
2307 exe "silent! ".endline.",$d" 2395 exe "silent! ".endline.",$d"
2308 exe "keepjumps ".curline 2396 exe "keepjumps ".curline
2309 set noma nomod 2397 setlocal noma nomod
2310 else 2398 else
2311 if !exists("g:netrw_quiet") 2399 if !exists("g:netrw_quiet")
2312 echohl Error | echo "***netrw*** this system doesn't support ftp" | echohl None 2400 echohl Error | echo "***netrw*** this system doesn't support ftp" | echohl None
2313 call inputsave()|call input("Press <cr> to continue")|call inputrestore() 2401 call inputsave()|call input("Press <cr> to continue")|call inputrestore()
2314 endif 2402 endif
2403 let &stl = s:netrw_users_stl
2404 let &laststatus = s:netrw_users_ls
2315 " call Dret("NetObtain") 2405 " call Dret("NetObtain")
2316 return 2406 return
2317 endif 2407 endif
2318 2408
2319 "......................................... 2409 ".........................................
2320 else 2410 else
2321 " scp: Method#4 2411 " scp: Method#4
2412 let curdir = expand("%")
2413 let path = substitute(curdir,'scp://[^/]\+/','','e')
2322 if exists("g:netrw_port") && g:netrw_port != "" 2414 if exists("g:netrw_port") && g:netrw_port != ""
2323 let useport= " -P ".g:netrw_port 2415 let useport= " -P ".g:netrw_port
2324 else 2416 else
2325 let useport= "" 2417 let useport= ""
2326 endif 2418 endif
2327 if g:netrw_cygwin == 1 2419 if g:netrw_cygwin == 1
2328 let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') 2420 let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e')
2329 " call Decho("executing: !".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(fname,' ?&')." .") 2421 " call Decho("executing: !".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".path.escape(fname,' ?&')." .")
2330 exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(fname,' ?&')." ." 2422 exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".path.escape(fname,' ?&')." ."
2331 else 2423 else
2332 " call Decho("executing: !".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(fname,' ?&')." .") 2424 " call Decho("executing: !".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".path.escape(fname,' ?&')." .")
2333 exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(fname,' ?&')." ." 2425 exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".path.escape(fname,' ?&')." ."
2334 endif 2426 endif
2335 endif 2427 endif
2336 2428
2337 " restore status line 2429 " restore status line
2338 let &stl= s:netrw_users_stl 2430 let &stl = s:netrw_users_stl
2431 let &laststatus = s:netrw_users_ls
2339 redraw! 2432 redraw!
2340 2433
2341 " call Dret("NetObtain") 2434 " call Dret("NetObtain")
2342 endfun 2435 endfun
2343 2436
2402 " call Decho("findbuf: bufnum=".bufnum." (final)") 2495 " call Decho("findbuf: bufnum=".bufnum." (final)")
2403 endif 2496 endif
2404 2497
2405 " get cleared buffer 2498 " get cleared buffer
2406 if bufnum < 0 || !bufexists(bufnum) 2499 if bufnum < 0 || !bufexists(bufnum)
2407 keepalt enew! 2500 keepjumps keepalt enew!
2408 " call Decho("enew buffer") 2501 " call Decho("enew buffer")
2409 else 2502 else
2410 exe "keepalt b ".bufnum 2503 exe "keepalt b ".bufnum
2411 if exists("s:last_sort_by") && g:netrw_sort_by == s:last_sort_by 2504 if exists("s:last_sort_by") && g:netrw_sort_by == s:last_sort_by
2412 if getline(2) =~ '^" Directory Listing ' 2505 if getline(2) =~ '^" Directory Listing '
2463 setlocal bh=hide bt=nofile nobl ma nonu 2556 setlocal bh=hide bt=nofile nobl ma nonu
2464 keepalt silent! %d 2557 keepalt silent! %d
2465 2558
2466 " --------------------------- 2559 " ---------------------------
2467 " Perform Directory Listing: 2560 " Perform Directory Listing:
2561 if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1
2562 echo "(netrw) Processing your browsing request..."
2563 endif
2468 2564
2469 " save current directory on directory history list 2565 " save current directory on directory history list
2470 call <SID>NetBookmarkDir(3,b:netrw_curdir) 2566 call <SID>NetBookmarkDir(3,b:netrw_curdir)
2471 2567
2472 " set up all the maps 2568 " set up all the maps
2473 " call Decho("Setting up local browser maps") 2569 " call Decho("Setting up local browser maps")
2474 nnoremap <buffer> <silent> <cr> :call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr> 2570 nnoremap <buffer> <silent> <cr> :call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr>
2475 nnoremap <buffer> <silent> <c-l> :set ma<bar>%d<bar>call <SID>LocalRefresh(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'))<bar>redraw!<cr> 2571 nnoremap <buffer> <silent> <c-l> :call <SID>NetRefresh(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'),1)<cr>
2476 nnoremap <buffer> <silent> - :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'../'))<cr> 2572 nnoremap <buffer> <silent> - :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'../'))<cr>
2477 nnoremap <buffer> <silent> a :let g:netrw_hide=(g:netrw_hide+1)%3<bar>exe "norm! 0"<bar>call <SID>LocalRefresh(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'))<cr> 2573 nnoremap <buffer> <silent> a :let g:netrw_hide=(g:netrw_hide+1)%3<bar>exe "norm! 0"<bar>call <SID>NetRefresh(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'),1)<cr>
2478 if w:netrw_longlist != 2 2574 if w:netrw_longlist != 2
2479 nnoremap <buffer> <silent> b :<c-u>call <SID>NetBookmarkDir(0,b:netrw_curdir)<cr> 2575 nnoremap <buffer> <silent> b :<c-u>call <SID>NetBookmarkDir(0,b:netrw_curdir)<cr>
2480 nnoremap <buffer> <silent> B :<c-u>call <SID>NetBookmarkDir(1,b:netrw_curdir)<cr> 2576 nnoremap <buffer> <silent> B :<c-u>call <SID>NetBookmarkDir(1,b:netrw_curdir)<cr>
2481 endif 2577 endif
2482 nnoremap <buffer> <silent> Nb :<c-u>call <SID>NetBookmarkDir(0,b:netrw_curdir)<cr> 2578 nnoremap <buffer> <silent> Nb :<c-u>call <SID>NetBookmarkDir(0,b:netrw_curdir)<cr>
2487 nnoremap <buffer> <silent> i :call <SID>NetLongList(1)<cr> 2583 nnoremap <buffer> <silent> i :call <SID>NetLongList(1)<cr>
2488 nnoremap <buffer> <silent> o :call <SID>NetSplit(2)<cr> 2584 nnoremap <buffer> <silent> o :call <SID>NetSplit(2)<cr>
2489 nnoremap <buffer> <silent> O :call <SID>LocalObtain()<cr> 2585 nnoremap <buffer> <silent> O :call <SID>LocalObtain()<cr>
2490 nnoremap <buffer> <silent> p :call <SID>LocalPreview(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord(),1))<cr> 2586 nnoremap <buffer> <silent> p :call <SID>LocalPreview(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord(),1))<cr>
2491 nnoremap <buffer> <silent> q :<c-u>call <SID>NetBookmarkDir(2,b:netrw_curdir)<cr> 2587 nnoremap <buffer> <silent> q :<c-u>call <SID>NetBookmarkDir(2,b:netrw_curdir)<cr>
2492 nnoremap <buffer> <silent> r :let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>LocalRefresh(<SID>LocalBrowseChgDir(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>
2493 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> 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>
2494 nnoremap <buffer> <silent> S :call <SID>NetSortSequence(1)<cr> 2590 nnoremap <buffer> <silent> S :call <SID>NetSortSequence(1)<cr>
2495 nnoremap <buffer> <silent> u :<c-u>call <SID>NetBookmarkDir(4,expand("%"))<cr> 2591 nnoremap <buffer> <silent> u :<c-u>call <SID>NetBookmarkDir(4,expand("%"))<cr>
2496 nnoremap <buffer> <silent> U :<c-u>call <SID>NetBookmarkDir(5,expand("%"))<cr> 2592 nnoremap <buffer> <silent> U :<c-u>call <SID>NetBookmarkDir(5,expand("%"))<cr>
2497 nnoremap <buffer> <silent> v :call <SID>NetSplit(3)<cr> 2593 nnoremap <buffer> <silent> v :call <SID>NetSplit(3)<cr>
2498 nnoremap <buffer> <silent> x :call <SID>NetBrowseX(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord(),0),0)"<cr> 2594 nnoremap <buffer> <silent> x :call <SID>NetBrowseX(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord(),0),0)"<cr>
2499 nnoremap <buffer> <silent> <2-leftmouse> :exe "call <SID>LocalRefresh(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))"<cr> 2595 nnoremap <buffer> <silent> <2-leftmouse> :call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr>
2500 nnoremap <buffer> <silent> <s-up> :Pexplore<cr> 2596 nnoremap <buffer> <silent> <s-up> :Pexplore<cr>
2501 nnoremap <buffer> <silent> <s-down> :Nexplore<cr> 2597 nnoremap <buffer> <silent> <s-down> :Nexplore<cr>
2502 exe 'nnoremap <buffer> <silent> <del> :call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>' 2598 exe 'nnoremap <buffer> <silent> <del> :call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>'
2503 exe 'vnoremap <buffer> <silent> <del> :call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>' 2599 exe 'vnoremap <buffer> <silent> <del> :call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>'
2504 exe 'nnoremap <buffer> <silent> D :call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>' 2600 exe 'nnoremap <buffer> <silent> D :call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>'
2571 if line("$") >= w:netrw_bannercnt 2667 if line("$") >= w:netrw_bannercnt
2572 2668
2573 if g:netrw_sort_by =~ "^n" 2669 if g:netrw_sort_by =~ "^n"
2574 call s:SetSort() 2670 call s:SetSort()
2575 2671
2576 if g:netrw_sort_direction =~ 'n' 2672 if w:netrw_bannercnt < line("$")
2577 exe 'keepjumps silent '.w:netrw_bannercnt.',$sort' 2673 if g:netrw_sort_direction =~ 'n'
2578 else 2674 exe 'silent keepjumps '.w:netrw_bannercnt.',$sort'
2579 exe 'keepjumps silent '.w:netrw_bannercnt.',$sort!' 2675 else
2676 exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'
2677 endif
2580 endif 2678 endif
2581 exe 'keepjumps silent '.w:netrw_bannercnt.',$s/^\d\{3}\///e' 2679 exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}\///e'
2582 2680
2583 else 2681 else
2584 if g:netrw_sort_direction =~ 'n' 2682 if w:netrw_bannercnt < line("$")
2585 exe 'keepjumps silent '.w:netrw_bannercnt.',$sort' 2683 if g:netrw_sort_direction =~ 'n'
2586 else 2684 exe 'silent keepjumps '.w:netrw_bannercnt.',$sort'
2587 exe 'keepjumps silent '.w:netrw_bannercnt.',$sort!' 2685 else
2686 exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'
2687 endif
2588 endif 2688 endif
2589 exe 'keepjumps silent '.w:netrw_bannercnt.',$s/^\d\{-}\///e' 2689 exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{-}\///e'
2590 endif 2690 endif
2591 2691
2592 endif 2692 endif
2593 endif 2693 endif
2594 2694
2595 call s:NetrwWideListing() 2695 call s:NetrwWideListing()
2596 if exists("w:netrw_bannercnt") && line("$") > w:netrw_bannercnt 2696 if exists("w:netrw_bannercnt") && line("$") > w:netrw_bannercnt
2597 exe w:netrw_bannercnt 2697 " place cursor on the top-left corner of the file listing
2698 exe 'silent '.w:netrw_bannercnt
2699 norm! 0
2598 endif 2700 endif
2599 2701
2600 " record previous current directory 2702 " record previous current directory
2601 let w:netrw_prvdir= b:netrw_curdir 2703 let w:netrw_prvdir= b:netrw_curdir
2602 2704
2603 " save certain window-oriented variables into buffer-oriented variables 2705 " save certain window-oriented variables into buffer-oriented variables
2604 call s:BufWinVars() 2706 call s:SetBufWinVars()
2605 call s:NetOptionRestore() 2707 call s:NetOptionRestore()
2606 setlocal noma nomod nonu bh=hide nobl 2708 setlocal noma nomod nonu bh=hide nobl
2607 2709
2608 " call Dret("DirBrowse : file<".expand("%:p")."> bufname<".bufname("%").">") 2710 " call Dret("DirBrowse : file<".expand("%:p")."> bufname<".bufname("%").">")
2609 endfun 2711 endfun
2699 keepjumps put=pfile 2801 keepjumps put=pfile
2700 endif 2802 endif
2701 endwhile 2803 endwhile
2702 2804
2703 " cleanup any windows mess at end-of-line 2805 " cleanup any windows mess at end-of-line
2704 keepjumps silent! %s/\r$//e 2806 silent! keepjumps %s/\r$//e
2705 setlocal ts=32 2807 setlocal ts=32
2706 2808
2707 " call Dret("LocalBrowseList") 2809 " call Dret("LocalBrowseList")
2708 endfun 2810 endfun
2709 2811
2790 echohl Statement 2892 echohl Statement
2791 call inputsave() 2893 call inputsave()
2792 let ok= input("Confirm deletion of file<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ") 2894 let ok= input("Confirm deletion of file<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ")
2793 call inputrestore() 2895 call inputrestore()
2794 echohl NONE 2896 echohl NONE
2897 if ok == ""
2898 let ok="no"
2899 endif
2900 " call Decho("response: ok<".ok.">")
2795 let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e') 2901 let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e')
2902 " call Decho("response: ok<".ok."> (after sub)")
2796 if ok =~ 'a\%[ll]' 2903 if ok =~ 'a\%[ll]'
2797 let all= 1 2904 let all= 1
2798 endif 2905 endif
2799 endif 2906 endif
2800 2907
2811 echohl Statement 2918 echohl Statement
2812 call inputsave() 2919 call inputsave()
2813 let ok= input("Confirm deletion of directory<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ") 2920 let ok= input("Confirm deletion of directory<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ")
2814 call inputrestore() 2921 call inputrestore()
2815 let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e') 2922 let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e')
2923 if ok == ""
2924 let ok="no"
2925 endif
2816 if ok =~ 'a\%[ll]' 2926 if ok =~ 'a\%[ll]'
2817 let all= 1 2927 let all= 1
2818 endif 2928 endif
2819 endif 2929 endif
2820 let rmfile= substitute(rmfile,'[\/]$','','e') 2930 let rmfile= substitute(rmfile,'[\/]$','','e')
2853 endwhile 2963 endwhile
2854 2964
2855 " refresh the directory 2965 " refresh the directory
2856 let curline= line(".") 2966 let curline= line(".")
2857 " call Decho("refresh the directory") 2967 " call Decho("refresh the directory")
2858 call s:LocalRefresh(s:LocalBrowseChgDir(b:netrw_curdir,'./')) 2968 call s:NetRefresh(s:LocalBrowseChgDir(b:netrw_curdir,'./'),1)
2859 exe curline 2969 exe curline
2860 2970
2861 " call Dret("LocalBrowseRm") 2971 " call Dret("LocalBrowseRm")
2862 endfun 2972 endfun
2863 2973
2899 endwhile 3009 endwhile
2900 3010
2901 " refresh the directory 3011 " refresh the directory
2902 let curline= line(".") 3012 let curline= line(".")
2903 " call Decho("refresh the directory listing") 3013 " call Decho("refresh the directory listing")
2904 call s:LocalRefresh(s:LocalBrowseChgDir(b:netrw_curdir,'./')) 3014 call s:NetRefresh(s:LocalBrowseChgDir(b:netrw_curdir,'./'),1)
2905 exe "keepjumps ".curline 3015 exe "keepjumps ".curline
2906 " call Dret("LocalBrowseRename") 3016 " call Dret("LocalBrowseRename")
2907 endfun 3017 endfun
2908 3018
2909 " --------------------------------------------------------------------- 3019 " ---------------------------------------------------------------------
2941 endif 3051 endif
2942 " call Dret("LocalPreview") 3052 " call Dret("LocalPreview")
2943 endfun 3053 endfun
2944 3054
2945 " --------------------------------------------------------------------- 3055 " ---------------------------------------------------------------------
2946 " LocalRefresh: {{{2
2947 fun! s:LocalRefresh(dirname)
2948 " call Dfunc("LocalRefresh(dirname<".a:dirname.">)")
2949 set ma
2950 %d
2951 call s:LocalBrowse(a:dirname)
2952 redraw!
2953 " call Dret("LocalRefresh")
2954 endfun
2955
2956 " ---------------------------------------------------------------------
2957 " Explore: launch the local browser in the directory of the current file {{{2 3056 " Explore: launch the local browser in the directory of the current file {{{2
2958 " dosplit==0: the window will be split iff the current file has 3057 " dosplit==0: the window will be split iff the current file has
2959 " been modified 3058 " been modified
2960 " dosplit==1: the window will be split before running the local 3059 " dosplit==1: the window will be split before running the local
2961 " browser 3060 " browser
2994 endif 3093 endif
2995 norm! 0 3094 norm! 0
2996 3095
2997 if a:1 == "" && a:indx >= 0 3096 if a:1 == "" && a:indx >= 0
2998 " Explore Hexplore Vexplore Sexplore 3097 " Explore Hexplore Vexplore Sexplore
3098 " call Decho("Explore Hexplore Vexplore Sexplore")
2999 let newdir= substitute(expand("%:p"),'^\(.*[/\\]\)[^/\\]*$','\1','e') 3099 let newdir= substitute(expand("%:p"),'^\(.*[/\\]\)[^/\\]*$','\1','e')
3000 if newdir =~ '^scp:' || newdir =~ '^ftp:' 3100 if newdir =~ '^scp:' || newdir =~ '^ftp:'
3001 " call Decho("calling NetBrowse(newdir<".newdir.">)") 3101 " call Decho("calling NetBrowse(newdir<".newdir.">)")
3002 call s:NetBrowse(newdir) 3102 call s:NetBrowse(newdir)
3003 else 3103 else
3104 if newdir == ""|let newdir= getcwd()|endif
3004 " call Decho("calling LocalBrowse(newdir<".newdir.">)") 3105 " call Decho("calling LocalBrowse(newdir<".newdir.">)")
3005 call s:LocalBrowse(newdir) 3106 call s:LocalBrowse(newdir)
3006 endif 3107 endif
3007 3108
3008 elseif a:1 =~ '\*\*/' || a:indx < 0 3109 elseif a:1 =~ '\*\*/' || a:indx < 0
3009 " Nexplore Pexplore -or- Explore **/... 3110 " Nexplore Pexplore -or- Explore **/...
3111 " call Decho("Nexplore Pexplore -or- Explore **/...")
3010 3112
3011 if has("path_extra") 3113 if has("path_extra")
3012 if !exists("w:netrw_explore_indx") 3114 if !exists("w:netrw_explore_indx")
3013 let w:netrw_explore_indx= 0 3115 let w:netrw_explore_indx= 0
3014 endif 3116 endif
3030 " call Dret("Explore") 3132 " call Dret("Explore")
3031 return 3133 return
3032 endif 3134 endif
3033 endif 3135 endif
3034 3136
3035 " NetrwStatusLine support 3137 " NetrwStatusLine support - for exploring support
3036 let w:netrw_explore_indx= indx 3138 let w:netrw_explore_indx= indx
3037 if !exists("s:netrw_users_stl")
3038 let s:netrw_users_stl= &stl
3039 endif
3040 set stl=%f\ %h%m%r%=%{NetrwStatusLine()}
3041 " call Decho("explorelist<".join(w:netrw_explore_list,',')."> len=".w:netrw_explore_listlen) 3139 " call Decho("explorelist<".join(w:netrw_explore_list,',')."> len=".w:netrw_explore_listlen)
3042 3140
3043 " sanity check 3141 " sanity check
3044 if indx >= w:netrw_explore_listlen || indx < 0 3142 if indx >= w:netrw_explore_listlen || indx < 0
3045 let indx= (indx < 0)? 0 : ( w:netrw_explore_listlen - 1 ) 3143 let indx= (indx < 0)? 0 : ( w:netrw_explore_listlen - 1 )
3048 " call Dret("Explore") 3146 " call Dret("Explore")
3049 return 3147 return
3050 endif 3148 endif
3051 3149
3052 exe "let dirfile= w:netrw_explore_list[".indx."]" 3150 exe "let dirfile= w:netrw_explore_list[".indx."]"
3053 " call Decho("dirfile<".dirfile."> indx=".indx) 3151 " call Decho("dirfile=w:netrw_explore_list[indx=".indx."]= <".dirfile.">")
3054 let newdir= substitute(dirfile,'/[^/]*$','','e') 3152 let newdir= substitute(dirfile,'/[^/]*$','','e')
3055 " call Decho("newdir<".newdir.">") 3153 " call Decho("newdir<".newdir.">")
3154
3056 " call Decho("calling LocalBrowse(newdir<".newdir.">)") 3155 " call Decho("calling LocalBrowse(newdir<".newdir.">)")
3057 call s:LocalBrowse(newdir) 3156 call s:LocalBrowse(newdir)
3058 call search(substitute(dirfile,"^.*/","",""),"W") 3157 if w:netrw_longlist == 0 || w:netrw_longlist == 1
3158 call search('^'.substitute(dirfile,"^.*/","","").'\>',"W")
3159 else
3160 call search('\<'.substitute(dirfile,"^.*/","","").'\>',"w")
3161 endif
3059 let w:netrw_explore_mtchcnt = indx + 1 3162 let w:netrw_explore_mtchcnt = indx + 1
3060 let w:netrw_explore_bufnr = bufnr(".") 3163 let w:netrw_explore_bufnr = bufnr(".")
3061 let w:netrw_explore_line = line(".") 3164 let w:netrw_explore_line = line(".")
3165 call s:SetupNetrwStatusLine('%f %h%m%r%=%9*%{NetrwStatusLine()}')
3062 " call Decho("explore: mtchcnt=".w:netrw_explore_mtchcnt." bufnr=".w:netrw_explore_bufnr." line#".w:netrw_explore_line) 3166 " call Decho("explore: mtchcnt=".w:netrw_explore_mtchcnt." bufnr=".w:netrw_explore_bufnr." line#".w:netrw_explore_line)
3063 3167
3064 else 3168 else
3065 if !exists("g:netrw_quiet") 3169 if !exists("g:netrw_quiet")
3066 echohl WarningMsg | echo "***netrw*** your vim needs the +path_extra feature for Exploring with **!" | echohl None | echohl None 3170 echohl WarningMsg | echo "***netrw*** your vim needs the +path_extra feature for Exploring with **!" | echohl None | echohl None
3067 endif 3171 endif
3068 call inputsave()|call input("Press <cr> to continue")|call inputrestore() 3172 call inputsave()|call input("Press <cr> to continue")|call inputrestore()
3069 endif 3173 endif
3070 3174
3071 else 3175 else
3176 " call Decho("Explore newdir<".a:1.">")
3072 let newdir= a:1 3177 let newdir= a:1
3073 " call Decho("calling LocalBrowse(newdir<".newdir.">)")
3074 call s:LocalBrowse(newdir) 3178 call s:LocalBrowse(newdir)
3075 endif 3179 endif
3076 3180
3077 " call Dret("Explore") 3181 " call Dret("Explore")
3182 endfun
3183
3184 " ---------------------------------------------------------------------
3185 " SetupNetrwStatusLine: {{{2
3186 fun! s:SetupNetrwStatusLine(statline)
3187 " call Dfunc("SetupNetrwStatusLine(statline<".a:statline.">)")
3188
3189 if !exists("s:netrw_setup_statline")
3190 let s:netrw_setup_statline= 1
3191 " call Decho("do first-time status line setup")
3192
3193 if !exists("s:netrw_users_stl")
3194 let s:netrw_users_stl= &stl
3195 endif
3196 if !exists("s:netrw_users_ls")
3197 let s:netrw_users_ls= &laststatus
3198 endif
3199
3200 " set up User9 highlighting as needed
3201 let keepa= @a
3202 redir @a
3203 try
3204 hi User9
3205 catch /^Vim\%((\a\+)\)\=:E411/
3206 if &bg == "dark"
3207 hi User9 ctermfg=yellow ctermbg=blue guifg=yellow guibg=blue
3208 else
3209 hi User9 ctermbg=yellow ctermfg=blue guibg=yellow guifg=blue
3210 endif
3211 endtry
3212 redir END
3213 let @a= keepa
3214 endif
3215
3216 " set up status line (may use User9 highlighting)
3217 " insure that windows have a statusline
3218 " make sure statusline is displayed
3219 let &stl=a:statline
3220 set laststatus=2
3221 " call Decho("stl=".&stl)
3222 redraw!
3223
3224 " call Dret("SetupNetrwStatusLine : stl=".&stl)
3078 endfun 3225 endfun
3079 3226
3080 " --------------------------------------------------------------------- 3227 " ---------------------------------------------------------------------
3081 " NetrwStatusLine: {{{2 3228 " NetrwStatusLine: {{{2
3082 fun! NetrwStatusLine() 3229 fun! NetrwStatusLine()
3083 " let g:stlmsg= "Xbufnr=".w:netrw_explore_bufnr." bufnr=".bufnr(".")." Xline#".w:netrw_explore_line." line#".line(".") 3230
3231 " vvv NetrwStatusLine() debugging vvv
3232 " let g:stlmsg=""
3233 " if !exists("w:netrw_explore_bufnr")
3234 " let g:stlmsg="!X<explore_bufnr>"
3235 " elseif w:netrw_explore_bufnr != bufnr(".")
3236 " let g:stlmsg="explore_bufnr!=".bufnr(".")
3237 " endif
3238 " if !exists("w:netrw_explore_line")
3239 " let g:stlmsg=" !X<explore_line>"
3240 " elseif w:netrw_explore_line != line(".")
3241 " let g:stlmsg=" explore_line!={line(.)<".line(".").">"
3242 " endif
3243 " if !exists("w:netrw_explore_list")
3244 " let g:stlmsg=" !X<explore_list>"
3245 " endif
3246 " ^^^ NetrwStatusLine() debugging ^^^
3247
3084 if !exists("w:netrw_explore_bufnr") || w:netrw_explore_bufnr != bufnr(".") || !exists("w:netrw_explore_line") || w:netrw_explore_line != line(".") || !exists("w:netrw_explore_list") 3248 if !exists("w:netrw_explore_bufnr") || w:netrw_explore_bufnr != bufnr(".") || !exists("w:netrw_explore_line") || w:netrw_explore_line != line(".") || !exists("w:netrw_explore_list")
3085 " restore user's status line 3249 " restore user's status line
3086 let &stl= s:netrw_users_stl 3250 let &stl = s:netrw_users_stl
3251 let &laststatus = s:netrw_users_ls
3087 if exists("w:netrw_explore_bufnr")|unlet w:netrw_explore_bufnr|endif 3252 if exists("w:netrw_explore_bufnr")|unlet w:netrw_explore_bufnr|endif
3088 if exists("w:netrw_explore_line")|unlet w:netrw_explore_line|endif 3253 if exists("w:netrw_explore_line")|unlet w:netrw_explore_line|endif
3089 return "" 3254 return ""
3090 else 3255 else
3091 return "Match ".w:netrw_explore_mtchcnt." of ".w:netrw_explore_listlen 3256 return "Match ".w:netrw_explore_mtchcnt." of ".w:netrw_explore_listlen
3144 let mipf = '^\(\S\+\)\s\+\(\S\+\)\s\+\(\S\+\)\s\+\(\S\+\)$' 3309 let mipf = '^\(\S\+\)\s\+\(\S\+\)\s\+\(\S\+\)\s\+\(\S\+\)$'
3145 let mf = '^\(\S\+\)\s\+\(\S\+\)$' 3310 let mf = '^\(\S\+\)\s\+\(\S\+\)$'
3146 let ftpurm = '^ftp://\(\([^/@]\{-}\)@\)\=\([^/#:]\{-}\)\([#:]\d\+\)\=/\(.*\)$' 3311 let ftpurm = '^ftp://\(\([^/@]\{-}\)@\)\=\([^/#:]\{-}\)\([#:]\d\+\)\=/\(.*\)$'
3147 let rcpurm = '^rcp://\%(\([^/@]\{-}\)@\)\=\([^/]\{-}\)/\(.*\)$' 3312 let rcpurm = '^rcp://\%(\([^/@]\{-}\)@\)\=\([^/]\{-}\)/\(.*\)$'
3148 let rcphf = '^\(\(\h\w*\)@\)\=\(\h\w*\):\([^@]\+\)$' 3313 let rcphf = '^\(\(\h\w*\)@\)\=\(\h\w*\):\([^@]\+\)$'
3149 let scpurm = '^scp://\([^/]\{-}\)\([#:]\d\+\)\=/\(.*\)$' 3314 let scpurm = '^scp://\([^/#:]\+\)\%([#:]\(\d\+\)\)\=/\(.*\)$'
3150 let httpurm = '^http://\([^/]\{-}\)\(/.*\)\=$' 3315 let httpurm = '^http://\([^/]\{-}\)\(/.*\)\=$'
3151 let davurm = '^s\=dav://\([^/]\+\)/\(.*/\)\([-_.~[:alnum:]]\+\)$' 3316 let davurm = '^s\=dav://\([^/]\+\)/\(.*/\)\([-_.~[:alnum:]]\+\)$'
3152 let rsyncurm = '^rsync://\([^/]\{-}\)/\(.*\)\=$' 3317 let rsyncurm = '^rsync://\([^/]\{-}\)/\(.*\)\=$'
3153 let fetchurm = '^fetch://\(\([^/@]\{-}\)@\)\=\([^/#:]\{-}\)\(:http\)\=/\(.*\)$' 3318 let fetchurm = '^fetch://\(\([^/@]\{-}\)@\)\=\([^/#:]\{-}\)\(:http\)\=/\(.*\)$'
3154 let sftpurm = '^sftp://\([^/]\{-}\)/\(.*\)\=$' 3319 let sftpurm = '^sftp://\([^/]\{-}\)/\(.*\)\=$'
3288 call inputsave()|call input("Press <cr> to continue")|call inputrestore() 3453 call inputsave()|call input("Press <cr> to continue")|call inputrestore()
3289 endif 3454 endif
3290 let b:netrw_method = -1 3455 let b:netrw_method = -1
3291 endif 3456 endif
3292 3457
3293 " surround password with double-quotes if it contains embedded blanks
3294 if g:netrw_passwd !~ '^"' && g:netrw_passwd =~ ' '
3295 let g:netrw_passwd= '"'.g:netrw_passwd.'"'
3296 endif
3297
3298 " remove any leading [:#] from port number 3458 " remove any leading [:#] from port number
3299 if g:netrw_port != "" 3459 if g:netrw_port != ""
3300 let g:netrw_port = substitute(g:netrw_port,'[#:]\+','','') 3460 let g:netrw_port = substitute(g:netrw_port,'[#:]\+','','')
3301 endif 3461 endif
3302 3462
3339 let g:netrw_passwd= inputsecret("Enter Password: ") 3499 let g:netrw_passwd= inputsecret("Enter Password: ")
3340 else " from command line 3500 else " from command line
3341 " call Decho("a:0=".a:0." case >1: a:2<".a:2.">") 3501 " call Decho("a:0=".a:0." case >1: a:2<".a:2.">")
3342 let g:netrw_passwd=a:2 3502 let g:netrw_passwd=a:2
3343 endif 3503 endif
3504
3344 " call Dret("NetUserPass") 3505 " call Dret("NetUserPass")
3345 endfun 3506 endfun
3346 3507
3347 " ------------------------------------------------------------------------ 3508 " ------------------------------------------------------------------------
3348 " NetOptionSave: save options and set to "standard" form {{{1 3509 " NetOptionSave: save options and set to "standard" form {{{1
3360 " record autochdir setting and then insure its unset (tnx to David Fishburn) 3521 " record autochdir setting and then insure its unset (tnx to David Fishburn)
3361 if has("netbeans_intg") || has("sun_workshop") 3522 if has("netbeans_intg") || has("sun_workshop")
3362 let w:acdkeep = &autochdir 3523 let w:acdkeep = &autochdir
3363 set noautochdir 3524 set noautochdir
3364 endif 3525 endif
3365 let w:cinkeep = &cin 3526 let w:cinkeep = &cin
3366 let w:cinokeep = &cino 3527 let w:cinokeep = &cino
3367 let w:comkeep = &com 3528 let w:comkeep = &com
3368 let w:cpokeep = &cpo 3529 let w:cpokeep = &cpo
3369 if !g:netrw_keepdir 3530 if !g:netrw_keepdir
3370 let w:dirkeep = getcwd() 3531 let w:dirkeep = getcwd()
3371 endif 3532 endif
3372 let w:gdkeep = &gd 3533 let w:gdkeep = &gd
3373 let w:repkeep = &report 3534 let w:repkeep = &report
3374 let w:twkeep = &tw 3535 let w:spellkeep = &spell
3536 let w:twkeep = &tw
3375 setlocal cino = 3537 setlocal cino =
3376 setlocal com = 3538 setlocal com =
3377 setlocal cpo -=aA 3539 setlocal cpo -=aA
3378 setlocal nocin noai 3540 setlocal nocin noai nospell
3379 setlocal tw =0 3541 setlocal tw =0
3380 setlocal report=10000 3542 setlocal report=10000
3381 if has("win32") && !has("win95") 3543 if has("win32") && !has("win95")
3382 let w:swfkeep= &swf 3544 let w:swfkeep= &swf
3383 setlocal noswf 3545 setlocal noswf
3395 " call Dret("NetOptionRestore : w:netoptionsave doesn't exist") 3557 " call Dret("NetOptionRestore : w:netoptionsave doesn't exist")
3396 return 3558 return
3397 endif 3559 endif
3398 unlet w:netoptionsave 3560 unlet w:netoptionsave
3399 3561
3400 let &ai = w:aikeep 3562 if exists("w:aikeep")| let &ai= w:aikeep|endif
3401 if has("netbeans_intg") || has("sun_workshop") 3563 if (has("netbeans_intg") || has("sun_workshop")) && exists("w:acdkeep")
3402 let &acd = w:acdkeep 3564 let &acd= w:acdkeep
3403 endif 3565 unlet w:acdkeep
3404 let &cin = w:cinkeep 3566 endif
3405 let &cino = w:cinokeep 3567 if exists("w:cinkeep") |let &cin = w:cinkeep |unlet w:cinkeep |endif
3406 let &com = w:comkeep 3568 if exists("w:cinokeep") |let &cino = w:cinokeep |unlet w:cinokeep |endif
3407 let &cpo = w:cpokeep 3569 if exists("w:comkeep") |let &com = w:comkeep |unlet w:comkeep |endif
3408 if exists("w:dirkeep") 3570 if exists("w:cpokeep") |let &cpo = w:cpokeep |unlet w:cpokeep |endif
3409 exe "lcd ".w:dirkeep 3571 if exists("w:dirkeep") |exe "lcd ".w:dirkeep |unlet w:dirkeep |endif
3410 endif 3572 if exists("w:gdkeep") |let &gd = w:gdkeep |unlet w:gdkeep |endif
3411 let &gd = w:gdkeep 3573 if exists("w:repkeep") |let &report = w:repkeep |unlet w:repkeep |endif
3412 let &report = w:repkeep 3574 if exists("w:spellkeep")|let &spell = w:spellkeep |unlet w:spellkeep|endif
3413 let &tw = w:twkeep 3575 if exists("w:twkeep") |let &tw = w:twkeep |unlet w:twkeep |endif
3414 if exists("w:swfkeep") 3576 if exists("w:swfkeep")
3415 if &directory == "" 3577 if &directory == "" && exists("w:swfkeep")
3416 " user hasn't specified a swapfile directory; 3578 " user hasn't specified a swapfile directory;
3417 " netrw will temporarily make the swapfile 3579 " netrw will temporarily make the swapfile
3418 " directory the current local one. 3580 " directory the current local one.
3419 let &directory = getcwd() 3581 let &directory = getcwd()
3420 silent! let &swf = w:swfkeep 3582 silent! let &swf = w:swfkeep
3422 else 3584 else
3423 let &swf= w:swfkeep 3585 let &swf= w:swfkeep
3424 endif 3586 endif
3425 unlet w:swfkeep 3587 unlet w:swfkeep
3426 endif 3588 endif
3427 unlet w:aikeep
3428 unlet w:cinkeep
3429 unlet w:cinokeep
3430 unlet w:comkeep
3431 unlet w:cpokeep
3432 unlet w:gdkeep
3433 unlet w:repkeep
3434 unlet w:twkeep
3435 if exists("w:dirkeep")
3436 unlet w:dirkeep
3437 endif
3438 3589
3439 " call Dret("NetOptionRestore") 3590 " call Dret("NetOptionRestore")
3440 endfun 3591 endfun
3441 3592
3442 " ------------------------------------------------------------------------ 3593 " ------------------------------------------------------------------------
3444 " to handle extra junk that their system's ftp dumps 3595 " to handle extra junk that their system's ftp dumps
3445 " into the transfer. This function is provided as an 3596 " into the transfer. This function is provided as an
3446 " example and as a fix for a Windows 95 problem: in my 3597 " example and as a fix for a Windows 95 problem: in my
3447 " experience, win95's ftp always dumped four blank lines 3598 " experience, win95's ftp always dumped four blank lines
3448 " at the end of the transfer. 3599 " at the end of the transfer.
3449 if has("win95") && g:netrw_win95ftp 3600 if has("win95") && exists("g:netrw_win95ftp") && g:netrw_win95ftp
3450 fun! NetReadFixup(method, line1, line2) 3601 fun! NetReadFixup(method, line1, line2)
3451 " call Dfunc("NetReadFixup(method<".a:method."> line1=".a:line1." line2=".a:line2.")") 3602 " call Dfunc("NetReadFixup(method<".a:method."> line1=".a:line1." line2=".a:line2.")")
3452 if method == 3 " ftp (no <.netrc>) 3603 if method == 3 " ftp (no <.netrc>)
3453 let fourblanklines= line2 - 3 3604 let fourblanklines= line2 - 3
3454 silent fourblanklines.",".line2."g/^\s*/d" 3605 silent fourblanklines.",".line2."g/^\s*/d"
3545 " apparently no files were left after a Hiding pattern was used 3696 " apparently no files were left after a Hiding pattern was used
3546 " call Dret("SetSort : no files left after hiding") 3697 " call Dret("SetSort : no files left after hiding")
3547 return 3698 return
3548 endif 3699 endif
3549 if seq == '*' 3700 if seq == '*'
3550 exe 'keepjumps silent '.w:netrw_bannercnt.',$v/^\d\{3}\//s/^/'.spriority.'/' 3701 exe 'silent keepjumps '.w:netrw_bannercnt.',$v/^\d\{3}\//s/^/'.spriority.'/'
3551 else 3702 else
3552 exe 'keepjumps silent '.w:netrw_bannercnt.',$g/'.eseq.'/s/^/'.spriority.'/' 3703 exe 'silent keepjumps '.w:netrw_bannercnt.',$g/'.eseq.'/s/^/'.spriority.'/'
3553 endif 3704 endif
3554 let priority = priority + 1 3705 let priority = priority + 1
3555 endwhile 3706 endwhile
3556 3707
3557 exe 'keepjumps silent '.w:netrw_bannercnt.',$s/^\(\d\{3}\/\)\%(\d\{3}\/\)\+/\1/e' 3708 exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\d\{3}\/\)\%(\d\{3}\/\)\+/\1/e'
3558 3709
3559 " call Dret("SetSort") 3710 " call Dret("SetSort")
3560 endfun 3711 endfun
3561 3712
3562 " --------------------------------------------------------------------- 3713 " ---------------------------------------------------------------------
3590 if exists("s:explore_list") |let w:netrw_explore_list = s:explore_list |unlet s:explore_list |endif 3741 if exists("s:explore_list") |let w:netrw_explore_list = s:explore_list |unlet s:explore_list |endif
3591 " call Dret("CopyWinVars") 3742 " call Dret("CopyWinVars")
3592 endfun 3743 endfun
3593 3744
3594 " --------------------------------------------------------------------- 3745 " ---------------------------------------------------------------------
3595 " BufWinVars: (used by NetBrowse() and LocalBrowse()) {{{1 3746 " SetBufWinVars: (used by NetBrowse() and LocalBrowse()) {{{1
3596 " To allow separate windows to have their own activities, such as 3747 " To allow separate windows to have their own activities, such as
3597 " Explore **/pattern, several variables have been made window-oriented. 3748 " Explore **/pattern, several variables have been made window-oriented.
3598 " However, when the user splits a browser window (ex: ctrl-w s), these 3749 " However, when the user splits a browser window (ex: ctrl-w s), these
3599 " variables are not inherited by the new window. BufWinVars() and 3750 " variables are not inherited by the new window. SetBufWinVars() and
3600 " UseBufWinVars() get around that. 3751 " UseBufWinVars() get around that.
3601 fun! s:BufWinVars() 3752 fun! s:SetBufWinVars()
3602 " call Dfunc("BufWinVars()") 3753 " call Dfunc("SetBufWinVars()")
3603 if exists("w:netrw_longlist") |let b:netrw_longlist = w:netrw_longlist |endif 3754 if exists("w:netrw_longlist") |let b:netrw_longlist = w:netrw_longlist |endif
3604 if exists("w:netrw_bannercnt") |let b:netrw_bannercnt = w:netrw_bannercnt |endif 3755 if exists("w:netrw_bannercnt") |let b:netrw_bannercnt = w:netrw_bannercnt |endif
3605 if exists("w:netrw_method") |let b:netrw_method = w:netrw_method |endif 3756 if exists("w:netrw_method") |let b:netrw_method = w:netrw_method |endif
3606 if exists("w:netrw_prvdir") |let b:netrw_prvdir = w:netrw_prvdir |endif 3757 if exists("w:netrw_prvdir") |let b:netrw_prvdir = w:netrw_prvdir |endif
3607 if exists("w:netrw_explore_indx") |let b:netrw_explore_indx = w:netrw_explore_indx |endif 3758 if exists("w:netrw_explore_indx") |let b:netrw_explore_indx = w:netrw_explore_indx |endif
3608 if exists("w:netrw_explore_listlen")|let b:netrw_explore_listlen = w:netrw_explore_listlen|endif 3759 if exists("w:netrw_explore_listlen")|let b:netrw_explore_listlen = w:netrw_explore_listlen|endif
3609 if exists("w:netrw_explore_mtchcnt")|let b:netrw_explore_mtchcnt = w:netrw_explore_mtchcnt|endif 3760 if exists("w:netrw_explore_mtchcnt")|let b:netrw_explore_mtchcnt = w:netrw_explore_mtchcnt|endif
3610 if exists("w:netrw_explore_bufnr") |let b:netrw_explore_bufnr = w:netrw_explore_bufnr |endif 3761 if exists("w:netrw_explore_bufnr") |let b:netrw_explore_bufnr = w:netrw_explore_bufnr |endif
3611 if exists("w:netrw_explore_line") |let b:netrw_explore_line = w:netrw_explore_line |endif 3762 if exists("w:netrw_explore_line") |let b:netrw_explore_line = w:netrw_explore_line |endif
3612 if exists("w:netrw_explore_list") |let b:netrw_explore_list = w:netrw_explore_list |endif 3763 if exists("w:netrw_explore_list") |let b:netrw_explore_list = w:netrw_explore_list |endif
3613 " call Dret("BufWinVars") 3764 " call Dret("SetBufWinVars")
3614 endfun 3765 endfun
3615 3766
3616 " --------------------------------------------------------------------- 3767 " ---------------------------------------------------------------------
3617 " UseBufWinVars: (used by NetBrowse() and LocalBrowse() {{{1 3768 " UseBufWinVars: (used by NetBrowse() and LocalBrowse() {{{1
3618 " Matching function to BufferWinVars() 3769 " Matching function to BufferWinVars()
3629 if exists("b:netrw_explore_line") && !exists("w:netrw_explore_line") |let w:netrw_explore_line = b:netrw_explore_line |endif 3780 if exists("b:netrw_explore_line") && !exists("w:netrw_explore_line") |let w:netrw_explore_line = b:netrw_explore_line |endif
3630 if exists("b:netrw_explore_list") && !exists("w:netrw_explore_list") |let w:netrw_explore_list = b:netrw_explore_list |endif 3781 if exists("b:netrw_explore_list") && !exists("w:netrw_explore_list") |let w:netrw_explore_list = b:netrw_explore_list |endif
3631 " call Dret("UseBufWinVars") 3782 " call Dret("UseBufWinVars")
3632 endfun 3783 endfun
3633 3784
3785 " ---------------------------------------------------------------------
3786 " RFC2396: converts %xx into characters
3787 fun! netrw#RFC2396(fname)
3788 " call Dfunc("RFC2396(fname<".a:fname.">)")
3789 let fname = escape(substitute(a:fname,'%\(\x\x\)','\=nr2char("0x".submatch(1))','ge')," \t")
3790 " call Dret("RFC2396 ".fname)
3791 return fname
3792 endfun
3793
3634 " ------------------------------------------------------------------------ 3794 " ------------------------------------------------------------------------
3635 " Settings Restoration: {{{1 3795 " Settings Restoration: {{{1
3636 let &cpo= s:keepcpo 3796 let &cpo= s:keepcpo
3637 unlet s:keepcpo 3797 unlet s:keepcpo
3638 3798