comparison runtime/autoload/netrw.vim @ 17433:ca8e754bdd53

Update runtime files commit https://github.com/vim/vim/commit/85850f3a5ef9f5a9d22e908ef263de8faa265a95 Author: Bram Moolenaar <Bram@vim.org> Date: Fri Jul 19 22:05:51 2019 +0200 Update runtime files
author Bram Moolenaar <Bram@vim.org>
date Fri, 19 Jul 2019 22:15:08 +0200
parents 6ef705baab8d
children e9a47bcf7b94
comparison
equal deleted inserted replaced
17432:d13620591637 17433:ca8e754bdd53
1 " netrw.vim: Handles file transfer and remote directory listing across 1 " netrw.vim: Handles file transfer and remote directory listing across
2 " AUTOLOAD SECTION 2 " AUTOLOAD SECTION
3 " Date: Apr 20, 2016 3 " Date: Jul 16, 2019
4 " Version: 156 4 " Version: 165
5 " Maintainer: Charles E Campbell <NdrOchip@ScampbellPfamily.AbizM-NOSPAM> 5 " Maintainer: Charles E Campbell <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
6 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim 6 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
7 " Copyright: Copyright (C) 2016 Charles E. Campbell {{{1 7 " Copyright: Copyright (C) 2016 Charles E. Campbell {{{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
20 " =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 20 " =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
21 " Load Once: {{{1 21 " Load Once: {{{1
22 if &cp || exists("g:loaded_netrw") 22 if &cp || exists("g:loaded_netrw")
23 finish 23 finish
24 endif 24 endif
25 " netrw requires vim having patch 7.4.213; netrw will benefit from vim's having patch#656, too 25
26 if v:version < 704 || (v:version == 704 && !has("patch213")) 26 " Check that vim has patches that netrw requires.
27 if !exists("s:needpatch213") 27 " Patches needed for v7.4: 1557, and 213.
28 unsilent echomsg "***sorry*** this version of netrw requires vim v7.4 with patch 213" 28 " (netrw will benefit from vim's having patch#656, too)
29 endif 29 let s:needspatches=[1557,213]
30 let s:needpatch213= 1 30 if exists("s:needspatches")
31 finish 31 for ptch in s:needspatches
32 if v:version < 704 || (v:version == 704 && !has("patch".ptch))
33 if !exists("s:needpatch{ptch}")
34 unsilent echomsg "***sorry*** this version of netrw requires vim v7.4 with patch#".ptch
35 endif
36 let s:needpatch{ptch}= 1
37 finish
38 endif
39 endfor
32 endif 40 endif
33 let g:loaded_netrw = "v156" 41
42 let g:loaded_netrw = "v165"
34 if !exists("s:NOTE") 43 if !exists("s:NOTE")
35 let s:NOTE = 0 44 let s:NOTE = 0
36 let s:WARNING = 1 45 let s:WARNING = 1
37 let s:ERROR = 2 46 let s:ERROR = 2
38 endif 47 endif
39 48
40 let s:keepcpo= &cpo 49 let s:keepcpo= &cpo
41 setl cpo&vim 50 setl cpo&vim
42 "let g:dechofuncname= 1 51 "DechoFuncName 1
43 "DechoRemOn 52 "DechoRemOn
44 "call Decho("doing autoload/netrw.vim version ".g:loaded_netrw,'~'.expand("<slnum>")) 53 "call Decho("doing autoload/netrw.vim version ".g:loaded_netrw,'~'.expand("<slnum>"))
45 54
46 " ====================== 55 " ======================
47 " Netrw Variables: {{{1 56 " Netrw Variables: {{{1
53 " 1=warning = s:WARNING 62 " 1=warning = s:WARNING
54 " 2=error = s:ERROR 63 " 2=error = s:ERROR
55 " Usage: netrw#ErrorMsg(s:NOTE | s:WARNING | s:ERROR,"some message",error-number) 64 " Usage: netrw#ErrorMsg(s:NOTE | s:WARNING | s:ERROR,"some message",error-number)
56 " netrw#ErrorMsg(s:NOTE | s:WARNING | s:ERROR,["message1","message2",...],error-number) 65 " netrw#ErrorMsg(s:NOTE | s:WARNING | s:ERROR,["message1","message2",...],error-number)
57 " (this function can optionally take a list of messages) 66 " (this function can optionally take a list of messages)
58 " Jan 19, 2016 : max errnum currently is 103 67 " Mar 21, 2017 : max errnum currently is 105
59 fun! netrw#ErrorMsg(level,msg,errnum) 68 fun! netrw#ErrorMsg(level,msg,errnum)
60 " call Dfunc("netrw#ErrorMsg(level=".a:level." msg<".a:msg."> errnum=".a:errnum.") g:netrw_use_errorwindow=".g:netrw_use_errorwindow) 69 " call Dfunc("netrw#ErrorMsg(level=".a:level." msg<".a:msg."> errnum=".a:errnum.") g:netrw_use_errorwindow=".g:netrw_use_errorwindow)
61 70
62 if a:level < g:netrw_errorlvl 71 if a:level < g:netrw_errorlvl
63 " call Dret("netrw#ErrorMsg : suppressing level=".a:level." since g:netrw_errorlvl=".g:netrw_errorlvl) 72 " call Dret("netrw#ErrorMsg : suppressing level=".a:level." since g:netrw_errorlvl=".g:netrw_errorlvl)
98 NetrwKeepj $ 107 NetrwKeepj $
99 else 108 else
100 " call Decho("create a NetrwMessage buffer window",'~'.expand("<slnum>")) 109 " call Decho("create a NetrwMessage buffer window",'~'.expand("<slnum>"))
101 bo 1split 110 bo 1split
102 sil! call s:NetrwEnew() 111 sil! call s:NetrwEnew()
103 sil! NetrwKeepj call s:NetrwSafeOptions() 112 sil! NetrwKeepj call s:NetrwOptionsSafe(1)
104 setl bt=nofile 113 setl bt=nofile
105 NetrwKeepj file NetrwMessage 114 NetrwKeepj file NetrwMessage
106 " call Decho("setl ma noro",'~'.expand("<slnum>")) 115 " call Decho("setl ma noro",'~'.expand("<slnum>"))
107 setl ma noro 116 setl ma noro
108 if type(a:msg) == 3 117 if type(a:msg) == 3
169 endif 178 endif
170 endfun 179 endfun
171 180
172 " --------------------------------------------------------------------- 181 " ---------------------------------------------------------------------
173 " Netrw Constants: {{{2 182 " Netrw Constants: {{{2
174 call s:NetrwInit("g:netrw_dirhist_cnt",0) 183 call s:NetrwInit("g:netrw_dirhistcnt",0)
175 if !exists("s:LONGLIST") 184 if !exists("s:LONGLIST")
176 call s:NetrwInit("s:THINLIST",0) 185 call s:NetrwInit("s:THINLIST",0)
177 call s:NetrwInit("s:LONGLIST",1) 186 call s:NetrwInit("s:LONGLIST",1)
178 call s:NetrwInit("s:WIDELIST",2) 187 call s:NetrwInit("s:WIDELIST",2)
179 call s:NetrwInit("s:TREELIST",3) 188 call s:NetrwInit("s:TREELIST",3)
180 call s:NetrwInit("s:MAXLIST" ,4) 189 call s:NetrwInit("s:MAXLIST" ,4)
181 endif 190 endif
191
192 " ---------------------------------------------------------------------
193 " Default option values: {{{2
194 let g:netrw_localcopycmdopt = ""
195 let g:netrw_localcopydircmdopt = ""
196 let g:netrw_localmkdiropt = ""
197 let g:netrw_localmovecmdopt = ""
198 let g:netrw_localrmdiropt = ""
182 199
183 " --------------------------------------------------------------------- 200 " ---------------------------------------------------------------------
184 " Default values for netrw's global protocol variables {{{2 201 " Default values for netrw's global protocol variables {{{2
185 call s:NetrwInit("g:netrw_use_errorwindow",1) 202 call s:NetrwInit("g:netrw_use_errorwindow",1)
186 203
213 let s:netrw_ftp_cmd= g:netrw_ftp_cmd 230 let s:netrw_ftp_cmd= g:netrw_ftp_cmd
214 if !exists("g:netrw_ftp_options") 231 if !exists("g:netrw_ftp_options")
215 let g:netrw_ftp_options= "-i -n" 232 let g:netrw_ftp_options= "-i -n"
216 endif 233 endif
217 if !exists("g:netrw_http_cmd") 234 if !exists("g:netrw_http_cmd")
218 if executable("elinks") 235 if executable("curl")
219 let g:netrw_http_cmd = "elinks"
220 call s:NetrwInit("g:netrw_http_xcmd","-source >")
221 elseif executable("links")
222 let g:netrw_http_cmd = "links"
223 call s:NetrwInit("g:netrw_http_xcmd","-source >")
224 elseif executable("curl")
225 let g:netrw_http_cmd = "curl" 236 let g:netrw_http_cmd = "curl"
226 call s:NetrwInit("g:netrw_http_xcmd","-o") 237 call s:NetrwInit("g:netrw_http_xcmd","-L -o")
227 elseif executable("wget") 238 elseif executable("wget")
228 let g:netrw_http_cmd = "wget" 239 let g:netrw_http_cmd = "wget"
229 call s:NetrwInit("g:netrw_http_xcmd","-q -O") 240 call s:NetrwInit("g:netrw_http_xcmd","-q -O")
241 elseif executable("elinks")
242 let g:netrw_http_cmd = "elinks"
243 call s:NetrwInit("g:netrw_http_xcmd","-source >")
230 elseif executable("fetch") 244 elseif executable("fetch")
231 let g:netrw_http_cmd = "fetch" 245 let g:netrw_http_cmd = "fetch"
232 call s:NetrwInit("g:netrw_http_xcmd","-o") 246 call s:NetrwInit("g:netrw_http_xcmd","-o")
247 elseif executable("links")
248 let g:netrw_http_cmd = "links"
249 call s:NetrwInit("g:netrw_http_xcmd","-http.extra-header ".shellescape("Accept-Encoding: identity", 1)." -source >")
233 else 250 else
234 let g:netrw_http_cmd = "" 251 let g:netrw_http_cmd = ""
235 endif 252 endif
236 endif 253 endif
237 call s:NetrwInit("g:netrw_http_put_cmd","curl -T") 254 call s:NetrwInit("g:netrw_http_put_cmd","curl -T")
238 call s:NetrwInit("g:netrw_keepj","keepj") 255 call s:NetrwInit("g:netrw_keepj","keepj")
239 call s:NetrwInit("g:netrw_rcp_cmd" , "rcp") 256 call s:NetrwInit("g:netrw_rcp_cmd" , "rcp")
240 call s:NetrwInit("g:netrw_rsync_cmd", "rsync") 257 call s:NetrwInit("g:netrw_rsync_cmd", "rsync")
258 call s:NetrwInit("g:netrw_rsync_sep", "/")
241 if !exists("g:netrw_scp_cmd") 259 if !exists("g:netrw_scp_cmd")
242 if executable("scp") 260 if executable("scp")
243 call s:NetrwInit("g:netrw_scp_cmd" , "scp -q") 261 call s:NetrwInit("g:netrw_scp_cmd" , "scp -q")
244 elseif executable("pscp") 262 elseif executable("pscp")
245 if (has("win32") || has("win95") || has("win64") || has("win16")) && filereadable('c:\private.ppk') 263 if (has("win32") || has("win95") || has("win64") || has("win16")) && filereadable('c:\private.ppk')
297 let s:netrw_usercul = &cursorline 315 let s:netrw_usercul = &cursorline
298 let s:netrw_usercuc = &cursorcolumn 316 let s:netrw_usercuc = &cursorcolumn
299 call s:NetrwInit("g:netrw_cygdrive","/cygdrive") 317 call s:NetrwInit("g:netrw_cygdrive","/cygdrive")
300 " Default values - d-g ---------- {{{3 318 " Default values - d-g ---------- {{{3
301 call s:NetrwInit("s:didstarstar",0) 319 call s:NetrwInit("s:didstarstar",0)
302 call s:NetrwInit("g:netrw_dirhist_cnt" , 0) 320 call s:NetrwInit("g:netrw_dirhistcnt" , 0)
303 call s:NetrwInit("g:netrw_decompress" , '{ ".gz" : "gunzip", ".bz2" : "bunzip2", ".zip" : "unzip", ".tar" : "tar -xf", ".xz" : "unxz" }') 321 call s:NetrwInit("g:netrw_decompress" , '{ ".gz" : "gunzip", ".bz2" : "bunzip2", ".zip" : "unzip", ".tar" : "tar -xf", ".xz" : "unxz" }')
304 call s:NetrwInit("g:netrw_dirhistmax" , 10) 322 call s:NetrwInit("g:netrw_dirhistmax" , 10)
305 call s:NetrwInit("g:netrw_errorlvl" , s:NOTE) 323 call s:NetrwInit("g:netrw_errorlvl" , s:NOTE)
306 call s:NetrwInit("g:netrw_fastbrowse" , 1) 324 call s:NetrwInit("g:netrw_fastbrowse" , 1)
307 call s:NetrwInit("g:netrw_ftp_browse_reject", '^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not\|No such file\|: connect to address [0-9a-fA-F:]*: No route to host$') 325 call s:NetrwInit("g:netrw_ftp_browse_reject", '^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not\|No such file\|: connect to address [0-9a-fA-F:]*: No route to host$')
362 if !exists("g:netrw_localcopycmd") 380 if !exists("g:netrw_localcopycmd")
363 if has("win32") || has("win95") || has("win64") || has("win16") 381 if has("win32") || has("win95") || has("win64") || has("win16")
364 if g:netrw_cygwin 382 if g:netrw_cygwin
365 let g:netrw_localcopycmd= "cp" 383 let g:netrw_localcopycmd= "cp"
366 else 384 else
367 let g:netrw_localcopycmd= expand("$COMSPEC")." /c copy" 385 let g:netrw_localcopycmd = expand("$COMSPEC")
386 let g:netrw_localcopycmdopt= " /c copy"
368 endif 387 endif
369 elseif has("unix") || has("macunix") 388 elseif has("unix") || has("macunix")
370 let g:netrw_localcopycmd= "cp" 389 let g:netrw_localcopycmd= "cp"
371 else 390 else
372 let g:netrw_localcopycmd= "" 391 let g:netrw_localcopycmd= ""
373 endif 392 endif
374 endif 393 endif
375 if !exists("g:netrw_localcopydircmd") 394 if !exists("g:netrw_localcopydircmd")
376 if has("win32") || has("win95") || has("win64") || has("win16") 395 if has("win32") || has("win95") || has("win64") || has("win16")
377 if g:netrw_cygwin 396 if g:netrw_cygwin
378 let g:netrw_localcopydircmd= "cp -R" 397 let g:netrw_localcopydircmd = "cp"
379 else 398 let g:netrw_localcopydircmdopt= " -R"
380 let g:netrw_localcopycmd= expand("$COMSPEC")." /c xcopy /e /c /h /i /k" 399 else
381 endif 400 let g:netrw_localcopydircmd = expand("$COMSPEC")
382 elseif has("unix") || has("macunix") 401 let g:netrw_localcopydircmdopt= " /c xcopy /e /c /h /i /k"
383 let g:netrw_localcopydircmd= "cp -R" 402 endif
403 elseif has("unix")
404 let g:netrw_localcopydircmd = "cp"
405 let g:netrw_localcopydircmdopt= " -R"
406 elseif has("macunix")
407 let g:netrw_localcopydircmd = "cp"
408 let g:netrw_localcopydircmdopt= " -R"
384 else 409 else
385 let g:netrw_localcopycmd= "" 410 let g:netrw_localcopydircmd= ""
386 endif 411 endif
387 endif 412 endif
388 if exists("g:netrw_local_mkdir") 413 if exists("g:netrw_local_mkdir")
389 let g:netrw_localmkdir= g:netrw_local_mkdir 414 let g:netrw_localmkdir= g:netrw_local_mkdir
390 call netrw#ErrorMsg(s:NOTE,"g:netrw_local_mkdir is deprecated in favor of g:netrw_localmkdir",87) 415 call netrw#ErrorMsg(s:NOTE,"g:netrw_local_mkdir is deprecated in favor of g:netrw_localmkdir",87)
391 endif 416 endif
392 if has("win32") || has("win95") || has("win64") || has("win16") 417 if has("win32") || has("win95") || has("win64") || has("win16")
393 if g:netrw_cygwin 418 if g:netrw_cygwin
394 call s:NetrwInit("g:netrw_localmkdir","mkdir") 419 call s:NetrwInit("g:netrw_localmkdir","mkdir")
395 else 420 else
396 let g:netrw_localmkdir= expand("$COMSPEC")." /c mkdir" 421 let g:netrw_localmkdir = expand("$COMSPEC")
422 let g:netrw_localmkdiropt= " /c mkdir"
397 endif 423 endif
398 else 424 else
399 call s:NetrwInit("g:netrw_localmkdir","mkdir") 425 call s:NetrwInit("g:netrw_localmkdir","mkdir")
400 endif 426 endif
401 call s:NetrwInit("g:netrw_remote_mkdir","mkdir") 427 call s:NetrwInit("g:netrw_remote_mkdir","mkdir")
406 if !exists("g:netrw_localmovecmd") 432 if !exists("g:netrw_localmovecmd")
407 if has("win32") || has("win95") || has("win64") || has("win16") 433 if has("win32") || has("win95") || has("win64") || has("win16")
408 if g:netrw_cygwin 434 if g:netrw_cygwin
409 let g:netrw_localmovecmd= "mv" 435 let g:netrw_localmovecmd= "mv"
410 else 436 else
411 let g:netrw_localmovecmd= expand("$COMSPEC")." /c move" 437 let g:netrw_localmovecmd = expand("$COMSPEC")
438 let g:netrw_localmovecmdopt= " /c move"
412 endif 439 endif
413 elseif has("unix") || has("macunix") 440 elseif has("unix") || has("macunix")
414 let g:netrw_localmovecmd= "mv" 441 let g:netrw_localmovecmd= "mv"
415 else 442 else
416 let g:netrw_localmovecmd= "" 443 let g:netrw_localmovecmd= ""
417 endif 444 endif
418 endif 445 endif
419 if v:version < 704 || !has("patch1109") 446 if v:version < 704 || (v:version == 704 && !has("patch1107"))
447 " 1109 provides for delete(tmpdir,"d") which is what will be used
420 if exists("g:netrw_local_rmdir") 448 if exists("g:netrw_local_rmdir")
421 let g:netrw_localrmdir= g:netrw_local_rmdir 449 let g:netrw_localrmdir= g:netrw_local_rmdir
422 call netrw#ErrorMsg(s:NOTE,"g:netrw_local_rmdir is deprecated in favor of g:netrw_localrmdir",86) 450 call netrw#ErrorMsg(s:NOTE,"g:netrw_local_rmdir is deprecated in favor of g:netrw_localrmdir",86)
423 endif 451 endif
424 if has("win32") || has("win95") || has("win64") || has("win16") 452 if has("win32") || has("win95") || has("win64") || has("win16")
425 if g:netrw_cygwin 453 if g:netrw_cygwin
426 call s:NetrwInit("g:netrw_localrmdir","rmdir") 454 call s:NetrwInit("g:netrw_localrmdir","rmdir")
427 else 455 else
428 let g:netrw_localrmdir= expand("$COMSPEC")." /c rmdir" 456 let g:netrw_localrmdir = expand("$COMSPEC")
457 let g:netrw_localrmdiropt= " /c rmdir"
429 endif 458 endif
430 else 459 else
431 call s:NetrwInit("g:netrw_localrmdir","rmdir") 460 call s:NetrwInit("g:netrw_localrmdir","rmdir")
432 endif 461 endif
433 endif 462 endif
525 if has("gui_running") && (&enc == 'utf-8' || &enc == 'utf-16' || &enc == 'ucs-4') 554 if has("gui_running") && (&enc == 'utf-8' || &enc == 'utf-16' || &enc == 'ucs-4')
526 let s:treedepthstring= "│ " 555 let s:treedepthstring= "│ "
527 else 556 else
528 let s:treedepthstring= "| " 557 let s:treedepthstring= "| "
529 endif 558 endif
530 call s:NetrwInit("s:netrw_nbcd",'{}') 559 call s:NetrwInit("s:netrw_posn",'{}')
531 560
532 " BufEnter event ignored by decho when following variable is true 561 " BufEnter event ignored by decho when following variable is true
533 " Has a side effect that doau BufReadPost doesn't work, so 562 " Has a side effect that doau BufReadPost doesn't work, so
534 " files read by network transfer aren't appropriately highlighted. 563 " files read by network transfer aren't appropriately highlighted.
535 "let g:decho_bufenter = 1 "Decho 564 "let g:decho_bufenter = 1 "Decho
886 " call Decho("..case Nexplore with starpat=".starpat.": (indx=".indx.")",'~'.expand("<slnum>")) 915 " call Decho("..case Nexplore with starpat=".starpat.": (indx=".indx.")",'~'.expand("<slnum>"))
887 if !exists("w:netrw_explore_list") " sanity check 916 if !exists("w:netrw_explore_list") " sanity check
888 NetrwKeepj call netrw#ErrorMsg(s:WARNING,"using Nexplore or <s-down> improperly; see help for netrw-starstar",40) 917 NetrwKeepj call netrw#ErrorMsg(s:WARNING,"using Nexplore or <s-down> improperly; see help for netrw-starstar",40)
889 if has("clipboard") 918 if has("clipboard")
890 sil! let @* = keepregstar 919 sil! let @* = keepregstar
891 sil! let @+ = keepregstar 920 sil! let @+ = keepregplus
892 endif 921 endif
893 sil! let @/ = keepregslash 922 sil! let @/ = keepregslash
894 " call Dret("netrw#Explore") 923 " call Dret("netrw#Explore")
895 return 924 return
896 endif 925 endif
911 " call Decho("case Pexplore with starpat=".starpat.": (indx=".indx.")",'~'.expand("<slnum>")) 940 " call Decho("case Pexplore with starpat=".starpat.": (indx=".indx.")",'~'.expand("<slnum>"))
912 if !exists("w:netrw_explore_list") " sanity check 941 if !exists("w:netrw_explore_list") " sanity check
913 NetrwKeepj call netrw#ErrorMsg(s:WARNING,"using Pexplore or <s-up> improperly; see help for netrw-starstar",41) 942 NetrwKeepj call netrw#ErrorMsg(s:WARNING,"using Pexplore or <s-up> improperly; see help for netrw-starstar",41)
914 if has("clipboard") 943 if has("clipboard")
915 sil! let @* = keepregstar 944 sil! let @* = keepregstar
916 sil! let @+ = keepregstar 945 sil! let @+ = keepregplus
917 endif 946 endif
918 sil! let @/ = keepregslash 947 sil! let @/ = keepregslash
919 " call Dret("netrw#Explore") 948 " call Dret("netrw#Explore")
920 return 949 return
921 endif 950 endif
965 exe "sil NetrwKeepj noautocmd keepalt vimgrep /".pattern."/gj "."**/*" 994 exe "sil NetrwKeepj noautocmd keepalt vimgrep /".pattern."/gj "."**/*"
966 catch /^Vim\%((\a\+)\)\=:E480/ 995 catch /^Vim\%((\a\+)\)\=:E480/
967 keepalt call netrw#ErrorMsg(s:WARNING,'no files matched pattern<'.pattern.'>',45) 996 keepalt call netrw#ErrorMsg(s:WARNING,'no files matched pattern<'.pattern.'>',45)
968 if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif 997 if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif
969 if has("clipboard") 998 if has("clipboard")
970 sil! let @* = keepregstar 999 sil! let @* = keepregstar
971 sil! let @+ = keepregstar 1000 sil! let @+ = keepregplus
972 endif 1001 endif
973 sil! let @/ = keepregslash 1002 sil! let @/ = keepregslash
974 " call Dret("netrw#Explore : no files matched pattern") 1003 " call Dret("netrw#Explore : no files matched pattern")
975 return 1004 return
976 endtry 1005 endtry
1002 1031
1003 if w:netrw_explore_listlen == 0 || (w:netrw_explore_listlen == 1 && w:netrw_explore_list[0] =~ '\*\*\/') 1032 if w:netrw_explore_listlen == 0 || (w:netrw_explore_listlen == 1 && w:netrw_explore_list[0] =~ '\*\*\/')
1004 keepalt NetrwKeepj call netrw#ErrorMsg(s:WARNING,"no files matched",42) 1033 keepalt NetrwKeepj call netrw#ErrorMsg(s:WARNING,"no files matched",42)
1005 if has("clipboard") 1034 if has("clipboard")
1006 sil! let @* = keepregstar 1035 sil! let @* = keepregstar
1007 sil! let @+ = keepregstar 1036 sil! let @+ = keepregplus
1008 endif 1037 endif
1009 sil! let @/ = keepregslash 1038 sil! let @/ = keepregslash
1010 " call Dret("netrw#Explore : no files matched") 1039 " call Dret("netrw#Explore : no files matched")
1011 return 1040 return
1012 endif 1041 endif
1050 if !exists("g:netrw_quiet") 1079 if !exists("g:netrw_quiet")
1051 keepalt NetrwKeepj call netrw#ErrorMsg(s:WARNING,"your vim needs the +path_extra feature for Exploring with **!",44) 1080 keepalt NetrwKeepj call netrw#ErrorMsg(s:WARNING,"your vim needs the +path_extra feature for Exploring with **!",44)
1052 endif 1081 endif
1053 if has("clipboard") 1082 if has("clipboard")
1054 sil! let @* = keepregstar 1083 sil! let @* = keepregstar
1055 sil! let @+ = keepregstar 1084 sil! let @+ = keepregplus
1056 endif 1085 endif
1057 sil! let @/ = keepregslash 1086 sil! let @/ = keepregslash
1058 " call Dret("netrw#Explore : missing +path_extra") 1087 " call Dret("netrw#Explore : missing +path_extra")
1059 return 1088 return
1060 endif 1089 endif
1104 endif 1133 endif
1105 endif 1134 endif
1106 let prvfname= fname 1135 let prvfname= fname
1107 endfor 1136 endfor
1108 " call Decho("explore_match<".s:explore_match.">",'~'.expand("<slnum>")) 1137 " call Decho("explore_match<".s:explore_match.">",'~'.expand("<slnum>"))
1109 exe "2match netrwMarkFile /".s:explore_match."/" 1138 if has("syntax") && exists("g:syntax_on") && g:syntax_on
1139 exe "2match netrwMarkFile /".s:explore_match."/"
1140 endif
1110 endif 1141 endif
1111 echo "<s-up>==Pexplore <s-down>==Nexplore" 1142 echo "<s-up>==Pexplore <s-down>==Nexplore"
1112 else 1143 else
1113 2match none 1144 2match none
1114 if exists("s:explore_match") | unlet s:explore_match | endif 1145 if exists("s:explore_match") | unlet s:explore_match | endif
1121 " there's no danger of a late FocusGained event on initialization. 1152 " there's no danger of a late FocusGained event on initialization.
1122 " Consequently, set s:netrw_events to 2. 1153 " Consequently, set s:netrw_events to 2.
1123 let s:netrw_events= 2 1154 let s:netrw_events= 2
1124 if has("clipboard") 1155 if has("clipboard")
1125 sil! let @* = keepregstar 1156 sil! let @* = keepregstar
1126 sil! let @+ = keepregstar 1157 sil! let @+ = keepregplus
1127 endif 1158 endif
1128 sil! let @/ = keepregslash 1159 sil! let @/ = keepregslash
1129 " call Dret("netrw#Explore : @/<".@/.">") 1160 " call Dret("netrw#Explore : @/<".@/.">")
1130 endfun 1161 endfun
1131 1162
1132 " --------------------------------------------------------------------- 1163 " ---------------------------------------------------------------------
1133 " netrw#Lexplore: toggle Explorer window, keeping it on the left of the current tab {{{2 1164 " netrw#Lexplore: toggle Explorer window, keeping it on the left of the current tab {{{2
1134 fun! netrw#Lexplore(count,rightside,...) 1165 fun! netrw#Lexplore(count,rightside,...)
1135 " call Dfunc("netrw#Lexplore(count=".a:count."rightside=".a:rightside.",...) a:0=".a:0." ft=".&ft) 1166 " call Dfunc("netrw#Lexplore(count=".a:count." rightside=".a:rightside.",...) a:0=".a:0." ft=".&ft)
1136 let curwin= winnr() 1167 let curwin= winnr()
1137 1168
1138 if a:0 > 0 && a:1 != "" 1169 if a:0 > 0 && a:1 != ""
1139 " if a netrw window is already on the left-side of the tab 1170 " if a netrw window is already on the left-side of the tab
1140 " and a directory has been specified, explore with that 1171 " and a directory has been specified, explore with that
1141 " directory. 1172 " directory.
1173 " call Decho("case has input argument(s) (a:1<".a:1.">)")
1142 let a1 = expand(a:1) 1174 let a1 = expand(a:1)
1143 " call Decho("a:1<".a:1."> curwin#".curwin,'~'.expand("<slnum>")) 1175 " call Decho("a:1<".a:1."> curwin#".curwin,'~'.expand("<slnum>"))
1144 exe "1wincmd w" 1176 exe "1wincmd w"
1145 if &ft == "netrw" 1177 if &ft == "netrw"
1146 " call Decho("exe Explore ".fnameescape(a:1),'~'.expand("<slnum>")) 1178 " call Decho("exe Explore ".fnameescape(a:1),'~'.expand("<slnum>"))
1154 return 1186 return
1155 endif 1187 endif
1156 exe curwin."wincmd w" 1188 exe curwin."wincmd w"
1157 else 1189 else
1158 let a1= "" 1190 let a1= ""
1191 " call Decho("no input arguments")
1159 endif 1192 endif
1160 1193
1161 if exists("t:netrw_lexbufnr") 1194 if exists("t:netrw_lexbufnr")
1162 " check if t:netrw_lexbufnr refers to a netrw window 1195 " check if t:netrw_lexbufnr refers to a netrw window
1163 let lexwinnr = bufwinnr(t:netrw_lexbufnr) 1196 let lexwinnr = bufwinnr(t:netrw_lexbufnr)
1197 " call Decho("lexwinnr= bufwinnr(t:netrw_lexbufnr#".t:netrw_lexbufnr.")=".lexwinnr)
1164 else 1198 else
1165 let lexwinnr= 0 1199 let lexwinnr= 0
1166 endif 1200 " call Decho("t:netrw_lexbufnr doesn't exist")
1201 endif
1202 " call Decho("lexwinnr=".lexwinnr,'~'.expand("<slnum>"))
1167 1203
1168 if lexwinnr > 0 1204 if lexwinnr > 0
1169 " close down netrw explorer window 1205 " close down netrw explorer window
1170 " call Decho("t:netrw_lexbufnr#".t:netrw_lexbufnr.": close down netrw window",'~'.expand("<slnum>")) 1206 " call Decho("t:netrw_lexbufnr#".t:netrw_lexbufnr.": close down netrw window",'~'.expand("<slnum>"))
1171 exe lexwinnr."wincmd w" 1207 exe lexwinnr."wincmd w"
1172 let g:netrw_winsize = -winwidth(0) 1208 let g:netrw_winsize = -winwidth(0)
1173 let t:netrw_lexposn = winsaveview() 1209 let t:netrw_lexposn = winsaveview()
1174 " call Decho("saving posn to t:netrw_lexposn<".string(t:netrw_lexposn).">",'~'.expand("<slnum>")) 1210 " call Decho("saving posn to t:netrw_lexposn<".string(t:netrw_lexposn).">",'~'.expand("<slnum>"))
1175 " call Decho("saving t:netrw_lexposn",'~'.expand("<slnum>")) 1211 " call Decho("saving t:netrw_lexposn",'~'.expand("<slnum>"))
1176 close 1212 close
1177 if lexwinnr < curwin 1213 if lexwinnr < curwin
1178 let curwin= curwin - 1 1214 let curwin= curwin - 1
1179 endif 1215 endif
1180 exe curwin."wincmd w" 1216 if lexwinnr != curwin
1217 exe curwin."wincmd w"
1218 endif
1181 unlet t:netrw_lexbufnr 1219 unlet t:netrw_lexbufnr
1220 " call Decho("unlet t:netrw_lexbufnr")
1182 1221
1183 else 1222 else
1184 " open netrw explorer window 1223 " open netrw explorer window
1185 " call Decho("t:netrw_lexbufnr<n/a>: open netrw explorer window",'~'.expand("<slnum>")) 1224 " call Decho("t:netrw_lexbufnr<n/a>: open netrw explorer window",'~'.expand("<slnum>"))
1186 exe "1wincmd w" 1225 exe "1wincmd w"
1191 let g:netrw_winsize = a:count 1230 let g:netrw_winsize = a:count
1192 endif 1231 endif
1193 let curfile= expand("%") 1232 let curfile= expand("%")
1194 " call Decho("curfile<".curfile.">",'~'.expand("<slnum>")) 1233 " call Decho("curfile<".curfile.">",'~'.expand("<slnum>"))
1195 exe (a:rightside? "botright" : "topleft")." vertical ".((g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize) . " new" 1234 exe (a:rightside? "botright" : "topleft")." vertical ".((g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize) . " new"
1235 " call Decho("new buf#".bufnr("%")." win#".winnr())
1196 if a:0 > 0 && a1 != "" 1236 if a:0 > 0 && a1 != ""
1197 " call Decho("case 1: Explore ".a1,'~'.expand("<slnum>")) 1237 " call Decho("case 1: Explore ".a1,'~'.expand("<slnum>"))
1238 call netrw#Explore(0,0,0,a1)
1198 exe "Explore ".fnameescape(a1) 1239 exe "Explore ".fnameescape(a1)
1199 elseif curfile =~ '^\a\{3,}://' 1240 elseif curfile =~ '^\a\{3,}://'
1200 " call Decho("case 2: Explore ".substitute(curfile,'[^/\\]*$','',''),'~'.expand("<slnum>")) 1241 " call Decho("case 2: Explore ".substitute(curfile,'[^/\\]*$','',''),'~'.expand("<slnum>"))
1201 exe "Explore ".substitute(curfile,'[^/\\]*$','','') 1242 call netrw#Explore(0,0,0,substitute(curfile,'[^/\\]*$','',''))
1202 else 1243 else
1203 " call Decho("case 3: Explore .",'~'.expand("<slnum>")) 1244 " call Decho("case 3: Explore .",'~'.expand("<slnum>"))
1204 Explore . 1245 call netrw#Explore(0,0,0,".")
1205 endif 1246 endif
1206 if a:count != 0 1247 if a:count != 0
1207 let g:netrw_winsize = netrw_winsize 1248 let g:netrw_winsize = netrw_winsize
1208 endif 1249 endif
1209 setlocal winfixwidth 1250 setlocal winfixwidth
1210 let g:netrw_altv = keep_altv 1251 let g:netrw_altv = keep_altv
1211 let t:netrw_lexbufnr = bufnr("%") 1252 let t:netrw_lexbufnr = bufnr("%")
1253 " call Decho("let t:netrw_lexbufnr=".t:netrw_lexbufnr)
1254 " call Decho("t:netrw_lexposn".(exists("t:netrw_lexposn")? string(t:netrw_lexposn) : " n/a"))
1212 if exists("t:netrw_lexposn") 1255 if exists("t:netrw_lexposn")
1213 " call Decho("restoring to t:netrw_lexposn",'~'.expand("<slnum>")) 1256 " call Decho("restoring to t:netrw_lexposn",'~'.expand("<slnum>"))
1214 " call Decho("restoring posn to t:netrw_lexposn<".string(t:netrw_lexposn).">",'~'.expand("<slnum>")) 1257 " call Decho("restoring posn to t:netrw_lexposn<".string(t:netrw_lexposn).">",'~'.expand("<slnum>"))
1215 call winrestview(t:netrw_lexposn) 1258 call winrestview(t:netrw_lexposn)
1216 unlet t:netrw_lexposn 1259 unlet t:netrw_lexposn
1222 if a:rightside 1265 if a:rightside
1223 let g:netrw_chgwin= 1 1266 let g:netrw_chgwin= 1
1224 else 1267 else
1225 let g:netrw_chgwin= 2 1268 let g:netrw_chgwin= 2
1226 endif 1269 endif
1270 " call Decho("let g:netrw_chgwin=".g:netrw_chgwin)
1227 endif 1271 endif
1228 1272
1229 " call Dret("netrw#Lexplore") 1273 " call Dret("netrw#Lexplore")
1230 endfun 1274 endfun
1231 1275
1339 if (has("win32") || has("win95") || has("win64") || has("win16")) 1383 if (has("win32") || has("win95") || has("win64") || has("win16"))
1340 " transfer files one at time 1384 " transfer files one at time
1341 " call Decho("transfer files one at a time",'~'.expand("<slnum>")) 1385 " call Decho("transfer files one at a time",'~'.expand("<slnum>"))
1342 for fname in fnamelist 1386 for fname in fnamelist
1343 " call Decho("system(".g:netrw_localcopycmd." ".s:ShellEscape(fname)." ".s:ShellEscape(topath).")",'~'.expand("<slnum>")) 1387 " call Decho("system(".g:netrw_localcopycmd." ".s:ShellEscape(fname)." ".s:ShellEscape(topath).")",'~'.expand("<slnum>"))
1344 call system(g:netrw_localcopycmd." ".s:ShellEscape(fname)." ".s:ShellEscape(topath)) 1388 call system(g:netrw_localcopycmd.g:netrw_localcopycmdopt." ".s:ShellEscape(fname)." ".s:ShellEscape(topath))
1345 if v:shell_error != 0 1389 if v:shell_error != 0
1346 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localcopycmd<".g:netrw_localcopycmd."> to something that works",80) 1390 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localcopycmd<".g:netrw_localcopycmd."> to something that works",80)
1347 " call Dret("s:NetrwObtain 0 : failed: ".g:netrw_localcopycmd." ".s:ShellEscape(fname)." ".s:ShellEscape(topath)) 1391 " call Dret("s:NetrwObtain 0 : failed: ".g:netrw_localcopycmd." ".s:ShellEscape(fname)." ".s:ShellEscape(topath))
1348 return 1392 return
1349 endif 1393 endif
1351 else 1395 else
1352 " transfer files with one command 1396 " transfer files with one command
1353 " call Decho("transfer files with one command",'~'.expand("<slnum>")) 1397 " call Decho("transfer files with one command",'~'.expand("<slnum>"))
1354 let filelist= join(map(deepcopy(fnamelist),"s:ShellEscape(v:val)")) 1398 let filelist= join(map(deepcopy(fnamelist),"s:ShellEscape(v:val)"))
1355 " call Decho("system(".g:netrw_localcopycmd." ".filelist." ".s:ShellEscape(topath).")",'~'.expand("<slnum>")) 1399 " call Decho("system(".g:netrw_localcopycmd." ".filelist." ".s:ShellEscape(topath).")",'~'.expand("<slnum>"))
1356 call system(g:netrw_localcopycmd." ".filelist." ".s:ShellEscape(topath)) 1400 call system(g:netrw_localcopycmd.g:netrw_localcopycmdopt." ".filelist." ".s:ShellEscape(topath))
1357 if v:shell_error != 0 1401 if v:shell_error != 0
1358 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localcopycmd<".g:netrw_localcopycmd."> to something that works",80) 1402 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localcopycmd<".g:netrw_localcopycmd."> to something that works",80)
1359 " call Dret("s:NetrwObtain 0 : failed: ".g:netrw_localcopycmd." ".filelist." ".s:ShellEscape(topath)) 1403 " call Dret("s:NetrwObtain 0 : failed: ".g:netrw_localcopycmd." ".filelist." ".s:ShellEscape(topath))
1360 return 1404 return
1361 endif 1405 endif
1385 if b:netrw_fname =~ '/' 1429 if b:netrw_fname =~ '/'
1386 let path= substitute(b:netrw_fname,'^\(.*/\).\{-}$','\1','') 1430 let path= substitute(b:netrw_fname,'^\(.*/\).\{-}$','\1','')
1387 else 1431 else
1388 let path= "" 1432 let path= ""
1389 endif 1433 endif
1390 let filelist= join(map(deepcopy(fnamelist),'s:ShellEscape(g:netrw_machine.":".path.v:val,1)')) 1434 let filelist= join(map(deepcopy(fnamelist),'escape(s:ShellEscape(g:netrw_machine.":".path.v:val,1)," ")'))
1391 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_scp_cmd.s:ShellEscape(useport,1)." ".filelist." ".s:ShellEscape(tgtdir,1)) 1435 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_scp_cmd.s:ShellEscape(useport,1)." ".filelist." ".s:ShellEscape(tgtdir,1))
1392 1436
1393 elseif b:netrw_method == 2 1437 elseif b:netrw_method == 2
1394 " obtain file using ftp + .netrc 1438 " obtain file using ftp + .netrc
1395 " call Decho("obtain via ftp+.netrc (method #2)",'~'.expand("<slnum>")) 1439 " call Decho("obtain via ftp+.netrc (method #2)",'~'.expand("<slnum>"))
1555 endif 1599 endif
1556 " call Dret("netrw#Nread") 1600 " call Dret("netrw#Nread")
1557 endfun 1601 endfun
1558 1602
1559 " ------------------------------------------------------------------------ 1603 " ------------------------------------------------------------------------
1560 " s:NetrwOptionRestore: restore options (based on prior s:NetrwOptionSave) {{{2 1604 " s:NetrwOptionsSave: save options prior to setting to "netrw-buffer-standard" form {{{2
1561 fun! s:NetrwOptionRestore(vt) 1605 " Options get restored by s:NetrwOptionsRestore()
1562 " call Dfunc("s:NetrwOptionRestore(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> winnr($)=".winnr("$")) 1606 "
1563 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>")) 1607 " Option handling:
1564 if !exists("{a:vt}netrw_optionsave") 1608 " * save user's options (s:NetrwOptionsSave)
1565 call s:RestorePosn(s:netrw_nbcd) 1609 " * set netrw-safe options (s:NetrwOptionsSafe)
1566 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>")) 1610 " - change an option only when user option != safe option (s:netrwSetSafeSetting)
1567 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) 1611 " * restore user's options (s:netrwOPtionsRestore)
1568 " call Dret("s:NetrwOptionRestore : ".a:vt."netrw_optionsave doesn't exist") 1612 " - restore a user option when != safe option (s:NetrwRestoreSetting)
1569 return 1613 " vt: (variable type) normally its either "w:" or "s:"
1570 endif 1614 fun! s:NetrwOptionsSave(vt)
1571 unlet {a:vt}netrw_optionsave 1615 " call Dfunc("s:NetrwOptionsSave(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%")).">"." winnr($)=".winnr("$")." mod=".&mod." ma=".&ma)
1572
1573 if exists("+acd")
1574 if exists("{a:vt}netrw_acdkeep")
1575 " call Decho("g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd,'~'.expand("<slnum>"))
1576 let curdir = getcwd()
1577 let &l:acd = {a:vt}netrw_acdkeep
1578 unlet {a:vt}netrw_acdkeep
1579 if &l:acd
1580 call s:NetrwLcd(curdir)
1581 endif
1582 endif
1583 endif
1584 if exists("{a:vt}netrw_aikeep") |let &l:ai = {a:vt}netrw_aikeep |unlet {a:vt}netrw_aikeep |endif
1585 if exists("{a:vt}netrw_awkeep") |let &l:aw = {a:vt}netrw_awkeep |unlet {a:vt}netrw_awkeep |endif
1586 if exists("{a:vt}netrw_blkeep") |let &l:bl = {a:vt}netrw_blkeep |unlet {a:vt}netrw_blkeep |endif
1587 if exists("{a:vt}netrw_btkeep") |let &l:bt = {a:vt}netrw_btkeep |unlet {a:vt}netrw_btkeep |endif
1588 if exists("{a:vt}netrw_bombkeep") |let &l:bomb = {a:vt}netrw_bombkeep |unlet {a:vt}netrw_bombkeep |endif
1589 if exists("{a:vt}netrw_cedit") |let &cedit = {a:vt}netrw_cedit |unlet {a:vt}netrw_cedit |endif
1590 if exists("{a:vt}netrw_cikeep") |let &l:ci = {a:vt}netrw_cikeep |unlet {a:vt}netrw_cikeep |endif
1591 if exists("{a:vt}netrw_cinkeep") |let &l:cin = {a:vt}netrw_cinkeep |unlet {a:vt}netrw_cinkeep |endif
1592 if exists("{a:vt}netrw_cinokeep") |let &l:cino = {a:vt}netrw_cinokeep |unlet {a:vt}netrw_cinokeep |endif
1593 if exists("{a:vt}netrw_comkeep") |let &l:com = {a:vt}netrw_comkeep |unlet {a:vt}netrw_comkeep |endif
1594 if exists("{a:vt}netrw_cpokeep") |let &l:cpo = {a:vt}netrw_cpokeep |unlet {a:vt}netrw_cpokeep |endif
1595 if exists("{a:vt}netrw_diffkeep") |let &l:diff = {a:vt}netrw_diffkeep |unlet {a:vt}netrw_diffkeep |endif
1596 if exists("{a:vt}netrw_fenkeep") |let &l:fen = {a:vt}netrw_fenkeep |unlet {a:vt}netrw_fenkeep |endif
1597 if exists("g:netrw_ffkep") && g:netrw_ffkeep
1598 if exists("{a:vt}netrw_ffkeep") |let &l:ff = {a:vt}netrw_ffkeep |unlet {a:vt}netrw_ffkeep |endif
1599 endif
1600 if exists("{a:vt}netrw_fokeep") |let &l:fo = {a:vt}netrw_fokeep |unlet {a:vt}netrw_fokeep |endif
1601 if exists("{a:vt}netrw_gdkeep") |let &l:gd = {a:vt}netrw_gdkeep |unlet {a:vt}netrw_gdkeep |endif
1602 if exists("{a:vt}netrw_hidkeep") |let &l:hidden = {a:vt}netrw_hidkeep |unlet {a:vt}netrw_hidkeep |endif
1603 if exists("{a:vt}netrw_imkeep") |let &l:im = {a:vt}netrw_imkeep |unlet {a:vt}netrw_imkeep |endif
1604 if exists("{a:vt}netrw_iskkeep") |let &l:isk = {a:vt}netrw_iskkeep |unlet {a:vt}netrw_iskkeep |endif
1605 if exists("{a:vt}netrw_lskeep") |let &l:ls = {a:vt}netrw_lskeep |unlet {a:vt}netrw_lskeep |endif
1606 if exists("{a:vt}netrw_makeep") |let &l:ma = {a:vt}netrw_makeep |unlet {a:vt}netrw_makeep |endif
1607 if exists("{a:vt}netrw_magickeep")|let &l:magic = {a:vt}netrw_magickeep |unlet {a:vt}netrw_magickeep|endif
1608 if exists("{a:vt}netrw_modkeep") |let &l:mod = {a:vt}netrw_modkeep |unlet {a:vt}netrw_modkeep |endif
1609 if exists("{a:vt}netrw_nukeep") |let &l:nu = {a:vt}netrw_nukeep |unlet {a:vt}netrw_nukeep |endif
1610 if exists("{a:vt}netrw_rnukeep") |let &l:rnu = {a:vt}netrw_rnukeep |unlet {a:vt}netrw_rnukeep |endif
1611 if exists("{a:vt}netrw_repkeep") |let &l:report = {a:vt}netrw_repkeep |unlet {a:vt}netrw_repkeep |endif
1612 if exists("{a:vt}netrw_rokeep") |let &l:ro = {a:vt}netrw_rokeep |unlet {a:vt}netrw_rokeep |endif
1613 if exists("{a:vt}netrw_selkeep") |let &l:sel = {a:vt}netrw_selkeep |unlet {a:vt}netrw_selkeep |endif
1614 if exists("{a:vt}netrw_spellkeep")|let &l:spell = {a:vt}netrw_spellkeep |unlet {a:vt}netrw_spellkeep|endif
1615 if has("clipboard")
1616 if exists("{a:vt}netrw_starkeep") |let @* = {a:vt}netrw_starkeep |unlet {a:vt}netrw_starkeep |endif
1617 endif
1618 " Problem: start with liststyle=0; press <i> : result, following line resets l:ts.
1619 " if exists("{a:vt}netrw_tskeep") |let &l:ts = {a:vt}netrw_tskeep |unlet {a:vt}netrw_tskeep |endif
1620 if exists("{a:vt}netrw_twkeep") |let &l:tw = {a:vt}netrw_twkeep |unlet {a:vt}netrw_twkeep |endif
1621 if exists("{a:vt}netrw_wigkeep") |let &l:wig = {a:vt}netrw_wigkeep |unlet {a:vt}netrw_wigkeep |endif
1622 if exists("{a:vt}netrw_wrapkeep") |let &l:wrap = {a:vt}netrw_wrapkeep |unlet {a:vt}netrw_wrapkeep |endif
1623 if exists("{a:vt}netrw_writekeep")|let &l:write = {a:vt}netrw_writekeep |unlet {a:vt}netrw_writekeep|endif
1624 if exists("s:yykeep") |let @@ = s:yykeep |unlet s:yykeep |endif
1625 if exists("{a:vt}netrw_swfkeep")
1626 if &directory == ""
1627 " user hasn't specified a swapfile directory;
1628 " netrw will temporarily set the swapfile directory
1629 " to the current directory as returned by getcwd().
1630 let &l:directory= getcwd()
1631 sil! let &l:swf = {a:vt}netrw_swfkeep
1632 setl directory=
1633 unlet {a:vt}netrw_swfkeep
1634 elseif &l:swf != {a:vt}netrw_swfkeep
1635 if !g:netrw_use_noswf
1636 " following line causes a Press ENTER in windows -- can't seem to work around it!!!
1637 sil! let &l:swf= {a:vt}netrw_swfkeep
1638 endif
1639 unlet {a:vt}netrw_swfkeep
1640 endif
1641 endif
1642 if exists("{a:vt}netrw_dirkeep") && isdirectory(s:NetrwFile({a:vt}netrw_dirkeep)) && g:netrw_keepdir
1643 let dirkeep = substitute({a:vt}netrw_dirkeep,'\\','/','g')
1644 if exists("{a:vt}netrw_dirkeep")
1645 call s:NetrwLcd(dirkeep)
1646 unlet {a:vt}netrw_dirkeep
1647 endif
1648 endif
1649 if has("clipboard")
1650 if exists("{a:vt}netrw_regstar") |sil! let @*= {a:vt}netrw_regstar |unlet {a:vt}netrw_regstar |endif
1651 endif
1652 if exists("{a:vt}netrw_regslash")|sil! let @/= {a:vt}netrw_regslash|unlet {a:vt}netrw_regslash|endif
1653 call s:RestorePosn(s:netrw_nbcd)
1654
1655 " call Decho("g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd,'~'.expand("<slnum>"))
1656 " call Decho("fo=".&fo.(exists("+acd")? " acd=".&acd : " acd doesn't exist"),'~'.expand("<slnum>"))
1657 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
1658 " call Decho("diff=".&l:diff." win#".winnr()." w:netrw_diffkeep=".(exists("w:netrw_diffkeep")? w:netrw_diffkeep : "doesn't exist"),'~'.expand("<slnum>"))
1659 " call Decho("ts=".&l:ts,'~'.expand("<slnum>"))
1660 " Moved the filetype detect here from NetrwGetFile() because remote files
1661 " were having their filetype detect-generated settings overwritten by
1662 " NetrwOptionRestore.
1663 if &ft != "netrw"
1664 " call Decho("filetype detect (ft=".&ft.")",'~'.expand("<slnum>"))
1665 filetype detect
1666 endif
1667 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>"))
1668 " call Dret("s:NetrwOptionRestore : tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> modified=".&modified." modifiable=".&modifiable." readonly=".&readonly)
1669 endfun
1670
1671 " ---------------------------------------------------------------------
1672 " s:NetrwOptionSave: save options prior to setting to "netrw-buffer-standard" form {{{2
1673 " Options get restored by s:NetrwOptionRestore()
1674 " 06/08/07 : removed call to NetrwSafeOptions(), either placed
1675 " immediately after NetrwOptionSave() calls in NetRead
1676 " and NetWrite, or after the s:NetrwEnew() call in
1677 " NetrwBrowse.
1678 " vt: normally its "w:" or "s:" (a variable type)
1679 fun! s:NetrwOptionSave(vt)
1680 " call Dfunc("s:NetrwOptionSave(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%")).">"." winnr($)=".winnr("$")." mod=".&mod." ma=".&ma)
1681 " call Decho(a:vt."netrw_optionsave".(exists("{a:vt}netrw_optionsave")? ("=".{a:vt}netrw_optionsave) : " doesn't exist"),'~'.expand("<slnum>")) 1616 " call Decho(a:vt."netrw_optionsave".(exists("{a:vt}netrw_optionsave")? ("=".{a:vt}netrw_optionsave) : " doesn't exist"),'~'.expand("<slnum>"))
1682 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>")) 1617 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>"))
1683 1618
1684 if !exists("{a:vt}netrw_optionsave") 1619 if !exists("{a:vt}netrw_optionsave")
1685 let {a:vt}netrw_optionsave= 1 1620 let {a:vt}netrw_optionsave= 1
1686 else 1621 else
1687 " call Dret("s:NetrwOptionSave : options already saved") 1622 " call Dret("s:NetrwOptionsSave : options already saved")
1688 return 1623 return
1689 endif 1624 endif
1690 " call Decho("prior to save: fo=".&fo.(exists("+acd")? " acd=".&acd : " acd doesn't exist")." diff=".&l:diff,'~'.expand("<slnum>")) 1625 " call Decho("prior to save: fo=".&fo.(exists("+acd")? " acd=".&acd : " acd doesn't exist")." diff=".&l:diff,'~'.expand("<slnum>"))
1691 1626
1692 " Save current settings and current directory 1627 " Save current settings and current directory
1705 let {a:vt}netrw_cinokeep = &l:cino 1640 let {a:vt}netrw_cinokeep = &l:cino
1706 let {a:vt}netrw_comkeep = &l:com 1641 let {a:vt}netrw_comkeep = &l:com
1707 let {a:vt}netrw_cpokeep = &l:cpo 1642 let {a:vt}netrw_cpokeep = &l:cpo
1708 let {a:vt}netrw_diffkeep = &l:diff 1643 let {a:vt}netrw_diffkeep = &l:diff
1709 let {a:vt}netrw_fenkeep = &l:fen 1644 let {a:vt}netrw_fenkeep = &l:fen
1645 " call Decho("saving current settings: got here#1",'~'.expand("<slnum>"))
1710 if !exists("g:netrw_ffkeep") || g:netrw_ffkeep 1646 if !exists("g:netrw_ffkeep") || g:netrw_ffkeep
1711 let {a:vt}netrw_ffkeep = &l:ff 1647 let {a:vt}netrw_ffkeep = &l:ff
1712 endif 1648 endif
1713 let {a:vt}netrw_fokeep = &l:fo " formatoptions 1649 let {a:vt}netrw_fokeep = &l:fo " formatoptions
1714 let {a:vt}netrw_gdkeep = &l:gd " gdefault 1650 let {a:vt}netrw_gdkeep = &l:gd " gdefault
1723 let {a:vt}netrw_rnukeep = &l:rnu 1659 let {a:vt}netrw_rnukeep = &l:rnu
1724 let {a:vt}netrw_repkeep = &l:report 1660 let {a:vt}netrw_repkeep = &l:report
1725 let {a:vt}netrw_rokeep = &l:ro 1661 let {a:vt}netrw_rokeep = &l:ro
1726 let {a:vt}netrw_selkeep = &l:sel 1662 let {a:vt}netrw_selkeep = &l:sel
1727 let {a:vt}netrw_spellkeep = &l:spell 1663 let {a:vt}netrw_spellkeep = &l:spell
1664 " call Decho("saving current settings: got here#2",'~'.expand("<slnum>"))
1728 if !g:netrw_use_noswf 1665 if !g:netrw_use_noswf
1729 let {a:vt}netrw_swfkeep = &l:swf 1666 let {a:vt}netrw_swfkeep = &l:swf
1730 endif
1731 if has("clipboard")
1732 let {a:vt}netrw_starkeep = @*
1733 endif 1667 endif
1734 let {a:vt}netrw_tskeep = &l:ts 1668 let {a:vt}netrw_tskeep = &l:ts
1735 let {a:vt}netrw_twkeep = &l:tw " textwidth 1669 let {a:vt}netrw_twkeep = &l:tw " textwidth
1736 let {a:vt}netrw_wigkeep = &l:wig " wildignore 1670 let {a:vt}netrw_wigkeep = &l:wig " wildignore
1737 let {a:vt}netrw_wrapkeep = &l:wrap 1671 let {a:vt}netrw_wrapkeep = &l:wrap
1741 " call Decho("saving a few selected netrw-related variables",'~'.expand("<slnum>")) 1675 " call Decho("saving a few selected netrw-related variables",'~'.expand("<slnum>"))
1742 if g:netrw_keepdir 1676 if g:netrw_keepdir
1743 let {a:vt}netrw_dirkeep = getcwd() 1677 let {a:vt}netrw_dirkeep = getcwd()
1744 endif 1678 endif
1745 if has("clipboard") 1679 if has("clipboard")
1746 if &go =~# 'a' | sil! let {a:vt}netrw_regstar = @* | endif 1680 sil! let {a:vt}netrw_starkeep = @*
1747 endif 1681 sil! let {a:vt}netrw_pluskeep = @+
1748 sil! let {a:vt}netrw_regslash= @/ 1682 endif
1683 sil! let {a:vt}netrw_slashkeep= @/
1749 1684
1750 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>")) 1685 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>"))
1751 " call Dret("s:NetrwOptionSave : tab#".tabpagenr()." win#".winnr()) 1686 " call Dret("s:NetrwOptionsSave : tab#".tabpagenr()." win#".winnr())
1752 endfun 1687 endfun
1753 1688
1754 " ------------------------------------------------------------------------ 1689 " ---------------------------------------------------------------------
1755 " s:NetrwSafeOptions: sets options to help netrw do its job {{{2 1690 " s:NetrwOptionsSafe: sets options to help netrw do its job {{{2
1756 " Use s:NetrwSaveOptions() to save user settings 1691 " Use s:NetrwSaveOptions() to save user settings
1757 " Use s:NetrwOptionRestore() to restore user settings 1692 " Use s:NetrwOptionsRestore() to restore user settings
1758 fun! s:NetrwSafeOptions() 1693 fun! s:NetrwOptionsSafe(islocal)
1759 " call Dfunc("s:NetrwSafeOptions() win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%"))."> winnr($)=".winnr("$")) 1694 " call Dfunc("s:NetrwOptionsSafe(islocal=".a:islocal.") win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%"))."> winnr($)=".winnr("$"))
1760 " call Decho("win#".winnr()."'s ft=".&ft,'~'.expand("<slnum>")) 1695 " call Decho("win#".winnr()."'s ft=".&ft,'~'.expand("<slnum>"))
1761 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>")) 1696 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>"))
1762 if exists("+acd") | setl noacd | endif 1697 if exists("+acd") | call s:NetrwSetSafeSetting("&l:acd",0)|endif
1763 setl noai 1698 call s:NetrwSetSafeSetting("&l:ai",0)
1764 setl noaw 1699 call s:NetrwSetSafeSetting("&l:aw",0)
1765 setl nobl 1700 call s:NetrwSetSafeSetting("&l:bl",0)
1766 setl nobomb 1701 call s:NetrwSetSafeSetting("&l:bomb",0)
1767 setl bt=nofile 1702 if a:islocal
1768 setl noci 1703 call s:NetrwSetSafeSetting("&l:bt","nofile")
1769 setl nocin 1704 else
1770 setl bh=hide 1705 call s:NetrwSetSafeSetting("&l:bt","acwrite")
1771 setl cino= 1706 endif
1772 setl com= 1707 call s:NetrwSetSafeSetting("&l:ci",0)
1773 setl cpo-=a 1708 call s:NetrwSetSafeSetting("&l:cin",0)
1774 setl cpo-=A 1709 call s:NetrwSetSafeSetting("&l:bh","hide")
1710 call s:NetrwSetSafeSetting("&l:cino","")
1711 call s:NetrwSetSafeSetting("&l:com","")
1712 if &cpo =~ 'a' | call s:NetrwSetSafeSetting("&cpo",substitute(&cpo,'a','','g')) | endif
1713 if &cpo =~ 'A' | call s:NetrwSetSafeSetting("&cpo",substitute(&cpo,'A','','g')) | endif
1775 setl fo=nroql2 1714 setl fo=nroql2
1776 setl nohid 1715 call s:NetrwSetSafeSetting("&l:hid",0)
1777 setl noim 1716 call s:NetrwSetSafeSetting("&l:im",0)
1778 setl isk+=@ isk+=* isk+=/ 1717 setl isk+=@ isk+=* isk+=/
1779 setl magic 1718 call s:NetrwSetSafeSetting("&l:magic",1)
1780 if g:netrw_use_noswf 1719 if g:netrw_use_noswf
1781 setl noswf 1720 call s:NetrwSetSafeSetting("swf",0)
1782 endif 1721 endif
1783 setl report=10000 1722 call s:NetrwSetSafeSetting("&l:report",10000)
1784 setl sel=inclusive 1723 call s:NetrwSetSafeSetting("&l:sel","inclusive")
1785 setl nospell 1724 call s:NetrwSetSafeSetting("&l:spell",0)
1786 setl tw=0 1725 call s:NetrwSetSafeSetting("&l:tw",0)
1787 setl wig= 1726 call s:NetrwSetSafeSetting("&l:wig","")
1788 setl cedit& 1727 setl cedit&
1789 call s:NetrwCursor() 1728 call s:NetrwCursor()
1790 1729
1791 " allow the user to override safe options 1730 " allow the user to override safe options
1792 " call Decho("ft<".&ft."> ei=".&ei,'~'.expand("<slnum>")) 1731 " call Decho("ft<".&ft."> ei=".&ei,'~'.expand("<slnum>"))
1793 if &ft == "netrw" 1732 if &ft == "netrw"
1794 " call Decho("do any netrw FileType autocmds (doau FileType netrw)",'~'.expand("<slnum>")) 1733 " call Decho("do any netrw FileType autocmds (doau FileType netrw)",'~'.expand("<slnum>"))
1795 sil! keepalt NetrwKeepj doau FileType netrw 1734 keepalt NetrwKeepj doau FileType netrw
1796 endif 1735 endif
1797 1736
1798 " call Decho("fo=".&fo.(exists("+acd")? " acd=".&acd : " acd doesn't exist")." bh=".&l:bh." bt<".&bt.">",'~'.expand("<slnum>")) 1737 " call Decho("fo=".&fo.(exists("+acd")? " acd=".&acd : " acd doesn't exist")." bh=".&l:bh." bt<".&bt.">",'~'.expand("<slnum>"))
1799 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>")) 1738 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>"))
1800 " call Dret("s:NetrwSafeOptions") 1739 " call Dret("s:NetrwOptionsSafe")
1740 endfun
1741
1742 " ---------------------------------------------------------------------
1743 " s:NetrwOptionsRestore: restore options (based on prior s:NetrwOptionsSave) {{{2
1744 fun! s:NetrwOptionsRestore(vt)
1745 " call Dfunc("s:NetrwOptionsRestore(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> winnr($)=".winnr("$"))
1746 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>"))
1747 if !exists("{a:vt}netrw_optionsave")
1748 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>"))
1749 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
1750 " call Dret("s:NetrwOptionsRestore : ".a:vt."netrw_optionsave doesn't exist")
1751 return
1752 endif
1753 unlet {a:vt}netrw_optionsave
1754
1755 if exists("+acd")
1756 if exists("{a:vt}netrw_acdkeep")
1757 " call Decho("g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd,'~'.expand("<slnum>"))
1758 let curdir = getcwd()
1759 let &l:acd = {a:vt}netrw_acdkeep
1760 unlet {a:vt}netrw_acdkeep
1761 if &l:acd
1762 call s:NetrwLcd(curdir)
1763 endif
1764 endif
1765 endif
1766 call s:NetrwRestoreSetting(a:vt."netrw_aikeep","&l:ai")
1767 call s:NetrwRestoreSetting(a:vt."netrw_awkeep","&l:aw")
1768 call s:NetrwRestoreSetting(a:vt."netrw_blkeep","&l:bl")
1769 call s:NetrwRestoreSetting(a:vt."netrw_btkeep","&l:bt")
1770 call s:NetrwRestoreSetting(a:vt."netrw_bombkeep","&l:bomb")
1771 call s:NetrwRestoreSetting(a:vt."netrw_cedit","&cedit")
1772 call s:NetrwRestoreSetting(a:vt."netrw_cikeep","&l:ci")
1773 call s:NetrwRestoreSetting(a:vt."netrw_cinkeep","&l:cin")
1774 call s:NetrwRestoreSetting(a:vt."netrw_cinokeep","&l:cino")
1775 call s:NetrwRestoreSetting(a:vt."netrw_comkeep","&l:com")
1776 call s:NetrwRestoreSetting(a:vt."netrw_cpokeep","&l:cpo")
1777 call s:NetrwRestoreSetting(a:vt."netrw_diffkeep","&l:diff")
1778 call s:NetrwRestoreSetting(a:vt."netrw_fenkeep","&l:fen")
1779 if exists("g:netrw_ffkeep") && g:netrw_ffkeep
1780 call s:NetrwRestoreSetting(a:vt."netrw_ffkeep")","&l:ff")
1781 endif
1782 call s:NetrwRestoreSetting(a:vt."netrw_fokeep","&l:fo")
1783 call s:NetrwRestoreSetting(a:vt."netrw_gdkeep","&l:gd")
1784 call s:NetrwRestoreSetting(a:vt."netrw_hidkeep","&l:hidden")
1785 call s:NetrwRestoreSetting(a:vt."netrw_imkeep","&l:im")
1786 call s:NetrwRestoreSetting(a:vt."netrw_iskkeep","&l:isk")
1787 call s:NetrwRestoreSetting(a:vt."netrw_lskeep","&l:ls")
1788 call s:NetrwRestoreSetting(a:vt."netrw_makeep","&l:ma")
1789 call s:NetrwRestoreSetting(a:vt."netrw_magickeep","&l:magic")
1790 call s:NetrwRestoreSetting(a:vt."netrw_modkeep","&l:mod")
1791 call s:NetrwRestoreSetting(a:vt."netrw_nukeep","&l:nu")
1792 call s:NetrwRestoreSetting(a:vt."netrw_rnukeep","&l:rnu")
1793 call s:NetrwRestoreSetting(a:vt."netrw_repkeep","&l:report")
1794 call s:NetrwRestoreSetting(a:vt."netrw_rokeep","&l:ro")
1795 call s:NetrwRestoreSetting(a:vt."netrw_selkeep","&l:sel")
1796 call s:NetrwRestoreSetting(a:vt."netrw_spellkeep","&l:spell")
1797 call s:NetrwRestoreSetting(a:vt."netrw_twkeep","&l:tw")
1798 call s:NetrwRestoreSetting(a:vt."netrw_wigkeep","&l:wig")
1799 call s:NetrwRestoreSetting(a:vt."netrw_wrapkeep","&l:wrap")
1800 call s:NetrwRestoreSetting(a:vt."netrw_writekeep","&l:write")
1801 call s:NetrwRestoreSetting("s:yykeep","@@")
1802 " former problem: start with liststyle=0; press <i> : result, following line resets l:ts.
1803 " Fixed; in s:PerformListing, when w:netrw_liststyle is s:LONGLIST, will use a printf to pad filename with spaces
1804 " rather than by appending a tab which previously was using "&ts" to set the desired spacing. (Sep 28, 2018)
1805 call s:NetrwRestoreSetting(a:vt."netrw_tskeep","&l:ts")
1806
1807 if exists("{a:vt}netrw_swfkeep")
1808 if &directory == ""
1809 " user hasn't specified a swapfile directory;
1810 " netrw will temporarily set the swapfile directory
1811 " to the current directory as returned by getcwd().
1812 let &l:directory= getcwd()
1813 sil! let &l:swf = {a:vt}netrw_swfkeep
1814 setl directory=
1815 unlet {a:vt}netrw_swfkeep
1816 elseif &l:swf != {a:vt}netrw_swfkeep
1817 if !g:netrw_use_noswf
1818 " following line causes a Press ENTER in windows -- can't seem to work around it!!!
1819 sil! let &l:swf= {a:vt}netrw_swfkeep
1820 endif
1821 unlet {a:vt}netrw_swfkeep
1822 endif
1823 endif
1824 if exists("{a:vt}netrw_dirkeep") && isdirectory(s:NetrwFile({a:vt}netrw_dirkeep)) && g:netrw_keepdir
1825 let dirkeep = substitute({a:vt}netrw_dirkeep,'\\','/','g')
1826 if exists("{a:vt}netrw_dirkeep")
1827 call s:NetrwLcd(dirkeep)
1828 unlet {a:vt}netrw_dirkeep
1829 endif
1830 endif
1831 if has("clipboard")
1832 call s:NetrwRestoreSetting(a:vt."netrw_starkeep","@*")
1833 call s:NetrwRestoreSetting(a:vt."netrw_pluskeep","@+")
1834 endif
1835 call s:NetrwRestoreSetting(a:vt."netrw_slashkeep","@/")
1836
1837 " call Decho("g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd,'~'.expand("<slnum>"))
1838 " call Decho("fo=".&fo.(exists("+acd")? " acd=".&acd : " acd doesn't exist"),'~'.expand("<slnum>"))
1839 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
1840 " call Decho("diff=".&l:diff." win#".winnr()." w:netrw_diffkeep=".(exists("w:netrw_diffkeep")? w:netrw_diffkeep : "doesn't exist"),'~'.expand("<slnum>"))
1841 " call Decho("ts=".&l:ts,'~'.expand("<slnum>"))
1842 " Moved the filetype detect here from NetrwGetFile() because remote files
1843 " were having their filetype detect-generated settings overwritten by
1844 " NetrwOptionRestore.
1845 if &ft != "netrw"
1846 " call Decho("filetype detect (ft=".&ft.")",'~'.expand("<slnum>"))
1847 filetype detect
1848 endif
1849 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>"))
1850 " call Dret("s:NetrwOptionsRestore : tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> modified=".&modified." modifiable=".&modifiable." readonly=".&readonly)
1851 endfun
1852
1853 " ---------------------------------------------------------------------
1854 " s:NetrwSetSafeSetting: sets an option to a safe setting {{{2
1855 " but only when the options' value and the safe setting differ
1856 " Doing this means that netrw will not come up as having changed a
1857 " setting last when it really didn't actually change it.
1858 "
1859 " Called from s:NetrwOptionsSafe
1860 " ex. call s:NetrwSetSafeSetting("&l:sel","inclusive")
1861 fun! s:NetrwSetSafeSetting(setting,safesetting)
1862 " call Dfunc("s:NetrwSetSafeSetting(setting<".a:setting."> safesetting<".a:safesetting.">)")
1863
1864 if a:setting =~ '^&'
1865 " call Decho("fyi: a:setting starts with &")
1866 exe "let settingval= ".a:setting
1867 " call Decho("fyi: settingval<".settingval.">")
1868
1869 if settingval != a:safesetting
1870 " call Decho("set setting<".a:setting."> to option value<".a:safesetting.">")
1871 if type(a:safesetting) == 0
1872 exe "let ".a:setting."=".a:safesetting
1873 elseif type(a:safesetting) == 1
1874 exe "let ".a:setting."= '".a:safesetting."'"
1875 else
1876 call netrw#ErrorMsg(s:ERROR,"(s:NetrwRestoreSetting) doesn't know how to restore ".a:setting." with a safesetting of type#".type(a:safesetting),105)
1877 endif
1878 endif
1879 endif
1880
1881 " call Dret("s:NetrwSetSafeSetting")
1882 endfun
1883
1884 " ------------------------------------------------------------------------
1885 " s:NetrwRestoreSetting: restores specified setting using associated keepvar, {{{2
1886 " but only if the setting value differs from the associated keepvar.
1887 " Doing this means that netrw will not come up as having changed a
1888 " setting last when it really didn't actually change it.
1889 "
1890 " Used by s:NetrwOptionsRestore() to restore each netrw-senstive setting
1891 " keepvars are set up by s:NetrwOptionsSave
1892 fun! s:NetrwRestoreSetting(keepvar,setting)
1893 "" call Dfunc("s:NetrwRestoreSetting(a:keepvar<".a:keepvar."> a:setting<".a:setting.">)")
1894
1895 " typically called from s:NetrwOptionsRestore
1896 " call s:NetrwRestoreSettings(keep-option-variable-name,'associated-option')
1897 " ex. call s:NetrwRestoreSetting(a:vt."netrw_selkeep","&l:sel")
1898 " Restores option (if different) from a keepvar
1899 if exists(a:keepvar)
1900 exe "let keepvarval= ".a:keepvar
1901 exe "let setting= ".a:setting
1902
1903 "" call Decho("fyi: a:keepvar<".a:keepvar."> exists")
1904 "" call Decho("fyi: keepvarval=".keepvarval)
1905 "" call Decho("fyi: a:setting<".a:setting."> setting<".setting.">")
1906
1907 if setting != keepvarval
1908 "" call Decho("restore setting<".a:setting."=".setting."> to keepvarval<".keepvarval.">")
1909 if type(a:setting) == 0
1910 exe "let ".a:setting."= ".keepvarval
1911 elseif type(a:setting) == 1
1912 exe "let ".a:setting."= '".keepvarval."'"
1913 else
1914 call netrw#ErrorMsg(s:ERROR,"(s:NetrwRestoreSetting) doesn't know how to restore ".a:keepvar." with a setting of type#".type(a:setting),105)
1915 endif
1916 endif
1917
1918 exe "unlet ".a:keepvar
1919 endif
1920
1921 "" call Dret("s:NetrwRestoreSetting")
1801 endfun 1922 endfun
1802 1923
1803 " --------------------------------------------------------------------- 1924 " ---------------------------------------------------------------------
1804 " NetrwStatusLine: {{{2 1925 " NetrwStatusLine: {{{2
1805 fun! NetrwStatusLine() 1926 fun! NetrwStatusLine()
1831 else 1952 else
1832 return "Match ".w:netrw_explore_mtchcnt." of ".w:netrw_explore_listlen 1953 return "Match ".w:netrw_explore_mtchcnt." of ".w:netrw_explore_listlen
1833 endif 1954 endif
1834 endfun 1955 endfun
1835 1956
1836 " --------------------------------------------------------------------- 1957 " ===============================
1837 " Netrw Transfer Functions: {{{1 1958 " Netrw Transfer Functions: {{{1
1838 " =============================== 1959 " ===============================
1839 1960
1840 " ------------------------------------------------------------------------ 1961 " ------------------------------------------------------------------------
1841 " netrw#NetRead: responsible for reading a file over the net {{{2 1962 " netrw#NetRead: responsible for reading a file over the net {{{2
1845 " =3 obtain file, but leave in temporary format 1966 " =3 obtain file, but leave in temporary format
1846 fun! netrw#NetRead(mode,...) 1967 fun! netrw#NetRead(mode,...)
1847 " call Dfunc("netrw#NetRead(mode=".a:mode.",...) a:0=".a:0." ".g:loaded_netrw.((a:0 > 0)? " a:1<".a:1.">" : "")) 1968 " call Dfunc("netrw#NetRead(mode=".a:mode.",...) a:0=".a:0." ".g:loaded_netrw.((a:0 > 0)? " a:1<".a:1.">" : ""))
1848 1969
1849 " NetRead: save options {{{3 1970 " NetRead: save options {{{3
1850 call s:NetrwOptionSave("w:") 1971 call s:NetrwOptionsSave("w:")
1851 call s:NetrwSafeOptions() 1972 call s:NetrwOptionsSafe(0)
1852 call s:RestoreCursorline() 1973 call s:RestoreCursorline()
1853 " NetrwSafeOptions sets a buffer up for a netrw listing, which includes buflisting off. 1974 " NetrwSafeOptions sets a buffer up for a netrw listing, which includes buflisting off.
1854 " However, this setting is not wanted for a remote editing session. The buffer should be "nofile", still. 1975 " However, this setting is not wanted for a remote editing session. The buffer should be "nofile", still.
1855 setl bl 1976 setl bl
1856 " call Decho("(netrw#NetRead) buf#".bufnr("%")."<".bufname("%")."> bl=".&bl." bt=".&bt." bh=".&bh,'~'.expand("<slnum>")) 1977 " call Decho("buf#".bufnr("%")."<".bufname("%")."> bl=".&bl." bt=".&bt." bh=".&bh,'~'.expand("<slnum>"))
1857 1978
1858 " NetRead: interpret mode into a readcmd {{{3 1979 " NetRead: interpret mode into a readcmd {{{3
1859 if a:mode == 0 " read remote file before current line 1980 if a:mode == 0 " read remote file before current line
1860 let readcmd = "0r" 1981 let readcmd = "0r"
1861 elseif a:mode == 1 " read file after current line 1982 elseif a:mode == 1 " read file after current line
1941 let ichoice= ichoice + 1 2062 let ichoice= ichoice + 1
1942 2063
1943 " NetRead: Determine method of read (ftp, rcp, etc) {{{3 2064 " NetRead: Determine method of read (ftp, rcp, etc) {{{3
1944 call s:NetrwMethod(choice) 2065 call s:NetrwMethod(choice)
1945 if !exists("b:netrw_method") || b:netrw_method < 0 2066 if !exists("b:netrw_method") || b:netrw_method < 0
1946 " call Dfunc("netrw#NetRead : unsupported method") 2067 " call Dret("netrw#NetRead : unsupported method")
1947 return 2068 return
1948 endif 2069 endif
1949 let tmpfile= s:GetTempfile(b:netrw_fname) " apply correct suffix 2070 let tmpfile= s:GetTempfile(b:netrw_fname) " apply correct suffix
1950 2071
1951 " Check whether or not NetrwBrowse() should be handling this request 2072 " Check whether or not NetrwBrowse() should be handling this request
2101 if g:netrw_scp_cmd =~ '^scp' && (has("win32") || has("win95") || has("win64") || has("win16")) 2222 if g:netrw_scp_cmd =~ '^scp' && (has("win32") || has("win95") || has("win64") || has("win16"))
2102 let tmpfile_get = substitute(tr(tmpfile, '\', '/'), '^\(\a\):[/\\]\(.*\)$', '/\1/\2', '') 2223 let tmpfile_get = substitute(tr(tmpfile, '\', '/'), '^\(\a\):[/\\]\(.*\)$', '/\1/\2', '')
2103 else 2224 else
2104 let tmpfile_get = tmpfile 2225 let tmpfile_get = tmpfile
2105 endif 2226 endif
2106 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".s:ShellEscape(g:netrw_machine.":".b:netrw_fname,1)." ".s:ShellEscape(tmpfile_get,1)) 2227 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".escape(s:ShellEscape(g:netrw_machine.":".b:netrw_fname,1),' ')." ".s:ShellEscape(tmpfile_get,1))
2107 let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) 2228 let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method)
2108 let b:netrw_lastfile = choice 2229 let b:netrw_lastfile = choice
2109 2230
2110 "......................................... 2231 ".........................................
2111 " NetRead: (http) NetRead Method #5 (wget) {{{3 2232 " NetRead: (http) NetRead Method #5 (wget) {{{3
2183 2304
2184 "......................................... 2305 ".........................................
2185 " NetRead: (rsync) NetRead Method #7 {{{3 2306 " NetRead: (rsync) NetRead Method #7 {{{3
2186 elseif b:netrw_method == 7 2307 elseif b:netrw_method == 7
2187 " call Decho("read via rsync (method #7)",'~'.expand("<slnum>")) 2308 " call Decho("read via rsync (method #7)",'~'.expand("<slnum>"))
2188 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".s:ShellEscape(g:netrw_machine.":".b:netrw_fname,1)." ".s:ShellEscape(tmpfile,1)) 2309 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".s:ShellEscape(g:netrw_machine.g:netrw_rsync_sep.b:netrw_fname,1)." ".s:ShellEscape(tmpfile,1))
2189 let result = s:NetrwGetFile(readcmd,tmpfile, b:netrw_method) 2310 let result = s:NetrwGetFile(readcmd,tmpfile, b:netrw_method)
2190 let b:netrw_lastfile = choice 2311 let b:netrw_lastfile = choice
2191 2312
2192 "......................................... 2313 ".........................................
2193 " NetRead: (fetch) NetRead Method #8 {{{3 2314 " NetRead: (fetch) NetRead Method #8 {{{3
2250 endif 2371 endif
2251 if s:FileReadable(tmpfile) && tmpfile !~ '.tar.bz2$' && tmpfile !~ '.tar.gz$' && tmpfile !~ '.zip' && tmpfile !~ '.tar' && readcmd != 't' && tmpfile !~ '.tar.xz$' && tmpfile !~ '.txz' 2372 if s:FileReadable(tmpfile) && tmpfile !~ '.tar.bz2$' && tmpfile !~ '.tar.gz$' && tmpfile !~ '.zip' && tmpfile !~ '.tar' && readcmd != 't' && tmpfile !~ '.tar.xz$' && tmpfile !~ '.txz'
2252 " call Decho("cleanup by deleting tmpfile<".tmpfile.">",'~'.expand("<slnum>")) 2373 " call Decho("cleanup by deleting tmpfile<".tmpfile.">",'~'.expand("<slnum>"))
2253 NetrwKeepj call s:NetrwDelete(tmpfile) 2374 NetrwKeepj call s:NetrwDelete(tmpfile)
2254 endif 2375 endif
2255 NetrwKeepj call s:NetrwOptionRestore("w:") 2376 NetrwKeepj call s:NetrwOptionsRestore("w:")
2256 2377
2257 " call Dret("netrw#NetRead :5 getcwd<".getcwd().">") 2378 " call Dret("netrw#NetRead :5 getcwd<".getcwd().">")
2258 endfun 2379 endfun
2259 2380
2260 " ------------------------------------------------------------------------ 2381 " ------------------------------------------------------------------------
2262 fun! netrw#NetWrite(...) range 2383 fun! netrw#NetWrite(...) range
2263 " call Dfunc("netrw#NetWrite(a:0=".a:0.") ".g:loaded_netrw) 2384 " call Dfunc("netrw#NetWrite(a:0=".a:0.") ".g:loaded_netrw)
2264 2385
2265 " NetWrite: option handling {{{3 2386 " NetWrite: option handling {{{3
2266 let mod= 0 2387 let mod= 0
2267 call s:NetrwOptionSave("w:") 2388 call s:NetrwOptionsSave("w:")
2268 call s:NetrwSafeOptions() 2389 call s:NetrwOptionsSafe(0)
2269 2390
2270 " NetWrite: Get Temporary Filename {{{3 2391 " NetWrite: Get Temporary Filename {{{3
2271 let tmpfile= s:GetTempfile("") 2392 let tmpfile= s:GetTempfile("")
2272 if tmpfile == "" 2393 if tmpfile == ""
2273 " call Dret("netrw#NetWrite : unable to get a tempfile!") 2394 " call Dret("netrw#NetWrite : unable to get a tempfile!")
2372 " ============= 2493 " =============
2373 " NetWrite: Perform Protocol-Based Write {{{3 2494 " NetWrite: Perform Protocol-Based Write {{{3
2374 " ============================ 2495 " ============================
2375 if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1 2496 if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1
2376 echo "(netrw) Processing your write request..." 2497 echo "(netrw) Processing your write request..."
2377 " call Decho("(netrw) Processing your write request...",'~'.expand("<slnum>")) 2498 " call Decho("Processing your write request...",'~'.expand("<slnum>"))
2378 endif 2499 endif
2379 2500
2380 "......................................... 2501 ".........................................
2381 " NetWrite: (rcp) NetWrite Method #1 {{{3 2502 " NetWrite: (rcp) NetWrite Method #1 {{{3
2382 if b:netrw_method == 1 2503 if b:netrw_method == 1
2525 let curl= substitute(g:netrw_http_put_cmd,'\s\+.*$',"","") 2646 let curl= substitute(g:netrw_http_put_cmd,'\s\+.*$',"","")
2526 if executable(curl) 2647 if executable(curl)
2527 let url= g:netrw_choice 2648 let url= g:netrw_choice
2528 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_http_put_cmd." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(url,1) ) 2649 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_http_put_cmd." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(url,1) )
2529 elseif !exists("g:netrw_quiet") 2650 elseif !exists("g:netrw_quiet")
2530 call netrw#ErrorMsg(s:ERROR,"can't write to http using <".g:netrw_http_put_cmd".">".",16) 2651 call netrw#ErrorMsg(s:ERROR,"can't write to http using <".g:netrw_http_put_cmd.">".",16)
2531 endif 2652 endif
2532 2653
2533 "......................................... 2654 ".........................................
2534 " NetWrite: (dav) NetWrite Method #6 (cadaver) {{{3 2655 " NetWrite: (dav) NetWrite Method #6 (cadaver) {{{3
2535 elseif b:netrw_method == 6 2656 elseif b:netrw_method == 6
2569 2690
2570 "......................................... 2691 ".........................................
2571 " NetWrite: (rsync) NetWrite Method #7 {{{3 2692 " NetWrite: (rsync) NetWrite Method #7 {{{3
2572 elseif b:netrw_method == 7 2693 elseif b:netrw_method == 7
2573 " call Decho("write via rsync (method #7)",'~'.expand("<slnum>")) 2694 " call Decho("write via rsync (method #7)",'~'.expand("<slnum>"))
2574 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(g:netrw_machine.":".b:netrw_fname,1)) 2695 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(g:netrw_machine.g:netrw_rsync_sep.b:netrw_fname,1))
2575 let b:netrw_lastfile = choice 2696 let b:netrw_lastfile = choice
2576 2697
2577 "......................................... 2698 ".........................................
2578 " NetWrite: (sftp) NetWrite Method #9 {{{3 2699 " NetWrite: (sftp) NetWrite Method #9 {{{3
2579 elseif b:netrw_method == 9 2700 elseif b:netrw_method == 9
2614 " call Decho("cleanup",'~'.expand("<slnum>")) 2735 " call Decho("cleanup",'~'.expand("<slnum>"))
2615 if s:FileReadable(tmpfile) 2736 if s:FileReadable(tmpfile)
2616 " call Decho("tmpfile<".tmpfile."> readable, will now delete it",'~'.expand("<slnum>")) 2737 " call Decho("tmpfile<".tmpfile."> readable, will now delete it",'~'.expand("<slnum>"))
2617 call s:NetrwDelete(tmpfile) 2738 call s:NetrwDelete(tmpfile)
2618 endif 2739 endif
2619 call s:NetrwOptionRestore("w:") 2740 call s:NetrwOptionsRestore("w:")
2620 2741
2621 if a:firstline == 1 && a:lastline == line("$") 2742 if a:firstline == 1 && a:lastline == line("$")
2622 " restore modifiability; usually equivalent to set nomod 2743 " restore modifiability; usually equivalent to set nomod
2623 let &mod= mod 2744 let &mod= mod
2624 " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) 2745 " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
2674 endfun 2795 endfun
2675 2796
2676 " --------------------------------------------------------------------- 2797 " ---------------------------------------------------------------------
2677 " netrw#SetTreetop: resets the tree top to the current directory/specified directory {{{2 2798 " netrw#SetTreetop: resets the tree top to the current directory/specified directory {{{2
2678 " (implements the :Ntree command) 2799 " (implements the :Ntree command)
2679 fun! netrw#SetTreetop(...) 2800 fun! netrw#SetTreetop(iscmd,...)
2680 " call Dfunc("netrw#SetTreetop(".((a:0 > 0)? a:1 : "").") a:0=".a:0) 2801 " call Dfunc("netrw#SetTreetop(iscmd=".a:iscmd." ".((a:0 > 0)? a:1 : "").") a:0=".a:0)
2681 2802 " call Decho("w:netrw_treetop<".w:netrw_treetop.">")
2803
2804 " iscmd==0: netrw#SetTreetop called using gn mapping
2805 " iscmd==1: netrw#SetTreetop called using :Ntree from the command line
2806 " call Decho("(iscmd=".a:iscmd.": called using :Ntree from command line",'~'.expand("<slnum>"))
2682 " clear out the current tree 2807 " clear out the current tree
2683 if exists("w:netrw_treetop") 2808 if exists("w:netrw_treetop")
2684 " call Decho("clearing out current tree",'~'.expand("<slnum>")) 2809 " call Decho("clearing out current tree",'~'.expand("<slnum>"))
2685 let inittreetop= w:netrw_treetop 2810 let inittreetop= w:netrw_treetop
2686 unlet w:netrw_treetop 2811 unlet w:netrw_treetop
2687 endif 2812 endif
2688 if exists("w:netrw_treedict") 2813 if exists("w:netrw_treedict")
2689 " call Decho("freeing w:netrw_treedict",'~'.expand("<slnum>")) 2814 " call Decho("freeing w:netrw_treedict",'~'.expand("<slnum>"))
2690 unlet w:netrw_treedict 2815 unlet w:netrw_treedict
2691 endif 2816 endif
2692 2817 " call Decho("inittreetop<".(exists("inittreetop")? inittreetop : "n/a").">")
2693 if a:1 == "" && exists("inittreetop") 2818
2819 if (a:iscmd == 0 || a:1 == "") && exists("inittreetop")
2694 let treedir= s:NetrwTreePath(inittreetop) 2820 let treedir= s:NetrwTreePath(inittreetop)
2695 " call Decho("treedir<".treedir.">",'~'.expand("<slnum>")) 2821 " call Decho("treedir<".treedir.">",'~'.expand("<slnum>"))
2696 else 2822 else
2697 if isdirectory(s:NetrwFile(a:1)) 2823 if isdirectory(s:NetrwFile(a:1))
2698 " call Decho("a:1<".a:1."> is a directory",'~'.expand("<slnum>")) 2824 " call Decho("a:1<".a:1."> is a directory",'~'.expand("<slnum>"))
2699 let treedir= a:1 2825 let treedir= a:1
2700 elseif exists("b:netrw_curdir") && (isdirectory(s:NetrwFile(b:netrw_curdir."/".a:1)) || a:1 =~ '^\a\{3,}://') 2826 elseif exists("b:netrw_curdir") && (isdirectory(s:NetrwFile(b:netrw_curdir."/".a:1)) || a:1 =~ '^\a\{3,}://')
2701 let treedir= b:netrw_curdir."/".a:1 2827 let treedir= b:netrw_curdir."/".a:1
2702 " call Decho("a:1<".a:1."> is NOT a directory, trying treedir<".treedir.">",'~'.expand("<slnum>")) 2828 " call Decho("a:1<".a:1."> is NOT a directory, using treedir<".treedir.">",'~'.expand("<slnum>"))
2703 else 2829 else
2704 " normally the cursor is left in the message window. 2830 " normally the cursor is left in the message window.
2705 " However, here this results in the directory being listed in the message window, which is not wanted. 2831 " However, here this results in the directory being listed in the message window, which is not wanted.
2706 let netrwbuf= bufnr("%") 2832 let netrwbuf= bufnr("%")
2707 call netrw#ErrorMsg(s:ERROR,"sorry, ".a:1." doesn't seem to be a directory!",95) 2833 call netrw#ErrorMsg(s:ERROR,"sorry, ".a:1." doesn't seem to be a directory!",95)
2708 exe bufwinnr(netrwbuf)."wincmd w" 2834 exe bufwinnr(netrwbuf)."wincmd w"
2709 let treedir= "." 2835 let treedir= "."
2710 endif 2836 endif
2711 endif 2837 endif
2712 " call Decho("treedir<".treedir.">",'~'.expand("<slnum>")) 2838 " call Decho("treedir<".treedir.">",'~'.expand("<slnum>"))
2839
2840 " determine if treedir is remote or local
2713 let islocal= expand("%") !~ '^\a\{3,}://' 2841 let islocal= expand("%") !~ '^\a\{3,}://'
2714 " call Decho("islocal=".islocal,'~'.expand("<slnum>")) 2842 " call Decho("islocal=".islocal,'~'.expand("<slnum>"))
2843
2844 " browse the resulting directory
2715 if islocal 2845 if islocal
2716 call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(islocal,treedir)) 2846 call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(islocal,treedir))
2717 else 2847 else
2718 call s:NetrwBrowse(islocal,s:NetrwBrowseChgDir(islocal,treedir)) 2848 call s:NetrwBrowse(islocal,s:NetrwBrowseChgDir(islocal,treedir))
2719 endif 2849 endif
2850
2720 " call Dret("netrw#SetTreetop") 2851 " call Dret("netrw#SetTreetop")
2721 endfun 2852 endfun
2722 2853
2723 " =========================================== 2854 " ===========================================
2724 " s:NetrwGetFile: Function to read temporary file "tfile" with command "readcmd". {{{2 2855 " s:NetrwGetFile: Function to read temporary file "tfile" with command "readcmd". {{{2
2753 if g:netrw_cygwin 2884 if g:netrw_cygwin
2754 let tfile= substitute(a:tfile,g:netrw_cygdrive.'/\(.\)','\1:','') 2885 let tfile= substitute(a:tfile,g:netrw_cygdrive.'/\(.\)','\1:','')
2755 else 2886 else
2756 let tfile= a:tfile 2887 let tfile= a:tfile
2757 endif 2888 endif
2758 " call Decho("exe sil! keepalt file ".fnameescape(tfile),'~'.expand("<slnum>")) 2889 call s:NetrwBufRename(tfile)
2759 exe "sil! keepalt file ".fnameescape(tfile)
2760 2890
2761 " edit temporary file (ie. read the temporary file in) 2891 " edit temporary file (ie. read the temporary file in)
2762 if rfile =~ '\.zip$' 2892 if rfile =~ '\.zip$'
2763 " call Decho("handling remote zip file with zip#Browse(tfile<".tfile.">)",'~'.expand("<slnum>")) 2893 " call Decho("handling remote zip file with zip#Browse(tfile<".tfile.">)",'~'.expand("<slnum>"))
2764 call zip#Browse(tfile) 2894 call zip#Browse(tfile)
2781 " call Decho("edit temporary file",'~'.expand("<slnum>")) 2911 " call Decho("edit temporary file",'~'.expand("<slnum>"))
2782 NetrwKeepj e! 2912 NetrwKeepj e!
2783 endif 2913 endif
2784 2914
2785 " rename buffer back to remote filename 2915 " rename buffer back to remote filename
2786 " call Decho("exe sil! keepalt file ".fnameescape(rfile),'~'.expand("<slnum>")) 2916 call s:NetrwBufRename(rfile)
2787 exe "sil! NetrwKeepj keepalt file ".fnameescape(rfile)
2788 2917
2789 " Detect filetype of local version of remote file. 2918 " Detect filetype of local version of remote file.
2790 " Note that isk must not include a "/" for scripts.vim 2919 " Note that isk must not include a "/" for scripts.vim
2791 " to process this detection correctly. 2920 " to process this detection correctly.
2792 " call Decho("detect filetype of local version of remote file",'~'.expand("<slnum>")) 2921 " call Decho("detect filetype of local version of remote file",'~'.expand("<slnum>"))
2793 let iskkeep= &l:isk 2922 let iskkeep= &l:isk
2794 setl isk-=/ 2923 setl isk-=/
2795 let &l:isk= iskkeep 2924 let &l:isk= iskkeep
2796 " call Dredir("renamed buffer back to remote filename<".rfile."> : expand(%)<".expand("%").">","ls!") 2925 " call Dredir("ls!","NetrwGetFile (renamed buffer back to remote filename<".rfile."> : expand(%)<".expand("%").">)")
2797 let line1 = 1 2926 let line1 = 1
2798 let line2 = line("$") 2927 let line2 = line("$")
2799 2928
2800 elseif !&ma 2929 elseif !&ma
2801 " attempting to read a file after the current line in the file, but the buffer is not modifiable 2930 " attempting to read a file after the current line in the file, but the buffer is not modifiable
2862 " g:netrw_machine= hostname 2991 " g:netrw_machine= hostname
2863 " b:netrw_fname = filename 2992 " b:netrw_fname = filename
2864 " g:netrw_port = optional port number (for ftp) 2993 " g:netrw_port = optional port number (for ftp)
2865 " g:netrw_choice = copy of input url (choice) 2994 " g:netrw_choice = copy of input url (choice)
2866 fun! s:NetrwMethod(choice) 2995 fun! s:NetrwMethod(choice)
2867 " call Dfunc("NetrwMethod(a:choice<".a:choice.">)") 2996 " call Dfunc("s:NetrwMethod(a:choice<".a:choice.">)")
2868 2997
2869 " sanity check: choice should have at least three slashes in it 2998 " sanity check: choice should have at least three slashes in it
2870 if strlen(substitute(a:choice,'[^/]','','g')) < 3 2999 if strlen(substitute(a:choice,'[^/]','','g')) < 3
2871 call netrw#ErrorMsg(s:ERROR,"not a netrw-style url; netrw uses protocol://[user@]hostname[:port]/[path])",78) 3000 call netrw#ErrorMsg(s:ERROR,"not a netrw-style url; netrw uses protocol://[user@]hostname[:port]/[path])",78)
2872 let b:netrw_method = -1 3001 let b:netrw_method = -1
2873 " call Dret("NetrwMethod : incorrect url format<".a:choice.">") 3002 " call Dret("s:NetrwMethod : incorrect url format<".a:choice.">")
2874 return 3003 return
2875 endif 3004 endif
2876 3005
2877 " record current g:netrw_machine, if any 3006 " record current g:netrw_machine, if any
2878 " curmachine used if protocol == ftp and no .netrc 3007 " curmachine used if protocol == ftp and no .netrc
2981 if userid != "" 3110 if userid != ""
2982 let g:netrw_uid= userid 3111 let g:netrw_uid= userid
2983 endif 3112 endif
2984 3113
2985 if curmachine != g:netrw_machine 3114 if curmachine != g:netrw_machine
2986 if exists("s:netwr_hup[".g:netrw_machine."]") 3115 if exists("s:netrw_hup[".g:netrw_machine."]")
2987 call NetUserPass("ftp:".g:netrw_machine) 3116 call NetUserPass("ftp:".g:netrw_machine)
2988 elseif exists("s:netrw_passwd") 3117 elseif exists("s:netrw_passwd")
2989 " if there's a change in hostname, require password re-entry 3118 " if there's a change in hostname, require password re-entry
2990 unlet s:netrw_passwd 3119 unlet s:netrw_passwd
2991 endif 3120 endif
3111 " endif "Decho 3240 " endif "Decho
3112 " if exists("s:netrw_passwd") "Decho 3241 " if exists("s:netrw_passwd") "Decho
3113 " call Decho("s:netrw_passwd <".s:netrw_passwd.">",'~'.expand("<slnum>")) 3242 " call Decho("s:netrw_passwd <".s:netrw_passwd.">",'~'.expand("<slnum>"))
3114 " endif "Decho 3243 " endif "Decho
3115 " call Decho("b:netrw_fname <".b:netrw_fname.">",'~'.expand("<slnum>")) 3244 " call Decho("b:netrw_fname <".b:netrw_fname.">",'~'.expand("<slnum>"))
3116 " call Dret("NetrwMethod : b:netrw_method=".b:netrw_method." g:netrw_port=".g:netrw_port) 3245 " call Dret("s:NetrwMethod : b:netrw_method=".b:netrw_method." g:netrw_port=".g:netrw_port)
3117 endfun 3246 endfun
3118 3247
3119 " ------------------------------------------------------------------------ 3248 " ------------------------------------------------------------------------
3120 " NetReadFixup: this sort of function is typically written by the user {{{2 3249 " NetReadFixup: this sort of function is typically written by the user {{{2
3121 " to handle extra junk that their system's ftp dumps 3250 " to handle extra junk that their system's ftp dumps
3255 endif 3384 endif
3256 3385
3257 " call Dret("NetUserPass : uid<".g:netrw_uid."> passwd<".s:netrw_passwd.">") 3386 " call Dret("NetUserPass : uid<".g:netrw_uid."> passwd<".s:netrw_passwd.">")
3258 endfun 3387 endfun
3259 3388
3260 " =========================================== 3389 " =================================
3261 " Shared Browsing Support: {{{1 3390 " Shared Browsing Support: {{{1
3262 " =========================================== 3391 " =================================
3263 3392
3264 " --------------------------------------------------------------------- 3393 " ---------------------------------------------------------------------
3265 " s:ExplorePatHls: converts an Explore pattern into a regular expression search pattern {{{2 3394 " s:ExplorePatHls: converts an Explore pattern into a regular expression search pattern {{{2
3266 fun! s:ExplorePatHls(pattern) 3395 fun! s:ExplorePatHls(pattern)
3267 " call Dfunc("s:ExplorePatHls(pattern<".a:pattern.">)") 3396 " call Dfunc("s:ExplorePatHls(pattern<".a:pattern.">)")
3282 " 3: (browsing) records current directory history 3411 " 3: (browsing) records current directory history
3283 " 4: (user: <u>) go up (previous) directory, using history 3412 " 4: (user: <u>) go up (previous) directory, using history
3284 " 5: (user: <U>) go down (next) directory, using history 3413 " 5: (user: <U>) go down (next) directory, using history
3285 " 6: (user: <mB>) delete bookmark 3414 " 6: (user: <mB>) delete bookmark
3286 fun! s:NetrwBookHistHandler(chg,curdir) 3415 fun! s:NetrwBookHistHandler(chg,curdir)
3287 " call Dfunc("s:NetrwBookHistHandler(chg=".a:chg." curdir<".a:curdir.">) cnt=".v:count." histcnt=".g:netrw_dirhist_cnt." histmax=".g:netrw_dirhistmax) 3416 " call Dfunc("s:NetrwBookHistHandler(chg=".a:chg." curdir<".a:curdir.">) cnt=".v:count." histcnt=".g:netrw_dirhistcnt." histmax=".g:netrw_dirhistmax)
3288 if !exists("g:netrw_dirhistmax") || g:netrw_dirhistmax <= 0 3417 if !exists("g:netrw_dirhistmax") || g:netrw_dirhistmax <= 0
3289 " " call Dret("s:NetrwBookHistHandler - suppressed due to g:netrw_dirhistmax") 3418 " " call Dret("s:NetrwBookHistHandler - suppressed due to g:netrw_dirhistmax")
3290 return 3419 return
3291 endif 3420 endif
3292 3421
3329 let cnt = cnt + 1 3458 let cnt = cnt + 1
3330 endfor 3459 endfor
3331 endif 3460 endif
3332 3461
3333 " list directory history 3462 " list directory history
3334 let cnt = g:netrw_dirhist_cnt 3463 " Note: history is saved only when PerformListing is done;
3464 " ie. when netrw can re-use a netrw buffer, the current directory is not saved in the history.
3465 let cnt = g:netrw_dirhistcnt
3335 let first = 1 3466 let first = 1
3336 let histcnt = 0 3467 let histcnt = 0
3337 if g:netrw_dirhistmax > 0 3468 if g:netrw_dirhistmax > 0
3338 while ( first || cnt != g:netrw_dirhist_cnt ) 3469 while ( first || cnt != g:netrw_dirhistcnt )
3339 " call Decho("first=".first." cnt=".cnt." dirhist_cnt=".g:netrw_dirhist_cnt,'~'.expand("<slnum>")) 3470 " call Decho("first=".first." cnt=".cnt." dirhistcnt=".g:netrw_dirhistcnt,'~'.expand("<slnum>"))
3340 if exists("g:netrw_dirhist_{cnt}") 3471 if exists("g:netrw_dirhist_{cnt}")
3341 " call Decho("Netrw History#".histcnt.": ".g:netrw_dirhist_{cnt},'~'.expand("<slnum>")) 3472 " call Decho("Netrw History#".histcnt.": ".g:netrw_dirhist_{cnt},'~'.expand("<slnum>"))
3342 echo printf("Netrw History#%-2d: %s",histcnt,g:netrw_dirhist_{cnt}) 3473 echo printf("Netrw History#%-2d: %s",histcnt,g:netrw_dirhist_{cnt})
3343 let didwork= 1 3474 let didwork= 1
3344 endif 3475 endif
3348 if cnt < 0 3479 if cnt < 0
3349 let cnt= cnt + g:netrw_dirhistmax 3480 let cnt= cnt + g:netrw_dirhistmax
3350 endif 3481 endif
3351 endwhile 3482 endwhile
3352 else 3483 else
3353 let g:netrw_dirhist_cnt= 0 3484 let g:netrw_dirhistcnt= 0
3354 endif 3485 endif
3355 if didwork 3486 if didwork
3356 call inputsave()|call input("Press <cr> to continue")|call inputrestore() 3487 call inputsave()|call input("Press <cr> to continue")|call inputrestore()
3357 endif 3488 endif
3358 3489
3359 elseif a:chg == 3 3490 elseif a:chg == 3
3360 " saves most recently visited directories (when they differ) 3491 " saves most recently visited directories (when they differ)
3361 " call Decho("(browsing) record curdir history",'~'.expand("<slnum>")) 3492 " call Decho("(browsing) record curdir history",'~'.expand("<slnum>"))
3362 if !exists("g:netrw_dirhist_cnt") || !exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}") || g:netrw_dirhist_{g:netrw_dirhist_cnt} != a:curdir 3493 if !exists("g:netrw_dirhistcnt") || !exists("g:netrw_dirhist_{g:netrw_dirhistcnt}") || g:netrw_dirhist_{g:netrw_dirhistcnt} != a:curdir
3363 if g:netrw_dirhistmax > 0 3494 if g:netrw_dirhistmax > 0
3364 let g:netrw_dirhist_cnt = ( g:netrw_dirhist_cnt + 1 ) % g:netrw_dirhistmax 3495 let g:netrw_dirhistcnt = ( g:netrw_dirhistcnt + 1 ) % g:netrw_dirhistmax
3365 let g:netrw_dirhist_{g:netrw_dirhist_cnt} = a:curdir 3496 let g:netrw_dirhist_{g:netrw_dirhistcnt} = a:curdir
3366 endif 3497 endif
3367 " call Decho("save dirhist#".g:netrw_dirhist_cnt."<".g:netrw_dirhist_{g:netrw_dirhist_cnt}.">",'~'.expand("<slnum>")) 3498 " call Decho("save dirhist#".g:netrw_dirhistcnt."<".g:netrw_dirhist_{g:netrw_dirhistcnt}.">",'~'.expand("<slnum>"))
3368 endif 3499 endif
3369 3500
3370 elseif a:chg == 4 3501 elseif a:chg == 4
3371 " u: change to the previous directory stored on the history list 3502 " u: change to the previous directory stored on the history list
3372 " call Decho("(user: <u>) chg to prev dir from history",'~'.expand("<slnum>")) 3503 " call Decho("(user: <u>) chg to prev dir from history",'~'.expand("<slnum>"))
3373 if g:netrw_dirhistmax > 0 3504 if g:netrw_dirhistmax > 0
3374 let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt - v:count1 ) % g:netrw_dirhistmax 3505 let g:netrw_dirhistcnt= ( g:netrw_dirhistcnt - v:count1 ) % g:netrw_dirhistmax
3375 if g:netrw_dirhist_cnt < 0 3506 if g:netrw_dirhistcnt < 0
3376 let g:netrw_dirhist_cnt= g:netrw_dirhist_cnt + g:netrw_dirhistmax 3507 let g:netrw_dirhistcnt= g:netrw_dirhistcnt + g:netrw_dirhistmax
3377 endif 3508 endif
3378 else 3509 else
3379 let g:netrw_dirhist_cnt= 0 3510 let g:netrw_dirhistcnt= 0
3380 endif 3511 endif
3381 if exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}") 3512 if exists("g:netrw_dirhist_{g:netrw_dirhistcnt}")
3382 " call Decho("changedir u#".g:netrw_dirhist_cnt."<".g:netrw_dirhist_{g:netrw_dirhist_cnt}.">",'~'.expand("<slnum>")) 3513 " call Decho("changedir u#".g:netrw_dirhistcnt."<".g:netrw_dirhist_{g:netrw_dirhistcnt}.">",'~'.expand("<slnum>"))
3383 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir") 3514 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir")
3384 setl ma noro 3515 setl ma noro
3385 " call Decho("setl ma noro",'~'.expand("<slnum>")) 3516 " call Decho("setl ma noro",'~'.expand("<slnum>"))
3386 sil! NetrwKeepj %d _ 3517 sil! NetrwKeepj %d _
3387 setl nomod 3518 setl nomod
3388 " call Decho("setl nomod",'~'.expand("<slnum>")) 3519 " call Decho("setl nomod",'~'.expand("<slnum>"))
3389 " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) 3520 " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
3390 endif 3521 endif
3391 " call Decho("exe e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt}),'~'.expand("<slnum>")) 3522 " call Decho("exe e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhistcnt}),'~'.expand("<slnum>"))
3392 exe "NetrwKeepj e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt}) 3523 exe "NetrwKeepj e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhistcnt})
3393 else 3524 else
3394 if g:netrw_dirhistmax > 0 3525 if g:netrw_dirhistmax > 0
3395 let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt + v:count1 ) % g:netrw_dirhistmax 3526 let g:netrw_dirhistcnt= ( g:netrw_dirhistcnt + v:count1 ) % g:netrw_dirhistmax
3396 else 3527 else
3397 let g:netrw_dirhist_cnt= 0 3528 let g:netrw_dirhistcnt= 0
3398 endif 3529 endif
3399 echo "Sorry, no predecessor directory exists yet" 3530 echo "Sorry, no predecessor directory exists yet"
3400 endif 3531 endif
3401 3532
3402 elseif a:chg == 5 3533 elseif a:chg == 5
3403 " U: change to the subsequent directory stored on the history list 3534 " U: change to the subsequent directory stored on the history list
3404 " call Decho("(user: <U>) chg to next dir from history",'~'.expand("<slnum>")) 3535 " call Decho("(user: <U>) chg to next dir from history",'~'.expand("<slnum>"))
3405 if g:netrw_dirhistmax > 0 3536 if g:netrw_dirhistmax > 0
3406 let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt + 1 ) % g:netrw_dirhistmax 3537 let g:netrw_dirhistcnt= ( g:netrw_dirhistcnt + 1 ) % g:netrw_dirhistmax
3407 if exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}") 3538 if exists("g:netrw_dirhist_{g:netrw_dirhistcnt}")
3408 " call Decho("changedir U#".g:netrw_dirhist_cnt."<".g:netrw_dirhist_{g:netrw_dirhist_cnt}.">",'~'.expand("<slnum>")) 3539 " call Decho("changedir U#".g:netrw_dirhistcnt."<".g:netrw_dirhist_{g:netrw_dirhistcnt}.">",'~'.expand("<slnum>"))
3409 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir") 3540 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir")
3410 " call Decho("setl ma noro",'~'.expand("<slnum>")) 3541 " call Decho("setl ma noro",'~'.expand("<slnum>"))
3411 setl ma noro 3542 setl ma noro
3412 sil! NetrwKeepj %d _ 3543 sil! NetrwKeepj %d _
3413 " call Decho("removed all lines from buffer (%d)",'~'.expand("<slnum>")) 3544 " call Decho("removed all lines from buffer (%d)",'~'.expand("<slnum>"))
3414 " call Decho("setl nomod",'~'.expand("<slnum>")) 3545 " call Decho("setl nomod",'~'.expand("<slnum>"))
3415 setl nomod 3546 setl nomod
3416 " call Decho("(set nomod) ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) 3547 " call Decho("(set nomod) ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
3417 endif 3548 endif
3418 " call Decho("exe e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt}),'~'.expand("<slnum>")) 3549 " call Decho("exe e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhistcnt}),'~'.expand("<slnum>"))
3419 exe "NetrwKeepj e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt}) 3550 exe "NetrwKeepj e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhistcnt})
3420 else 3551 else
3421 let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt - 1 ) % g:netrw_dirhistmax 3552 let g:netrw_dirhistcnt= ( g:netrw_dirhistcnt - 1 ) % g:netrw_dirhistmax
3422 if g:netrw_dirhist_cnt < 0 3553 if g:netrw_dirhistcnt < 0
3423 let g:netrw_dirhist_cnt= g:netrw_dirhist_cnt + g:netrw_dirhistmax 3554 let g:netrw_dirhistcnt= g:netrw_dirhistcnt + g:netrw_dirhistmax
3424 endif 3555 endif
3425 echo "Sorry, no successor directory exists yet" 3556 echo "Sorry, no successor directory exists yet"
3426 endif 3557 endif
3427 else 3558 else
3428 let g:netrw_dirhist_cnt= 0 3559 let g:netrw_dirhistcnt= 0
3429 echo "Sorry, no successor directory exists yet (g:netrw_dirhistmax is ".g:netrw_dirhistmax.")" 3560 echo "Sorry, no successor directory exists yet (g:netrw_dirhistmax is ".g:netrw_dirhistmax.")"
3430 endif 3561 endif
3431 3562
3432 elseif a:chg == 6 3563 elseif a:chg == 6
3433 " call Decho("(user: <mB>) delete bookmark'd directory",'~'.expand("<slnum>")) 3564 " call Decho("(user: <mB>) delete bookmark'd directory",'~'.expand("<slnum>"))
3458 " Will source the history file (.netrwhist) only if the g:netrw_disthistmax is > 0. 3589 " Will source the history file (.netrwhist) only if the g:netrw_disthistmax is > 0.
3459 " Sister function: s:NetrwBookHistSave() 3590 " Sister function: s:NetrwBookHistSave()
3460 fun! s:NetrwBookHistRead() 3591 fun! s:NetrwBookHistRead()
3461 " call Dfunc("s:NetrwBookHistRead()") 3592 " call Dfunc("s:NetrwBookHistRead()")
3462 if !exists("g:netrw_dirhistmax") || g:netrw_dirhistmax <= 0 3593 if !exists("g:netrw_dirhistmax") || g:netrw_dirhistmax <= 0
3463 " " call Dret("s:NetrwBookHistRead - suppressed due to g:netrw_dirhistmax") 3594 " call Dret("s:NetrwBookHistRead - nothing read (suppressed due to dirhistmax=".(exists("g:netrw_dirhistmax")? g:netrw_dirhistmax : "n/a").")")
3464 return 3595 return
3465 endif 3596 endif
3466 let ykeep= @@ 3597 let ykeep= @@
3598
3599 " read bookmarks
3467 if !exists("s:netrw_initbookhist") 3600 if !exists("s:netrw_initbookhist")
3468 let home = s:NetrwHome() 3601 let home = s:NetrwHome()
3469 let savefile= home."/.netrwbook" 3602 let savefile= home."/.netrwbook"
3470 if filereadable(s:NetrwFile(savefile)) 3603 if filereadable(s:NetrwFile(savefile))
3471 " call Decho("sourcing .netrwbook",'~'.expand("<slnum>")) 3604 " call Decho("sourcing .netrwbook",'~'.expand("<slnum>"))
3472 exe "keepalt NetrwKeepj so ".savefile 3605 exe "keepalt NetrwKeepj so ".savefile
3473 endif 3606 endif
3607
3608 " read history
3474 if g:netrw_dirhistmax > 0 3609 if g:netrw_dirhistmax > 0
3475 let savefile= home."/.netrwhist" 3610 let savefile= home."/.netrwhist"
3476 if filereadable(s:NetrwFile(savefile)) 3611 if filereadable(s:NetrwFile(savefile))
3477 " call Decho("sourcing .netrwhist",'~'.expand("<slnum>")) 3612 " call Decho("sourcing .netrwhist",'~'.expand("<slnum>"))
3478 exe "keepalt NetrwKeepj so ".savefile 3613 exe "keepalt NetrwKeepj so ".savefile
3479 endif 3614 endif
3480 let s:netrw_initbookhist= 1 3615 let s:netrw_initbookhist= 1
3481 au VimLeave * call s:NetrwBookHistSave() 3616 au VimLeave * call s:NetrwBookHistSave()
3482 endif 3617 endif
3483 endif 3618 endif
3619
3484 let @@= ykeep 3620 let @@= ykeep
3621 " call Decho("dirhistmax=".(exists("g:netrw_dirhistmax")? g:netrw_dirhistmax : "n/a"),'~'.expand("<slnum>"))
3622 " call Decho("dirhistcnt=".(exists("g:netrw_dirhistcnt")? g:netrw_dirhistcnt : "n/a"),'~'.expand("<slnum>"))
3485 " call Dret("s:NetrwBookHistRead") 3623 " call Dret("s:NetrwBookHistRead")
3486 endfun 3624 endfun
3487 3625
3488 " --------------------------------------------------------------------- 3626 " ---------------------------------------------------------------------
3489 " s:NetrwBookHistSave: this function saves bookmarks and history {{{2 3627 " s:NetrwBookHistSave: this function saves bookmarks and history to files {{{2
3490 " Sister function: s:NetrwBookHistRead() 3628 " Sister function: s:NetrwBookHistRead()
3491 " I used to do this via viminfo but that appears to 3629 " I used to do this via viminfo but that appears to
3492 " be unreliable for long-term storage 3630 " be unreliable for long-term storage
3493 " If g:netrw_dirhistmax is <= 0, no history or bookmarks 3631 " If g:netrw_dirhistmax is <= 0, no history or bookmarks
3494 " will be saved. 3632 " will be saved.
3633 " (s:NetrwBookHistHandler(3,...) used to record history)
3495 fun! s:NetrwBookHistSave() 3634 fun! s:NetrwBookHistSave()
3496 " call Dfunc("s:NetrwBookHistSave() dirhistmax=".g:netrw_dirhistmax) 3635 " call Dfunc("s:NetrwBookHistSave() dirhistmax=".g:netrw_dirhistmax." dirhistcnt=".g:netrw_dirhistcnt)
3497 if !exists("g:netrw_dirhistmax") || g:netrw_dirhistmax <= 0 3636 if !exists("g:netrw_dirhistmax") || g:netrw_dirhistmax <= 0
3498 " call Dret("s:NetrwBookHistSave : dirhistmax=".g:netrw_dirhistmax) 3637 " call Dret("s:NetrwBookHistSave : nothing saved (dirhistmax=".g:netrw_dirhistmax.")")
3499 return 3638 return
3500 endif 3639 endif
3501 3640
3502 let savefile= s:NetrwHome()."/.netrwhist" 3641 let savefile= s:NetrwHome()."/.netrwhist"
3642 " call Decho("savefile<".savefile.">",'~'.expand("<slnum>"))
3503 1split 3643 1split
3504 call s:NetrwEnew() 3644 call s:NetrwEnew()
3645 " call Decho("case g:netrw_use_noswf=".g:netrw_use_noswf.(exists("+acd")? " +acd" : " -acd"),'~'.expand("<slnum>"))
3505 if g:netrw_use_noswf 3646 if g:netrw_use_noswf
3506 setl cino= com= cpo-=a cpo-=A fo=nroql2 tw=0 report=10000 noswf 3647 setl cino= com= cpo-=a cpo-=A fo=nroql2 tw=0 report=10000 noswf
3507 else 3648 else
3508 setl cino= com= cpo-=a cpo-=A fo=nroql2 tw=0 report=10000 3649 setl cino= com= cpo-=a cpo-=A fo=nroql2 tw=0 report=10000
3509 endif 3650 endif
3510 setl nocin noai noci magic nospell nohid wig= noaw 3651 setl nocin noai noci magic nospell nohid wig= noaw
3511 setl ma noro write 3652 setl ma noro write
3512 if exists("+acd") | setl noacd | endif 3653 if exists("+acd") | setl noacd | endif
3513 sil! NetrwKeepj keepalt %d _ 3654 sil! NetrwKeepj keepalt %d _
3514 3655
3515 " save .netrwhist -- no attempt to merge 3656 " rename enew'd file: .netrwhist -- no attempt to merge
3657 " record dirhistmax and current dirhistcnt
3658 " save history
3659 " call Decho("saving history: dirhistmax=".g:netrw_dirhistmax." dirhistcnt=".g:netrw_dirhistcnt." lastline=".line("$"),'~'.expand("<slnum>"))
3516 sil! keepalt file .netrwhist 3660 sil! keepalt file .netrwhist
3517 call setline(1,"let g:netrw_dirhistmax =".g:netrw_dirhistmax) 3661 call setline(1,"let g:netrw_dirhistmax =".g:netrw_dirhistmax)
3518 call setline(2,"let g:netrw_dirhist_cnt =".g:netrw_dirhist_cnt) 3662 call setline(2,"let g:netrw_dirhistcnt =".g:netrw_dirhistcnt)
3519 let lastline = line("$") 3663 if g:netrw_dirhistmax > 0
3520 let cnt = 1 3664 let lastline = line("$")
3521 while cnt <= g:netrw_dirhist_cnt 3665 let cnt = g:netrw_dirhistcnt
3522 call setline((cnt+lastline),'let g:netrw_dirhist_'.cnt."='".g:netrw_dirhist_{cnt}."'") 3666 let first = 1
3523 let cnt= cnt + 1 3667 while ( first || cnt != g:netrw_dirhistcnt )
3524 endwhile 3668 let lastline= lastline + 1
3525 exe "sil! w! ".savefile 3669 if exists("g:netrw_dirhist_{cnt}")
3526 3670 call setline(lastline,'let g:netrw_dirhist_'.cnt."='".g:netrw_dirhist_{cnt}."'")
3671 " call Decho("..".lastline.'let g:netrw_dirhist_'.cnt."='".g:netrw_dirhist_{cnt}."'",'~'.expand("<slnum>"))
3672 endif
3673 let first = 0
3674 let cnt = ( cnt - 1 ) % g:netrw_dirhistmax
3675 if cnt < 0
3676 let cnt= cnt + g:netrw_dirhistmax
3677 endif
3678 endwhile
3679 exe "sil! w! ".savefile
3680 " call Decho("exe sil! w! ".savefile,'~'.expand("<slnum>"))
3681 endif
3682
3683 " save bookmarks
3527 sil NetrwKeepj %d _ 3684 sil NetrwKeepj %d _
3528 if exists("g:netrw_bookmarklist") && g:netrw_bookmarklist != [] 3685 if exists("g:netrw_bookmarklist") && g:netrw_bookmarklist != []
3686 " call Decho("saving bookmarks",'~'.expand("<slnum>"))
3529 " merge and write .netrwbook 3687 " merge and write .netrwbook
3530 let savefile= s:NetrwHome()."/.netrwbook" 3688 let savefile= s:NetrwHome()."/.netrwbook"
3531 3689
3532 if filereadable(s:NetrwFile(savefile)) 3690 if filereadable(s:NetrwFile(savefile))
3533 let booklist= deepcopy(g:netrw_bookmarklist) 3691 let booklist= deepcopy(g:netrw_bookmarklist)
3541 endif 3699 endif
3542 3700
3543 " construct and save .netrwbook 3701 " construct and save .netrwbook
3544 call setline(1,"let g:netrw_bookmarklist= ".string(g:netrw_bookmarklist)) 3702 call setline(1,"let g:netrw_bookmarklist= ".string(g:netrw_bookmarklist))
3545 exe "sil! w! ".savefile 3703 exe "sil! w! ".savefile
3546 endif 3704 " call Decho("exe sil! w! ".savefile,'~'.expand("<slnum>"))
3705 endif
3706
3707 " cleanup -- remove buffer used to construct history
3547 let bgone= bufnr("%") 3708 let bgone= bufnr("%")
3548 q! 3709 q!
3549 exe "keepalt ".bgone."bwipe!" 3710 exe "keepalt ".bgone."bwipe!"
3550 3711
3551 " call Dret("s:NetrwBookHistSave") 3712 " call Dret("s:NetrwBookHistSave")
3558 " with the requested remote hostname first. 3719 " with the requested remote hostname first.
3559 " Often called via: Explore/e dirname/etc -> netrw#LocalBrowseCheck() -> s:NetrwBrowse() 3720 " Often called via: Explore/e dirname/etc -> netrw#LocalBrowseCheck() -> s:NetrwBrowse()
3560 fun! s:NetrwBrowse(islocal,dirname) 3721 fun! s:NetrwBrowse(islocal,dirname)
3561 if !exists("w:netrw_liststyle")|let w:netrw_liststyle= g:netrw_liststyle|endif 3722 if !exists("w:netrw_liststyle")|let w:netrw_liststyle= g:netrw_liststyle|endif
3562 " call Dfunc("s:NetrwBrowse(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".w:netrw_liststyle." ".g:loaded_netrw." buf#".bufnr("%")."<".bufname("%")."> win#".winnr()) 3723 " call Dfunc("s:NetrwBrowse(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".w:netrw_liststyle." ".g:loaded_netrw." buf#".bufnr("%")."<".bufname("%")."> win#".winnr())
3563 " call Decho("modified=".&modified." modifiable=".&modifiable." readonly=".&readonly,'~'.expand("<slnum>")) 3724 " call Decho("fyi: modified=".&modified." modifiable=".&modifiable." readonly=".&readonly,'~'.expand("<slnum>"))
3564 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>")) 3725 " call Decho("fyi: tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>"))
3565 " call Dredir("ls!") 3726 " call Dredir("ls!","s:NetrwBrowse")
3566 3727
3567 " save alternate-file's filename if w:netrw_rexlocal doesn't exist 3728 " save alternate-file's filename if w:netrw_rexlocal doesn't exist
3568 " This is useful when one edits a local file, then :e ., then :Rex 3729 " This is useful when one edits a local file, then :e ., then :Rex
3569 if a:islocal && !exists("w:netrw_rexfile") && bufname("#") != "" 3730 if a:islocal && !exists("w:netrw_rexfile") && bufname("#") != ""
3570 let w:netrw_rexfile= bufname("#") 3731 let w:netrw_rexfile= bufname("#")
3577 endif 3738 endif
3578 3739
3579 " s:NetrwBrowse : simplify the dirname (especially for ".."s in dirnames) {{{3 3740 " s:NetrwBrowse : simplify the dirname (especially for ".."s in dirnames) {{{3
3580 if a:dirname !~ '^\a\{3,}://' 3741 if a:dirname !~ '^\a\{3,}://'
3581 let dirname= simplify(a:dirname) 3742 let dirname= simplify(a:dirname)
3743 " call Decho("simplified dirname<".dirname.">")
3582 else 3744 else
3583 let dirname= a:dirname 3745 let dirname= a:dirname
3584 endif 3746 endif
3585 3747
3748 " repoint t:netrw_lexbufnr if appropriate
3749 if exists("t:netrw_lexbufnr") && bufnr("%") == t:netrw_lexbufnr
3750 " call Decho("set repointlexbufnr to true!")
3751 let repointlexbufnr= 1
3752 endif
3753
3754 " s:NetrwBrowse : sanity checks: {{{3
3586 if exists("s:netrw_skipbrowse") 3755 if exists("s:netrw_skipbrowse")
3587 unlet s:netrw_skipbrowse 3756 unlet s:netrw_skipbrowse
3588 " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." filename<".expand("%")."> win#".winnr()." ft<".&ft.">",'~'.expand("<slnum>")) 3757 " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." filename<".expand("%")."> win#".winnr()." ft<".&ft.">",'~'.expand("<slnum>"))
3589 " call Dret("s:NetrwBrowse : s:netrw_skipbrowse existed") 3758 " call Dret("s:NetrwBrowse : s:netrw_skipbrowse existed")
3590 return 3759 return
3591 endif 3760 endif
3592
3593 " s:NetrwBrowse : sanity checks: {{{3
3594 if !exists("*shellescape") 3761 if !exists("*shellescape")
3595 NetrwKeepj call netrw#ErrorMsg(s:ERROR,"netrw can't run -- your vim is missing shellescape()",69) 3762 NetrwKeepj call netrw#ErrorMsg(s:ERROR,"netrw can't run -- your vim is missing shellescape()",69)
3596 " call Dret("s:NetrwBrowse : missing shellescape()") 3763 " call Dret("s:NetrwBrowse : missing shellescape()")
3597 return 3764 return
3598 endif 3765 endif
3601 " call Dret("s:NetrwBrowse : missing fnameescape()") 3768 " call Dret("s:NetrwBrowse : missing fnameescape()")
3602 return 3769 return
3603 endif 3770 endif
3604 3771
3605 " s:NetrwBrowse : save options: {{{3 3772 " s:NetrwBrowse : save options: {{{3
3606 call s:NetrwOptionSave("w:") 3773 call s:NetrwOptionsSave("w:")
3607 3774
3608 " s:NetrwBrowse : re-instate any marked files {{{3 3775 " s:NetrwBrowse : re-instate any marked files {{{3
3609 if exists("s:netrwmarkfilelist_{bufnr('%')}") 3776 if has("syntax") && exists("g:syntax_on") && g:syntax_on
3610 " call Decho("clearing marked files",'~'.expand("<slnum>")) 3777 if exists("s:netrwmarkfilelist_{bufnr('%')}")
3611 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/" 3778 " call Decho("clearing marked files",'~'.expand("<slnum>"))
3779 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/"
3780 endif
3612 endif 3781 endif
3613 3782
3614 if a:islocal && exists("w:netrw_acdkeep") && w:netrw_acdkeep 3783 if a:islocal && exists("w:netrw_acdkeep") && w:netrw_acdkeep
3615 " s:NetrwBrowse : set up "safe" options for local directory/file {{{3 3784 " s:NetrwBrowse : set up "safe" options for local directory/file {{{3
3616 " call Decho("handle w:netrw_acdkeep:",'~'.expand("<slnum>")) 3785 " call Decho("handle w:netrw_acdkeep:",'~'.expand("<slnum>"))
3617 " call Decho("NetrwKeepj lcd ".fnameescape(dirname)." (due to w:netrw_acdkeep=".w:netrw_acdkeep." - acd=".&acd.")",'~'.expand("<slnum>")) 3786 " call Decho("NetrwKeepj lcd ".fnameescape(dirname)." (due to w:netrw_acdkeep=".w:netrw_acdkeep." - acd=".&acd.")",'~'.expand("<slnum>"))
3618 call s:NetrwLcd(dirname) 3787 if s:NetrwLcd(dirname)
3619 call s:NetrwSafeOptions() 3788 " call Dret("s:NetrwBrowse : lcd failure")
3789 return
3790 endif
3791 " call s:NetrwOptionsSafe() " tst952 failed with this enabled.
3620 " call Decho("getcwd<".getcwd().">",'~'.expand("<slnum>")) 3792 " call Decho("getcwd<".getcwd().">",'~'.expand("<slnum>"))
3621 3793
3622 elseif !a:islocal && dirname !~ '[\/]$' && dirname !~ '^"' 3794 elseif !a:islocal && dirname !~ '[\/]$' && dirname !~ '^"'
3623 " s:NetrwBrowse : remote regular file handler {{{3 3795 " s:NetrwBrowse : remote regular file handler {{{3
3624 " call Decho("handle remote regular file: dirname<".dirname.">",'~'.expand("<slnum>")) 3796 " call Decho("handle remote regular file: dirname<".dirname.">",'~'.expand("<slnum>"))
3636 " call Decho("new path<".path.">",'~'.expand("<slnum>")) 3808 " call Decho("new path<".path.">",'~'.expand("<slnum>"))
3637 call s:RemotePathAnalysis(dirname) 3809 call s:RemotePathAnalysis(dirname)
3638 3810
3639 " s:NetrwBrowse : remote-read the requested file into current buffer {{{3 3811 " s:NetrwBrowse : remote-read the requested file into current buffer {{{3
3640 call s:NetrwEnew(dirname) 3812 call s:NetrwEnew(dirname)
3641 call s:NetrwSafeOptions() 3813 call s:NetrwOptionsSafe(a:islocal)
3642 setl ma noro 3814 setl ma noro
3643 " call Decho("setl ma noro",'~'.expand("<slnum>")) 3815 " call Decho("setl ma noro",'~'.expand("<slnum>"))
3644 let b:netrw_curdir = dirname 3816 let b:netrw_curdir = dirname
3645 let url = s:method."://".((s:user == "")? "" : s:user."@").s:machine.(s:port ? ":".s:port : "")."/".s:path 3817 let url = s:method."://".((s:user == "")? "" : s:user."@").s:machine.(s:port ? ":".s:port : "")."/".s:path
3646 " call Decho("exe sil! keepalt file ".fnameescape(url)." (bt=".&bt.")",'~'.expand("<slnum>")) 3818 call s:NetrwBufRename(url)
3647 exe "sil! NetrwKeepj keepalt file ".fnameescape(url)
3648 exe "sil! NetrwKeepj keepalt doau BufReadPre ".fnameescape(s:fname) 3819 exe "sil! NetrwKeepj keepalt doau BufReadPre ".fnameescape(s:fname)
3649 sil call netrw#NetRead(2,url) 3820 sil call netrw#NetRead(2,url)
3650 " netrw.vim and tar.vim have already handled decompression of the tarball; avoiding gzip.vim error 3821 " netrw.vim and tar.vim have already handled decompression of the tarball; avoiding gzip.vim error
3651 " call Decho("url<".url.">",'~'.expand("<slnum>")) 3822 " call Decho("url<".url.">",'~'.expand("<slnum>"))
3652 " call Decho("s:path<".s:path.">",'~'.expand("<slnum>")) 3823 " call Decho("s:path<".s:path.">",'~'.expand("<slnum>"))
3662 endif 3833 endif
3663 endif 3834 endif
3664 3835
3665 " s:NetrwBrowse : save certain window-oriented variables into buffer-oriented variables {{{3 3836 " s:NetrwBrowse : save certain window-oriented variables into buffer-oriented variables {{{3
3666 call s:SetBufWinVars() 3837 call s:SetBufWinVars()
3667 call s:NetrwOptionRestore("w:") 3838 call s:NetrwOptionsRestore("w:")
3668 " call Decho("setl ma nomod",'~'.expand("<slnum>")) 3839 " call Decho("setl ma nomod",'~'.expand("<slnum>"))
3669 setl ma nomod noro 3840 setl ma nomod noro
3670 " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) 3841 " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
3671 3842
3672 " call Dret("s:NetrwBrowse : file<".s:fname.">") 3843 " call Dret("s:NetrwBrowse : file<".s:fname.">")
3689 let svpos = winsaveview() 3860 let svpos = winsaveview()
3690 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) 3861 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))
3691 let reusing= s:NetrwGetBuffer(a:islocal,dirname) 3862 let reusing= s:NetrwGetBuffer(a:islocal,dirname)
3692 3863
3693 " maintain markfile highlighting 3864 " maintain markfile highlighting
3694 if exists("s:netrwmarkfilemtch_{bufnr('%')}") && s:netrwmarkfilemtch_{bufnr("%")} != "" 3865 if has("syntax") && exists("g:syntax_on") && g:syntax_on
3695 " call Decho("bufnr(%)=".bufnr('%'),'~'.expand("<slnum>")) 3866 if exists("s:netrwmarkfilemtch_{bufnr('%')}") && s:netrwmarkfilemtch_{bufnr("%")} != ""
3696 " call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/",'~'.expand("<slnum>")) 3867 " " call Decho("bufnr(%)=".bufnr('%'),'~'.expand("<slnum>"))
3697 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/" 3868 " " call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/",'~'.expand("<slnum>"))
3698 else 3869 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/"
3699 " call Decho("2match none",'~'.expand("<slnum>")) 3870 else
3700 2match none 3871 " " call Decho("2match none",'~'.expand("<slnum>"))
3872 2match none
3873 endif
3701 endif 3874 endif
3702 if reusing && line("$") > 1 3875 if reusing && line("$") > 1
3703 call s:NetrwOptionRestore("w:") 3876 call s:NetrwOptionsRestore("w:")
3704 " call Decho("setl noma nomod nowrap",'~'.expand("<slnum>")) 3877 " call Decho("setl noma nomod nowrap",'~'.expand("<slnum>"))
3705 setl noma nomod nowrap 3878 setl noma nomod nowrap
3706 " call Decho("(set noma nomod nowrap) ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) 3879 " call Decho("(set noma nomod nowrap) ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
3707 " call Dret("s:NetrwBrowse : re-using not-cleared buffer") 3880 " call Dret("s:NetrwBrowse : re-using not-cleared buffer")
3708 return 3881 return
3744 " handle g:netrw_keepdir: set vim's current directory to netrw's notion of the current directory {{{3 3917 " handle g:netrw_keepdir: set vim's current directory to netrw's notion of the current directory {{{3
3745 if !g:netrw_keepdir 3918 if !g:netrw_keepdir
3746 " call Decho("handle g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd,'~'.expand("<slnum>")) 3919 " call Decho("handle g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd,'~'.expand("<slnum>"))
3747 " call Decho("l:acd".(exists("&l:acd")? "=".&l:acd : " doesn't exist"),'~'.expand("<slnum>")) 3920 " call Decho("l:acd".(exists("&l:acd")? "=".&l:acd : " doesn't exist"),'~'.expand("<slnum>"))
3748 if !exists("&l:acd") || !&l:acd 3921 if !exists("&l:acd") || !&l:acd
3749 call s:NetrwLcd(b:netrw_curdir) 3922 if s:NetrwLcd(b:netrw_curdir)
3923 " call Dret("s:NetrwBrowse : lcd failure")
3924 return
3925 endif
3750 endif 3926 endif
3751 endif 3927 endif
3752 3928
3753 " -------------------------------- 3929 " --------------------------------
3754 " remote handling: {{{3 3930 " remote handling: {{{3
3776 let dirpat = '^\(\w\{-}\)://\(\w\+@\)\=\([^/]\+\)/\(.*\)$' 3952 let dirpat = '^\(\w\{-}\)://\(\w\+@\)\=\([^/]\+\)/\(.*\)$'
3777 if dirname !~ dirpat 3953 if dirname !~ dirpat
3778 if !exists("g:netrw_quiet") 3954 if !exists("g:netrw_quiet")
3779 NetrwKeepj call netrw#ErrorMsg(s:ERROR,"netrw doesn't understand your dirname<".dirname.">",20) 3955 NetrwKeepj call netrw#ErrorMsg(s:ERROR,"netrw doesn't understand your dirname<".dirname.">",20)
3780 endif 3956 endif
3781 NetrwKeepj call s:NetrwOptionRestore("w:") 3957 NetrwKeepj call s:NetrwOptionsRestore("w:")
3782 " call Decho("setl noma nomod nowrap",'~'.expand("<slnum>")) 3958 " call Decho("setl noma nomod nowrap",'~'.expand("<slnum>"))
3783 setl noma nomod nowrap 3959 setl noma nomod nowrap
3784 " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) 3960 " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
3785 " call Dret("s:NetrwBrowse : badly formatted dirname<".dirname.">") 3961 " call Dret("s:NetrwBrowse : badly formatted dirname<".dirname.">")
3786 return 3962 return
3787 endif 3963 endif
3788 let b:netrw_curdir= dirname 3964 let b:netrw_curdir= dirname
3789 " call Decho("b:netrw_curdir<".b:netrw_curdir."> (remote)",'~'.expand("<slnum>")) 3965 " call Decho("b:netrw_curdir<".b:netrw_curdir."> (remote)",'~'.expand("<slnum>"))
3790 endif " (additional remote handling) 3966 endif " (additional remote handling)
3791 3967
3792 " ----------------------- 3968 " -------------------------------
3793 " Directory Listing: {{{3 3969 " Perform Directory Listing: {{{3
3794 " ----------------------- 3970 " -------------------------------
3795 NetrwKeepj call s:NetrwMaps(a:islocal) 3971 NetrwKeepj call s:NetrwMaps(a:islocal)
3796 NetrwKeepj call s:NetrwCommands(a:islocal) 3972 NetrwKeepj call s:NetrwCommands(a:islocal)
3797 NetrwKeepj call s:PerformListing(a:islocal) 3973 NetrwKeepj call s:PerformListing(a:islocal)
3798 3974
3799 " restore option(s) 3975 " restore option(s)
3800 call s:NetrwOptionRestore("w:") 3976 call s:NetrwOptionsRestore("w:")
3801 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>")) 3977 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>"))
3802 3978
3803 " If there is a rexposn: restore position with rexposn 3979 " If there is a rexposn: restore position with rexposn
3804 " Otherwise : set rexposn 3980 " Otherwise : set rexposn
3805 if exists("s:rexposn_".bufnr("%")) 3981 if exists("s:rexposn_".bufnr("%"))
3815 let &l:bexpr= "netrw#BalloonHelp()" 3991 let &l:bexpr= "netrw#BalloonHelp()"
3816 " call Decho("set up balloon help: l:bexpr=".&l:bexpr,'~'.expand("<slnum>")) 3992 " call Decho("set up balloon help: l:bexpr=".&l:bexpr,'~'.expand("<slnum>"))
3817 setl beval 3993 setl beval
3818 endif 3994 endif
3819 3995
3996 " repoint t:netrw_lexbufnr if appropriate
3997 if exists("repointlexbufnr")
3998 let t:netrw_lexbufnr= bufnr("%")
3999 " call Decho("repoint t:netrw_lexbufnr to #".t:netrw_lexbufnr)
4000 endif
4001
3820 " restore position 4002 " restore position
3821 if reusing 4003 if reusing
3822 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) 4004 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))
3823 call winrestview(svpos) 4005 call winrestview(svpos)
3824 endif 4006 endif
3825 4007
3826 " The s:LocalBrowseRefresh() function is called by an autocmd 4008 " The s:LocalBrowseRefresh() function is called by an autocmd
3827 " installed by s:LocalFastBrowser() when g:netrw_fastbrowse <= 1 (ie. slow, medium speed). 4009 " installed by s:LocalFastBrowser() when g:netrw_fastbrowse <= 1 (ie. slow or medium speed).
3828 " However, s:NetrwBrowse() causes the FocusGained event to fire the firstt time. 4010 " However, s:NetrwBrowse() causes the FocusGained event to fire the first time.
3829 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>")) 4011 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>"))
3830 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) 4012 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
3831 " call Dret("s:NetrwBrowse : did PerformListing ft<".&ft.">") 4013 " call Dret("s:NetrwBrowse : did PerformListing ft<".&ft.">")
3832 return 4014 return
3833 endfun 4015 endfun
3835 " --------------------------------------------------------------------- 4017 " ---------------------------------------------------------------------
3836 " s:NetrwFile: because of g:netrw_keepdir, isdirectory(), type(), etc may or {{{2 4018 " s:NetrwFile: because of g:netrw_keepdir, isdirectory(), type(), etc may or {{{2
3837 " may not apply correctly; ie. netrw's idea of the current directory may 4019 " may not apply correctly; ie. netrw's idea of the current directory may
3838 " differ from vim's. This function insures that netrw's idea of the current 4020 " differ from vim's. This function insures that netrw's idea of the current
3839 " directory is used. 4021 " directory is used.
4022 " Returns a path to the file specified by a:fname
3840 fun! s:NetrwFile(fname) 4023 fun! s:NetrwFile(fname)
3841 " call Dfunc("s:NetrwFile(fname<".a:fname.">) win#".winnr()) 4024 " "" call Dfunc("s:NetrwFile(fname<".a:fname.">) win#".winnr())
3842 " call Decho("g:netrw_keepdir =".(exists("g:netrw_keepdir")? g:netrw_keepdir : 'n/a'),'~'.expand("<slnum>")) 4025 " "" call Decho("g:netrw_keepdir =".(exists("g:netrw_keepdir")? g:netrw_keepdir : 'n/a'),'~'.expand("<slnum>"))
3843 " call Decho("g:netrw_cygwin =".(exists("g:netrw_cygwin")? g:netrw_cygwin : 'n/a'),'~'.expand("<slnum>")) 4026 " "" call Decho("g:netrw_cygwin =".(exists("g:netrw_cygwin")? g:netrw_cygwin : 'n/a'),'~'.expand("<slnum>"))
3844 " call Decho("g:netrw_liststyle=".(exists("g:netrw_liststyle")? g:netrw_liststyle : 'n/a'),'~'.expand("<slnum>")) 4027 " "" call Decho("g:netrw_liststyle=".(exists("g:netrw_liststyle")? g:netrw_liststyle : 'n/a'),'~'.expand("<slnum>"))
3845 " call Decho("w:netrw_liststyle=".(exists("w:netrw_liststyle")? w:netrw_liststyle : 'n/a'),'~'.expand("<slnum>")) 4028 " "" call Decho("w:netrw_liststyle=".(exists("w:netrw_liststyle")? w:netrw_liststyle : 'n/a'),'~'.expand("<slnum>"))
3846 4029
3847 " clean up any leading treedepthstring 4030 " clean up any leading treedepthstring
3848 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST 4031 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
3849 let fname= substitute(a:fname,'^'.s:treedepthstring.'\+','','') 4032 let fname= substitute(a:fname,'^'.s:treedepthstring.'\+','','')
3850 " call Decho("clean up any leading treedepthstring: fname<".fname.">",'~'.expand("<slnum>")) 4033 " "" call Decho("clean up any leading treedepthstring: fname<".fname.">",'~'.expand("<slnum>"))
3851 else 4034 else
3852 let fname= a:fname 4035 let fname= a:fname
3853 endif 4036 endif
3854 4037
3855 if g:netrw_keepdir 4038 if g:netrw_keepdir
3860 4043
3861 if !exists("g:netrw_cygwin") && (has("win32") || has("win95") || has("win64") || has("win16")) 4044 if !exists("g:netrw_cygwin") && (has("win32") || has("win95") || has("win64") || has("win16"))
3862 if fname =~ '^\' || fname =~ '^\a:\' 4045 if fname =~ '^\' || fname =~ '^\a:\'
3863 " windows, but full path given 4046 " windows, but full path given
3864 let ret= fname 4047 let ret= fname
3865 " call Decho("windows+full path: isdirectory(".fname.")",'~'.expand("<slnum>")) 4048 " "" call Decho("windows+full path: isdirectory(".fname.")",'~'.expand("<slnum>"))
3866 else 4049 else
3867 " windows, relative path given 4050 " windows, relative path given
3868 let ret= s:ComposePath(b:netrw_curdir,fname) 4051 let ret= s:ComposePath(b:netrw_curdir,fname)
3869 " call Decho("windows+rltv path: isdirectory(".fname.")",'~'.expand("<slnum>")) 4052 " "" call Decho("windows+rltv path: isdirectory(".fname.")",'~'.expand("<slnum>"))
3870 endif 4053 endif
3871 4054
3872 elseif fname =~ '^/' 4055 elseif fname =~ '^/'
3873 " not windows, full path given 4056 " not windows, full path given
3874 let ret= fname 4057 let ret= fname
3875 " call Decho("unix+full path: isdirectory(".fname.")",'~'.expand("<slnum>")) 4058 " "" call Decho("unix+full path: isdirectory(".fname.")",'~'.expand("<slnum>"))
3876 else 4059 else
3877 " not windows, relative path given 4060 " not windows, relative path given
3878 let ret= s:ComposePath(b:netrw_curdir,fname) 4061 let ret= s:ComposePath(b:netrw_curdir,fname)
3879 " call Decho("unix+rltv path: isdirectory(".fname.")",'~'.expand("<slnum>")) 4062 " "" call Decho("unix+rltv path: isdirectory(".fname.")",'~'.expand("<slnum>"))
3880 endif 4063 endif
3881 else 4064 else
3882 " vim and netrw agree on the current directory 4065 " vim and netrw agree on the current directory
3883 let ret= fname 4066 let ret= fname
3884 " call Decho("vim and netrw agree on current directory (g:netrw_keepdir=".g:netrw_keepdir.")",'~'.expand("<slnum>")) 4067 " "" call Decho("vim and netrw agree on current directory (g:netrw_keepdir=".g:netrw_keepdir.")",'~'.expand("<slnum>"))
3885 " call Decho("vim directory: ".getcwd(),'~'.expand("<slnum>")) 4068 " "" call Decho("vim directory: ".getcwd(),'~'.expand("<slnum>"))
3886 " call Decho("netrw directory: ".(exists("b:netrw_curdir")? b:netrw_curdir : 'n/a'),'~'.expand("<slnum>")) 4069 " "" call Decho("netrw directory: ".(exists("b:netrw_curdir")? b:netrw_curdir : 'n/a'),'~'.expand("<slnum>"))
3887 endif 4070 endif
3888 4071
3889 " call Dret("s:NetrwFile ".ret) 4072 " "" call Dret("s:NetrwFile ".ret)
3890 return ret 4073 return ret
3891 endfun 4074 endfun
3892 4075
3893 " --------------------------------------------------------------------- 4076 " ---------------------------------------------------------------------
3894 " s:NetrwFileInfo: supports qf (query for file information) {{{2 4077 " s:NetrwFileInfo: supports qf (query for file information) {{{2
3958 " " call Dret("s:NetrwFullPath <".filename.">") 4141 " " call Dret("s:NetrwFullPath <".filename.">")
3959 return filename 4142 return filename
3960 endfun 4143 endfun
3961 4144
3962 " --------------------------------------------------------------------- 4145 " ---------------------------------------------------------------------
3963 " s:NetrwGetBuffer: {{{2 4146 " s:NetrwGetBuffer: [get a new|find an old netrw] buffer for a netrw listing {{{2
3964 " returns 0=cleared buffer 4147 " returns 0=cleared buffer
3965 " 1=re-used buffer (buffer not cleared) 4148 " 1=re-used buffer (buffer not cleared)
3966 fun! s:NetrwGetBuffer(islocal,dirname) 4149 fun! s:NetrwGetBuffer(islocal,dirname)
3967 " call Dfunc("s:NetrwGetBuffer(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".g:netrw_liststyle) 4150 " call Dfunc("s:NetrwGetBuffer(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".g:netrw_liststyle)
3968 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>")) 4151 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>"))
3969 " call Decho("netrwbuf dictionary=".string(s:netrwbuf),'~'.expand("<slnum>")) 4152 " call Decho("netrwbuf dictionary=".(exists("s:netrwbuf")? string(s:netrwbuf) : 'n/a'),'~'.expand("<slnum>"))
4153 " call Dredir("ls!","s:NetrwGetBuffer")
3970 let dirname= a:dirname 4154 let dirname= a:dirname
3971 4155
3972 " re-use buffer if possible {{{3 4156 " re-use buffer if possible {{{3
3973 " call Decho("--re-use a buffer if possible--",'~'.expand("<slnum>")) 4157 " call Decho("--re-use a buffer if possible--",'~'.expand("<slnum>"))
3974 if !exists("s:netrwbuf") 4158 if !exists("s:netrwbuf")
4159 " call Decho(" s:netrwbuf initialized to {}",'~'.expand("<slnum>"))
3975 let s:netrwbuf= {} 4160 let s:netrwbuf= {}
3976 endif 4161 endif
3977 if has_key(s:netrwbuf,s:NetrwFullPath(dirname)) 4162 " call Decho(" s:netrwbuf =".string(s:netrwbuf),'~'.expand("<slnum>"))
4163 " call Decho(" w:netrw_liststyle =".(exists("w:netrw_liststyle")? w:netrw_liststyle : "n/a"),'~'.expand("<slnum>"))
4164
4165 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
4166 let bufnum = -1
4167
4168 if !empty(s:netrwbuf) && has_key(s:netrwbuf,s:NetrwFullPath(dirname))
4169 if has_key(s:netrwbuf,"NetrwTreeListing")
4170 let bufnum= s:netrwbuf["NetrwTreeListing"]
4171 else
4172 let bufnum= s:netrwbuf[s:NetrwFullPath(dirname)]
4173 endif
4174 " call Decho(" NetrwTreeListing: bufnum#".bufnum,'~'.expand("<slnum>"))
4175 if !bufexists(bufnum)
4176 call remove(s:netrwbuf,"NetrwTreeListing"])
4177 let bufnum= -1
4178 endif
4179 elseif bufnr("NetrwTreeListing") != -1
4180 let bufnum= bufnr("NetrwTreeListing")
4181 " call Decho(" NetrwTreeListing".": bufnum#".bufnum,'~'.expand("<slnum>"))
4182 else
4183 " call Decho(" did not find a NetrwTreeListing buffer",'~'.expand("<slnum>"))
4184 let bufnum= -1
4185 endif
4186
4187 elseif has_key(s:netrwbuf,s:NetrwFullPath(dirname))
3978 let bufnum= s:netrwbuf[s:NetrwFullPath(dirname)] 4188 let bufnum= s:netrwbuf[s:NetrwFullPath(dirname)]
3979 " call Decho("lookup netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."]=".bufnum) 4189 " call Decho(" lookup netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."]=".bufnum,'~'.expand("<slnum>"))
3980 if !bufexists(bufnum) 4190 if !bufexists(bufnum)
3981 call remove(s:netrwbuf,s:NetrwFullPath(dirname)) 4191 call remove(s:netrwbuf,s:NetrwFullPath(dirname))
3982 let bufnum= -1 4192 let bufnum= -1
3983 endif 4193 endif
3984 else 4194
3985 " call Decho("lookup netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."] not a key") 4195 else
4196 " call Decho(" lookup netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."] not a key",'~'.expand("<slnum>"))
3986 let bufnum= -1 4197 let bufnum= -1
4198 endif
4199 " call Decho(" bufnum#".bufnum,'~'.expand("<slnum>"))
4200
4201 " highjack the current buffer if
4202 " it has the desired name
4203 " it is empty
4204 " call Decho("deciding if I can highjack the current buffer#".bufnr("%"),'~'.expand("<slnum>"))
4205 " call Decho("..dirname<".dirname.">",'~'.expand("<slnum>"))
4206 " call Decho("..bufname<".bufname("%").">",'~'.expand("<slnum>"))
4207 " call Decho("..getline($)<".getline("$").">",'~'.expand("<slnum>"))
4208 if dirname == bufname("%") && line("$") == 1 && getline("%") == ""
4209 " call Dret("s:NetrwGetBuffer 0<cleared buffer> : highjacking buffer#".bufnr("%"))
4210 return 0
3987 endif 4211 endif
3988 4212
3989 " get enew buffer and name it -or- re-use buffer {{{3 4213 " get enew buffer and name it -or- re-use buffer {{{3
3990 if bufnum < 0 " get enew buffer and name it 4214 if bufnum < 0 " get enew buffer and name it
3991 " call Decho("--get enew buffer and name it (bufnum#".bufnum."<0 OR bufexists(".bufnum.")=".bufexists(bufnum)."==0)",'~'.expand("<slnum>")) 4215 " call Decho("--get enew buffer and name it (bufnum#".bufnum."<0 OR bufexists(".bufnum.")=".bufexists(bufnum)."==0)",'~'.expand("<slnum>"))
3993 " call Decho(" got enew buffer#".bufnr("%")." (altbuf<".expand("#").">)",'~'.expand("<slnum>")) 4217 " call Decho(" got enew buffer#".bufnr("%")." (altbuf<".expand("#").">)",'~'.expand("<slnum>"))
3994 " name the buffer 4218 " name the buffer
3995 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST 4219 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
3996 " Got enew buffer; transform into a NetrwTreeListing 4220 " Got enew buffer; transform into a NetrwTreeListing
3997 " call Decho("--transform enew buffer#".bufnr("%")." into a NetrwTreeListing --",'~'.expand("<slnum>")) 4221 " call Decho("--transform enew buffer#".bufnr("%")." into a NetrwTreeListing --",'~'.expand("<slnum>"))
3998 if !exists("s:netrw_treelistnum") 4222 let w:netrw_treebufnr = bufnr("%")
3999 let s:netrw_treelistnum= 1 4223 call s:NetrwBufRename("NetrwTreeListing")
4000 else
4001 let s:netrw_treelistnum= s:netrw_treelistnum + 1
4002 endif
4003 let w:netrw_treebufnr= bufnr("%")
4004 " call Decho(" exe sil! keepalt file NetrwTreeListing ".fnameescape(s:netrw_treelistnum),'~'.expand("<slnum>"))
4005 exe 'sil! keepalt file NetrwTreeListing\ '.fnameescape(s:netrw_treelistnum)
4006 if g:netrw_use_noswf 4224 if g:netrw_use_noswf
4007 setl nobl bt=nofile noswf 4225 setl nobl bt=nofile noswf
4008 else 4226 else
4009 setl nobl bt=nofile 4227 setl nobl bt=nofile
4010 endif 4228 endif
4011 nnoremap <silent> <buffer> [[ :sil call <SID>TreeListMove('[[')<cr> 4229 nnoremap <silent> <buffer> [[ :sil call <SID>TreeListMove('[[')<cr>
4012 nnoremap <silent> <buffer> ]] :sil call <SID>TreeListMove(']]')<cr> 4230 nnoremap <silent> <buffer> ]] :sil call <SID>TreeListMove(']]')<cr>
4013 nnoremap <silent> <buffer> [] :sil call <SID>TreeListMove('[]')<cr> 4231 nnoremap <silent> <buffer> [] :sil call <SID>TreeListMove('[]')<cr>
4014 nnoremap <silent> <buffer> ][ :sil call <SID>TreeListMove('][')<cr> 4232 nnoremap <silent> <buffer> ][ :sil call <SID>TreeListMove('][')<cr>
4015 " call Decho(" tree listing#".s:netrw_treelistnum." bufnr=".w:netrw_treebufnr,'~'.expand("<slnum>")) 4233 " call Decho(" tree listing bufnr=".w:netrw_treebufnr,'~'.expand("<slnum>"))
4016 else 4234 else
4017 " let v:errmsg = "" " Decho 4235 call s:NetrwBufRename(dirname)
4018 let escdirname = fnameescape(dirname)
4019 " call Decho(" errmsg<".v:errmsg."> bufnr(escdirname<".escdirname.">)=".bufnr(escdirname)." bufname()<".bufname(bufnr(escdirname)).">",'~'.expand("<slnum>"))
4020 " call Decho(' exe sil! keepalt file '.escdirname,'~'.expand("<slnum>"))
4021 " let v:errmsg= "" " Decho
4022 exe 'sil! keepj keepalt file '.escdirname
4023 " call Decho(" errmsg<".v:errmsg."> bufnr(".escdirname.")=".bufnr(escdirname)."<".bufname(bufnr(escdirname)).">",'~'.expand("<slnum>"))
4024 " enter the new buffer into the s:netrwbuf dictionary 4236 " enter the new buffer into the s:netrwbuf dictionary
4025 let s:netrwbuf[s:NetrwFullPath(dirname)]= bufnr("%") 4237 let s:netrwbuf[s:NetrwFullPath(dirname)]= bufnr("%")
4026 " call Decho("update netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."]=".bufnr("%"),'~'.expand("<slnum>")) 4238 " call Decho("update netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."]=".bufnr("%"),'~'.expand("<slnum>"))
4027 " call Decho("netrwbuf dictionary=".string(s:netrwbuf),'~'.expand("<slnum>")) 4239 " call Decho("netrwbuf dictionary=".string(s:netrwbuf),'~'.expand("<slnum>"))
4028 endif 4240 endif
4039 " call Decho(" getline(2)<".getline(2).'> does not match "Netrw Directory Listing" : using b '.bufnum,'~'.expand("<slnum>")) 4251 " call Decho(" getline(2)<".getline(2).'> does not match "Netrw Directory Listing" : using b '.bufnum,'~'.expand("<slnum>"))
4040 exe "sil! NetrwKeepj noswapfile keepalt b ".bufnum 4252 exe "sil! NetrwKeepj noswapfile keepalt b ".bufnum
4041 endif 4253 endif
4042 " call Decho(" line($)=".line("$"),'~'.expand("<slnum>")) 4254 " call Decho(" line($)=".line("$"),'~'.expand("<slnum>"))
4043 if bufname("%") == '.' 4255 if bufname("%") == '.'
4044 " call Decho("exe sil! keepalt file ".fnameescape(getcwd()),'~'.expand("<slnum>")) 4256 call s:NetrwBufRename(getcwd())
4045 exe "sil! NetrwKeepj keepalt file ".fnameescape(getcwd())
4046 endif 4257 endif
4047 let &ei= eikeep 4258 let &ei= eikeep
4048 4259
4049 if line("$") <= 1 && getline(1) == "" 4260 if line("$") <= 1 && getline(1) == ""
4050 " empty buffer 4261 " empty buffer
4064 return 0 4275 return 0
4065 4276
4066 elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST 4277 elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
4067 " call Decho("--re-use tree listing--",'~'.expand("<slnum>")) 4278 " call Decho("--re-use tree listing--",'~'.expand("<slnum>"))
4068 " call Decho(" clear buffer<".expand("%")."> with :%d",'~'.expand("<slnum>")) 4279 " call Decho(" clear buffer<".expand("%")."> with :%d",'~'.expand("<slnum>"))
4280 setl ma
4069 sil NetrwKeepj %d _ 4281 sil NetrwKeepj %d _
4070 NetrwKeepj call s:NetrwListSettings(a:islocal) 4282 NetrwKeepj call s:NetrwListSettings(a:islocal)
4071 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>")) 4283 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>"))
4072 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>")) 4284 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>"))
4073 " call Dret("s:NetrwGetBuffer 0<cleared buffer> : re-using buffer#".bufnr("%").", but treelist mode always needs a refresh") 4285 " call Dret("s:NetrwGetBuffer 0<cleared buffer> : re-using buffer#".bufnr("%").", but treelist mode always needs a refresh")
4087 " med 1 D H 4299 " med 1 D H
4088 " fast 2 H H 4300 " fast 2 H H
4089 " call Decho("--do netrw settings: make this buffer#".bufnr("%")." not-a-file, modifiable, not line-numbered, etc--",'~'.expand("<slnum>")) 4301 " call Decho("--do netrw settings: make this buffer#".bufnr("%")." not-a-file, modifiable, not line-numbered, etc--",'~'.expand("<slnum>"))
4090 let fname= expand("%") 4302 let fname= expand("%")
4091 NetrwKeepj call s:NetrwListSettings(a:islocal) 4303 NetrwKeepj call s:NetrwListSettings(a:islocal)
4092 " call Decho("exe sil! keepalt file ".fnameescape(fname),'~'.expand("<slnum>")) 4304 call s:NetrwBufRename(fname)
4093 exe "sil! NetrwKeepj keepalt file ".fnameescape(fname)
4094 4305
4095 " delete all lines from buffer {{{3 4306 " delete all lines from buffer {{{3
4096 " call Decho("--delete all lines from buffer--",'~'.expand("<slnum>")) 4307 " call Decho("--delete all lines from buffer--",'~'.expand("<slnum>"))
4097 " call Decho(" clear buffer<".expand("%")."> with :%d",'~'.expand("<slnum>")) 4308 " call Decho(" clear buffer<".expand("%")."> with :%d",'~'.expand("<slnum>"))
4098 sil! keepalt NetrwKeepj %d _ 4309 sil! keepalt NetrwKeepj %d _
4146 NetrwKeepj norm! 0 4357 NetrwKeepj norm! 0
4147 let dirname= "./" 4358 let dirname= "./"
4148 let curline= getline('.') 4359 let curline= getline('.')
4149 4360
4150 if curline =~# '"\s*Sorted by\s' 4361 if curline =~# '"\s*Sorted by\s'
4151 NetrwKeepj norm s 4362 NetrwKeepj norm! s
4152 let s:netrw_skipbrowse= 1 4363 let s:netrw_skipbrowse= 1
4153 echo 'Pressing "s" also works' 4364 echo 'Pressing "s" also works'
4154 4365
4155 elseif curline =~# '"\s*Sort sequence:' 4366 elseif curline =~# '"\s*Sort sequence:'
4156 let s:netrw_skipbrowse= 1 4367 let s:netrw_skipbrowse= 1
4157 echo 'Press "S" to edit sorting sequence' 4368 echo 'Press "S" to edit sorting sequence'
4158 4369
4159 elseif curline =~# '"\s*Quick Help:' 4370 elseif curline =~# '"\s*Quick Help:'
4160 NetrwKeepj norm ? 4371 NetrwKeepj norm! ?
4161 let s:netrw_skipbrowse= 1 4372 let s:netrw_skipbrowse= 1
4162 4373
4163 elseif curline =~# '"\s*\%(Hiding\|Showing\):' 4374 elseif curline =~# '"\s*\%(Hiding\|Showing\):'
4164 NetrwKeepj norm a 4375 NetrwKeepj norm! a
4165 let s:netrw_skipbrowse= 1 4376 let s:netrw_skipbrowse= 1
4166 echo 'Pressing "a" also works' 4377 echo 'Pressing "a" also works'
4167 4378
4168 elseif line("$") > w:netrw_bannercnt 4379 elseif line("$") > w:netrw_bannercnt
4169 exe 'sil NetrwKeepj '.w:netrw_bannercnt 4380 exe 'sil NetrwKeepj '.w:netrw_bannercnt
4231 " call Dret("s:NetrwGetWord <".dirname.">") 4442 " call Dret("s:NetrwGetWord <".dirname.">")
4232 return dirname 4443 return dirname
4233 endfun 4444 endfun
4234 4445
4235 " --------------------------------------------------------------------- 4446 " ---------------------------------------------------------------------
4236 " s:NetrwListSettings: make standard settings for a netrw listing {{{2 4447 " s:NetrwListSettings: make standard settings for making a netrw listing {{{2
4448 " g:netrw_bufsettings will be used after the listing is produced.
4449 " Called by s:NetrwGetBuffer()
4237 fun! s:NetrwListSettings(islocal) 4450 fun! s:NetrwListSettings(islocal)
4238 " call Dfunc("s:NetrwListSettings(islocal=".a:islocal.")") 4451 " call Dfunc("s:NetrwListSettings(islocal=".a:islocal.")")
4239 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>")) 4452 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>"))
4240 let fname= bufname("%") 4453 let fname= bufname("%")
4241 " " call Decho("(NetrwListSettings) setl bt=nofile nobl ma nonu nowrap noro nornu",'~'.expand("<slnum>")) 4454 " " call Decho("setl bt=nofile nobl ma nonu nowrap noro nornu",'~'.expand("<slnum>"))
4242 setl bt=nofile nobl ma nonu nowrap noro nornu 4455 " nobl noma nomod nonu noma nowrap ro nornu (std g:netrw_bufsettings)
4243 " call Decho("(NetrwListSettings) exe sil! keepalt file ".fnameescape(fname),'~'.expand("<slnum>")) 4456 setl bt=nofile nobl ma nonu nowrap noro nornu
4244 exe "sil! keepalt file ".fnameescape(fname) 4457 call s:NetrwBufRename(fname)
4245 if g:netrw_use_noswf 4458 if g:netrw_use_noswf
4246 setl noswf 4459 setl noswf
4247 endif 4460 endif
4248 " call Dredir("ls!") 4461 " call Dredir("ls!","s:NetrwListSettings")
4249 " call Decho("(NetrwListSettings) exe setl ts=".(g:netrw_maxfilenamelen+1),'~'.expand("<slnum>")) 4462 " call Decho("exe setl ts=".(g:netrw_maxfilenamelen+1),'~'.expand("<slnum>"))
4250 exe "setl ts=".(g:netrw_maxfilenamelen+1) 4463 exe "setl ts=".(g:netrw_maxfilenamelen+1)
4251 setl isk+=.,~,- 4464 setl isk+=.,~,-
4252 if g:netrw_fastbrowse > a:islocal 4465 if g:netrw_fastbrowse > a:islocal
4253 setl bh=hide 4466 setl bh=hide
4254 else 4467 else
4257 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>")) 4470 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>"))
4258 " call Dret("s:NetrwListSettings") 4471 " call Dret("s:NetrwListSettings")
4259 endfun 4472 endfun
4260 4473
4261 " --------------------------------------------------------------------- 4474 " ---------------------------------------------------------------------
4262 " s:NetrwListStyle: {{{2 4475 " s:NetrwListStyle: change list style (thin - long - wide - tree) {{{2
4263 " islocal=0: remote browsing 4476 " islocal=0: remote browsing
4264 " =1: local browsing 4477 " =1: local browsing
4265 fun! s:NetrwListStyle(islocal) 4478 fun! s:NetrwListStyle(islocal)
4266 " call Dfunc("NetrwListStyle(islocal=".a:islocal.") w:netrw_liststyle=".w:netrw_liststyle) 4479 " call Dfunc("NetrwListStyle(islocal=".a:islocal.") w:netrw_liststyle=".w:netrw_liststyle)
4267 4480
4273 let w:netrw_liststyle = (w:netrw_liststyle + 1) % s:MAXLIST 4486 let w:netrw_liststyle = (w:netrw_liststyle + 1) % s:MAXLIST
4274 " call Decho("fname<".fname.">",'~'.expand("<slnum>")) 4487 " call Decho("fname<".fname.">",'~'.expand("<slnum>"))
4275 " call Decho("chgd w:netrw_liststyle to ".w:netrw_liststyle,'~'.expand("<slnum>")) 4488 " call Decho("chgd w:netrw_liststyle to ".w:netrw_liststyle,'~'.expand("<slnum>"))
4276 " call Decho("b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "doesn't exist").">",'~'.expand("<slnum>")) 4489 " call Decho("b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "doesn't exist").">",'~'.expand("<slnum>"))
4277 4490
4491 " repoint t:netrw_lexbufnr if appropriate
4492 if exists("t:netrw_lexbufnr") && bufnr("%") == t:netrw_lexbufnr
4493 " call Decho("set repointlexbufnr to true!")
4494 let repointlexbufnr= 1
4495 endif
4496
4278 if w:netrw_liststyle == s:THINLIST 4497 if w:netrw_liststyle == s:THINLIST
4279 " use one column listing 4498 " use one column listing
4280 " call Decho("use one column list",'~'.expand("<slnum>")) 4499 " call Decho("use one column list",'~'.expand("<slnum>"))
4281 let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge') 4500 let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge')
4282 4501
4314 " refresh the listing 4533 " refresh the listing
4315 " call Decho("refresh the listing",'~'.expand("<slnum>")) 4534 " call Decho("refresh the listing",'~'.expand("<slnum>"))
4316 NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) 4535 NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
4317 NetrwKeepj call s:NetrwCursor() 4536 NetrwKeepj call s:NetrwCursor()
4318 4537
4538 " repoint t:netrw_lexbufnr if appropriate
4539 if exists("repointlexbufnr")
4540 let t:netrw_lexbufnr= bufnr("%")
4541 " call Decho("repoint t:netrw_lexbufnr to #".t:netrw_lexbufnr)
4542 endif
4543
4319 " restore position; keep cursor on the filename 4544 " restore position; keep cursor on the filename
4320 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) 4545 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))
4321 NetrwKeepj call winrestview(svpos) 4546 NetrwKeepj call winrestview(svpos)
4322 let @@= ykeep 4547 let @@= ykeep
4323 4548
4337 let svpos= winsaveview() 4562 let svpos= winsaveview()
4338 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) 4563 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))
4339 call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) 4564 call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
4340 4565
4341 " keep cursor on the filename 4566 " keep cursor on the filename
4342 let fname= s:NetrwGetWord() 4567 if g:netrw_banner && exists("w:netrw_bannercnt") && line(".") >= w:netrw_bannercnt
4343 sil NetrwKeepj $ 4568 let fname= s:NetrwGetWord()
4344 let result= search('\%(^\%(|\+\s\)\=\|\s\{2,}\)\zs'.escape(fname,'.\[]*$^').'\%(\s\{2,}\|$\)','bc') 4569 sil NetrwKeepj $
4345 " call Decho("search result=".result." w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'N/A'),'~'.expand("<slnum>")) 4570 let result= search('\%(^\%(|\+\s\)\=\|\s\{2,}\)\zs'.escape(fname,'.\[]*$^').'\%(\s\{2,}\|$\)','bc')
4346 if result <= 0 && exists("w:netrw_bannercnt") 4571 " " call Decho("search result=".result." w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'N/A'),'~'.expand("<slnum>"))
4347 exe "NetrwKeepj ".w:netrw_bannercnt 4572 if result <= 0 && exists("w:netrw_bannercnt")
4573 exe "NetrwKeepj ".w:netrw_bannercnt
4574 endif
4348 endif 4575 endif
4349 let @@= ykeep 4576 let @@= ykeep
4350 " call Dret("s:NetrwBannerCtrl : g:netrw_banner=".g:netrw_banner) 4577 " call Dret("s:NetrwBannerCtrl : g:netrw_banner=".g:netrw_banner)
4351 endfun 4578 endfun
4352 4579
4433 " (see s:NetrwMenu()) 4660 " (see s:NetrwMenu())
4434 fun! s:NetrwBookmarkMenu() 4661 fun! s:NetrwBookmarkMenu()
4435 if !exists("s:netrw_menucnt") 4662 if !exists("s:netrw_menucnt")
4436 return 4663 return
4437 endif 4664 endif
4438 " call Dfunc("NetrwBookmarkMenu() histcnt=".g:netrw_dirhist_cnt." menucnt=".s:netrw_menucnt) 4665 " call Dfunc("NetrwBookmarkMenu() histcnt=".g:netrw_dirhistcnt." menucnt=".s:netrw_menucnt)
4439 4666
4440 " the following test assures that gvim is running, has menus available, and has menus enabled. 4667 " the following test assures that gvim is running, has menus available, and has menus enabled.
4441 if has("gui") && has("menu") && has("gui_running") && &go =~# 'm' && g:netrw_menu 4668 if has("gui") && has("menu") && has("gui_running") && &go =~# 'm' && g:netrw_menu
4442 if exists("g:NetrwTopLvlMenu") 4669 if exists("g:NetrwTopLvlMenu")
4443 " call Decho("removing ".g:NetrwTopLvlMenu."Bookmarks menu item(s)",'~'.expand("<slnum>")) 4670 " call Decho("removing ".g:NetrwTopLvlMenu."Bookmarks menu item(s)",'~'.expand("<slnum>"))
4465 4692
4466 endif 4693 endif
4467 4694
4468 " show directory browsing history 4695 " show directory browsing history
4469 if g:netrw_dirhistmax > 0 4696 if g:netrw_dirhistmax > 0
4470 let cnt = g:netrw_dirhist_cnt 4697 let cnt = g:netrw_dirhistcnt
4471 let first = 1 4698 let first = 1
4472 let histcnt = 0 4699 let histcnt = 0
4473 while ( first || cnt != g:netrw_dirhist_cnt ) 4700 while ( first || cnt != g:netrw_dirhistcnt )
4474 let histcnt = histcnt + 1 4701 let histcnt = histcnt + 1
4475 let priority = g:netrw_dirhist_cnt + histcnt 4702 let priority = g:netrw_dirhistcnt + histcnt
4476 if exists("g:netrw_dirhist_{cnt}") 4703 if exists("g:netrw_dirhist_{cnt}")
4477 let histdir= escape(g:netrw_dirhist_{cnt},g:netrw_menu_escape) 4704 let histdir= escape(g:netrw_dirhist_{cnt},g:netrw_menu_escape)
4478 " call Decho('sil! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.' :e '.histdir,'~'.expand("<slnum>")) 4705 " call Decho('sil! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.' :e '.histdir,'~'.expand("<slnum>"))
4479 exe 'sil! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.' :e '.histdir."\<cr>" 4706 exe 'sil! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.' :e '.histdir."\<cr>"
4480 endif 4707 endif
4504 " Don't try to change-directory: this can happen, for example, when netrw#ErrorMsg has been called 4731 " Don't try to change-directory: this can happen, for example, when netrw#ErrorMsg has been called
4505 " and the current window is the NetrwMessage window. 4732 " and the current window is the NetrwMessage window.
4506 let @@= ykeep 4733 let @@= ykeep
4507 " call Decho("b:netrw_curdir doesn't exist!",'~'.expand("<slnum>")) 4734 " call Decho("b:netrw_curdir doesn't exist!",'~'.expand("<slnum>"))
4508 " call Decho("getcwd<".getcwd().">",'~'.expand("<slnum>")) 4735 " call Decho("getcwd<".getcwd().">",'~'.expand("<slnum>"))
4509 " call Dredir("ls!") 4736 " call Dredir("ls!","s:NetrwBrowseChgDir")
4510 " call Dret("s:NetrwBrowseChgDir") 4737 " call Dret("s:NetrwBrowseChgDir")
4511 return 4738 return
4512 endif 4739 endif
4513 " call Decho("b:netrw_curdir<".b:netrw_curdir.">") 4740 " call Decho("b:netrw_curdir<".b:netrw_curdir.">")
4514 4741
4515 " NetrwBrowseChgDir: save options and initialize {{{3 4742 " NetrwBrowseChgDir: save options and initialize {{{3
4516 " call Decho("saving options",'~'.expand("<slnum>")) 4743 " call Decho("saving options",'~'.expand("<slnum>"))
4517 call s:SavePosn(s:netrw_nbcd) 4744 call s:SavePosn(s:netrw_posn)
4518 NetrwKeepj call s:NetrwOptionSave("s:") 4745 NetrwKeepj call s:NetrwOptionsSave("s:")
4519 NetrwKeepj call s:NetrwSafeOptions() 4746 NetrwKeepj call s:NetrwOptionsSafe(a:islocal)
4520 if (has("win32") || has("win95") || has("win64") || has("win16")) 4747 if (has("win32") || has("win95") || has("win64") || has("win16"))
4521 let dirname = substitute(b:netrw_curdir,'\\','/','ge') 4748 let dirname = substitute(b:netrw_curdir,'\\','/','ge')
4522 else 4749 else
4523 let dirname = b:netrw_curdir 4750 let dirname = b:netrw_curdir
4524 endif 4751 endif
4525 let newdir = a:newdir 4752 let newdir = a:newdir
4526 let dolockout = 0 4753 let dolockout = 0
4527 let dorestore = 1 4754 let dorestore = 1
4528 " call Decho("dirname<".dirname.">",'~'.expand("<slnum>")) 4755 " call Decho("dirname<".dirname.">",'~'.expand("<slnum>"))
4756 " call Decho("newdir<".newdir.">",'~'.expand("<slnum>"))
4529 4757
4530 " ignore <cr>s when done in the banner 4758 " ignore <cr>s when done in the banner
4531 " call Decho('ignore [return]s when done in banner (g:netrw_banner='.g:netrw_banner.")",'~'.expand("<slnum>")) 4759 " call Decho('(s:NetrwBrowseChgDir) ignore [return]s when done in banner (g:netrw_banner='.g:netrw_banner.")",'~'.expand("<slnum>"))
4532 if g:netrw_banner 4760 if g:netrw_banner
4533 " call Decho("w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'n/a')." line(.)#".line('.')." line($)#".line("#"),'~'.expand("<slnum>")) 4761 " call Decho("w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'n/a')." line(.)#".line('.')." line($)#".line("#"),'~'.expand("<slnum>"))
4534 if exists("w:netrw_bannercnt") && line(".") < w:netrw_bannercnt && line("$") >= w:netrw_bannercnt 4762 if exists("w:netrw_bannercnt") && line(".") < w:netrw_bannercnt && line("$") >= w:netrw_bannercnt
4535 if getline(".") =~# 'Quick Help' 4763 if getline(".") =~# 'Quick Help'
4536 " call Decho("#1: quickhelp=".g:netrw_quickhelp." ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) 4764 " call Decho("#1: quickhelp=".g:netrw_quickhelp." ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
4537 let g:netrw_quickhelp= (g:netrw_quickhelp + 1)%len(s:QuickHelp) 4765 let g:netrw_quickhelp= (g:netrw_quickhelp + 1)%len(s:QuickHelp)
4538 " call Decho("#2: quickhelp=".g:netrw_quickhelp." ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) 4766 " call Decho("#2: quickhelp=".g:netrw_quickhelp." ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
4539 setl ma noro nowrap 4767 setl ma noro nowrap
4540 NetrwKeepj call setline(line('.'),'" Quick Help: <F1>:help '.s:QuickHelp[g:netrw_quickhelp]) 4768 NetrwKeepj call setline(line('.'),'" Quick Help: <F1>:help '.s:QuickHelp[g:netrw_quickhelp])
4541 setl noma nomod nowrap 4769 setl noma nomod nowrap
4542 call s:RestorePosn(s:netrw_nbcd) 4770 NetrwKeepj call s:NetrwOptionsRestore("s:")
4543 NetrwKeepj call s:NetrwOptionRestore("s:")
4544 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) 4771 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
4545 endif 4772 endif
4546 endif 4773 endif
4547 " else " Decho 4774 " else " Decho
4548 " call Decho("(s:NetrwBrowseChgdir) g:netrw_banner=".g:netrw_banner." (no banner)",'~'.expand("<slnum>")) 4775 " call Decho("g:netrw_banner=".g:netrw_banner." (no banner)",'~'.expand("<slnum>"))
4549 endif 4776 endif
4550 4777
4551 " set up o/s-dependent directory recognition pattern 4778 " set up o/s-dependent directory recognition pattern
4552 if has("amiga") 4779 if has("amiga")
4553 let dirpat= '[\/:]$' 4780 let dirpat= '[\/:]$'
4566 " call Decho("[newdir<".newdir."> ".((newdir =~ dirpat)? "=~" : "!~")." dirpat<".dirpat.">] && [islocal=".a:islocal."] && [newdir is ".(isdirectory(s:NetrwFile(newdir))? "" : "not ")."a directory]",'~'.expand("<slnum>")) 4793 " call Decho("[newdir<".newdir."> ".((newdir =~ dirpat)? "=~" : "!~")." dirpat<".dirpat.">] && [islocal=".a:islocal."] && [newdir is ".(isdirectory(s:NetrwFile(newdir))? "" : "not ")."a directory]",'~'.expand("<slnum>"))
4567 if newdir !~ dirpat && !(a:islocal && isdirectory(s:NetrwFile(s:ComposePath(dirname,newdir)))) 4794 if newdir !~ dirpat && !(a:islocal && isdirectory(s:NetrwFile(s:ComposePath(dirname,newdir))))
4568 " ------------------------------ 4795 " ------------------------------
4569 " NetrwBrowseChgDir: edit a file {{{3 4796 " NetrwBrowseChgDir: edit a file {{{3
4570 " ------------------------------ 4797 " ------------------------------
4571 " call Decho('edit-a-file: case "handling a file": newdir<'.newdir.'> !~ dirpat<'.dirpat.">",'~'.expand("<slnum>")) 4798 " call Decho('(s:NetrwBrowseChgDir) edit-a-file: case "handling a file": newdir<'.newdir.'> !~ dirpat<'.dirpat.">",'~'.expand("<slnum>"))
4572 4799
4573 " save position for benefit of Rexplore 4800 " save position for benefit of Rexplore
4574 let s:rexposn_{bufnr("%")}= winsaveview() 4801 let s:rexposn_{bufnr("%")}= winsaveview()
4575 " call Decho("edit-a-file: saving posn to s:rexposn_".bufnr("%")."<".string(s:rexposn_{bufnr("%")}).">",'~'.expand("<slnum>")) 4802 " call Decho("edit-a-file: saving posn to s:rexposn_".bufnr("%")."<".string(s:rexposn_{bufnr("%")}).">",'~'.expand("<slnum>"))
4576 " call Decho("edit-a-file: win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> ft=".&ft,'~'.expand("<slnum>")) 4803 " call Decho("edit-a-file: win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> ft=".&ft,'~'.expand("<slnum>"))
4578 4805
4579 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") && newdir !~ '^\(/\|\a:\)' 4806 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") && newdir !~ '^\(/\|\a:\)'
4580 " call Decho("edit-a-file: handle tree listing: w:netrw_treedict<".(exists("w:netrw_treedict")? string(w:netrw_treedict) : 'n/a').">",'~'.expand("<slnum>")) 4807 " call Decho("edit-a-file: handle tree listing: w:netrw_treedict<".(exists("w:netrw_treedict")? string(w:netrw_treedict) : 'n/a').">",'~'.expand("<slnum>"))
4581 " call Decho("edit-a-file: newdir<".newdir.">",'~'.expand("<slnum>")) 4808 " call Decho("edit-a-file: newdir<".newdir.">",'~'.expand("<slnum>"))
4582 let dirname= s:NetrwTreeDir(a:islocal) 4809 let dirname= s:NetrwTreeDir(a:islocal)
4810 "COMBAK : not working for a symlink -- but what about a regular file? a directory?
4811 " call Decho("COMBAK : not working for a symlink -- but what about a regular file? a directory?")
4812 " Feb 17, 2019: following if-else-endif restored -- wasn't editing a file in tree mode
4583 if dirname =~ '/$' 4813 if dirname =~ '/$'
4584 let dirname= dirname.newdir 4814 let dirname= dirname.newdir
4585 else 4815 else
4586 let dirname= dirname."/".newdir 4816 let dirname= dirname."/".newdir
4587 endif 4817 endif
4595 endif 4825 endif
4596 " call Decho("edit-a-file: handling a file: dirname<".dirname."> (a:0=".a:0.")",'~'.expand("<slnum>")) 4826 " call Decho("edit-a-file: handling a file: dirname<".dirname."> (a:0=".a:0.")",'~'.expand("<slnum>"))
4597 " this lets netrw#BrowseX avoid the edit 4827 " this lets netrw#BrowseX avoid the edit
4598 if a:0 < 1 4828 if a:0 < 1
4599 " call Decho("edit-a-file: (a:0=".a:0."<1) set up windows for editing<".fnameescape(dirname)."> didsplit=".(exists("s:didsplit")? s:didsplit : "doesn't exist"),'~'.expand("<slnum>")) 4829 " call Decho("edit-a-file: (a:0=".a:0."<1) set up windows for editing<".fnameescape(dirname)."> didsplit=".(exists("s:didsplit")? s:didsplit : "doesn't exist"),'~'.expand("<slnum>"))
4600 NetrwKeepj call s:NetrwOptionRestore("s:") 4830 NetrwKeepj call s:NetrwOptionsRestore("s:")
4601 let curdir= b:netrw_curdir 4831 let curdir= b:netrw_curdir
4602 if !exists("s:didsplit") 4832 if !exists("s:didsplit")
4603 " call Decho("edit-a-file: s:didsplit does not exist; g:netrw_browse_split=".string(g:netrw_browse_split)." win#".winnr(),'~'.expand("<slnum>")) 4833 " call Decho("edit-a-file: s:didsplit does not exist; g:netrw_browse_split=".string(g:netrw_browse_split)." win#".winnr(),'~'.expand("<slnum>"))
4604 if type(g:netrw_browse_split) == 3 4834 if type(g:netrw_browse_split) == 3
4605 " open file in server 4835 " open file in server
4710 " NetrwBrowseChgDir: just go to the new directory spec {{{3 4940 " NetrwBrowseChgDir: just go to the new directory spec {{{3
4711 " ---------------------------------------------------- 4941 " ----------------------------------------------------
4712 " call Decho('goto-newdir: case "just go to new directory spec": newdir<'.newdir.'>','~'.expand("<slnum>")) 4942 " call Decho('goto-newdir: case "just go to new directory spec": newdir<'.newdir.'>','~'.expand("<slnum>"))
4713 let dirname = newdir 4943 let dirname = newdir
4714 NetrwKeepj call s:SetRexDir(a:islocal,dirname) 4944 NetrwKeepj call s:SetRexDir(a:islocal,dirname)
4715 NetrwKeepj call s:NetrwOptionRestore("s:") 4945 NetrwKeepj call s:NetrwOptionsRestore("s:")
4716 norm! m` 4946 norm! m`
4717 4947
4718 elseif newdir == './' 4948 elseif newdir == './'
4719 " --------------------------------------------- 4949 " ---------------------------------------------
4720 " NetrwBrowseChgDir: refresh the directory list {{{3 4950 " NetrwBrowseChgDir: refresh the directory list {{{3
4721 " --------------------------------------------- 4951 " ---------------------------------------------
4722 " call Decho('refresh-dirlist: case "refresh directory listing": newdir == "./"','~'.expand("<slnum>")) 4952 " call Decho('(s:NetrwBrowseChgDir)refresh-dirlist: case "refresh directory listing": newdir == "./"','~'.expand("<slnum>"))
4723 NetrwKeepj call s:SetRexDir(a:islocal,dirname) 4953 NetrwKeepj call s:SetRexDir(a:islocal,dirname)
4724 norm! m` 4954 norm! m`
4725 4955
4726 elseif newdir == '../' 4956 elseif newdir == '../'
4727 " -------------------------------------- 4957 " --------------------------------------
4728 " NetrwBrowseChgDir: go up one directory {{{3 4958 " NetrwBrowseChgDir: go up one directory {{{3
4729 " -------------------------------------- 4959 " --------------------------------------
4730 " call Decho('go-up: case "go up one directory": newdir == "../"','~'.expand("<slnum>")) 4960 " call Decho('(s:NetrwBrowseChgDir)go-up: case "go up one directory": newdir == "../"','~'.expand("<slnum>"))
4731 4961
4732 if w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") 4962 if w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict")
4733 " force a refresh 4963 " force a refresh
4734 " call Decho("go-up: clear buffer<".expand("%")."> with :%d",'~'.expand("<slnum>")) 4964 " call Decho("go-up: clear buffer<".expand("%")."> with :%d",'~'.expand("<slnum>"))
4735 " call Decho("go-up: setl noro ma",'~'.expand("<slnum>")) 4965 " call Decho("go-up: setl noro ma",'~'.expand("<slnum>"))
4763 endif 4993 endif
4764 " call Decho("go-up: windows: dirname<".dirname."> (go up one dir)",'~'.expand("<slnum>")) 4994 " call Decho("go-up: windows: dirname<".dirname."> (go up one dir)",'~'.expand("<slnum>"))
4765 4995
4766 else 4996 else
4767 " unix or cygwin 4997 " unix or cygwin
4768 " call Decho('go-up: case "go up one directory": newdir == "../" and unix or cygwin','~'.expand("<slnum>")) 4998 " call Decho('(s:NetrwBrowseChgDir)go-up: case "go up one directory": newdir == "../" and unix or cygwin','~'.expand("<slnum>"))
4769 if a:islocal 4999 if a:islocal
4770 let dirname= substitute(dirname,'^\(.*\)/\([^/]\+\)/$','\1','') 5000 let dirname= substitute(dirname,'^\(.*\)/\([^/]\+\)/$','\1','')
4771 if dirname == "" 5001 if dirname == ""
4772 let dirname= '/' 5002 let dirname= '/'
4773 endif 5003 endif
4775 let dirname= substitute(dirname,'^\(\a\{3,}://.\{-}/\{1,2}\)\(.\{-}\)\([^/]\+\)/$','\1\2','') 5005 let dirname= substitute(dirname,'^\(\a\{3,}://.\{-}/\{1,2}\)\(.\{-}\)\([^/]\+\)/$','\1\2','')
4776 endif 5006 endif
4777 " call Decho("go-up: unix: dirname<".dirname."> (go up one dir)",'~'.expand("<slnum>")) 5007 " call Decho("go-up: unix: dirname<".dirname."> (go up one dir)",'~'.expand("<slnum>"))
4778 endif 5008 endif
4779 NetrwKeepj call s:SetRexDir(a:islocal,dirname) 5009 NetrwKeepj call s:SetRexDir(a:islocal,dirname)
4780 norm m` 5010 norm! m`
4781 5011
4782 elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") 5012 elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict")
4783 " -------------------------------------- 5013 " --------------------------------------
4784 " NetrwBrowseChgDir: Handle Tree Listing {{{3 5014 " NetrwBrowseChgDir: Handle Tree Listing {{{3
4785 " -------------------------------------- 5015 " --------------------------------------
4786 " call Decho('tree-list: case liststyle is TREELIST and w:netrw_treedict exists','~'.expand("<slnum>")) 5016 " call Decho('(s:NetrwBrowseChgDir)tree-list: case liststyle is TREELIST and w:netrw_treedict exists','~'.expand("<slnum>"))
4787 " force a refresh (for TREELIST, NetrwTreeDir() will force the refresh) 5017 " force a refresh (for TREELIST, NetrwTreeDir() will force the refresh)
4788 " call Decho("tree-list: setl noro ma",'~'.expand("<slnum>")) 5018 " call Decho("tree-list: setl noro ma",'~'.expand("<slnum>"))
4789 setl noro ma 5019 setl noro ma
4790 if !(exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir")) 5020 if !(exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir"))
4791 " call Decho("tree-list: clear buffer<".expand("%")."> with :%d (force refresh)",'~'.expand("<slnum>")) 5021 " call Decho("tree-list: clear buffer<".expand("%")."> with :%d (force refresh)",'~'.expand("<slnum>"))
4798 " call Decho("tree-list: w:netrw_treedict<".string(w:netrw_treedict).">",'~'.expand("<slnum>")) 5028 " call Decho("tree-list: w:netrw_treedict<".string(w:netrw_treedict).">",'~'.expand("<slnum>"))
4799 5029
4800 " search treedict for tree dir as-is 5030 " search treedict for tree dir as-is
4801 " call Decho("tree-list: search treedict for tree dir as-is",'~'.expand("<slnum>")) 5031 " call Decho("tree-list: search treedict for tree dir as-is",'~'.expand("<slnum>"))
4802 if has_key(w:netrw_treedict,treedir) 5032 if has_key(w:netrw_treedict,treedir)
4803 " call Decho('tree-list: ....searched for treedir<'.treedir.'> : found it!','~'.expand("<slnum>")) 5033 " call Decho('(s:NetrwBrowseChgDir)tree-list: ....searched for treedir<'.treedir.'> : found it!','~'.expand("<slnum>"))
4804 let haskey= 1 5034 let haskey= 1
4805 else 5035 else
4806 " call Decho('tree-list: ....searched for treedir<'.treedir.'> : not found','~'.expand("<slnum>")) 5036 " call Decho('(s:NetrwBrowseChgDir)tree-list: ....searched for treedir<'.treedir.'> : not found','~'.expand("<slnum>"))
4807 endif 5037 endif
4808 5038
4809 " search treedict for treedir with a [/@] appended 5039 " search treedict for treedir with a [/@] appended
4810 " call Decho("tree-list: search treedict for treedir with a [/@] appended",'~'.expand("<slnum>")) 5040 " call Decho("tree-list: search treedict for treedir with a [/@] appended",'~'.expand("<slnum>"))
4811 if !haskey && treedir !~ '[/@]$' 5041 if !haskey && treedir !~ '[/@]$'
4812 if has_key(w:netrw_treedict,treedir."/") 5042 if has_key(w:netrw_treedict,treedir."/")
4813 let treedir= treedir."/" 5043 let treedir= treedir."/"
4814 " call Decho('tree-list: ....searched.for treedir<'.treedir.'> found it!','~'.expand("<slnum>")) 5044 " call Decho('(s:NetrwBrowseChgDir)tree-list: ....searched.for treedir<'.treedir.'> found it!','~'.expand("<slnum>"))
4815 let haskey = 1 5045 let haskey = 1
4816 else 5046 else
4817 " call Decho('tree-list: ....searched for treedir<'.treedir.'/> : not found','~'.expand("<slnum>")) 5047 " call Decho('(s:NetrwBrowseChgDir)tree-list: ....searched for treedir<'.treedir.'/> : not found','~'.expand("<slnum>"))
4818 endif 5048 endif
4819 endif 5049 endif
4820 5050
4821 " search treedict for treedir with any trailing / elided 5051 " search treedict for treedir with any trailing / elided
4822 " call Decho("tree-list: search treedict for treedir with any trailing / elided",'~'.expand("<slnum>")) 5052 " call Decho("tree-list: search treedict for treedir with any trailing / elided",'~'.expand("<slnum>"))
4823 if !haskey && treedir =~ '/$' 5053 if !haskey && treedir =~ '/$'
4824 let treedir= substitute(treedir,'/$','','') 5054 let treedir= substitute(treedir,'/$','','')
4825 if has_key(w:netrw_treedict,treedir) 5055 if has_key(w:netrw_treedict,treedir)
4826 " call Decho('tree-list: ....searched.for treedir<'.treedir.'> found it!','~'.expand("<slnum>")) 5056 " call Decho('(s:NetrwBrowseChgDir)tree-list: ....searched.for treedir<'.treedir.'> found it!','~'.expand("<slnum>"))
4827 let haskey = 1 5057 let haskey = 1
4828 else 5058 else
4829 " call Decho('tree-list: ....searched for treedir<'.treedir.'> : not found','~'.expand("<slnum>")) 5059 " call Decho('(s:NetrwBrowseChgDir)tree-list: ....searched for treedir<'.treedir.'> : not found','~'.expand("<slnum>"))
4830 endif 5060 endif
4831 endif 5061 endif
4832 5062
4833 " call Decho("haskey=".haskey,'~'.expand("<slnum>")) 5063 " call Decho("haskey=".haskey,'~'.expand("<slnum>"))
4834 if haskey 5064 if haskey
4853 " NetrwBrowseChgDir: Go down one directory {{{3 5083 " NetrwBrowseChgDir: Go down one directory {{{3
4854 " ---------------------------------------- 5084 " ----------------------------------------
4855 let dirname = s:ComposePath(dirname,newdir) 5085 let dirname = s:ComposePath(dirname,newdir)
4856 " call Decho("go down one dir: dirname<".dirname."> newdir<".newdir.">",'~'.expand("<slnum>")) 5086 " call Decho("go down one dir: dirname<".dirname."> newdir<".newdir.">",'~'.expand("<slnum>"))
4857 NetrwKeepj call s:SetRexDir(a:islocal,dirname) 5087 NetrwKeepj call s:SetRexDir(a:islocal,dirname)
4858 norm m` 5088 norm! m`
4859 endif 5089 endif
4860 5090
4861 " -------------------------------------- 5091 " --------------------------------------
4862 " NetrwBrowseChgDir: Restore and Cleanup {{{3 5092 " NetrwBrowseChgDir: Restore and Cleanup {{{3
4863 " -------------------------------------- 5093 " --------------------------------------
4864 if dorestore 5094 if dorestore
4865 " dorestore is zero'd when a local file was hidden or bufhidden; 5095 " dorestore is zero'd when a local file was hidden or bufhidden;
4866 " in such a case, we want to keep whatever settings it may have. 5096 " in such a case, we want to keep whatever settings it may have.
4867 " call Decho("doing option restore (dorestore=".dorestore.")",'~'.expand("<slnum>")) 5097 " call Decho("doing option restore (dorestore=".dorestore.")",'~'.expand("<slnum>"))
4868 NetrwKeepj call s:NetrwOptionRestore("s:") 5098 NetrwKeepj call s:NetrwOptionsRestore("s:")
4869 " else " Decho 5099 " else " Decho
4870 " call Decho("skipping option restore (dorestore==0): hidden=".&hidden." bufhidden=".&bufhidden." mod=".&mod,'~'.expand("<slnum>")) 5100 " call Decho("skipping option restore (dorestore==0): hidden=".&hidden." bufhidden=".&bufhidden." mod=".&mod,'~'.expand("<slnum>"))
4871 endif 5101 endif
4872 call s:RestorePosn(s:netrw_nbcd)
4873 if dolockout && dorestore 5102 if dolockout && dorestore
4874 " call Decho("restore: filewritable(dirname<".dirname.">)=".filewritable(dirname),'~'.expand("<slnum>")) 5103 " call Decho("restore: filewritable(dirname<".dirname.">)=".filewritable(dirname),'~'.expand("<slnum>"))
4875 if filewritable(dirname) 5104 if filewritable(dirname)
4876 " call Decho("restore: doing modification lockout settings: ma nomod noro",'~'.expand("<slnum>")) 5105 " call Decho("restore: doing modification lockout settings: ma nomod noro",'~'.expand("<slnum>"))
4877 " call Decho("restore: setl ma nomod noro",'~'.expand("<slnum>")) 5106 " call Decho("restore: setl ma nomod noro",'~'.expand("<slnum>"))
4882 " call Decho("restore: setl ma nomod noro",'~'.expand("<slnum>")) 5111 " call Decho("restore: setl ma nomod noro",'~'.expand("<slnum>"))
4883 setl ma ro nomod 5112 setl ma ro nomod
4884 " call Decho("restore: ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) 5113 " call Decho("restore: ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
4885 endif 5114 endif
4886 endif 5115 endif
5116 call s:RestorePosn(s:netrw_posn)
4887 let @@= ykeep 5117 let @@= ykeep
4888 5118
4889 " call Dret("s:NetrwBrowseChgDir <".dirname."> : curpos<".string(getpos(".")).">") 5119 " call Dret("s:NetrwBrowseChgDir <".dirname."> : curpos<".string(getpos(".")).">")
4890 return dirname 5120 return dirname
4891 endfun 5121 endfun
4903 " directories. 5133 " directories.
4904 " call Dret("s:NetrwBrowseUpDir : cursor not in file area") 5134 " call Dret("s:NetrwBrowseUpDir : cursor not in file area")
4905 return 5135 return
4906 endif 5136 endif
4907 5137
4908 if !exists("w:netrw_liststyle") || w:netrw_liststyle != s:TREELIST
4909 call s:SavePosn(s:netrw_nbcd)
4910 endif
4911
4912 norm! 0 5138 norm! 0
4913 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") 5139 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict")
4914 " call Decho("case: treestyle",'~'.expand("<slnum>")) 5140 " call Decho("case: treestyle",'~'.expand("<slnum>"))
4915 let curline= getline(".") 5141 let curline= getline(".")
4916 let swwline= winline() - 1 5142 let swwline= winline() - 1
4917 if exists("w:netrw_treetop") 5143 if exists("w:netrw_treetop")
4918 let b:netrw_curdir= w:netrw_treetop 5144 let b:netrw_curdir= w:netrw_treetop
4919 endif 5145 elseif exists("b:netrw_curdir")
4920 let curdir= b:netrw_curdir 5146 let w:netrw_treetop= b:netrw_curdir
5147 else
5148 let w:netrw_treetop= getcwd()
5149 let b:netrw_curdir = w:netrw_treetop
5150 endif
5151 let curfile = getline(".")
5152 let curpath = s:NetrwTreePath(w:netrw_treetop)
4921 if a:islocal 5153 if a:islocal
4922 call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,'../')) 5154 call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,'../'))
4923 else 5155 else
4924 call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,'../')) 5156 call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,'../'))
4925 endif 5157 endif
4926 if !search('\c^'.s:treedepthstring.curline,'cw') 5158 " call Decho("looking for curfile<^".s:treedepthstring.curfile.">",'~'.expand("<slnum>"))
4927 if !search('\c^'.curline,'cw') 5159 " call Decho("having curpath<".curpath.">",'~'.expand("<slnum>"))
4928 sil! NetrwKeepj 1 5160 if w:netrw_treetop == '/'
4929 endif 5161 keepj call search('^\M'.curfile,"w")
4930 endif 5162 elseif curfile == '../'
4931 exe "sil! NetrwKeepj norm! z\<cr>" 5163 keepj call search('^\M'.curfile,"wb")
4932 while winline() < swwline 5164 else
4933 let curwinline= winline() 5165 " call Decho("search(^\\M".s:treedepthstring.curfile.") backwards"))
4934 exe "sil! NetrwKeepj norm! \<c-y>" 5166 while 1
4935 if curwinline == winline() 5167 keepj call search('^\M'.s:treedepthstring.curfile,"wb")
4936 break 5168 let treepath= s:NetrwTreePath(w:netrw_treetop)
4937 endif 5169 " call Decho("..current treepath<".treepath.">",'~'.expand("<slnum>"))
4938 endwhile 5170 if treepath == curpath
5171 break
5172 endif
5173 endwhile
5174 endif
5175
4939 else 5176 else
4940 " call Decho("case: not treestyle",'~'.expand("<slnum>")) 5177 " call Decho("case: not treestyle",'~'.expand("<slnum>"))
5178 call s:SavePosn(s:netrw_posn)
4941 if exists("b:netrw_curdir") 5179 if exists("b:netrw_curdir")
4942 let curdir= b:netrw_curdir 5180 let curdir= b:netrw_curdir
4943 else 5181 else
4944 let curdir= expand(getcwd()) 5182 let curdir= expand(getcwd())
4945 endif 5183 endif
4946 if a:islocal 5184 if a:islocal
4947 call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,'../')) 5185 call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,'../'))
4948 else 5186 else
4949 call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,'../')) 5187 call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,'../'))
4950 endif 5188 endif
4951 if has_key(s:netrw_nbcd,bufnr("%")) 5189 call s:RestorePosn(s:netrw_posn)
4952 call s:RestorePosn(s:netrw_nbcd) 5190 let curdir= substitute(curdir,'^.*[\/]','','')
4953 elseif exists("w:netrw_bannercnt") 5191 call search('\<'.curdir.'/','wc')
4954 " call Decho("moving to line#".w:netrw_bannercnt,'~'.expand("<slnum>")) 5192 endif
4955 exe w:netrw_bannercnt
4956 else
4957 1
4958 endif
4959 endif
4960 let curdir= substitute(curdir,'^.*[\/]','','')
4961 call search('\<'.curdir.'\>','wc')
4962 " call Dret("s:NetrwBrowseUpDir") 5193 " call Dret("s:NetrwBrowseUpDir")
4963 endfun 5194 endfun
4964 5195
4965 " --------------------------------------------------------------------- 5196 " ---------------------------------------------------------------------
4966 " netrw#BrowseX: (implements "x") executes a special "viewer" script or program for the {{{2 5197 " netrw#BrowseX: (implements "x") executes a special "viewer" script or program for the {{{2
4967 " given filename; typically this means given their extension. 5198 " given filename; typically this means given their extension.
4968 " 0=local, 1=remote 5199 " 0=local, 1=remote
4969 fun! netrw#BrowseX(fname,remote) 5200 fun! netrw#BrowseX(fname,remote)
4970 " call Dfunc("netrw#BrowseX(fname<".a:fname."> remote=".a:remote.")") 5201 " call Dfunc("netrw#BrowseX(fname<".a:fname."> remote=".a:remote.")")
4971 5202
4972 " if its really just a directory, then do a "gf" instead 5203 " if its really just a local directory, then do a "gf" instead
4973 if (a:remote == 0 && isdirectory(a:fname)) || (a:remote == 1 && fname =~ '/$' && fname !~ '^https\=:') 5204 if (a:remote == 0 && isdirectory(a:fname)) || (a:remote == 1 && a:fname =~ '/$' && a:fname !~ '^https\=:')
4974 norm! gf 5205 norm! gf
4975 " call Dret("netrw#BrowseX : did gf instead") 5206 " call Dret("(netrw#BrowseX) did gf instead")
4976 endif 5207 endif
4977
4978 5208
4979 let ykeep = @@ 5209 let ykeep = @@
4980 let screenposn = winsaveview() 5210 let screenposn = winsaveview()
4981 " call Decho("saving posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>")) 5211 " call Decho("saving posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>"))
4982 5212
4998 if type(FncRef) == 2 5228 if type(FncRef) == 2
4999 call FncRef(a:fname) 5229 call FncRef(a:fname)
5000 endif 5230 endif
5001 endfor 5231 endfor
5002 endif 5232 endif
5003 " call Decho("restoring posn to screenposn<".string(screenposn).">,'~'.expand("<slnum>"))" 5233 " call Decho("restoring posn: screenposn<".string(screenposn).">,'~'.expand("<slnum>"))"
5004 call winrestview(screenposn) 5234 call winrestview(screenposn)
5005 let @@= ykeep 5235 let @@= ykeep
5006 let &aw= awkeep 5236 let &aw= awkeep
5007 " call Dret("netrw#BrowseX : coredump handler invoked") 5237 " call Dret("netrw#BrowseX : coredump handler invoked")
5008 return 5238 return
5012 " set up the filename 5242 " set up the filename
5013 " (lower case the extension, make a local copy of a remote file) 5243 " (lower case the extension, make a local copy of a remote file)
5014 let exten= substitute(a:fname,'.*\.\(.\{-}\)','\1','e') 5244 let exten= substitute(a:fname,'.*\.\(.\{-}\)','\1','e')
5015 if has("win32") || has("win95") || has("win64") || has("win16") 5245 if has("win32") || has("win95") || has("win64") || has("win16")
5016 let exten= substitute(exten,'^.*$','\L&\E','') 5246 let exten= substitute(exten,'^.*$','\L&\E','')
5247 endif
5248 if exten =~ "[\\/]"
5249 let exten= ""
5017 endif 5250 endif
5018 " call Decho("exten<".exten.">",'~'.expand("<slnum>")) 5251 " call Decho("exten<".exten.">",'~'.expand("<slnum>"))
5019 5252
5020 if a:remote == 1 5253 if a:remote == 1
5021 " create a local copy 5254 " create a local copy
5025 " attempt to rename tempfile 5258 " attempt to rename tempfile
5026 let basename= substitute(a:fname,'^\(.*\)/\(.*\)\.\([^.]*\)$','\2','') 5259 let basename= substitute(a:fname,'^\(.*\)/\(.*\)\.\([^.]*\)$','\2','')
5027 let newname = substitute(s:netrw_tmpfile,'^\(.*\)/\(.*\)\.\([^.]*\)$','\1/'.basename.'.\3','') 5260 let newname = substitute(s:netrw_tmpfile,'^\(.*\)/\(.*\)\.\([^.]*\)$','\1/'.basename.'.\3','')
5028 " call Decho("basename<".basename.">",'~'.expand("<slnum>")) 5261 " call Decho("basename<".basename.">",'~'.expand("<slnum>"))
5029 " call Decho("newname <".newname.">",'~'.expand("<slnum>")) 5262 " call Decho("newname <".newname.">",'~'.expand("<slnum>"))
5030 if rename(s:netrw_tmpfile,newname) == 0 5263 if s:netrw_tmpfile != newname && newname != ""
5031 " renaming succeeded 5264 if rename(s:netrw_tmpfile,newname) == 0
5032 let fname= newname 5265 " renaming succeeded
5033 else 5266 " call Decho("renaming succeeded (tmpfile<".s:netrw_tmpfile."> to <".newname.">)")
5034 " renaming failed 5267 let fname= newname
5268 else
5269 " renaming failed
5270 " call Decho("renaming failed (tmpfile<".s:netrw_tmpfile."> to <".newname.">)")
5271 let fname= s:netrw_tmpfile
5272 endif
5273 else
5035 let fname= s:netrw_tmpfile 5274 let fname= s:netrw_tmpfile
5036 endif 5275 endif
5037 else 5276 else
5038 " call Decho("local: a:remote=".a:remote.": handling local copy of <".a:fname.">",'~'.expand("<slnum>")) 5277 " call Decho("local: a:remote=".a:remote.": handling local copy of <".a:fname.">",'~'.expand("<slnum>"))
5039 let fname= a:fname 5278 let fname= a:fname
5096 " call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">",'~'.expand("<slnum>")) 5335 " call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">",'~'.expand("<slnum>"))
5097 call s:NetrwExe("sil !".viewer." ".viewopt.s:ShellEscape(fname,1).redir) 5336 call s:NetrwExe("sil !".viewer." ".viewopt.s:ShellEscape(fname,1).redir)
5098 let ret= v:shell_error 5337 let ret= v:shell_error
5099 5338
5100 elseif has("win32") || has("win64") 5339 elseif has("win32") || has("win64")
5101 " call Decho("windows",'~'.expand("<slnum>")) 5340 " call Decho("win".(has("win32")? "32" : "64")",'~'.expand("<slnum>"))
5102 if executable("start") 5341 if executable("start")
5103 call s:NetrwExe('sil! !start rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(fname,1)) 5342 call s:NetrwExe('sil! !start rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(fname,1))
5104 elseif executable("rundll32") 5343 elseif executable("rundll32")
5105 call s:NetrwExe('sil! !rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(fname,1)) 5344 call s:NetrwExe('sil! !rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(fname,1))
5106 else 5345 else
5107 call netrw#ErrorMsg(s:WARNING,"rundll32 not on path",74) 5346 call netrw#ErrorMsg(s:WARNING,"rundll32 not on path",74)
5108 endif 5347 endif
5109 call inputsave()|call input("Press <cr> to continue")|call inputrestore() 5348 " call inputsave()|call input("Press <cr> to continue")|call inputrestore()
5110 let ret= v:shell_error 5349 let ret= v:shell_error
5111 5350
5112 elseif has("win32unix") 5351 elseif has("win32unix")
5113 let winfname= 'c:\cygwin'.substitute(fname,'/','\\','g') 5352 let winfname= 'c:\cygwin'.substitute(fname,'/','\\','g')
5114 " call Decho("cygwin: winfname<".s:ShellEscape(winfname,1).">",'~'.expand("<slnum>")) 5353 " call Decho("cygwin: winfname<".s:ShellEscape(winfname,1).">",'~'.expand("<slnum>"))
5119 elseif executable("cygstart") 5358 elseif executable("cygstart")
5120 call s:NetrwExe('sil !cygstart '.s:ShellEscape(fname,1)) 5359 call s:NetrwExe('sil !cygstart '.s:ShellEscape(fname,1))
5121 else 5360 else
5122 call netrw#ErrorMsg(s:WARNING,"rundll32 not on path",74) 5361 call netrw#ErrorMsg(s:WARNING,"rundll32 not on path",74)
5123 endif 5362 endif
5124 call inputsave()|call input("Press <cr> to continue")|call inputrestore() 5363 " call inputsave()|call input("Press <cr> to continue")|call inputrestore()
5125 let ret= v:shell_error 5364 let ret= v:shell_error
5126 5365
5127 elseif has("unix") && executable("kfmclient") && s:CheckIfKde() 5366 elseif has("unix") && executable("kfmclient") && s:CheckIfKde()
5128 " call Decho("unix and kfmclient",'~'.expand("<slnum>")) 5367 " call Decho("unix and kfmclient",'~'.expand("<slnum>"))
5129 call s:NetrwExe("sil !kfmclient exec ".s:ShellEscape(fname,1)." ".redir) 5368 call s:NetrwExe("sil !kfmclient exec ".s:ShellEscape(fname,1)." ".redir)
5130 let ret= v:shell_error 5369 let ret= v:shell_error
5131 5370
5132 elseif has("unix") && executable("exo-open") && executable("xdg-open") && executable("setsid") 5371 elseif has("unix") && executable("exo-open") && executable("xdg-open") && executable("setsid")
5133 " call Decho("unix, exo-open, xdg-open",'~'.expand("<slnum>")) 5372 " call Decho("unix, exo-open, xdg-open",'~'.expand("<slnum>"))
5134 call s:NetrwExe("sil !setsid xdg-open ".s:ShellEscape(fname,1).redir) 5373 call s:NetrwExe("sil !setsid xdg-open ".s:ShellEscape(fname,1).redir)
5374 let ret= v:shell_error
5375
5376 elseif has("unix") && $DESKTOP_SESSION == "mate" && executable("atril")
5377 " call Decho("unix and atril",'~'.expand("<slnum>"))
5378 call s:NetrwExe("sil !atril ".s:ShellEscape(fname,1).redir)
5135 let ret= v:shell_error 5379 let ret= v:shell_error
5136 5380
5137 elseif has("unix") && executable("xdg-open") 5381 elseif has("unix") && executable("xdg-open")
5138 " call Decho("unix and xdg-open",'~'.expand("<slnum>")) 5382 " call Decho("unix and xdg-open",'~'.expand("<slnum>"))
5139 call s:NetrwExe("sil !xdg-open ".s:ShellEscape(fname,1).redir) 5383 call s:NetrwExe("sil !xdg-open ".s:ShellEscape(fname,1).redir)
5182 5426
5183 " call Dret("netrw#BrowseX") 5427 " call Dret("netrw#BrowseX")
5184 endfun 5428 endfun
5185 5429
5186 " --------------------------------------------------------------------- 5430 " ---------------------------------------------------------------------
5431 " netrw#GX: gets word under cursor for gx support {{{2
5432 " See also: netrw#BrowseXVis
5433 " netrw#BrowseX
5434 fun! netrw#GX()
5435 " call Dfunc("netrw#GX()")
5436 if &ft == "netrw"
5437 let fname= s:NetrwGetWord()
5438 else
5439 let fname= expand((exists("g:netrw_gx")? g:netrw_gx : '<cfile>'))
5440 endif
5441 " call Dret("netrw#GX <".fname.">")
5442 return fname
5443 endfun
5444
5445 " ---------------------------------------------------------------------
5187 " netrw#BrowseXVis: used by gx in visual mode to select a file for browsing {{{2 5446 " netrw#BrowseXVis: used by gx in visual mode to select a file for browsing {{{2
5188 fun! netrw#BrowseXVis() 5447 fun! netrw#BrowseXVis()
5189 " call Dfunc("netrw#BrowseXVis()") 5448 " call Dfunc("netrw#BrowseXVis()")
5190 let atkeep = @@ 5449 let atkeep = @@
5191 norm! gvy 5450 norm! gvy
5192 " call Decho("@@<".@@.">",'~'.expand("<slnum>")) 5451 " call Decho("@@<".@@.">",'~'.expand("<slnum>"))
5193 call netrw#BrowseX(@@,netrw#CheckIfRemote()) 5452 call netrw#BrowseX(@@,netrw#CheckIfRemote(@@))
5194 let @@ = atkeep 5453 let @@ = atkeep
5195 " call Dret("netrw#BrowseXVis") 5454 " call Dret("netrw#BrowseXVis")
5196 endfun 5455 endfun
5197 5456
5198 " --------------------------------------------------------------------- 5457 " ---------------------------------------------------------------------
5458 " s:NetrwBufRename: renames a buffer without the side effect of retaining an unlisted buffer having the old name {{{2
5459 " Using the file command on a "[No Name]" buffer does not seem to cause the old "[No Name]" buffer
5460 " to become an unlisted buffer, so in that case don't bwipe it.
5461 fun! s:NetrwBufRename(newname)
5462 " call Dfunc("s:NetrwBufRename(newname<".a:newname.">) buf(%)#".bufnr("%")."<".bufname(bufnr("%")).">")
5463 " call Dredir("ls!","s:NetrwBufRename (before rename)")
5464 let oldbufname= bufname(bufnr("%"))
5465 " call Decho("buf#".bufnr("%").": oldbufname<".oldbufname.">",'~'.expand("<slnum>"))
5466
5467 if oldbufname != a:newname
5468 " call Decho("do buffer rename: oldbufname<".oldbufname."> ≠ a:newname<".a:newname.">",'~'.expand("<slnum>"))
5469 let b:junk= 1
5470 " call Decho("rename buffer: sil! keepj keepalt file ".fnameescape(a:newname),'~'.expand("<slnum>"))
5471 exe 'sil! keepj keepalt file '.fnameescape(a:newname)
5472 " call Dredir("ls!","s:NetrwBufRename (before bwipe)")
5473 let oldbufnr= bufnr(oldbufname)
5474 " call Decho("oldbufname<".oldbufname."> oldbufnr#".oldbufnr,'~'.expand("<slnum>"))
5475 " call Decho("bufnr(%)=".bufnr("%"),'~'.expand("<slnum>"))
5476 if oldbufname != "" && oldbufnr != -1 && oldbufnr != bufnr("%")
5477 " call Decho("bwipe ".oldbufnr,'~'.expand("<slnum>"))
5478 exe "bwipe! ".oldbufnr
5479 " else " Decho
5480 " call Decho("did *not* bwipe buf#".oldbufnr,'~'.expand("<slnum>"))
5481 endif
5482 " call Dredir("ls!","s:NetrwBufRename (after rename)")
5483 " else " Decho
5484 " call Decho("oldbufname<".oldbufname."> == a:newname: did *not* rename",'~'.expand("<slnum>"))
5485 endif
5486
5487 " call Dret("s:NetrwBufRename : buf#".bufnr("%").": oldname<".oldbufname."> newname<".a:newname."> expand(%)<".expand("%").">")
5488 endfun
5489
5490 " ---------------------------------------------------------------------
5199 " netrw#CheckIfRemote: returns 1 if current file looks like an url, 0 else {{{2 5491 " netrw#CheckIfRemote: returns 1 if current file looks like an url, 0 else {{{2
5200 fun! netrw#CheckIfRemote() 5492 fun! netrw#CheckIfRemote(...)
5201 " call Dfunc("netrw#CheckIfRemote()") 5493 " call Dfunc("netrw#CheckIfRemote() a:0=".a:0)
5202 if expand("%") =~ '^\a\{3,}://' 5494 if a:0 > 0
5495 let curfile= a:1
5496 else
5497 let curfile= expand("%")
5498 endif
5499 " call Decho("curfile<".curfile.">")
5500 if curfile =~ '^\a\{3,}://'
5203 " call Dret("netrw#CheckIfRemote 1") 5501 " call Dret("netrw#CheckIfRemote 1")
5204 return 1 5502 return 1
5205 else 5503 else
5206 " call Dret("netrw#CheckIfRemote 0") 5504 " call Dret("netrw#CheckIfRemote 0")
5207 return 0 5505 return 0
5463 " s:NetrwHidden: invoked by "gh" {{{2 5761 " s:NetrwHidden: invoked by "gh" {{{2
5464 fun! s:NetrwHidden(islocal) 5762 fun! s:NetrwHidden(islocal)
5465 " call Dfunc("s:NetrwHidden()") 5763 " call Dfunc("s:NetrwHidden()")
5466 let ykeep= @@ 5764 let ykeep= @@
5467 " save current position 5765 " save current position
5468 let svpos= winsaveview() 5766 let svpos = winsaveview()
5469 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) 5767 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))
5470 5768
5471 if g:netrw_list_hide =~ '\(^\|,\)\\(^\\|\\s\\s\\)\\zs\\.\\S\\+' 5769 if g:netrw_list_hide =~ '\(^\|,\)\\(^\\|\\s\\s\\)\\zs\\.\\S\\+'
5472 " remove pattern from hiding list 5770 " remove .file pattern from hiding list
5771 " call Decho("remove .file pattern from hiding list",'~'.expand("<slnum>"))
5473 let g:netrw_list_hide= substitute(g:netrw_list_hide,'\(^\|,\)\\(^\\|\\s\\s\\)\\zs\\.\\S\\+','','') 5772 let g:netrw_list_hide= substitute(g:netrw_list_hide,'\(^\|,\)\\(^\\|\\s\\s\\)\\zs\\.\\S\\+','','')
5474 elseif s:Strlen(g:netrw_list_hide) >= 1 5773 elseif s:Strlen(g:netrw_list_hide) >= 1
5774 " call Decho("add .file pattern from hiding list",'~'.expand("<slnum>"))
5475 let g:netrw_list_hide= g:netrw_list_hide . ',\(^\|\s\s\)\zs\.\S\+' 5775 let g:netrw_list_hide= g:netrw_list_hide . ',\(^\|\s\s\)\zs\.\S\+'
5476 else 5776 else
5777 " call Decho("set .file pattern as hiding list",'~'.expand("<slnum>"))
5477 let g:netrw_list_hide= '\(^\|\s\s\)\zs\.\S\+' 5778 let g:netrw_list_hide= '\(^\|\s\s\)\zs\.\S\+'
5779 endif
5780 if g:netrw_list_hide =~ '^,'
5781 let g:netrw_list_hide= strpart(g:netrw_list_hide,1)
5478 endif 5782 endif
5479 5783
5480 " refresh screen and return to saved position 5784 " refresh screen and return to saved position
5481 NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) 5785 NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
5482 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) 5786 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))
5487 5791
5488 " --------------------------------------------------------------------- 5792 " ---------------------------------------------------------------------
5489 " s:NetrwHome: this function determines a "home" for saving bookmarks and history {{{2 5793 " s:NetrwHome: this function determines a "home" for saving bookmarks and history {{{2
5490 fun! s:NetrwHome() 5794 fun! s:NetrwHome()
5491 if exists("g:netrw_home") 5795 if exists("g:netrw_home")
5492 let home= g:netrw_home 5796 let home= expand(g:netrw_home)
5493 else 5797 else
5494 " go to vim plugin home 5798 " go to vim plugin home
5495 for home in split(&rtp,',') + [''] 5799 for home in split(&rtp,',') + ['']
5496 if isdirectory(s:NetrwFile(home)) && filewritable(s:NetrwFile(home)) | break | endif 5800 if isdirectory(s:NetrwFile(home)) && filewritable(s:NetrwFile(home)) | break | endif
5497 let basehome= substitute(home,'[/\\]\.vim$','','') 5801 let basehome= substitute(home,'[/\\]\.vim$','','')
5508 let home= substitute(home,'/','\\','g') 5812 let home= substitute(home,'/','\\','g')
5509 endif 5813 endif
5510 endif 5814 endif
5511 " insure that the home directory exists 5815 " insure that the home directory exists
5512 if g:netrw_dirhistmax > 0 && !isdirectory(s:NetrwFile(home)) 5816 if g:netrw_dirhistmax > 0 && !isdirectory(s:NetrwFile(home))
5817 " call Decho("insure that the home<".home."> directory exists")
5513 if exists("g:netrw_mkdir") 5818 if exists("g:netrw_mkdir")
5819 " call Decho("call system(".g:netrw_mkdir." ".s:ShellEscape(s:NetrwFile(home)).")")
5514 call system(g:netrw_mkdir." ".s:ShellEscape(s:NetrwFile(home))) 5820 call system(g:netrw_mkdir." ".s:ShellEscape(s:NetrwFile(home)))
5515 else 5821 else
5822 " call Decho("mkdir(".home.")")
5516 call mkdir(home) 5823 call mkdir(home)
5517 endif 5824 endif
5518 endif 5825 endif
5519 let g:netrw_home= home 5826 let g:netrw_home= home
5520 return home 5827 return home
5522 5829
5523 " --------------------------------------------------------------------- 5830 " ---------------------------------------------------------------------
5524 " s:NetrwLeftmouse: handles the <leftmouse> when in a netrw browsing window {{{2 5831 " s:NetrwLeftmouse: handles the <leftmouse> when in a netrw browsing window {{{2
5525 fun! s:NetrwLeftmouse(islocal) 5832 fun! s:NetrwLeftmouse(islocal)
5526 if exists("s:netrwdrag") 5833 if exists("s:netrwdrag")
5834 return
5835 endif
5836 if &ft != "netrw"
5527 return 5837 return
5528 endif 5838 endif
5529 " call Dfunc("s:NetrwLeftmouse(islocal=".a:islocal.")") 5839 " call Dfunc("s:NetrwLeftmouse(islocal=".a:islocal.")")
5530 5840
5531 let ykeep= @@ 5841 let ykeep= @@
5571 endfun 5881 endfun
5572 5882
5573 " --------------------------------------------------------------------- 5883 " ---------------------------------------------------------------------
5574 " s:NetrwCLeftmouse: used to select a file/directory for a target {{{2 5884 " s:NetrwCLeftmouse: used to select a file/directory for a target {{{2
5575 fun! s:NetrwCLeftmouse(islocal) 5885 fun! s:NetrwCLeftmouse(islocal)
5886 if &ft != "netrw"
5887 return
5888 endif
5576 " call Dfunc("s:NetrwCLeftmouse(islocal=".a:islocal.")") 5889 " call Dfunc("s:NetrwCLeftmouse(islocal=".a:islocal.")")
5577 call s:NetrwMarkFileTgt(a:islocal) 5890 call s:NetrwMarkFileTgt(a:islocal)
5578 " call Dret("s:NetrwCLeftmouse") 5891 " call Dret("s:NetrwCLeftmouse")
5579 endfun 5892 endfun
5580 5893
5581 " --------------------------------------------------------------------- 5894 " ---------------------------------------------------------------------
5582 " s:NetrwServerEdit: edit file in a server gvim, usually NETRWSERVER (implements <c-r>){{{2 5895 " s:NetrwServerEdit: edit file in a server gvim, usually NETRWSERVER (implements <c-r>){{{2
5583 " a:islocal=0 : <c-r> not used, remote 5896 " a:islocal=0 : <c-r> not used, remote
5584 " a:islocal=1 : <c-r> no used, local 5897 " a:islocal=1 : <c-r> not used, local
5585 " a:islocal=2 : <c-r> used, remote 5898 " a:islocal=2 : <c-r> used, remote
5586 " a:islocal=3 : <c-r> used, local 5899 " a:islocal=3 : <c-r> used, local
5587 fun! s:NetrwServerEdit(islocal,fname) 5900 fun! s:NetrwServerEdit(islocal,fname)
5588 " call Dfunc("s:NetrwServerEdit(islocal=".a:islocal.",fname<".a:fname.">)") 5901 " call Dfunc("s:NetrwServerEdit(islocal=".a:islocal.",fname<".a:fname.">)")
5589 let islocal = a:islocal%2 " =0: remote =1: local 5902 let islocal = a:islocal%2 " =0: remote =1: local
5704 endfun 6017 endfun
5705 6018
5706 " --------------------------------------------------------------------- 6019 " ---------------------------------------------------------------------
5707 " s:NetrwSLeftmouse: marks the file under the cursor. May be dragged to select additional files {{{2 6020 " s:NetrwSLeftmouse: marks the file under the cursor. May be dragged to select additional files {{{2
5708 fun! s:NetrwSLeftmouse(islocal) 6021 fun! s:NetrwSLeftmouse(islocal)
6022 if &ft != "netrw"
6023 return
6024 endif
5709 " call Dfunc("s:NetrwSLeftmouse(islocal=".a:islocal.")") 6025 " call Dfunc("s:NetrwSLeftmouse(islocal=".a:islocal.")")
5710 6026
5711 let s:ngw= s:NetrwGetWord() 6027 let s:ngw= s:NetrwGetWord()
5712 call s:NetrwMarkFile(a:islocal,s:ngw) 6028 call s:NetrwMarkFile(a:islocal,s:ngw)
5713 6029
5756 " --------------------------------------------------------------------- 6072 " ---------------------------------------------------------------------
5757 " s:NetrwListHide: uses [range]g~...~d to delete files that match comma {{{2 6073 " s:NetrwListHide: uses [range]g~...~d to delete files that match comma {{{2
5758 " separated patterns given in g:netrw_list_hide 6074 " separated patterns given in g:netrw_list_hide
5759 fun! s:NetrwListHide() 6075 fun! s:NetrwListHide()
5760 " call Dfunc("s:NetrwListHide() g:netrw_hide=".g:netrw_hide." g:netrw_list_hide<".g:netrw_list_hide.">") 6076 " call Dfunc("s:NetrwListHide() g:netrw_hide=".g:netrw_hide." g:netrw_list_hide<".g:netrw_list_hide.">")
6077 " call Decho("initial: ".string(getline(w:netrw_bannercnt,'$')))
5761 let ykeep= @@ 6078 let ykeep= @@
6079 " call DechoBuf(bufnr("%"),"COMBAK#3")
5762 6080
5763 " find a character not in the "hide" string to use as a separator for :g and :v commands 6081 " find a character not in the "hide" string to use as a separator for :g and :v commands
5764 " How-it-works: take the hiding command, convert it into a range. Duplicate 6082 " How-it-works: take the hiding command, convert it into a range.
5765 " characters don't matter. Remove all such characters from the '/~...90' 6083 " Duplicate characters don't matter.
5766 " string. Use the first character left as a separator character. 6084 " Remove all such characters from the '/~@#...890' string.
6085 " Use the first character left as a separator character.
6086 " call Decho("find a character not in the hide string to use as a separator")
5767 let listhide= g:netrw_list_hide 6087 let listhide= g:netrw_list_hide
5768 let sep = strpart(substitute('/~@#$%^&*{};:,<.>?|1234567890','['.escape(listhide,'-]^\').']','','ge'),1,1) 6088 let sep = strpart(substitute('/~@#$%^&*{};:,<.>?|1234567890','['.escape(listhide,'-]^\').']','','ge'),1,1)
5769 " call Decho("sep=".sep,'~'.expand("<slnum>")) 6089 " call Decho("sep=".sep,'~'.expand("<slnum>"))
5770 6090
5771 while listhide != "" 6091 while listhide != ""
5774 let listhide = substitute(listhide,'^.\{-},\(.*\)$','\1','e') 6094 let listhide = substitute(listhide,'^.\{-},\(.*\)$','\1','e')
5775 else 6095 else
5776 let hide = listhide 6096 let hide = listhide
5777 let listhide = "" 6097 let listhide = ""
5778 endif 6098 endif
6099 " call Decho("hide<".hide."> listhide<".listhide.'>','~'.expand("<slnum>"))
5779 6100
5780 " Prune the list by hiding any files which match 6101 " Prune the list by hiding any files which match
6102 " call Decho("prune the list by hiding any files which ",((g:netrw_hide == 1)? "" : "don't")." match hide<".hide.">")
5781 if g:netrw_hide == 1 6103 if g:netrw_hide == 1
5782 " call Decho("hiding<".hide."> listhide<".listhide.">",'~'.expand("<slnum>")) 6104 " call Decho("..hiding<".hide.">",'~'.expand("<slnum>"))
5783 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'d' 6105 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'d'
5784 elseif g:netrw_hide == 2 6106 elseif g:netrw_hide == 2
5785 " call Decho("showing<".hide."> listhide<".listhide.">",'~'.expand("<slnum>")) 6107 " call Decho("..showing<".hide.">",'~'.expand("<slnum>"))
5786 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'s@^@ /-KEEP-/ @' 6108 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'s@^@ /-KEEP-/ @'
5787 endif 6109 endif
6110 " call Decho("..result: ".string(getline(w:netrw_bannercnt,'$')),'~'.expand("<slnum>"))
5788 endwhile 6111 endwhile
6112
5789 if g:netrw_hide == 2 6113 if g:netrw_hide == 2
5790 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$v@^ /-KEEP-/ @d' 6114 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$v@^ /-KEEP-/ @d'
6115 " call Decho("..v KEEP: ".string(getline(w:netrw_bannercnt,'$')),'~'.expand("<slnum>"))
5791 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$s@^\%( /-KEEP-/ \)\+@@e' 6116 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$s@^\%( /-KEEP-/ \)\+@@e'
6117 " call Decho("..g KEEP: ".string(getline(w:netrw_bannercnt,'$')),'~'.expand("<slnum>"))
5792 endif 6118 endif
5793 6119
5794 " remove any blank lines that have somehow remained. 6120 " remove any blank lines that have somehow remained.
5795 " This seems to happen under Windows. 6121 " This seems to happen under Windows.
5796 exe 'sil! NetrwKeepj 1,$g@^\s*$@d' 6122 exe 'sil! NetrwKeepj 1,$g@^\s*$@d'
6123 " call DechoBuf(bufnr("%"),"COMBAK#4")
5797 6124
5798 let @@= ykeep 6125 let @@= ykeep
5799 " call Dret("s:NetrwListHide") 6126 " call Dret("s:NetrwListHide")
5800 endfun 6127 endfun
5801 6128
5852 else 6179 else
5853 call mkdir(fullnewdir,"p") 6180 call mkdir(fullnewdir,"p")
5854 endif 6181 endif
5855 else 6182 else
5856 let netrw_origdir= s:NetrwGetcwd(1) 6183 let netrw_origdir= s:NetrwGetcwd(1)
5857 call s:NetrwLcd(b:netrw_curdir) 6184 if s:NetrwLcd(b:netrw_curdir)
6185 " call Dret("s:NetrwMakeDir : lcd failure")
6186 return
6187 endif
5858 " call Decho("netrw_origdir<".netrw_origdir.">: lcd b:netrw_curdir<".fnameescape(b:netrw_curdir).">",'~'.expand("<slnum>")) 6188 " call Decho("netrw_origdir<".netrw_origdir.">: lcd b:netrw_curdir<".fnameescape(b:netrw_curdir).">",'~'.expand("<slnum>"))
5859 call s:NetrwExe("sil! !".g:netrw_localmkdir.' '.s:ShellEscape(newdirname,1)) 6189 call s:NetrwExe("sil! !".g:netrw_localmkdir.g:netrw_localmkdiropt.' '.s:ShellEscape(newdirname,1))
5860 if v:shell_error != 0 6190 if v:shell_error != 0
5861 let @@= ykeep 6191 let @@= ykeep
5862 call netrw#ErrorMsg(s:ERROR,"consider setting g:netrw_localmkdir<".g:netrw_localmkdir."> to something that works",80) 6192 call netrw#ErrorMsg(s:ERROR,"consider setting g:netrw_localmkdir<".g:netrw_localmkdir."> to something that works",80)
5863 " call Dret("s:NetrwMakeDir : failed: sil! !".g:netrw_localmkdir.' '.s:ShellEscape(newdirname,1)) 6193 " call Dret("s:NetrwMakeDir : failed: sil! !".g:netrw_localmkdir.' '.s:ShellEscape(newdirname,1))
5864 return 6194 return
5865 endif 6195 endif
5866 if !g:netrw_keepdir 6196 if !g:netrw_keepdir
5867 " call Decho("restoring netrw_origdir since g:netrw_keepdir=".g:netrw_keepdir,'~'.expand("<slnum>")) 6197 " call Decho("restoring netrw_origdir since g:netrw_keepdir=".g:netrw_keepdir,'~'.expand("<slnum>"))
5868 call s:NetrwLcd(netrw_origdir) 6198 if s:NetrwLcd(netrw_origdir)
6199 " call Dret("s:NetrwBrowse : lcd failure")
6200 return
6201 endif
5869 endif 6202 endif
5870 endif 6203 endif
5871 6204
5872 if v:shell_error == 0 6205 if v:shell_error == 0
5873 " refresh listing 6206 " refresh listing
5975 " --------------------------------------------------------------------- 6308 " ---------------------------------------------------------------------
5976 " s:NetrwMaps: {{{2 6309 " s:NetrwMaps: {{{2
5977 fun! s:NetrwMaps(islocal) 6310 fun! s:NetrwMaps(islocal)
5978 " call Dfunc("s:NetrwMaps(islocal=".a:islocal.") b:netrw_curdir<".b:netrw_curdir.">") 6311 " call Dfunc("s:NetrwMaps(islocal=".a:islocal.") b:netrw_curdir<".b:netrw_curdir.">")
5979 6312
6313 " mouse <Plug> maps: {{{3
5980 if g:netrw_mousemaps && g:netrw_retmap 6314 if g:netrw_mousemaps && g:netrw_retmap
5981 " call Decho("set up Rexplore 2-leftmouse",'~'.expand("<slnum>")) 6315 " call Decho("set up Rexplore 2-leftmouse",'~'.expand("<slnum>"))
5982 if !hasmapto("<Plug>NetrwReturn") 6316 if !hasmapto("<Plug>NetrwReturn")
5983 if maparg("<2-leftmouse>","n") == "" || maparg("<2-leftmouse>","n") =~ '^-$' 6317 if maparg("<2-leftmouse>","n") == "" || maparg("<2-leftmouse>","n") =~ '^-$'
5984 " call Decho("making map for 2-leftmouse",'~'.expand("<slnum>")) 6318 " call Decho("making map for 2-leftmouse",'~'.expand("<slnum>"))
5990 endif 6324 endif
5991 nno <silent> <Plug>NetrwReturn :Rexplore<cr> 6325 nno <silent> <Plug>NetrwReturn :Rexplore<cr>
5992 " call Decho("made <Plug>NetrwReturn map",'~'.expand("<slnum>")) 6326 " call Decho("made <Plug>NetrwReturn map",'~'.expand("<slnum>"))
5993 endif 6327 endif
5994 6328
6329 " generate default <Plug> maps {{{3
6330 if !hasmapto('<Plug>NetrwHide') |nmap <buffer> <silent> <nowait> a <Plug>NetrwHide_a|endif
6331 if !hasmapto('<Plug>NetrwBrowseUpDir') |nmap <buffer> <silent> <nowait> - <Plug>NetrwBrowseUpDir |endif
6332 if !hasmapto('<Plug>NetrwOpenFile') |nmap <buffer> <silent> <nowait> % <Plug>NetrwOpenFile|endif
6333 if !hasmapto('<Plug>NetrwBadd_cb') |nmap <buffer> <silent> <nowait> cb <Plug>NetrwBadd_cb|endif
6334 if !hasmapto('<Plug>NetrwBadd_cB') |nmap <buffer> <silent> <nowait> cB <Plug>NetrwBadd_cB|endif
6335 if !hasmapto('<Plug>NetrwLcd') |nmap <buffer> <silent> <nowait> cd <Plug>NetrwLcd|endif
6336 if !hasmapto('<Plug>NetrwSetChgwin') |nmap <buffer> <silent> <nowait> C <Plug>NetrwSetChgwin|endif
6337 if !hasmapto('<Plug>NetrwRefresh') |nmap <buffer> <silent> <nowait> <c-l> <Plug>NetrwRefresh|endif
6338 if !hasmapto('<Plug>NetrwLocalBrowseCheck') |nmap <buffer> <silent> <nowait> <cr> <Plug>NetrwLocalBrowseCheck|endif
6339 if !hasmapto('<Plug>NetrwServerEdit') |nmap <buffer> <silent> <nowait> <c-r> <Plug>NetrwServerEdit|endif
6340 if !hasmapto('<Plug>NetrwMakeDir') |nmap <buffer> <silent> <nowait> d <Plug>NetrwMakeDir|endif
6341 if !hasmapto('<Plug>NetrwBookHistHandler_gb')|nmap <buffer> <silent> <nowait> gb <Plug>NetrwBookHistHandler_gb|endif
6342 " ---------------------------------------------------------------------
6343 " if !hasmapto('<Plug>NetrwForceChgDir') |nmap <buffer> <silent> <nowait> gd <Plug>NetrwForceChgDir|endif
6344 " if !hasmapto('<Plug>NetrwForceFile') |nmap <buffer> <silent> <nowait> gf <Plug>NetrwForceFile|endif
6345 " if !hasmapto('<Plug>NetrwHidden') |nmap <buffer> <silent> <nowait> gh <Plug>NetrwHidden|endif
6346 " if !hasmapto('<Plug>NetrwSetTreetop') |nmap <buffer> <silent> <nowait> gn <Plug>NetrwSetTreetop|endif
6347 " if !hasmapto('<Plug>NetrwChgPerm') |nmap <buffer> <silent> <nowait> gp <Plug>NetrwChgPerm|endif
6348 " if !hasmapto('<Plug>NetrwBannerCtrl') |nmap <buffer> <silent> <nowait> I <Plug>NetrwBannerCtrl|endif
6349 " if !hasmapto('<Plug>NetrwListStyle') |nmap <buffer> <silent> <nowait> i <Plug>NetrwListStyle|endif
6350 " if !hasmapto('<Plug>NetrwMarkMoveMF2Arglist')|nmap <buffer> <silent> <nowait> ma <Plug>NetrwMarkMoveMF2Arglist|endif
6351 " if !hasmapto('<Plug>NetrwMarkMoveArglist2MF')|nmap <buffer> <silent> <nowait> mA <Plug>NetrwMarkMoveArglist2MF|endif
6352 " if !hasmapto('<Plug>NetrwBookHistHandler_mA')|nmap <buffer> <silent> <nowait> mb <Plug>NetrwBookHistHandler_mA|endif
6353 " if !hasmapto('<Plug>NetrwBookHistHandler_mB')|nmap <buffer> <silent> <nowait> mB <Plug>NetrwBookHistHandler_mB|endif
6354 " if !hasmapto('<Plug>NetrwMarkFileCopy') |nmap <buffer> <silent> <nowait> mc <Plug>NetrwMarkFileCopy|endif
6355 " if !hasmapto('<Plug>NetrwMarkFileDiff') |nmap <buffer> <silent> <nowait> md <Plug>NetrwMarkFileDiff|endif
6356 " if !hasmapto('<Plug>NetrwMarkFileEdit') |nmap <buffer> <silent> <nowait> me <Plug>NetrwMarkFileEdit|endif
6357 " if !hasmapto('<Plug>NetrwMarkFile') |nmap <buffer> <silent> <nowait> mf <Plug>NetrwMarkFile|endif
6358 " if !hasmapto('<Plug>NetrwUnmarkList') |nmap <buffer> <silent> <nowait> mF <Plug>NetrwUnmarkList|endif
6359 " if !hasmapto('<Plug>NetrwMarkFileGrep') |nmap <buffer> <silent> <nowait> mg <Plug>NetrwMarkFileGrep|endif
6360 " if !hasmapto('<Plug>NetrwMarkHideSfx') |nmap <buffer> <silent> <nowait> mh <Plug>NetrwMarkHideSfx|endif
6361 " if !hasmapto('<Plug>NetrwMarkFileMove') |nmap <buffer> <silent> <nowait> mm <Plug>NetrwMarkFileMove|endif
6362 " if !hasmapto('<Plug>NetrwMarkFilePrint') |nmap <buffer> <silent> <nowait> mp <Plug>NetrwMarkFilePrint|endif
6363 " if !hasmapto('<Plug>NetrwMarkFileRegexp') |nmap <buffer> <silent> <nowait> mr <Plug>NetrwMarkFileRegexp|endif
6364 " if !hasmapto('<Plug>NetrwMarkFileSource') |nmap <buffer> <silent> <nowait> ms <Plug>NetrwMarkFileSource|endif
6365 " if !hasmapto('<Plug>NetrwMarkFileTag') |nmap <buffer> <silent> <nowait> mT <Plug>NetrwMarkFileTag|endif
6366 " if !hasmapto('<Plug>NetrwMarkFileTgt') |nmap <buffer> <silent> <nowait> mt <Plug>NetrwMarkFileTgt|endif
6367 " if !hasmapto('<Plug>NetrwUnMarkFile') |nmap <buffer> <silent> <nowait> mu <Plug>NetrwUnMarkFile|endif
6368 " if !hasmapto('<Plug>NetrwMarkFileVimCmd') |nmap <buffer> <silent> <nowait> mv <Plug>NetrwMarkFileVimCmd|endif
6369 " if !hasmapto('<Plug>NetrwMarkFileExe_mx') |nmap <buffer> <silent> <nowait> mx <Plug>NetrwMarkFileExe_mx|endif
6370 " if !hasmapto('<Plug>NetrwMarkFileExe_mX') |nmap <buffer> <silent> <nowait> mX <Plug>NetrwMarkFileExe_mX|endif
6371 " if !hasmapto('<Plug>NetrwMarkFileCompress') |nmap <buffer> <silent> <nowait> mz <Plug>NetrwMarkFileCompress|endif
6372 " if !hasmapto('<Plug>NetrwObtain') |nmap <buffer> <silent> <nowait> O <Plug>NetrwObtain|endif
6373 " if !hasmapto('<Plug>NetrwSplit_o') |nmap <buffer> <silent> <nowait> o <Plug>NetrwSplit_o|endif
6374 " if !hasmapto('<Plug>NetrwPreview') |nmap <buffer> <silent> <nowait> p <Plug>NetrwPreview|endif
6375 " if !hasmapto('<Plug>NetrwPrevWinOpen') |nmap <buffer> <silent> <nowait> P <Plug>NetrwPrevWinOpen|endif
6376 " if !hasmapto('<Plug>NetrwBookHistHandler_qb')|nmap <buffer> <silent> <nowait> qb <Plug>NetrwBookHistHandler_qb|endif
6377 " if !hasmapto('<Plug>NetrwFileInfo') |nmap <buffer> <silent> <nowait> qf <Plug>NetrwFileInfo|endif
6378 " if !hasmapto('<Plug>NetrwMarkFileQFEL_qF') |nmap <buffer> <silent> <nowait> qF <Plug>NetrwMarkFileQFEL_qF|endif
6379 " if !hasmapto('<Plug>NetrwMarkFileQFEL_qL') |nmap <buffer> <silent> <nowait> qL <Plug>NetrwMarkFileQFEL_qL|endif
6380 " if !hasmapto('<Plug>NetrwSortStyle') |nmap <buffer> <silent> <nowait> s <Plug>NetrwSortStyle|endif
6381 " if !hasmapto('<Plug>NetSortSequence') |nmap <buffer> <silent> <nowait> S <Plug>NetSortSequence|endif
6382 " if !hasmapto('<Plug>NetrwSetTgt_Tb') |nmap <buffer> <silent> <nowait> Tb <Plug>NetrwSetTgt_Tb|endif
6383 " if !hasmapto('<Plug>NetrwSetTgt_Th') |nmap <buffer> <silent> <nowait> Th <Plug>NetrwSetTgt_Th|endif
6384 " if !hasmapto('<Plug>NetrwSplit_t') |nmap <buffer> <silent> <nowait> t <Plug>NetrwSplit_t|endif
6385 " if !hasmapto('<Plug>NetrwBookHistHandler_u') |nmap <buffer> <silent> <nowait> u <Plug>NetrwBookHistHandler_u|endif
6386 " if !hasmapto('<Plug>NetrwBookHistHandler_U') |nmap <buffer> <silent> <nowait> U <Plug>NetrwBookHistHandler_U|endif
6387 " if !hasmapto('<Plug>NetrwSplit_v') |nmap <buffer> <silent> <nowait> v <Plug>NetrwSplit_v|endif
6388 " if !hasmapto('<Plug>NetrwBrowseX') |nmap <buffer> <silent> <nowait> x <Plug>NetrwBrowseX|endif
6389 " if !hasmapto('<Plug>NetrwLocalExecute') |nmap <buffer> <silent> <nowait> X <Plug>NetrwLocalExecute|endif
6390
5995 if a:islocal 6391 if a:islocal
5996 " call Decho("make local maps",'~'.expand("<slnum>")) 6392 " call Decho("make local maps",'~'.expand("<slnum>"))
5997 " local normal-mode maps 6393 " local normal-mode maps {{{3
5998 nnoremap <buffer> <silent> <nowait> a :<c-u>call <SID>NetrwHide(1)<cr> 6394 nnoremap <buffer> <silent> <Plug>NetrwHide_a :<c-u>call <SID>NetrwHide(1)<cr>
5999 nnoremap <buffer> <silent> <nowait> - :<c-u>call <SID>NetrwBrowseUpDir(1)<cr> 6395 nnoremap <buffer> <silent> <Plug>NetrwBrowseUpDir :<c-u>call <SID>NetrwBrowseUpDir(1)<cr>
6000 nnoremap <buffer> <silent> <nowait> % :<c-u>call <SID>NetrwOpenFile(1)<cr> 6396 nnoremap <buffer> <silent> <Plug>NetrwOpenFile :<c-u>call <SID>NetrwOpenFile(1)<cr>
6001 nnoremap <buffer> <silent> <nowait> c :<c-u>call <SID>NetrwLcd(b:netrw_curdir)<cr> 6397 nnoremap <buffer> <silent> <Plug>NetrwBadd_cb :<c-u>call <SID>NetrwBadd(1,0)<cr>
6002 nnoremap <buffer> <silent> <nowait> C :<c-u>call <SID>NetrwSetChgwin()<cr> 6398 nnoremap <buffer> <silent> <Plug>NetrwBadd_cB :<c-u>call <SID>NetrwBadd(1,1)<cr>
6003 nnoremap <buffer> <silent> <nowait> <cr> :<c-u>call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord()))<cr> 6399 nnoremap <buffer> <silent> <Plug>NetrwLcd :<c-u>call <SID>NetrwLcd(b:netrw_curdir)<cr>
6004 nnoremap <buffer> <silent> <nowait> <c-r> :<c-u>call <SID>NetrwServerEdit(3,<SID>NetrwGetWord())<cr> 6400 nnoremap <buffer> <silent> <Plug>NetrwSetChgwin :<c-u>call <SID>NetrwSetChgwin()<cr>
6005 nnoremap <buffer> <silent> <nowait> d :<c-u>call <SID>NetrwMakeDir("")<cr> 6401 nnoremap <buffer> <silent> <Plug>NetrwLocalBrowseCheck :<c-u>call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord()))<cr>
6006 nnoremap <buffer> <silent> <nowait> gb :<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_curdir)<cr> 6402 nnoremap <buffer> <silent> <Plug>NetrwServerEdit :<c-u>call <SID>NetrwServerEdit(3,<SID>NetrwGetWord())<cr>
6403 nnoremap <buffer> <silent> <Plug>NetrwMakeDir :<c-u>call <SID>NetrwMakeDir("")<cr>
6404 nnoremap <buffer> <silent> <Plug>NetrwBookHistHandler_gb :<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_curdir)<cr>
6405 " ---------------------------------------------------------------------
6007 nnoremap <buffer> <silent> <nowait> gd :<c-u>call <SID>NetrwForceChgDir(1,<SID>NetrwGetWord())<cr> 6406 nnoremap <buffer> <silent> <nowait> gd :<c-u>call <SID>NetrwForceChgDir(1,<SID>NetrwGetWord())<cr>
6008 nnoremap <buffer> <silent> <nowait> gf :<c-u>call <SID>NetrwForceFile(1,<SID>NetrwGetWord())<cr> 6407 nnoremap <buffer> <silent> <nowait> gf :<c-u>call <SID>NetrwForceFile(1,<SID>NetrwGetWord())<cr>
6009 nnoremap <buffer> <silent> <nowait> gh :<c-u>call <SID>NetrwHidden(1)<cr> 6408 nnoremap <buffer> <silent> <nowait> gh :<c-u>call <SID>NetrwHidden(1)<cr>
6010 nnoremap <buffer> <silent> <nowait> gn :<c-u>call netrw#SetTreetop(<SID>NetrwGetWord())<cr> 6409 nnoremap <buffer> <silent> <nowait> gn :<c-u>call netrw#SetTreetop(0,<SID>NetrwGetWord())<cr>
6011 nnoremap <buffer> <silent> <nowait> gp :<c-u>call <SID>NetrwChgPerm(1,b:netrw_curdir)<cr> 6410 nnoremap <buffer> <silent> <nowait> gp :<c-u>call <SID>NetrwChgPerm(1,b:netrw_curdir)<cr>
6012 nnoremap <buffer> <silent> <nowait> I :<c-u>call <SID>NetrwBannerCtrl(1)<cr> 6411 nnoremap <buffer> <silent> <nowait> I :<c-u>call <SID>NetrwBannerCtrl(1)<cr>
6013 nnoremap <buffer> <silent> <nowait> i :<c-u>call <SID>NetrwListStyle(1)<cr> 6412 nnoremap <buffer> <silent> <nowait> i :<c-u>call <SID>NetrwListStyle(1)<cr>
6014 nnoremap <buffer> <silent> <nowait> ma :<c-u>call <SID>NetrwMarkFileArgList(1,0)<cr> 6413 nnoremap <buffer> <silent> <nowait> ma :<c-u>call <SID>NetrwMarkFileArgList(1,0)<cr>
6015 nnoremap <buffer> <silent> <nowait> mA :<c-u>call <SID>NetrwMarkFileArgList(1,1)<cr> 6414 nnoremap <buffer> <silent> <nowait> mA :<c-u>call <SID>NetrwMarkFileArgList(1,1)<cr>
6039 nnoremap <buffer> <silent> <nowait> P :<c-u>call <SID>NetrwPrevWinOpen(1)<cr> 6438 nnoremap <buffer> <silent> <nowait> P :<c-u>call <SID>NetrwPrevWinOpen(1)<cr>
6040 nnoremap <buffer> <silent> <nowait> qb :<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr> 6439 nnoremap <buffer> <silent> <nowait> qb :<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr>
6041 nnoremap <buffer> <silent> <nowait> qf :<c-u>call <SID>NetrwFileInfo(1,<SID>NetrwGetWord())<cr> 6440 nnoremap <buffer> <silent> <nowait> qf :<c-u>call <SID>NetrwFileInfo(1,<SID>NetrwGetWord())<cr>
6042 nnoremap <buffer> <silent> <nowait> qF :<c-u>call <SID>NetrwMarkFileQFEL(1,getqflist())<cr> 6441 nnoremap <buffer> <silent> <nowait> qF :<c-u>call <SID>NetrwMarkFileQFEL(1,getqflist())<cr>
6043 nnoremap <buffer> <silent> <nowait> qL :<c-u>call <SID>NetrwMarkFileQFEL(1,getloclist(v:count))<cr> 6442 nnoremap <buffer> <silent> <nowait> qL :<c-u>call <SID>NetrwMarkFileQFEL(1,getloclist(v:count))<cr>
6044 nnoremap <buffer> <silent> <nowait> r :<c-u>let g:netrw_sort_direction= (g:netrw_sort_direction =~# 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetrwRefresh(1,<SID>NetrwBrowseChgDir(1,'./'))<cr>
6045 nnoremap <buffer> <silent> <nowait> s :call <SID>NetrwSortStyle(1)<cr> 6443 nnoremap <buffer> <silent> <nowait> s :call <SID>NetrwSortStyle(1)<cr>
6046 nnoremap <buffer> <silent> <nowait> S :<c-u>call <SID>NetSortSequence(1)<cr> 6444 nnoremap <buffer> <silent> <nowait> S :<c-u>call <SID>NetSortSequence(1)<cr>
6047 nnoremap <buffer> <silent> <nowait> Tb :<c-u>call <SID>NetrwSetTgt(1,'b',v:count1)<cr> 6445 nnoremap <buffer> <silent> <nowait> Tb :<c-u>call <SID>NetrwSetTgt(1,'b',v:count1)<cr>
6048 nnoremap <buffer> <silent> <nowait> t :call <SID>NetrwSplit(4)<cr> 6446 nnoremap <buffer> <silent> <nowait> t :call <SID>NetrwSplit(4)<cr>
6049 nnoremap <buffer> <silent> <nowait> Th :<c-u>call <SID>NetrwSetTgt(1,'h',v:count)<cr> 6447 nnoremap <buffer> <silent> <nowait> Th :<c-u>call <SID>NetrwSetTgt(1,'h',v:count)<cr>
6050 nnoremap <buffer> <silent> <nowait> u :<c-u>call <SID>NetrwBookHistHandler(4,expand("%"))<cr> 6448 nnoremap <buffer> <silent> <nowait> u :<c-u>call <SID>NetrwBookHistHandler(4,expand("%"))<cr>
6051 nnoremap <buffer> <silent> <nowait> U :<c-u>call <SID>NetrwBookHistHandler(5,expand("%"))<cr> 6449 nnoremap <buffer> <silent> <nowait> U :<c-u>call <SID>NetrwBookHistHandler(5,expand("%"))<cr>
6052 nnoremap <buffer> <silent> <nowait> v :call <SID>NetrwSplit(5)<cr> 6450 nnoremap <buffer> <silent> <nowait> v :call <SID>NetrwSplit(5)<cr>
6053 nnoremap <buffer> <silent> <nowait> x :<c-u>call netrw#BrowseX(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),0),0)"<cr> 6451 nnoremap <buffer> <silent> <nowait> x :<c-u>call netrw#BrowseX(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),0),0)"<cr>
6054 nnoremap <buffer> <silent> <nowait> X :<c-u>call <SID>NetrwLocalExecute(expand("<cword>"))"<cr> 6452 nnoremap <buffer> <silent> <nowait> X :<c-u>call <SID>NetrwLocalExecute(expand("<cword>"))"<cr>
6055 " " local insert-mode maps 6453
6056 " inoremap <buffer> <silent> <nowait> a <c-o>:call <SID>NetrwHide(1)<cr> 6454 nnoremap <buffer> <silent> <nowait> r :<c-u>let g:netrw_sort_direction= (g:netrw_sort_direction =~# 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetrwRefresh(1,<SID>NetrwBrowseChgDir(1,'./'))<cr>
6057 " inoremap <buffer> <silent> <nowait> c <c-o>:exe "NetrwKeepj lcd ".fnameescape(b:netrw_curdir)<cr>
6058 " inoremap <buffer> <silent> <nowait> c <c-o>:call <SID>NetrwLcd(b:netrw_curdir)<cr>
6059 " inoremap <buffer> <silent> <nowait> C <c-o>:call <SID>NetrwSetChgwin()<cr>
6060 " inoremap <buffer> <silent> <nowait> % <c-o>:call <SID>NetrwOpenFile(1)<cr>
6061 " inoremap <buffer> <silent> <nowait> - <c-o>:call <SID>NetrwBrowseUpDir(1)<cr>
6062 " inoremap <buffer> <silent> <nowait> <cr> <c-o>:call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord()))<cr>
6063 " inoremap <buffer> <silent> <nowait> d <c-o>:call <SID>NetrwMakeDir("")<cr>
6064 " inoremap <buffer> <silent> <nowait> gb <c-o>:<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_curdir)<cr>
6065 " inoremap <buffer> <silent> <nowait> gh <c-o>:<c-u>call <SID>NetrwHidden(1)<cr>
6066 " nnoremap <buffer> <silent> <nowait> gn :<c-u>call netrw#SetTreetop(<SID>NetrwGetWord())<cr>
6067 " inoremap <buffer> <silent> <nowait> gp <c-o>:<c-u>call <SID>NetrwChgPerm(1,b:netrw_curdir)<cr>
6068 " inoremap <buffer> <silent> <nowait> I <c-o>:call <SID>NetrwBannerCtrl(1)<cr>
6069 " inoremap <buffer> <silent> <nowait> i <c-o>:call <SID>NetrwListStyle(1)<cr>
6070 " inoremap <buffer> <silent> <nowait> mb <c-o>:<c-u>call <SID>NetrwBookHistHandler(0,b:netrw_curdir)<cr>
6071 " inoremap <buffer> <silent> <nowait> mB <c-o>:<c-u>call <SID>NetrwBookHistHandler(6,b:netrw_curdir)<cr>
6072 " inoremap <buffer> <silent> <nowait> mc <c-o>:<c-u>call <SID>NetrwMarkFileCopy(1)<cr>
6073 " inoremap <buffer> <silent> <nowait> md <c-o>:<c-u>call <SID>NetrwMarkFileDiff(1)<cr>
6074 " inoremap <buffer> <silent> <nowait> me <c-o>:<c-u>call <SID>NetrwMarkFileEdit(1)<cr>
6075 " inoremap <buffer> <silent> <nowait> mf <c-o>:<c-u>call <SID>NetrwMarkFile(1,<SID>NetrwGetWord())<cr>
6076 " inoremap <buffer> <silent> <nowait> mg <c-o>:<c-u>call <SID>NetrwMarkFileGrep(1)<cr>
6077 " inoremap <buffer> <silent> <nowait> mh <c-o>:<c-u>call <SID>NetrwMarkHideSfx(1)<cr>
6078 " inoremap <buffer> <silent> <nowait> mm <c-o>:<c-u>call <SID>NetrwMarkFileMove(1)<cr>
6079 " inoremap <buffer> <silent> <nowait> mp <c-o>:<c-u>call <SID>NetrwMarkFilePrint(1)<cr>
6080 " inoremap <buffer> <silent> <nowait> mr <c-o>:<c-u>call <SID>NetrwMarkFileRegexp(1)<cr>
6081 " inoremap <buffer> <silent> <nowait> ms <c-o>:<c-u>call <SID>NetrwMarkFileSource(1)<cr>
6082 " inoremap <buffer> <silent> <nowait> mT <c-o>:<c-u>call <SID>NetrwMarkFileTag(1)<cr>
6083 " inoremap <buffer> <silent> <nowait> mt <c-o>:<c-u>call <SID>NetrwMarkFileTgt(1)<cr>
6084 " inoremap <buffer> <silent> <nowait> mu <c-o>:<c-u>call <SID>NetrwUnMarkFile(1)<cr>
6085 " inoremap <buffer> <silent> <nowait> mv <c-o>:<c-u>call <SID>NetrwMarkFileVimCmd(1)<cr>
6086 " inoremap <buffer> <silent> <nowait> mx <c-o>:<c-u>call <SID>NetrwMarkFileExe(1,0)<cr>
6087 " inoremap <buffer> <silent> <nowait> mX <c-o>:<c-u>call <SID>NetrwMarkFileExe(1,1)<cr>
6088 " inoremap <buffer> <silent> <nowait> mz <c-o>:<c-u>call <SID>NetrwMarkFileCompress(1)<cr>
6089 " inoremap <buffer> <silent> <nowait> O <c-o>:call <SID>NetrwObtain(1)<cr>
6090 " inoremap <buffer> <silent> <nowait> o <c-o>:call <SID>NetrwSplit(3)<cr>
6091 " inoremap <buffer> <silent> <nowait> p <c-o>:call <SID>NetrwPreview(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),1))<cr>
6092 " inoremap <buffer> <silent> <nowait> P <c-o>:call <SID>NetrwPrevWinOpen(1)<cr>
6093 " inoremap <buffer> <silent> <nowait> qb <c-o>:<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr>
6094 " inoremap <buffer> <silent> <nowait> qf <c-o>:<c-u>call <SID>NetrwFileInfo(1,<SID>NetrwGetWord())<cr>
6095 " inoremap <buffer> <silent> <nowait> qF :<c-u>call <SID>NetrwMarkFileQFEL(1,getqflist())<cr>
6096 " inoremap <buffer> <silent> <nowait> qL :<c-u>call <SID>NetrwMarkFileQFEL(1,getloclist(v:count))<cr>
6097 " inoremap <buffer> <silent> <nowait> r <c-o>:let g:netrw_sort_direction= (g:netrw_sort_direction =~# 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetrwRefresh(1,<SID>NetrwBrowseChgDir(1,'./'))<cr>
6098 " inoremap <buffer> <silent> <nowait> s <c-o>:call <SID>NetrwSortStyle(1)<cr>
6099 " inoremap <buffer> <silent> <nowait> S <c-o>:call <SID>NetSortSequence(1)<cr>
6100 " inoremap <buffer> <silent> <nowait> t <c-o>:call <SID>NetrwSplit(4)<cr>
6101 " inoremap <buffer> <silent> <nowait> Tb <c-o>:<c-u>call <SID>NetrwSetTgt(1,'b',v:count1)<cr>
6102 " inoremap <buffer> <silent> <nowait> Th <c-o>:<c-u>call <SID>NetrwSetTgt(1,'h',v:count)<cr>
6103 " inoremap <buffer> <silent> <nowait> u <c-o>:<c-u>call <SID>NetrwBookHistHandler(4,expand("%"))<cr>
6104 " inoremap <buffer> <silent> <nowait> U <c-o>:<c-u>call <SID>NetrwBookHistHandler(5,expand("%"))<cr>
6105 " inoremap <buffer> <silent> <nowait> v <c-o>:call <SID>NetrwSplit(5)<cr>
6106 " inoremap <buffer> <silent> <nowait> x <c-o>:call netrw#BrowseX(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),0),0)"<cr>
6107 if !hasmapto('<Plug>NetrwHideEdit') 6455 if !hasmapto('<Plug>NetrwHideEdit')
6108 nmap <buffer> <unique> <c-h> <Plug>NetrwHideEdit 6456 nmap <buffer> <unique> <c-h> <Plug>NetrwHideEdit
6109 " imap <buffer> <unique> <c-h> <c-o><Plug>NetrwHideEdit
6110 endif 6457 endif
6111 nnoremap <buffer> <silent> <Plug>NetrwHideEdit :call <SID>NetrwHideEdit(1)<cr> 6458 nnoremap <buffer> <silent> <Plug>NetrwHideEdit :call <SID>NetrwHideEdit(1)<cr>
6112 if !hasmapto('<Plug>NetrwRefresh') 6459 if !hasmapto('<Plug>NetrwRefresh')
6113 nmap <buffer> <unique> <c-l> <Plug>NetrwRefresh 6460 nmap <buffer> <unique> <c-l> <Plug>NetrwRefresh
6114 " imap <buffer> <unique> <c-l> <c-o><Plug>NetrwRefresh
6115 endif 6461 endif
6116 nnoremap <buffer> <silent> <Plug>NetrwRefresh <c-l>:call <SID>NetrwRefresh(1,<SID>NetrwBrowseChgDir(1,(w:netrw_liststyle == 3)? w:netrw_treetop : './'))<cr> 6462 nnoremap <buffer> <silent> <Plug>NetrwRefresh <c-l>:call <SID>NetrwRefresh(1,<SID>NetrwBrowseChgDir(1,(w:netrw_liststyle == 3)? w:netrw_treetop : './'))<cr>
6117 if s:didstarstar || !mapcheck("<s-down>","n") 6463 if s:didstarstar || !mapcheck("<s-down>","n")
6118 nnoremap <buffer> <silent> <s-down> :Nexplore<cr> 6464 nnoremap <buffer> <silent> <s-down> :Nexplore<cr>
6119 " inoremap <buffer> <silent> <s-down> <c-o>:Nexplore<cr>
6120 endif 6465 endif
6121 if s:didstarstar || !mapcheck("<s-up>","n") 6466 if s:didstarstar || !mapcheck("<s-up>","n")
6122 nnoremap <buffer> <silent> <s-up> :Pexplore<cr> 6467 nnoremap <buffer> <silent> <s-up> :Pexplore<cr>
6123 " inoremap <buffer> <silent> <s-up> <c-o>:Pexplore<cr>
6124 endif 6468 endif
6125 if !hasmapto('<Plug>NetrwTreeSqueeze') 6469 if !hasmapto('<Plug>NetrwTreeSqueeze')
6126 nmap <buffer> <silent> <nowait> <s-cr> <Plug>NetrwTreeSqueeze 6470 nmap <buffer> <silent> <nowait> <s-cr> <Plug>NetrwTreeSqueeze
6127 " imap <buffer> <silent> <nowait> <s-cr> <c-o><Plug>NetrwTreeSqueeze
6128 endif 6471 endif
6129 nnoremap <buffer> <silent> <Plug>NetrwTreeSqueeze :call <SID>TreeSqueezeDir(1)<cr> 6472 nnoremap <buffer> <silent> <Plug>NetrwTreeSqueeze :call <SID>TreeSqueezeDir(1)<cr>
6130 let mapsafecurdir = escape(b:netrw_curdir, s:netrw_map_escape) 6473 let mapsafecurdir = escape(b:netrw_curdir, s:netrw_map_escape)
6131 if g:netrw_mousemaps == 1 6474 if g:netrw_mousemaps == 1
6132 nmap <buffer> <leftmouse> <Plug>NetrwLeftmouse 6475 nmap <buffer> <leftmouse> <Plug>NetrwLeftmouse
6476 nmap <buffer> <c-leftmouse> <Plug>NetrwCLeftmouse
6477 nmap <buffer> <middlemouse> <Plug>NetrwMiddlemouse
6478 nmap <buffer> <s-leftmouse> <Plug>NetrwSLeftmouse
6479 nmap <buffer> <s-leftdrag> <Plug>NetrwSLeftdrag
6480 nmap <buffer> <2-leftmouse> <Plug>Netrw2Leftmouse
6481 imap <buffer> <leftmouse> <Plug>ILeftmouse
6482 imap <buffer> <middlemouse> <Plug>IMiddlemouse
6133 nno <buffer> <silent> <Plug>NetrwLeftmouse <leftmouse>:call <SID>NetrwLeftmouse(1)<cr> 6483 nno <buffer> <silent> <Plug>NetrwLeftmouse <leftmouse>:call <SID>NetrwLeftmouse(1)<cr>
6134 nmap <buffer> <c-leftmouse> <Plug>NetrwCLeftmouse
6135 nno <buffer> <silent> <Plug>NetrwCLeftmouse <leftmouse>:call <SID>NetrwCLeftmouse(1)<cr> 6484 nno <buffer> <silent> <Plug>NetrwCLeftmouse <leftmouse>:call <SID>NetrwCLeftmouse(1)<cr>
6136 nmap <buffer> <middlemouse> <Plug>NetrwMiddlemouse
6137 nno <buffer> <silent> <Plug>NetrwMiddlemouse <leftmouse>:call <SID>NetrwPrevWinOpen(1)<cr> 6485 nno <buffer> <silent> <Plug>NetrwMiddlemouse <leftmouse>:call <SID>NetrwPrevWinOpen(1)<cr>
6138 nmap <buffer> <s-leftmouse> <Plug>NetrwSLeftmouse
6139 nno <buffer> <silent> <Plug>NetrwSLeftmouse <leftmouse>:call <SID>NetrwSLeftmouse(1)<cr> 6486 nno <buffer> <silent> <Plug>NetrwSLeftmouse <leftmouse>:call <SID>NetrwSLeftmouse(1)<cr>
6140 nmap <buffer> <s-leftdrag> <Plug>NetrwSLeftdrag
6141 nno <buffer> <silent> <Plug>NetrwSLeftdrag <leftmouse>:call <SID>NetrwSLeftdrag(1)<cr> 6487 nno <buffer> <silent> <Plug>NetrwSLeftdrag <leftmouse>:call <SID>NetrwSLeftdrag(1)<cr>
6142 nmap <buffer> <2-leftmouse> <Plug>Netrw2Leftmouse
6143 nmap <buffer> <silent> <Plug>Netrw2Leftmouse - 6488 nmap <buffer> <silent> <Plug>Netrw2Leftmouse -
6144 imap <buffer> <leftmouse> <Plug>ILeftmouse
6145 " ino <buffer> <silent> <Plug>ILeftmouse <c-o><leftmouse><c-o>:call <SID>NetrwLeftmouse(1)<cr>
6146 imap <buffer> <middlemouse> <Plug>IMiddlemouse
6147 " ino <buffer> <silent> <Plug>IMiddlemouse <c-o><leftmouse><c-o>:call <SID>NetrwPrevWinOpen(1)<cr>
6148 " imap <buffer> <s-leftmouse> <Plug>ISLeftmouse
6149 " ino <buffer> <silent> <Plug>ISLeftmouse <c-o><leftmouse><c-o>:call <SID>NetrwMarkFile(1,<SID>NetrwGetWord())<cr>
6150 exe 'nnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' 6489 exe 'nnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
6151 exe 'vnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' 6490 exe 'vnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
6152 " exe 'inoremap <buffer> <silent> <rightmouse> <c-o><leftmouse><c-o>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
6153 endif 6491 endif
6154 exe 'nnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' 6492 exe 'nnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
6155 exe 'nnoremap <buffer> <silent> <nowait> D :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' 6493 exe 'nnoremap <buffer> <silent> <nowait> D :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
6156 exe 'nnoremap <buffer> <silent> <nowait> R :call <SID>NetrwLocalRename("'.mapsafecurdir.'")<cr>' 6494 exe 'nnoremap <buffer> <silent> <nowait> R :call <SID>NetrwLocalRename("'.mapsafecurdir.'")<cr>'
6157 exe 'nnoremap <buffer> <silent> <nowait> d :call <SID>NetrwMakeDir("")<cr>' 6495 exe 'nnoremap <buffer> <silent> <nowait> d :call <SID>NetrwMakeDir("")<cr>'
6158 exe 'vnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' 6496 exe 'vnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
6159 exe 'vnoremap <buffer> <silent> <nowait> D :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' 6497 exe 'vnoremap <buffer> <silent> <nowait> D :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
6160 exe 'vnoremap <buffer> <silent> <nowait> R :call <SID>NetrwLocalRename("'.mapsafecurdir.'")<cr>' 6498 exe 'vnoremap <buffer> <silent> <nowait> R :call <SID>NetrwLocalRename("'.mapsafecurdir.'")<cr>'
6161 " exe 'inoremap <buffer> <silent> <nowait> <del> <c-o>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
6162 " exe 'inoremap <buffer> <silent> <nowait> D <c-o>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
6163 " exe 'inoremap <buffer> <silent> <nowait> R <c-o>:call <SID>NetrwLocalRename("'.mapsafecurdir.'")<cr>'
6164 " exe 'inoremap <buffer> <silent> <nowait> d <c-o>:call <SID>NetrwMakeDir("")<cr>'
6165 nnoremap <buffer> <F1> :he netrw-quickhelp<cr> 6499 nnoremap <buffer> <F1> :he netrw-quickhelp<cr>
6166 6500
6167 " support user-specified maps 6501 " support user-specified maps
6168 call netrw#UserMaps(1) 6502 call netrw#UserMaps(1)
6169 6503
6170 else " remote 6504 else
6505 " remote normal-mode maps {{{3
6171 " call Decho("make remote maps",'~'.expand("<slnum>")) 6506 " call Decho("make remote maps",'~'.expand("<slnum>"))
6172 call s:RemotePathAnalysis(b:netrw_curdir) 6507 call s:RemotePathAnalysis(b:netrw_curdir)
6173 " remote normal-mode maps 6508 nnoremap <buffer> <silent> <Plug>NetrwHide_a :<c-u>call <SID>NetrwHide(0)<cr>
6174 nnoremap <buffer> <silent> <nowait> a :<c-u>call <SID>NetrwHide(0)<cr> 6509 nnoremap <buffer> <silent> <Plug>NetrwBrowseUpDir :<c-u>call <SID>NetrwBrowseUpDir(0)<cr>
6175 nnoremap <buffer> <silent> <nowait> - :<c-u>call <SID>NetrwBrowseUpDir(0)<cr> 6510 nnoremap <buffer> <silent> <Plug>NetrwOpenFile :<c-u>call <SID>NetrwOpenFile(0)<cr>
6176 nnoremap <buffer> <silent> <nowait> % :<c-u>call <SID>NetrwOpenFile(0)<cr> 6511 nnoremap <buffer> <silent> <Plug>NetrwBadd_cb :<c-u>call <SID>NetrwBadd(0,0)<cr>
6177 nnoremap <buffer> <silent> <nowait> C :<c-u>call <SID>NetrwSetChgwin()<cr> 6512 nnoremap <buffer> <silent> <Plug>NetrwBadd_cB :<c-u>call <SID>NetrwBadd(0,1)<cr>
6178 nnoremap <buffer> <silent> <nowait> <c-l> :<c-u>call <SID>NetrwRefresh(0,<SID>NetrwBrowseChgDir(0,'./'))<cr> 6513 nnoremap <buffer> <silent> <Plug>NetrwLcd :<c-u>call <SID>NetrwLcd(b:netrw_curdir)<cr>
6179 nnoremap <buffer> <silent> <nowait> <cr> :<c-u>call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()))<cr> 6514 nnoremap <buffer> <silent> <Plug>NetrwSetChgwin :<c-u>call <SID>NetrwSetChgwin()<cr>
6180 nnoremap <buffer> <silent> <nowait> <c-r> :<c-u>call <SID>NetrwServerEdit(2,<SID>NetrwGetWord())<cr> 6515 nnoremap <buffer> <silent> <Plug>NetrwRefresh :<c-u>call <SID>NetrwRefresh(0,<SID>NetrwBrowseChgDir(0,'./'))<cr>
6181 nnoremap <buffer> <silent> <nowait> gb :<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_curdir)<cr> 6516 nnoremap <buffer> <silent> <Plug>NetrwLocalBrowseCheck :<c-u>call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()))<cr>
6517 nnoremap <buffer> <silent> <Plug>NetrwServerEdit :<c-u>call <SID>NetrwServerEdit(2,<SID>NetrwGetWord())<cr>
6518 nnoremap <buffer> <silent> <Plug>NetrwBookHistHandler_gb :<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_curdir)<cr>
6519 " ---------------------------------------------------------------------
6182 nnoremap <buffer> <silent> <nowait> gd :<c-u>call <SID>NetrwForceChgDir(0,<SID>NetrwGetWord())<cr> 6520 nnoremap <buffer> <silent> <nowait> gd :<c-u>call <SID>NetrwForceChgDir(0,<SID>NetrwGetWord())<cr>
6183 nnoremap <buffer> <silent> <nowait> gf :<c-u>call <SID>NetrwForceFile(0,<SID>NetrwGetWord())<cr> 6521 nnoremap <buffer> <silent> <nowait> gf :<c-u>call <SID>NetrwForceFile(0,<SID>NetrwGetWord())<cr>
6184 nnoremap <buffer> <silent> <nowait> gh :<c-u>call <SID>NetrwHidden(0)<cr> 6522 nnoremap <buffer> <silent> <nowait> gh :<c-u>call <SID>NetrwHidden(0)<cr>
6185 nnoremap <buffer> <silent> <nowait> gp :<c-u>call <SID>NetrwChgPerm(0,b:netrw_curdir)<cr> 6523 nnoremap <buffer> <silent> <nowait> gp :<c-u>call <SID>NetrwChgPerm(0,b:netrw_curdir)<cr>
6186 nnoremap <buffer> <silent> <nowait> I :<c-u>call <SID>NetrwBannerCtrl(1)<cr> 6524 nnoremap <buffer> <silent> <nowait> I :<c-u>call <SID>NetrwBannerCtrl(1)<cr>
6223 nnoremap <buffer> <silent> <nowait> Th :<c-u>call <SID>NetrwSetTgt(0,'h',v:count)<cr> 6561 nnoremap <buffer> <silent> <nowait> Th :<c-u>call <SID>NetrwSetTgt(0,'h',v:count)<cr>
6224 nnoremap <buffer> <silent> <nowait> u :<c-u>call <SID>NetrwBookHistHandler(4,b:netrw_curdir)<cr> 6562 nnoremap <buffer> <silent> <nowait> u :<c-u>call <SID>NetrwBookHistHandler(4,b:netrw_curdir)<cr>
6225 nnoremap <buffer> <silent> <nowait> U :<c-u>call <SID>NetrwBookHistHandler(5,b:netrw_curdir)<cr> 6563 nnoremap <buffer> <silent> <nowait> U :<c-u>call <SID>NetrwBookHistHandler(5,b:netrw_curdir)<cr>
6226 nnoremap <buffer> <silent> <nowait> v :call <SID>NetrwSplit(2)<cr> 6564 nnoremap <buffer> <silent> <nowait> v :call <SID>NetrwSplit(2)<cr>
6227 nnoremap <buffer> <silent> <nowait> x :<c-u>call netrw#BrowseX(<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()),1)<cr> 6565 nnoremap <buffer> <silent> <nowait> x :<c-u>call netrw#BrowseX(<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()),1)<cr>
6228 " " remote insert-mode maps
6229 " inoremap <buffer> <silent> <nowait> <cr> <c-o>:call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()))<cr>
6230 " inoremap <buffer> <silent> <nowait> <c-l> <c-o>:call <SID>NetrwRefresh(0,<SID>NetrwBrowseChgDir(0,'./'))<cr>
6231 " inoremap <buffer> <silent> <nowait> <s-cr> <c-o>:call <SID>TreeSqueezeDir(0)<cr>
6232 " inoremap <buffer> <silent> <nowait> - <c-o>:call <SID>NetrwBrowseUpDir(0)<cr>
6233 " inoremap <buffer> <silent> <nowait> a <c-o>:call <SID>NetrwHide(0)<cr>
6234 " inoremap <buffer> <silent> <nowait> mb <c-o>:<c-u>call <SID>NetrwBookHistHandler(0,b:netrw_curdir)<cr>
6235 " inoremap <buffer> <silent> <nowait> mc <c-o>:<c-u>call <SID>NetrwMarkFileCopy(0)<cr>
6236 " inoremap <buffer> <silent> <nowait> md <c-o>:<c-u>call <SID>NetrwMarkFileDiff(0)<cr>
6237 " inoremap <buffer> <silent> <nowait> me <c-o>:<c-u>call <SID>NetrwMarkFileEdit(0)<cr>
6238 " inoremap <buffer> <silent> <nowait> mf <c-o>:<c-u>call <SID>NetrwMarkFile(0,<SID>NetrwGetWord())<cr>
6239 " inoremap <buffer> <silent> <nowait> mg <c-o>:<c-u>call <SID>NetrwMarkFileGrep(0)<cr>
6240 " inoremap <buffer> <silent> <nowait> mh <c-o>:<c-u>call <SID>NetrwMarkHideSfx(0)<cr>
6241 " inoremap <buffer> <silent> <nowait> mm <c-o>:<c-u>call <SID>NetrwMarkFileMove(0)<cr>
6242 " inoremap <buffer> <silent> <nowait> mp <c-o>:<c-u>call <SID>NetrwMarkFilePrint(0)<cr>
6243 " inoremap <buffer> <silent> <nowait> mr <c-o>:<c-u>call <SID>NetrwMarkFileRegexp(0)<cr>
6244 " inoremap <buffer> <silent> <nowait> ms <c-o>:<c-u>call <SID>NetrwMarkFileSource(0)<cr>
6245 " inoremap <buffer> <silent> <nowait> mt <c-o>:<c-u>call <SID>NetrwMarkFileTgt(0)<cr>
6246 " inoremap <buffer> <silent> <nowait> mT <c-o>:<c-u>call <SID>NetrwMarkFileTag(0)<cr>
6247 " inoremap <buffer> <silent> <nowait> mu <c-o>:<c-u>call <SID>NetrwUnMarkFile(0)<cr>
6248 " nnoremap <buffer> <silent> <nowait> mv :<c-u>call <SID>NetrwMarkFileVimCmd(1)<cr>
6249 " inoremap <buffer> <silent> <nowait> mx <c-o>:<c-u>call <SID>NetrwMarkFileExe(0,0)<cr>
6250 " inoremap <buffer> <silent> <nowait> mX <c-o>:<c-u>call <SID>NetrwMarkFileExe(0,1)<cr>
6251 " inoremap <buffer> <silent> <nowait> mv <c-o>:<c-u>call <SID>NetrwMarkFileVimCmd(0)<cr>
6252 " inoremap <buffer> <silent> <nowait> mz <c-o>:<c-u>call <SID>NetrwMarkFileCompress(0)<cr>
6253 " inoremap <buffer> <silent> <nowait> gb <c-o>:<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_curdir)<cr>
6254 " inoremap <buffer> <silent> <nowait> gh <c-o>:<c-u>call <SID>NetrwHidden(0)<cr>
6255 " inoremap <buffer> <silent> <nowait> gp <c-o>:<c-u>call <SID>NetrwChgPerm(0,b:netrw_curdir)<cr>
6256 " inoremap <buffer> <silent> <nowait> C <c-o>:call <SID>NetrwSetChgwin()<cr>
6257 " inoremap <buffer> <silent> <nowait> i <c-o>:call <SID>NetrwListStyle(0)<cr>
6258 " inoremap <buffer> <silent> <nowait> I <c-o>:call <SID>NetrwBannerCtrl(1)<cr>
6259 " inoremap <buffer> <silent> <nowait> o <c-o>:call <SID>NetrwSplit(0)<cr>
6260 " inoremap <buffer> <silent> <nowait> O <c-o>:call <SID>NetrwObtain(0)<cr>
6261 " inoremap <buffer> <silent> <nowait> p <c-o>:call <SID>NetrwPreview(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),1))<cr>
6262 " inoremap <buffer> <silent> <nowait> P <c-o>:call <SID>NetrwPrevWinOpen(0)<cr>
6263 " inoremap <buffer> <silent> <nowait> qb <c-o>:<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr>
6264 " inoremap <buffer> <silent> <nowait> mB <c-o>:<c-u>call <SID>NetrwBookHistHandler(6,b:netrw_curdir)<cr>
6265 " inoremap <buffer> <silent> <nowait> qf <c-o>:<c-u>call <SID>NetrwFileInfo(0,<SID>NetrwGetWord())<cr>
6266 " inoremap <buffer> <silent> <nowait> qF :<c-u>call <SID>NetrwMarkFileQFEL(0,getqflist())<cr>
6267 " inoremap <buffer> <silent> <nowait> qL :<c-u>call <SID>NetrwMarkFileQFEL(0,getloclist(v:count))<cr>
6268 " inoremap <buffer> <silent> <nowait> r <c-o>:let g:netrw_sort_direction= (g:netrw_sort_direction =~# 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,'./'))<cr>
6269 " inoremap <buffer> <silent> <nowait> s <c-o>:call <SID>NetrwSortStyle(0)<cr>
6270 " inoremap <buffer> <silent> <nowait> S <c-o>:call <SID>NetSortSequence(0)<cr>
6271 " inoremap <buffer> <silent> <nowait> t <c-o>:call <SID>NetrwSplit(1)<cr>
6272 " inoremap <buffer> <silent> <nowait> Tb <c-o>:<c-u>call <SID>NetrwSetTgt('b',v:count1)<cr>
6273 " inoremap <buffer> <silent> <nowait> Th <c-o>:<c-u>call <SID>NetrwSetTgt('h',v:count)<cr>
6274 " inoremap <buffer> <silent> <nowait> u <c-o>:<c-u>call <SID>NetrwBookHistHandler(4,b:netrw_curdir)<cr>
6275 " inoremap <buffer> <silent> <nowait> U <c-o>:<c-u>call <SID>NetrwBookHistHandler(5,b:netrw_curdir)<cr>
6276 " inoremap <buffer> <silent> <nowait> v <c-o>:call <SID>NetrwSplit(2)<cr>
6277 " inoremap <buffer> <silent> <nowait> x <c-o>:call netrw#BrowseX(<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()),1)<cr>
6278 " inoremap <buffer> <silent> <nowait> % <c-o>:call <SID>NetrwOpenFile(0)<cr>
6279 if !hasmapto('<Plug>NetrwHideEdit') 6566 if !hasmapto('<Plug>NetrwHideEdit')
6280 nmap <buffer> <c-h> <Plug>NetrwHideEdit 6567 nmap <buffer> <c-h> <Plug>NetrwHideEdit
6281 " imap <buffer> <c-h> <Plug>NetrwHideEdit
6282 endif 6568 endif
6283 nnoremap <buffer> <silent> <Plug>NetrwHideEdit :call <SID>NetrwHideEdit(0)<cr> 6569 nnoremap <buffer> <silent> <Plug>NetrwHideEdit :call <SID>NetrwHideEdit(0)<cr>
6284 if !hasmapto('<Plug>NetrwRefresh') 6570 if !hasmapto('<Plug>NetrwRefresh')
6285 nmap <buffer> <c-l> <Plug>NetrwRefresh 6571 nmap <buffer> <c-l> <Plug>NetrwRefresh
6286 " imap <buffer> <c-l> <Plug>NetrwRefresh
6287 endif 6572 endif
6288 if !hasmapto('<Plug>NetrwTreeSqueeze') 6573 if !hasmapto('<Plug>NetrwTreeSqueeze')
6289 nmap <buffer> <silent> <nowait> <s-cr> <Plug>NetrwTreeSqueeze 6574 nmap <buffer> <silent> <nowait> <s-cr> <Plug>NetrwTreeSqueeze
6290 " imap <buffer> <silent> <nowait> <s-cr> <c-o><Plug>NetrwTreeSqueeze
6291 endif 6575 endif
6292 nnoremap <buffer> <silent> <Plug>NetrwTreeSqueeze :call <SID>TreeSqueezeDir(0)<cr> 6576 nnoremap <buffer> <silent> <Plug>NetrwTreeSqueeze :call <SID>TreeSqueezeDir(0)<cr>
6293 6577
6294 let mapsafepath = escape(s:path, s:netrw_map_escape) 6578 let mapsafepath = escape(s:path, s:netrw_map_escape)
6295 let mapsafeusermach = escape(((s:user == "")? "" : s:user."@").s:machine, s:netrw_map_escape) 6579 let mapsafeusermach = escape(((s:user == "")? "" : s:user."@").s:machine, s:netrw_map_escape)
6307 nmap <middlemouse> <Plug>NetrwMiddlemouse 6591 nmap <middlemouse> <Plug>NetrwMiddlemouse
6308 nno <buffer> <silent> <middlemouse> <Plug>NetrwMiddlemouse <leftmouse>:call <SID>NetrwPrevWinOpen(0)<cr> 6592 nno <buffer> <silent> <middlemouse> <Plug>NetrwMiddlemouse <leftmouse>:call <SID>NetrwPrevWinOpen(0)<cr>
6309 nmap <buffer> <2-leftmouse> <Plug>Netrw2Leftmouse 6593 nmap <buffer> <2-leftmouse> <Plug>Netrw2Leftmouse
6310 nmap <buffer> <silent> <Plug>Netrw2Leftmouse - 6594 nmap <buffer> <silent> <Plug>Netrw2Leftmouse -
6311 imap <buffer> <leftmouse> <Plug>ILeftmouse 6595 imap <buffer> <leftmouse> <Plug>ILeftmouse
6312 " ino <buffer> <silent> <Plug>ILeftmouse <c-o><leftmouse><c-o>:call <SID>NetrwLeftmouse(0)<cr>
6313 imap <buffer> <middlemouse> <Plug>IMiddlemouse 6596 imap <buffer> <middlemouse> <Plug>IMiddlemouse
6314 " ino <buffer> <silent> <Plug>IMiddlemouse <c-o><leftmouse><c-o>:call <SID>NetrwPrevWinOpen(0)<cr>
6315 imap <buffer> <s-leftmouse> <Plug>ISLeftmouse 6597 imap <buffer> <s-leftmouse> <Plug>ISLeftmouse
6316 " ino <buffer> <silent> <Plug>ISLeftmouse <c-o><leftmouse><c-o>:call <SID>NetrwMarkFile(0,<SID>NetrwGetWord())<cr>
6317 exe 'nnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' 6598 exe 'nnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
6318 exe 'vnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' 6599 exe 'vnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
6319 " exe 'inoremap <buffer> <silent> <rightmouse> <c-o><leftmouse><c-o>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
6320 endif 6600 endif
6321 exe 'nnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' 6601 exe 'nnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
6322 exe 'nnoremap <buffer> <silent> <nowait> d :call <SID>NetrwMakeDir("'.mapsafeusermach.'")<cr>' 6602 exe 'nnoremap <buffer> <silent> <nowait> d :call <SID>NetrwMakeDir("'.mapsafeusermach.'")<cr>'
6323 exe 'nnoremap <buffer> <silent> <nowait> D :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' 6603 exe 'nnoremap <buffer> <silent> <nowait> D :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
6324 exe 'nnoremap <buffer> <silent> <nowait> R :call <SID>NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' 6604 exe 'nnoremap <buffer> <silent> <nowait> R :call <SID>NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
6325 exe 'vnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' 6605 exe 'vnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
6326 exe 'vnoremap <buffer> <silent> <nowait> D :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' 6606 exe 'vnoremap <buffer> <silent> <nowait> D :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
6327 exe 'vnoremap <buffer> <silent> <nowait> R :call <SID>NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' 6607 exe 'vnoremap <buffer> <silent> <nowait> R :call <SID>NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
6328 " exe 'inoremap <buffer> <silent> <nowait> <del> <c-o>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
6329 " exe 'inoremap <buffer> <silent> <nowait> d <c-o>:call <SID>NetrwMakeDir("'.mapsafeusermach.'")<cr>'
6330 " exe 'inoremap <buffer> <silent> <nowait> D <c-o>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
6331 " exe 'inoremap <buffer> <silent> <nowait> R <c-o>:call <SID>NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
6332 nnoremap <buffer> <F1> :he netrw-quickhelp<cr> 6608 nnoremap <buffer> <F1> :he netrw-quickhelp<cr>
6333 " inoremap <buffer> <F1> <c-o>:he netrw-quickhelp<cr>
6334 6609
6335 " support user-specified maps 6610 " support user-specified maps
6336 call netrw#UserMaps(0) 6611 call netrw#UserMaps(0)
6337 endif 6612 endif " }}}3
6338 6613
6339 " call Dret("s:NetrwMaps") 6614 " call Dret("s:NetrwMaps")
6340 endfun 6615 endfun
6341 6616
6342 " --------------------------------------------------------------------- 6617 " ---------------------------------------------------------------------
6529 call add(s:netrwmarkfilelist,s:ComposePath(b:netrw_curdir,a:fname)) 6804 call add(s:netrwmarkfilelist,s:ComposePath(b:netrw_curdir,a:fname))
6530 " call Decho("init s:netrwmarkfilelist<".string(s:netrwmarkfilelist).">",'~'.expand("<slnum>")) 6805 " call Decho("init s:netrwmarkfilelist<".string(s:netrwmarkfilelist).">",'~'.expand("<slnum>"))
6531 endif 6806 endif
6532 6807
6533 " set up 2match'ing to netrwmarkfilemtch_# list 6808 " set up 2match'ing to netrwmarkfilemtch_# list
6534 if exists("s:netrwmarkfilemtch_{curbufnr}") && s:netrwmarkfilemtch_{curbufnr} != "" 6809 if has("syntax") && exists("g:syntax_on") && g:syntax_on
6535 " call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/",'~'.expand("<slnum>")) 6810 if exists("s:netrwmarkfilemtch_{curbufnr}") && s:netrwmarkfilemtch_{curbufnr} != ""
6536 if exists("g:did_drchip_netrwlist_syntax") 6811 " " call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/",'~'.expand("<slnum>"))
6537 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/" 6812 if exists("g:did_drchip_netrwlist_syntax")
6538 endif 6813 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/"
6539 else 6814 endif
6540 " call Decho("2match none",'~'.expand("<slnum>")) 6815 else
6541 2match none 6816 " " call Decho("2match none",'~'.expand("<slnum>"))
6817 2match none
6818 endif
6542 endif 6819 endif
6543 let @@= ykeep 6820 let @@= ykeep
6544 " call Dret("s:NetrwMarkFile : s:netrwmarkfilelist_".curbufnr."<".(exists("s:netrwmarkfilelist_{curbufnr}")? string(s:netrwmarkfilelist_{curbufnr}) : " doesn't exist").">") 6821 " call Dret("s:NetrwMarkFile : s:netrwmarkfilelist_".curbufnr."<".(exists("s:netrwmarkfilelist_{curbufnr}")? string(s:netrwmarkfilelist_{curbufnr}) : " doesn't exist").">")
6545 endfun 6822 endfun
6546 6823
6622 let exe= netrw#WinPath(exe) 6899 let exe= netrw#WinPath(exe)
6623 if a:islocal 6900 if a:islocal
6624 if g:netrw_keepdir 6901 if g:netrw_keepdir
6625 let fname= s:ShellEscape(s:ComposePath(curdir,fname)) 6902 let fname= s:ShellEscape(s:ComposePath(curdir,fname))
6626 endif 6903 endif
6904 call system(exe." ".fname)
6905 if v:shell_error
6906 NetrwKeepj call netrw#ErrorMsg(s:WARNING,"unable to apply<".exe."> to file<".fname.">",50)
6907 endif
6627 else 6908 else
6628 let fname= s:ShellEscape(b:netrw_curdir.fname,1) 6909 let fname= s:ShellEscape(b:netrw_curdir.fname,1)
6910 NetrwKeepj call s:RemoteSystem(exe." ".fname)
6629 endif 6911 endif
6630 if executable(exe) 6912
6631 if a:islocal
6632 call system(exe." ".fname)
6633 else
6634 NetrwKeepj call s:RemoteSystem(exe." ".fname)
6635 endif
6636 else
6637 NetrwKeepj call netrw#ErrorMsg(s:WARNING,"unable to apply<".exe."> to file<".fname.">",50)
6638 endif
6639 endif 6913 endif
6640 unlet sfx 6914 unlet sfx
6641 6915
6642 if exists("exe") 6916 if exists("exe")
6643 unlet exe 6917 unlet exe
6644 elseif a:islocal 6918 elseif a:islocal
6645 " fname not a compressed file, so compress it 6919 " fname not a compressed file, so compress it
6646 call system(netrw#WinPath(g:netrw_compress)." ".s:ShellEscape(s:ComposePath(b:netrw_curdir,fname))) 6920 call system(netrw#WinPath(g:netrw_compress)." ".s:ShellEscape(s:ComposePath(b:netrw_curdir,fname)))
6921 if v:shell_error
6922 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_compress<".g:netrw_compress."> to something that works",104)
6923 endif
6647 else 6924 else
6648 " fname not a compressed file, so compress it 6925 " fname not a compressed file, so compress it
6649 NetrwKeepj call s:RemoteSystem(netrw#WinPath(g:netrw_compress)." ".s:ShellEscape(fname)) 6926 NetrwKeepj call s:RemoteSystem(netrw#WinPath(g:netrw_compress)." ".s:ShellEscape(fname))
6650 endif 6927 endif
6651 endfor " for every file in the marked list 6928 endfor " for every file in the marked list
6693 " call Decho("sanity chk passed: s:netrwmftgt<".s:netrwmftgt.">",'~'.expand("<slnum>")) 6970 " call Decho("sanity chk passed: s:netrwmftgt<".s:netrwmftgt.">",'~'.expand("<slnum>"))
6694 6971
6695 if a:islocal && s:netrwmftgt_islocal 6972 if a:islocal && s:netrwmftgt_islocal
6696 " Copy marked files, local directory to local directory 6973 " Copy marked files, local directory to local directory
6697 " call Decho("copy from local to local",'~'.expand("<slnum>")) 6974 " call Decho("copy from local to local",'~'.expand("<slnum>"))
6698 if !executable(g:netrw_localcopycmd) && g:netrw_localcopycmd !~ '^'.expand("$COMSPEC").'\s' 6975 if !executable(g:netrw_localcopycmd)
6699 call netrw#ErrorMsg(s:ERROR,"g:netrw_localcopycmd<".g:netrw_localcopycmd."> not executable on your system, aborting",91) 6976 call netrw#ErrorMsg(s:ERROR,"g:netrw_localcopycmd<".g:netrw_localcopycmd."> not executable on your system, aborting",91)
6700 " call Dfunc("s:NetrwMarkFileMove : g:netrw_localcopycmd<".g:netrw_localcopycmd."> n/a!") 6977 " call Dfunc("s:NetrwMarkFileMove : g:netrw_localcopycmd<".g:netrw_localcopycmd."> n/a!")
6701 return 6978 return
6702 endif 6979 endif
6703 6980
6775 endif 7052 endif
6776 " call Decho("args <".args.">",'~'.expand("<slnum>")) 7053 " call Decho("args <".args.">",'~'.expand("<slnum>"))
6777 " call Decho("tgt <".tgt.">",'~'.expand("<slnum>")) 7054 " call Decho("tgt <".tgt.">",'~'.expand("<slnum>"))
6778 " call Decho("copycmd<".copycmd.">",'~'.expand("<slnum>")) 7055 " call Decho("copycmd<".copycmd.">",'~'.expand("<slnum>"))
6779 " call Decho("system(".copycmd." '".args."' '".tgt."')",'~'.expand("<slnum>")) 7056 " call Decho("system(".copycmd." '".args."' '".tgt."')",'~'.expand("<slnum>"))
6780 call system(copycmd." '".args."' '".tgt."'") 7057 call system(copycmd.g:netrw_localcopycmdopt." '".args."' '".tgt."'")
6781 if v:shell_error != 0 7058 if v:shell_error != 0
6782 if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && !g:netrw_keepdir 7059 if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && !g:netrw_keepdir
6783 call netrw#ErrorMsg(s:ERROR,"copy failed; perhaps due to vim's current directory<".getcwd()."> not matching netrw's (".b:netrw_curdir.") (see :help netrw-c)",101) 7060 call netrw#ErrorMsg(s:ERROR,"copy failed; perhaps due to vim's current directory<".getcwd()."> not matching netrw's (".b:netrw_curdir.") (see :help netrw-cd)",101)
6784 else 7061 else
6785 call netrw#ErrorMsg(s:ERROR,"tried using g:netrw_localcopycmd<".g:netrw_localcopycmd.">; it doesn't work!",80) 7062 call netrw#ErrorMsg(s:ERROR,"tried using g:netrw_localcopycmd<".g:netrw_localcopycmd.">; it doesn't work!",80)
6786 endif 7063 endif
6787 " call Dret("s:NetrwMarkFileCopy 0 : failed: system(".g:netrw_localcopycmd." ".args." ".s:ShellEscape(s:netrwmftgt)) 7064 " call Dret("s:NetrwMarkFileCopy 0 : failed: system(".g:netrw_localcopycmd." ".args." ".s:ShellEscape(s:netrwmftgt))
6788 return 0 7065 return 0
6807 let tmpdir= curdir."/".tmpdir 7084 let tmpdir= curdir."/".tmpdir
6808 endif 7085 endif
6809 if exists("*mkdir") 7086 if exists("*mkdir")
6810 call mkdir(tmpdir) 7087 call mkdir(tmpdir)
6811 else 7088 else
6812 call s:NetrwExe("sil! !".g:netrw_localmkdir.' '.s:ShellEscape(tmpdir,1)) 7089 call s:NetrwExe("sil! !".g:netrw_localmkdir.g:netrw_localmkdiropt.' '.s:ShellEscape(tmpdir,1))
6813 if v:shell_error != 0 7090 if v:shell_error != 0
6814 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localmkdir<".g:netrw_localmkdir."> to something that works",80) 7091 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localmkdir<".g:netrw_localmkdir."> to something that works",80)
6815 " call Dret("s:NetrwMarkFileCopy : failed: sil! !".g:netrw_localmkdir.' '.s:ShellEscape(tmpdir,1) ) 7092 " call Dret("s:NetrwMarkFileCopy : failed: sil! !".g:netrw_localmkdir.' '.s:ShellEscape(tmpdir,1) )
6816 return 7093 return
6817 endif 7094 endif
6818 endif 7095 endif
6819 if isdirectory(s:NetrwFile(tmpdir)) 7096 if isdirectory(s:NetrwFile(tmpdir))
6820 call s:NetrwLcd(tmpdir) 7097 if s:NetrwLcd(tmpdir)
7098 " call Dret("s:NetrwMarkFileCopy : lcd failure")
7099 return
7100 endif
6821 NetrwKeepj call netrw#Obtain(a:islocal,s:netrwmarkfilelist_{bufnr('%')},tmpdir) 7101 NetrwKeepj call netrw#Obtain(a:islocal,s:netrwmarkfilelist_{bufnr('%')},tmpdir)
6822 let localfiles= map(deepcopy(s:netrwmarkfilelist_{bufnr('%')}),'substitute(v:val,"^.*/","","")') 7102 let localfiles= map(deepcopy(s:netrwmarkfilelist_{bufnr('%')}),'substitute(v:val,"^.*/","","")')
6823 NetrwKeepj call s:NetrwUpload(localfiles,s:netrwmftgt) 7103 NetrwKeepj call s:NetrwUpload(localfiles,s:netrwmftgt)
6824 if getcwd() == tmpdir 7104 if getcwd() == tmpdir
6825 for fname in s:netrwmarkfilelist_{bufnr('%')} 7105 for fname in s:netrwmarkfilelist_{bufnr('%')}
6826 NetrwKeepj call s:NetrwDelete(fname) 7106 NetrwKeepj call s:NetrwDelete(fname)
6827 endfor 7107 endfor
6828 call s:NetrwLcd(curdir) 7108 if s:NetrwLcd(curdir)
6829 if v:version < 704 || !has("patch1109") 7109 " call Dret("s:NetrwMarkFileCopy : lcd failure")
6830 call s:NetrwExe("sil !".g:netrw_localrmdir." ".s:ShellEscape(tmpdir,1)) 7110 return
7111 endif
7112 if v:version < 704 || (v:version == 704 && !has("patch1107"))
7113 call s:NetrwExe("sil !".g:netrw_localrmdir.g:netrw_localrmdiropt." ".s:ShellEscape(tmpdir,1))
6831 if v:shell_error != 0 7114 if v:shell_error != 0
6832 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localrmdir<".g:netrw_localrmdir."> to something that works",80) 7115 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localrmdir<".g:netrw_localrmdir."> to something that works",80)
6833 " " call Dret("s:NetrwMarkFileCopy : failed: sil !".g:netrw_localrmdir." ".s:ShellEscape(tmpdir,1) ) 7116 " " call Dret("s:NetrwMarkFileCopy : failed: sil !".g:netrw_localrmdir." ".s:ShellEscape(tmpdir,1) )
6834 return 7117 return
6835 endif 7118 endif
6837 if delete(tmpdir,"d") 7120 if delete(tmpdir,"d")
6838 call netrw#ErrorMsg(s:ERROR,"unable to delete directory <".tmpdir.">!",103) 7121 call netrw#ErrorMsg(s:ERROR,"unable to delete directory <".tmpdir.">!",103)
6839 endif 7122 endif
6840 endif 7123 endif
6841 else 7124 else
6842 call s:NetrwLcd(curdir) 7125 if s:NetrwLcd(curdir)
7126 " call Dret("s:NetrwMarkFileCopy : lcd failure")
7127 return
7128 endif
6843 endif 7129 endif
6844 endif 7130 endif
6845 endif 7131 endif
6846 7132
6847 " ------- 7133 " -------
7364 7650
7365 if a:islocal && s:netrwmftgt_islocal 7651 if a:islocal && s:netrwmftgt_islocal
7366 " move: local -> local 7652 " move: local -> local
7367 " call Decho("move from local to local",'~'.expand("<slnum>")) 7653 " call Decho("move from local to local",'~'.expand("<slnum>"))
7368 " call Decho("local to local move",'~'.expand("<slnum>")) 7654 " call Decho("local to local move",'~'.expand("<slnum>"))
7369 if !executable(g:netrw_localmovecmd) && g:netrw_localmovecmd !~ '^'.expand("$COMSPEC").'\s' 7655 if !executable(g:netrw_localmovecmd)
7370 call netrw#ErrorMsg(s:ERROR,"g:netrw_localmovecmd<".g:netrw_localmovecmd."> not executable on your system, aborting",90) 7656 call netrw#ErrorMsg(s:ERROR,"g:netrw_localmovecmd<".g:netrw_localmovecmd."> not executable on your system, aborting",90)
7371 " call Dfunc("s:NetrwMarkFileMove : g:netrw_localmovecmd<".g:netrw_localmovecmd."> n/a!") 7657 " call Dfunc("s:NetrwMarkFileMove : g:netrw_localmovecmd<".g:netrw_localmovecmd."> n/a!")
7372 return 7658 return
7373 endif 7659 endif
7374 let tgt = s:ShellEscape(s:netrwmftgt) 7660 let tgt = s:ShellEscape(s:netrwmftgt)
7375 " call Decho("tgt<".tgt.">",'~'.expand("<slnum>")) 7661 " call Decho("tgt<".tgt.">",'~'.expand("<slnum>"))
7376 if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16")) 7662 if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16"))
7377 let tgt = substitute(tgt, '/','\\','g') 7663 let tgt= substitute(tgt, '/','\\','g')
7378 " call Decho("windows exception: tgt<".tgt.">",'~'.expand("<slnum>")) 7664 " call Decho("windows exception: tgt<".tgt.">",'~'.expand("<slnum>"))
7379 if g:netrw_localmovecmd =~ '\s' 7665 if g:netrw_localmovecmd =~ '\s'
7380 let movecmd = substitute(g:netrw_localmovecmd,'\s.*$','','') 7666 let movecmd = substitute(g:netrw_localmovecmd,'\s.*$','','')
7381 let movecmdargs = substitute(g:netrw_localmovecmd,'^.\{-}\(\s.*\)$','\1','') 7667 let movecmdargs = substitute(g:netrw_localmovecmd,'^.\{-}\(\s.*\)$','\1','')
7382 let movecmd = netrw#WinPath(movecmd).movecmdargs 7668 let movecmd = netrw#WinPath(movecmd).movecmdargs
7392 for fname in s:netrwmarkfilelist_{bufnr("%")} 7678 for fname in s:netrwmarkfilelist_{bufnr("%")}
7393 if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16")) 7679 if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16"))
7394 let fname= substitute(fname,'/','\\','g') 7680 let fname= substitute(fname,'/','\\','g')
7395 endif 7681 endif
7396 " call Decho("system(".movecmd." ".s:ShellEscape(fname)." ".tgt.")",'~'.expand("<slnum>")) 7682 " call Decho("system(".movecmd." ".s:ShellEscape(fname)." ".tgt.")",'~'.expand("<slnum>"))
7397 let ret= system(movecmd." ".s:ShellEscape(fname)." ".tgt) 7683 let ret= system(movecmd.g:netrw_localmovecmdopt." ".s:ShellEscape(fname)." ".tgt)
7398 if v:shell_error != 0 7684 if v:shell_error != 0
7399 if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && !g:netrw_keepdir 7685 if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && !g:netrw_keepdir
7400 call netrw#ErrorMsg(s:ERROR,"move failed; perhaps due to vim's current directory<".getcwd()."> not matching netrw's (".b:netrw_curdir.") (see :help netrw-c)",100) 7686 call netrw#ErrorMsg(s:ERROR,"move failed; perhaps due to vim's current directory<".getcwd()."> not matching netrw's (".b:netrw_curdir.") (see :help netrw-cd)",100)
7401 else 7687 else
7402 call netrw#ErrorMsg(s:ERROR,"tried using g:netrw_localmovecmd<".g:netrw_localmovecmd.">; it doesn't work!",54) 7688 call netrw#ErrorMsg(s:ERROR,"tried using g:netrw_localmovecmd<".g:netrw_localmovecmd.">; it doesn't work!",54)
7403 endif 7689 endif
7404 break 7690 break
7405 endif 7691 endif
7522 let regexp= input("Enter regexp: ","","file") 7808 let regexp= input("Enter regexp: ","","file")
7523 call inputrestore() 7809 call inputrestore()
7524 7810
7525 if a:islocal 7811 if a:islocal
7526 let curdir= s:NetrwGetCurdir(a:islocal) 7812 let curdir= s:NetrwGetCurdir(a:islocal)
7813 " call Decho("curdir<".fnameescape(curdir).">")
7527 " get the matching list of files using local glob() 7814 " get the matching list of files using local glob()
7528 " call Decho("handle local regexp",'~'.expand("<slnum>")) 7815 " call Decho("handle local regexp",'~'.expand("<slnum>"))
7529 let dirname = escape(b:netrw_curdir,g:netrw_glob_escape) 7816 let dirname = escape(b:netrw_curdir,g:netrw_glob_escape)
7530 if v:version > 704 || (v:version == 704 && has("patch656")) 7817 if v:version > 704 || (v:version == 704 && has("patch656"))
7531 let files = glob(s:ComposePath(dirname,regexp),0,0,1) 7818 let filelist= glob(s:ComposePath(dirname,regexp),0,1,1)
7532 else 7819 else
7533 let files = glob(s:ComposePath(dirname,regexp),0,0) 7820 let files = glob(s:ComposePath(dirname,regexp),0,0)
7534 endif 7821 let filelist= split(files,"\n")
7535 " call Decho("files<".files.">",'~'.expand("<slnum>")) 7822 endif
7536 let filelist= split(files,"\n") 7823 " call Decho("files<".string(filelist).">",'~'.expand("<slnum>"))
7537 7824
7538 " mark the list of files 7825 " mark the list of files
7539 for fname in filelist 7826 for fname in filelist
7540 " call Decho("fname<".fname.">",'~'.expand("<slnum>")) 7827 if fname =~ '^'.fnameescape(curdir)
7541 NetrwKeepj call s:NetrwMarkFile(a:islocal,substitute(fname,'^.*/','','')) 7828 " call Decho("fname<".substitute(fname,'^'.fnameescape(curdir).'/','','').">",'~'.expand("<slnum>"))
7829 NetrwKeepj call s:NetrwMarkFile(a:islocal,substitute(fname,'^'.fnameescape(curdir).'/','',''))
7830 else
7831 " call Decho("fname<".fname.">",'~'.expand("<slnum>"))
7832 NetrwKeepj call s:NetrwMarkFile(a:islocal,substitute(fname,'^.*/','',''))
7833 endif
7542 endfor 7834 endfor
7543 7835
7544 else 7836 else
7545 " call Decho("handle remote regexp",'~'.expand("<slnum>")) 7837 " call Decho("handle remote regexp",'~'.expand("<slnum>"))
7546 7838
7550 sil NetrwKeepj %y a 7842 sil NetrwKeepj %y a
7551 setl ei=all ma 7843 setl ei=all ma
7552 " call Decho("setl ei=all ma",'~'.expand("<slnum>")) 7844 " call Decho("setl ei=all ma",'~'.expand("<slnum>"))
7553 1split 7845 1split
7554 NetrwKeepj call s:NetrwEnew() 7846 NetrwKeepj call s:NetrwEnew()
7555 NetrwKeepj call s:NetrwSafeOptions() 7847 NetrwKeepj call s:NetrwOptionsSafe(a:islocal)
7556 sil NetrwKeepj norm! "ap 7848 sil NetrwKeepj norm! "ap
7557 NetrwKeepj 2 7849 NetrwKeepj 2
7558 let bannercnt= search('^" =====','W') 7850 let bannercnt= search('^" =====','W')
7559 exe "sil NetrwKeepj 1,".bannercnt."d" 7851 exe "sil NetrwKeepj 1,".bannercnt."d"
7560 setl bt=nofile 7852 setl bt=nofile
7647 " call Decho("s:netrwmarkfilelist".string(s:netrwmarkfilelist).">",'~'.expand("<slnum>")) 7939 " call Decho("s:netrwmarkfilelist".string(s:netrwmarkfilelist).">",'~'.expand("<slnum>"))
7648 let netrwmarkfilelist= join(map(deepcopy(s:netrwmarkfilelist), "s:ShellEscape(v:val,".!a:islocal.")")) 7940 let netrwmarkfilelist= join(map(deepcopy(s:netrwmarkfilelist), "s:ShellEscape(v:val,".!a:islocal.")"))
7649 call s:NetrwUnmarkAll() 7941 call s:NetrwUnmarkAll()
7650 7942
7651 if a:islocal 7943 if a:islocal
7652 if executable(g:netrw_ctags) 7944
7653 " call Decho("call system(".g:netrw_ctags." ".netrwmarkfilelist.")",'~'.expand("<slnum>")) 7945 " call Decho("call system(".g:netrw_ctags." ".netrwmarkfilelist.")",'~'.expand("<slnum>"))
7654 call system(g:netrw_ctags." ".netrwmarkfilelist) 7946 call system(g:netrw_ctags." ".netrwmarkfilelist)
7655 else 7947 if v:shell_error
7656 call netrw#ErrorMsg(s:ERROR,"g:netrw_ctags<".g:netrw_ctags."> is not executable!",51) 7948 call netrw#ErrorMsg(s:ERROR,"g:netrw_ctags<".g:netrw_ctags."> is not executable!",51)
7657 endif 7949 endif
7950
7658 else 7951 else
7659 let cmd = s:RemoteSystem(g:netrw_ctags." ".netrwmarkfilelist) 7952 let cmd = s:RemoteSystem(g:netrw_ctags." ".netrwmarkfilelist)
7660 call netrw#Obtain(a:islocal,"tags") 7953 call netrw#Obtain(a:islocal,"tags")
7661 let curdir= b:netrw_curdir 7954 let curdir= b:netrw_curdir
7662 1split 7955 1split
8107 if exists("s:netrwmarkfilelist_{bufnr('%')}") 8400 if exists("s:netrwmarkfilelist_{bufnr('%')}")
8108 let islocal= s:netrwmarkfilelist_{bufnr('%')}[1] !~ '^\a\{3,}://' 8401 let islocal= s:netrwmarkfilelist_{bufnr('%')}[1] !~ '^\a\{3,}://'
8109 call netrw#Obtain(islocal,s:netrwmarkfilelist_{bufnr('%')}) 8402 call netrw#Obtain(islocal,s:netrwmarkfilelist_{bufnr('%')})
8110 call s:NetrwUnmarkList(bufnr('%'),b:netrw_curdir) 8403 call s:NetrwUnmarkList(bufnr('%'),b:netrw_curdir)
8111 else 8404 else
8112 call netrw#Obtain(a:islocal,expand("<cWORD>")) 8405 call netrw#Obtain(a:islocal,s:NetrwGetWord())
8113 endif 8406 endif
8114 let @@= ykeep 8407 let @@= ykeep
8115 8408
8116 " call Dret("NetrwObtain") 8409 " call Dret("NetrwObtain")
8117 endfun 8410 endfun
8142 8435
8143 let didsplit = 0 8436 let didsplit = 0
8144 if lastwinnr == 1 8437 if lastwinnr == 1
8145 " if only one window, open a new one first 8438 " if only one window, open a new one first
8146 " call Decho("only one window, so open a new one (g:netrw_alto=".g:netrw_alto.")",'~'.expand("<slnum>")) 8439 " call Decho("only one window, so open a new one (g:netrw_alto=".g:netrw_alto.")",'~'.expand("<slnum>"))
8440 " g:netrw_preview=0: preview window shown in a horizontally split window
8441 " g:netrw_preview=1: preview window shown in a vertically split window
8147 if g:netrw_preview 8442 if g:netrw_preview
8148 " vertically split preview window 8443 " vertically split preview window
8149 let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winheight(0))/100 : -g:netrw_winsize 8444 let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize
8150 " call Decho("exe ".(g:netrw_alto? "top " : "bot ")."vert ".winsz."wincmd s",'~'.expand("<slnum>")) 8445 " call Decho("exe ".(g:netrw_alto? "top " : "bot ")."vert ".winsz."wincmd s",'~'.expand("<slnum>"))
8151 exe (g:netrw_alto? "top " : "bot ")."vert ".winsz."wincmd s" 8446 exe (g:netrw_alto? "top " : "bot ")."vert ".winsz."wincmd s"
8152 else 8447 else
8153 " horizontally split preview window 8448 " horizontally split preview window
8154 let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize 8449 let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winheight(0))/100 : -g:netrw_winsize
8155 " call Decho("exe ".(g:netrw_alto? "bel " : "abo ").winsz."wincmd s",'~'.expand("<slnum>")) 8450 " call Decho("exe ".(g:netrw_alto? "bel " : "abo ").winsz."wincmd s",'~'.expand("<slnum>"))
8156 exe (g:netrw_alto? "bel " : "abo ").winsz."wincmd s" 8451 exe (g:netrw_alto? "bel " : "abo ").winsz."wincmd s"
8157 endif 8452 endif
8158 let didsplit = 1 8453 let didsplit = 1
8159 " call Decho("did split",'~'.expand("<slnum>")) 8454 " call Decho("did split",'~'.expand("<slnum>"))
8187 8482
8188 if bnrcnt == 1 && &hidden == 0 8483 if bnrcnt == 1 && &hidden == 0
8189 " only one copy of the modified buffer in a window, and 8484 " only one copy of the modified buffer in a window, and
8190 " hidden not set, so overwriting will lose the modified file. Ask first... 8485 " hidden not set, so overwriting will lose the modified file. Ask first...
8191 let choice = confirm("Save modified buffer<".prevbufname."> first?","&Yes\n&No\n&Cancel") 8486 let choice = confirm("Save modified buffer<".prevbufname."> first?","&Yes\n&No\n&Cancel")
8192 " call Decho("(NetrwPrevWinOpen) prevbufname<".prevbufname."> choice=".choice." current-winnr#".winnr(),'~'.expand("<slnum>")) 8487 " call Decho("prevbufname<".prevbufname."> choice=".choice." current-winnr#".winnr(),'~'.expand("<slnum>"))
8193 let &ei= eikeep 8488 let &ei= eikeep
8194 8489
8195 if choice == 1 8490 if choice == 1
8196 " Yes -- write file & then browse 8491 " Yes -- write file & then browse
8197 let v:errmsg= "" 8492 let v:errmsg= ""
8281 elseif type(a:fname) == 3 8576 elseif type(a:fname) == 3
8282 " handle uploading a list of files via scp 8577 " handle uploading a list of files via scp
8283 " call Decho("handle uploading a list of files via scp",'~'.expand("<slnum>")) 8578 " call Decho("handle uploading a list of files via scp",'~'.expand("<slnum>"))
8284 let curdir= getcwd() 8579 let curdir= getcwd()
8285 if a:tgt =~ '^scp:' 8580 if a:tgt =~ '^scp:'
8286 call s:NetrwLcd(fromdir) 8581 if s:NetrwLcd(fromdir)
8582 " call Dret("s:NetrwUpload : lcd failure")
8583 return
8584 endif
8287 let filelist= deepcopy(s:netrwmarkfilelist_{bufnr('%')}) 8585 let filelist= deepcopy(s:netrwmarkfilelist_{bufnr('%')})
8288 let args = join(map(filelist,"s:ShellEscape(v:val, 1)")) 8586 let args = join(map(filelist,"s:ShellEscape(v:val, 1)"))
8289 if exists("g:netrw_port") && g:netrw_port != "" 8587 if exists("g:netrw_port") && g:netrw_port != ""
8290 let useport= " ".g:netrw_scpport." ".g:netrw_port 8588 let useport= " ".g:netrw_scpport." ".g:netrw_port
8291 else 8589 else
8292 let useport= "" 8590 let useport= ""
8293 endif 8591 endif
8294 let machine = substitute(a:tgt,'^scp://\([^/:]\+\).*$','\1','') 8592 let machine = substitute(a:tgt,'^scp://\([^/:]\+\).*$','\1','')
8295 let tgt = substitute(a:tgt,'^scp://[^/]\+/\(.*\)$','\1','') 8593 let tgt = substitute(a:tgt,'^scp://[^/]\+/\(.*\)$','\1','')
8296 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_scp_cmd.s:ShellEscape(useport,1)." ".args." ".s:ShellEscape(machine.":".tgt,1)) 8594 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_scp_cmd.s:ShellEscape(useport,1)." ".args." ".s:ShellEscape(machine.":".tgt,1))
8297 call s:NetrwLcd(curdir) 8595 if s:NetrwLcd(curdir)
8596 " call Dret("s:NetrwUpload : lcd failure")
8597 return
8598 endif
8298 8599
8299 elseif a:tgt =~ '^ftp:' 8600 elseif a:tgt =~ '^ftp:'
8300 call s:NetrwMethod(a:tgt) 8601 call s:NetrwMethod(a:tgt)
8301 8602
8302 if b:netrw_method == 2 8603 if b:netrw_method == 2
8406 let mod = 1 8707 let mod = 1
8407 else 8708 else
8408 bw!|q 8709 bw!|q
8409 endif 8710 endif
8410 elseif !exists("b:netrw_method") || b:netrw_method < 0 8711 elseif !exists("b:netrw_method") || b:netrw_method < 0
8411 " call Dfunc("netrw#NetrwUpload : unsupported method") 8712 " call Dret("s:#NetrwUpload : unsupported method")
8412 return 8713 return
8413 endif 8714 endif
8414 else 8715 else
8415 call netrw#ErrorMsg(s:ERROR,"can't obtain files with protocol from<".a:tgt.">",63) 8716 call netrw#ErrorMsg(s:ERROR,"can't obtain files with protocol from<".a:tgt.">",63)
8416 endif 8717 endif
8418 8719
8419 " call Dret("s:NetrwUpload") 8720 " call Dret("s:NetrwUpload")
8420 endfun 8721 endfun
8421 8722
8422 " --------------------------------------------------------------------- 8723 " ---------------------------------------------------------------------
8423 " s:NetrwPreview: {{{2 8724 " s:NetrwPreview: supports netrw's "p" map {{{2
8424 fun! s:NetrwPreview(path) range 8725 fun! s:NetrwPreview(path) range
8425 " call Dfunc("NetrwPreview(path<".a:path.">)") 8726 " call Dfunc("NetrwPreview(path<".a:path.">)")
8727 " call Decho("g:netrw_alto =".(exists("g:netrw_alto")? g:netrw_alto : 'n/a'),'~'.expand("<slnum>"))
8728 " call Decho("g:netrw_preview=".(exists("g:netrw_preview")? g:netrw_preview : 'n/a'),'~'.expand("<slnum>"))
8426 let ykeep= @@ 8729 let ykeep= @@
8427 NetrwKeepj call s:NetrwOptionSave("s:") 8730 NetrwKeepj call s:NetrwOptionsSave("s:")
8428 NetrwKeepj call s:NetrwSafeOptions() 8731 if a:path !~ '^\*\{1,2}/' && a:path !~ '^\a\{3,}://'
8732 NetrwKeepj call s:NetrwOptionsSafe(1)
8733 else
8734 NetrwKeepj call s:NetrwOptionsSafe(0)
8735 endif
8429 if has("quickfix") 8736 if has("quickfix")
8737 " call Decho("has quickfix",'~'.expand("<slnum>"))
8430 if !isdirectory(s:NetrwFile(a:path)) 8738 if !isdirectory(s:NetrwFile(a:path))
8431 if g:netrw_preview && !g:netrw_alto 8739 " call Decho("good; not previewing a directory",'~'.expand("<slnum>"))
8740 if g:netrw_preview
8741 " vertical split
8432 let pvhkeep = &pvh 8742 let pvhkeep = &pvh
8433 let winsz = (g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize 8743 let winsz = (g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize
8434 let &pvh = winwidth(0) - winsz 8744 let &pvh = winwidth(0) - winsz
8435 endif 8745 " call Decho("g:netrw_preview: winsz=".winsz." &pvh=".&pvh." (temporarily) g:netrw_winsize=".g:netrw_winsize,'~'.expand("<slnum>"))
8746 else
8747 " horizontal split
8748 let pvhkeep = &pvh
8749 let winsz = (g:netrw_winsize > 0)? (g:netrw_winsize*winheight(0))/100 : -g:netrw_winsize
8750 let &pvh = winheight(0) - winsz
8751 " call Decho("!g:netrw_preview: winsz=".winsz." &pvh=".&pvh." (temporarily) g:netrw_winsize=".g:netrw_winsize,'~'.expand("<slnum>"))
8752 endif
8753 " g:netrw_preview g:netrw_alto
8754 " 1 : vert 1: top -- preview window is vertically split off and on the left
8755 " 1 : vert 0: bot -- preview window is vertically split off and on the right
8756 " 0 : 1: top -- preview window is horizontally split off and on the top
8757 " 0 : 0: bot -- preview window is horizontally split off and on the bottom
8758 "
8759 " Note that the file being previewed is already known to not be a directory, hence we can avoid doing a LocalBrowse() check via
8760 " the BufEnter event set up in netrwPlugin.vim
8761 " call Decho("exe ".(g:netrw_alto? "top " : "bot ").(g:netrw_preview? "vert " : "")."pedit ".fnameescape(a:path),'~'.expand("<slnum>"))
8762 let eikeep = &ei
8763 set ei=BufEnter
8436 exe (g:netrw_alto? "top " : "bot ").(g:netrw_preview? "vert " : "")."pedit ".fnameescape(a:path) 8764 exe (g:netrw_alto? "top " : "bot ").(g:netrw_preview? "vert " : "")."pedit ".fnameescape(a:path)
8765 let &ei= eikeep
8766 " call Decho("winnr($)=".winnr("$"),'~'.expand("<slnum>"))
8437 if exists("pvhkeep") 8767 if exists("pvhkeep")
8438 let &pvh= pvhkeep 8768 let &pvh= pvhkeep
8439 endif 8769 endif
8440 elseif !exists("g:netrw_quiet") 8770 elseif !exists("g:netrw_quiet")
8441 NetrwKeepj call netrw#ErrorMsg(s:WARNING,"sorry, cannot preview a directory such as <".a:path.">",38) 8771 NetrwKeepj call netrw#ErrorMsg(s:WARNING,"sorry, cannot preview a directory such as <".a:path.">",38)
8442 endif 8772 endif
8443 elseif !exists("g:netrw_quiet") 8773 elseif !exists("g:netrw_quiet")
8444 NetrwKeepj call netrw#ErrorMsg(s:WARNING,"sorry, to preview your vim needs the quickfix feature compiled in",39) 8774 NetrwKeepj call netrw#ErrorMsg(s:WARNING,"sorry, to preview your vim needs the quickfix feature compiled in",39)
8445 endif 8775 endif
8446 NetrwKeepj call s:NetrwOptionRestore("s:") 8776 NetrwKeepj call s:NetrwOptionsRestore("s:")
8447 let @@= ykeep 8777 let @@= ykeep
8448 " call Dret("NetrwPreview") 8778 " call Dret("NetrwPreview")
8449 endfun 8779 endfun
8450 8780
8451 " --------------------------------------------------------------------- 8781 " ---------------------------------------------------------------------
8452 " s:NetrwRefresh: {{{2 8782 " s:NetrwRefresh: {{{2
8453 fun! s:NetrwRefresh(islocal,dirname) 8783 fun! s:NetrwRefresh(islocal,dirname)
8454 " call Dfunc("s:NetrwRefresh(islocal<".a:islocal.">,dirname=".a:dirname.") hide=".g:netrw_hide." sortdir=".g:netrw_sort_direction) 8784 " call Dfunc("s:NetrwRefresh(islocal<".a:islocal.">,dirname=".a:dirname.") g:netrw_hide=".g:netrw_hide." g:netrw_sort_direction=".g:netrw_sort_direction)
8455 " at the current time (Mar 19, 2007) all calls to NetrwRefresh() call NetrwBrowseChgDir() first. 8785 " at the current time (Mar 19, 2007) all calls to NetrwRefresh() call NetrwBrowseChgDir() first.
8456 setl ma noro 8786 setl ma noro
8457 " call Decho("setl ma noro",'~'.expand("<slnum>")) 8787 " call Decho("setl ma noro",'~'.expand("<slnum>"))
8458 " call Decho("clear buffer<".expand("%")."> with :%d",'~'.expand("<slnum>")) 8788 " call Decho("clear buffer<".expand("%")."> with :%d",'~'.expand("<slnum>"))
8459 let ykeep = @@ 8789 let ykeep = @@
8790 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
8791 if !exists("w:netrw_treetop")
8792 if exists("b:netrw_curdir")
8793 let w:netrw_treetop= b:netrw_curdir
8794 else
8795 let w:netrw_treetop= getcwd()
8796 endif
8797 endif
8798 NetrwKeepj call s:NetrwRefreshTreeDict(w:netrw_treetop)
8799 endif
8460 8800
8461 " save the cursor position before refresh. 8801 " save the cursor position before refresh.
8462 let screenposn = winsaveview() 8802 let screenposn = winsaveview()
8463 " call Decho("saving posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>")) 8803 " call Decho("saving posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>"))
8464 8804
8474 " restore position 8814 " restore position
8475 " call Decho("restoring posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>")) 8815 " call Decho("restoring posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>"))
8476 NetrwKeepj call winrestview(screenposn) 8816 NetrwKeepj call winrestview(screenposn)
8477 8817
8478 " restore file marks 8818 " restore file marks
8479 if exists("s:netrwmarkfilemtch_{bufnr('%')}") && s:netrwmarkfilemtch_{bufnr("%")} != "" 8819 if has("syntax") && exists("g:syntax_on") && g:syntax_on
8480 " call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/",'~'.expand("<slnum>")) 8820 if exists("s:netrwmarkfilemtch_{bufnr('%')}") && s:netrwmarkfilemtch_{bufnr("%")} != ""
8481 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/" 8821 " " call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/",'~'.expand("<slnum>"))
8482 else 8822 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/"
8483 " call Decho("2match none (bufnr(%)=".bufnr("%")."<".bufname("%").">)",'~'.expand("<slnum>")) 8823 else
8484 2match none 8824 " " call Decho("2match none (bufnr(%)=".bufnr("%")."<".bufname("%").">)",'~'.expand("<slnum>"))
8485 endif 8825 2match none
8826 endif
8827 endif
8486 8828
8487 " restore 8829 " restore
8488 let @@= ykeep 8830 let @@= ykeep
8489 " call Dret("s:NetrwRefresh") 8831 " call Dret("s:NetrwRefresh")
8490 endfun 8832 endfun
8655 8997
8656 " call Dret("s:NetrwSetTgt") 8998 " call Dret("s:NetrwSetTgt")
8657 endfun 8999 endfun
8658 9000
8659 " ===================================================================== 9001 " =====================================================================
8660 " s:NetrwSortStyle: change sorting style (name - time - size) and refresh display {{{2 9002 " s:NetrwSortStyle: change sorting style (name - time - size - exten) and refresh display {{{2
8661 fun! s:NetrwSortStyle(islocal) 9003 fun! s:NetrwSortStyle(islocal)
8662 " call Dfunc("s:NetrwSortStyle(islocal=".a:islocal.") netrw_sort_by<".g:netrw_sort_by.">") 9004 " call Dfunc("s:NetrwSortStyle(islocal=".a:islocal.") netrw_sort_by<".g:netrw_sort_by.">")
8663 NetrwKeepj call s:NetrwSaveWordPosn() 9005 NetrwKeepj call s:NetrwSaveWordPosn()
8664 let svpos= winsaveview() 9006 let svpos= winsaveview()
8665 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) 9007 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))
8819 " target directory browsing history 9161 " target directory browsing history
8820 if exists("g:netrw_dirhistmax") && g:netrw_dirhistmax > 0 9162 if exists("g:netrw_dirhistmax") && g:netrw_dirhistmax > 0
8821 " call Decho("installing history as easy targets (histmax=".g:netrw_dirhistmax.")",'~'.expand("<slnum>")) 9163 " call Decho("installing history as easy targets (histmax=".g:netrw_dirhistmax.")",'~'.expand("<slnum>"))
8822 let histcnt = 1 9164 let histcnt = 1
8823 while histcnt <= g:netrw_dirhistmax 9165 while histcnt <= g:netrw_dirhistmax
8824 let priority = g:netrw_dirhist_cnt + histcnt 9166 let priority = g:netrw_dirhistcnt + histcnt
8825 if exists("g:netrw_dirhist_{histcnt}") 9167 if exists("g:netrw_dirhist_{histcnt}")
8826 let histentry = g:netrw_dirhist_{histcnt} 9168 let histentry = g:netrw_dirhist_{histcnt}
8827 if has_key(tgtdict,histentry) 9169 if has_key(tgtdict,histentry)
8828 let histcnt = histcnt + 1 9170 let histcnt = histcnt + 1
8829 continue 9171 continue
8956 9298
8957 " display subtrees (if any) 9299 " display subtrees (if any)
8958 let depth= s:treedepthstring.a:depth 9300 let depth= s:treedepthstring.a:depth
8959 " call Decho("display subtrees with depth<".depth."> and current leaves",'~'.expand("<slnum>")) 9301 " call Decho("display subtrees with depth<".depth."> and current leaves",'~'.expand("<slnum>"))
8960 9302
9303 " implement g:netrw_hide for tree listings (uses g:netrw_list_hide)
9304 if g:netrw_hide == 1
9305 " hide given patterns
9306 let listhide= split(g:netrw_list_hide,',')
9307 " call Decho("listhide=".string(listhide))
9308 for pat in listhide
9309 call filter(w:netrw_treedict[dir],'v:val !~ "'.pat.'"')
9310 endfor
9311
9312 elseif g:netrw_hide == 2
9313 " show given patterns (only)
9314 let listhide= split(g:netrw_list_hide,',')
9315 " call Decho("listhide=".string(listhide))
9316 let entries=[]
9317 for entry in w:netrw_treedict[dir]
9318 for pat in listhide
9319 if entry =~ pat
9320 call add(entries,entry)
9321 break
9322 endif
9323 endfor
9324 endfor
9325 let w:netrw_treedict[dir]= entries
9326 endif
9327 if depth != ""
9328 " always remove "." and ".." entries when there's depth
9329 call filter(w:netrw_treedict[dir],'v:val !~ "\\.\\.$"')
9330 call filter(w:netrw_treedict[dir],'v:val !~ "\\.$"')
9331 endif
9332
8961 " call Decho("for every entry in w:netrw_treedict[".dir."]=".string(w:netrw_treedict[dir]),'~'.expand("<slnum>")) 9333 " call Decho("for every entry in w:netrw_treedict[".dir."]=".string(w:netrw_treedict[dir]),'~'.expand("<slnum>"))
8962 for entry in w:netrw_treedict[dir] 9334 for entry in w:netrw_treedict[dir]
8963 if dir =~ '/$' 9335 if dir =~ '/$'
8964 let direntry= substitute(dir.entry,'[@/]$','','e') 9336 let direntry= substitute(dir.entry,'[@/]$','','e')
8965 else 9337 else
8978 else 9350 else
8979 " call Decho("<".entry."> is not a key in treedict (no subtree)",'~'.expand("<slnum>")) 9351 " call Decho("<".entry."> is not a key in treedict (no subtree)",'~'.expand("<slnum>"))
8980 sil! NetrwKeepj call setline(line("$")+1,depth.entry) 9352 sil! NetrwKeepj call setline(line("$")+1,depth.entry)
8981 endif 9353 endif
8982 endfor 9354 endfor
9355 " call Decho("displaying: ".string(getline(w:netrw_bannercnt,'$')))
8983 9356
8984 " call Dret("NetrwTreeDisplay") 9357 " call Dret("NetrwTreeDisplay")
8985 endfun 9358 endfun
8986 9359
8987 " --------------------------------------------------------------------- 9360 " ---------------------------------------------------------------------
8988 " s:NetrwRefreshTreeDict: updates the contents information for a tree (w:netrw_treedict) {{{2 9361 " s:NetrwRefreshTreeDict: updates the contents information for a tree (w:netrw_treedict) {{{2
8989 fun! s:NetrwRefreshTreeDict(dir) 9362 fun! s:NetrwRefreshTreeDict(dir)
8990 " call Dfunc("s:NetrwRefreshTreeDict(dir<".a:dir.">)") 9363 " call Dfunc("s:NetrwRefreshTreeDict(dir<".a:dir.">)")
9364 if !exists("w:netrw_treedict")
9365 " call Dret("s:NetrwRefreshTreeDict : w:netrw_treedict doesn't exist")
9366 return
9367 endif
9368
8991 for entry in w:netrw_treedict[a:dir] 9369 for entry in w:netrw_treedict[a:dir]
8992 let direntry= substitute(a:dir.'/'.entry,'[@/]$','','e') 9370 let direntry= substitute(a:dir.'/'.entry,'[@/]$','','e')
8993 " call Decho("a:dir<".a:dir."> entry<".entry."> direntry<".direntry.">",'~'.expand("<slnum>")) 9371 " call Decho("a:dir<".a:dir."> entry<".entry."> direntry<".direntry.">",'~'.expand("<slnum>"))
8994 9372
8995 if entry =~ '/$' && has_key(w:netrw_treedict,direntry) 9373 if entry =~ '/$' && has_key(w:netrw_treedict,direntry)
9014 let liststar = s:NetrwGlob(direntry.'/','*',1) 9392 let liststar = s:NetrwGlob(direntry.'/','*',1)
9015 let listdotstar= s:NetrwGlob(direntry.'/','.*',1) 9393 let listdotstar= s:NetrwGlob(direntry.'/','.*',1)
9016 " call Decho("updating w:netrw_treedict[".direntry.']='.string(w:netrw_treedict[direntry]),'~'.expand("<slnum>")) 9394 " call Decho("updating w:netrw_treedict[".direntry.']='.string(w:netrw_treedict[direntry]),'~'.expand("<slnum>"))
9017 9395
9018 else 9396 else
9019 " call Decho('not updating w:netrw_treedict['.direntry.'] with entry<'.entry.'> (no subtree)',,'~'.expand("<slnum>")) 9397 " call Decho('not updating w:netrw_treedict['.string(direntry).'] with entry<'.string(entry).'> (no subtree)','~'.expand("<slnum>"))
9020 endif 9398 endif
9021 endfor 9399 endfor
9022 " call Dret("s:NetrwRefreshTreeDict") 9400 " call Dret("s:NetrwRefreshTreeDict")
9023 endfun 9401 endfun
9024 9402
9081 return 9459 return
9082 endif 9460 endif
9083 endfun 9461 endfun
9084 9462
9085 " --------------------------------------------------------------------- 9463 " ---------------------------------------------------------------------
9086 " s:NetrwTreePath: returns path to current file in tree listing {{{2 9464 " s:NetrwTreePath: returns path to current file/directory in tree listing {{{2
9087 " Normally, treetop is w:netrw_treetop, but a 9465 " Normally, treetop is w:netrw_treetop, but a
9088 " user of the function ( netrw#SetTreetop() ) 9466 " user of the function ( netrw#SetTreetop() )
9089 " wipes that out prior to calling this function 9467 " wipes that out prior to calling this function
9090 fun! s:NetrwTreePath(treetop) 9468 fun! s:NetrwTreePath(treetop)
9091 " call Dfunc("s:NetrwTreePath() line#".line(".")."<".getline(".").">") 9469 " call Dfunc("s:NetrwTreePath(treetop<".a:treetop.">) line#".line(".")."<".getline(".").">")
9470 if line(".") < w:netrw_bannercnt + 2
9471 let treedir= a:treetop
9472 if treedir !~ '/$'
9473 let treedir= treedir.'/'
9474 endif
9475 " call Dret("s:NetrwTreePath ".treedir." : line#".line(".")." ≤ ".(w:netrw_bannercnt+2))
9476 return treedir
9477 endif
9478
9092 let svpos = winsaveview() 9479 let svpos = winsaveview()
9093 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) 9480 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))
9094 let depth = substitute(getline('.'),'^\(\%('.s:treedepthstring.'\)*\)[^'.s:treedepthstring.'].\{-}$','\1','e') 9481 let depth = substitute(getline('.'),'^\(\%('.s:treedepthstring.'\)*\)[^'.s:treedepthstring.'].\{-}$','\1','e')
9095 " call Decho("depth<".depth."> 1st subst",'~'.expand("<slnum>")) 9482 " call Decho("depth<".depth."> 1st subst",'~'.expand("<slnum>"))
9096 let depth = substitute(depth,'^'.s:treedepthstring,'','') 9483 let depth = substitute(depth,'^'.s:treedepthstring,'','')
9117 let dirname= substitute(getline('.'),'^\('.s:treedepthstring.'\)*','','e') 9504 let dirname= substitute(getline('.'),'^\('.s:treedepthstring.'\)*','','e')
9118 let treedir= dirname.treedir 9505 let treedir= dirname.treedir
9119 let depth = substitute(depth,'^'.s:treedepthstring,'','') 9506 let depth = substitute(depth,'^'.s:treedepthstring,'','')
9120 " call Decho("constructing treedir<".treedir.">: dirname<".dirname."> while depth<".depth.">",'~'.expand("<slnum>")) 9507 " call Decho("constructing treedir<".treedir.">: dirname<".dirname."> while depth<".depth.">",'~'.expand("<slnum>"))
9121 endwhile 9508 endwhile
9509 " call Decho("treedir#1<".treedir.">",'~'.expand("<slnum>"))
9122 if a:treetop =~ '/$' 9510 if a:treetop =~ '/$'
9123 let treedir= a:treetop.treedir 9511 let treedir= a:treetop.treedir
9124 else 9512 else
9125 let treedir= a:treetop.'/'.treedir 9513 let treedir= a:treetop.'/'.treedir
9126 endif 9514 endif
9515 " call Decho("treedir#2<".treedir.">",'~'.expand("<slnum>"))
9127 let treedir= substitute(treedir,'//$','/','') 9516 let treedir= substitute(treedir,'//$','/','')
9517 " call Decho("treedir#3<".treedir.">",'~'.expand("<slnum>"))
9128 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))" 9518 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))"
9129 call winrestview(svpos) 9519 call winrestview(svpos)
9130 " call Dret("s:NetrwTreePath <".treedir.">") 9520 " call Dret("s:NetrwTreePath <".treedir.">")
9131 return treedir 9521 return treedir
9132 endfun 9522 endfun
9193 NetrwKeepj call histdel("/",-1) 9583 NetrwKeepj call histdel("/",-1)
9194 exe 'nno <buffer> <silent> w :call search(''^.\\|\s\s\zs\S'',''W'')'."\<cr>" 9584 exe 'nno <buffer> <silent> w :call search(''^.\\|\s\s\zs\S'',''W'')'."\<cr>"
9195 exe 'nno <buffer> <silent> b :call search(''^.\\|\s\s\zs\S'',''bW'')'."\<cr>" 9585 exe 'nno <buffer> <silent> b :call search(''^.\\|\s\s\zs\S'',''bW'')'."\<cr>"
9196 " call Decho("NetrwWideListing) setl noma nomod ro",'~'.expand("<slnum>")) 9586 " call Decho("NetrwWideListing) setl noma nomod ro",'~'.expand("<slnum>"))
9197 exe "setl ".g:netrw_bufsettings 9587 exe "setl ".g:netrw_bufsettings
9198 " call Decho("(NetrwWideListing) ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) 9588 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
9199 " call Dret("NetrwWideListing") 9589 " call Dret("NetrwWideListing")
9200 return 9590 return
9201 else 9591 else
9202 if hasmapto("w","n") 9592 if hasmapto("w","n")
9203 sil! nunmap <buffer> w 9593 sil! nunmap <buffer> w
9212 " --------------------------------------------------------------------- 9602 " ---------------------------------------------------------------------
9213 " s:PerformListing: {{{2 9603 " s:PerformListing: {{{2
9214 fun! s:PerformListing(islocal) 9604 fun! s:PerformListing(islocal)
9215 " call Dfunc("s:PerformListing(islocal=".a:islocal.")") 9605 " call Dfunc("s:PerformListing(islocal=".a:islocal.")")
9216 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol()." line($)=".line("$"),'~'.expand("<slnum>")) 9606 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol()." line($)=".line("$"),'~'.expand("<slnum>"))
9217 " call Decho("settings: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (enter)",'~'.expand("<slnum>")) 9607 " call Decho("settings: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (enter)"." ei<".&ei.">",'~'.expand("<slnum>"))
9608 sil! NetrwKeepj %d _
9609 " call DechoBuf(bufnr("%"))
9218 9610
9219 " set up syntax highlighting {{{3 9611 " set up syntax highlighting {{{3
9220 " call Decho("--set up syntax highlighting (ie. setl ft=netrw)",'~'.expand("<slnum>")) 9612 " call Decho("--set up syntax highlighting (ie. setl ft=netrw)",'~'.expand("<slnum>"))
9221 sil! setl ft=netrw 9613 sil! setl ft=netrw
9222 9614
9223 NetrwKeepj call s:NetrwSafeOptions() 9615 NetrwKeepj call s:NetrwOptionsSafe(a:islocal)
9224 setl noro ma 9616 setl noro ma
9225 " call Decho("setl noro ma bh=".&bh,'~'.expand("<slnum>")) 9617 " call Decho("setl noro ma bh=".&bh,'~'.expand("<slnum>"))
9226 9618
9227 " if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1 " Decho 9619 " if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1 " Decho
9228 " call Decho("(netrw) Processing your browsing request...",'~'.expand("<slnum>")) 9620 " call Decho("Processing your browsing request...",'~'.expand("<slnum>"))
9229 " endif " Decho 9621 " endif " Decho
9230 9622
9231 " call Decho('w:netrw_liststyle='.(exists("w:netrw_liststyle")? w:netrw_liststyle : 'n/a'),'~'.expand("<slnum>")) 9623 " call Decho('w:netrw_liststyle='.(exists("w:netrw_liststyle")? w:netrw_liststyle : 'n/a'),'~'.expand("<slnum>"))
9232 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") 9624 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict")
9233 " force a refresh for tree listings 9625 " force a refresh for tree listings
9267 let w:netrw_bannercnt= 1 9659 let w:netrw_bannercnt= 1
9268 endif 9660 endif
9269 " call Decho("w:netrw_bannercnt=".w:netrw_bannercnt." win#".winnr(),'~'.expand("<slnum>")) 9661 " call Decho("w:netrw_bannercnt=".w:netrw_bannercnt." win#".winnr(),'~'.expand("<slnum>"))
9270 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol()." line($)=".line("$"),'~'.expand("<slnum>")) 9662 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol()." line($)=".line("$"),'~'.expand("<slnum>"))
9271 9663
9664 " construct sortby string: [name|time|size|exten] [reversed]
9272 let sortby= g:netrw_sort_by 9665 let sortby= g:netrw_sort_by
9273 if g:netrw_sort_direction =~# "^r" 9666 if g:netrw_sort_direction =~# "^r"
9274 let sortby= sortby." reversed" 9667 let sortby= sortby." reversed"
9275 endif 9668 endif
9276 9669
9277 " Sorted by... {{{3 9670 " Sorted by... {{{3
9278 if g:netrw_banner 9671 if g:netrw_banner
9279 " call Decho("--handle specified sorting: g:netrw_sort_by<".g:netrw_sort_by.">",'~'.expand("<slnum>")) 9672 " call Decho("--handle specified sorting: g:netrw_sort_by<".g:netrw_sort_by.">",'~'.expand("<slnum>"))
9280 if g:netrw_sort_by =~# "^n" 9673 if g:netrw_sort_by =~# "^n"
9281 " call Decho("directories will be sorted by name",'~'.expand("<slnum>")) 9674 " call Decho("directories will be sorted by name",'~'.expand("<slnum>"))
9282 " sorted by name 9675 " sorted by name (also includes the sorting sequence in the banner)
9283 NetrwKeepj put ='\" Sorted by '.sortby 9676 NetrwKeepj put ='\" Sorted by '.sortby
9284 NetrwKeepj put ='\" Sort sequence: '.g:netrw_sort_sequence 9677 NetrwKeepj put ='\" Sort sequence: '.g:netrw_sort_sequence
9285 let w:netrw_bannercnt= w:netrw_bannercnt + 2 9678 let w:netrw_bannercnt= w:netrw_bannercnt + 2
9286 else 9679 else
9287 " call Decho("directories will be sorted by size or time",'~'.expand("<slnum>")) 9680 " call Decho("directories will be sorted by size or time",'~'.expand("<slnum>"))
9288 " sorted by size or date 9681 " sorted by time, size, exten
9289 NetrwKeepj put ='\" Sorted by '.sortby 9682 NetrwKeepj put ='\" Sorted by '.sortby
9290 let w:netrw_bannercnt= w:netrw_bannercnt + 1 9683 let w:netrw_bannercnt= w:netrw_bannercnt + 1
9291 endif 9684 endif
9292 exe "sil! NetrwKeepj ".w:netrw_bannercnt 9685 exe "sil! NetrwKeepj ".w:netrw_bannercnt
9293 " else " Decho 9686 " else " Decho
9294 " call Decho("g:netrw_banner=".g:netrw_banner.": banner ".(g:netrw_banner? "enabled" : "suppressed").": (line($)=".line("$")." byte2line(1)=".byte2line(1)." bannercnt=".w:netrw_bannercnt.")",'~'.expand("<slnum>")) 9687 " call Decho("g:netrw_banner=".g:netrw_banner.": banner ".(g:netrw_banner? "enabled" : "suppressed").": (line($)=".line("$")." byte2line(1)=".byte2line(1)." bannercnt=".w:netrw_bannercnt.")",'~'.expand("<slnum>"))
9295 endif 9688 endif
9296 9689
9297 " show copy/move target, if any 9690 " show copy/move target, if any {{{3
9298 if g:netrw_banner 9691 if g:netrw_banner
9299 if exists("s:netrwmftgt") && exists("s:netrwmftgt_islocal") 9692 if exists("s:netrwmftgt") && exists("s:netrwmftgt_islocal")
9300 " call Decho("--show copy/move target<".s:netrwmftgt.">",'~'.expand("<slnum>")) 9693 " call Decho("--show copy/move target<".s:netrwmftgt.">",'~'.expand("<slnum>"))
9301 NetrwKeepj put ='' 9694 NetrwKeepj put =''
9302 if s:netrwmftgt_islocal 9695 if s:netrwmftgt_islocal
9311 exe "sil! NetrwKeepj ".w:netrw_bannercnt 9704 exe "sil! NetrwKeepj ".w:netrw_bannercnt
9312 endif 9705 endif
9313 9706
9314 " Hiding... -or- Showing... {{{3 9707 " Hiding... -or- Showing... {{{3
9315 if g:netrw_banner 9708 if g:netrw_banner
9316 " call Decho("--handle hiding/showing (g:netrw_hide=".g:netrw_list_hide." g:netrw_list_hide<".g:netrw_list_hide.">)",'~'.expand("<slnum>")) 9709 " call Decho("--handle hiding/showing (g:netrw_hide=".g:netrw_hide." g:netrw_list_hide<".g:netrw_list_hide.">)",'~'.expand("<slnum>"))
9317 if g:netrw_list_hide != "" && g:netrw_hide 9710 if g:netrw_list_hide != "" && g:netrw_hide
9318 if g:netrw_hide == 1 9711 if g:netrw_hide == 1
9319 NetrwKeepj put ='\" Hiding: '.g:netrw_list_hide 9712 NetrwKeepj put ='\" Hiding: '.g:netrw_list_hide
9320 else 9713 else
9321 NetrwKeepj put ='\" Showing: '.g:netrw_list_hide 9714 NetrwKeepj put ='\" Showing: '.g:netrw_list_hide
9374 if !g:netrw_banner || line("$") >= w:netrw_bannercnt 9767 if !g:netrw_banner || line("$") >= w:netrw_bannercnt
9375 " call Decho("manipulate directory listing (sort) : g:netrw_sort_by<".g:netrw_sort_by.">",'~'.expand("<slnum>")) 9768 " call Decho("manipulate directory listing (sort) : g:netrw_sort_by<".g:netrw_sort_by.">",'~'.expand("<slnum>"))
9376 9769
9377 if g:netrw_sort_by =~# "^n" 9770 if g:netrw_sort_by =~# "^n"
9378 " sort by name 9771 " sort by name
9772 " call Decho("sort by name",'~'.expand("<slnum>"))
9379 NetrwKeepj call s:NetrwSetSort() 9773 NetrwKeepj call s:NetrwSetSort()
9380 9774
9381 if !g:netrw_banner || w:netrw_bannercnt < line("$") 9775 if !g:netrw_banner || w:netrw_bannercnt < line("$")
9382 " call Decho("g:netrw_sort_direction=".g:netrw_sort_direction." (bannercnt=".w:netrw_bannercnt.")",'~'.expand("<slnum>")) 9776 " call Decho("g:netrw_sort_direction=".g:netrw_sort_direction." (bannercnt=".w:netrw_bannercnt.")",'~'.expand("<slnum>"))
9383 if g:netrw_sort_direction =~# 'n' 9777 if g:netrw_sort_direction =~# 'n'
9384 " normal direction sorting 9778 " name: sort by name of file
9385 exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$sort'.' '.g:netrw_sort_options 9779 exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$sort'.' '.g:netrw_sort_options
9386 else 9780 else
9387 " reverse direction sorting 9781 " reverse direction sorting
9388 exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options 9782 exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options
9389 endif 9783 endif
9392 " call Decho("remove priority pattern prefix",'~'.expand("<slnum>")) 9786 " call Decho("remove priority pattern prefix",'~'.expand("<slnum>"))
9393 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$s/^\d\{3}'.g:netrw_sepchr.'//e' 9787 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$s/^\d\{3}'.g:netrw_sepchr.'//e'
9394 NetrwKeepj call histdel("/",-1) 9788 NetrwKeepj call histdel("/",-1)
9395 9789
9396 elseif g:netrw_sort_by =~# "^ext" 9790 elseif g:netrw_sort_by =~# "^ext"
9397 " sort by extension 9791 " exten: sort by extension
9792 " The histdel(...,-1) calls remove the last search from the search history
9793 " call Decho("sort by extension",'~'.expand("<slnum>"))
9398 exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$g+/+s/^/001'.g:netrw_sepchr.'/' 9794 exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$g+/+s/^/001'.g:netrw_sepchr.'/'
9399 NetrwKeepj call histdel("/",-1) 9795 NetrwKeepj call histdel("/",-1)
9400 exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$v+[./]+s/^/002'.g:netrw_sepchr.'/' 9796 exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$v+[./]+s/^/002'.g:netrw_sepchr.'/'
9401 NetrwKeepj call histdel("/",-1) 9797 NetrwKeepj call histdel("/",-1)
9402 exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$v+['.g:netrw_sepchr.'/]+s/^\(.*\.\)\(.\{-\}\)$/\2'.g:netrw_sepchr.'&/e' 9798 exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$v+['.g:netrw_sepchr.'/]+s/^\(.*\.\)\(.\{-\}\)$/\2'.g:netrw_sepchr.'&/e'
9448 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (internal#3)",'~'.expand("<slnum>")) 9844 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (internal#3)",'~'.expand("<slnum>"))
9449 9845
9450 " resolve symbolic links if local and (thin or tree) 9846 " resolve symbolic links if local and (thin or tree)
9451 if a:islocal && (w:netrw_liststyle == s:THINLIST || (exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST)) 9847 if a:islocal && (w:netrw_liststyle == s:THINLIST || (exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST))
9452 " call Decho("--resolve symbolic links if local and thin|tree",'~'.expand("<slnum>")) 9848 " call Decho("--resolve symbolic links if local and thin|tree",'~'.expand("<slnum>"))
9453 g/@$/call s:ShowLink() 9849 sil! g/@$/call s:ShowLink()
9454 endif 9850 endif
9455 9851
9456 if exists("w:netrw_bannercnt") && (line("$") >= w:netrw_bannercnt || !g:netrw_banner) 9852 if exists("w:netrw_bannercnt") && (line("$") >= w:netrw_bannercnt || !g:netrw_banner)
9457 " place cursor on the top-left corner of the file listing 9853 " place cursor on the top-left corner of the file listing
9458 " call Decho("--place cursor on top-left corner of file listing",'~'.expand("<slnum>")) 9854 " call Decho("--place cursor on top-left corner of file listing",'~'.expand("<slnum>"))
9473 " save certain window-oriented variables into buffer-oriented variables {{{3 9869 " save certain window-oriented variables into buffer-oriented variables {{{3
9474 " call Decho("--save some window-oriented variables into buffer oriented variables",'~'.expand("<slnum>")) 9870 " call Decho("--save some window-oriented variables into buffer oriented variables",'~'.expand("<slnum>"))
9475 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (internal#4)",'~'.expand("<slnum>")) 9871 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (internal#4)",'~'.expand("<slnum>"))
9476 NetrwKeepj call s:SetBufWinVars() 9872 NetrwKeepj call s:SetBufWinVars()
9477 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (internal#5)",'~'.expand("<slnum>")) 9873 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (internal#5)",'~'.expand("<slnum>"))
9478 NetrwKeepj call s:NetrwOptionRestore("w:") 9874 NetrwKeepj call s:NetrwOptionsRestore("w:")
9479 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (internal#6)",'~'.expand("<slnum>")) 9875 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (internal#6)",'~'.expand("<slnum>"))
9480 9876
9481 " set display to netrw display settings 9877 " set display to netrw display settings
9482 " call Decho("--set display to netrw display settings (".g:netrw_bufsettings.")",'~'.expand("<slnum>")) 9878 " call Decho("--set display to netrw display settings (".g:netrw_bufsettings.")",'~'.expand("<slnum>"))
9483 exe "setl ".g:netrw_bufsettings 9879 exe "setl ".g:netrw_bufsettings
9484 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (internal#7)",'~'.expand("<slnum>")) 9880 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (internal#7)",'~'.expand("<slnum>"))
9485 if g:netrw_liststyle == s:LONGLIST 9881 if g:netrw_liststyle == s:LONGLIST
9486 " call Decho("exe setl ts=".(g:netrw_maxfilenamelen+1),'~'.expand("<slnum>")) 9882 " call Decho("exe setl ts=".(g:netrw_maxfilenamelen+1),'~'.expand("<slnum>"))
9487 exe "setl ts=".(g:netrw_maxfilenamelen+1) 9883 exe "setl ts=".(g:netrw_maxfilenamelen+1)
9488 endif 9884 endif
9885 " call DechoBuf(bufnr("%"))
9489 9886
9490 if exists("s:treecurpos") 9887 if exists("s:treecurpos")
9491 " call Decho("s:treecurpos exists; restore posn",'~'.expand("<slnum>")) 9888 " call Decho("s:treecurpos exists; restore posn",'~'.expand("<slnum>"))
9492 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (internal#8)",'~'.expand("<slnum>")) 9889 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (internal#8)",'~'.expand("<slnum>"))
9493 " call Decho("restoring posn to s:treecurpos<".string(s:treecurpos).">",'~'.expand("<slnum>")) 9890 " call Decho("restoring posn to s:treecurpos<".string(s:treecurpos).">",'~'.expand("<slnum>"))
9541 redraw 9938 redraw
9542 9939
9543 " call Dret("SetupNetrwStatusLine : stl=".&stl) 9940 " call Dret("SetupNetrwStatusLine : stl=".&stl)
9544 endfun 9941 endfun
9545 9942
9546 " --------------------------------------------------------------------- 9943 " =========================================
9547 " Remote Directory Browsing Support: {{{1 9944 " Remote Directory Browsing Support: {{{1
9548 " =========================================== 9945 " =========================================
9549 9946
9550 " --------------------------------------------------------------------- 9947 " ---------------------------------------------------------------------
9551 " s:NetrwRemoteFtpCmd: unfortunately, not all ftp servers honor options for ls {{{2 9948 " s:NetrwRemoteFtpCmd: unfortunately, not all ftp servers honor options for ls {{{2
9552 " This function assumes that a long listing will be received. Size, time, 9949 " This function assumes that a long listing will be received. Size, time,
9553 " and reverse sorts will be requested of the server but not otherwise 9950 " and reverse sorts will be requested of the server but not otherwise
9712 if !executable("ftp") 10109 if !executable("ftp")
9713 " call Decho("ftp is not executable",'~'.expand("<slnum>")) 10110 " call Decho("ftp is not executable",'~'.expand("<slnum>"))
9714 if !exists("g:netrw_quiet") 10111 if !exists("g:netrw_quiet")
9715 call netrw#ErrorMsg(s:ERROR,"this system doesn't support remote directory listing via ftp",18) 10112 call netrw#ErrorMsg(s:ERROR,"this system doesn't support remote directory listing via ftp",18)
9716 endif 10113 endif
9717 call s:NetrwOptionRestore("w:") 10114 call s:NetrwOptionsRestore("w:")
9718 " call Dret("s:NetrwRemoteListing -1") 10115 " call Dret("s:NetrwRemoteListing -1")
9719 return -1 10116 return -1
9720 endif 10117 endif
9721 10118
9722 elseif !exists("g:netrw_list_cmd") || g:netrw_list_cmd == '' 10119 elseif !exists("g:netrw_list_cmd") || g:netrw_list_cmd == ''
9727 else 10124 else
9728 NetrwKeepj call netrw#ErrorMsg(s:ERROR,"this system doesn't support remote directory listing via ".g:netrw_list_cmd,19) 10125 NetrwKeepj call netrw#ErrorMsg(s:ERROR,"this system doesn't support remote directory listing via ".g:netrw_list_cmd,19)
9729 endif 10126 endif
9730 endif 10127 endif
9731 10128
9732 NetrwKeepj call s:NetrwOptionRestore("w:") 10129 NetrwKeepj call s:NetrwOptionsRestore("w:")
9733 " call Dret("s:NetrwRemoteListing -1") 10130 " call Dret("s:NetrwRemoteListing -1")
9734 return -1 10131 return -1
9735 endif " (remote handling sanity check) 10132 endif " (remote handling sanity check)
9736 " call Decho("passed remote listing sanity checks",'~'.expand("<slnum>")) 10133 " call Decho("passed remote listing sanity checks",'~'.expand("<slnum>"))
9737 10134
9760 if exists("w:netrw_bannercnt") 10157 if exists("w:netrw_bannercnt")
9761 setl ma 10158 setl ma
9762 exe w:netrw_bannercnt.",$d _" 10159 exe w:netrw_bannercnt.",$d _"
9763 setl noma 10160 setl noma
9764 endif 10161 endif
9765 NetrwKeepj call s:NetrwOptionRestore("w:") 10162 NetrwKeepj call s:NetrwOptionsRestore("w:")
9766 call netrw#ErrorMsg(s:WARNING,mesg,96) 10163 call netrw#ErrorMsg(s:WARNING,mesg,96)
9767 " call Dret("s:NetrwRemoteListing : -1") 10164 " call Dret("s:NetrwRemoteListing : -1")
9768 return -1 10165 return -1
9769 endif 10166 endif
9770 10167
10003 endif 10400 endif
10004 " call Decho("call system(".netrw_rm_cmd.")",'~'.expand("<slnum>")) 10401 " call Decho("call system(".netrw_rm_cmd.")",'~'.expand("<slnum>"))
10005 let ret= system(netrw_rm_cmd) 10402 let ret= system(netrw_rm_cmd)
10006 if v:shell_error != 0 10403 if v:shell_error != 0
10007 if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && !g:netrw_keepdir 10404 if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && !g:netrw_keepdir
10008 call netrw#ErrorMsg(s:ERROR,"remove failed; perhaps due to vim's current directory<".getcwd()."> not matching netrw's (".b:netrw_curdir.") (see :help netrw-c)",102) 10405 call netrw#ErrorMsg(s:ERROR,"remove failed; perhaps due to vim's current directory<".getcwd()."> not matching netrw's (".b:netrw_curdir.") (see :help netrw-cd)",102)
10009 else 10406 else
10010 call netrw#ErrorMsg(s:WARNING,"cmd<".netrw_rm_cmd."> failed",60) 10407 call netrw#ErrorMsg(s:WARNING,"cmd<".netrw_rm_cmd."> failed",60)
10011 endif 10408 endif
10012 elseif ret != 0 10409 elseif ret != 0
10013 call netrw#ErrorMsg(s:WARNING,"cmd<".netrw_rm_cmd."> failed",60) 10410 call netrw#ErrorMsg(s:WARNING,"cmd<".netrw_rm_cmd."> failed",60)
10144 NetrwKeepj call winrestview(svpos) 10541 NetrwKeepj call winrestview(svpos)
10145 10542
10146 " call Dret("NetrwRemoteRename") 10543 " call Dret("NetrwRemoteRename")
10147 endfun 10544 endfun
10148 10545
10149 " --------------------------------------------------------------------- 10546 " ==========================================
10150 " Local Directory Browsing Support: {{{1 10547 " Local Directory Browsing Support: {{{1
10151 " ========================================== 10548 " ==========================================
10152 10549
10153 " --------------------------------------------------------------------- 10550 " ---------------------------------------------------------------------
10154 " netrw#FileUrlRead: handles reading file://* files {{{2 10551 " netrw#FileUrlEdit: handles editing file://* files {{{2
10155 " Should accept: file://localhost/etc/fstab 10552 " Should accept: file://localhost/etc/fstab
10156 " file:///etc/fstab 10553 " file:///etc/fstab
10157 " file:///c:/WINDOWS/clock.avi 10554 " file:///c:/WINDOWS/clock.avi
10158 " file:///c|/WINDOWS/clock.avi 10555 " file:///c|/WINDOWS/clock.avi
10159 " file://localhost/c:/WINDOWS/clock.avi 10556 " file://localhost/c:/WINDOWS/clock.avi
10160 " file://localhost/c|/WINDOWS/clock.avi 10557 " file://localhost/c|/WINDOWS/clock.avi
10161 " file://c:/foo.txt 10558 " file://c:/foo.txt
10162 " file:///c:/foo.txt 10559 " file:///c:/foo.txt
10163 " and %XX (where X is [0-9a-fA-F] is converted into a character with the given hexadecimal value 10560 " and %XX (where X is [0-9a-fA-F] is converted into a character with the given hexadecimal value
10164 fun! netrw#FileUrlRead(fname) 10561 fun! netrw#FileUrlEdit(fname)
10165 " call Dfunc("netrw#FileUrlRead(fname<".a:fname.">)") 10562 " call Dfunc("netrw#FileUrlEdit(fname<".a:fname.">)")
10166 let fname = a:fname 10563 let fname = a:fname
10167 if fname =~ '^file://localhost/' 10564 if fname =~ '^file://localhost/'
10168 " call Decho('converting file://localhost/ -to- file:///','~'.expand("<slnum>")) 10565 " call Decho('converting file://localhost/ -to- file:///','~'.expand("<slnum>"))
10169 let fname= substitute(fname,'^file://localhost/','file:///','') 10566 let fname= substitute(fname,'^file://localhost/','file:///','')
10170 " call Decho("fname<".fname.">",'~'.expand("<slnum>")) 10567 " call Decho("fname<".fname.">",'~'.expand("<slnum>"))
10184 if plainfname =~ '^/\+\a:' 10581 if plainfname =~ '^/\+\a:'
10185 " call Decho('removing leading "/"s','~'.expand("<slnum>")) 10582 " call Decho('removing leading "/"s','~'.expand("<slnum>"))
10186 let plainfname= substitute(plainfname,'^/\+\(\a:\)','\1','') 10583 let plainfname= substitute(plainfname,'^/\+\(\a:\)','\1','')
10187 endif 10584 endif
10188 endif 10585 endif
10586
10189 " call Decho("fname2396<".fname2396.">",'~'.expand("<slnum>")) 10587 " call Decho("fname2396<".fname2396.">",'~'.expand("<slnum>"))
10190 " call Decho("plainfname<".plainfname.">",'~'.expand("<slnum>")) 10588 " call Decho("plainfname<".plainfname.">",'~'.expand("<slnum>"))
10191 exe "sil doau BufReadPre ".fname2396e 10589 exe "sil doau BufReadPre ".fname2396e
10192 exe 'NetrwKeepj r '.plainfname 10590 exe 'NetrwKeepj keepalt edit '.plainfname
10193 exe 'sil! bdelete '.plainfname 10591 exe 'sil! NetrwKeepj keepalt bdelete '.fnameescape(a:fname)
10194 exe 'keepalt file! '.plainfname 10592
10195 NetrwKeepj 1d
10196 " call Decho("setl nomod",'~'.expand("<slnum>"))
10197 setl nomod
10198 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) 10593 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
10199 " call Dret("netrw#FileUrlRead") 10594 " call Dret("netrw#FileUrlEdit")
10200 exe "sil doau BufReadPost ".fname2396e 10595 exe "sil doau BufReadPost ".fname2396e
10201 endfun 10596 endfun
10202 10597
10203 " --------------------------------------------------------------------- 10598 " ---------------------------------------------------------------------
10204 " netrw#LocalBrowseCheck: {{{2 10599 " netrw#LocalBrowseCheck: {{{2
10205 fun! netrw#LocalBrowseCheck(dirname) 10600 fun! netrw#LocalBrowseCheck(dirname)
10206 " This function is called by netrwPlugin.vim's s:LocalBrowse(), s:NetrwRexplore(), and by <cr> when atop listed file/directory 10601 " This function is called by netrwPlugin.vim's s:LocalBrowse(), s:NetrwRexplore(),
10207 " unfortunate interaction -- split window debugging can't be 10602 " and by <cr> when atop a listed file/directory (via a buffer-local map)
10208 " used here, must use D-echoRemOn or D-echoTabOn -- the BufEnter 10603 "
10209 " event triggers another call to LocalBrowseCheck() when attempts 10604 " unfortunate interaction -- split window debugging can't be used here, must use
10210 " to write to the DBG buffer are made. 10605 " D-echoRemOn or D-echoTabOn as the BufEnter event triggers
10606 " another call to LocalBrowseCheck() when attempts to write
10607 " to the DBG buffer are made.
10608 "
10211 " The &ft == "netrw" test was installed because the BufEnter event 10609 " The &ft == "netrw" test was installed because the BufEnter event
10212 " would hit when re-entering netrw windows, creating unexpected 10610 " would hit when re-entering netrw windows, creating unexpected
10213 " refreshes (and would do so in the middle of NetrwSaveOptions(), too) 10611 " refreshes (and would do so in the middle of NetrwSaveOptions(), too)
10214 " call Dfunc("netrw#LocalBrowseCheck(dirname<".a:dirname.">") 10612 " call Dfunc("netrw#LocalBrowseCheck(dirname<".a:dirname.">)")
10215 " call Decho("isdir<".a:dirname."> =".isdirectory(s:NetrwFile(a:dirname)).((exists("s:treeforceredraw")? " treeforceredraw" : "")).'~'.expand("<slnum>")) 10613 " call Decho("isdir<".a:dirname."> =".isdirectory(s:NetrwFile(a:dirname)).((exists("s:treeforceredraw")? " treeforceredraw" : "")).'~'.expand("<slnum>"))
10216 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>")) 10614 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>"))
10217 " call Dredir("ls!","ls!") 10615 " call Dredir("ls!","netrw#LocalBrowseCheck")
10218 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>")) 10616 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>"))
10219 " call Decho("current buffer#".bufnr("%")."<".bufname("%")."> ft=".&ft,'~'.expand("<slnum>")) 10617 " call Decho("current buffer#".bufnr("%")."<".bufname("%")."> ft=".&ft,'~'.expand("<slnum>"))
10220 10618
10221 let ykeep= @@ 10619 let ykeep= @@
10222 if isdirectory(s:NetrwFile(a:dirname)) 10620 if isdirectory(s:NetrwFile(a:dirname))
10239 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>")) 10637 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>"))
10240 " call Dret("netrw#LocalBrowseCheck") 10638 " call Dret("netrw#LocalBrowseCheck")
10241 return 10639 return
10242 endif 10640 endif
10243 10641
10244 " following code wipes out currently unused netrw buffers 10642 " The following code wipes out currently unused netrw buffers
10245 " IF g:netrw_fastbrowse is zero (ie. slow browsing selected) 10643 " IF g:netrw_fastbrowse is zero (ie. slow browsing selected)
10246 " AND IF the listing style is not a tree listing 10644 " AND IF the listing style is not a tree listing
10247 if exists("g:netrw_fastbrowse") && g:netrw_fastbrowse == 0 && g:netrw_liststyle != s:TREELIST 10645 if exists("g:netrw_fastbrowse") && g:netrw_fastbrowse == 0 && g:netrw_liststyle != s:TREELIST
10248 " call Decho("wiping out currently unused netrw buffers",'~'.expand("<slnum>")) 10646 " call Decho("wiping out currently unused netrw buffers",'~'.expand("<slnum>"))
10249 let ibuf = 1 10647 let ibuf = 1
10291 let buftablist = [] 10689 let buftablist = []
10292 let ykeep = @@ 10690 let ykeep = @@
10293 while itab <= tabpagenr("$") 10691 while itab <= tabpagenr("$")
10294 let buftablist = buftablist + tabpagebuflist() 10692 let buftablist = buftablist + tabpagebuflist()
10295 let itab = itab + 1 10693 let itab = itab + 1
10296 tabn 10694 sil! tabn
10297 endwhile 10695 endwhile
10298 " call Decho("buftablist".string(buftablist),'~'.expand("<slnum>")) 10696 " call Decho("buftablist".string(buftablist),'~'.expand("<slnum>"))
10299 " call Decho("s:netrw_browselist<".(exists("s:netrw_browselist")? string(s:netrw_browselist) : "").">",'~'.expand("<slnum>")) 10697 " call Decho("s:netrw_browselist<".(exists("s:netrw_browselist")? string(s:netrw_browselist) : "").">",'~'.expand("<slnum>"))
10300 " GO through all buffers on netrw_browselist (ie. just local-netrw buffers): 10698 " GO through all buffers on netrw_browselist (ie. just local-netrw buffers):
10301 " | refresh any netrw window 10699 " | refresh any netrw window
10302 " | wipe out any non-displaying netrw buffer 10700 " | wipe out any non-displaying netrw buffer
10303 let curwin = winnr() 10701 let curwinid = win_getid(winnr())
10304 let ibl = 0 10702 let ibl = 0
10305 for ibuf in s:netrw_browselist 10703 for ibuf in s:netrw_browselist
10306 " call Decho("bufwinnr(".ibuf.") index(buftablist,".ibuf.")=".index(buftablist,ibuf),'~'.expand("<slnum>")) 10704 " call Decho("bufwinnr(".ibuf.") index(buftablist,".ibuf.")=".index(buftablist,ibuf),'~'.expand("<slnum>"))
10307 if bufwinnr(ibuf) == -1 && index(buftablist,ibuf) == -1 10705 if bufwinnr(ibuf) == -1 && index(buftablist,ibuf) == -1
10308 " wipe out any non-displaying netrw buffer 10706 " wipe out any non-displaying netrw buffer
10707 " (ibuf not shown in a current window AND
10708 " ibuf not in any tab)
10309 " call Decho("wiping buf#".ibuf,"<".bufname(ibuf).">",'~'.expand("<slnum>")) 10709 " call Decho("wiping buf#".ibuf,"<".bufname(ibuf).">",'~'.expand("<slnum>"))
10310 exe "sil! keepj bd ".fnameescape(ibuf) 10710 exe "sil! keepj bd ".fnameescape(ibuf)
10311 call remove(s:netrw_browselist,ibl) 10711 call remove(s:netrw_browselist,ibl)
10312 " call Decho("browselist=".string(s:netrw_browselist),'~'.expand("<slnum>")) 10712 " call Decho("browselist=".string(s:netrw_browselist),'~'.expand("<slnum>"))
10313 continue 10713 continue
10327 NetrwKeepj call s:NetrwRefresh(1,s:NetrwBrowseChgDir(1,'./')) 10727 NetrwKeepj call s:NetrwRefresh(1,s:NetrwBrowseChgDir(1,'./'))
10328 endif 10728 endif
10329 let ibl= ibl + 1 10729 let ibl= ibl + 1
10330 " call Decho("bottom of s:netrw_browselist for loop: ibl=".ibl,'~'.expand("<slnum>")) 10730 " call Decho("bottom of s:netrw_browselist for loop: ibl=".ibl,'~'.expand("<slnum>"))
10331 endfor 10731 endfor
10332 " call Decho("restore window: exe ".curwin."wincmd w",'~'.expand("<slnum>")) 10732 " call Decho("restore window: win_gotoid(".curwinid.")")
10333 exe curwin."wincmd w" 10733 call win_gotoid(curwinid)
10334 let @@= ykeep 10734 let @@= ykeep
10335 10735
10336 " call Dret("s:LocalBrowseRefresh") 10736 " call Dret("s:LocalBrowseRefresh")
10337 endfun 10737 endfun
10338 10738
10353 " =1: autocmds installed, but ignore next FocusGained event to avoid initial double-refresh of listing. 10753 " =1: autocmds installed, but ignore next FocusGained event to avoid initial double-refresh of listing.
10354 " BufEnter may be first event, then a FocusGained event. Ignore the first FocusGained event. 10754 " BufEnter may be first event, then a FocusGained event. Ignore the first FocusGained event.
10355 " If :Explore used: it sets s:netrw_events to 2, so no FocusGained events are ignored. 10755 " If :Explore used: it sets s:netrw_events to 2, so no FocusGained events are ignored.
10356 " =2: autocmds installed (doesn't ignore any FocusGained events) 10756 " =2: autocmds installed (doesn't ignore any FocusGained events)
10357 fun! s:LocalFastBrowser() 10757 fun! s:LocalFastBrowser()
10358 " call Dfunc("LocalFastBrowser() g:netrw_fastbrowse=".g:netrw_fastbrowse) 10758 " call Dfunc("s:LocalFastBrowser() g:netrw_fastbrowse=".g:netrw_fastbrowse)
10359 " call Decho("s:netrw_events ".(exists("s:netrw_events")? "exists" : 'n/a'),'~'.expand("<slnum>")) 10759 " call Decho("s:netrw_events ".(exists("s:netrw_events")? "exists" : 'n/a'),'~'.expand("<slnum>"))
10360 " call Decho("autocmd: ShellCmdPost ".(exists("#ShellCmdPost")? "installed" : "not installed"),'~'.expand("<slnum>")) 10760 " call Decho("autocmd: ShellCmdPost ".(exists("#ShellCmdPost")? "already installed" : "not installed"),'~'.expand("<slnum>"))
10361 " call Decho("autocmd: FocusGained ".(exists("#FocusGained")? "installed" : "not installed"),'~'.expand("<slnum>")) 10761 " call Decho("autocmd: FocusGained ".(exists("#FocusGained")? "already installed" : "not installed"),'~'.expand("<slnum>"))
10362 10762
10363 " initialize browselist, a list of buffer numbers that the local browser has used 10763 " initialize browselist, a list of buffer numbers that the local browser has used
10364 if !exists("s:netrw_browselist") 10764 if !exists("s:netrw_browselist")
10365 " call Decho("initialize s:netrw_browselist",'~'.expand("<slnum>")) 10765 " call Decho("initialize s:netrw_browselist",'~'.expand("<slnum>"))
10366 let s:netrw_browselist= [] 10766 let s:netrw_browselist= []
10401 au! 10801 au!
10402 augroup END 10802 augroup END
10403 augroup! AuNetrwEvent 10803 augroup! AuNetrwEvent
10404 endif 10804 endif
10405 10805
10406 " call Dret("LocalFastBrowser : browselist<".string(s:netrw_browselist).">") 10806 " call Dret("s:LocalFastBrowser : browselist<".string(s:netrw_browselist).">")
10407 endfun 10807 endfun
10408 10808
10409 " --------------------------------------------------------------------- 10809 " ---------------------------------------------------------------------
10410 " s:LocalListing: does the job of "ls" for local directories {{{2 10810 " s:LocalListing: does the job of "ls" for local directories {{{2
10411 fun! s:LocalListing() 10811 fun! s:LocalListing()
10447 " call Decho("g:netrw_banner=".g:netrw_banner.": banner ".(g:netrw_banner? "enabled" : "suppressed").": (line($)=".line("$")." byte2line(1)=".byte2line(1)." bannercnt=".w:netrw_bannercnt.")",'~'.expand("<slnum>")) 10847 " call Decho("g:netrw_banner=".g:netrw_banner.": banner ".(g:netrw_banner? "enabled" : "suppressed").": (line($)=".line("$")." byte2line(1)=".byte2line(1)." bannercnt=".w:netrw_bannercnt.")",'~'.expand("<slnum>"))
10448 10848
10449 for filename in filelist 10849 for filename in filelist
10450 " call Decho(" ",'~'.expand("<slnum>")) 10850 " call Decho(" ",'~'.expand("<slnum>"))
10451 " call Decho("for filename in filelist: filename<".filename.">",'~'.expand("<slnum>")) 10851 " call Decho("for filename in filelist: filename<".filename.">",'~'.expand("<slnum>"))
10852 " call DechoBuf(bufnr("%"),"COMBAK#1")
10452 10853
10453 if getftype(filename) == "link" 10854 if getftype(filename) == "link"
10454 " indicate a symbolic link 10855 " indicate a symbolic link
10455 " call Decho("indicate <".filename."> is a symbolic link with trailing @",'~'.expand("<slnum>")) 10856 " call Decho("indicate <".filename."> is a symbolic link with trailing @",'~'.expand("<slnum>"))
10456 let pfile= filename."@" 10857 let pfile= filename."@"
10507 if w:netrw_liststyle == s:LONGLIST 10908 if w:netrw_liststyle == s:LONGLIST
10508 let sz = getfsize(filename) 10909 let sz = getfsize(filename)
10509 if g:netrw_sizestyle =~# "[hH]" 10910 if g:netrw_sizestyle =~# "[hH]"
10510 let sz= s:NetrwHumanReadable(sz) 10911 let sz= s:NetrwHumanReadable(sz)
10511 endif 10912 endif
10512 let fsz = strpart(" ",1,15-strlen(sz)).sz 10913 let fsz = strpart(" ",1,15-strlen(sz)).sz
10513 let pfile= pfile."\t".fsz." ".strftime(g:netrw_timefmt,getftime(filename)) 10914 let longfile= printf("%-".(g:netrw_maxfilenamelen+1)."s",pfile)
10915 let pfile = longfile.fsz." ".strftime(g:netrw_timefmt,getftime(filename))
10514 " call Decho("longlist support: sz=".sz." fsz=".fsz,'~'.expand("<slnum>")) 10916 " call Decho("longlist support: sz=".sz." fsz=".fsz,'~'.expand("<slnum>"))
10515 endif 10917 endif
10516 10918
10517 if g:netrw_sort_by =~# "^t" 10919 if g:netrw_sort_by =~# "^t"
10518 " sort by time (handles time up to 1 quintillion seconds, US) 10920 " sort by time (handles time up to 1 quintillion seconds, US)
10538 else 10940 else
10539 " sort by name 10941 " sort by name
10540 " call Decho("exe NetrwKeepj put ='".pfile."'",'~'.expand("<slnum>")) 10942 " call Decho("exe NetrwKeepj put ='".pfile."'",'~'.expand("<slnum>"))
10541 sil! NetrwKeepj put=pfile 10943 sil! NetrwKeepj put=pfile
10542 endif 10944 endif
10945 " call DechoBuf(bufnr("%"),"COMBAK#2")
10543 endfor 10946 endfor
10544 10947
10545 " cleanup any windows mess at end-of-line 10948 " cleanup any windows mess at end-of-line
10546 sil! NetrwKeepj g/^$/d 10949 sil! NetrwKeepj g/^$/d
10547 sil! NetrwKeepj %s/\r$//e 10950 sil! NetrwKeepj %s/\r$//e
10784 endif 11187 endif
10785 endif 11188 endif
10786 let rmfile= substitute(rmfile,'[\/]$','','e') 11189 let rmfile= substitute(rmfile,'[\/]$','','e')
10787 11190
10788 if all || ok =~# 'y\%[es]' || ok == "" 11191 if all || ok =~# 'y\%[es]' || ok == ""
10789 if v:version < 704 || !has("patch1109") 11192 if v:version < 704 || (v:version == 704 && !has("patch1107"))
10790 " " call Decho("1st attempt: system(netrw#WinPath(".g:netrw_localrmdir.') '.s:ShellEscape(rmfile).')','~'.expand("<slnum>")) 11193 " " call Decho("1st attempt: system(netrw#WinPath(".g:netrw_localrmdir.') '.s:ShellEscape(rmfile).')','~'.expand("<slnum>"))
10791 call system(netrw#WinPath(g:netrw_localrmdir).' '.s:ShellEscape(rmfile)) 11194 call system(netrw#WinPath(g:netrw_localrmdir).' '.s:ShellEscape(rmfile))
10792 " " call Decho("v:shell_error=".v:shell_error,'~'.expand("<slnum>")) 11195 " " call Decho("v:shell_error=".v:shell_error,'~'.expand("<slnum>"))
10793 11196
10794 if v:shell_error != 0 11197 if v:shell_error != 0
10820 11223
10821 " call Dret("s:NetrwLocalRmFile ".ok) 11224 " call Dret("s:NetrwLocalRmFile ".ok)
10822 return ok 11225 return ok
10823 endfun 11226 endfun
10824 11227
10825 " --------------------------------------------------------------------- 11228 " =====================================================================
10826 " Support Functions: {{{1 11229 " Support Functions: {{{1
10827
10828 " ---------------------------------------------------------------------
10829 " s:WinNames: COMBAK {{{2
10830 fun! s:WinNames(id)
10831 let curwin= winnr()
10832 1wincmd w
10833 " call Decho("--- Windows By Name --- #".a:id)
10834 " windo call Decho("win#".winnr()."<".expand("%").">")
10835 " call Decho("--- --- --- --- --- ---")
10836 exe curwin."wincmd w"
10837 endfun
10838 11230
10839 " --------------------------------------------------------------------- 11231 " ---------------------------------------------------------------------
10840 " netrw#Access: intended to provide access to variable values for netrw's test suite {{{2 11232 " netrw#Access: intended to provide access to variable values for netrw's test suite {{{2
10841 " 0: marked file list of current buffer 11233 " 0: marked file list of current buffer
10842 " 1: marked file target 11234 " 1: marked file target
10847 else 11239 else
10848 return "no-list-buf#".bufnr('%') 11240 return "no-list-buf#".bufnr('%')
10849 endif 11241 endif
10850 elseif a:ilist == 1 11242 elseif a:ilist == 1
10851 return s:netrwmftgt 11243 return s:netrwmftgt
11244 endif
10852 endfun 11245 endfun
10853 11246
10854 " --------------------------------------------------------------------- 11247 " ---------------------------------------------------------------------
10855 " netrw#Call: allows user-specified mappings to call internal netrw functions {{{2 11248 " netrw#Call: allows user-specified mappings to call internal netrw functions {{{2
10856 fun! netrw#Call(funcname,...) 11249 fun! netrw#Call(funcname,...)
10857 " call Dfunc("netrw#Call(funcname<".a:funcname.">,".string(a:000).")") 11250 return call("s:".a:funcname,a:000)
10858 if a:0 > 0
10859 exe "call s:".a:funcname."(".string(a:000).")"
10860 else
10861 exe "call s:".a:funcname."()"
10862 endif
10863 " call Dret("netrw#Call")
10864 endfun 11251 endfun
10865 11252
10866 " --------------------------------------------------------------------- 11253 " ---------------------------------------------------------------------
10867 " netrw#Expose: allows UserMaps and pchk to look at otherwise script-local variables {{{2 11254 " netrw#Expose: allows UserMaps and pchk to look at otherwise script-local variables {{{2
10868 " I expect this function to be used in 11255 " I expect this function to be used in
10920 " refresh : refresh the display 11307 " refresh : refresh the display
10921 " -other- : this string will be executed 11308 " -other- : this string will be executed
10922 " or it may return a List of strings. 11309 " or it may return a List of strings.
10923 " 11310 "
10924 " Each keymap-sequence will be set up with a nnoremap 11311 " Each keymap-sequence will be set up with a nnoremap
10925 " to invoke netrw#UserMaps(islocal). 11312 " to invoke netrw#UserMaps(a:islocal).
10926 " Related functions: 11313 " Related functions:
10927 " netrw#Expose(varname) -- see s:varname variables 11314 " netrw#Expose(varname) -- see s:varname variables
10928 " netrw#Modify(varname,newvalue) -- modify value of s:varname variable 11315 " netrw#Modify(varname,newvalue) -- modify value of s:varname variable
10929 " netrw#Call(funcname,...) -- call internal netrw function with optional arguments 11316 " netrw#Call(funcname,...) -- call internal netrw function with optional arguments
10930 fun! netrw#UserMaps(islocal) 11317 fun! netrw#UserMaps(islocal)
10968 " call Dret("netrw#WinPath <".path.">") 11355 " call Dret("netrw#WinPath <".path.">")
10969 return path 11356 return path
10970 endfun 11357 endfun
10971 11358
10972 " --------------------------------------------------------------------- 11359 " ---------------------------------------------------------------------
11360 " s:NetrwBadd: adds marked files to buffer list or vice versa {{{2
11361 " cb : bl2mf=0 add marked files to buffer list
11362 " cB : bl2mf=1 use bufferlist to mark files
11363 " (mnemonic: cb = copy (marked files) to buffer list)
11364 fun! s:NetrwBadd(islocal,bl2mf)
11365 " " call Dfunc("s:NetrwBadd(islocal=".a:islocal." mf2bl=".mf2bl.")")
11366 if a:bl2mf
11367 " cB: add buffer list to marked files
11368 redir => bufl
11369 ls
11370 redir END
11371 let bufl = map(split(bufl,"\n"),'substitute(v:val,''^.\{-}"\(.*\)".\{-}$'',''\1'','''')')
11372 for fname in bufl
11373 call s:NetrwMarkFile(a:islocal,fname)
11374 endfor
11375 else
11376 " cb: add marked files to buffer list
11377 for fname in s:netrwmarkfilelist_{bufnr("%")}
11378 " " call Decho("badd ".fname,'~'.expand("<slnum>"))
11379 exe "badd ".fnameescape(fname)
11380 endfor
11381 let curbufnr = bufnr("%")
11382 let curdir = s:NetrwGetCurdir(a:islocal)
11383 call s:NetrwUnmarkList(curbufnr,curdir) " remove markings from local buffer
11384 endif
11385 " call Dret("s:NetrwBadd")
11386 endfun
11387
11388 " ---------------------------------------------------------------------
10973 " s:ComposePath: Appends a new part to a path taking different systems into consideration {{{2 11389 " s:ComposePath: Appends a new part to a path taking different systems into consideration {{{2
10974 fun! s:ComposePath(base,subdir) 11390 fun! s:ComposePath(base,subdir)
10975 " call Dfunc("s:ComposePath(base<".a:base."> subdir<".a:subdir.">)") 11391 " call Dfunc("s:ComposePath(base<".a:base."> subdir<".a:subdir.">)")
10976 11392
10977 if has("amiga") 11393 if has("amiga")
10981 let ret = a:base."/" . a:subdir 11397 let ret = a:base."/" . a:subdir
10982 else 11398 else
10983 let ret = a:base.a:subdir 11399 let ret = a:base.a:subdir
10984 endif 11400 endif
10985 11401
10986 elseif a:subdir =~ '^\a:[/\\][^/\\]' && (has("win32") || has("win95") || has("win64") || has("win16")) 11402 " COMBAK: test on windows with changing to root directory: :e C:/
11403 elseif a:subdir =~ '^\a:[/\\]\([^/\\]\|$\)' && (has("win32") || has("win95") || has("win64") || has("win16"))
10987 " call Decho("windows",'~'.expand("<slnum>")) 11404 " call Decho("windows",'~'.expand("<slnum>"))
10988 let ret= a:subdir 11405 let ret= a:subdir
10989 11406
10990 elseif a:base =~ '^\a:[/\\][^/\\]' && (has("win32") || has("win95") || has("win64") || has("win16")) 11407 elseif a:base =~ '^\a:[/\\]\([^/\\]\|$\)' && (has("win32") || has("win95") || has("win64") || has("win16"))
10991 " call Decho("windows",'~'.expand("<slnum>")) 11408 " call Decho("windows",'~'.expand("<slnum>"))
10992 if a:base =~ '[/\\]$' 11409 if a:base =~ '[/\\]$'
10993 let ret= a:base.a:subdir 11410 let ret= a:base.a:subdir
10994 else 11411 else
10995 let ret= a:base.'/'.a:subdir 11412 let ret= a:base.'/'.a:subdir
11327 endfun 11744 endfun
11328 11745
11329 " --------------------------------------------------------------------- 11746 " ---------------------------------------------------------------------
11330 " s:NetrwEnew: opens a new buffer, passes netrw buffer variables through {{{2 11747 " s:NetrwEnew: opens a new buffer, passes netrw buffer variables through {{{2
11331 fun! s:NetrwEnew(...) 11748 fun! s:NetrwEnew(...)
11332 " call Dfunc("s:NetrwEnew() a:0=".a:0." bufnr($)=".bufnr("$")) 11749 " call Dfunc("s:NetrwEnew() a:0=".a:0." bufnr($)=".bufnr("$")." expand(%)<".expand("%").">")
11333 " call Decho("curdir<".((a:0>0)? a:1 : "")."> buf#".bufnr("%")."<".bufname("%").">",'~'.expand("<slnum>")) 11750 " call Decho("curdir<".((a:0>0)? a:1 : "")."> buf#".bufnr("%")."<".bufname("%").">",'~'.expand("<slnum>"))
11334 11751
11335 " grab a function-local-variable copy of buffer variables 11752 " grab a function-local-variable copy of buffer variables
11336 " call Decho("make function-local copy of netrw variables",'~'.expand("<slnum>")) 11753 " call Decho("make function-local copy of netrw variables",'~'.expand("<slnum>"))
11337 if exists("b:netrw_bannercnt") |let netrw_bannercnt = b:netrw_bannercnt |endif 11754 if exists("b:netrw_bannercnt") |let netrw_bannercnt = b:netrw_bannercnt |endif
11349 if exists("b:netrw_liststyle") |let netrw_liststyle = b:netrw_liststyle |endif 11766 if exists("b:netrw_liststyle") |let netrw_liststyle = b:netrw_liststyle |endif
11350 if exists("b:netrw_method") |let netrw_method = b:netrw_method |endif 11767 if exists("b:netrw_method") |let netrw_method = b:netrw_method |endif
11351 if exists("b:netrw_option") |let netrw_option = b:netrw_option |endif 11768 if exists("b:netrw_option") |let netrw_option = b:netrw_option |endif
11352 if exists("b:netrw_prvdir") |let netrw_prvdir = b:netrw_prvdir |endif 11769 if exists("b:netrw_prvdir") |let netrw_prvdir = b:netrw_prvdir |endif
11353 11770
11354 NetrwKeepj call s:NetrwOptionRestore("w:") 11771 NetrwKeepj call s:NetrwOptionsRestore("w:")
11355 " call Decho("generate a buffer with NetrwKeepj keepalt enew!",'~'.expand("<slnum>")) 11772 " call Decho("generate a buffer with NetrwKeepj keepalt enew!",'~'.expand("<slnum>"))
11356 " when tree listing uses file TreeListing... a new buffer is made. 11773 " when tree listing uses file TreeListing... a new buffer is made.
11357 " Want the old buffer to be unlisted. 11774 " Want the old buffer to be unlisted.
11358 " COMBAK: this causes a problem, see P43 11775 " COMBAK: this causes a problem, see P43
11359 " setl nobl 11776 " setl nobl
11360 let netrw_keepdiff= &l:diff 11777 let netrw_keepdiff= &l:diff
11361 noswapfile NetrwKeepj keepalt enew! 11778 noswapfile NetrwKeepj keepalt enew!
11362 let &l:diff= netrw_keepdiff 11779 let &l:diff= netrw_keepdiff
11363 " call Decho("bufnr($)=".bufnr("$")."<".bufname(bufnr("$"))."> winnr($)=".winnr("$"),'~'.expand("<slnum>")) 11780 " call Decho("bufnr($)=".bufnr("$")."<".bufname(bufnr("$"))."> winnr($)=".winnr("$"),'~'.expand("<slnum>"))
11364 NetrwKeepj call s:NetrwOptionSave("w:") 11781 NetrwKeepj call s:NetrwOptionsSave("w:")
11365 11782
11366 " copy function-local-variables to buffer variable equivalents 11783 " copy function-local-variables to buffer variable equivalents
11367 " call Decho("copy function-local variables back to buffer netrw variables",'~'.expand("<slnum>")) 11784 " call Decho("copy function-local variables back to buffer netrw variables",'~'.expand("<slnum>"))
11368 if exists("netrw_bannercnt") |let b:netrw_bannercnt = netrw_bannercnt |endif 11785 if exists("netrw_bannercnt") |let b:netrw_bannercnt = netrw_bannercnt |endif
11369 if exists("netrw_browser_active") |let b:netrw_browser_active = netrw_browser_active |endif 11786 if exists("netrw_browser_active") |let b:netrw_browser_active = netrw_browser_active |endif
11390 file NetrwTreeListing 11807 file NetrwTreeListing
11391 setl nobl bt=nowrite bh=hide 11808 setl nobl bt=nowrite bh=hide
11392 nno <silent> <buffer> [ :sil call <SID>TreeListMove('[')<cr> 11809 nno <silent> <buffer> [ :sil call <SID>TreeListMove('[')<cr>
11393 nno <silent> <buffer> ] :sil call <SID>TreeListMove(']')<cr> 11810 nno <silent> <buffer> ] :sil call <SID>TreeListMove(']')<cr>
11394 else 11811 else
11395 exe "sil! keepalt file ".fnameescape(b:netrw_curdir) 11812 call s:NetrwBufRename(b:netrw_curdir)
11396 endif 11813 endif
11397 endif 11814 endif
11398 endif 11815 endif
11399 11816
11400 " call Dret("s:NetrwEnew : buf#".bufnr("%")."<".bufname("%")."> expand(%)<".expand("%")."> expand(#)<".expand("#")."> bh=".&bh." win#".winnr()." winnr($)#".winnr("$")) 11817 " call Dret("s:NetrwEnew : buf#".bufnr("%")."<".bufname("%")."> expand(%)<".expand("%")."> expand(#)<".expand("#")."> bh=".&bh." win#".winnr()." winnr($)#".winnr("$"))
11401 endfun 11818 endfun
11402 11819
11403 " --------------------------------------------------------------------- 11820 " ---------------------------------------------------------------------
11404 " s:NetrwExe: executes a string using "!" {{{2 11821 " s:NetrwExe: executes a string using "!" {{{2
11405 fun! s:NetrwExe(cmd) 11822 fun! s:NetrwExe(cmd)
11406 " call Dfunc("s:NetrwExe(a:cmd)") 11823 " call Dfunc("s:NetrwExe(a:cmd<".a:cmd.">)")
11407 if has("win32") && &shell !~? 'cmd' && !g:netrw_cygwin 11824 if has("win32") && &shell !~? 'cmd' && !g:netrw_cygwin
11825 " call Decho("using win32:",expand("<slnum>"))
11408 let savedShell=[&shell,&shellcmdflag,&shellxquote,&shellxescape,&shellquote,&shellpipe,&shellredir,&shellslash] 11826 let savedShell=[&shell,&shellcmdflag,&shellxquote,&shellxescape,&shellquote,&shellpipe,&shellredir,&shellslash]
11409 set shell& shellcmdflag& shellxquote& shellxescape& 11827 set shell& shellcmdflag& shellxquote& shellxescape&
11410 set shellquote& shellpipe& shellredir& shellslash& 11828 set shellquote& shellpipe& shellredir& shellslash&
11411 exe a:cmd 11829 exe a:cmd
11412 let [&shell,&shellcmdflag,&shellxquote,&shellxescape,&shellquote,&shellpipe,&shellredir,&shellslash] = savedShell 11830 let [&shell,&shellcmdflag,&shellxquote,&shellxescape,&shellquote,&shellpipe,&shellredir,&shellslash] = savedShell
11413 else 11831 else
11832 " call Decho("exe ".a:cmd,'~'.expand("<slnum>"))
11414 exe a:cmd 11833 exe a:cmd
11415 endif 11834 endif
11416 " call Dret("s:NetrwExe") 11835 " call Dret("s:NetrwExe : v:shell_error=".v:shell_error)
11417 endfun 11836 endfun
11418 11837
11419 " --------------------------------------------------------------------- 11838 " ---------------------------------------------------------------------
11420 " s:NetrwInsureWinVars: insure that a netrw buffer has its w: variables in spite of a wincmd v or s {{{2 11839 " s:NetrwInsureWinVars: insure that a netrw buffer has its w: variables in spite of a wincmd v or s {{{2
11421 fun! s:NetrwInsureWinVars() 11840 fun! s:NetrwInsureWinVars()
11444 endif 11863 endif
11445 endfun 11864 endfun
11446 11865
11447 " --------------------------------------------------------------------- 11866 " ---------------------------------------------------------------------
11448 " s:NetrwLcd: handles changing the (local) directory {{{2 11867 " s:NetrwLcd: handles changing the (local) directory {{{2
11868 " Returns: 0=success
11869 " -1=failed
11449 fun! s:NetrwLcd(newdir) 11870 fun! s:NetrwLcd(newdir)
11450 " call Dfunc("s:NetrwLcd(newdir<".a:newdir.">)") 11871 " call Dfunc("s:NetrwLcd(newdir<".a:newdir.">)")
11451 11872
11873 let err472= 0
11452 try 11874 try
11453 exe 'NetrwKeepj sil lcd '.fnameescape(a:newdir) 11875 exe 'NetrwKeepj sil lcd '.fnameescape(a:newdir)
11454 catch /^Vim\%((\a\+)\)\=:E344/ 11876 catch /^Vim\%((\a\+)\)\=:E344/
11455 " Vim's lcd fails with E344 when attempting to go above the 'root' of a Windows share. 11877 " Vim's lcd fails with E344 when attempting to go above the 'root' of a Windows share.
11456 " Therefore, detect if a Windows share is present, and if E344 occurs, just settle at 11878 " Therefore, detect if a Windows share is present, and if E344 occurs, just settle at
11462 let dirname = '\' 11884 let dirname = '\'
11463 exe 'NetrwKeepj sil lcd '.fnameescape(dirname) 11885 exe 'NetrwKeepj sil lcd '.fnameescape(dirname)
11464 endif 11886 endif
11465 endif 11887 endif
11466 catch /^Vim\%((\a\+)\)\=:E472/ 11888 catch /^Vim\%((\a\+)\)\=:E472/
11889 let err472= 1
11890 endtry
11891
11892 if err472
11467 call netrw#ErrorMsg(s:ERROR,"unable to change directory to <".a:newdir."> (permissions?)",61) 11893 call netrw#ErrorMsg(s:ERROR,"unable to change directory to <".a:newdir."> (permissions?)",61)
11468 if exists("w:netrw_prvdir") 11894 if exists("w:netrw_prvdir")
11469 let a:newdir= w:netrw_prvdir 11895 let a:newdir= w:netrw_prvdir
11470 else 11896 else
11471 call s:NetrwOptionRestore("w:") 11897 call s:NetrwOptionsRestore("w:")
11472 " call Decho("setl noma nomod nowrap",'~'.expand("<slnum>")) 11898 " call Decho("setl noma nomod nowrap",'~'.expand("<slnum>"))
11473 exe "setl ".g:netrw_bufsettings 11899 exe "setl ".g:netrw_bufsettings
11474 " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) 11900 " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
11475 let a:newdir= dirname 11901 let a:newdir= dirname
11476 " call Dret("s:NetrwBrowse : reusing buffer#".(exists("bufnum")? bufnum : 'N/A')."<".dirname."> getcwd<".getcwd().">") 11902 endif
11477 return 11903 " call Dret("s:NetrwBrowse -1 : reusing buffer#".(exists("bufnum")? bufnum : 'N/A')."<".dirname."> getcwd<".getcwd().">")
11478 endif 11904 return -1
11479 endtry 11905 endif
11480 11906
11481 " call Dret("s:NetrwLcd") 11907 " call Dret("s:NetrwLcd 0")
11908 return 0
11482 endfun 11909 endfun
11483 11910
11484 " ------------------------------------------------------------------------ 11911 " ------------------------------------------------------------------------
11485 " s:NetrwSaveWordPosn: used to keep cursor on same word after refresh, {{{2 11912 " s:NetrwSaveWordPosn: used to keep cursor on same word after refresh, {{{2
11486 " changed sorting, etc. Also see s:NetrwRestoreWordPosn(). 11913 " changed sorting, etc. Also see s:NetrwRestoreWordPosn().
11644 " s:Rexplore: implements returning from a buffer to a netrw directory {{{2 12071 " s:Rexplore: implements returning from a buffer to a netrw directory {{{2
11645 " 12072 "
11646 " s:SetRexDir() sets up <2-leftmouse> maps (if g:netrw_retmap 12073 " s:SetRexDir() sets up <2-leftmouse> maps (if g:netrw_retmap
11647 " is true) and a command, :Rexplore, which call this function. 12074 " is true) and a command, :Rexplore, which call this function.
11648 " 12075 "
11649 " s:netrw_nbcd is set up by s:NetrwBrowseChgDir() 12076 " s:netrw_posn is set up by s:NetrwBrowseChgDir()
11650 " 12077 "
11651 " s:rexposn_BUFNR used to save/restore cursor position 12078 " s:rexposn_BUFNR used to save/restore cursor position
11652 fun! s:NetrwRexplore(islocal,dirname) 12079 fun! s:NetrwRexplore(islocal,dirname)
11653 if exists("s:netrwdrag") 12080 if exists("s:netrwdrag")
11654 return 12081 return
11700 endif 12127 endif
11701 else 12128 else
11702 " call Decho("s:rexposn_".bufnr('%')."<".bufname("%")."> doesn't exist",'~'.expand("<slnum>")) 12129 " call Decho("s:rexposn_".bufnr('%')."<".bufname("%")."> doesn't exist",'~'.expand("<slnum>"))
11703 endif 12130 endif
11704 12131
11705 if exists("s:explore_match") 12132 if has("syntax") && exists("g:syntax_on") && g:syntax_on
11706 exe "2match netrwMarkFile /".s:explore_match."/" 12133 if exists("s:explore_match")
12134 exe "2match netrwMarkFile /".s:explore_match."/"
12135 endif
11707 endif 12136 endif
11708 12137
11709 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>")) 12138 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>"))
11710 " call Dret("s:NetrwRexplore : ft=".&ft) 12139 " call Dret("s:NetrwRexplore : ft=".&ft)
11711 endfun 12140 endfun
11729 " --------------------------------------------------------------------- 12158 " ---------------------------------------------------------------------
11730 " s:SavePosn: saves position associated with current buffer into a dictionary {{{2 12159 " s:SavePosn: saves position associated with current buffer into a dictionary {{{2
11731 fun! s:SavePosn(posndict) 12160 fun! s:SavePosn(posndict)
11732 " call Dfunc("s:SavePosn(posndict) curbuf#".bufnr("%")."<".bufname("%").">") 12161 " call Dfunc("s:SavePosn(posndict) curbuf#".bufnr("%")."<".bufname("%").">")
11733 12162
11734 let a:posndict[bufnr("%")]= winsaveview() 12163 if !exists("a:posndict[bufnr('%')]")
11735 " call Decho("saving posn: posndict[".bufnr("%")."]=".string(winsaveview()),'~'.expand("<slnum>")) 12164 let a:posndict[bufnr("%")]= []
12165 endif
12166 " call Decho("before push: a:posndict[buf#".bufnr("%")."]=".string(a:posndict[bufnr('%')]))
12167 call add(a:posndict[bufnr("%")],winsaveview())
12168 " call Decho("after push: a:posndict[buf#".bufnr("%")."]=".string(a:posndict[bufnr('%')]))
11736 12169
11737 " call Dret("s:SavePosn posndict") 12170 " call Dret("s:SavePosn posndict")
11738 return a:posndict 12171 return a:posndict
11739 endfun 12172 endfun
11740 12173
11741 " --------------------------------------------------------------------- 12174 " ---------------------------------------------------------------------
11742 " s:RestorePosn: restores position associated with current buffer using dictionary {{{2 12175 " s:RestorePosn: restores position associated with current buffer using dictionary {{{2
11743 fun! s:RestorePosn(posndict) 12176 fun! s:RestorePosn(posndict)
11744 " call Dfunc("s:RestorePosn(posndict) curbuf#".bufnr("%")."<".bufname("%").">") 12177 " call Dfunc("s:RestorePosn(posndict) curbuf#".bufnr("%")."<".bufname("%").">")
11745 if has_key(a:posndict,bufnr("%")) 12178 if exists("a:posndict")
11746 call winrestview(a:posndict[bufnr("%")]) 12179 if has_key(a:posndict,bufnr("%"))
11747 " call Decho("restoring posn: posndict[".bufnr("%")."]=".string(a:posndict[bufnr("%")]),'~'.expand("<slnum>")) 12180 " call Decho("before pop: a:posndict[buf#".bufnr("%")."]=".string(a:posndict[bufnr('%')]))
12181 let posnlen= len(a:posndict[bufnr("%")])
12182 if posnlen > 0
12183 let posnlen= posnlen - 1
12184 " call Decho("restoring posn posndict[".bufnr("%")."][".posnlen."]=".string(a:posndict[bufnr("%")][posnlen]),'~'.expand("<slnum>"))
12185 call winrestview(a:posndict[bufnr("%")][posnlen])
12186 call remove(a:posndict[bufnr("%")],posnlen)
12187 " call Decho("after pop: a:posndict[buf#".bufnr("%")."]=".string(a:posndict[bufnr('%')]))
12188 endif
12189 endif
11748 endif 12190 endif
11749 " call Dret("s:RestorePosn") 12191 " call Dret("s:RestorePosn")
11750 endfun 12192 endfun
11751 12193
11752 " --------------------------------------------------------------------- 12194 " ---------------------------------------------------------------------
12030 endif 12472 endif
12031 12473
12032 " call Dret("s:UserMaps") 12474 " call Dret("s:UserMaps")
12033 endfun 12475 endfun
12034 12476
12035 " --------------------------------------------------------------------- 12477 " ==========================
12036 " Settings Restoration: {{{1 12478 " Settings Restoration: {{{1
12479 " ==========================
12037 let &cpo= s:keepcpo 12480 let &cpo= s:keepcpo
12038 unlet s:keepcpo 12481 unlet s:keepcpo
12039 12482
12040 " ------------------------------------------------------------------------ 12483 " ===============
12041 " Modelines: {{{1 12484 " Modelines: {{{1
12485 " ===============
12042 " vim:ts=8 fdm=marker 12486 " vim:ts=8 fdm=marker