annotate runtime/plugin/netrw.vim @ 9:4102fb4ea781 v7.0002

updated for version 7.0002
author vimboss
date Sun, 20 Jun 2004 12:51:53 +0000
parents 3fc0f57ecb91
children 4e2284e71352
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1 " netrw.vim: (global plugin) Handles file transfer across a network
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
2 " Last Change: Jun 18, 2004
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3 " Maintainer: Charles E. Campbell, Jr. PhD <drchipNOSPAM at campbellfamily.biz>
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
4 " Version: 46
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5 " License: Vim License (see vim's :help license)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6 "
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7 " But be doers of the word, and not only hearers, deluding your own selves
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8 " (James 1:22 RSV)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
9 " =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
10
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
11 " Exit quickly when already loaded or when 'compatible' is set.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
12 if exists("loaded_netrw") || &cp
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
13 finish
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
14 endif
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
15 let loaded_netrw = "v46"
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
16 let s:save_cpo = &cpo
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
17 set cpo&vim
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
18
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
19 " ---------------------------------------------------------------------
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
20 " Default values for global netrw variables {{{1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
21 if !exists("g:netrw_ftpmode")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
22 let g:netrw_ftpmode= "binary"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
23 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
24 if !exists("g:netrw_win95ftp")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
25 let g:netrw_win95ftp= 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
26 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
27 if !exists("g:netrw_cygwin")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
28 if has("win32")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
29 let g:netrw_cygwin= 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
30 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
31 let g:netrw_cygwin= 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
32 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
33 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
34
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
35 " ---------------------------------------------------------------------
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
36 " Default values for global protocol variables {{{1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
37 if !exists("g:netrw_rcp_cmd")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
38 let g:netrw_rcp_cmd = "rcp"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
39 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
40 if !exists("g:netrw_ftp_cmd")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
41 let g:netrw_ftp_cmd = "ftp"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
42 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
43 if !exists("g:netrw_scp_cmd")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
44 let g:netrw_scp_cmd = "scp -q"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
45 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
46 if !exists("g:netrw_sftp_cmd")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
47 let g:netrw_sftp_cmd = "sftp"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
48 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
49 if !exists("g:netrw_http_cmd")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
50 if executable("wget")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
51 let g:netrw_http_cmd = "wget -q -O"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
52 elseif executable("fetch")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
53 let g:netrw_http_cmd = "fetch -o"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
54 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
55 let g:netrw_http_cmd = ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
56 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
57 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
58 if !exists("g:netrw_dav_cmd")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
59 let g:netrw_dav_cmd = "cadaver"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
60 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
61 if !exists("g:netrw_rsync_cmd")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
62 let g:netrw_rsync_cmd = "rsync"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
63 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
64 if !exists("g:netrw_fetch_cmd")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
65 if executable("fetch")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
66 let g:netrw_fetch_cmd = "fetch -o"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
67 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
68 let g:netrw_fetch_cmd = ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
69 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
70 endif
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
71 if !exists("g:netrw_list_cmd")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
72 if executable("ssh")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
73 let g:netrw_list_cmd= "ssh HOSTNAME ls -Fa"
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
74 else
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
75 " call Decho("ssh is not executable, can't do netlist")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
76 let g:netrw_list_cmd= ""
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
77 endif
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
78 endif
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
79 if exists("g:netrw_silent") && g:netrw_silent != 0
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
80 let g:netrw_silentxfer= "silent "
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
81 else
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
82 let g:netrw_silentxfer= ""
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
83 endif
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
84
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
85
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
86 if has("win32")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
87 \ && exists("g:netrw_use_nt_rcp")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
88 \ && g:netrw_use_nt_rcp
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
89 \ && executable( $SystemRoot .'/system32/rcp.exe')
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
90 let s:netrw_has_nt_rcp = 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
91 let s:netrw_rcpmode = '-b'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
92 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
93 let s:netrw_has_nt_rcp = 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
94 let s:netrw_rcpmode = ''
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
95 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
96
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
97 " ---------------------------------------------------------------------
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
98 " Transparency Support: {{{1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
99 " Auto-detection for ftp://*, rcp://*, scp://*, sftp://*, http://*, dav://*,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
100 " and rsync://*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
101 " Should make file transfers across networks transparent. Currently I haven't
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
102 " supported appends. Hey, gotta leave something for a future <netrw.vim>!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
103 if version >= 600
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
104 augroup Network
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
105 au!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
106 if has("win32")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
107 au BufReadCmd file://* exe "doau BufReadPre ".expand("<afile>")|exe 'e '.substitute(expand("<afile>"),"file:/*","","")|exe "doau BufReadPost ".expand("<afile>")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
108 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
109 au BufReadCmd file:///* exe "doau BufReadPre ".expand("<afile>")|exe 'e /'.substitute(expand("<afile>"),"file:/*","","")|exe "doau BufReadPost ".expand("<afile>")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
110 au BufReadCmd file://localhost/* exe "doau BufReadPre ".expand("<afile>")|exe 'e /'.substitute(expand("<afile>"),"file:/*","","")|exe "doau BufReadPost ".expand("<afile>")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
111 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
112 au BufReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "doau BufReadPre ".expand("<afile>")|exe "Nread 0r ".expand("<afile>")|exe "doau BufReadPost ".expand("<afile>")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
113 au FileReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "doau BufReadPre ".expand("<afile>")|exe "Nread " .expand("<afile>")|exe "doau BufReadPost ".expand("<afile>")
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
114 au BufWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://* exe "Nwrite " .expand("<afile>")|call <SID>NetRestorePosn()
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
115 augroup END
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
116 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
117
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
118 " ------------------------------------------------------------------------
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
119 " Commands: :Nread, :Nwrite, and :NetUserPass {{{1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
120 com! -nargs=* Nread call <SID>NetSavePosn()<bar>call <SID>NetRead(<f-args>)<bar>call <SID>NetRestorePosn()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
121 com! -range=% -nargs=* Nwrite call <SID>NetSavePosn()<bar><line1>,<line2>call <SID>NetWrite(<f-args>)<bar>call <SID>NetRestorePosn()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
122 com! -nargs=* NetUserPass call NetUserPass(<f-args>)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
123
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
124 " ------------------------------------------------------------------------
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
125 " NetSavePosn: saves position of cursor on screen {{{1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
126 fun! s:NetSavePosn()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
127 " call Dfunc("NetSavePosn()")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
128 " Save current line and column
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
129 let s:netrw_winnr= winnr()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
130 let s:netrw_line = line(".")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
131 let s:netrw_col = virtcol(".")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
132
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
133 " Save top-of-screen line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
134 norm! H0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
135 let s:netrw_hline= line(".")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
136
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
137 call s:NetRestorePosn()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
138 " call Dret("NetSavePosn : winnr=".s:netrw_winnr." line=".s:netrw_line." col=".s:netrw_col." hline=".s:netrw_hline)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
139 endfun
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
140
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
141 " ------------------------------------------------------------------------
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
142 " NetRestorePosn: restores the cursor and file position as saved by NetSavePosn() {{{1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
143 fun! <SID>NetRestorePosn()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
144 " call Dfunc("NetRestorePosn() winnr=".s:netrw_winnr." line=".s:netrw_line." col=".s:netrw_col." hline=".s:netrw_hline)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
145
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
146 exe "silent! ".s:netrw_winnr."wincmd w"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
147 if v:shell_error == 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
148 " as suggested by Bram M: redraw on no error
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
149 " allows protocol error messages to remain visible
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
150 redraw!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
151 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
152 " restore top-of-screen line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
153 exe "norm! ".s:netrw_hline."G0z\<CR>"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
154 " restore position
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
155 exe "norm! ".s:netrw_line."G0".s:netrw_col."\<bar>"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
156
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
157 " call Dret("NetRestorePosn")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
158 endfun
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
159
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
160 " ------------------------------------------------------------------------
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
161 " NetRead: responsible for reading a file over the net {{{1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
162 fun! s:NetRead(...)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
163 " call Dfunc("NetRead(a:1<".a:1.">)")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
164
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
165 " save options
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
166 call s:NetOptionSave()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
167
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
168 " Special Exception: if a file is named "0r", then
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
169 " "0r" will be used to read the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
170 " following files instead of "r"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
171 if a:0 == 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
172 let readcmd= "r"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
173 let ichoice= 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
174 elseif a:1 == "0r"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
175 let readcmd = "0r"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
176 let ichoice = 2
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
177 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
178 let readcmd = "r"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
179 let ichoice = 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
180 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
181
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
182 " get name of a temporary file
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
183 let tmpfile= tempname()
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
184
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
185 " call Decho("ichoice=".ichoice." readcmd<".readcmd.">")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
186 while ichoice <= a:0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
187
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
188 " attempt to repeat with previous host-file-etc
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
189 if exists("b:netrw_lastfile") && a:0 == 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
190 " call Decho("using b:netrw_lastfile<" . b:netrw_lastfile . ">")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
191 let choice = b:netrw_lastfile
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
192 let ichoice= ichoice + 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
193
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
194 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
195 exe "let choice= a:" . ichoice
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
196 " call Decho("no lastfile: choice<" . choice . ">")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
197
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
198 " Reconstruct Choice if choice starts with '"'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
199 if match(choice,"?") == 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
200 echo 'NetRead Usage:'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
201 echo ':Nread machine:path uses rcp'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
202 echo ':Nread "machine path" uses ftp with <.netrc>'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
203 echo ':Nread "machine id password path" uses ftp'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
204 echo ':Nread dav://machine[:port]/path uses cadaver'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
205 echo ':Nread fetch://machine/path uses fetch'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
206 echo ':Nread ftp://[user@]machine[:port]/path uses ftp autodetects <.netrc>'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
207 echo ':Nread http://[user@]machine/path uses http wget'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
208 echo ':Nread rcp://[user@]machine/path uses rcp'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
209 echo ':Nread rsync://machine[:port]/path uses rsync'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
210 echo ':Nread scp://[user@]machine[[:#]port]/path uses scp'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
211 echo ':Nread sftp://[user@]machine[[:#]port]/path uses sftp'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
212 break
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
213 elseif match(choice,"^\"") != -1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
214 " call Decho("reconstructing choice")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
215 if match(choice,"\"$") != -1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
216 " case "..."
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
217 let choice=strpart(choice,1,strlen(choice)-2)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
218 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
219 " case "... ... ..."
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
220 let choice = strpart(choice,1,strlen(choice)-1)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
221 let wholechoice = ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
222
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
223 while match(choice,"\"$") == -1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
224 let wholechoice = wholechoice . " " . choice
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
225 let ichoice = ichoice + 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
226 if ichoice > a:0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
227 echoerr "Unbalanced string in filename '". wholechoice ."'"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
228 " call Dret("NetRead")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
229 return
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
230 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
231 let choice= a:{ichoice}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
232 endwhile
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
233 let choice= strpart(wholechoice,1,strlen(wholechoice)-1) . " " . strpart(choice,0,strlen(choice)-1)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
234 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
235 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
236 endif
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
237 " call Decho("choice<" . choice . ">")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
238 let ichoice= ichoice + 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
239
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
240 " fix up windows urls
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
241 if has("win32")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
242 let choice = substitute(choice,'\\','/','ge')
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
243 " call Decho("fixing up windows url to <".choice."> tmpfile<".tmpfile)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
244 exe 'lcd ' . fnamemodify(tmpfile,':h')
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
245 let tmpfile = fnamemodify(tmpfile,':t')
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
246 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
247
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
248 " Determine method of read (ftp, rcp, etc)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
249 call s:NetMethod(choice)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
250
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
251 " Check if NetList() should be handling this request
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
252 " call Decho("checking if netlist: choice<".choice."> netrw_list_cmd<".g:netrw_list_cmd.">")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
253 if choice =~ "^.*/$"
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
254 if strlen(g:netrw_list_cmd) > 0
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
255 call s:NetList(choice)
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
256 " call Dret("NetRead")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
257 else
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
258 echoerr "sorry, can't do a remote listing; ssh isn't executable"
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
259 endif
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
260 return
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
261 endif
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
262
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
263 " ============
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
264 " Perform Read
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
265 " ============
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
266
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
267 ".........................................
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
268 " rcp: NetRead Method #1
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
269 if b:netrw_method == 1 " read with rcp
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
270 " call Decho("read via rcp (method #1)")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
271 " ER: noting done with g:netrw_uid yet?
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
272 " ER: on Win2K" rcp machine[.user]:file tmpfile
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
273 " ER: if machine contains '.' adding .user is required (use $USERNAME)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
274 " ER: the tmpfile is full path: rcp sees C:\... as host C
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
275 if s:netrw_has_nt_rcp == 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
276 if exists("g:netrw_uid") && ( g:netrw_uid != "" )
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
277 let uid_machine = g:netrw_machine .'.'. g:netrw_uid
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
278 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
279 " Any way needed it machine contains a '.'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
280 let uid_machine = g:netrw_machine .'.'. $USERNAME
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
281 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
282 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
283 if exists("g:netrw_uid") && ( g:netrw_uid != "" )
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
284 let uid_machine = g:netrw_uid .'@'. g:netrw_machine
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
285 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
286 let uid_machine = g:netrw_machine
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
287 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
288 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
289 " call Decho("executing: !".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".uid_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile)
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
290 exe g:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".uid_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
291 let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
292 let b:netrw_lastfile = choice
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
293
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
294 ".........................................
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
295 " ftp + <.netrc>: NetRead Method #2
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
296 elseif b:netrw_method == 2 " read with ftp + <.netrc>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
297 " call Decho("read via ftp+.netrc (method #2)")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
298 let netrw_fname= b:netrw_fname
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
299 new
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
300 set ff=unix
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
301 exe "put ='".g:netrw_ftpmode."'"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
302 exe "put ='get ".netrw_fname." ".tmpfile."'"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
303 if exists("g:netrw_port") && g:netrw_port != ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
304 " call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port)
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
305 exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
306 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
307 " call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine)
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
308 exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
309 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
310 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
311 if getline(1) !~ "^$"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
312 echoerr getline(1)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
313 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
314 bd!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
315 let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
316 let b:netrw_lastfile = choice
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
317
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
318 ".........................................
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
319 " ftp + machine,id,passwd,filename: NetRead Method #3
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
320 elseif b:netrw_method == 3 " read with ftp + machine, id, passwd, and fname
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
321 " Construct execution string (four lines) which will be passed through filter
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
322 " call Decho("read via ftp+mipf (method #3)")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
323 let netrw_fname= b:netrw_fname
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
324 new
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
325 set ff=unix
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
326 if exists("g:netrw_port") && g:netrw_port != ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
327 put ='open '.g:netrw_machine.' '.g:netrw_port
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
328 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
329 put ='open '.g:netrw_machine
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
330 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
331
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
332 if exists("g:netrw_ftp") && g:netrw_ftp == 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
333 put =g:netrw_uid
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
334 put =g:netrw_passwd
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
335 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
336 put ='user '.g:netrw_uid.' '.g:netrw_passwd
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
337 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
338
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
339 if exists("g:netrw_ftpmode") && g:netrw_ftpmode != ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
340 put =g:netrw_ftpmode
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
341 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
342 put ='get '.netrw_fname.' '.tmpfile
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
343
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
344 " perform ftp:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
345 " -i : turns off interactive prompting from ftp
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
346 " -n unix : DON'T use <.netrc>, even though it exists
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
347 " -n win32: quit being obnoxious about password
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
348 " call Decho('performing ftp -i -n')
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
349 norm 1Gdd
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
350 " call Decho("executing: %!".g:netrw_ftp_cmd." -i -n")
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
351 exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n"
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
352 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
353 if getline(1) !~ "^$"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
354 echoerr getline(1)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
355 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
356 bd!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
357 let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
358 let b:netrw_lastfile = choice
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
359
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
360 ".........................................
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
361 " scp: NetRead Method #4
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
362 elseif b:netrw_method == 4 " read with scp
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
363 " call Decho("read via scp (method #4)")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
364 if exists("g:netrw_port") && g:netrw_port != ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
365 let useport= " -P ".g:netrw_port
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
366 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
367 let useport= ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
368 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
369 if g:netrw_cygwin == 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
370 let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e')
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
371 " call Decho("executing: !".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile)
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
372 exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
373 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
374 " call Decho("executing: !".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile)
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
375 exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
376 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
377 let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
378 let b:netrw_lastfile = choice
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
379
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
380 ".........................................
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
381 elseif b:netrw_method == 5 " read with http (wget)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
382 " call Decho("read via http (method #5)")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
383 if g:netrw_http_cmd == ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
384 echoerr "neither wget nor fetch command is available"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
385 exit
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
386 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
387
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
388 if match(b:netrw_fname,"#") == -1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
389 " simple wget
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
390 " call Decho("executing: !".g:netrw_http_cmd." ".tmpfile." http://".g:netrw_machine.escape(b:netrw_fname,' ?&'))
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
391 exe g:netrw_silentxfer."!".g:netrw_http_cmd." ".tmpfile." http://".g:netrw_machine.escape(b:netrw_fname,' ?&')
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
392 let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
393
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
394 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
395 " wget plus a jump to an in-page marker (ie. http://abc/def.html#aMarker)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
396 let netrw_html= substitute(b:netrw_fname,"#.*$","","")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
397 let netrw_tag = substitute(b:netrw_fname,"^.*#","","")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
398 " call Decho("netrw_html<".netrw_html.">")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
399 " call Decho("netrw_tag <".netrw_tag.">")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
400 " call Decho("executing: !".g:netrw_http_cmd." ".tmpfile." http://".g:netrw_machine.netrw_html)
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
401 exe g:netrw_silentxfer."!".g:netrw_http_cmd." ".tmpfile." http://".g:netrw_machine.netrw_html
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
402 let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
403 " call Decho('<\s*a\s*name=\s*"'.netrw_tag.'"/')
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
404 exe 'norm! 1G/<\s*a\s*name=\s*"'.netrw_tag.'"/'."\<CR>"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
405 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
406 let b:netrw_lastfile = choice
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
407
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
408 ".........................................
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
409 " cadaver: NetRead Method #6
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
410 elseif b:netrw_method == 6 " read with cadaver
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
411 " call Decho("read via cadaver (method #6)")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
412
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
413 " Construct execution string (four lines) which will be passed through filter
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
414 let netrw_fname= b:netrw_fname
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
415 new
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
416 set ff=unix
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
417 if exists("g:netrw_port") && g:netrw_port != ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
418 put ='open '.g:netrw_machine.' '.g:netrw_port
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
419 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
420 put ='open '.g:netrw_machine
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
421 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
422 put ='user '.g:netrw_uid.' '.g:netrw_passwd
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
423
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
424 if g:netrw_cygwin == 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
425 let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e')
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
426 put ='get '.netrw_fname.' '.cygtmpfile
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
427 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
428 put ='get '.netrw_fname.' '.tmpfile
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
429 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
430
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
431 " perform cadaver operation:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
432 norm 1Gdd
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
433 " call Decho("executing: %!".g:netrw_dav_cmd)
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
434 exe g:netrw_silentxfer."%!".g:netrw_dav_cmd
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
435 bd!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
436 let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
437 let b:netrw_lastfile = choice
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
438
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
439 ".........................................
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
440 " rsync: NetRead Method #7
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
441 elseif b:netrw_method == 7 " read with rsync
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
442 " call Decho("read via rsync (method #7)")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
443 if g:netrw_cygwin == 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
444 let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e')
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
445 " call Decho("executing: !".g:netrw_rsync_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile)
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
446 exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
447 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
448 " call Decho("executing: !".g:netrw_rsync_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile)
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
449 exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
450 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
451 let result = s:NetGetFile(readcmd,tmpfile, b:netrw_method)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
452 let b:netrw_lastfile = choice
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
453
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
454 ".........................................
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
455 " fetch: NetRead Method #8
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
456 " fetch://[user@]host[:http]/path
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
457 elseif b:netrw_method == 8 " read with fetch
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
458 if g:netrw_fetch_cmd == ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
459 echoerr "fetch command not available"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
460 exit
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
461 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
462 if exists("g:netrw_option") && g:netrw_option == ":http"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
463 let netrw_option= "http"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
464 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
465 let netrw_option= "ftp"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
466 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
467 " call Decho("read via fetch for ".netrw_option)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
468
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
469 if exists("g:netrw_uid") && g:netrw_uid != "" && exists("g:netrw_passwd") && g:netrw_passwd != ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
470 " call Decho("executing: !".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_uid.':'.g:netrw_passwd.'@'.g:netrw_machine."/".escape(b:netrw_fname,' ?&'))
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
471 exe g:netrw_silentxfer."!".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_uid.':'.g:netrw_passwd.'@'.g:netrw_machine."/".escape(b:netrw_fname,' ?&')
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
472 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
473 " call Decho("executing: !".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_machine."/".escape(b:netrw_fname,' ?&'))
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
474 exe g:netrw_silentxfer."!".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_machine."/".escape(b:netrw_fname,' ?&')
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
475 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
476
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
477 let result = s:NetGetFile(readcmd,tmpfile, b:netrw_method)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
478 let b:netrw_lastfile = choice
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
479
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
480 ".........................................
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
481 " sftp: NetRead Method #9
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
482 elseif b:netrw_method == 9 " read with sftp
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
483 " call Decho("read via sftp (method #4)")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
484 if g:netrw_cygwin == 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
485 let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e')
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
486 " call Decho("!".g:netrw_sftp_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
487 " call Decho("executing: !".g:netrw_sftp_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
488 exe "!".g:netrw_sftp_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
489 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
490 " call Decho("executing: !".g:netrw_sftp_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile)
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
491 exe g:netrw_silentxfer."!".g:netrw_sftp_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
492 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
493 let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
494 let b:netrw_lastfile = choice
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
495
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
496 ".........................................
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
497 else " Complain
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
498 echo "***warning*** unable to comply with your request<" . choice . ">"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
499 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
500 endwhile
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
501
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
502 " cleanup
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
503 " call Decho("cleanup")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
504 if exists("b:netrw_method")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
505 unlet b:netrw_method
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
506 unlet g:netrw_machine
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
507 unlet b:netrw_fname
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
508 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
509 call s:NetOptionRestore()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
510
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
511 " call Dret("NetRead")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
512 endfun
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
513 " end of NetRead
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
514
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
515 " ------------------------------------------------------------------------
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
516 " NetGetFile: Function to read file "fname" with command "readcmd". {{{1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
517 fun! s:NetGetFile(readcmd, fname, method)
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
518 "" call Dfunc("NetGetFile(readcmd<".a:readcmd.">,fname<".a:fname."> method<".a:method.">)")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
519
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
520 if exists("*NetReadFixup")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
521 " for the use of NetReadFixup (not otherwise used internally)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
522 let line2= line("$")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
523 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
524
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
525 " transform paths from / to \ for Windows, unless the shell is bash
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
526 if &term == "win32"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
527 if &shell == "bash"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
528 let fname=a:fname
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
529 "" call Decho("(win32 && bash) fname<".fname.">")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
530 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
531 let fname=substitute(a:fname,'/','\\\\','ge')
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
532 "" call Decho("(win32 && !bash) fname<".fname.">")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
533 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
534 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
535 let fname= a:fname
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
536 "" call Decho("(copied) fname<".fname.">")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
537 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
538
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
539 " get the file, but disable undo when reading a new buffer
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
540 if a:readcmd[0] == '0'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
541 let use_e_cmd = 0 " 1 when using ':edit'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
542 let delline = 0 " 1 when have to delete empty last line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
543 if line("$") == 1 && getline(1) == ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
544 " Now being asked to 0r a file into an empty file.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
545 " Safe to :e it instead, unless there is another window on the same buffer.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
546 let curbufnr = bufnr("%")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
547 let use_e_cmd = 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
548 let delline = 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
549 " Loop over all windows,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
550 " reset use_e_cmd when another one is editing the current buffer.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
551 let i = 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
552 while 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
553 if i != winnr() && winbufnr(i) == curbufnr
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
554 let use_e_cmd = 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
555 break
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
556 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
557 let i = i + 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
558 if winbufnr(i) < 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
559 break
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
560 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
561 endwhile
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
562 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
563
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
564 if use_e_cmd > 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
565 " ':edit' the temp file, wipe out the old buffer and rename the buffer
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
566 let curfilename = expand("%")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
567
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
568 let binlocal = &l:bin
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
569 let binglobal = &g:bin
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
570 if binlocal
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
571 setglobal bin " Need to set 'bin' globally for ":e" command.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
572 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
573 silent exe "e! ".v:cmdarg." ".fname
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
574 if binlocal && !binglobal
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
575 setglobal nobin
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
576 setlocal bin
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
577 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
578
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
579 exe curbufnr . "bwipe!"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
580 exe "f ".curfilename
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
581 " the ":f newname" apparently leaves the temporary file as the alternate
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
582 " file in the buffer list (see :ls!). The following command wipes it out.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
583 exe bufnr("#")."bwipe!"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
584 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
585 let oldul= &ul
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
586 set ul=-1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
587 exe a:readcmd." ".v:cmdarg." ".fname
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
588 if delline > 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
589 " wipe out last line, which should be a blank line anyway
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
590 $del
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
591 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
592 let &ul= oldul
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
593 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
594 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
595 exe a:readcmd." ".v:cmdarg." ".fname
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
596 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
597
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
598 " User-provided (ie. optional) fix-it-up command
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
599 if exists("*NetReadFixup")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
600 let line1= line(".")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
601 if a:readcmd == "r"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
602 let line2= line("$") - line2 + line1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
603 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
604 let line2= line("$") - line2
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
605 endif
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
606 "" call Decho("calling NetReadFixup(method<".a:method."> line1=".line1." line2=".line2.")")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
607 call NetReadFixup(a:method, line1, line2)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
608 endif
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
609 "" call Decho("readcmd<".a:readcmd."> cmdarg<".v:cmdarg."> fname<".a:fname."> readable=".filereadable(a:fname))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
610
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
611 " insure that we have the right filetype and that its being displayed
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
612 filetype detect
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
613 redraw!
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
614 "" call Dret("NetGetFile")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
615 endfun
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
616
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
617 " ------------------------------------------------------------------------
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
618 " NetWrite: responsible for writing a file over the net {{{1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
619 fun! s:NetWrite(...) range
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
620 "" call Dfunc("NetWrite(a:0=".a:0.")")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
621
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
622 " option handling
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
623 let mod= 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
624 call s:NetOptionSave()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
625
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
626 " Get Temporary Filename
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
627 let tmpfile= tempname()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
628
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
629 if a:0 == 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
630 let ichoice = 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
631 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
632 let ichoice = 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
633 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
634
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
635 " write (selected portion of) file to temporary
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
636 silent exe a:firstline."," . a:lastline . "w! ".v:cmdarg." ".tmpfile
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
637
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
638 while ichoice <= a:0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
639
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
640 " attempt to repeat with previous host-file-etc
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
641 if exists("b:netrw_lastfile") && a:0 == 0
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
642 "" call Decho("using b:netrw_lastfile<" . b:netrw_lastfile . ">")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
643 let choice = b:netrw_lastfile
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
644 let ichoice= ichoice + 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
645 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
646 exe "let choice= a:" . ichoice
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
647
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
648 " Reconstruct Choice if choice starts with '"'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
649 if match(choice,"?") == 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
650 echo 'NetWrite Usage:"'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
651 echo ':Nwrite machine:path uses rcp'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
652 echo ':Nwrite "machine path" uses ftp with <.netrc>'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
653 echo ':Nwrite "machine id password path" uses ftp'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
654 echo ':Nwrite dav://[user@]machine/path uses cadaver'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
655 echo ':Nwrite fetch://[user@]machine/path uses fetch'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
656 echo ':Nwrite ftp://machine[#port]/path uses ftp (autodetects <.netrc>)'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
657 echo ':Nwrite rcp://machine/path uses rcp'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
658 echo ':Nwrite rsync://[user@]machine/path uses rsync'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
659 echo ':Nwrite scp://[user@]machine[[:#]port]/path uses scp'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
660 echo ':Nwrite sftp://[user@]machine/path uses sftp'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
661 break
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
662
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
663 elseif match(choice,"^\"") != -1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
664 if match(choice,"\"$") != -1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
665 " case "..."
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
666 let choice=strpart(choice,1,strlen(choice)-2)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
667 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
668 " case "... ... ..."
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
669 let choice = strpart(choice,1,strlen(choice)-1)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
670 let wholechoice = ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
671
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
672 while match(choice,"\"$") == -1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
673 let wholechoice= wholechoice . " " . choice
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
674 let ichoice = ichoice + 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
675 if choice > a:0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
676 echoerr "Unbalanced string in filename '". wholechoice ."'"
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
677 "" call Dret("NetWrite")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
678 return
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
679 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
680 let choice= a:{ichoice}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
681 endwhile
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
682 let choice= strpart(wholechoice,1,strlen(wholechoice)-1) . " " . strpart(choice,0,strlen(choice)-1)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
683 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
684 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
685 endif
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
686 "" call Decho("choice<" . choice . ">")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
687 let ichoice= ichoice + 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
688
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
689 " fix up windows urls
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
690 if has("win32")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
691 let choice= substitute(choice,'\\','/','ge')
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
692 "ER: see NetRead()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
693 exe 'lcd ' . fnamemodify(tmpfile,':h')
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
694 let tmpfile = fnamemodify(tmpfile,':t')
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
695 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
696
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
697 " Determine method of read (ftp, rcp, etc)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
698 call s:NetMethod(choice)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
699
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
700 " =============
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
701 " Perform Write
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
702 " =============
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
703
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
704 ".........................................
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
705 " rcp: NetWrite Method #1
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
706 if b:netrw_method == 1 " write with rcp
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
707 "" Decho "write via rcp (method #1)"
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
708 if s:netrw_has_nt_rcp == 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
709 if exists("g:netrw_uid") && ( g:netrw_uid != "" )
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
710 let uid_machine = g:netrw_machine .'.'. g:netrw_uid
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
711 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
712 let uid_machine = g:netrw_machine .'.'. $USERNAME
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
713 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
714 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
715 if exists("g:netrw_uid") && ( g:netrw_uid != "" )
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
716 let uid_machine = g:netrw_uid .'@'. g:netrw_machine
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
717 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
718 let uid_machine = g:netrw_machine
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
719 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
720 endif
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
721 "" call Decho("executing: !".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".tmpfile." ".uid_machine.":".escape(b:netrw_fname,' ?&'))
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
722 exe g:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".tmpfile." ".uid_machine.":".escape(b:netrw_fname,' ?&')
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
723 let b:netrw_lastfile = choice
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
724
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
725 ".........................................
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
726 " ftp + <.netrc>: NetWrite Method #2
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
727 elseif b:netrw_method == 2 " write with ftp + <.netrc>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
728 let netrw_fname = b:netrw_fname
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
729 new
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
730 set ff=unix
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
731 exe "put ='".g:netrw_ftpmode."'"
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
732 "" call Decho(" NetWrite: put ='".g:netrw_ftpmode."'")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
733 exe "put ='put ".tmpfile." ".netrw_fname."'"
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
734 "" call Decho("put ='put ".tmpfile." ".netrw_fname."'")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
735 if exists("g:netrw_port") && g:netrw_port != ""
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
736 "" call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port)
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
737 exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
738 else
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
739 "" call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine)
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
740 exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
741 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
742 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
743 if getline(1) !~ "^$"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
744 echoerr getline(1)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
745 let mod=1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
746 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
747 bd!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
748 let b:netrw_lastfile = choice
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
749
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
750 ".........................................
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
751 " ftp + machine, id, passwd, filename: NetWrite Method #3
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
752 elseif b:netrw_method == 3 " write with ftp + machine, id, passwd, and fname
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
753 let netrw_fname= b:netrw_fname
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
754 new
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
755 set ff=unix
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
756 if exists("g:netrw_port") && g:netrw_port != ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
757 put ='open '.g:netrw_machine.' '.g:netrw_port
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
758 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
759 put ='open '.g:netrw_machine
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
760 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
761 if exists("g:netrw_ftp") && g:netrw_ftp == 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
762 put =g:netrw_uid
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
763 put =g:netrw_passwd
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
764 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
765 put ='user '.g:netrw_uid.' '.g:netrw_passwd
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
766 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
767 put ='put '.tmpfile.' '.netrw_fname
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
768 " save choice/id/password for future use
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
769 let b:netrw_lastfile = choice
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
770
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
771 " perform ftp:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
772 " -i : turns off interactive prompting from ftp
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
773 " -n unix : DON'T use <.netrc>, even though it exists
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
774 " -n win32: quit being obnoxious about password
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
775 "" call Decho('performing ftp -i -n')
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
776 norm 1Gdd
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
777 "" call Decho("executing: %!".g:netrw_ftp_cmd." -i -n")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
778 exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n"
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
779 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
780 if getline(1) !~ "^$"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
781 echoerr getline(1)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
782 let mod=1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
783 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
784 bd!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
785
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
786 ".........................................
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
787 " scp: NetWrite Method #4
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
788 elseif b:netrw_method == 4 " write with scp
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
789 if exists("g:netrw_port") && g:netrw_port != ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
790 let useport= " -P ".g:netrw_port
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
791 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
792 let useport= ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
793 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
794 if g:netrw_cygwin == 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
795 let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e')
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
796 "" call Decho("executing: !".g:netrw_scp_cmd.useport." ".cygtmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&'))
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
797 exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".cygtmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
798 else
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
799 "" call Decho("executing: !".g:netrw_scp_cmd.useport." ".tmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&'))
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
800 exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".tmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
801 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
802 let b:netrw_lastfile = choice
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
803
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
804 ".........................................
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
805 " http: NetWrite Method #5
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
806 elseif b:netrw_method == 5
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
807 echoerr "***warning*** currently <netrw.vim> does not support writing using http:"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
808
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
809 ".........................................
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
810 " dav: NetWrite Method #6
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
811 elseif b:netrw_method == 6 " write with cadaver
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
812 "" call Decho("write via cadaver (method #6)")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
813
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
814 " Construct execution string (four lines) which will be passed through filter
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
815 let netrw_fname= b:netrw_fname
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
816 new
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
817 set ff=unix
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
818 if exists("g:netrw_port") && g:netrw_port != ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
819 put ='open '.g:netrw_machine.' '.g:netrw_port
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
820 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
821 put ='open '.g:netrw_machine
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
822 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
823 put ='user '.g:netrw_uid.' '.g:netrw_passwd
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
824
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
825 if g:netrw_cygwin == 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
826 let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e')
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
827 put ='put '.cygtmpfile.' '.netrw_fname
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
828 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
829 put ='put '.tmpfile.' '.netrw_fname
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
830 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
831
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
832 " perform cadaver operation:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
833 norm 1Gdd
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
834 "" call Decho("executing: %!".g:netrw_dav_cmd)
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
835 exe g:netrw_silentxfer."%!".g:netrw_dav_cmd
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
836 bd!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
837 let b:netrw_lastfile = choice
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
838
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
839 ".........................................
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
840 " rsync: NetWrite Method #7
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
841 elseif b:netrw_method == 7 " write with rsync
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
842 if g:netrw_cygwin == 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
843 let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e')
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
844 "" call Decho("executing: !".g:netrw_rsync_cmd." ".cygtmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&'))
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
845 exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".cygtmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
846 else
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
847 "" call Decho("executing: !".g:netrw_rsync_cmd." ".tmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&'))
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
848 exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".tmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
849 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
850 let b:netrw_lastfile = choice
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
851
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
852 ".........................................
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
853 " scp: NetWrite Method #9
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
854 elseif b:netrw_method == 9 " write with sftp
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
855 let netrw_fname= b:netrw_fname
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
856 if exists("g:netrw_uid") && ( g:netrw_uid != "" )
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
857 let uid_machine = g:netrw_uid .'@'. g:netrw_machine
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
858 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
859 let uid_machine = g:netrw_machine
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
860 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
861 new
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
862 set ff=unix
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
863 put ='put '.tmpfile.' '.netrw_fname
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
864 norm 1Gdd
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
865 "" call Decho("executing: %!".g:netrw_sftp_cmd.' '.uid_machine)
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
866 exe g:netrw_silentxfer."%!".g:netrw_sftp_cmd.' '.uid_machine
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
867 bd!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
868 let b:netrw_lastfile= choice
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
869
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
870 ".........................................
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
871 else " Complain
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
872 echo "***warning*** unable to comply with your request<" . choice . ">"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
873 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
874 endwhile
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
875
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
876 " cleanup
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
877 "" call Decho("cleanup")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
878 let result=delete(tmpfile)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
879 call s:NetOptionRestore()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
880
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
881 if a:firstline == 1 && a:lastline == line("$")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
882 let &mod= mod " usually equivalent to set nomod
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
883 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
884
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
885 "" call Dret("NetWrite")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
886 endfun
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
887 " end of NetWrite
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
888
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
889 " ------------------------------------------------------------------------
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
890 " NetList: This function uses the command in g:netrw_list_cmd to get a list {{{1
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
891 " of the contents of a remote directory. It is assumed that the
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
892 " g:netrw_list_cmd has a string, HOSTNAME, that needs to be substituted
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
893 " with the requested remote hostname first.
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
894 fun! <SID>NetList(dirname)
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
895 "" call Dfunc("NetList(dirname<".a:dirname.">)")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
896
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
897 " sanity maintenance
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
898 let dirname= a:dirname
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
899 if dirname !~ '/$' && (!exists("g:netrw_machine") || !exists("b:netlist_method") || !exists("b:netlist_path"))
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
900 let dirname= dirname."/"
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
901 endif
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
902 set ma
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
903
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
904 if dirname !~ '/$' && dirname !~ '^"'
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
905 " looks like a regular file, attempt transfer
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
906 "" call Decho("attempt transfer with regular file<".dirname.">")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
907 "" call Decho("netlist method<".b:netlist_method."> cmd<".b:netlist_cmd."> path<".b:netlist_path.">")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
908 %d
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
909
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
910 " remove any filetype indicator from end of dirname, except for the
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
911 " "this is a directory" indicator (/)
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
912 let dirname= substitute(dirname,"[*=@|]$","","e")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
913 "" call Decho("modified dirname<".dirname.">")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
914
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
915 " remote-read the requested file into current buffer
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
916 let machine= g:netrw_machine
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
917 let method = b:netlist_method
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
918 let path = b:netlist_path
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
919 enew!
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
920 exe "file ".method."://".machine."/".path.dirname
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
921 exe "doau BufReadPre ".dirname
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
922 silent call s:NetRead(method."://".machine."/".path.dirname)
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
923 exe "doau BufReadPost ".dirname
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
924 1d
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
925 set nomod noma
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
926
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
927 silent! unlet b:netlist_method
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
928 silent! unlet b:netlist_cmd
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
929 silent! unlet b:netlist_path
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
930 "" call Dret("NetList")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
931 return
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
932
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
933 elseif dirname == './'
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
934 " refresh the directory list
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
935 "" call Decho("refresh directory listing")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
936 "" call Decho("netlist method<".b:netlist_method."> cmd<".b:netlist_cmd."> path<".b:netlist_path.">")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
937 %d
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
938
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
939 elseif dirname == '../'
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
940 " go up one directory
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
941
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
942 if b:netlist_path !~ '/' && strlen(b:netlist_path) > 0
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
943 " go to top (rltv) directory
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
944 "" call Decho("go up one directory : 1 path<".b:netlist_path.">")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
945 let b:netlist_path= ""
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
946
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
947 elseif b:netlist_path !~ '^[./]\+$' && strlen(b:netlist_path) > 0
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
948 " remove a directory from the netlist_path
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
949 "" call Decho("go up one directory : 2 path<".b:netlist_path.">")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
950 if b:netlist_path =~ '^[^/]*/$'
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
951 let b:netlist_path= ""
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
952 else
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
953 let b:netlist_path= substitute(b:netlist_path,'^\(.*/\)[^/]*/$','\1','')
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
954 endif
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
955
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
956 else
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
957 " append ../
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
958 "" call Decho("go up one directory : 3 path<".b:netlist_path.">")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
959 let b:netlist_path= b:netlist_path.'../'
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
960 endif
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
961 "" call Decho("netlist method<".b:netlist_method."> cmd<".b:netlist_cmd."> path<".b:netlist_path.">")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
962 %d
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
963
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
964 elseif dirname !~ '^\w\+:' && dirname =~ '/$'
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
965 " go down one directory
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
966 "" call Decho("go down one directory<".dirname.">")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
967 let b:netlist_path=b:netlist_path.dirname
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
968 "" call Decho("netlist method<".b:netlist_method."> cmd<".b:netlist_cmd."> path<".b:netlist_path.">")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
969 %d
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
970
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
971 else
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
972 " normal initial directory listing
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
973 "" call Decho("normal initial directory listing")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
974
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
975 let listcmd = substitute(g:netrw_list_cmd,'\<HOSTNAME\>',g:netrw_machine,'')
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
976 let method = substitute(dirname,'^\(\w\+\):.*$','\1','')
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
977 let fname = b:netrw_fname
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
978 "" call Decho("set up listcmd<".listcmd.">")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
979 "" call Decho("set up method <".method.">")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
980 "" call Decho("set up fname <".fname.">")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
981
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
982 " set up window
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
983 if &mod == 1
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
984 wincmd s
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
985 endif
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
986 enew!
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
987 if v:version >= 602
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
988 setlocal bh=wipe
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
989 endif
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
990
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
991 " set up buffer-local variables
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
992 let b:netlist_method = method
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
993 let b:netlist_cmd = listcmd
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
994 let b:netlist_path = fname
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
995
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
996 " set up buffer-local map
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
997 nnoremap <buffer> <cr> :call <SID>NetList(expand("<cWORD>"))<cr>
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
998
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
999 "" call Decho("netlist method<".b:netlist_method."> cmd<".b:netlist_cmd."> path<".b:netlist_path.">")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1000 endif
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1001
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1002 "" call Decho("executing: r! ".b:netlist_cmd." '".b:netlist_path."'")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1003 put ='\" =============================='
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1004 put ='\" Netrw Remote Directory Listing'
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1005 put ='\" '.g:netrw_machine.':'.b:netlist_path
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1006 put ='\" =============================='
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1007 exe "silent r! ".b:netlist_cmd." '".b:netlist_path."'"
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1008 1d
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1009 set ft=netrwlist
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1010 silent 5,$s/^\(.*\)\/$/ \1/e
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1011 silent 5,$call s:NetSort()
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1012 silent 5,$s/^ \(.*\)$/\1\//e
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1013 5
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1014 exe 'file ['.g:netrw_machine.':'.b:netlist_path.']'
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1015 if v:version >= 602
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1016 setlocal nomod bh=wipe bt=nofile nobl noma
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1017 else
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1018 setlocal nomod
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1019 endif
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1020
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1021 "" call Dret("NetList")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1022 endfun
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1023
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1024 " ------------------------------------------------------------------------
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1025 " NetMethod: determine method of transfer {{{1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1026 " method == 1: rcp
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1027 " 2: ftp + <.netrc>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1028 " 3: ftp + machine, id, password, and [path]filename
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1029 " 4: scp
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1030 " 5: http (wget)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1031 " 6: cadaver
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1032 " 7: rsync
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1033 " 8: fetch
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1034 " 9: sftp
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1035 fun! s:NetMethod(choice) " globals: method machine id passwd fname
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1036 "" call Dfunc("NetMethod(a:choice<".a:choice.">)")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1037
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1038 " initialization
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1039 let b:netrw_method = 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1040 let g:netrw_machine = ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1041 let b:netrw_fname = ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1042 let g:netrw_port = ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1043
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1044 " Patterns:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1045 " mipf : a:machine a:id password filename Use ftp
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1046 " mf : a:machine filename Use ftp + <.netrc> or g:netrw_uid g:netrw_passwd
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1047 " ftpurm : ftp://[user@]host[[#:]port]/filename Use ftp + <.netrc> or g:netrw_uid g:netrw_passwd
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1048 " rcpurm : rcp://[user@]host/filename Use rcp
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1049 " rcphf : [user@]host:filename Use rcp
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1050 " scpurm : scp://[user@]host[[#:]port]/filename Use scp
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1051 " httpurm : http://[user@]host/filename Use wget
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1052 " davurm : dav://host[:port]/path Use cadaver
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1053 " rsyncurm : rsync://host[:port]/path Use rsync
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1054 " fetchurm : fetch://[user@]host[:http]/filename Use fetch (defaults to ftp, override for http)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1055 " sftpurm : sftp://[user@]host/filename Use scp
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1056 let mipf = '^\(\S\+\)\s\+\(\S\+\)\s\+\(\S\+\)\s\+\(\S\+\)$'
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1057 let mf = '^\(\S\+\)\s\+\(\S\+\)$'
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1058 let ftpurm = '^ftp://\(\([^/@]\{-}\)@\)\=\([^/#:]\{-}\)\([#:]\d\+\)\=/\(.*\)$'
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1059 let rcpurm = '^rcp://\(\([^/@]\{-}\)@\)\=\([^/]\{-}\)/\(.*\)$'
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1060 let rcphf = '^\(\(\h\w*\)@\)\=\(\h\w*\):\([^@]\+\)$'
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1061 let scpurm = '^scp://\([^/]\{-}\)\([#:]\d\+\)\=/\(.*\)$'
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1062 let httpurm = '^http://\([^/]\{-}\)\(/.*\)\=$'
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1063 let davurm = '^dav://\([^/]\{-}\)/\(.*\)\=$'
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1064 let rsyncurm = '^rsync://\([^/]\{-}\)/\(.*\)\=$'
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1065 let fetchurm = '^fetch://\(\([^/@]\{-}\)@\)\=\([^/#:]\{-}\)\(:http\)\=/\(.*\)$'
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1066 let sftpurm = '^sftp://\([^/]\{-}\)/\(.*\)\=$'
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1067
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1068 "" call Decho("determine method:")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1069 " Determine Method
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1070 " rcp://user@hostname/...path-to-file
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1071 if match(a:choice,rcpurm) == 0
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1072 "" call Decho("rcp://...")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1073 let b:netrw_method = 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1074 let userid = substitute(a:choice,rcpurm,'\2',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1075 let g:netrw_machine= substitute(a:choice,rcpurm,'\3',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1076 let b:netrw_fname = substitute(a:choice,rcpurm,'\4',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1077 if userid != ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1078 let g:netrw_uid= userid
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1079 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1080
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1081 " scp://user@hostname/...path-to-file
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1082 elseif match(a:choice,scpurm) == 0
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1083 "" call Decho("scp://...")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1084 let b:netrw_method = 4
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1085 let g:netrw_machine= substitute(a:choice,scpurm,'\1',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1086 let b:netrw_port = substitute(a:choice,scpurm,'\2',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1087 let b:netrw_fname = substitute(a:choice,scpurm,'\3',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1088
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1089 " http://user@hostname/...path-to-file
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1090 elseif match(a:choice,httpurm) == 0
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1091 "" call Decho("http://...")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1092 let b:netrw_method = 5
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1093 let g:netrw_machine= substitute(a:choice,httpurm,'\1',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1094 let b:netrw_fname = substitute(a:choice,httpurm,'\2',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1095
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1096 " dav://hostname[:port]/..path-to-file..
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1097 elseif match(a:choice,davurm) == 0
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1098 "" call Decho("dav://...")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1099 let b:netrw_method= 6
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1100 let g:netrw_machine= substitute(a:choice,davurm,'\1',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1101 let b:netrw_fname = substitute(a:choice,davurm,'\2',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1102
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1103 " rsync://user@hostname/...path-to-file
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1104 elseif match(a:choice,rsyncurm) == 0
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1105 "" call Decho("rsync://...")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1106 let b:netrw_method = 7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1107 let g:netrw_machine= substitute(a:choice,rsyncurm,'\1',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1108 let b:netrw_fname = substitute(a:choice,rsyncurm,'\2',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1109
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1110 " ftp://[user@]hostname[[:#]port]/...path-to-file
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1111 elseif match(a:choice,ftpurm) == 0
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1112 "" call Decho("ftp://...")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1113 let userid = substitute(a:choice,ftpurm,'\2',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1114 let g:netrw_machine= substitute(a:choice,ftpurm,'\3',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1115 let g:netrw_port = substitute(a:choice,ftpurm,'\4',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1116 let b:netrw_fname = substitute(a:choice,ftpurm,'\5',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1117 if g:netrw_port != ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1118 let g:netrw_port = substitute(g:netrw_port,"[#:]","","")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1119 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1120 if userid != ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1121 let g:netrw_uid= userid
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1122 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1123 if exists("g:netrw_uid") && exists("g:netrw_passwd")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1124 let b:netrw_method = 3
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1125 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1126 if filereadable(expand("$HOME/.netrc")) && !exists("g:netrw_ignorenetrc")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1127 let b:netrw_method= 2
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1128 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1129 if !exists("g:netrw_uid") || g:netrw_uid == ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1130 call NetUserPass()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1131 elseif !exists("g:netrw_passwd") || g:netrw_passwd == ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1132 call NetUserPass(g:netrw_uid)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1133 " else just use current g:netrw_uid and g:netrw_passwd
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1134 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1135 let b:netrw_method= 3
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1136 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1137 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1138
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1139 elseif match(a:choice,fetchurm) == 0
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1140 "" call Decho("fetch://...")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1141 let b:netrw_method = 8
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1142 let g:netrw_userid = substitute(a:choice,fetchurm,'\2',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1143 let g:netrw_machine= substitute(a:choice,fetchurm,'\3',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1144 let b:netrw_option = substitute(a:choice,fetchurm,'\4',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1145 let b:netrw_fname = substitute(a:choice,fetchurm,'\5',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1146
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1147 " Issue an ftp : "machine id password [path/]filename"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1148 elseif match(a:choice,mipf) == 0
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1149 "" call Decho("(ftp) host id pass file")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1150 let b:netrw_method = 3
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1151 let g:netrw_machine = substitute(a:choice,mipf,'\1',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1152 let g:netrw_uid = substitute(a:choice,mipf,'\2',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1153 let g:netrw_passwd = substitute(a:choice,mipf,'\3',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1154 let b:netrw_fname = substitute(a:choice,mipf,'\4',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1155
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1156 " Issue an ftp: "hostname [path/]filename"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1157 elseif match(a:choice,mf) == 0
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1158 "" call Decho("(ftp) host file")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1159 if exists("g:netrw_uid") && exists("g:netrw_passwd")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1160 let b:netrw_method = 3
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1161 let g:netrw_machine = substitute(a:choice,mf,'\1',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1162 let b:netrw_fname = substitute(a:choice,mf,'\2',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1163
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1164 elseif filereadable(expand("$HOME/.netrc"))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1165 let b:netrw_method = 2
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1166 let g:netrw_machine = substitute(a:choice,mf,'\1',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1167 let b:netrw_fname = substitute(a:choice,mf,'\2',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1168 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1169
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1170 " sftp://user@hostname/...path-to-file
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1171 elseif match(a:choice,sftpurm) == 0
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1172 "" call Decho("sftp://...")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1173 let b:netrw_method = 9
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1174 let g:netrw_machine= substitute(a:choice,sftpurm,'\1',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1175 let b:netrw_fname = substitute(a:choice,sftpurm,'\2',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1176
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1177 " Issue an rcp: hostname:filename" (this one should be last)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1178 elseif match(a:choice,rcphf) == 0
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1179 "" call Decho("(rcp) [user@]host:file) rcphf<".rcphf.">")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1180 let b:netrw_method = 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1181 let userid = substitute(a:choice,rcphf,'\2',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1182 let g:netrw_machine= substitute(a:choice,rcphf,'\3',"")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1183 let b:netrw_fname = substitute(a:choice,rcphf,'\4',"")
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1184 "" call Decho('\1<'.substitute(a:choice,rcphf,'\1',"").">")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1185 "" call Decho('\2<'.substitute(a:choice,rcphf,'\2',"").">")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1186 "" call Decho('\3<'.substitute(a:choice,rcphf,'\3',"").">")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1187 "" call Decho('\4<'.substitute(a:choice,rcphf,'\4',"").">")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1188 if userid != ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1189 let g:netrw_uid= userid
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1190 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1191 if has("win32")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1192 " don't let PCs try <.netrc>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1193 let b:netrw_method = 3
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1194 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1195
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1196 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1197 echoerr "***error*** cannot determine method"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1198 let b:netrw_method = -1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1199 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1200
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1201 "" call Decho("a:choice <".a:choice.">")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1202 "" call Decho("b:netrw_method <".b:netrw_method.">")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1203 "" call Decho("g:netrw_machine<".g:netrw_machine.">")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1204 "" call Decho("g:netrw_port <".g:netrw_port.">")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1205 "" if exists("g:netrw_uid") "Decho
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1206 "" call Decho("g:netrw_uid <".g:netrw_uid.">")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1207 "" endif "Decho
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1208 "" if exists("g:netrw_passwd") "Decho
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1209 "" call Decho("g:netrw_passwd <".g:netrw_passwd.">")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1210 "" endif "Decho
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1211 "" call Decho("b:netrw_fname <".b:netrw_fname.">")
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1212 "" call Dret("NetMethod")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1213 endfun
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1214 " end of NetMethod
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1215
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1216 " ------------------------------------------------------------------------
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1217 " NetUserPass: set username and password for subsequent ftp transfer {{{1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1218 " Usage: :call NetUserPass() -- will prompt for userid and password
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1219 " :call NetUserPass("uid") -- will prompt for password
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1220 " :call NetUserPass("uid","password") -- sets global userid and password
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1221 fun! NetUserPass(...)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1222
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1223 " get/set userid
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1224 if a:0 == 0
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1225 "" call Dfunc("NetUserPass(a:0<".a:0.">)")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1226 if !exists("g:netrw_uid") || g:netrw_uid == ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1227 " via prompt
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1228 let g:netrw_uid= input('Enter username: ')
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1229 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1230 else " from command line
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1231 "" call Dfunc("NetUserPass(a:1<".a:1.">) {")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1232 let g:netrw_uid= a:1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1233 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1234
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1235 " get password
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1236 if a:0 <= 1 " via prompt
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1237 "" call Decho("a:0=".a:0." case <=1:")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1238 let g:netrw_passwd= inputsecret("Enter Password: ")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1239 else " from command line
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1240 "" call Decho("a:0=".a:0." case >1: a:2<".a:2.">")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1241 let g:netrw_passwd=a:2
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1242 endif
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1243 "" call Dret("NetUserPass")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1244 endfun
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1245 " end NetUserPass
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1246
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1247 " ------------------------------------------------------------------------
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1248 " NetOptionSave: save options and set to "standard" form {{{1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1249 fun!s:NetOptionSave()
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1250 "" call Dfunc("NetOptionSave()")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1251
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1252 " Get Temporary Filename
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1253 let s:aikeep = &ai
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1254 let s:cinkeep = &cin
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1255 let s:cinokeep = &cino
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1256 let s:comkeep = &com
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1257 let s:cpokeep = &cpo
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1258 let s:dirkeep = getcwd()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1259 let s:gdkeep = &gd
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1260 let s:twkeep = &tw
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1261 set cino =
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1262 set com =
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1263 set cpo -=aA
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1264 set nocin noai
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1265 set tw =0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1266 if has("win32") && !has("win95")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1267 let s:swfkeep= &swf
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1268 set noswf
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1269 "" call Decho("setting s:swfkeep to <".&swf.">")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1270 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1271
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1272 "" call Dret("NetOptionSave")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1273 endfun
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1274
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1275 " ------------------------------------------------------------------------
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1276 " NetOptionRestore: restore options {{{1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1277 fun! s:NetOptionRestore()
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1278 "" call Dfunc("NetOptionRestore()")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1279
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1280 let &ai = s:aikeep
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1281 let &cin = s:cinkeep
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1282 let &cino = s:cinokeep
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1283 let &com = s:comkeep
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1284 let &cpo = s:cpokeep
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1285 exe "lcd ".s:dirkeep
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1286 let &gd = s:gdkeep
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1287 let &tw = s:twkeep
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1288 if exists("s:swfkeep")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1289 let &swf= s:swfkeep
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1290 unlet s:swfkeep
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1291 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1292 unlet s:aikeep
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1293 unlet s:cinkeep
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1294 unlet s:cinokeep
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1295 unlet s:comkeep
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1296 unlet s:cpokeep
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1297 unlet s:gdkeep
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1298 unlet s:twkeep
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1299 unlet s:dirkeep
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1300
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1301 "" call Dret("NetOptionRestore")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1302 endfun
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1303
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1304 " ------------------------------------------------------------------------
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1305 " NetReadFixup: this sort of function is typically written by the user {{{1
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1306 " to handle extra junk that their system's ftp dumps
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1307 " into the transfer. This function is provided as an
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1308 " example and as a fix for a Windows 95 problem: in my
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1309 " experience, win95's ftp always dumped four blank lines
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1310 " at the end of the transfer.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1311 if has("win95") && g:netrw_win95ftp
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1312 fun! NetReadFixup(method, line1, line2)
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1313 "" call Dfunc("NetReadFixup(method<".a:method."> line1=".a:line1." line2=".a:line2.")")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1314 if method == 3 " ftp (no <.netrc>)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1315 let fourblanklines= line2 - 3
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1316 silent fourblanklines.",".line2."g/^\s*/d"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1317 endif
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1318 "" call Dret("NetReadFixup")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1319 endfun
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1320 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1321
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1322 " ---------------------------------------------------------------------
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1323 " NetSort: Piet Delport's BISort2() function, modified to take a range
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1324 fun! <SID>NetSort() range
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1325 let i = a:firstline + 1
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1326 while i <= a:lastline
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1327 " find insertion point via binary search
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1328 let i_val = getline(i)
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1329 let lo = a:firstline
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1330 let hi = i
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1331 while lo < hi
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1332 let mid = (lo + hi) / 2
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1333 let mid_val = getline(mid)
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1334 if i_val < mid_val
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1335 let hi = mid
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1336 else
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1337 let lo = mid + 1
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1338 if i_val == mid_val | break | endif
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1339 endif
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1340 endwhile
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1341 " do insert
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1342 if lo < i
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1343 exec i.'d_'
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1344 call append(lo - 1, i_val)
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1345 endif
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1346 let i = i + 1
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1347 endwhile
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1348 endfun
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
1349
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1350 " ------------------------------------------------------------------------
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1351 " Restore {{{1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1352 let &cpo= s:save_cpo
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1353 unlet s:save_cpo
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1354 " vim:ts=8 fdm=marker