comparison runtime/autoload/netrw.vim @ 650:662e40bd2be1

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