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