comparison runtime/autoload/netrw.vim @ 12785:65d7fd8381a3

Update runtime files. commit https://github.com/vim/vim/commit/b0d45e7f5354375edd02afafde3bd37dac1515ff Author: Bram Moolenaar <Bram@vim.org> Date: Sun Nov 5 18:19:24 2017 +0100 Update runtime files.
author Christian Brabandt <cb@256bit.org>
date Sun, 05 Nov 2017 18:30:05 +0100
parents 8335fdda6d4d
children 92a0a33f8296
comparison
equal deleted inserted replaced
12784:b38715f6a758 12785:65d7fd8381a3
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: Nov 03, 2017
4 " Version: 156 4 " Version: 162
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: 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 = "v162"
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
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)
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')
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>"))
1560 " s:NetrwOptionRestore: restore options (based on prior s:NetrwOptionSave) {{{2 1604 " s:NetrwOptionRestore: restore options (based on prior s:NetrwOptionSave) {{{2
1561 fun! s:NetrwOptionRestore(vt) 1605 fun! s:NetrwOptionRestore(vt)
1562 " call Dfunc("s:NetrwOptionRestore(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> winnr($)=".winnr("$")) 1606 " call Dfunc("s:NetrwOptionRestore(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> winnr($)=".winnr("$"))
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 " 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>"))
1564 if !exists("{a:vt}netrw_optionsave") 1608 if !exists("{a:vt}netrw_optionsave")
1565 call s:RestorePosn(s:netrw_nbcd)
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>")) 1609 " 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>"))
1567 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) 1610 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
1568 " call Dret("s:NetrwOptionRestore : ".a:vt."netrw_optionsave doesn't exist") 1611 " call Dret("s:NetrwOptionRestore : ".a:vt."netrw_optionsave doesn't exist")
1569 return 1612 return
1570 endif 1613 endif
1579 if &l:acd 1622 if &l:acd
1580 call s:NetrwLcd(curdir) 1623 call s:NetrwLcd(curdir)
1581 endif 1624 endif
1582 endif 1625 endif
1583 endif 1626 endif
1584 if exists("{a:vt}netrw_aikeep") |let &l:ai = {a:vt}netrw_aikeep |unlet {a:vt}netrw_aikeep |endif 1627 call s:NetrwRestoreSetting(a:vt."netrw_aikeep","&l:ai")
1585 if exists("{a:vt}netrw_awkeep") |let &l:aw = {a:vt}netrw_awkeep |unlet {a:vt}netrw_awkeep |endif 1628 call s:NetrwRestoreSetting(a:vt."netrw_awkeep","&l:aw")
1586 if exists("{a:vt}netrw_blkeep") |let &l:bl = {a:vt}netrw_blkeep |unlet {a:vt}netrw_blkeep |endif 1629 call s:NetrwRestoreSetting(a:vt."netrw_blkeep","&l:bl")
1587 if exists("{a:vt}netrw_btkeep") |let &l:bt = {a:vt}netrw_btkeep |unlet {a:vt}netrw_btkeep |endif 1630 call s:NetrwRestoreSetting(a:vt."netrw_btkeep","&l:bt")
1588 if exists("{a:vt}netrw_bombkeep") |let &l:bomb = {a:vt}netrw_bombkeep |unlet {a:vt}netrw_bombkeep |endif 1631 call s:NetrwRestoreSetting(a:vt."netrw_bombkeep","&l:bomb")
1589 if exists("{a:vt}netrw_cedit") |let &cedit = {a:vt}netrw_cedit |unlet {a:vt}netrw_cedit |endif 1632 call s:NetrwRestoreSetting(a:vt."netrw_cedit","&cedit")
1590 if exists("{a:vt}netrw_cikeep") |let &l:ci = {a:vt}netrw_cikeep |unlet {a:vt}netrw_cikeep |endif 1633 call s:NetrwRestoreSetting(a:vt."netrw_cikeep","&l:ci")
1591 if exists("{a:vt}netrw_cinkeep") |let &l:cin = {a:vt}netrw_cinkeep |unlet {a:vt}netrw_cinkeep |endif 1634 call s:NetrwRestoreSetting(a:vt."netrw_cinkeep","&l:cin")
1592 if exists("{a:vt}netrw_cinokeep") |let &l:cino = {a:vt}netrw_cinokeep |unlet {a:vt}netrw_cinokeep |endif 1635 call s:NetrwRestoreSetting(a:vt."netrw_cinokeep","&l:cino")
1593 if exists("{a:vt}netrw_comkeep") |let &l:com = {a:vt}netrw_comkeep |unlet {a:vt}netrw_comkeep |endif 1636 call s:NetrwRestoreSetting(a:vt."netrw_comkeep","&l:com")
1594 if exists("{a:vt}netrw_cpokeep") |let &l:cpo = {a:vt}netrw_cpokeep |unlet {a:vt}netrw_cpokeep |endif 1637 call s:NetrwRestoreSetting(a:vt."netrw_cpokeep","&l:cpo")
1595 if exists("{a:vt}netrw_diffkeep") |let &l:diff = {a:vt}netrw_diffkeep |unlet {a:vt}netrw_diffkeep |endif 1638 call s:NetrwRestoreSetting(a:vt."netrw_diffkeep","&l:diff")
1596 if exists("{a:vt}netrw_fenkeep") |let &l:fen = {a:vt}netrw_fenkeep |unlet {a:vt}netrw_fenkeep |endif 1639 call s:NetrwRestoreSetting(a:vt."netrw_fenkeep","&l:fen")
1597 if exists("g:netrw_ffkep") && g:netrw_ffkeep 1640 if exists("g:netrw_ffkeep") && g:netrw_ffkeep
1598 if exists("{a:vt}netrw_ffkeep") |let &l:ff = {a:vt}netrw_ffkeep |unlet {a:vt}netrw_ffkeep |endif 1641 call s:NetrwRestoreSetting(a:vt."netrw_ffkeep")","&l:ff")
1599 endif 1642 endif
1600 if exists("{a:vt}netrw_fokeep") |let &l:fo = {a:vt}netrw_fokeep |unlet {a:vt}netrw_fokeep |endif 1643 call s:NetrwRestoreSetting(a:vt."netrw_fokeep","&l:fo")
1601 if exists("{a:vt}netrw_gdkeep") |let &l:gd = {a:vt}netrw_gdkeep |unlet {a:vt}netrw_gdkeep |endif 1644 call s:NetrwRestoreSetting(a:vt."netrw_gdkeep","&l:gd")
1602 if exists("{a:vt}netrw_hidkeep") |let &l:hidden = {a:vt}netrw_hidkeep |unlet {a:vt}netrw_hidkeep |endif 1645 call s:NetrwRestoreSetting(a:vt."netrw_hidkeep","&l:hidden")
1603 if exists("{a:vt}netrw_imkeep") |let &l:im = {a:vt}netrw_imkeep |unlet {a:vt}netrw_imkeep |endif 1646 call s:NetrwRestoreSetting(a:vt."netrw_imkeep","&l:im")
1604 if exists("{a:vt}netrw_iskkeep") |let &l:isk = {a:vt}netrw_iskkeep |unlet {a:vt}netrw_iskkeep |endif 1647 call s:NetrwRestoreSetting(a:vt."netrw_iskkeep","&l:isk")
1605 if exists("{a:vt}netrw_lskeep") |let &l:ls = {a:vt}netrw_lskeep |unlet {a:vt}netrw_lskeep |endif 1648 call s:NetrwRestoreSetting(a:vt."netrw_lskeep","&l:ls")
1606 if exists("{a:vt}netrw_makeep") |let &l:ma = {a:vt}netrw_makeep |unlet {a:vt}netrw_makeep |endif 1649 call s:NetrwRestoreSetting(a:vt."netrw_makeep","&l:ma")
1607 if exists("{a:vt}netrw_magickeep")|let &l:magic = {a:vt}netrw_magickeep |unlet {a:vt}netrw_magickeep|endif 1650 call s:NetrwRestoreSetting(a:vt."netrw_magickeep","&l:magic")
1608 if exists("{a:vt}netrw_modkeep") |let &l:mod = {a:vt}netrw_modkeep |unlet {a:vt}netrw_modkeep |endif 1651 call s:NetrwRestoreSetting(a:vt."netrw_modkeep","&l:mod")
1609 if exists("{a:vt}netrw_nukeep") |let &l:nu = {a:vt}netrw_nukeep |unlet {a:vt}netrw_nukeep |endif 1652 call s:NetrwRestoreSetting(a:vt."netrw_nukeep","&l:nu")
1610 if exists("{a:vt}netrw_rnukeep") |let &l:rnu = {a:vt}netrw_rnukeep |unlet {a:vt}netrw_rnukeep |endif 1653 call s:NetrwRestoreSetting(a:vt."netrw_rnukeep","&l:rnu")
1611 if exists("{a:vt}netrw_repkeep") |let &l:report = {a:vt}netrw_repkeep |unlet {a:vt}netrw_repkeep |endif 1654 call s:NetrwRestoreSetting(a:vt."netrw_repkeep","&l:report")
1612 if exists("{a:vt}netrw_rokeep") |let &l:ro = {a:vt}netrw_rokeep |unlet {a:vt}netrw_rokeep |endif 1655 call s:NetrwRestoreSetting(a:vt."netrw_rokeep","&l:ro")
1613 if exists("{a:vt}netrw_selkeep") |let &l:sel = {a:vt}netrw_selkeep |unlet {a:vt}netrw_selkeep |endif 1656 call s:NetrwRestoreSetting(a:vt."netrw_selkeep","&l:sel")
1614 if exists("{a:vt}netrw_spellkeep")|let &l:spell = {a:vt}netrw_spellkeep |unlet {a:vt}netrw_spellkeep|endif 1657 call s:NetrwRestoreSetting(a:vt."netrw_spellkeep","&l:spell")
1615 if has("clipboard") 1658 call s:NetrwRestoreSetting(a:vt."netrw_twkeep","&l:tw")
1616 if exists("{a:vt}netrw_starkeep") |let @* = {a:vt}netrw_starkeep |unlet {a:vt}netrw_starkeep |endif 1659 call s:NetrwRestoreSetting(a:vt."netrw_wigkeep","&l:wig")
1617 endif 1660 call s:NetrwRestoreSetting(a:vt."netrw_wrapkeep","&l:wrap")
1661 call s:NetrwRestoreSetting(a:vt."netrw_writekeep","&l:write")
1662 call s:NetrwRestoreSetting("s:yykeep","@@")
1618 " Problem: start with liststyle=0; press <i> : result, following line resets l:ts. 1663 " 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 1664 call s:NetrwRestoreSetting(a:vt."netrw_tskeep","&l:ts")
1620 if exists("{a:vt}netrw_twkeep") |let &l:tw = {a:vt}netrw_twkeep |unlet {a:vt}netrw_twkeep |endif 1665
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") 1666 if exists("{a:vt}netrw_swfkeep")
1626 if &directory == "" 1667 if &directory == ""
1627 " user hasn't specified a swapfile directory; 1668 " user hasn't specified a swapfile directory;
1628 " netrw will temporarily set the swapfile directory 1669 " netrw will temporarily set the swapfile directory
1629 " to the current directory as returned by getcwd(). 1670 " to the current directory as returned by getcwd().
1645 call s:NetrwLcd(dirkeep) 1686 call s:NetrwLcd(dirkeep)
1646 unlet {a:vt}netrw_dirkeep 1687 unlet {a:vt}netrw_dirkeep
1647 endif 1688 endif
1648 endif 1689 endif
1649 if has("clipboard") 1690 if has("clipboard")
1650 if exists("{a:vt}netrw_regstar") |sil! let @*= {a:vt}netrw_regstar |unlet {a:vt}netrw_regstar |endif 1691 call s:NetrwRestoreSetting(a:vt."netrw_starkeep","@*")
1651 endif 1692 call s:NetrwRestoreSetting(a:vt."netrw_pluskeep","@+")
1652 if exists("{a:vt}netrw_regslash")|sil! let @/= {a:vt}netrw_regslash|unlet {a:vt}netrw_regslash|endif 1693 endif
1653 call s:RestorePosn(s:netrw_nbcd) 1694 call s:NetrwRestoreSetting(a:vt."netrw_slashkeep","@/")
1654 1695
1655 " call Decho("g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd,'~'.expand("<slnum>")) 1696 " 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>")) 1697 " 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>")) 1698 " 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>")) 1699 " call Decho("diff=".&l:diff." win#".winnr()." w:netrw_diffkeep=".(exists("w:netrw_diffkeep")? w:netrw_diffkeep : "doesn't exist"),'~'.expand("<slnum>"))
1726 let {a:vt}netrw_selkeep = &l:sel 1767 let {a:vt}netrw_selkeep = &l:sel
1727 let {a:vt}netrw_spellkeep = &l:spell 1768 let {a:vt}netrw_spellkeep = &l:spell
1728 if !g:netrw_use_noswf 1769 if !g:netrw_use_noswf
1729 let {a:vt}netrw_swfkeep = &l:swf 1770 let {a:vt}netrw_swfkeep = &l:swf
1730 endif 1771 endif
1731 if has("clipboard")
1732 let {a:vt}netrw_starkeep = @*
1733 endif
1734 let {a:vt}netrw_tskeep = &l:ts 1772 let {a:vt}netrw_tskeep = &l:ts
1735 let {a:vt}netrw_twkeep = &l:tw " textwidth 1773 let {a:vt}netrw_twkeep = &l:tw " textwidth
1736 let {a:vt}netrw_wigkeep = &l:wig " wildignore 1774 let {a:vt}netrw_wigkeep = &l:wig " wildignore
1737 let {a:vt}netrw_wrapkeep = &l:wrap 1775 let {a:vt}netrw_wrapkeep = &l:wrap
1738 let {a:vt}netrw_writekeep = &l:write 1776 let {a:vt}netrw_writekeep = &l:write
1741 " call Decho("saving a few selected netrw-related variables",'~'.expand("<slnum>")) 1779 " call Decho("saving a few selected netrw-related variables",'~'.expand("<slnum>"))
1742 if g:netrw_keepdir 1780 if g:netrw_keepdir
1743 let {a:vt}netrw_dirkeep = getcwd() 1781 let {a:vt}netrw_dirkeep = getcwd()
1744 endif 1782 endif
1745 if has("clipboard") 1783 if has("clipboard")
1746 if &go =~# 'a' | sil! let {a:vt}netrw_regstar = @* | endif 1784 sil! let {a:vt}netrw_starkeep = @*
1747 endif 1785 sil! let {a:vt}netrw_pluskeep = @+
1748 sil! let {a:vt}netrw_regslash= @/ 1786 endif
1787 sil! let {a:vt}netrw_slashkeep= @/
1749 1788
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>")) 1789 " 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()) 1790 " call Dret("s:NetrwOptionSave : tab#".tabpagenr()." win#".winnr())
1752 endfun 1791 endfun
1753 1792
1754 " ------------------------------------------------------------------------ 1793 " ------------------------------------------------------------------------
1794 " s:NetrwRestoreSetting: restores specified setting using associated keepvar, {{{2
1795 " but only if the setting value differs from the associated keepvar.
1796 " Doing this means that netrw will not come up as having changed a
1797 " setting last when it really didn't actually change it.
1798 " Used by s:NetrwOptionRestore() to restore each netrw-senstive setting
1799 " and by s:NetrwSafeOptions()
1800 fun! s:NetrwRestoreSetting(keepvar,setting)
1801 " call Dfunc("s:NetrwRestoreSetting(keepvar<".a:keepvar."> setting<".a:setting.">)")
1802
1803 if a:keepvar =~ '^&'
1804 exe "let keepvarval= ".a:keepvar
1805 if keepvarval != a:setting
1806 if type(a:setting) == 0
1807 exe "let ".a:keepvar."=".a:setting
1808 elseif type(a:setting) == 1
1809 exe "let ".a:keepvar."= '".a:setting."'"
1810 else
1811 call netrw#ErrorMsg(s:ERROR,"(s:NetrwRestoreSetting) doesn't know how to restore ".a:keepvar." with a setting of type#".type(a:setting),105)
1812 endif
1813 endif
1814
1815 elseif exists(a:keepvar)
1816 exe "let keepvarval= '".a:keepvar."'"
1817 if keepvarval != a:setting
1818 if type(a:setting) == 0
1819 exe "let ".a:keepvar."= ".a:setting
1820 elseif type(a:setting) == 1
1821 exe "let ".a:keepvar."= '".a:setting."'"
1822 else
1823 call netrw#ErrorMsg(s:ERROR,"(s:NetrwRestoreSetting) doesn't know how to restore ".a:keepvar." with a setting of type#".type(a:setting),105)
1824 endif
1825 endif
1826 exe "unlet ".a:keepvar
1827 endif
1828 " call Dret("s:NetrwRestoreSetting")
1829 endfun
1830
1831 " ---------------------------------------------------------------------
1755 " s:NetrwSafeOptions: sets options to help netrw do its job {{{2 1832 " s:NetrwSafeOptions: sets options to help netrw do its job {{{2
1756 " Use s:NetrwSaveOptions() to save user settings 1833 " Use s:NetrwSaveOptions() to save user settings
1757 " Use s:NetrwOptionRestore() to restore user settings 1834 " Use s:NetrwOptionRestore() to restore user settings
1758 fun! s:NetrwSafeOptions() 1835 fun! s:NetrwSafeOptions()
1759 " call Dfunc("s:NetrwSafeOptions() win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%"))."> winnr($)=".winnr("$")) 1836 " call Dfunc("s:NetrwSafeOptions() win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%"))."> winnr($)=".winnr("$"))
1760 " call Decho("win#".winnr()."'s ft=".&ft,'~'.expand("<slnum>")) 1837 " 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>")) 1838 " 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 1839 if exists("+acd") | call s:NetrwRestoreSetting("&l:acd",0)|endif
1763 setl noai 1840 call s:NetrwRestoreSetting("&l:ai",0)
1764 setl noaw 1841 call s:NetrwRestoreSetting("&l:aw",0)
1765 setl nobl 1842 call s:NetrwRestoreSetting("&l:bl",0)
1766 setl nobomb 1843 call s:NetrwRestoreSetting("&l:bomb",0)
1767 setl bt=nofile 1844 call s:NetrwRestoreSetting("&l:bt","nofile")
1768 setl noci 1845 call s:NetrwRestoreSetting("&l:ci",0)
1769 setl nocin 1846 call s:NetrwRestoreSetting("&l:cin",0)
1770 setl bh=hide 1847 call s:NetrwRestoreSetting("&l:bh","hide")
1771 setl cino= 1848 call s:NetrwRestoreSetting("&l:cino","")
1772 setl com= 1849 call s:NetrwRestoreSetting("&l:com","")
1773 setl cpo-=a 1850 if &cpo =~ 'a' | call s:NetrwRestoreSetting("&cpo",substitute(&cpo,'a','','g')) | endif
1774 setl cpo-=A 1851 if &cpo =~ 'A' | call s:NetrwRestoreSetting("&cpo",substitute(&cpo,'A','','g')) | endif
1775 setl fo=nroql2 1852 setl fo=nroql2
1776 setl nohid 1853 call s:NetrwRestoreSetting("&l:hid",0)
1777 setl noim 1854 call s:NetrwRestoreSetting("&l:im",0)
1778 setl isk+=@ isk+=* isk+=/ 1855 setl isk+=@ isk+=* isk+=/
1779 setl magic 1856 call s:NetrwRestoreSetting("&l:magic",1)
1780 if g:netrw_use_noswf 1857 if g:netrw_use_noswf
1781 setl noswf 1858 call s:NetrwRestoreSetting("swf",0)
1782 endif 1859 endif
1783 setl report=10000 1860 call s:NetrwRestoreSetting("&l:report",10000)
1784 setl sel=inclusive 1861 call s:NetrwRestoreSetting("&l:sel","inclusive")
1785 setl nospell 1862 call s:NetrwRestoreSetting("&l:spell",0)
1786 setl tw=0 1863 call s:NetrwRestoreSetting("&l:tw",0)
1787 setl wig= 1864 call s:NetrwRestoreSetting("&l:wig","")
1788 setl cedit& 1865 setl cedit&
1789 call s:NetrwCursor() 1866 call s:NetrwCursor()
1790 1867
1791 " allow the user to override safe options 1868 " allow the user to override safe options
1792 " call Decho("ft<".&ft."> ei=".&ei,'~'.expand("<slnum>")) 1869 " call Decho("ft<".&ft."> ei=".&ei,'~'.expand("<slnum>"))
1793 if &ft == "netrw" 1870 if &ft == "netrw"
1794 " call Decho("do any netrw FileType autocmds (doau FileType netrw)",'~'.expand("<slnum>")) 1871 " call Decho("do any netrw FileType autocmds (doau FileType netrw)",'~'.expand("<slnum>"))
1795 sil! keepalt NetrwKeepj doau FileType netrw 1872 keepalt NetrwKeepj doau FileType netrw
1796 endif 1873 endif
1797 1874
1798 " call Decho("fo=".&fo.(exists("+acd")? " acd=".&acd : " acd doesn't exist")." bh=".&l:bh." bt<".&bt.">",'~'.expand("<slnum>")) 1875 " 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>")) 1876 " 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") 1877 " call Dret("s:NetrwSafeOptions")
1831 else 1908 else
1832 return "Match ".w:netrw_explore_mtchcnt." of ".w:netrw_explore_listlen 1909 return "Match ".w:netrw_explore_mtchcnt." of ".w:netrw_explore_listlen
1833 endif 1910 endif
1834 endfun 1911 endfun
1835 1912
1836 " --------------------------------------------------------------------- 1913 " ===============================
1837 " Netrw Transfer Functions: {{{1 1914 " Netrw Transfer Functions: {{{1
1838 " =============================== 1915 " ===============================
1839 1916
1840 " ------------------------------------------------------------------------ 1917 " ------------------------------------------------------------------------
1841 " netrw#NetRead: responsible for reading a file over the net {{{2 1918 " netrw#NetRead: responsible for reading a file over the net {{{2
1941 let ichoice= ichoice + 1 2018 let ichoice= ichoice + 1
1942 2019
1943 " NetRead: Determine method of read (ftp, rcp, etc) {{{3 2020 " NetRead: Determine method of read (ftp, rcp, etc) {{{3
1944 call s:NetrwMethod(choice) 2021 call s:NetrwMethod(choice)
1945 if !exists("b:netrw_method") || b:netrw_method < 0 2022 if !exists("b:netrw_method") || b:netrw_method < 0
1946 " call Dfunc("netrw#NetRead : unsupported method") 2023 " call Dret("netrw#NetRead : unsupported method")
1947 return 2024 return
1948 endif 2025 endif
1949 let tmpfile= s:GetTempfile(b:netrw_fname) " apply correct suffix 2026 let tmpfile= s:GetTempfile(b:netrw_fname) " apply correct suffix
1950 2027
1951 " Check whether or not NetrwBrowse() should be handling this request 2028 " 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")) 2178 if g:netrw_scp_cmd =~ '^scp' && (has("win32") || has("win95") || has("win64") || has("win16"))
2102 let tmpfile_get = substitute(tr(tmpfile, '\', '/'), '^\(\a\):[/\\]\(.*\)$', '/\1/\2', '') 2179 let tmpfile_get = substitute(tr(tmpfile, '\', '/'), '^\(\a\):[/\\]\(.*\)$', '/\1/\2', '')
2103 else 2180 else
2104 let tmpfile_get = tmpfile 2181 let tmpfile_get = tmpfile
2105 endif 2182 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)) 2183 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) 2184 let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method)
2108 let b:netrw_lastfile = choice 2185 let b:netrw_lastfile = choice
2109 2186
2110 "......................................... 2187 ".........................................
2111 " NetRead: (http) NetRead Method #5 (wget) {{{3 2188 " NetRead: (http) NetRead Method #5 (wget) {{{3
2183 2260
2184 "......................................... 2261 ".........................................
2185 " NetRead: (rsync) NetRead Method #7 {{{3 2262 " NetRead: (rsync) NetRead Method #7 {{{3
2186 elseif b:netrw_method == 7 2263 elseif b:netrw_method == 7
2187 " call Decho("read via rsync (method #7)",'~'.expand("<slnum>")) 2264 " 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)) 2265 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) 2266 let result = s:NetrwGetFile(readcmd,tmpfile, b:netrw_method)
2190 let b:netrw_lastfile = choice 2267 let b:netrw_lastfile = choice
2191 2268
2192 "......................................... 2269 ".........................................
2193 " NetRead: (fetch) NetRead Method #8 {{{3 2270 " NetRead: (fetch) NetRead Method #8 {{{3
2525 let curl= substitute(g:netrw_http_put_cmd,'\s\+.*$',"","") 2602 let curl= substitute(g:netrw_http_put_cmd,'\s\+.*$',"","")
2526 if executable(curl) 2603 if executable(curl)
2527 let url= g:netrw_choice 2604 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) ) 2605 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") 2606 elseif !exists("g:netrw_quiet")
2530 call netrw#ErrorMsg(s:ERROR,"can't write to http using <".g:netrw_http_put_cmd".">".",16) 2607 call netrw#ErrorMsg(s:ERROR,"can't write to http using <".g:netrw_http_put_cmd.">".",16)
2531 endif 2608 endif
2532 2609
2533 "......................................... 2610 ".........................................
2534 " NetWrite: (dav) NetWrite Method #6 (cadaver) {{{3 2611 " NetWrite: (dav) NetWrite Method #6 (cadaver) {{{3
2535 elseif b:netrw_method == 6 2612 elseif b:netrw_method == 6
2569 2646
2570 "......................................... 2647 ".........................................
2571 " NetWrite: (rsync) NetWrite Method #7 {{{3 2648 " NetWrite: (rsync) NetWrite Method #7 {{{3
2572 elseif b:netrw_method == 7 2649 elseif b:netrw_method == 7
2573 " call Decho("write via rsync (method #7)",'~'.expand("<slnum>")) 2650 " 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)) 2651 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 2652 let b:netrw_lastfile = choice
2576 2653
2577 "......................................... 2654 ".........................................
2578 " NetWrite: (sftp) NetWrite Method #9 {{{3 2655 " NetWrite: (sftp) NetWrite Method #9 {{{3
2579 elseif b:netrw_method == 9 2656 elseif b:netrw_method == 9
2674 endfun 2751 endfun
2675 2752
2676 " --------------------------------------------------------------------- 2753 " ---------------------------------------------------------------------
2677 " netrw#SetTreetop: resets the tree top to the current directory/specified directory {{{2 2754 " netrw#SetTreetop: resets the tree top to the current directory/specified directory {{{2
2678 " (implements the :Ntree command) 2755 " (implements the :Ntree command)
2679 fun! netrw#SetTreetop(...) 2756 fun! netrw#SetTreetop(iscmd,...)
2680 " call Dfunc("netrw#SetTreetop(".((a:0 > 0)? a:1 : "").") a:0=".a:0) 2757 " call Dfunc("netrw#SetTreetop(iscmd=".a:iscmd." ".((a:0 > 0)? a:1 : "").") a:0=".a:0)
2681 2758 " call Decho("w:netrw_treetop<".w:netrw_treetop.">")
2759
2760 " iscmd==0: netrw#SetTreetop called using gn mapping
2761 " iscmd==1: netrw#SetTreetop called using :Ntree from the command line
2762 " call Decho("(iscmd=".a:iscmd.": called using :Ntree from command line",'~'.expand("<slnum>"))
2682 " clear out the current tree 2763 " clear out the current tree
2683 if exists("w:netrw_treetop") 2764 if exists("w:netrw_treetop")
2684 " call Decho("clearing out current tree",'~'.expand("<slnum>")) 2765 " call Decho("clearing out current tree",'~'.expand("<slnum>"))
2685 let inittreetop= w:netrw_treetop 2766 let inittreetop= w:netrw_treetop
2686 unlet w:netrw_treetop 2767 unlet w:netrw_treetop
2687 endif 2768 endif
2688 if exists("w:netrw_treedict") 2769 if exists("w:netrw_treedict")
2689 " call Decho("freeing w:netrw_treedict",'~'.expand("<slnum>")) 2770 " call Decho("freeing w:netrw_treedict",'~'.expand("<slnum>"))
2690 unlet w:netrw_treedict 2771 unlet w:netrw_treedict
2691 endif 2772 endif
2692 2773 " call Decho("inittreetop<".(exists("inittreetop")? inittreetop : "n/a").">")
2693 if a:1 == "" && exists("inittreetop") 2774
2775 if (a:iscmd == 0 || a:1 == "") && exists("inittreetop")
2694 let treedir= s:NetrwTreePath(inittreetop) 2776 let treedir= s:NetrwTreePath(inittreetop)
2695 " call Decho("treedir<".treedir.">",'~'.expand("<slnum>")) 2777 " call Decho("treedir<".treedir.">",'~'.expand("<slnum>"))
2696 else 2778 else
2697 if isdirectory(s:NetrwFile(a:1)) 2779 if isdirectory(s:NetrwFile(a:1))
2698 " call Decho("a:1<".a:1."> is a directory",'~'.expand("<slnum>")) 2780 " call Decho("a:1<".a:1."> is a directory",'~'.expand("<slnum>"))
2699 let treedir= a:1 2781 let treedir= a:1
2700 elseif exists("b:netrw_curdir") && (isdirectory(s:NetrwFile(b:netrw_curdir."/".a:1)) || a:1 =~ '^\a\{3,}://') 2782 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 2783 let treedir= b:netrw_curdir."/".a:1
2702 " call Decho("a:1<".a:1."> is NOT a directory, trying treedir<".treedir.">",'~'.expand("<slnum>")) 2784 " call Decho("a:1<".a:1."> is NOT a directory, using treedir<".treedir.">",'~'.expand("<slnum>"))
2703 else 2785 else
2704 " normally the cursor is left in the message window. 2786 " 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. 2787 " However, here this results in the directory being listed in the message window, which is not wanted.
2706 let netrwbuf= bufnr("%") 2788 let netrwbuf= bufnr("%")
2707 call netrw#ErrorMsg(s:ERROR,"sorry, ".a:1." doesn't seem to be a directory!",95) 2789 call netrw#ErrorMsg(s:ERROR,"sorry, ".a:1." doesn't seem to be a directory!",95)
2708 exe bufwinnr(netrwbuf)."wincmd w" 2790 exe bufwinnr(netrwbuf)."wincmd w"
2709 let treedir= "." 2791 let treedir= "."
2710 endif 2792 endif
2711 endif 2793 endif
2712 " call Decho("treedir<".treedir.">",'~'.expand("<slnum>")) 2794 " call Decho("treedir<".treedir.">",'~'.expand("<slnum>"))
2795
2796 " determine if treedir is remote or local
2713 let islocal= expand("%") !~ '^\a\{3,}://' 2797 let islocal= expand("%") !~ '^\a\{3,}://'
2714 " call Decho("islocal=".islocal,'~'.expand("<slnum>")) 2798 " call Decho("islocal=".islocal,'~'.expand("<slnum>"))
2799
2800 " browse the resulting directory
2715 if islocal 2801 if islocal
2716 call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(islocal,treedir)) 2802 call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(islocal,treedir))
2717 else 2803 else
2718 call s:NetrwBrowse(islocal,s:NetrwBrowseChgDir(islocal,treedir)) 2804 call s:NetrwBrowse(islocal,s:NetrwBrowseChgDir(islocal,treedir))
2719 endif 2805 endif
2806
2720 " call Dret("netrw#SetTreetop") 2807 " call Dret("netrw#SetTreetop")
2721 endfun 2808 endfun
2722 2809
2723 " =========================================== 2810 " ===========================================
2724 " s:NetrwGetFile: Function to read temporary file "tfile" with command "readcmd". {{{2 2811 " s:NetrwGetFile: Function to read temporary file "tfile" with command "readcmd". {{{2
2753 if g:netrw_cygwin 2840 if g:netrw_cygwin
2754 let tfile= substitute(a:tfile,g:netrw_cygdrive.'/\(.\)','\1:','') 2841 let tfile= substitute(a:tfile,g:netrw_cygdrive.'/\(.\)','\1:','')
2755 else 2842 else
2756 let tfile= a:tfile 2843 let tfile= a:tfile
2757 endif 2844 endif
2758 " call Decho("exe sil! keepalt file ".fnameescape(tfile),'~'.expand("<slnum>")) 2845 call s:NetrwBufRename(tfile)
2759 exe "sil! keepalt file ".fnameescape(tfile)
2760 2846
2761 " edit temporary file (ie. read the temporary file in) 2847 " edit temporary file (ie. read the temporary file in)
2762 if rfile =~ '\.zip$' 2848 if rfile =~ '\.zip$'
2763 " call Decho("handling remote zip file with zip#Browse(tfile<".tfile.">)",'~'.expand("<slnum>")) 2849 " call Decho("handling remote zip file with zip#Browse(tfile<".tfile.">)",'~'.expand("<slnum>"))
2764 call zip#Browse(tfile) 2850 call zip#Browse(tfile)
2781 " call Decho("edit temporary file",'~'.expand("<slnum>")) 2867 " call Decho("edit temporary file",'~'.expand("<slnum>"))
2782 NetrwKeepj e! 2868 NetrwKeepj e!
2783 endif 2869 endif
2784 2870
2785 " rename buffer back to remote filename 2871 " rename buffer back to remote filename
2786 " call Decho("exe sil! keepalt file ".fnameescape(rfile),'~'.expand("<slnum>")) 2872 call s:NetrwBufRename(rfile)
2787 exe "sil! NetrwKeepj keepalt file ".fnameescape(rfile)
2788 2873
2789 " Detect filetype of local version of remote file. 2874 " Detect filetype of local version of remote file.
2790 " Note that isk must not include a "/" for scripts.vim 2875 " Note that isk must not include a "/" for scripts.vim
2791 " to process this detection correctly. 2876 " to process this detection correctly.
2792 " call Decho("detect filetype of local version of remote file",'~'.expand("<slnum>")) 2877 " call Decho("detect filetype of local version of remote file",'~'.expand("<slnum>"))
2793 let iskkeep= &l:isk 2878 let iskkeep= &l:isk
2794 setl isk-=/ 2879 setl isk-=/
2795 let &l:isk= iskkeep 2880 let &l:isk= iskkeep
2796 " call Dredir("renamed buffer back to remote filename<".rfile."> : expand(%)<".expand("%").">","ls!") 2881 " call Dredir("ls!","NetrwGetFile (renamed buffer back to remote filename<".rfile."> : expand(%)<".expand("%").">)")
2797 let line1 = 1 2882 let line1 = 1
2798 let line2 = line("$") 2883 let line2 = line("$")
2799 2884
2800 elseif !&ma 2885 elseif !&ma
2801 " attempting to read a file after the current line in the file, but the buffer is not modifiable 2886 " attempting to read a file after the current line in the file, but the buffer is not modifiable
2862 " g:netrw_machine= hostname 2947 " g:netrw_machine= hostname
2863 " b:netrw_fname = filename 2948 " b:netrw_fname = filename
2864 " g:netrw_port = optional port number (for ftp) 2949 " g:netrw_port = optional port number (for ftp)
2865 " g:netrw_choice = copy of input url (choice) 2950 " g:netrw_choice = copy of input url (choice)
2866 fun! s:NetrwMethod(choice) 2951 fun! s:NetrwMethod(choice)
2867 " call Dfunc("NetrwMethod(a:choice<".a:choice.">)") 2952 " call Dfunc("s:NetrwMethod(a:choice<".a:choice.">)")
2868 2953
2869 " sanity check: choice should have at least three slashes in it 2954 " sanity check: choice should have at least three slashes in it
2870 if strlen(substitute(a:choice,'[^/]','','g')) < 3 2955 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) 2956 call netrw#ErrorMsg(s:ERROR,"not a netrw-style url; netrw uses protocol://[user@]hostname[:port]/[path])",78)
2872 let b:netrw_method = -1 2957 let b:netrw_method = -1
2873 " call Dret("NetrwMethod : incorrect url format<".a:choice.">") 2958 " call Dret("s:NetrwMethod : incorrect url format<".a:choice.">")
2874 return 2959 return
2875 endif 2960 endif
2876 2961
2877 " record current g:netrw_machine, if any 2962 " record current g:netrw_machine, if any
2878 " curmachine used if protocol == ftp and no .netrc 2963 " curmachine used if protocol == ftp and no .netrc
2981 if userid != "" 3066 if userid != ""
2982 let g:netrw_uid= userid 3067 let g:netrw_uid= userid
2983 endif 3068 endif
2984 3069
2985 if curmachine != g:netrw_machine 3070 if curmachine != g:netrw_machine
2986 if exists("s:netwr_hup[".g:netrw_machine."]") 3071 if exists("s:netrw_hup[".g:netrw_machine."]")
2987 call NetUserPass("ftp:".g:netrw_machine) 3072 call NetUserPass("ftp:".g:netrw_machine)
2988 elseif exists("s:netrw_passwd") 3073 elseif exists("s:netrw_passwd")
2989 " if there's a change in hostname, require password re-entry 3074 " if there's a change in hostname, require password re-entry
2990 unlet s:netrw_passwd 3075 unlet s:netrw_passwd
2991 endif 3076 endif
3111 " endif "Decho 3196 " endif "Decho
3112 " if exists("s:netrw_passwd") "Decho 3197 " if exists("s:netrw_passwd") "Decho
3113 " call Decho("s:netrw_passwd <".s:netrw_passwd.">",'~'.expand("<slnum>")) 3198 " call Decho("s:netrw_passwd <".s:netrw_passwd.">",'~'.expand("<slnum>"))
3114 " endif "Decho 3199 " endif "Decho
3115 " call Decho("b:netrw_fname <".b:netrw_fname.">",'~'.expand("<slnum>")) 3200 " 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) 3201 " call Dret("s:NetrwMethod : b:netrw_method=".b:netrw_method." g:netrw_port=".g:netrw_port)
3117 endfun 3202 endfun
3118 3203
3119 " ------------------------------------------------------------------------ 3204 " ------------------------------------------------------------------------
3120 " NetReadFixup: this sort of function is typically written by the user {{{2 3205 " NetReadFixup: this sort of function is typically written by the user {{{2
3121 " to handle extra junk that their system's ftp dumps 3206 " to handle extra junk that their system's ftp dumps
3255 endif 3340 endif
3256 3341
3257 " call Dret("NetUserPass : uid<".g:netrw_uid."> passwd<".s:netrw_passwd.">") 3342 " call Dret("NetUserPass : uid<".g:netrw_uid."> passwd<".s:netrw_passwd.">")
3258 endfun 3343 endfun
3259 3344
3260 " =========================================== 3345 " =================================
3261 " Shared Browsing Support: {{{1 3346 " Shared Browsing Support: {{{1
3262 " =========================================== 3347 " =================================
3263 3348
3264 " --------------------------------------------------------------------- 3349 " ---------------------------------------------------------------------
3265 " s:ExplorePatHls: converts an Explore pattern into a regular expression search pattern {{{2 3350 " s:ExplorePatHls: converts an Explore pattern into a regular expression search pattern {{{2
3266 fun! s:ExplorePatHls(pattern) 3351 fun! s:ExplorePatHls(pattern)
3267 " call Dfunc("s:ExplorePatHls(pattern<".a:pattern.">)") 3352 " call Dfunc("s:ExplorePatHls(pattern<".a:pattern.">)")
3560 fun! s:NetrwBrowse(islocal,dirname) 3645 fun! s:NetrwBrowse(islocal,dirname)
3561 if !exists("w:netrw_liststyle")|let w:netrw_liststyle= g:netrw_liststyle|endif 3646 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()) 3647 " 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>")) 3648 " call Decho("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>")) 3649 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>"))
3565 " call Dredir("ls!") 3650 " call Dredir("ls!","s:NetrwBrowse")
3566 3651
3567 " save alternate-file's filename if w:netrw_rexlocal doesn't exist 3652 " 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 3653 " This is useful when one edits a local file, then :e ., then :Rex
3569 if a:islocal && !exists("w:netrw_rexfile") && bufname("#") != "" 3654 if a:islocal && !exists("w:netrw_rexfile") && bufname("#") != ""
3570 let w:netrw_rexfile= bufname("#") 3655 let w:netrw_rexfile= bufname("#")
3581 let dirname= simplify(a:dirname) 3666 let dirname= simplify(a:dirname)
3582 else 3667 else
3583 let dirname= a:dirname 3668 let dirname= a:dirname
3584 endif 3669 endif
3585 3670
3671 " repoint t:netrw_lexbufnr if appropriate
3672 if exists("t:netrw_lexbufnr") && bufnr("%") == t:netrw_lexbufnr
3673 " call Decho("set repointlexbufnr to true!")
3674 let repointlexbufnr= 1
3675 endif
3676
3586 if exists("s:netrw_skipbrowse") 3677 if exists("s:netrw_skipbrowse")
3587 unlet s:netrw_skipbrowse 3678 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>")) 3679 " 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") 3680 " call Dret("s:NetrwBrowse : s:netrw_skipbrowse existed")
3590 return 3681 return
3604 3695
3605 " s:NetrwBrowse : save options: {{{3 3696 " s:NetrwBrowse : save options: {{{3
3606 call s:NetrwOptionSave("w:") 3697 call s:NetrwOptionSave("w:")
3607 3698
3608 " s:NetrwBrowse : re-instate any marked files {{{3 3699 " s:NetrwBrowse : re-instate any marked files {{{3
3609 if exists("s:netrwmarkfilelist_{bufnr('%')}") 3700 if has("syntax") && exists("g:syntax_on") && g:syntax_on
3610 " call Decho("clearing marked files",'~'.expand("<slnum>")) 3701 if exists("s:netrwmarkfilelist_{bufnr('%')}")
3611 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/" 3702 " call Decho("clearing marked files",'~'.expand("<slnum>"))
3703 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/"
3704 endif
3612 endif 3705 endif
3613 3706
3614 if a:islocal && exists("w:netrw_acdkeep") && w:netrw_acdkeep 3707 if a:islocal && exists("w:netrw_acdkeep") && w:netrw_acdkeep
3615 " s:NetrwBrowse : set up "safe" options for local directory/file {{{3 3708 " s:NetrwBrowse : set up "safe" options for local directory/file {{{3
3616 " call Decho("handle w:netrw_acdkeep:",'~'.expand("<slnum>")) 3709 " 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>")) 3710 " call Decho("NetrwKeepj lcd ".fnameescape(dirname)." (due to w:netrw_acdkeep=".w:netrw_acdkeep." - acd=".&acd.")",'~'.expand("<slnum>"))
3618 call s:NetrwLcd(dirname) 3711 if s:NetrwLcd(dirname)
3619 call s:NetrwSafeOptions() 3712 " call Dret("s:NetrwBrowse : lcd failure")
3713 return
3714 endif
3715 " call s:NetrwSafeOptions() " tst953 failed with this enabled.
3620 " call Decho("getcwd<".getcwd().">",'~'.expand("<slnum>")) 3716 " call Decho("getcwd<".getcwd().">",'~'.expand("<slnum>"))
3621 3717
3622 elseif !a:islocal && dirname !~ '[\/]$' && dirname !~ '^"' 3718 elseif !a:islocal && dirname !~ '[\/]$' && dirname !~ '^"'
3623 " s:NetrwBrowse : remote regular file handler {{{3 3719 " s:NetrwBrowse : remote regular file handler {{{3
3624 " call Decho("handle remote regular file: dirname<".dirname.">",'~'.expand("<slnum>")) 3720 " call Decho("handle remote regular file: dirname<".dirname.">",'~'.expand("<slnum>"))
3641 call s:NetrwSafeOptions() 3737 call s:NetrwSafeOptions()
3642 setl ma noro 3738 setl ma noro
3643 " call Decho("setl ma noro",'~'.expand("<slnum>")) 3739 " call Decho("setl ma noro",'~'.expand("<slnum>"))
3644 let b:netrw_curdir = dirname 3740 let b:netrw_curdir = dirname
3645 let url = s:method."://".((s:user == "")? "" : s:user."@").s:machine.(s:port ? ":".s:port : "")."/".s:path 3741 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>")) 3742 call s:NetrwBufRename(url)
3647 exe "sil! NetrwKeepj keepalt file ".fnameescape(url)
3648 exe "sil! NetrwKeepj keepalt doau BufReadPre ".fnameescape(s:fname) 3743 exe "sil! NetrwKeepj keepalt doau BufReadPre ".fnameescape(s:fname)
3649 sil call netrw#NetRead(2,url) 3744 sil call netrw#NetRead(2,url)
3650 " netrw.vim and tar.vim have already handled decompression of the tarball; avoiding gzip.vim error 3745 " netrw.vim and tar.vim have already handled decompression of the tarball; avoiding gzip.vim error
3651 " call Decho("url<".url.">",'~'.expand("<slnum>")) 3746 " call Decho("url<".url.">",'~'.expand("<slnum>"))
3652 " call Decho("s:path<".s:path.">",'~'.expand("<slnum>")) 3747 " call Decho("s:path<".s:path.">",'~'.expand("<slnum>"))
3689 let svpos = winsaveview() 3784 let svpos = winsaveview()
3690 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) 3785 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))
3691 let reusing= s:NetrwGetBuffer(a:islocal,dirname) 3786 let reusing= s:NetrwGetBuffer(a:islocal,dirname)
3692 3787
3693 " maintain markfile highlighting 3788 " maintain markfile highlighting
3694 if exists("s:netrwmarkfilemtch_{bufnr('%')}") && s:netrwmarkfilemtch_{bufnr("%")} != "" 3789 if has("syntax") && exists("g:syntax_on") && g:syntax_on
3695 " call Decho("bufnr(%)=".bufnr('%'),'~'.expand("<slnum>")) 3790 if exists("s:netrwmarkfilemtch_{bufnr('%')}") && s:netrwmarkfilemtch_{bufnr("%")} != ""
3696 " call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/",'~'.expand("<slnum>")) 3791 " " call Decho("bufnr(%)=".bufnr('%'),'~'.expand("<slnum>"))
3697 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/" 3792 " " call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/",'~'.expand("<slnum>"))
3698 else 3793 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/"
3699 " call Decho("2match none",'~'.expand("<slnum>")) 3794 else
3700 2match none 3795 " " call Decho("2match none",'~'.expand("<slnum>"))
3796 2match none
3797 endif
3701 endif 3798 endif
3702 if reusing && line("$") > 1 3799 if reusing && line("$") > 1
3703 call s:NetrwOptionRestore("w:") 3800 call s:NetrwOptionRestore("w:")
3704 " call Decho("setl noma nomod nowrap",'~'.expand("<slnum>")) 3801 " call Decho("setl noma nomod nowrap",'~'.expand("<slnum>"))
3705 setl noma nomod nowrap 3802 setl noma nomod nowrap
3744 " handle g:netrw_keepdir: set vim's current directory to netrw's notion of the current directory {{{3 3841 " handle g:netrw_keepdir: set vim's current directory to netrw's notion of the current directory {{{3
3745 if !g:netrw_keepdir 3842 if !g:netrw_keepdir
3746 " call Decho("handle g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd,'~'.expand("<slnum>")) 3843 " 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>")) 3844 " call Decho("l:acd".(exists("&l:acd")? "=".&l:acd : " doesn't exist"),'~'.expand("<slnum>"))
3748 if !exists("&l:acd") || !&l:acd 3845 if !exists("&l:acd") || !&l:acd
3749 call s:NetrwLcd(b:netrw_curdir) 3846 if s:NetrwLcd(b:netrw_curdir)
3847 " call Dret("s:NetrwBrowse : lcd failure")
3848 return
3849 endif
3750 endif 3850 endif
3751 endif 3851 endif
3752 3852
3753 " -------------------------------- 3853 " --------------------------------
3754 " remote handling: {{{3 3854 " remote handling: {{{3
3813 endif 3913 endif
3814 if v:version >= 700 && has("balloon_eval") && &beval == 0 && &l:bexpr == "" && !exists("g:netrw_nobeval") 3914 if v:version >= 700 && has("balloon_eval") && &beval == 0 && &l:bexpr == "" && !exists("g:netrw_nobeval")
3815 let &l:bexpr= "netrw#BalloonHelp()" 3915 let &l:bexpr= "netrw#BalloonHelp()"
3816 " call Decho("set up balloon help: l:bexpr=".&l:bexpr,'~'.expand("<slnum>")) 3916 " call Decho("set up balloon help: l:bexpr=".&l:bexpr,'~'.expand("<slnum>"))
3817 setl beval 3917 setl beval
3918 endif
3919
3920 " repoint t:netrw_lexbufnr if appropriate
3921 if exists("repointlexbufnr")
3922 let t:netrw_lexbufnr= bufnr("%")
3923 " call Decho("repoint t:netrw_lexbufnr to #".t:netrw_lexbufnr)
3818 endif 3924 endif
3819 3925
3820 " restore position 3926 " restore position
3821 if reusing 3927 if reusing
3822 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) 3928 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))
3958 " " call Dret("s:NetrwFullPath <".filename.">") 4064 " " call Dret("s:NetrwFullPath <".filename.">")
3959 return filename 4065 return filename
3960 endfun 4066 endfun
3961 4067
3962 " --------------------------------------------------------------------- 4068 " ---------------------------------------------------------------------
3963 " s:NetrwGetBuffer: {{{2 4069 " s:NetrwGetBuffer: [get a new|find an old netrw] buffer for a netrw listing {{{2
3964 " returns 0=cleared buffer 4070 " returns 0=cleared buffer
3965 " 1=re-used buffer (buffer not cleared) 4071 " 1=re-used buffer (buffer not cleared)
3966 fun! s:NetrwGetBuffer(islocal,dirname) 4072 fun! s:NetrwGetBuffer(islocal,dirname)
3967 " call Dfunc("s:NetrwGetBuffer(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".g:netrw_liststyle) 4073 " 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>")) 4074 " 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>")) 4075 " call Decho("netrwbuf dictionary=".(exists("s:netrwbuf")? string(s:netrwbuf) : 'n/a'),'~'.expand("<slnum>"))
3970 let dirname= a:dirname 4076 let dirname= a:dirname
3971 4077
3972 " re-use buffer if possible {{{3 4078 " re-use buffer if possible {{{3
3973 " call Decho("--re-use a buffer if possible--",'~'.expand("<slnum>")) 4079 " call Decho("--re-use a buffer if possible--",'~'.expand("<slnum>"))
3974 if !exists("s:netrwbuf") 4080 if !exists("s:netrwbuf")
4081 " call Decho(" s:netrwbuf initialized to {}",'~'.expand("<slnum>"))
3975 let s:netrwbuf= {} 4082 let s:netrwbuf= {}
3976 endif 4083 endif
3977 if has_key(s:netrwbuf,s:NetrwFullPath(dirname)) 4084 " call Decho(" s:netrwbuf =".string(s:netrwbuf),'~'.expand("<slnum>"))
4085 " call Decho(" w:netrw_liststyle =".(exists("w:netrw_liststyle")? w:netrw_liststyle : "n/a"),'~'.expand("<slnum>"))
4086
4087 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
4088 let bufnum = -1
4089
4090 if !empty(s:netrwbuf) && has_key(s:netrwbuf,s:NetrwFullPath(dirname))
4091 if has_key(s:netrwbuf,"NetrwTreeListing")
4092 let bufnum= s:netrwbuf["NetrwTreeListing"]
4093 else
4094 let bufnum= s:netrwbuf[s:NetrwFullPath(dirname)]
4095 endif
4096 " call Decho(" NetrwTreeListing: bufnum#".bufnum,'~'.expand("<slnum>"))
4097 if !bufexists(bufnum)
4098 call remove(s:netrwbuf,"NetrwTreeListing"])
4099 let bufnum= -1
4100 endif
4101 elseif bufnr("NetrwTreeListing") != -1
4102 let bufnum= bufnr("NetrwTreeListing")
4103 " call Decho(" NetrwTreeListing".": bufnum#".bufnum,'~'.expand("<slnum>"))
4104 else
4105 " call Decho(" did not find a NetrwTreeListing buffer",'~'.expand("<slnum>"))
4106 let bufnum= -1
4107 endif
4108
4109 elseif has_key(s:netrwbuf,s:NetrwFullPath(dirname))
3978 let bufnum= s:netrwbuf[s:NetrwFullPath(dirname)] 4110 let bufnum= s:netrwbuf[s:NetrwFullPath(dirname)]
3979 " call Decho("lookup netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."]=".bufnum) 4111 " call Decho(" lookup netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."]=".bufnum,'~'.expand("<slnum>"))
3980 if !bufexists(bufnum) 4112 if !bufexists(bufnum)
3981 call remove(s:netrwbuf,s:NetrwFullPath(dirname)) 4113 call remove(s:netrwbuf,s:NetrwFullPath(dirname))
3982 let bufnum= -1 4114 let bufnum= -1
3983 endif 4115 endif
3984 else 4116
3985 " call Decho("lookup netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."] not a key") 4117 else
4118 " call Decho(" lookup netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."] not a key",'~'.expand("<slnum>"))
3986 let bufnum= -1 4119 let bufnum= -1
3987 endif 4120 endif
4121 " call Decho(" bufnum#".bufnum,'~'.expand("<slnum>"))
3988 4122
3989 " get enew buffer and name it -or- re-use buffer {{{3 4123 " get enew buffer and name it -or- re-use buffer {{{3
3990 if bufnum < 0 " get enew buffer and name it 4124 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>")) 4125 " call Decho("--get enew buffer and name it (bufnum#".bufnum."<0 OR bufexists(".bufnum.")=".bufexists(bufnum)."==0)",'~'.expand("<slnum>"))
3992 call s:NetrwEnew(dirname) 4126 call s:NetrwEnew(dirname)
3993 " call Decho(" got enew buffer#".bufnr("%")." (altbuf<".expand("#").">)",'~'.expand("<slnum>")) 4127 " call Decho(" got enew buffer#".bufnr("%")." (altbuf<".expand("#").">)",'~'.expand("<slnum>"))
3994 " name the buffer 4128 " name the buffer
3995 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST 4129 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
3996 " Got enew buffer; transform into a NetrwTreeListing 4130 " Got enew buffer; transform into a NetrwTreeListing
3997 " call Decho("--transform enew buffer#".bufnr("%")." into a NetrwTreeListing --",'~'.expand("<slnum>")) 4131 " call Decho("--transform enew buffer#".bufnr("%")." into a NetrwTreeListing --",'~'.expand("<slnum>"))
3998 if !exists("s:netrw_treelistnum") 4132 let w:netrw_treebufnr = bufnr("%")
3999 let s:netrw_treelistnum= 1 4133 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 4134 if g:netrw_use_noswf
4007 setl nobl bt=nofile noswf 4135 setl nobl bt=nofile noswf
4008 else 4136 else
4009 setl nobl bt=nofile 4137 setl nobl bt=nofile
4010 endif 4138 endif
4011 nnoremap <silent> <buffer> [[ :sil call <SID>TreeListMove('[[')<cr> 4139 nnoremap <silent> <buffer> [[ :sil call <SID>TreeListMove('[[')<cr>
4012 nnoremap <silent> <buffer> ]] :sil call <SID>TreeListMove(']]')<cr> 4140 nnoremap <silent> <buffer> ]] :sil call <SID>TreeListMove(']]')<cr>
4013 nnoremap <silent> <buffer> [] :sil call <SID>TreeListMove('[]')<cr> 4141 nnoremap <silent> <buffer> [] :sil call <SID>TreeListMove('[]')<cr>
4014 nnoremap <silent> <buffer> ][ :sil call <SID>TreeListMove('][')<cr> 4142 nnoremap <silent> <buffer> ][ :sil call <SID>TreeListMove('][')<cr>
4015 " call Decho(" tree listing#".s:netrw_treelistnum." bufnr=".w:netrw_treebufnr,'~'.expand("<slnum>")) 4143 " call Decho(" tree listing bufnr=".w:netrw_treebufnr,'~'.expand("<slnum>"))
4016 else 4144 else
4017 " let v:errmsg = "" " Decho 4145 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 4146 " enter the new buffer into the s:netrwbuf dictionary
4025 let s:netrwbuf[s:NetrwFullPath(dirname)]= bufnr("%") 4147 let s:netrwbuf[s:NetrwFullPath(dirname)]= bufnr("%")
4026 " call Decho("update netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."]=".bufnr("%"),'~'.expand("<slnum>")) 4148 " call Decho("update netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."]=".bufnr("%"),'~'.expand("<slnum>"))
4027 " call Decho("netrwbuf dictionary=".string(s:netrwbuf),'~'.expand("<slnum>")) 4149 " call Decho("netrwbuf dictionary=".string(s:netrwbuf),'~'.expand("<slnum>"))
4028 endif 4150 endif
4039 " call Decho(" getline(2)<".getline(2).'> does not match "Netrw Directory Listing" : using b '.bufnum,'~'.expand("<slnum>")) 4161 " 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 4162 exe "sil! NetrwKeepj noswapfile keepalt b ".bufnum
4041 endif 4163 endif
4042 " call Decho(" line($)=".line("$"),'~'.expand("<slnum>")) 4164 " call Decho(" line($)=".line("$"),'~'.expand("<slnum>"))
4043 if bufname("%") == '.' 4165 if bufname("%") == '.'
4044 " call Decho("exe sil! keepalt file ".fnameescape(getcwd()),'~'.expand("<slnum>")) 4166 call s:NetrwBufRename(getcwd())
4045 exe "sil! NetrwKeepj keepalt file ".fnameescape(getcwd())
4046 endif 4167 endif
4047 let &ei= eikeep 4168 let &ei= eikeep
4048 4169
4049 if line("$") <= 1 && getline(1) == "" 4170 if line("$") <= 1 && getline(1) == ""
4050 " empty buffer 4171 " empty buffer
4064 return 0 4185 return 0
4065 4186
4066 elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST 4187 elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
4067 " call Decho("--re-use tree listing--",'~'.expand("<slnum>")) 4188 " call Decho("--re-use tree listing--",'~'.expand("<slnum>"))
4068 " call Decho(" clear buffer<".expand("%")."> with :%d",'~'.expand("<slnum>")) 4189 " call Decho(" clear buffer<".expand("%")."> with :%d",'~'.expand("<slnum>"))
4190 setl ma
4069 sil NetrwKeepj %d _ 4191 sil NetrwKeepj %d _
4070 NetrwKeepj call s:NetrwListSettings(a:islocal) 4192 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>")) 4193 " 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>")) 4194 " 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") 4195 " call Dret("s:NetrwGetBuffer 0<cleared buffer> : re-using buffer#".bufnr("%").", but treelist mode always needs a refresh")
4087 " med 1 D H 4209 " med 1 D H
4088 " fast 2 H H 4210 " fast 2 H H
4089 " call Decho("--do netrw settings: make this buffer#".bufnr("%")." not-a-file, modifiable, not line-numbered, etc--",'~'.expand("<slnum>")) 4211 " call Decho("--do netrw settings: make this buffer#".bufnr("%")." not-a-file, modifiable, not line-numbered, etc--",'~'.expand("<slnum>"))
4090 let fname= expand("%") 4212 let fname= expand("%")
4091 NetrwKeepj call s:NetrwListSettings(a:islocal) 4213 NetrwKeepj call s:NetrwListSettings(a:islocal)
4092 " call Decho("exe sil! keepalt file ".fnameescape(fname),'~'.expand("<slnum>")) 4214 call s:NetrwBufRename(fname)
4093 exe "sil! NetrwKeepj keepalt file ".fnameescape(fname)
4094 4215
4095 " delete all lines from buffer {{{3 4216 " delete all lines from buffer {{{3
4096 " call Decho("--delete all lines from buffer--",'~'.expand("<slnum>")) 4217 " call Decho("--delete all lines from buffer--",'~'.expand("<slnum>"))
4097 " call Decho(" clear buffer<".expand("%")."> with :%d",'~'.expand("<slnum>")) 4218 " call Decho(" clear buffer<".expand("%")."> with :%d",'~'.expand("<slnum>"))
4098 sil! keepalt NetrwKeepj %d _ 4219 sil! keepalt NetrwKeepj %d _
4231 " call Dret("s:NetrwGetWord <".dirname.">") 4352 " call Dret("s:NetrwGetWord <".dirname.">")
4232 return dirname 4353 return dirname
4233 endfun 4354 endfun
4234 4355
4235 " --------------------------------------------------------------------- 4356 " ---------------------------------------------------------------------
4236 " s:NetrwListSettings: make standard settings for a netrw listing {{{2 4357 " s:NetrwListSettings: make standard settings for making a netrw listing {{{2
4358 " g:netrw_bufsettings will be used after the listing is produced.
4359 " Called by s:NetrwGetBuffer()
4237 fun! s:NetrwListSettings(islocal) 4360 fun! s:NetrwListSettings(islocal)
4238 " call Dfunc("s:NetrwListSettings(islocal=".a:islocal.")") 4361 " 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>")) 4362 " 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("%") 4363 let fname= bufname("%")
4241 " " call Decho("(NetrwListSettings) setl bt=nofile nobl ma nonu nowrap noro nornu",'~'.expand("<slnum>")) 4364 " " call Decho("(NetrwListSettings) setl bt=nofile nobl ma nonu nowrap noro nornu",'~'.expand("<slnum>"))
4242 setl bt=nofile nobl ma nonu nowrap noro nornu 4365 " nobl noma nomod nonu noma nowrap ro nornu (std g:netrw_bufsettings)
4243 " call Decho("(NetrwListSettings) exe sil! keepalt file ".fnameescape(fname),'~'.expand("<slnum>")) 4366 setl bt=nofile nobl ma nonu nowrap noro nornu
4244 exe "sil! keepalt file ".fnameescape(fname) 4367 call s:NetrwBufRename(fname)
4245 if g:netrw_use_noswf 4368 if g:netrw_use_noswf
4246 setl noswf 4369 setl noswf
4247 endif 4370 endif
4248 " call Dredir("ls!") 4371 " call Dredir("ls!","s:NetrwListSettings")
4249 " call Decho("(NetrwListSettings) exe setl ts=".(g:netrw_maxfilenamelen+1),'~'.expand("<slnum>")) 4372 " call Decho("(NetrwListSettings) exe setl ts=".(g:netrw_maxfilenamelen+1),'~'.expand("<slnum>"))
4250 exe "setl ts=".(g:netrw_maxfilenamelen+1) 4373 exe "setl ts=".(g:netrw_maxfilenamelen+1)
4251 setl isk+=.,~,- 4374 setl isk+=.,~,-
4252 if g:netrw_fastbrowse > a:islocal 4375 if g:netrw_fastbrowse > a:islocal
4253 setl bh=hide 4376 setl bh=hide
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>")) 4380 " 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") 4381 " call Dret("s:NetrwListSettings")
4259 endfun 4382 endfun
4260 4383
4261 " --------------------------------------------------------------------- 4384 " ---------------------------------------------------------------------
4262 " s:NetrwListStyle: {{{2 4385 " s:NetrwListStyle: change list style (thin - long - wide - tree) {{{2
4263 " islocal=0: remote browsing 4386 " islocal=0: remote browsing
4264 " =1: local browsing 4387 " =1: local browsing
4265 fun! s:NetrwListStyle(islocal) 4388 fun! s:NetrwListStyle(islocal)
4266 " call Dfunc("NetrwListStyle(islocal=".a:islocal.") w:netrw_liststyle=".w:netrw_liststyle) 4389 " call Dfunc("NetrwListStyle(islocal=".a:islocal.") w:netrw_liststyle=".w:netrw_liststyle)
4267 4390
4273 let w:netrw_liststyle = (w:netrw_liststyle + 1) % s:MAXLIST 4396 let w:netrw_liststyle = (w:netrw_liststyle + 1) % s:MAXLIST
4274 " call Decho("fname<".fname.">",'~'.expand("<slnum>")) 4397 " call Decho("fname<".fname.">",'~'.expand("<slnum>"))
4275 " call Decho("chgd w:netrw_liststyle to ".w:netrw_liststyle,'~'.expand("<slnum>")) 4398 " 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>")) 4399 " call Decho("b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "doesn't exist").">",'~'.expand("<slnum>"))
4277 4400
4401 " repoint t:netrw_lexbufnr if appropriate
4402 if exists("t:netrw_lexbufnr") && bufnr("%") == t:netrw_lexbufnr
4403 " call Decho("set repointlexbufnr to true!")
4404 let repointlexbufnr= 1
4405 endif
4406
4278 if w:netrw_liststyle == s:THINLIST 4407 if w:netrw_liststyle == s:THINLIST
4279 " use one column listing 4408 " use one column listing
4280 " call Decho("use one column list",'~'.expand("<slnum>")) 4409 " call Decho("use one column list",'~'.expand("<slnum>"))
4281 let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge') 4410 let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge')
4282 4411
4314 " refresh the listing 4443 " refresh the listing
4315 " call Decho("refresh the listing",'~'.expand("<slnum>")) 4444 " call Decho("refresh the listing",'~'.expand("<slnum>"))
4316 NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) 4445 NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
4317 NetrwKeepj call s:NetrwCursor() 4446 NetrwKeepj call s:NetrwCursor()
4318 4447
4448 " repoint t:netrw_lexbufnr if appropriate
4449 if exists("repointlexbufnr")
4450 let t:netrw_lexbufnr= bufnr("%")
4451 " call Decho("repoint t:netrw_lexbufnr to #".t:netrw_lexbufnr)
4452 endif
4453
4319 " restore position; keep cursor on the filename 4454 " restore position; keep cursor on the filename
4320 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) 4455 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))
4321 NetrwKeepj call winrestview(svpos) 4456 NetrwKeepj call winrestview(svpos)
4322 let @@= ykeep 4457 let @@= ykeep
4323 4458
4337 let svpos= winsaveview() 4472 let svpos= winsaveview()
4338 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) 4473 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))
4339 call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) 4474 call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
4340 4475
4341 " keep cursor on the filename 4476 " keep cursor on the filename
4342 let fname= s:NetrwGetWord() 4477 if g:netrw_banner && exists("w:netrw_bannercnt") && line(".") >= w:netrw_bannercnt
4343 sil NetrwKeepj $ 4478 let fname= s:NetrwGetWord()
4344 let result= search('\%(^\%(|\+\s\)\=\|\s\{2,}\)\zs'.escape(fname,'.\[]*$^').'\%(\s\{2,}\|$\)','bc') 4479 sil NetrwKeepj $
4345 " call Decho("search result=".result." w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'N/A'),'~'.expand("<slnum>")) 4480 let result= search('\%(^\%(|\+\s\)\=\|\s\{2,}\)\zs'.escape(fname,'.\[]*$^').'\%(\s\{2,}\|$\)','bc')
4346 if result <= 0 && exists("w:netrw_bannercnt") 4481 " " 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 4482 if result <= 0 && exists("w:netrw_bannercnt")
4483 exe "NetrwKeepj ".w:netrw_bannercnt
4484 endif
4348 endif 4485 endif
4349 let @@= ykeep 4486 let @@= ykeep
4350 " call Dret("s:NetrwBannerCtrl : g:netrw_banner=".g:netrw_banner) 4487 " call Dret("s:NetrwBannerCtrl : g:netrw_banner=".g:netrw_banner)
4351 endfun 4488 endfun
4352 4489
4504 " Don't try to change-directory: this can happen, for example, when netrw#ErrorMsg has been called 4641 " 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. 4642 " and the current window is the NetrwMessage window.
4506 let @@= ykeep 4643 let @@= ykeep
4507 " call Decho("b:netrw_curdir doesn't exist!",'~'.expand("<slnum>")) 4644 " call Decho("b:netrw_curdir doesn't exist!",'~'.expand("<slnum>"))
4508 " call Decho("getcwd<".getcwd().">",'~'.expand("<slnum>")) 4645 " call Decho("getcwd<".getcwd().">",'~'.expand("<slnum>"))
4509 " call Dredir("ls!") 4646 " call Dredir("ls!","s:NetrwBrowseChgDir")
4510 " call Dret("s:NetrwBrowseChgDir") 4647 " call Dret("s:NetrwBrowseChgDir")
4511 return 4648 return
4512 endif 4649 endif
4513 " call Decho("b:netrw_curdir<".b:netrw_curdir.">") 4650 " call Decho("b:netrw_curdir<".b:netrw_curdir.">")
4514 4651
4515 " NetrwBrowseChgDir: save options and initialize {{{3 4652 " NetrwBrowseChgDir: save options and initialize {{{3
4516 " call Decho("saving options",'~'.expand("<slnum>")) 4653 " call Decho("saving options",'~'.expand("<slnum>"))
4517 call s:SavePosn(s:netrw_nbcd) 4654 call s:SavePosn(s:netrw_posn)
4518 NetrwKeepj call s:NetrwOptionSave("s:") 4655 NetrwKeepj call s:NetrwOptionSave("s:")
4519 NetrwKeepj call s:NetrwSafeOptions() 4656 NetrwKeepj call s:NetrwSafeOptions()
4520 if (has("win32") || has("win95") || has("win64") || has("win16")) 4657 if (has("win32") || has("win95") || has("win64") || has("win16"))
4521 let dirname = substitute(b:netrw_curdir,'\\','/','ge') 4658 let dirname = substitute(b:netrw_curdir,'\\','/','ge')
4522 else 4659 else
4537 let g:netrw_quickhelp= (g:netrw_quickhelp + 1)%len(s:QuickHelp) 4674 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>")) 4675 " 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 4676 setl ma noro nowrap
4540 NetrwKeepj call setline(line('.'),'" Quick Help: <F1>:help '.s:QuickHelp[g:netrw_quickhelp]) 4677 NetrwKeepj call setline(line('.'),'" Quick Help: <F1>:help '.s:QuickHelp[g:netrw_quickhelp])
4541 setl noma nomod nowrap 4678 setl noma nomod nowrap
4542 call s:RestorePosn(s:netrw_nbcd)
4543 NetrwKeepj call s:NetrwOptionRestore("s:") 4679 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>")) 4680 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
4545 endif 4681 endif
4546 endif 4682 endif
4547 " else " Decho 4683 " else " Decho
4867 " call Decho("doing option restore (dorestore=".dorestore.")",'~'.expand("<slnum>")) 5003 " call Decho("doing option restore (dorestore=".dorestore.")",'~'.expand("<slnum>"))
4868 NetrwKeepj call s:NetrwOptionRestore("s:") 5004 NetrwKeepj call s:NetrwOptionRestore("s:")
4869 " else " Decho 5005 " else " Decho
4870 " call Decho("skipping option restore (dorestore==0): hidden=".&hidden." bufhidden=".&bufhidden." mod=".&mod,'~'.expand("<slnum>")) 5006 " call Decho("skipping option restore (dorestore==0): hidden=".&hidden." bufhidden=".&bufhidden." mod=".&mod,'~'.expand("<slnum>"))
4871 endif 5007 endif
4872 call s:RestorePosn(s:netrw_nbcd)
4873 if dolockout && dorestore 5008 if dolockout && dorestore
4874 " call Decho("restore: filewritable(dirname<".dirname.">)=".filewritable(dirname),'~'.expand("<slnum>")) 5009 " call Decho("restore: filewritable(dirname<".dirname.">)=".filewritable(dirname),'~'.expand("<slnum>"))
4875 if filewritable(dirname) 5010 if filewritable(dirname)
4876 " call Decho("restore: doing modification lockout settings: ma nomod noro",'~'.expand("<slnum>")) 5011 " call Decho("restore: doing modification lockout settings: ma nomod noro",'~'.expand("<slnum>"))
4877 " call Decho("restore: setl ma nomod noro",'~'.expand("<slnum>")) 5012 " call Decho("restore: setl ma nomod noro",'~'.expand("<slnum>"))
4882 " call Decho("restore: setl ma nomod noro",'~'.expand("<slnum>")) 5017 " call Decho("restore: setl ma nomod noro",'~'.expand("<slnum>"))
4883 setl ma ro nomod 5018 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>")) 5019 " 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 5020 endif
4886 endif 5021 endif
5022 call s:RestorePosn(s:netrw_posn)
4887 let @@= ykeep 5023 let @@= ykeep
4888 5024
4889 " call Dret("s:NetrwBrowseChgDir <".dirname."> : curpos<".string(getpos(".")).">") 5025 " call Dret("s:NetrwBrowseChgDir <".dirname."> : curpos<".string(getpos(".")).">")
4890 return dirname 5026 return dirname
4891 endfun 5027 endfun
4903 " directories. 5039 " directories.
4904 " call Dret("s:NetrwBrowseUpDir : cursor not in file area") 5040 " call Dret("s:NetrwBrowseUpDir : cursor not in file area")
4905 return 5041 return
4906 endif 5042 endif
4907 5043
4908 if !exists("w:netrw_liststyle") || w:netrw_liststyle != s:TREELIST
4909 call s:SavePosn(s:netrw_nbcd)
4910 endif
4911
4912 norm! 0 5044 norm! 0
4913 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") 5045 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict")
4914 " call Decho("case: treestyle",'~'.expand("<slnum>")) 5046 " call Decho("case: treestyle",'~'.expand("<slnum>"))
4915 let curline= getline(".") 5047 let curline= getline(".")
4916 let swwline= winline() - 1 5048 let swwline= winline() - 1
4917 if exists("w:netrw_treetop") 5049 if exists("w:netrw_treetop")
4918 let b:netrw_curdir= w:netrw_treetop 5050 let b:netrw_curdir= w:netrw_treetop
4919 endif 5051 elseif exists("b:netrw_curdir")
4920 let curdir= b:netrw_curdir 5052 let w:netrw_treetop= b:netrw_curdir
5053 else
5054 let w:netrw_treetop= getcwd()
5055 let b:netrw_curdir = w:netrw_treetop
5056 endif
5057 let curfile = getline(".")
5058 let curpath = s:NetrwTreePath(w:netrw_treetop)
4921 if a:islocal 5059 if a:islocal
4922 call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,'../')) 5060 call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,'../'))
4923 else 5061 else
4924 call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,'../')) 5062 call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,'../'))
4925 endif 5063 endif
4926 if !search('\c^'.s:treedepthstring.curline,'cw') 5064 " call Decho("looking for curfile<^".s:treedepthstring.curfile.">",'~'.expand("<slnum>"))
4927 if !search('\c^'.curline,'cw') 5065 " call Decho("having curpath<".curpath.">",'~'.expand("<slnum>"))
4928 sil! NetrwKeepj 1 5066 if w:netrw_treetop == '/'
4929 endif 5067 keepj call search('^\M'.curfile,"w")
4930 endif 5068 elseif curfile == '../'
4931 exe "sil! NetrwKeepj norm! z\<cr>" 5069 keepj call search('^\M'.curfile,"wb")
4932 while winline() < swwline 5070 else
4933 let curwinline= winline() 5071 " call Decho("search(^\\M".s:treedepthstring.curfile.") backwards"))
4934 exe "sil! NetrwKeepj norm! \<c-y>" 5072 while 1
4935 if curwinline == winline() 5073 keepj call search('^\M'.s:treedepthstring.curfile,"wb")
4936 break 5074 let treepath= s:NetrwTreePath(w:netrw_treetop)
4937 endif 5075 " call Decho("..current treepath<".treepath.">",'~'.expand("<slnum>"))
4938 endwhile 5076 if treepath == curpath
5077 break
5078 endif
5079 endwhile
5080 endif
5081
4939 else 5082 else
4940 " call Decho("case: not treestyle",'~'.expand("<slnum>")) 5083 " call Decho("case: not treestyle",'~'.expand("<slnum>"))
5084 call s:SavePosn(s:netrw_posn)
4941 if exists("b:netrw_curdir") 5085 if exists("b:netrw_curdir")
4942 let curdir= b:netrw_curdir 5086 let curdir= b:netrw_curdir
4943 else 5087 else
4944 let curdir= expand(getcwd()) 5088 let curdir= expand(getcwd())
4945 endif 5089 endif
4946 if a:islocal 5090 if a:islocal
4947 call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,'../')) 5091 call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,'../'))
4948 else 5092 else
4949 call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,'../')) 5093 call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,'../'))
4950 endif 5094 endif
4951 if has_key(s:netrw_nbcd,bufnr("%")) 5095 call s:RestorePosn(s:netrw_posn)
4952 call s:RestorePosn(s:netrw_nbcd) 5096 let curdir= substitute(curdir,'^.*[\/]','','')
4953 elseif exists("w:netrw_bannercnt") 5097 call search('\<'.curdir.'/','wc')
4954 " call Decho("moving to line#".w:netrw_bannercnt,'~'.expand("<slnum>")) 5098 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") 5099 " call Dret("s:NetrwBrowseUpDir")
4963 endfun 5100 endfun
4964 5101
4965 " --------------------------------------------------------------------- 5102 " ---------------------------------------------------------------------
4966 " netrw#BrowseX: (implements "x") executes a special "viewer" script or program for the {{{2 5103 " netrw#BrowseX: (implements "x") executes a special "viewer" script or program for the {{{2
4967 " given filename; typically this means given their extension. 5104 " given filename; typically this means given their extension.
4968 " 0=local, 1=remote 5105 " 0=local, 1=remote
4969 fun! netrw#BrowseX(fname,remote) 5106 fun! netrw#BrowseX(fname,remote)
4970 " call Dfunc("netrw#BrowseX(fname<".a:fname."> remote=".a:remote.")") 5107 " call Dfunc("netrw#BrowseX(fname<".a:fname."> remote=".a:remote.")")
4971 5108
4972 " if its really just a directory, then do a "gf" instead 5109 " 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\=:') 5110 if (a:remote == 0 && isdirectory(a:fname)) || (a:remote == 1 && a:fname =~ '/$' && a:fname !~ '^https\=:')
4974 norm! gf 5111 norm! gf
4975 " call Dret("netrw#BrowseX : did gf instead") 5112 " call Dret("(netrw#BrowseX) did gf instead")
4976 endif 5113 endif
4977
4978 5114
4979 let ykeep = @@ 5115 let ykeep = @@
4980 let screenposn = winsaveview() 5116 let screenposn = winsaveview()
4981 " call Decho("saving posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>")) 5117 " call Decho("(netrw#BrowseX) saving posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>"))
4982 5118
4983 " need to save and restore aw setting as gx can invoke this function from non-netrw buffers 5119 " need to save and restore aw setting as gx can invoke this function from non-netrw buffers
4984 let awkeep = &aw 5120 let awkeep = &aw
4985 set noaw 5121 set noaw
4986 5122
4987 " special core dump handler 5123 " special core dump handler
4988 if a:fname =~ '/core\(\.\d\+\)\=$' 5124 if a:fname =~ '/core\(\.\d\+\)\=$'
4989 if exists("g:Netrw_corehandler") 5125 if exists("g:Netrw_corehandler")
4990 if type(g:Netrw_corehandler) == 2 5126 if type(g:Netrw_corehandler) == 2
4991 " g:Netrw_corehandler is a function reference (see :help Funcref) 5127 " g:Netrw_corehandler is a function reference (see :help Funcref)
4992 " call Decho("g:Netrw_corehandler is a funcref",'~'.expand("<slnum>")) 5128 " call Decho("(netrw#BrowseX) g:Netrw_corehandler is a funcref",'~'.expand("<slnum>"))
4993 call g:Netrw_corehandler(s:NetrwFile(a:fname)) 5129 call g:Netrw_corehandler(s:NetrwFile(a:fname))
4994 elseif type(g:Netrw_corehandler) == 3 5130 elseif type(g:Netrw_corehandler) == 3
4995 " g:Netrw_corehandler is a List of function references (see :help Funcref) 5131 " g:Netrw_corehandler is a List of function references (see :help Funcref)
4996 " call Decho("g:Netrw_corehandler is a List",'~'.expand("<slnum>")) 5132 " call Decho("(netrw#BrowseX) g:Netrw_corehandler is a List",'~'.expand("<slnum>"))
4997 for Fncref in g:Netrw_corehandler 5133 for Fncref in g:Netrw_corehandler
4998 if type(FncRef) == 2 5134 if type(FncRef) == 2
4999 call FncRef(a:fname) 5135 call FncRef(a:fname)
5000 endif 5136 endif
5001 endfor 5137 endfor
5002 endif 5138 endif
5003 " call Decho("restoring posn to screenposn<".string(screenposn).">,'~'.expand("<slnum>"))" 5139 " call Decho("(netrw#BrowseX) restoring posn: screenposn<".string(screenposn).">,'~'.expand("<slnum>"))"
5004 call winrestview(screenposn) 5140 call winrestview(screenposn)
5005 let @@= ykeep 5141 let @@= ykeep
5006 let &aw= awkeep 5142 let &aw= awkeep
5007 " call Dret("netrw#BrowseX : coredump handler invoked") 5143 " call Dret("netrw#BrowseX : coredump handler invoked")
5008 return 5144 return
5013 " (lower case the extension, make a local copy of a remote file) 5149 " (lower case the extension, make a local copy of a remote file)
5014 let exten= substitute(a:fname,'.*\.\(.\{-}\)','\1','e') 5150 let exten= substitute(a:fname,'.*\.\(.\{-}\)','\1','e')
5015 if has("win32") || has("win95") || has("win64") || has("win16") 5151 if has("win32") || has("win95") || has("win64") || has("win16")
5016 let exten= substitute(exten,'^.*$','\L&\E','') 5152 let exten= substitute(exten,'^.*$','\L&\E','')
5017 endif 5153 endif
5018 " call Decho("exten<".exten.">",'~'.expand("<slnum>")) 5154 if exten =~ "[\\/]"
5155 let exten= ""
5156 endif
5157 " call Decho("(netrw#BrowseX) exten<".exten.">",'~'.expand("<slnum>"))
5019 5158
5020 if a:remote == 1 5159 if a:remote == 1
5021 " create a local copy 5160 " create a local copy
5022 " call Decho("remote: a:remote=".a:remote.": create a local copy of <".a:fname.">",'~'.expand("<slnum>")) 5161 " call Decho("(netrw#BrowseX) remote: a:remote=".a:remote.": create a local copy of <".a:fname.">",'~'.expand("<slnum>"))
5023 setl bh=delete 5162 setl bh=delete
5024 call netrw#NetRead(3,a:fname) 5163 call netrw#NetRead(3,a:fname)
5025 " attempt to rename tempfile 5164 " attempt to rename tempfile
5026 let basename= substitute(a:fname,'^\(.*\)/\(.*\)\.\([^.]*\)$','\2','') 5165 let basename= substitute(a:fname,'^\(.*\)/\(.*\)\.\([^.]*\)$','\2','')
5027 let newname = substitute(s:netrw_tmpfile,'^\(.*\)/\(.*\)\.\([^.]*\)$','\1/'.basename.'.\3','') 5166 let newname = substitute(s:netrw_tmpfile,'^\(.*\)/\(.*\)\.\([^.]*\)$','\1/'.basename.'.\3','')
5028 " call Decho("basename<".basename.">",'~'.expand("<slnum>")) 5167 " call Decho("(netrw#BrowseX) basename<".basename.">",'~'.expand("<slnum>"))
5029 " call Decho("newname <".newname.">",'~'.expand("<slnum>")) 5168 " call Decho("(netrw#BrowseX) newname <".newname.">",'~'.expand("<slnum>"))
5030 if rename(s:netrw_tmpfile,newname) == 0 5169 if s:netrw_tmpfile != newname && newname != ""
5031 " renaming succeeded 5170 if rename(s:netrw_tmpfile,newname) == 0
5032 let fname= newname 5171 " renaming succeeded
5033 else 5172 " call Decho("(netrw#BrowseX) renaming succeeded (tmpfile<".s:netrw_tmpfile."> to <".newname.">)")
5034 " renaming failed 5173 let fname= newname
5174 else
5175 " renaming failed
5176 " call Decho("(netrw#BrowseX) renaming failed (tmpfile<".s:netrw_tmpfile."> to <".newname.">)")
5177 let fname= s:netrw_tmpfile
5178 endif
5179 else
5035 let fname= s:netrw_tmpfile 5180 let fname= s:netrw_tmpfile
5036 endif 5181 endif
5037 else 5182 else
5038 " call Decho("local: a:remote=".a:remote.": handling local copy of <".a:fname.">",'~'.expand("<slnum>")) 5183 " call Decho("(netrw#BrowseX) local: a:remote=".a:remote.": handling local copy of <".a:fname.">",'~'.expand("<slnum>"))
5039 let fname= a:fname 5184 let fname= a:fname
5040 " special ~ handler for local 5185 " special ~ handler for local
5041 if fname =~ '^\~' && expand("$HOME") != "" 5186 if fname =~ '^\~' && expand("$HOME") != ""
5042 " call Decho('invoking special ~ handler','~'.expand("<slnum>")) 5187 " call Decho('invoking special ~ handler','~'.expand("<slnum>"))
5043 let fname= s:NetrwFile(substitute(fname,'^\~',expand("$HOME"),'')) 5188 let fname= s:NetrwFile(substitute(fname,'^\~',expand("$HOME"),''))
5044 endif 5189 endif
5045 endif 5190 endif
5046 " call Decho("fname<".fname.">",'~'.expand("<slnum>")) 5191 " call Decho("(netrw#BrowseX) fname<".fname.">",'~'.expand("<slnum>"))
5047 " call Decho("exten<".exten."> "."netrwFileHandlers#NFH_".exten."():exists=".exists("*netrwFileHandlers#NFH_".exten),'~'.expand("<slnum>")) 5192 " call Decho("(netrw#BrowseX) exten<".exten."> "."netrwFileHandlers#NFH_".exten."():exists=".exists("*netrwFileHandlers#NFH_".exten),'~'.expand("<slnum>"))
5048 5193
5049 " set up redirection (avoids browser messages) 5194 " set up redirection (avoids browser messages)
5050 " by default, g:netrw_suppress_gx_mesg is true 5195 " by default, g:netrw_suppress_gx_mesg is true
5051 if g:netrw_suppress_gx_mesg 5196 if g:netrw_suppress_gx_mesg
5052 if &srr =~ "%s" 5197 if &srr =~ "%s"
5059 let redir= &srr . "nul" 5204 let redir= &srr . "nul"
5060 else 5205 else
5061 let redir= &srr . "/dev/null" 5206 let redir= &srr . "/dev/null"
5062 endif 5207 endif
5063 endif 5208 endif
5064 " call Decho("set up redirection: redir{".redir."} srr{".&srr."}",'~'.expand("<slnum>")) 5209 " call Decho("(netrw#BrowseX) set up redirection: redir{".redir."} srr{".&srr."}",'~'.expand("<slnum>"))
5065 5210
5066 " extract any viewing options. Assumes that they're set apart by quotes. 5211 " extract any viewing options. Assumes that they're set apart by quotes.
5067 " call Decho("extract any viewing options",'~'.expand("<slnum>")) 5212 " call Decho("(netrw#BrowseX) extract any viewing options",'~'.expand("<slnum>"))
5068 if exists("g:netrw_browsex_viewer") 5213 if exists("g:netrw_browsex_viewer")
5069 " call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">",'~'.expand("<slnum>")) 5214 " call Decho("(netrw#BrowseX) g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">",'~'.expand("<slnum>"))
5070 if g:netrw_browsex_viewer =~ '\s' 5215 if g:netrw_browsex_viewer =~ '\s'
5071 let viewer = substitute(g:netrw_browsex_viewer,'\s.*$','','') 5216 let viewer = substitute(g:netrw_browsex_viewer,'\s.*$','','')
5072 let viewopt = substitute(g:netrw_browsex_viewer,'^\S\+\s*','','')." " 5217 let viewopt = substitute(g:netrw_browsex_viewer,'^\S\+\s*','','')." "
5073 let oviewer = '' 5218 let oviewer = ''
5074 let cnt = 1 5219 let cnt = 1
5075 while !executable(viewer) && viewer != oviewer 5220 while !executable(viewer) && viewer != oviewer
5076 let viewer = substitute(g:netrw_browsex_viewer,'^\(\(^\S\+\s\+\)\{'.cnt.'}\S\+\)\(.*\)$','\1','') 5221 let viewer = substitute(g:netrw_browsex_viewer,'^\(\(^\S\+\s\+\)\{'.cnt.'}\S\+\)\(.*\)$','\1','')
5077 let viewopt = substitute(g:netrw_browsex_viewer,'^\(\(^\S\+\s\+\)\{'.cnt.'}\S\+\)\(.*\)$','\3','')." " 5222 let viewopt = substitute(g:netrw_browsex_viewer,'^\(\(^\S\+\s\+\)\{'.cnt.'}\S\+\)\(.*\)$','\3','')." "
5078 let cnt = cnt + 1 5223 let cnt = cnt + 1
5079 let oviewer = viewer 5224 let oviewer = viewer
5080 " call Decho("!exe: viewer<".viewer."> viewopt<".viewopt.">",'~'.expand("<slnum>")) 5225 " call Decho("(netrw#BrowseX) !exe: viewer<".viewer."> viewopt<".viewopt.">",'~'.expand("<slnum>"))
5081 endwhile 5226 endwhile
5082 else 5227 else
5083 let viewer = g:netrw_browsex_viewer 5228 let viewer = g:netrw_browsex_viewer
5084 let viewopt = "" 5229 let viewopt = ""
5085 endif 5230 endif
5086 " call Decho("viewer<".viewer."> viewopt<".viewopt.">",'~'.expand("<slnum>")) 5231 " call Decho("(netrw#BrowseX) viewer<".viewer."> viewopt<".viewopt.">",'~'.expand("<slnum>"))
5087 endif 5232 endif
5088 5233
5089 " execute the file handler 5234 " execute the file handler
5090 " call Decho("execute the file handler (if any)",'~'.expand("<slnum>")) 5235 " call Decho("(netrw#BrowseX) execute the file handler (if any)",'~'.expand("<slnum>"))
5091 if exists("g:netrw_browsex_viewer") && g:netrw_browsex_viewer == '-' 5236 if exists("g:netrw_browsex_viewer") && g:netrw_browsex_viewer == '-'
5092 " call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">",'~'.expand("<slnum>")) 5237 " call Decho("(netrw#BrowseX) g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">",'~'.expand("<slnum>"))
5093 let ret= netrwFileHandlers#Invoke(exten,fname) 5238 let ret= netrwFileHandlers#Invoke(exten,fname)
5094 5239
5095 elseif exists("g:netrw_browsex_viewer") && executable(viewer) 5240 elseif exists("g:netrw_browsex_viewer") && executable(viewer)
5096 " call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">",'~'.expand("<slnum>")) 5241 " call Decho("(netrw#BrowseX) g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">",'~'.expand("<slnum>"))
5097 call s:NetrwExe("sil !".viewer." ".viewopt.s:ShellEscape(fname,1).redir) 5242 call s:NetrwExe("sil !".viewer." ".viewopt.s:ShellEscape(fname,1).redir)
5098 let ret= v:shell_error 5243 let ret= v:shell_error
5099 5244
5100 elseif has("win32") || has("win64") 5245 elseif has("win32") || has("win64")
5101 " call Decho("windows",'~'.expand("<slnum>")) 5246 " call Decho("(netrw#BrowseX) win".(has("win32")? "32" : "64")",'~'.expand("<slnum>"))
5102 if executable("start") 5247 if executable("start")
5103 call s:NetrwExe('sil! !start rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(fname,1)) 5248 call s:NetrwExe('sil! !start rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(fname,1))
5104 elseif executable("rundll32") 5249 elseif executable("rundll32")
5105 call s:NetrwExe('sil! !rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(fname,1)) 5250 call s:NetrwExe('sil! !rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(fname,1))
5106 else 5251 else
5107 call netrw#ErrorMsg(s:WARNING,"rundll32 not on path",74) 5252 call netrw#ErrorMsg(s:WARNING,"rundll32 not on path",74)
5108 endif 5253 endif
5109 call inputsave()|call input("Press <cr> to continue")|call inputrestore() 5254 " call inputsave()|call input("Press <cr> to continue")|call inputrestore()
5110 let ret= v:shell_error 5255 let ret= v:shell_error
5111 5256
5112 elseif has("win32unix") 5257 elseif has("win32unix")
5113 let winfname= 'c:\cygwin'.substitute(fname,'/','\\','g') 5258 let winfname= 'c:\cygwin'.substitute(fname,'/','\\','g')
5114 " call Decho("cygwin: winfname<".s:ShellEscape(winfname,1).">",'~'.expand("<slnum>")) 5259 " call Decho("(netrw#BrowseX) cygwin: winfname<".s:ShellEscape(winfname,1).">",'~'.expand("<slnum>"))
5115 if executable("start") 5260 if executable("start")
5116 call s:NetrwExe('sil !start rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(winfname,1)) 5261 call s:NetrwExe('sil !start rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(winfname,1))
5117 elseif executable("rundll32") 5262 elseif executable("rundll32")
5118 call s:NetrwExe('sil !rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(winfname,1)) 5263 call s:NetrwExe('sil !rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(winfname,1))
5119 elseif executable("cygstart") 5264 elseif executable("cygstart")
5120 call s:NetrwExe('sil !cygstart '.s:ShellEscape(fname,1)) 5265 call s:NetrwExe('sil !cygstart '.s:ShellEscape(fname,1))
5121 else 5266 else
5122 call netrw#ErrorMsg(s:WARNING,"rundll32 not on path",74) 5267 call netrw#ErrorMsg(s:WARNING,"rundll32 not on path",74)
5123 endif 5268 endif
5124 call inputsave()|call input("Press <cr> to continue")|call inputrestore() 5269 " call inputsave()|call input("Press <cr> to continue")|call inputrestore()
5125 let ret= v:shell_error 5270 let ret= v:shell_error
5126 5271
5127 elseif has("unix") && executable("kfmclient") && s:CheckIfKde() 5272 elseif has("unix") && executable("kfmclient") && s:CheckIfKde()
5128 " call Decho("unix and kfmclient",'~'.expand("<slnum>")) 5273 " call Decho("(netrw#BrowseX) unix and kfmclient",'~'.expand("<slnum>"))
5129 call s:NetrwExe("sil !kfmclient exec ".s:ShellEscape(fname,1)." ".redir) 5274 call s:NetrwExe("sil !kfmclient exec ".s:ShellEscape(fname,1)." ".redir)
5130 let ret= v:shell_error 5275 let ret= v:shell_error
5131 5276
5132 elseif has("unix") && executable("exo-open") && executable("xdg-open") && executable("setsid") 5277 elseif has("unix") && executable("exo-open") && executable("xdg-open") && executable("setsid")
5133 " call Decho("unix, exo-open, xdg-open",'~'.expand("<slnum>")) 5278 " call Decho("(netrw#BrowseX) unix, exo-open, xdg-open",'~'.expand("<slnum>"))
5134 call s:NetrwExe("sil !setsid xdg-open ".s:ShellEscape(fname,1).redir) 5279 call s:NetrwExe("sil !setsid xdg-open ".s:ShellEscape(fname,1).redir)
5135 let ret= v:shell_error 5280 let ret= v:shell_error
5136 5281
5282 elseif has("unix") && $DESKTOP_SESSION == "mate" && executable("atril")
5283 " call Decho("(netrw#BrowseX) unix and atril",'~'.expand("<slnum>"))
5284 call s:NetrwExe("sil !atril ".s:ShellEscape(fname,1).redir)
5285 let ret= v:shell_error
5286
5137 elseif has("unix") && executable("xdg-open") 5287 elseif has("unix") && executable("xdg-open")
5138 " call Decho("unix and xdg-open",'~'.expand("<slnum>")) 5288 " call Decho("(netrw#BrowseX) unix and xdg-open",'~'.expand("<slnum>"))
5139 call s:NetrwExe("sil !xdg-open ".s:ShellEscape(fname,1).redir) 5289 call s:NetrwExe("sil !xdg-open ".s:ShellEscape(fname,1).redir)
5140 let ret= v:shell_error 5290 let ret= v:shell_error
5141 5291
5142 elseif has("macunix") && executable("open") 5292 elseif has("macunix") && executable("open")
5143 " call Decho("macunix and open",'~'.expand("<slnum>")) 5293 " call Decho("(netrw#BrowseX) macunix and open",'~'.expand("<slnum>"))
5144 call s:NetrwExe("sil !open ".s:ShellEscape(fname,1)." ".redir) 5294 call s:NetrwExe("sil !open ".s:ShellEscape(fname,1)." ".redir)
5145 let ret= v:shell_error 5295 let ret= v:shell_error
5146 5296
5147 else 5297 else
5148 " netrwFileHandlers#Invoke() always returns 0 5298 " netrwFileHandlers#Invoke() always returns 0
5173 setl noswf 5323 setl noswf
5174 endif 5324 endif
5175 exe "sil! NetrwKeepj norm! \<c-o>" 5325 exe "sil! NetrwKeepj norm! \<c-o>"
5176 " redraw! 5326 " redraw!
5177 endif 5327 endif
5178 " call Decho("restoring posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>")) 5328 " call Decho("(netrw#BrowseX) restoring posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>"))
5179 call winrestview(screenposn) 5329 call winrestview(screenposn)
5180 let @@ = ykeep 5330 let @@ = ykeep
5181 let &aw= awkeep 5331 let &aw= awkeep
5182 5332
5183 " call Dret("netrw#BrowseX") 5333 " call Dret("netrw#BrowseX")
5334 endfun
5335
5336 " ---------------------------------------------------------------------
5337 " netrw#GX: gets word under cursor for gx support {{{2
5338 " See also: netrw#BrowseXVis
5339 " netrw#BrowseX
5340 fun! netrw#GX()
5341 " call Dfunc("netrw#GX()")
5342 if &ft == "netrw"
5343 let fname= s:NetrwGetWord()
5344 else
5345 let fname= expand((exists("g:netrw_gx")? g:netrw_gx : '<cfile>'))
5346 endif
5347 " call Dret("netrw#GX <".fname.">")
5348 return fname
5184 endfun 5349 endfun
5185 5350
5186 " --------------------------------------------------------------------- 5351 " ---------------------------------------------------------------------
5187 " netrw#BrowseXVis: used by gx in visual mode to select a file for browsing {{{2 5352 " netrw#BrowseXVis: used by gx in visual mode to select a file for browsing {{{2
5188 fun! netrw#BrowseXVis() 5353 fun! netrw#BrowseXVis()
5189 " call Dfunc("netrw#BrowseXVis()") 5354 " call Dfunc("netrw#BrowseXVis()")
5190 let atkeep = @@ 5355 let atkeep = @@
5191 norm! gvy 5356 norm! gvy
5192 " call Decho("@@<".@@.">",'~'.expand("<slnum>")) 5357 " call Decho("@@<".@@.">",'~'.expand("<slnum>"))
5193 call netrw#BrowseX(@@,netrw#CheckIfRemote()) 5358 call netrw#BrowseX(@@,netrw#CheckIfRemote(@@))
5194 let @@ = atkeep 5359 let @@ = atkeep
5195 " call Dret("netrw#BrowseXVis") 5360 " call Dret("netrw#BrowseXVis")
5196 endfun 5361 endfun
5197 5362
5198 " --------------------------------------------------------------------- 5363 " ---------------------------------------------------------------------
5364 " s:NetrwBufRename: renames a buffer without the side effect of retaining an unlisted buffer having the old name {{{2
5365 " Using the file command on a "[No Name]" buffer does not seem to cause the old "[No Name]" buffer
5366 " to become an unlisted buffer, so in that case don't bwipe it.
5367 fun! s:NetrwBufRename(newname)
5368 " call Dfunc("s:NetrwBufRename(newname<".a:newname.">) buf(%)#".bufnr("%")."<".bufname(bufnr("%")).">")
5369 " call Dredir("ls!","s:NetrwBufRename (before rename)")
5370 let oldbufname= bufname(bufnr("%"))
5371 " call Decho("buf#".bufnr("%").": oldbufname<".oldbufname.">",'~'.expand("<slnum>"))
5372 if oldbufname != a:newname
5373 " call Decho("do renaming (oldbufname != a:newname)",'~'.expand("<slnum>"))
5374 exe 'sil! keepj keepalt file '.fnameescape(a:newname)
5375 let oldbufnr= bufnr(oldbufname)
5376 if oldbufname != "" && oldbufnr != -1
5377 exe "bwipe! ".oldbufnr
5378 endif
5379 endif
5380 " call Dredir("ls!","s:NetrwBufRename (after rename)")
5381 " call Dret("s:NetrwBufRename : buf#".bufnr("%").": oldname<".oldbufname."> newname<".a:newname."> expand(%)<".expand("%").">")
5382 endfun
5383
5384 " ---------------------------------------------------------------------
5199 " netrw#CheckIfRemote: returns 1 if current file looks like an url, 0 else {{{2 5385 " netrw#CheckIfRemote: returns 1 if current file looks like an url, 0 else {{{2
5200 fun! netrw#CheckIfRemote() 5386 fun! netrw#CheckIfRemote(...)
5201 " call Dfunc("netrw#CheckIfRemote()") 5387 " call Dfunc("netrw#CheckIfRemote() a:0=".a:0)
5202 if expand("%") =~ '^\a\{3,}://' 5388 if a:0 > 0
5389 let curfile= a:1
5390 else
5391 let curfile= expand("%")
5392 endif
5393 " call Decho("curfile<".curfile.">")
5394 if curfile =~ '^\a\{3,}://'
5203 " call Dret("netrw#CheckIfRemote 1") 5395 " call Dret("netrw#CheckIfRemote 1")
5204 return 1 5396 return 1
5205 else 5397 else
5206 " call Dret("netrw#CheckIfRemote 0") 5398 " call Dret("netrw#CheckIfRemote 0")
5207 return 0 5399 return 0
5463 " s:NetrwHidden: invoked by "gh" {{{2 5655 " s:NetrwHidden: invoked by "gh" {{{2
5464 fun! s:NetrwHidden(islocal) 5656 fun! s:NetrwHidden(islocal)
5465 " call Dfunc("s:NetrwHidden()") 5657 " call Dfunc("s:NetrwHidden()")
5466 let ykeep= @@ 5658 let ykeep= @@
5467 " save current position 5659 " save current position
5468 let svpos= winsaveview() 5660 let svpos = winsaveview()
5469 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) 5661 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))
5470 5662
5471 if g:netrw_list_hide =~ '\(^\|,\)\\(^\\|\\s\\s\\)\\zs\\.\\S\\+' 5663 if g:netrw_list_hide =~ '\(^\|,\)\\(^\\|\\s\\s\\)\\zs\\.\\S\\+'
5472 " remove pattern from hiding list 5664 " remove .file pattern from hiding list
5665 " 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\\+','','') 5666 let g:netrw_list_hide= substitute(g:netrw_list_hide,'\(^\|,\)\\(^\\|\\s\\s\\)\\zs\\.\\S\\+','','')
5474 elseif s:Strlen(g:netrw_list_hide) >= 1 5667 elseif s:Strlen(g:netrw_list_hide) >= 1
5668 " call Decho("add .file pattern from hiding list",'~'.expand("<slnum>"))
5475 let g:netrw_list_hide= g:netrw_list_hide . ',\(^\|\s\s\)\zs\.\S\+' 5669 let g:netrw_list_hide= g:netrw_list_hide . ',\(^\|\s\s\)\zs\.\S\+'
5476 else 5670 else
5671 " call Decho("set .file pattern as hiding list",'~'.expand("<slnum>"))
5477 let g:netrw_list_hide= '\(^\|\s\s\)\zs\.\S\+' 5672 let g:netrw_list_hide= '\(^\|\s\s\)\zs\.\S\+'
5673 endif
5674 if g:netrw_list_hide =~ '^,'
5675 let g:netrw_list_hide= strpart(g:netrw_list_hide,1)
5478 endif 5676 endif
5479 5677
5480 " refresh screen and return to saved position 5678 " refresh screen and return to saved position
5481 NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) 5679 NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
5482 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) 5680 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))
5487 5685
5488 " --------------------------------------------------------------------- 5686 " ---------------------------------------------------------------------
5489 " s:NetrwHome: this function determines a "home" for saving bookmarks and history {{{2 5687 " s:NetrwHome: this function determines a "home" for saving bookmarks and history {{{2
5490 fun! s:NetrwHome() 5688 fun! s:NetrwHome()
5491 if exists("g:netrw_home") 5689 if exists("g:netrw_home")
5492 let home= g:netrw_home 5690 let home= expand(g:netrw_home)
5493 else 5691 else
5494 " go to vim plugin home 5692 " go to vim plugin home
5495 for home in split(&rtp,',') + [''] 5693 for home in split(&rtp,',') + ['']
5496 if isdirectory(s:NetrwFile(home)) && filewritable(s:NetrwFile(home)) | break | endif 5694 if isdirectory(s:NetrwFile(home)) && filewritable(s:NetrwFile(home)) | break | endif
5497 let basehome= substitute(home,'[/\\]\.vim$','','') 5695 let basehome= substitute(home,'[/\\]\.vim$','','')
5508 let home= substitute(home,'/','\\','g') 5706 let home= substitute(home,'/','\\','g')
5509 endif 5707 endif
5510 endif 5708 endif
5511 " insure that the home directory exists 5709 " insure that the home directory exists
5512 if g:netrw_dirhistmax > 0 && !isdirectory(s:NetrwFile(home)) 5710 if g:netrw_dirhistmax > 0 && !isdirectory(s:NetrwFile(home))
5711 " call Decho("insure that the home<".home."> directory exists")
5513 if exists("g:netrw_mkdir") 5712 if exists("g:netrw_mkdir")
5713 " call Decho("call system(".g:netrw_mkdir." ".s:ShellEscape(s:NetrwFile(home)).")")
5514 call system(g:netrw_mkdir." ".s:ShellEscape(s:NetrwFile(home))) 5714 call system(g:netrw_mkdir." ".s:ShellEscape(s:NetrwFile(home)))
5515 else 5715 else
5716 " call Decho("mkdir(".home.")")
5516 call mkdir(home) 5717 call mkdir(home)
5517 endif 5718 endif
5518 endif 5719 endif
5519 let g:netrw_home= home 5720 let g:netrw_home= home
5520 return home 5721 return home
5522 5723
5523 " --------------------------------------------------------------------- 5724 " ---------------------------------------------------------------------
5524 " s:NetrwLeftmouse: handles the <leftmouse> when in a netrw browsing window {{{2 5725 " s:NetrwLeftmouse: handles the <leftmouse> when in a netrw browsing window {{{2
5525 fun! s:NetrwLeftmouse(islocal) 5726 fun! s:NetrwLeftmouse(islocal)
5526 if exists("s:netrwdrag") 5727 if exists("s:netrwdrag")
5728 return
5729 endif
5730 if &ft != "netrw"
5527 return 5731 return
5528 endif 5732 endif
5529 " call Dfunc("s:NetrwLeftmouse(islocal=".a:islocal.")") 5733 " call Dfunc("s:NetrwLeftmouse(islocal=".a:islocal.")")
5530 5734
5531 let ykeep= @@ 5735 let ykeep= @@
5571 endfun 5775 endfun
5572 5776
5573 " --------------------------------------------------------------------- 5777 " ---------------------------------------------------------------------
5574 " s:NetrwCLeftmouse: used to select a file/directory for a target {{{2 5778 " s:NetrwCLeftmouse: used to select a file/directory for a target {{{2
5575 fun! s:NetrwCLeftmouse(islocal) 5779 fun! s:NetrwCLeftmouse(islocal)
5780 if &ft != "netrw"
5781 return
5782 endif
5576 " call Dfunc("s:NetrwCLeftmouse(islocal=".a:islocal.")") 5783 " call Dfunc("s:NetrwCLeftmouse(islocal=".a:islocal.")")
5577 call s:NetrwMarkFileTgt(a:islocal) 5784 call s:NetrwMarkFileTgt(a:islocal)
5578 " call Dret("s:NetrwCLeftmouse") 5785 " call Dret("s:NetrwCLeftmouse")
5579 endfun 5786 endfun
5580 5787
5581 " --------------------------------------------------------------------- 5788 " ---------------------------------------------------------------------
5582 " s:NetrwServerEdit: edit file in a server gvim, usually NETRWSERVER (implements <c-r>){{{2 5789 " s:NetrwServerEdit: edit file in a server gvim, usually NETRWSERVER (implements <c-r>){{{2
5583 " a:islocal=0 : <c-r> not used, remote 5790 " a:islocal=0 : <c-r> not used, remote
5584 " a:islocal=1 : <c-r> no used, local 5791 " a:islocal=1 : <c-r> not used, local
5585 " a:islocal=2 : <c-r> used, remote 5792 " a:islocal=2 : <c-r> used, remote
5586 " a:islocal=3 : <c-r> used, local 5793 " a:islocal=3 : <c-r> used, local
5587 fun! s:NetrwServerEdit(islocal,fname) 5794 fun! s:NetrwServerEdit(islocal,fname)
5588 " call Dfunc("s:NetrwServerEdit(islocal=".a:islocal.",fname<".a:fname.">)") 5795 " call Dfunc("s:NetrwServerEdit(islocal=".a:islocal.",fname<".a:fname.">)")
5589 let islocal = a:islocal%2 " =0: remote =1: local 5796 let islocal = a:islocal%2 " =0: remote =1: local
5704 endfun 5911 endfun
5705 5912
5706 " --------------------------------------------------------------------- 5913 " ---------------------------------------------------------------------
5707 " s:NetrwSLeftmouse: marks the file under the cursor. May be dragged to select additional files {{{2 5914 " s:NetrwSLeftmouse: marks the file under the cursor. May be dragged to select additional files {{{2
5708 fun! s:NetrwSLeftmouse(islocal) 5915 fun! s:NetrwSLeftmouse(islocal)
5916 if &ft != "netrw"
5917 return
5918 endif
5709 " call Dfunc("s:NetrwSLeftmouse(islocal=".a:islocal.")") 5919 " call Dfunc("s:NetrwSLeftmouse(islocal=".a:islocal.")")
5710 5920
5711 let s:ngw= s:NetrwGetWord() 5921 let s:ngw= s:NetrwGetWord()
5712 call s:NetrwMarkFile(a:islocal,s:ngw) 5922 call s:NetrwMarkFile(a:islocal,s:ngw)
5713 5923
5756 " --------------------------------------------------------------------- 5966 " ---------------------------------------------------------------------
5757 " s:NetrwListHide: uses [range]g~...~d to delete files that match comma {{{2 5967 " s:NetrwListHide: uses [range]g~...~d to delete files that match comma {{{2
5758 " separated patterns given in g:netrw_list_hide 5968 " separated patterns given in g:netrw_list_hide
5759 fun! s:NetrwListHide() 5969 fun! s:NetrwListHide()
5760 " call Dfunc("s:NetrwListHide() g:netrw_hide=".g:netrw_hide." g:netrw_list_hide<".g:netrw_list_hide.">") 5970 " call Dfunc("s:NetrwListHide() g:netrw_hide=".g:netrw_hide." g:netrw_list_hide<".g:netrw_list_hide.">")
5971 " call Decho("initial: ".string(getline(w:netrw_bannercnt,'$')))
5761 let ykeep= @@ 5972 let ykeep= @@
5762 5973
5763 " find a character not in the "hide" string to use as a separator for :g and :v commands 5974 " 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 5975 " How-it-works: take the hiding command, convert it into a range. Duplicate
5765 " characters don't matter. Remove all such characters from the '/~...90' 5976 " characters don't matter. Remove all such characters from the '/~...90'
5774 let listhide = substitute(listhide,'^.\{-},\(.*\)$','\1','e') 5985 let listhide = substitute(listhide,'^.\{-},\(.*\)$','\1','e')
5775 else 5986 else
5776 let hide = listhide 5987 let hide = listhide
5777 let listhide = "" 5988 let listhide = ""
5778 endif 5989 endif
5990 " call Decho("hide<".hide."> listhide<".listhide.'>','~'.expand("<slnum>"))
5779 5991
5780 " Prune the list by hiding any files which match 5992 " Prune the list by hiding any files which match
5781 if g:netrw_hide == 1 5993 if g:netrw_hide == 1
5782 " call Decho("hiding<".hide."> listhide<".listhide.">",'~'.expand("<slnum>")) 5994 " call Decho("..hiding<".hide.">",'~'.expand("<slnum>"))
5783 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'d' 5995 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'d'
5784 elseif g:netrw_hide == 2 5996 elseif g:netrw_hide == 2
5785 " call Decho("showing<".hide."> listhide<".listhide.">",'~'.expand("<slnum>")) 5997 " call Decho("..showing<".hide.">",'~'.expand("<slnum>"))
5786 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'s@^@ /-KEEP-/ @' 5998 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'s@^@ /-KEEP-/ @'
5787 endif 5999 endif
6000 " call Decho("..result: ".string(getline(w:netrw_bannercnt,'$')),'~'.expand("<slnum>"))
5788 endwhile 6001 endwhile
5789 if g:netrw_hide == 2 6002 if g:netrw_hide == 2
5790 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$v@^ /-KEEP-/ @d' 6003 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$v@^ /-KEEP-/ @d'
6004 " call Decho("..v KEEP: ".string(getline(w:netrw_bannercnt,'$')),'~'.expand("<slnum>"))
5791 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$s@^\%( /-KEEP-/ \)\+@@e' 6005 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$s@^\%( /-KEEP-/ \)\+@@e'
6006 " call Decho("..g KEEP: ".string(getline(w:netrw_bannercnt,'$')),'~'.expand("<slnum>"))
5792 endif 6007 endif
5793 6008
5794 " remove any blank lines that have somehow remained. 6009 " remove any blank lines that have somehow remained.
5795 " This seems to happen under Windows. 6010 " This seems to happen under Windows.
5796 exe 'sil! NetrwKeepj 1,$g@^\s*$@d' 6011 exe 'sil! NetrwKeepj 1,$g@^\s*$@d'
5852 else 6067 else
5853 call mkdir(fullnewdir,"p") 6068 call mkdir(fullnewdir,"p")
5854 endif 6069 endif
5855 else 6070 else
5856 let netrw_origdir= s:NetrwGetcwd(1) 6071 let netrw_origdir= s:NetrwGetcwd(1)
5857 call s:NetrwLcd(b:netrw_curdir) 6072 if s:NetrwLcd(b:netrw_curdir)
6073 " call Dret("s:NetrwMakeDir : lcd failure")
6074 return
6075 endif
5858 " call Decho("netrw_origdir<".netrw_origdir.">: lcd b:netrw_curdir<".fnameescape(b:netrw_curdir).">",'~'.expand("<slnum>")) 6076 " 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)) 6077 call s:NetrwExe("sil! !".g:netrw_localmkdir.g:netrw_localmkdiropt.' '.s:ShellEscape(newdirname,1))
5860 if v:shell_error != 0 6078 if v:shell_error != 0
5861 let @@= ykeep 6079 let @@= ykeep
5862 call netrw#ErrorMsg(s:ERROR,"consider setting g:netrw_localmkdir<".g:netrw_localmkdir."> to something that works",80) 6080 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)) 6081 " call Dret("s:NetrwMakeDir : failed: sil! !".g:netrw_localmkdir.' '.s:ShellEscape(newdirname,1))
5864 return 6082 return
5865 endif 6083 endif
5866 if !g:netrw_keepdir 6084 if !g:netrw_keepdir
5867 " call Decho("restoring netrw_origdir since g:netrw_keepdir=".g:netrw_keepdir,'~'.expand("<slnum>")) 6085 " call Decho("restoring netrw_origdir since g:netrw_keepdir=".g:netrw_keepdir,'~'.expand("<slnum>"))
5868 call s:NetrwLcd(netrw_origdir) 6086 if s:NetrwLcd(netrw_origdir)
6087 " call Dret("s:NetrwBrowse : lcd failure")
6088 return
6089 endif
5869 endif 6090 endif
5870 endif 6091 endif
5871 6092
5872 if v:shell_error == 0 6093 if v:shell_error == 0
5873 " refresh listing 6094 " refresh listing
5975 " --------------------------------------------------------------------- 6196 " ---------------------------------------------------------------------
5976 " s:NetrwMaps: {{{2 6197 " s:NetrwMaps: {{{2
5977 fun! s:NetrwMaps(islocal) 6198 fun! s:NetrwMaps(islocal)
5978 " call Dfunc("s:NetrwMaps(islocal=".a:islocal.") b:netrw_curdir<".b:netrw_curdir.">") 6199 " call Dfunc("s:NetrwMaps(islocal=".a:islocal.") b:netrw_curdir<".b:netrw_curdir.">")
5979 6200
6201 " mouse <Plug> maps: {{{3
5980 if g:netrw_mousemaps && g:netrw_retmap 6202 if g:netrw_mousemaps && g:netrw_retmap
5981 " call Decho("set up Rexplore 2-leftmouse",'~'.expand("<slnum>")) 6203 " call Decho("set up Rexplore 2-leftmouse",'~'.expand("<slnum>"))
5982 if !hasmapto("<Plug>NetrwReturn") 6204 if !hasmapto("<Plug>NetrwReturn")
5983 if maparg("<2-leftmouse>","n") == "" || maparg("<2-leftmouse>","n") =~ '^-$' 6205 if maparg("<2-leftmouse>","n") == "" || maparg("<2-leftmouse>","n") =~ '^-$'
5984 " call Decho("making map for 2-leftmouse",'~'.expand("<slnum>")) 6206 " call Decho("making map for 2-leftmouse",'~'.expand("<slnum>"))
5990 endif 6212 endif
5991 nno <silent> <Plug>NetrwReturn :Rexplore<cr> 6213 nno <silent> <Plug>NetrwReturn :Rexplore<cr>
5992 " call Decho("made <Plug>NetrwReturn map",'~'.expand("<slnum>")) 6214 " call Decho("made <Plug>NetrwReturn map",'~'.expand("<slnum>"))
5993 endif 6215 endif
5994 6216
6217 " generate default <Plug> maps {{{3
6218 if !hasmapto('<Plug>NetrwHide') |nmap <buffer> <silent> <nowait> a <Plug>NetrwHide_a|endif
6219 if !hasmapto('<Plug>NetrwBrowseUpDir') |nmap <buffer> <silent> <nowait> - <Plug>NetrwBrowseUpDir |endif
6220 if !hasmapto('<Plug>NetrwOpenFile') |nmap <buffer> <silent> <nowait> % <Plug>NetrwOpenFile|endif
6221 if !hasmapto('<Plug>NetrwBadd_cb') |nmap <buffer> <silent> <nowait> cb <Plug>NetrwBadd_cb|endif
6222 if !hasmapto('<Plug>NetrwBadd_cB') |nmap <buffer> <silent> <nowait> cB <Plug>NetrwBadd_cB|endif
6223 if !hasmapto('<Plug>NetrwLcd') |nmap <buffer> <silent> <nowait> cd <Plug>NetrwLcd|endif
6224 if !hasmapto('<Plug>NetrwSetChgwin') |nmap <buffer> <silent> <nowait> C <Plug>NetrwSetChgwin|endif
6225 if !hasmapto('<Plug>NetrwRefresh') |nmap <buffer> <silent> <nowait> <c-l> <Plug>NetrwRefresh|endif
6226 if !hasmapto('<Plug>NetrwLocalBrowseCheck') |nmap <buffer> <silent> <nowait> <cr> <Plug>NetrwLocalBrowseCheck|endif
6227 if !hasmapto('<Plug>NetrwServerEdit') |nmap <buffer> <silent> <nowait> <c-r> <Plug>NetrwServerEdit|endif
6228 if !hasmapto('<Plug>NetrwMakeDir') |nmap <buffer> <silent> <nowait> d <Plug>NetrwMakeDir|endif
6229 if !hasmapto('<Plug>NetrwBookHistHandler_gb')|nmap <buffer> <silent> <nowait> gb <Plug>NetrwBookHistHandler_gb|endif
6230 " ---------------------------------------------------------------------
6231 " if !hasmapto('<Plug>NetrwForceChgDir') |nmap <buffer> <silent> <nowait> gd <Plug>NetrwForceChgDir|endif
6232 " if !hasmapto('<Plug>NetrwForceFile') |nmap <buffer> <silent> <nowait> gf <Plug>NetrwForceFile|endif
6233 " if !hasmapto('<Plug>NetrwHidden') |nmap <buffer> <silent> <nowait> gh <Plug>NetrwHidden|endif
6234 " if !hasmapto('<Plug>NetrwSetTreetop') |nmap <buffer> <silent> <nowait> gn <Plug>NetrwSetTreetop|endif
6235 " if !hasmapto('<Plug>NetrwChgPerm') |nmap <buffer> <silent> <nowait> gp <Plug>NetrwChgPerm|endif
6236 " if !hasmapto('<Plug>NetrwBannerCtrl') |nmap <buffer> <silent> <nowait> I <Plug>NetrwBannerCtrl|endif
6237 " if !hasmapto('<Plug>NetrwListStyle') |nmap <buffer> <silent> <nowait> i <Plug>NetrwListStyle|endif
6238 " if !hasmapto('<Plug>NetrwMarkMoveMF2Arglist')|nmap <buffer> <silent> <nowait> ma <Plug>NetrwMarkMoveMF2Arglist|endif
6239 " if !hasmapto('<Plug>NetrwMarkMoveArglist2MF')|nmap <buffer> <silent> <nowait> mA <Plug>NetrwMarkMoveArglist2MF|endif
6240 " if !hasmapto('<Plug>NetrwBookHistHandler_mA')|nmap <buffer> <silent> <nowait> mb <Plug>NetrwBookHistHandler_mA|endif
6241 " if !hasmapto('<Plug>NetrwBookHistHandler_mB')|nmap <buffer> <silent> <nowait> mB <Plug>NetrwBookHistHandler_mB|endif
6242 " if !hasmapto('<Plug>NetrwMarkFileCopy') |nmap <buffer> <silent> <nowait> mc <Plug>NetrwMarkFileCopy|endif
6243 " if !hasmapto('<Plug>NetrwMarkFileDiff') |nmap <buffer> <silent> <nowait> md <Plug>NetrwMarkFileDiff|endif
6244 " if !hasmapto('<Plug>NetrwMarkFileEdit') |nmap <buffer> <silent> <nowait> me <Plug>NetrwMarkFileEdit|endif
6245 " if !hasmapto('<Plug>NetrwMarkFile') |nmap <buffer> <silent> <nowait> mf <Plug>NetrwMarkFile|endif
6246 " if !hasmapto('<Plug>NetrwUnmarkList') |nmap <buffer> <silent> <nowait> mF <Plug>NetrwUnmarkList|endif
6247 " if !hasmapto('<Plug>NetrwMarkFileGrep') |nmap <buffer> <silent> <nowait> mg <Plug>NetrwMarkFileGrep|endif
6248 " if !hasmapto('<Plug>NetrwMarkHideSfx') |nmap <buffer> <silent> <nowait> mh <Plug>NetrwMarkHideSfx|endif
6249 " if !hasmapto('<Plug>NetrwMarkFileMove') |nmap <buffer> <silent> <nowait> mm <Plug>NetrwMarkFileMove|endif
6250 " if !hasmapto('<Plug>NetrwMarkFilePrint') |nmap <buffer> <silent> <nowait> mp <Plug>NetrwMarkFilePrint|endif
6251 " if !hasmapto('<Plug>NetrwMarkFileRegexp') |nmap <buffer> <silent> <nowait> mr <Plug>NetrwMarkFileRegexp|endif
6252 " if !hasmapto('<Plug>NetrwMarkFileSource') |nmap <buffer> <silent> <nowait> ms <Plug>NetrwMarkFileSource|endif
6253 " if !hasmapto('<Plug>NetrwMarkFileTag') |nmap <buffer> <silent> <nowait> mT <Plug>NetrwMarkFileTag|endif
6254 " if !hasmapto('<Plug>NetrwMarkFileTgt') |nmap <buffer> <silent> <nowait> mt <Plug>NetrwMarkFileTgt|endif
6255 " if !hasmapto('<Plug>NetrwUnMarkFile') |nmap <buffer> <silent> <nowait> mu <Plug>NetrwUnMarkFile|endif
6256 " if !hasmapto('<Plug>NetrwMarkFileVimCmd') |nmap <buffer> <silent> <nowait> mv <Plug>NetrwMarkFileVimCmd|endif
6257 " if !hasmapto('<Plug>NetrwMarkFileExe_mx') |nmap <buffer> <silent> <nowait> mx <Plug>NetrwMarkFileExe_mx|endif
6258 " if !hasmapto('<Plug>NetrwMarkFileExe_mX') |nmap <buffer> <silent> <nowait> mX <Plug>NetrwMarkFileExe_mX|endif
6259 " if !hasmapto('<Plug>NetrwMarkFileCompress') |nmap <buffer> <silent> <nowait> mz <Plug>NetrwMarkFileCompress|endif
6260 " if !hasmapto('<Plug>NetrwObtain') |nmap <buffer> <silent> <nowait> O <Plug>NetrwObtain|endif
6261 " if !hasmapto('<Plug>NetrwSplit_o') |nmap <buffer> <silent> <nowait> o <Plug>NetrwSplit_o|endif
6262 " if !hasmapto('<Plug>NetrwPreview') |nmap <buffer> <silent> <nowait> p <Plug>NetrwPreview|endif
6263 " if !hasmapto('<Plug>NetrwPrevWinOpen') |nmap <buffer> <silent> <nowait> P <Plug>NetrwPrevWinOpen|endif
6264 " if !hasmapto('<Plug>NetrwBookHistHandler_qb')|nmap <buffer> <silent> <nowait> qb <Plug>NetrwBookHistHandler_qb|endif
6265 " if !hasmapto('<Plug>NetrwFileInfo') |nmap <buffer> <silent> <nowait> qf <Plug>NetrwFileInfo|endif
6266 " if !hasmapto('<Plug>NetrwMarkFileQFEL_qF') |nmap <buffer> <silent> <nowait> qF <Plug>NetrwMarkFileQFEL_qF|endif
6267 " if !hasmapto('<Plug>NetrwMarkFileQFEL_qL') |nmap <buffer> <silent> <nowait> qL <Plug>NetrwMarkFileQFEL_qL|endif
6268 " if !hasmapto('<Plug>NetrwSortStyle') |nmap <buffer> <silent> <nowait> s <Plug>NetrwSortStyle|endif
6269 " if !hasmapto('<Plug>NetSortSequence') |nmap <buffer> <silent> <nowait> S <Plug>NetSortSequence|endif
6270 " if !hasmapto('<Plug>NetrwSetTgt_Tb') |nmap <buffer> <silent> <nowait> Tb <Plug>NetrwSetTgt_Tb|endif
6271 " if !hasmapto('<Plug>NetrwSetTgt_Th') |nmap <buffer> <silent> <nowait> Th <Plug>NetrwSetTgt_Th|endif
6272 " if !hasmapto('<Plug>NetrwSplit_t') |nmap <buffer> <silent> <nowait> t <Plug>NetrwSplit_t|endif
6273 " if !hasmapto('<Plug>NetrwBookHistHandler_u') |nmap <buffer> <silent> <nowait> u <Plug>NetrwBookHistHandler_u|endif
6274 " if !hasmapto('<Plug>NetrwBookHistHandler_U') |nmap <buffer> <silent> <nowait> U <Plug>NetrwBookHistHandler_U|endif
6275 " if !hasmapto('<Plug>NetrwSplit_v') |nmap <buffer> <silent> <nowait> v <Plug>NetrwSplit_v|endif
6276 " if !hasmapto('<Plug>NetrwBrowseX') |nmap <buffer> <silent> <nowait> x <Plug>NetrwBrowseX|endif
6277 " if !hasmapto('<Plug>NetrwLocalExecute') |nmap <buffer> <silent> <nowait> X <Plug>NetrwLocalExecute|endif
6278
5995 if a:islocal 6279 if a:islocal
5996 " call Decho("make local maps",'~'.expand("<slnum>")) 6280 " call Decho("make local maps",'~'.expand("<slnum>"))
5997 " local normal-mode maps 6281 " local normal-mode maps {{{3
5998 nnoremap <buffer> <silent> <nowait> a :<c-u>call <SID>NetrwHide(1)<cr> 6282 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> 6283 nnoremap <buffer> <silent> <Plug>NetrwBrowseUpDir :<c-u>call <SID>NetrwBrowseUpDir(1)<cr>
6000 nnoremap <buffer> <silent> <nowait> % :<c-u>call <SID>NetrwOpenFile(1)<cr> 6284 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> 6285 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> 6286 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> 6287 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> 6288 nnoremap <buffer> <silent> <Plug>NetrwSetChgwin :<c-u>call <SID>NetrwSetChgwin()<cr>
6005 nnoremap <buffer> <silent> <nowait> d :<c-u>call <SID>NetrwMakeDir("")<cr> 6289 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> 6290 nnoremap <buffer> <silent> <Plug>NetrwServerEdit :<c-u>call <SID>NetrwServerEdit(3,<SID>NetrwGetWord())<cr>
6291 nnoremap <buffer> <silent> <Plug>NetrwMakeDir :<c-u>call <SID>NetrwMakeDir("")<cr>
6292 nnoremap <buffer> <silent> <Plug>NetrwBookHistHandler_gb :<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_curdir)<cr>
6293 " ---------------------------------------------------------------------
6007 nnoremap <buffer> <silent> <nowait> gd :<c-u>call <SID>NetrwForceChgDir(1,<SID>NetrwGetWord())<cr> 6294 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> 6295 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> 6296 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> 6297 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> 6298 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> 6299 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> 6300 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> 6301 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> 6302 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> 6326 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> 6327 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> 6328 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> 6329 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> 6330 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> 6331 nnoremap <buffer> <silent> <nowait> s :call <SID>NetrwSortStyle(1)<cr>
6046 nnoremap <buffer> <silent> <nowait> S :<c-u>call <SID>NetSortSequence(1)<cr> 6332 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> 6333 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> 6334 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> 6335 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> 6336 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> 6337 nnoremap <buffer> <silent> <nowait> U :<c-u>call <SID>NetrwBookHistHandler(5,expand("%"))<cr>
6052 nnoremap <buffer> <silent> <nowait> v :call <SID>NetrwSplit(5)<cr> 6338 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> 6339 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> 6340 nnoremap <buffer> <silent> <nowait> X :<c-u>call <SID>NetrwLocalExecute(expand("<cword>"))"<cr>
6055 " " local insert-mode maps 6341
6056 " inoremap <buffer> <silent> <nowait> a <c-o>:call <SID>NetrwHide(1)<cr> 6342 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') 6343 if !hasmapto('<Plug>NetrwHideEdit')
6108 nmap <buffer> <unique> <c-h> <Plug>NetrwHideEdit 6344 nmap <buffer> <unique> <c-h> <Plug>NetrwHideEdit
6109 " imap <buffer> <unique> <c-h> <c-o><Plug>NetrwHideEdit
6110 endif 6345 endif
6111 nnoremap <buffer> <silent> <Plug>NetrwHideEdit :call <SID>NetrwHideEdit(1)<cr> 6346 nnoremap <buffer> <silent> <Plug>NetrwHideEdit :call <SID>NetrwHideEdit(1)<cr>
6112 if !hasmapto('<Plug>NetrwRefresh') 6347 if !hasmapto('<Plug>NetrwRefresh')
6113 nmap <buffer> <unique> <c-l> <Plug>NetrwRefresh 6348 nmap <buffer> <unique> <c-l> <Plug>NetrwRefresh
6114 " imap <buffer> <unique> <c-l> <c-o><Plug>NetrwRefresh
6115 endif 6349 endif
6116 nnoremap <buffer> <silent> <Plug>NetrwRefresh <c-l>:call <SID>NetrwRefresh(1,<SID>NetrwBrowseChgDir(1,(w:netrw_liststyle == 3)? w:netrw_treetop : './'))<cr> 6350 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") 6351 if s:didstarstar || !mapcheck("<s-down>","n")
6118 nnoremap <buffer> <silent> <s-down> :Nexplore<cr> 6352 nnoremap <buffer> <silent> <s-down> :Nexplore<cr>
6119 " inoremap <buffer> <silent> <s-down> <c-o>:Nexplore<cr>
6120 endif 6353 endif
6121 if s:didstarstar || !mapcheck("<s-up>","n") 6354 if s:didstarstar || !mapcheck("<s-up>","n")
6122 nnoremap <buffer> <silent> <s-up> :Pexplore<cr> 6355 nnoremap <buffer> <silent> <s-up> :Pexplore<cr>
6123 " inoremap <buffer> <silent> <s-up> <c-o>:Pexplore<cr>
6124 endif 6356 endif
6125 if !hasmapto('<Plug>NetrwTreeSqueeze') 6357 if !hasmapto('<Plug>NetrwTreeSqueeze')
6126 nmap <buffer> <silent> <nowait> <s-cr> <Plug>NetrwTreeSqueeze 6358 nmap <buffer> <silent> <nowait> <s-cr> <Plug>NetrwTreeSqueeze
6127 " imap <buffer> <silent> <nowait> <s-cr> <c-o><Plug>NetrwTreeSqueeze
6128 endif 6359 endif
6129 nnoremap <buffer> <silent> <Plug>NetrwTreeSqueeze :call <SID>TreeSqueezeDir(1)<cr> 6360 nnoremap <buffer> <silent> <Plug>NetrwTreeSqueeze :call <SID>TreeSqueezeDir(1)<cr>
6130 let mapsafecurdir = escape(b:netrw_curdir, s:netrw_map_escape) 6361 let mapsafecurdir = escape(b:netrw_curdir, s:netrw_map_escape)
6131 if g:netrw_mousemaps == 1 6362 if g:netrw_mousemaps == 1
6132 nmap <buffer> <leftmouse> <Plug>NetrwLeftmouse 6363 nmap <buffer> <leftmouse> <Plug>NetrwLeftmouse
6364 nmap <buffer> <c-leftmouse> <Plug>NetrwCLeftmouse
6365 nmap <buffer> <middlemouse> <Plug>NetrwMiddlemouse
6366 nmap <buffer> <s-leftmouse> <Plug>NetrwSLeftmouse
6367 nmap <buffer> <s-leftdrag> <Plug>NetrwSLeftdrag
6368 nmap <buffer> <2-leftmouse> <Plug>Netrw2Leftmouse
6369 imap <buffer> <leftmouse> <Plug>ILeftmouse
6370 imap <buffer> <middlemouse> <Plug>IMiddlemouse
6133 nno <buffer> <silent> <Plug>NetrwLeftmouse <leftmouse>:call <SID>NetrwLeftmouse(1)<cr> 6371 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> 6372 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> 6373 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> 6374 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> 6375 nno <buffer> <silent> <Plug>NetrwSLeftdrag <leftmouse>:call <SID>NetrwSLeftdrag(1)<cr>
6142 nmap <buffer> <2-leftmouse> <Plug>Netrw2Leftmouse
6143 nmap <buffer> <silent> <Plug>Netrw2Leftmouse - 6376 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>' 6377 exe 'nnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
6151 exe 'vnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' 6378 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 6379 endif
6154 exe 'nnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' 6380 exe 'nnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
6155 exe 'nnoremap <buffer> <silent> <nowait> D :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' 6381 exe 'nnoremap <buffer> <silent> <nowait> D :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
6156 exe 'nnoremap <buffer> <silent> <nowait> R :call <SID>NetrwLocalRename("'.mapsafecurdir.'")<cr>' 6382 exe 'nnoremap <buffer> <silent> <nowait> R :call <SID>NetrwLocalRename("'.mapsafecurdir.'")<cr>'
6157 exe 'nnoremap <buffer> <silent> <nowait> d :call <SID>NetrwMakeDir("")<cr>' 6383 exe 'nnoremap <buffer> <silent> <nowait> d :call <SID>NetrwMakeDir("")<cr>'
6158 exe 'vnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' 6384 exe 'vnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
6159 exe 'vnoremap <buffer> <silent> <nowait> D :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' 6385 exe 'vnoremap <buffer> <silent> <nowait> D :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
6160 exe 'vnoremap <buffer> <silent> <nowait> R :call <SID>NetrwLocalRename("'.mapsafecurdir.'")<cr>' 6386 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> 6387 nnoremap <buffer> <F1> :he netrw-quickhelp<cr>
6166 6388
6167 " support user-specified maps 6389 " support user-specified maps
6168 call netrw#UserMaps(1) 6390 call netrw#UserMaps(1)
6169 6391
6170 else " remote 6392 else
6393 " remote normal-mode maps {{{3
6171 " call Decho("make remote maps",'~'.expand("<slnum>")) 6394 " call Decho("make remote maps",'~'.expand("<slnum>"))
6172 call s:RemotePathAnalysis(b:netrw_curdir) 6395 call s:RemotePathAnalysis(b:netrw_curdir)
6173 " remote normal-mode maps 6396 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> 6397 nnoremap <buffer> <silent> <Plug>NetrwBrowseUpDir :<c-u>call <SID>NetrwBrowseUpDir(0)<cr>
6175 nnoremap <buffer> <silent> <nowait> - :<c-u>call <SID>NetrwBrowseUpDir(0)<cr> 6398 nnoremap <buffer> <silent> <Plug>NetrwOpenFile :<c-u>call <SID>NetrwOpenFile(0)<cr>
6176 nnoremap <buffer> <silent> <nowait> % :<c-u>call <SID>NetrwOpenFile(0)<cr> 6399 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> 6400 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> 6401 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> 6402 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> 6403 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> 6404 nnoremap <buffer> <silent> <Plug>NetrwLocalBrowseCheck :<c-u>call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()))<cr>
6405 nnoremap <buffer> <silent> <Plug>NetrwServerEdit :<c-u>call <SID>NetrwServerEdit(2,<SID>NetrwGetWord())<cr>
6406 nnoremap <buffer> <silent> <Plug>NetrwBookHistHandler_gb :<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_curdir)<cr>
6407 " ---------------------------------------------------------------------
6182 nnoremap <buffer> <silent> <nowait> gd :<c-u>call <SID>NetrwForceChgDir(0,<SID>NetrwGetWord())<cr> 6408 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> 6409 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> 6410 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> 6411 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> 6412 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> 6449 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> 6450 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> 6451 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> 6452 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> 6453 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') 6454 if !hasmapto('<Plug>NetrwHideEdit')
6280 nmap <buffer> <c-h> <Plug>NetrwHideEdit 6455 nmap <buffer> <c-h> <Plug>NetrwHideEdit
6281 " imap <buffer> <c-h> <Plug>NetrwHideEdit
6282 endif 6456 endif
6283 nnoremap <buffer> <silent> <Plug>NetrwHideEdit :call <SID>NetrwHideEdit(0)<cr> 6457 nnoremap <buffer> <silent> <Plug>NetrwHideEdit :call <SID>NetrwHideEdit(0)<cr>
6284 if !hasmapto('<Plug>NetrwRefresh') 6458 if !hasmapto('<Plug>NetrwRefresh')
6285 nmap <buffer> <c-l> <Plug>NetrwRefresh 6459 nmap <buffer> <c-l> <Plug>NetrwRefresh
6286 " imap <buffer> <c-l> <Plug>NetrwRefresh
6287 endif 6460 endif
6288 if !hasmapto('<Plug>NetrwTreeSqueeze') 6461 if !hasmapto('<Plug>NetrwTreeSqueeze')
6289 nmap <buffer> <silent> <nowait> <s-cr> <Plug>NetrwTreeSqueeze 6462 nmap <buffer> <silent> <nowait> <s-cr> <Plug>NetrwTreeSqueeze
6290 " imap <buffer> <silent> <nowait> <s-cr> <c-o><Plug>NetrwTreeSqueeze
6291 endif 6463 endif
6292 nnoremap <buffer> <silent> <Plug>NetrwTreeSqueeze :call <SID>TreeSqueezeDir(0)<cr> 6464 nnoremap <buffer> <silent> <Plug>NetrwTreeSqueeze :call <SID>TreeSqueezeDir(0)<cr>
6293 6465
6294 let mapsafepath = escape(s:path, s:netrw_map_escape) 6466 let mapsafepath = escape(s:path, s:netrw_map_escape)
6295 let mapsafeusermach = escape(((s:user == "")? "" : s:user."@").s:machine, s:netrw_map_escape) 6467 let mapsafeusermach = escape(((s:user == "")? "" : s:user."@").s:machine, s:netrw_map_escape)
6307 nmap <middlemouse> <Plug>NetrwMiddlemouse 6479 nmap <middlemouse> <Plug>NetrwMiddlemouse
6308 nno <buffer> <silent> <middlemouse> <Plug>NetrwMiddlemouse <leftmouse>:call <SID>NetrwPrevWinOpen(0)<cr> 6480 nno <buffer> <silent> <middlemouse> <Plug>NetrwMiddlemouse <leftmouse>:call <SID>NetrwPrevWinOpen(0)<cr>
6309 nmap <buffer> <2-leftmouse> <Plug>Netrw2Leftmouse 6481 nmap <buffer> <2-leftmouse> <Plug>Netrw2Leftmouse
6310 nmap <buffer> <silent> <Plug>Netrw2Leftmouse - 6482 nmap <buffer> <silent> <Plug>Netrw2Leftmouse -
6311 imap <buffer> <leftmouse> <Plug>ILeftmouse 6483 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 6484 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 6485 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>' 6486 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>' 6487 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 6488 endif
6321 exe 'nnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' 6489 exe 'nnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
6322 exe 'nnoremap <buffer> <silent> <nowait> d :call <SID>NetrwMakeDir("'.mapsafeusermach.'")<cr>' 6490 exe 'nnoremap <buffer> <silent> <nowait> d :call <SID>NetrwMakeDir("'.mapsafeusermach.'")<cr>'
6323 exe 'nnoremap <buffer> <silent> <nowait> D :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' 6491 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>' 6492 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>' 6493 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>' 6494 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>' 6495 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> 6496 nnoremap <buffer> <F1> :he netrw-quickhelp<cr>
6333 " inoremap <buffer> <F1> <c-o>:he netrw-quickhelp<cr>
6334 6497
6335 " support user-specified maps 6498 " support user-specified maps
6336 call netrw#UserMaps(0) 6499 call netrw#UserMaps(0)
6337 endif 6500 endif " }}}3
6338 6501
6339 " call Dret("s:NetrwMaps") 6502 " call Dret("s:NetrwMaps")
6340 endfun 6503 endfun
6341 6504
6342 " --------------------------------------------------------------------- 6505 " ---------------------------------------------------------------------
6529 call add(s:netrwmarkfilelist,s:ComposePath(b:netrw_curdir,a:fname)) 6692 call add(s:netrwmarkfilelist,s:ComposePath(b:netrw_curdir,a:fname))
6530 " call Decho("init s:netrwmarkfilelist<".string(s:netrwmarkfilelist).">",'~'.expand("<slnum>")) 6693 " call Decho("init s:netrwmarkfilelist<".string(s:netrwmarkfilelist).">",'~'.expand("<slnum>"))
6531 endif 6694 endif
6532 6695
6533 " set up 2match'ing to netrwmarkfilemtch_# list 6696 " set up 2match'ing to netrwmarkfilemtch_# list
6534 if exists("s:netrwmarkfilemtch_{curbufnr}") && s:netrwmarkfilemtch_{curbufnr} != "" 6697 if has("syntax") && exists("g:syntax_on") && g:syntax_on
6535 " call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/",'~'.expand("<slnum>")) 6698 if exists("s:netrwmarkfilemtch_{curbufnr}") && s:netrwmarkfilemtch_{curbufnr} != ""
6536 if exists("g:did_drchip_netrwlist_syntax") 6699 " " call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/",'~'.expand("<slnum>"))
6537 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/" 6700 if exists("g:did_drchip_netrwlist_syntax")
6538 endif 6701 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/"
6539 else 6702 endif
6540 " call Decho("2match none",'~'.expand("<slnum>")) 6703 else
6541 2match none 6704 " " call Decho("2match none",'~'.expand("<slnum>"))
6705 2match none
6706 endif
6542 endif 6707 endif
6543 let @@= ykeep 6708 let @@= ykeep
6544 " call Dret("s:NetrwMarkFile : s:netrwmarkfilelist_".curbufnr."<".(exists("s:netrwmarkfilelist_{curbufnr}")? string(s:netrwmarkfilelist_{curbufnr}) : " doesn't exist").">") 6709 " call Dret("s:NetrwMarkFile : s:netrwmarkfilelist_".curbufnr."<".(exists("s:netrwmarkfilelist_{curbufnr}")? string(s:netrwmarkfilelist_{curbufnr}) : " doesn't exist").">")
6545 endfun 6710 endfun
6546 6711
6622 let exe= netrw#WinPath(exe) 6787 let exe= netrw#WinPath(exe)
6623 if a:islocal 6788 if a:islocal
6624 if g:netrw_keepdir 6789 if g:netrw_keepdir
6625 let fname= s:ShellEscape(s:ComposePath(curdir,fname)) 6790 let fname= s:ShellEscape(s:ComposePath(curdir,fname))
6626 endif 6791 endif
6792 call system(exe." ".fname)
6793 if v:shell_error
6794 NetrwKeepj call netrw#ErrorMsg(s:WARNING,"unable to apply<".exe."> to file<".fname.">",50)
6795 endif
6627 else 6796 else
6628 let fname= s:ShellEscape(b:netrw_curdir.fname,1) 6797 let fname= s:ShellEscape(b:netrw_curdir.fname,1)
6798 NetrwKeepj call s:RemoteSystem(exe." ".fname)
6629 endif 6799 endif
6630 if executable(exe) 6800
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 6801 endif
6640 unlet sfx 6802 unlet sfx
6641 6803
6642 if exists("exe") 6804 if exists("exe")
6643 unlet exe 6805 unlet exe
6644 elseif a:islocal 6806 elseif a:islocal
6645 " fname not a compressed file, so compress it 6807 " fname not a compressed file, so compress it
6646 call system(netrw#WinPath(g:netrw_compress)." ".s:ShellEscape(s:ComposePath(b:netrw_curdir,fname))) 6808 call system(netrw#WinPath(g:netrw_compress)." ".s:ShellEscape(s:ComposePath(b:netrw_curdir,fname)))
6809 if v:shell_error
6810 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_compress<".g:netrw_compress."> to something that works",104)
6811 endif
6647 else 6812 else
6648 " fname not a compressed file, so compress it 6813 " fname not a compressed file, so compress it
6649 NetrwKeepj call s:RemoteSystem(netrw#WinPath(g:netrw_compress)." ".s:ShellEscape(fname)) 6814 NetrwKeepj call s:RemoteSystem(netrw#WinPath(g:netrw_compress)." ".s:ShellEscape(fname))
6650 endif 6815 endif
6651 endfor " for every file in the marked list 6816 endfor " for every file in the marked list
6693 " call Decho("sanity chk passed: s:netrwmftgt<".s:netrwmftgt.">",'~'.expand("<slnum>")) 6858 " call Decho("sanity chk passed: s:netrwmftgt<".s:netrwmftgt.">",'~'.expand("<slnum>"))
6694 6859
6695 if a:islocal && s:netrwmftgt_islocal 6860 if a:islocal && s:netrwmftgt_islocal
6696 " Copy marked files, local directory to local directory 6861 " Copy marked files, local directory to local directory
6697 " call Decho("copy from local to local",'~'.expand("<slnum>")) 6862 " call Decho("copy from local to local",'~'.expand("<slnum>"))
6698 if !executable(g:netrw_localcopycmd) && g:netrw_localcopycmd !~ '^'.expand("$COMSPEC").'\s' 6863 if !executable(g:netrw_localcopycmd)
6699 call netrw#ErrorMsg(s:ERROR,"g:netrw_localcopycmd<".g:netrw_localcopycmd."> not executable on your system, aborting",91) 6864 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!") 6865 " call Dfunc("s:NetrwMarkFileMove : g:netrw_localcopycmd<".g:netrw_localcopycmd."> n/a!")
6701 return 6866 return
6702 endif 6867 endif
6703 6868
6775 endif 6940 endif
6776 " call Decho("args <".args.">",'~'.expand("<slnum>")) 6941 " call Decho("args <".args.">",'~'.expand("<slnum>"))
6777 " call Decho("tgt <".tgt.">",'~'.expand("<slnum>")) 6942 " call Decho("tgt <".tgt.">",'~'.expand("<slnum>"))
6778 " call Decho("copycmd<".copycmd.">",'~'.expand("<slnum>")) 6943 " call Decho("copycmd<".copycmd.">",'~'.expand("<slnum>"))
6779 " call Decho("system(".copycmd." '".args."' '".tgt."')",'~'.expand("<slnum>")) 6944 " call Decho("system(".copycmd." '".args."' '".tgt."')",'~'.expand("<slnum>"))
6780 call system(copycmd." '".args."' '".tgt."'") 6945 call system(copycmd.g:netrw_localcopycmdopt." '".args."' '".tgt."'")
6781 if v:shell_error != 0 6946 if v:shell_error != 0
6782 if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && !g:netrw_keepdir 6947 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) 6948 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)
6784 else 6949 else
6785 call netrw#ErrorMsg(s:ERROR,"tried using g:netrw_localcopycmd<".g:netrw_localcopycmd.">; it doesn't work!",80) 6950 call netrw#ErrorMsg(s:ERROR,"tried using g:netrw_localcopycmd<".g:netrw_localcopycmd.">; it doesn't work!",80)
6807 let tmpdir= curdir."/".tmpdir 6972 let tmpdir= curdir."/".tmpdir
6808 endif 6973 endif
6809 if exists("*mkdir") 6974 if exists("*mkdir")
6810 call mkdir(tmpdir) 6975 call mkdir(tmpdir)
6811 else 6976 else
6812 call s:NetrwExe("sil! !".g:netrw_localmkdir.' '.s:ShellEscape(tmpdir,1)) 6977 call s:NetrwExe("sil! !".g:netrw_localmkdir.g:netrw_localmkdiropt.' '.s:ShellEscape(tmpdir,1))
6813 if v:shell_error != 0 6978 if v:shell_error != 0
6814 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localmkdir<".g:netrw_localmkdir."> to something that works",80) 6979 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) ) 6980 " call Dret("s:NetrwMarkFileCopy : failed: sil! !".g:netrw_localmkdir.' '.s:ShellEscape(tmpdir,1) )
6816 return 6981 return
6817 endif 6982 endif
6818 endif 6983 endif
6819 if isdirectory(s:NetrwFile(tmpdir)) 6984 if isdirectory(s:NetrwFile(tmpdir))
6820 call s:NetrwLcd(tmpdir) 6985 if s:NetrwLcd(tmpdir)
6986 " call Dret("s:NetrwMarkFileCopy : lcd failure")
6987 return
6988 endif
6821 NetrwKeepj call netrw#Obtain(a:islocal,s:netrwmarkfilelist_{bufnr('%')},tmpdir) 6989 NetrwKeepj call netrw#Obtain(a:islocal,s:netrwmarkfilelist_{bufnr('%')},tmpdir)
6822 let localfiles= map(deepcopy(s:netrwmarkfilelist_{bufnr('%')}),'substitute(v:val,"^.*/","","")') 6990 let localfiles= map(deepcopy(s:netrwmarkfilelist_{bufnr('%')}),'substitute(v:val,"^.*/","","")')
6823 NetrwKeepj call s:NetrwUpload(localfiles,s:netrwmftgt) 6991 NetrwKeepj call s:NetrwUpload(localfiles,s:netrwmftgt)
6824 if getcwd() == tmpdir 6992 if getcwd() == tmpdir
6825 for fname in s:netrwmarkfilelist_{bufnr('%')} 6993 for fname in s:netrwmarkfilelist_{bufnr('%')}
6826 NetrwKeepj call s:NetrwDelete(fname) 6994 NetrwKeepj call s:NetrwDelete(fname)
6827 endfor 6995 endfor
6828 call s:NetrwLcd(curdir) 6996 if s:NetrwLcd(curdir)
6829 if v:version < 704 || !has("patch1109") 6997 " call Dret("s:NetrwMarkFileCopy : lcd failure")
6830 call s:NetrwExe("sil !".g:netrw_localrmdir." ".s:ShellEscape(tmpdir,1)) 6998 return
6999 endif
7000 if v:version < 704 || (v:version == 704 && !has("patch1107"))
7001 call s:NetrwExe("sil !".g:netrw_localrmdir.g:netrw_localrmdiropt." ".s:ShellEscape(tmpdir,1))
6831 if v:shell_error != 0 7002 if v:shell_error != 0
6832 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localrmdir<".g:netrw_localrmdir."> to something that works",80) 7003 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) ) 7004 " " call Dret("s:NetrwMarkFileCopy : failed: sil !".g:netrw_localrmdir." ".s:ShellEscape(tmpdir,1) )
6834 return 7005 return
6835 endif 7006 endif
6837 if delete(tmpdir,"d") 7008 if delete(tmpdir,"d")
6838 call netrw#ErrorMsg(s:ERROR,"unable to delete directory <".tmpdir.">!",103) 7009 call netrw#ErrorMsg(s:ERROR,"unable to delete directory <".tmpdir.">!",103)
6839 endif 7010 endif
6840 endif 7011 endif
6841 else 7012 else
6842 call s:NetrwLcd(curdir) 7013 if s:NetrwLcd(curdir)
7014 " call Dret("s:NetrwMarkFileCopy : lcd failure")
7015 return
7016 endif
6843 endif 7017 endif
6844 endif 7018 endif
6845 endif 7019 endif
6846 7020
6847 " ------- 7021 " -------
7364 7538
7365 if a:islocal && s:netrwmftgt_islocal 7539 if a:islocal && s:netrwmftgt_islocal
7366 " move: local -> local 7540 " move: local -> local
7367 " call Decho("move from local to local",'~'.expand("<slnum>")) 7541 " call Decho("move from local to local",'~'.expand("<slnum>"))
7368 " call Decho("local to local move",'~'.expand("<slnum>")) 7542 " call Decho("local to local move",'~'.expand("<slnum>"))
7369 if !executable(g:netrw_localmovecmd) && g:netrw_localmovecmd !~ '^'.expand("$COMSPEC").'\s' 7543 if !executable(g:netrw_localmovecmd)
7370 call netrw#ErrorMsg(s:ERROR,"g:netrw_localmovecmd<".g:netrw_localmovecmd."> not executable on your system, aborting",90) 7544 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!") 7545 " call Dfunc("s:NetrwMarkFileMove : g:netrw_localmovecmd<".g:netrw_localmovecmd."> n/a!")
7372 return 7546 return
7373 endif 7547 endif
7374 let tgt = s:ShellEscape(s:netrwmftgt) 7548 let tgt = s:ShellEscape(s:netrwmftgt)
7375 " call Decho("tgt<".tgt.">",'~'.expand("<slnum>")) 7549 " call Decho("tgt<".tgt.">",'~'.expand("<slnum>"))
7376 if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16")) 7550 if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16"))
7377 let tgt = substitute(tgt, '/','\\','g') 7551 let tgt= substitute(tgt, '/','\\','g')
7378 " call Decho("windows exception: tgt<".tgt.">",'~'.expand("<slnum>")) 7552 " call Decho("windows exception: tgt<".tgt.">",'~'.expand("<slnum>"))
7379 if g:netrw_localmovecmd =~ '\s' 7553 if g:netrw_localmovecmd =~ '\s'
7380 let movecmd = substitute(g:netrw_localmovecmd,'\s.*$','','') 7554 let movecmd = substitute(g:netrw_localmovecmd,'\s.*$','','')
7381 let movecmdargs = substitute(g:netrw_localmovecmd,'^.\{-}\(\s.*\)$','\1','') 7555 let movecmdargs = substitute(g:netrw_localmovecmd,'^.\{-}\(\s.*\)$','\1','')
7382 let movecmd = netrw#WinPath(movecmd).movecmdargs 7556 let movecmd = netrw#WinPath(movecmd).movecmdargs
7392 for fname in s:netrwmarkfilelist_{bufnr("%")} 7566 for fname in s:netrwmarkfilelist_{bufnr("%")}
7393 if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16")) 7567 if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16"))
7394 let fname= substitute(fname,'/','\\','g') 7568 let fname= substitute(fname,'/','\\','g')
7395 endif 7569 endif
7396 " call Decho("system(".movecmd." ".s:ShellEscape(fname)." ".tgt.")",'~'.expand("<slnum>")) 7570 " call Decho("system(".movecmd." ".s:ShellEscape(fname)." ".tgt.")",'~'.expand("<slnum>"))
7397 let ret= system(movecmd." ".s:ShellEscape(fname)." ".tgt) 7571 let ret= system(movecmd.g:netrw_localmovecmdopt." ".s:ShellEscape(fname)." ".tgt)
7398 if v:shell_error != 0 7572 if v:shell_error != 0
7399 if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && !g:netrw_keepdir 7573 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) 7574 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)
7401 else 7575 else
7402 call netrw#ErrorMsg(s:ERROR,"tried using g:netrw_localmovecmd<".g:netrw_localmovecmd.">; it doesn't work!",54) 7576 call netrw#ErrorMsg(s:ERROR,"tried using g:netrw_localmovecmd<".g:netrw_localmovecmd.">; it doesn't work!",54)
7647 " call Decho("s:netrwmarkfilelist".string(s:netrwmarkfilelist).">",'~'.expand("<slnum>")) 7821 " call Decho("s:netrwmarkfilelist".string(s:netrwmarkfilelist).">",'~'.expand("<slnum>"))
7648 let netrwmarkfilelist= join(map(deepcopy(s:netrwmarkfilelist), "s:ShellEscape(v:val,".!a:islocal.")")) 7822 let netrwmarkfilelist= join(map(deepcopy(s:netrwmarkfilelist), "s:ShellEscape(v:val,".!a:islocal.")"))
7649 call s:NetrwUnmarkAll() 7823 call s:NetrwUnmarkAll()
7650 7824
7651 if a:islocal 7825 if a:islocal
7652 if executable(g:netrw_ctags) 7826
7653 " call Decho("call system(".g:netrw_ctags." ".netrwmarkfilelist.")",'~'.expand("<slnum>")) 7827 " call Decho("call system(".g:netrw_ctags." ".netrwmarkfilelist.")",'~'.expand("<slnum>"))
7654 call system(g:netrw_ctags." ".netrwmarkfilelist) 7828 call system(g:netrw_ctags." ".netrwmarkfilelist)
7655 else 7829 if v:shell_error
7656 call netrw#ErrorMsg(s:ERROR,"g:netrw_ctags<".g:netrw_ctags."> is not executable!",51) 7830 call netrw#ErrorMsg(s:ERROR,"g:netrw_ctags<".g:netrw_ctags."> is not executable!",51)
7657 endif 7831 endif
7832
7658 else 7833 else
7659 let cmd = s:RemoteSystem(g:netrw_ctags." ".netrwmarkfilelist) 7834 let cmd = s:RemoteSystem(g:netrw_ctags." ".netrwmarkfilelist)
7660 call netrw#Obtain(a:islocal,"tags") 7835 call netrw#Obtain(a:islocal,"tags")
7661 let curdir= b:netrw_curdir 7836 let curdir= b:netrw_curdir
7662 1split 7837 1split
8107 if exists("s:netrwmarkfilelist_{bufnr('%')}") 8282 if exists("s:netrwmarkfilelist_{bufnr('%')}")
8108 let islocal= s:netrwmarkfilelist_{bufnr('%')}[1] !~ '^\a\{3,}://' 8283 let islocal= s:netrwmarkfilelist_{bufnr('%')}[1] !~ '^\a\{3,}://'
8109 call netrw#Obtain(islocal,s:netrwmarkfilelist_{bufnr('%')}) 8284 call netrw#Obtain(islocal,s:netrwmarkfilelist_{bufnr('%')})
8110 call s:NetrwUnmarkList(bufnr('%'),b:netrw_curdir) 8285 call s:NetrwUnmarkList(bufnr('%'),b:netrw_curdir)
8111 else 8286 else
8112 call netrw#Obtain(a:islocal,expand("<cWORD>")) 8287 call netrw#Obtain(a:islocal,s:NetrwGetWord())
8113 endif 8288 endif
8114 let @@= ykeep 8289 let @@= ykeep
8115 8290
8116 " call Dret("NetrwObtain") 8291 " call Dret("NetrwObtain")
8117 endfun 8292 endfun
8142 8317
8143 let didsplit = 0 8318 let didsplit = 0
8144 if lastwinnr == 1 8319 if lastwinnr == 1
8145 " if only one window, open a new one first 8320 " 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>")) 8321 " call Decho("only one window, so open a new one (g:netrw_alto=".g:netrw_alto.")",'~'.expand("<slnum>"))
8322 " g:netrw_preview=0: preview window shown in a horizontally split window
8323 " g:netrw_preview=1: preview window shown in a vertically split window
8147 if g:netrw_preview 8324 if g:netrw_preview
8148 " vertically split preview window 8325 " vertically split preview window
8149 let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winheight(0))/100 : -g:netrw_winsize 8326 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>")) 8327 " 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" 8328 exe (g:netrw_alto? "top " : "bot ")."vert ".winsz."wincmd s"
8152 else 8329 else
8153 " horizontally split preview window 8330 " horizontally split preview window
8154 let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize 8331 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>")) 8332 " call Decho("exe ".(g:netrw_alto? "bel " : "abo ").winsz."wincmd s",'~'.expand("<slnum>"))
8156 exe (g:netrw_alto? "bel " : "abo ").winsz."wincmd s" 8333 exe (g:netrw_alto? "bel " : "abo ").winsz."wincmd s"
8157 endif 8334 endif
8158 let didsplit = 1 8335 let didsplit = 1
8159 " call Decho("did split",'~'.expand("<slnum>")) 8336 " call Decho("did split",'~'.expand("<slnum>"))
8281 elseif type(a:fname) == 3 8458 elseif type(a:fname) == 3
8282 " handle uploading a list of files via scp 8459 " handle uploading a list of files via scp
8283 " call Decho("handle uploading a list of files via scp",'~'.expand("<slnum>")) 8460 " call Decho("handle uploading a list of files via scp",'~'.expand("<slnum>"))
8284 let curdir= getcwd() 8461 let curdir= getcwd()
8285 if a:tgt =~ '^scp:' 8462 if a:tgt =~ '^scp:'
8286 call s:NetrwLcd(fromdir) 8463 if s:NetrwLcd(fromdir)
8464 " call Dret("s:NetrwUpload : lcd failure")
8465 return
8466 endif
8287 let filelist= deepcopy(s:netrwmarkfilelist_{bufnr('%')}) 8467 let filelist= deepcopy(s:netrwmarkfilelist_{bufnr('%')})
8288 let args = join(map(filelist,"s:ShellEscape(v:val, 1)")) 8468 let args = join(map(filelist,"s:ShellEscape(v:val, 1)"))
8289 if exists("g:netrw_port") && g:netrw_port != "" 8469 if exists("g:netrw_port") && g:netrw_port != ""
8290 let useport= " ".g:netrw_scpport." ".g:netrw_port 8470 let useport= " ".g:netrw_scpport." ".g:netrw_port
8291 else 8471 else
8292 let useport= "" 8472 let useport= ""
8293 endif 8473 endif
8294 let machine = substitute(a:tgt,'^scp://\([^/:]\+\).*$','\1','') 8474 let machine = substitute(a:tgt,'^scp://\([^/:]\+\).*$','\1','')
8295 let tgt = substitute(a:tgt,'^scp://[^/]\+/\(.*\)$','\1','') 8475 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)) 8476 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) 8477 if s:NetrwLcd(curdir)
8478 " call Dret("s:NetrwUpload : lcd failure")
8479 return
8480 endif
8298 8481
8299 elseif a:tgt =~ '^ftp:' 8482 elseif a:tgt =~ '^ftp:'
8300 call s:NetrwMethod(a:tgt) 8483 call s:NetrwMethod(a:tgt)
8301 8484
8302 if b:netrw_method == 2 8485 if b:netrw_method == 2
8406 let mod = 1 8589 let mod = 1
8407 else 8590 else
8408 bw!|q 8591 bw!|q
8409 endif 8592 endif
8410 elseif !exists("b:netrw_method") || b:netrw_method < 0 8593 elseif !exists("b:netrw_method") || b:netrw_method < 0
8411 " call Dfunc("netrw#NetrwUpload : unsupported method") 8594 " call Dret("s:#NetrwUpload : unsupported method")
8412 return 8595 return
8413 endif 8596 endif
8414 else 8597 else
8415 call netrw#ErrorMsg(s:ERROR,"can't obtain files with protocol from<".a:tgt.">",63) 8598 call netrw#ErrorMsg(s:ERROR,"can't obtain files with protocol from<".a:tgt.">",63)
8416 endif 8599 endif
8455 " at the current time (Mar 19, 2007) all calls to NetrwRefresh() call NetrwBrowseChgDir() first. 8638 " at the current time (Mar 19, 2007) all calls to NetrwRefresh() call NetrwBrowseChgDir() first.
8456 setl ma noro 8639 setl ma noro
8457 " call Decho("setl ma noro",'~'.expand("<slnum>")) 8640 " call Decho("setl ma noro",'~'.expand("<slnum>"))
8458 " call Decho("clear buffer<".expand("%")."> with :%d",'~'.expand("<slnum>")) 8641 " call Decho("clear buffer<".expand("%")."> with :%d",'~'.expand("<slnum>"))
8459 let ykeep = @@ 8642 let ykeep = @@
8643 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
8644 if !exists("w:netrw_treetop")
8645 if exists("b:netrw_curdir")
8646 let w:netrw_treetop= b:netrw_curdir
8647 else
8648 let w:netrw_treetop= getcwd()
8649 endif
8650 endif
8651 NetrwKeepj call s:NetrwRefreshTreeDict(w:netrw_treetop)
8652 endif
8460 8653
8461 " save the cursor position before refresh. 8654 " save the cursor position before refresh.
8462 let screenposn = winsaveview() 8655 let screenposn = winsaveview()
8463 " call Decho("saving posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>")) 8656 " call Decho("saving posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>"))
8464 8657
8474 " restore position 8667 " restore position
8475 " call Decho("restoring posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>")) 8668 " call Decho("restoring posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>"))
8476 NetrwKeepj call winrestview(screenposn) 8669 NetrwKeepj call winrestview(screenposn)
8477 8670
8478 " restore file marks 8671 " restore file marks
8479 if exists("s:netrwmarkfilemtch_{bufnr('%')}") && s:netrwmarkfilemtch_{bufnr("%")} != "" 8672 if has("syntax") && exists("g:syntax_on") && g:syntax_on
8480 " call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/",'~'.expand("<slnum>")) 8673 if exists("s:netrwmarkfilemtch_{bufnr('%')}") && s:netrwmarkfilemtch_{bufnr("%")} != ""
8481 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/" 8674 " " call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/",'~'.expand("<slnum>"))
8482 else 8675 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/"
8483 " call Decho("2match none (bufnr(%)=".bufnr("%")."<".bufname("%").">)",'~'.expand("<slnum>")) 8676 else
8484 2match none 8677 " " call Decho("2match none (bufnr(%)=".bufnr("%")."<".bufname("%").">)",'~'.expand("<slnum>"))
8485 endif 8678 2match none
8679 endif
8680 endif
8486 8681
8487 " restore 8682 " restore
8488 let @@= ykeep 8683 let @@= ykeep
8489 " call Dret("s:NetrwRefresh") 8684 " call Dret("s:NetrwRefresh")
8490 endfun 8685 endfun
8956 9151
8957 " display subtrees (if any) 9152 " display subtrees (if any)
8958 let depth= s:treedepthstring.a:depth 9153 let depth= s:treedepthstring.a:depth
8959 " call Decho("display subtrees with depth<".depth."> and current leaves",'~'.expand("<slnum>")) 9154 " call Decho("display subtrees with depth<".depth."> and current leaves",'~'.expand("<slnum>"))
8960 9155
9156 " implement g:netrw_hide for tree listings (uses g:netrw_list_hide)
9157 if g:netrw_hide == 1
9158 " hide given patterns
9159 let listhide= split(g:netrw_list_hide,',')
9160 " call Decho("listhide=".string(listhide))
9161 for pat in listhide
9162 call filter(w:netrw_treedict[dir],'v:val !~ "'.pat.'"')
9163 endfor
9164
9165 elseif g:netrw_hide == 2
9166 " show given patterns (only)
9167 let listhide= split(g:netrw_list_hide,',')
9168 " call Decho("listhide=".string(listhide))
9169 let entries=[]
9170 for entry in w:netrw_treedict[dir]
9171 for pat in listhide
9172 if entry =~ pat
9173 call add(entries,entry)
9174 break
9175 endif
9176 endfor
9177 endfor
9178 let w:netrw_treedict[dir]= entries
9179 endif
9180 if depth != ""
9181 " always remove "." and ".." entries when there's depth
9182 call filter(w:netrw_treedict[dir],'v:val !~ "\\.\\.$"')
9183 call filter(w:netrw_treedict[dir],'v:val !~ "\\.$"')
9184 endif
9185
8961 " call Decho("for every entry in w:netrw_treedict[".dir."]=".string(w:netrw_treedict[dir]),'~'.expand("<slnum>")) 9186 " 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] 9187 for entry in w:netrw_treedict[dir]
8963 if dir =~ '/$' 9188 if dir =~ '/$'
8964 let direntry= substitute(dir.entry,'[@/]$','','e') 9189 let direntry= substitute(dir.entry,'[@/]$','','e')
8965 else 9190 else
8978 else 9203 else
8979 " call Decho("<".entry."> is not a key in treedict (no subtree)",'~'.expand("<slnum>")) 9204 " call Decho("<".entry."> is not a key in treedict (no subtree)",'~'.expand("<slnum>"))
8980 sil! NetrwKeepj call setline(line("$")+1,depth.entry) 9205 sil! NetrwKeepj call setline(line("$")+1,depth.entry)
8981 endif 9206 endif
8982 endfor 9207 endfor
9208 " call Decho("displaying: ".string(getline(w:netrw_bannercnt,'$')))
8983 9209
8984 " call Dret("NetrwTreeDisplay") 9210 " call Dret("NetrwTreeDisplay")
8985 endfun 9211 endfun
8986 9212
8987 " --------------------------------------------------------------------- 9213 " ---------------------------------------------------------------------
8988 " s:NetrwRefreshTreeDict: updates the contents information for a tree (w:netrw_treedict) {{{2 9214 " s:NetrwRefreshTreeDict: updates the contents information for a tree (w:netrw_treedict) {{{2
8989 fun! s:NetrwRefreshTreeDict(dir) 9215 fun! s:NetrwRefreshTreeDict(dir)
8990 " call Dfunc("s:NetrwRefreshTreeDict(dir<".a:dir.">)") 9216 " call Dfunc("s:NetrwRefreshTreeDict(dir<".a:dir.">)")
9217 if !exists("w:netrw_treedict")
9218 " call Dret("s:NetrwRefreshTreeDict : w:netrw_treedict doesn't exist")
9219 return
9220 endif
9221
8991 for entry in w:netrw_treedict[a:dir] 9222 for entry in w:netrw_treedict[a:dir]
8992 let direntry= substitute(a:dir.'/'.entry,'[@/]$','','e') 9223 let direntry= substitute(a:dir.'/'.entry,'[@/]$','','e')
8993 " call Decho("a:dir<".a:dir."> entry<".entry."> direntry<".direntry.">",'~'.expand("<slnum>")) 9224 " call Decho("a:dir<".a:dir."> entry<".entry."> direntry<".direntry.">",'~'.expand("<slnum>"))
8994 9225
8995 if entry =~ '/$' && has_key(w:netrw_treedict,direntry) 9226 if entry =~ '/$' && has_key(w:netrw_treedict,direntry)
9014 let liststar = s:NetrwGlob(direntry.'/','*',1) 9245 let liststar = s:NetrwGlob(direntry.'/','*',1)
9015 let listdotstar= s:NetrwGlob(direntry.'/','.*',1) 9246 let listdotstar= s:NetrwGlob(direntry.'/','.*',1)
9016 " call Decho("updating w:netrw_treedict[".direntry.']='.string(w:netrw_treedict[direntry]),'~'.expand("<slnum>")) 9247 " call Decho("updating w:netrw_treedict[".direntry.']='.string(w:netrw_treedict[direntry]),'~'.expand("<slnum>"))
9017 9248
9018 else 9249 else
9019 " call Decho('not updating w:netrw_treedict['.direntry.'] with entry<'.entry.'> (no subtree)',,'~'.expand("<slnum>")) 9250 " call Decho('not updating w:netrw_treedict['.string(direntry).'] with entry<'.string(entry).'> (no subtree)','~'.expand("<slnum>"))
9020 endif 9251 endif
9021 endfor 9252 endfor
9022 " call Dret("s:NetrwRefreshTreeDict") 9253 " call Dret("s:NetrwRefreshTreeDict")
9023 endfun 9254 endfun
9024 9255
9081 return 9312 return
9082 endif 9313 endif
9083 endfun 9314 endfun
9084 9315
9085 " --------------------------------------------------------------------- 9316 " ---------------------------------------------------------------------
9086 " s:NetrwTreePath: returns path to current file in tree listing {{{2 9317 " s:NetrwTreePath: returns path to current file/directory in tree listing {{{2
9087 " Normally, treetop is w:netrw_treetop, but a 9318 " Normally, treetop is w:netrw_treetop, but a
9088 " user of the function ( netrw#SetTreetop() ) 9319 " user of the function ( netrw#SetTreetop() )
9089 " wipes that out prior to calling this function 9320 " wipes that out prior to calling this function
9090 fun! s:NetrwTreePath(treetop) 9321 fun! s:NetrwTreePath(treetop)
9091 " call Dfunc("s:NetrwTreePath() line#".line(".")."<".getline(".").">") 9322 " call Dfunc("s:NetrwTreePath(treetop<".a:treetop.">) line#".line(".")."<".getline(".").">")
9323 if line(".") < w:netrw_bannercnt + 2
9324 let treedir= a:treetop
9325 if treedir !~ '/$'
9326 let treedir= treedir.'/'
9327 endif
9328 " call Dret("s:NetrwTreePath ".treedir." : line#".line(".")." ≤ ".(w:netrw_bannercnt+2))
9329 return treedir
9330 endif
9331
9092 let svpos = winsaveview() 9332 let svpos = winsaveview()
9093 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) 9333 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))
9094 let depth = substitute(getline('.'),'^\(\%('.s:treedepthstring.'\)*\)[^'.s:treedepthstring.'].\{-}$','\1','e') 9334 let depth = substitute(getline('.'),'^\(\%('.s:treedepthstring.'\)*\)[^'.s:treedepthstring.'].\{-}$','\1','e')
9095 " call Decho("depth<".depth."> 1st subst",'~'.expand("<slnum>")) 9335 " call Decho("depth<".depth."> 1st subst",'~'.expand("<slnum>"))
9096 let depth = substitute(depth,'^'.s:treedepthstring,'','') 9336 let depth = substitute(depth,'^'.s:treedepthstring,'','')
9117 let dirname= substitute(getline('.'),'^\('.s:treedepthstring.'\)*','','e') 9357 let dirname= substitute(getline('.'),'^\('.s:treedepthstring.'\)*','','e')
9118 let treedir= dirname.treedir 9358 let treedir= dirname.treedir
9119 let depth = substitute(depth,'^'.s:treedepthstring,'','') 9359 let depth = substitute(depth,'^'.s:treedepthstring,'','')
9120 " call Decho("constructing treedir<".treedir.">: dirname<".dirname."> while depth<".depth.">",'~'.expand("<slnum>")) 9360 " call Decho("constructing treedir<".treedir.">: dirname<".dirname."> while depth<".depth.">",'~'.expand("<slnum>"))
9121 endwhile 9361 endwhile
9362 " call Decho("treedir#1<".treedir.">",'~'.expand("<slnum>"))
9122 if a:treetop =~ '/$' 9363 if a:treetop =~ '/$'
9123 let treedir= a:treetop.treedir 9364 let treedir= a:treetop.treedir
9124 else 9365 else
9125 let treedir= a:treetop.'/'.treedir 9366 let treedir= a:treetop.'/'.treedir
9126 endif 9367 endif
9368 " call Decho("treedir#2<".treedir.">",'~'.expand("<slnum>"))
9127 let treedir= substitute(treedir,'//$','/','') 9369 let treedir= substitute(treedir,'//$','/','')
9370 " call Decho("treedir#3<".treedir.">",'~'.expand("<slnum>"))
9128 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))" 9371 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))"
9129 call winrestview(svpos) 9372 call winrestview(svpos)
9130 " call Dret("s:NetrwTreePath <".treedir.">") 9373 " call Dret("s:NetrwTreePath <".treedir.">")
9131 return treedir 9374 return treedir
9132 endfun 9375 endfun
9212 " --------------------------------------------------------------------- 9455 " ---------------------------------------------------------------------
9213 " s:PerformListing: {{{2 9456 " s:PerformListing: {{{2
9214 fun! s:PerformListing(islocal) 9457 fun! s:PerformListing(islocal)
9215 " call Dfunc("s:PerformListing(islocal=".a:islocal.")") 9458 " 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>")) 9459 " 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>")) 9460 " 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>"))
9218 9461
9219 " set up syntax highlighting {{{3 9462 " set up syntax highlighting {{{3
9220 " call Decho("--set up syntax highlighting (ie. setl ft=netrw)",'~'.expand("<slnum>")) 9463 " call Decho("--set up syntax highlighting (ie. setl ft=netrw)",'~'.expand("<slnum>"))
9221 sil! setl ft=netrw 9464 sil! setl ft=netrw
9222 9465
9292 exe "sil! NetrwKeepj ".w:netrw_bannercnt 9535 exe "sil! NetrwKeepj ".w:netrw_bannercnt
9293 " else " Decho 9536 " 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>")) 9537 " 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 9538 endif
9296 9539
9297 " show copy/move target, if any 9540 " show copy/move target, if any {{{3
9298 if g:netrw_banner 9541 if g:netrw_banner
9299 if exists("s:netrwmftgt") && exists("s:netrwmftgt_islocal") 9542 if exists("s:netrwmftgt") && exists("s:netrwmftgt_islocal")
9300 " call Decho("--show copy/move target<".s:netrwmftgt.">",'~'.expand("<slnum>")) 9543 " call Decho("--show copy/move target<".s:netrwmftgt.">",'~'.expand("<slnum>"))
9301 NetrwKeepj put ='' 9544 NetrwKeepj put =''
9302 if s:netrwmftgt_islocal 9545 if s:netrwmftgt_islocal
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>")) 9691 " 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 9692
9450 " resolve symbolic links if local and (thin or tree) 9693 " 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)) 9694 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>")) 9695 " call Decho("--resolve symbolic links if local and thin|tree",'~'.expand("<slnum>"))
9453 g/@$/call s:ShowLink() 9696 sil! g/@$/call s:ShowLink()
9454 endif 9697 endif
9455 9698
9456 if exists("w:netrw_bannercnt") && (line("$") >= w:netrw_bannercnt || !g:netrw_banner) 9699 if exists("w:netrw_bannercnt") && (line("$") >= w:netrw_bannercnt || !g:netrw_banner)
9457 " place cursor on the top-left corner of the file listing 9700 " 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>")) 9701 " call Decho("--place cursor on top-left corner of file listing",'~'.expand("<slnum>"))
9541 redraw 9784 redraw
9542 9785
9543 " call Dret("SetupNetrwStatusLine : stl=".&stl) 9786 " call Dret("SetupNetrwStatusLine : stl=".&stl)
9544 endfun 9787 endfun
9545 9788
9546 " --------------------------------------------------------------------- 9789 " =========================================
9547 " Remote Directory Browsing Support: {{{1 9790 " Remote Directory Browsing Support: {{{1
9548 " =========================================== 9791 " =========================================
9549 9792
9550 " --------------------------------------------------------------------- 9793 " ---------------------------------------------------------------------
9551 " s:NetrwRemoteFtpCmd: unfortunately, not all ftp servers honor options for ls {{{2 9794 " 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, 9795 " 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 9796 " and reverse sorts will be requested of the server but not otherwise
10144 NetrwKeepj call winrestview(svpos) 10387 NetrwKeepj call winrestview(svpos)
10145 10388
10146 " call Dret("NetrwRemoteRename") 10389 " call Dret("NetrwRemoteRename")
10147 endfun 10390 endfun
10148 10391
10149 " --------------------------------------------------------------------- 10392 " ==========================================
10150 " Local Directory Browsing Support: {{{1 10393 " Local Directory Browsing Support: {{{1
10151 " ========================================== 10394 " ==========================================
10152 10395
10153 " --------------------------------------------------------------------- 10396 " ---------------------------------------------------------------------
10154 " netrw#FileUrlRead: handles reading file://* files {{{2 10397 " netrw#FileUrlEdit: handles editing file://* files {{{2
10155 " Should accept: file://localhost/etc/fstab 10398 " Should accept: file://localhost/etc/fstab
10156 " file:///etc/fstab 10399 " file:///etc/fstab
10157 " file:///c:/WINDOWS/clock.avi 10400 " file:///c:/WINDOWS/clock.avi
10158 " file:///c|/WINDOWS/clock.avi 10401 " file:///c|/WINDOWS/clock.avi
10159 " file://localhost/c:/WINDOWS/clock.avi 10402 " file://localhost/c:/WINDOWS/clock.avi
10160 " file://localhost/c|/WINDOWS/clock.avi 10403 " file://localhost/c|/WINDOWS/clock.avi
10161 " file://c:/foo.txt 10404 " file://c:/foo.txt
10162 " file:///c:/foo.txt 10405 " file:///c:/foo.txt
10163 " and %XX (where X is [0-9a-fA-F] is converted into a character with the given hexadecimal value 10406 " and %XX (where X is [0-9a-fA-F] is converted into a character with the given hexadecimal value
10164 fun! netrw#FileUrlRead(fname) 10407 fun! netrw#FileUrlEdit(fname)
10165 " call Dfunc("netrw#FileUrlRead(fname<".a:fname.">)") 10408 " call Dfunc("netrw#FileUrlEdit(fname<".a:fname.">)")
10166 let fname = a:fname 10409 let fname = a:fname
10167 if fname =~ '^file://localhost/' 10410 if fname =~ '^file://localhost/'
10168 " call Decho('converting file://localhost/ -to- file:///','~'.expand("<slnum>")) 10411 " call Decho('converting file://localhost/ -to- file:///','~'.expand("<slnum>"))
10169 let fname= substitute(fname,'^file://localhost/','file:///','') 10412 let fname= substitute(fname,'^file://localhost/','file:///','')
10170 " call Decho("fname<".fname.">",'~'.expand("<slnum>")) 10413 " call Decho("fname<".fname.">",'~'.expand("<slnum>"))
10184 if plainfname =~ '^/\+\a:' 10427 if plainfname =~ '^/\+\a:'
10185 " call Decho('removing leading "/"s','~'.expand("<slnum>")) 10428 " call Decho('removing leading "/"s','~'.expand("<slnum>"))
10186 let plainfname= substitute(plainfname,'^/\+\(\a:\)','\1','') 10429 let plainfname= substitute(plainfname,'^/\+\(\a:\)','\1','')
10187 endif 10430 endif
10188 endif 10431 endif
10432
10189 " call Decho("fname2396<".fname2396.">",'~'.expand("<slnum>")) 10433 " call Decho("fname2396<".fname2396.">",'~'.expand("<slnum>"))
10190 " call Decho("plainfname<".plainfname.">",'~'.expand("<slnum>")) 10434 " call Decho("plainfname<".plainfname.">",'~'.expand("<slnum>"))
10191 exe "sil doau BufReadPre ".fname2396e 10435 exe "sil doau BufReadPre ".fname2396e
10192 exe 'NetrwKeepj r '.plainfname 10436 exe 'NetrwKeepj keepalt edit '.plainfname
10193 exe 'sil! bdelete '.plainfname 10437 exe 'sil! NetrwKeepj keepalt bdelete '.fnameescape(a:fname)
10194 exe 'keepalt file! '.plainfname 10438
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>")) 10439 " 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") 10440 " call Dret("netrw#FileUrlEdit")
10200 exe "sil doau BufReadPost ".fname2396e 10441 exe "sil doau BufReadPost ".fname2396e
10201 endfun 10442 endfun
10202 10443
10203 " --------------------------------------------------------------------- 10444 " ---------------------------------------------------------------------
10204 " netrw#LocalBrowseCheck: {{{2 10445 " netrw#LocalBrowseCheck: {{{2
10212 " would hit when re-entering netrw windows, creating unexpected 10453 " would hit when re-entering netrw windows, creating unexpected
10213 " refreshes (and would do so in the middle of NetrwSaveOptions(), too) 10454 " refreshes (and would do so in the middle of NetrwSaveOptions(), too)
10214 " call Dfunc("netrw#LocalBrowseCheck(dirname<".a:dirname.">") 10455 " call Dfunc("netrw#LocalBrowseCheck(dirname<".a:dirname.">")
10215 " call Decho("isdir<".a:dirname."> =".isdirectory(s:NetrwFile(a:dirname)).((exists("s:treeforceredraw")? " treeforceredraw" : "")).'~'.expand("<slnum>")) 10456 " 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>")) 10457 " 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!") 10458 " 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>")) 10459 " 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>")) 10460 " call Decho("current buffer#".bufnr("%")."<".bufname("%")."> ft=".&ft,'~'.expand("<slnum>"))
10220 10461
10221 let ykeep= @@ 10462 let ykeep= @@
10222 if isdirectory(s:NetrwFile(a:dirname)) 10463 if isdirectory(s:NetrwFile(a:dirname))
10291 let buftablist = [] 10532 let buftablist = []
10292 let ykeep = @@ 10533 let ykeep = @@
10293 while itab <= tabpagenr("$") 10534 while itab <= tabpagenr("$")
10294 let buftablist = buftablist + tabpagebuflist() 10535 let buftablist = buftablist + tabpagebuflist()
10295 let itab = itab + 1 10536 let itab = itab + 1
10296 tabn 10537 sil! tabn
10297 endwhile 10538 endwhile
10298 " call Decho("buftablist".string(buftablist),'~'.expand("<slnum>")) 10539 " call Decho("buftablist".string(buftablist),'~'.expand("<slnum>"))
10299 " call Decho("s:netrw_browselist<".(exists("s:netrw_browselist")? string(s:netrw_browselist) : "").">",'~'.expand("<slnum>")) 10540 " 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): 10541 " GO through all buffers on netrw_browselist (ie. just local-netrw buffers):
10301 " | refresh any netrw window 10542 " | refresh any netrw window
10302 " | wipe out any non-displaying netrw buffer 10543 " | wipe out any non-displaying netrw buffer
10303 let curwin = winnr() 10544 let curwinid = win_getid(winnr())
10304 let ibl = 0 10545 let ibl = 0
10305 for ibuf in s:netrw_browselist 10546 for ibuf in s:netrw_browselist
10306 " call Decho("bufwinnr(".ibuf.") index(buftablist,".ibuf.")=".index(buftablist,ibuf),'~'.expand("<slnum>")) 10547 " call Decho("bufwinnr(".ibuf.") index(buftablist,".ibuf.")=".index(buftablist,ibuf),'~'.expand("<slnum>"))
10307 if bufwinnr(ibuf) == -1 && index(buftablist,ibuf) == -1 10548 if bufwinnr(ibuf) == -1 && index(buftablist,ibuf) == -1
10308 " wipe out any non-displaying netrw buffer 10549 " wipe out any non-displaying netrw buffer
10550 " (ibuf not shown in a current window AND
10551 " ibuf not in any tab)
10309 " call Decho("wiping buf#".ibuf,"<".bufname(ibuf).">",'~'.expand("<slnum>")) 10552 " call Decho("wiping buf#".ibuf,"<".bufname(ibuf).">",'~'.expand("<slnum>"))
10310 exe "sil! keepj bd ".fnameescape(ibuf) 10553 exe "sil! keepj bd ".fnameescape(ibuf)
10311 call remove(s:netrw_browselist,ibl) 10554 call remove(s:netrw_browselist,ibl)
10312 " call Decho("browselist=".string(s:netrw_browselist),'~'.expand("<slnum>")) 10555 " call Decho("browselist=".string(s:netrw_browselist),'~'.expand("<slnum>"))
10313 continue 10556 continue
10327 NetrwKeepj call s:NetrwRefresh(1,s:NetrwBrowseChgDir(1,'./')) 10570 NetrwKeepj call s:NetrwRefresh(1,s:NetrwBrowseChgDir(1,'./'))
10328 endif 10571 endif
10329 let ibl= ibl + 1 10572 let ibl= ibl + 1
10330 " call Decho("bottom of s:netrw_browselist for loop: ibl=".ibl,'~'.expand("<slnum>")) 10573 " call Decho("bottom of s:netrw_browselist for loop: ibl=".ibl,'~'.expand("<slnum>"))
10331 endfor 10574 endfor
10332 " call Decho("restore window: exe ".curwin."wincmd w",'~'.expand("<slnum>")) 10575 " call Decho("restore window: win_gotoid(".curwinid.")")
10333 exe curwin."wincmd w" 10576 call win_gotoid(curwinid)
10334 let @@= ykeep 10577 let @@= ykeep
10335 10578
10336 " call Dret("s:LocalBrowseRefresh") 10579 " call Dret("s:LocalBrowseRefresh")
10337 endfun 10580 endfun
10338 10581
10784 endif 11027 endif
10785 endif 11028 endif
10786 let rmfile= substitute(rmfile,'[\/]$','','e') 11029 let rmfile= substitute(rmfile,'[\/]$','','e')
10787 11030
10788 if all || ok =~# 'y\%[es]' || ok == "" 11031 if all || ok =~# 'y\%[es]' || ok == ""
10789 if v:version < 704 || !has("patch1109") 11032 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>")) 11033 " " 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)) 11034 call system(netrw#WinPath(g:netrw_localrmdir).' '.s:ShellEscape(rmfile))
10792 " " call Decho("v:shell_error=".v:shell_error,'~'.expand("<slnum>")) 11035 " " call Decho("v:shell_error=".v:shell_error,'~'.expand("<slnum>"))
10793 11036
10794 if v:shell_error != 0 11037 if v:shell_error != 0
10820 11063
10821 " call Dret("s:NetrwLocalRmFile ".ok) 11064 " call Dret("s:NetrwLocalRmFile ".ok)
10822 return ok 11065 return ok
10823 endfun 11066 endfun
10824 11067
10825 " --------------------------------------------------------------------- 11068 " =====================================================================
10826 " Support Functions: {{{1 11069 " 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 11070
10839 " --------------------------------------------------------------------- 11071 " ---------------------------------------------------------------------
10840 " netrw#Access: intended to provide access to variable values for netrw's test suite {{{2 11072 " netrw#Access: intended to provide access to variable values for netrw's test suite {{{2
10841 " 0: marked file list of current buffer 11073 " 0: marked file list of current buffer
10842 " 1: marked file target 11074 " 1: marked file target
10847 else 11079 else
10848 return "no-list-buf#".bufnr('%') 11080 return "no-list-buf#".bufnr('%')
10849 endif 11081 endif
10850 elseif a:ilist == 1 11082 elseif a:ilist == 1
10851 return s:netrwmftgt 11083 return s:netrwmftgt
11084 endif
10852 endfun 11085 endfun
10853 11086
10854 " --------------------------------------------------------------------- 11087 " ---------------------------------------------------------------------
10855 " netrw#Call: allows user-specified mappings to call internal netrw functions {{{2 11088 " netrw#Call: allows user-specified mappings to call internal netrw functions {{{2
10856 fun! netrw#Call(funcname,...) 11089 fun! netrw#Call(funcname,...)
10857 " call Dfunc("netrw#Call(funcname<".a:funcname.">,".string(a:000).")") 11090 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 11091 endfun
10865 11092
10866 " --------------------------------------------------------------------- 11093 " ---------------------------------------------------------------------
10867 " netrw#Expose: allows UserMaps and pchk to look at otherwise script-local variables {{{2 11094 " netrw#Expose: allows UserMaps and pchk to look at otherwise script-local variables {{{2
10868 " I expect this function to be used in 11095 " I expect this function to be used in
10968 " call Dret("netrw#WinPath <".path.">") 11195 " call Dret("netrw#WinPath <".path.">")
10969 return path 11196 return path
10970 endfun 11197 endfun
10971 11198
10972 " --------------------------------------------------------------------- 11199 " ---------------------------------------------------------------------
11200 " s:NetrwBadd: adds marked files to buffer list or vice versa {{{2
11201 " cb : bl2mf=0 add marked files to buffer list
11202 " cB : bl2mf=1 use bufferlist to mark files
11203 " (mnemonic: cb = copy (marked files) to buffer list)
11204 fun! s:NetrwBadd(islocal,bl2mf)
11205 " " call Dfunc("s:NetrwBadd(islocal=".a:islocal." mf2bl=".mf2bl.")")
11206 if a:bl2mf
11207 " cB: add buffer list to marked files
11208 redir => bufl
11209 ls
11210 redir END
11211 let bufl = map(split(bufl,"\n"),'substitute(v:val,''^.\{-}"\(.*\)".\{-}$'',''\1'','''')')
11212 for fname in bufl
11213 call s:NetrwMarkFile(a:islocal,fname)
11214 endfor
11215 else
11216 " cb: add marked files to buffer list
11217 for fname in s:netrwmarkfilelist_{bufnr("%")}
11218 " " call Decho("badd ".fname,'~'.expand("<slnum>"))
11219 exe "badd ".fnameescape(fname)
11220 endfor
11221 let curbufnr = bufnr("%")
11222 let curdir = s:NetrwGetCurdir(a:islocal)
11223 call s:NetrwUnmarkList(curbufnr,curdir) " remove markings from local buffer
11224 endif
11225 " call Dret("s:NetrwBadd")
11226 endfun
11227
11228 " ---------------------------------------------------------------------
10973 " s:ComposePath: Appends a new part to a path taking different systems into consideration {{{2 11229 " s:ComposePath: Appends a new part to a path taking different systems into consideration {{{2
10974 fun! s:ComposePath(base,subdir) 11230 fun! s:ComposePath(base,subdir)
10975 " call Dfunc("s:ComposePath(base<".a:base."> subdir<".a:subdir.">)") 11231 " call Dfunc("s:ComposePath(base<".a:base."> subdir<".a:subdir.">)")
10976 11232
10977 if has("amiga") 11233 if has("amiga")
10981 let ret = a:base."/" . a:subdir 11237 let ret = a:base."/" . a:subdir
10982 else 11238 else
10983 let ret = a:base.a:subdir 11239 let ret = a:base.a:subdir
10984 endif 11240 endif
10985 11241
10986 elseif a:subdir =~ '^\a:[/\\][^/\\]' && (has("win32") || has("win95") || has("win64") || has("win16")) 11242 " COMBAK: test on windows with changing to root directory: :e C:/
11243 elseif a:subdir =~ '^\a:[/\\]\([^/\\]\|$\)' && (has("win32") || has("win95") || has("win64") || has("win16"))
10987 " call Decho("windows",'~'.expand("<slnum>")) 11244 " call Decho("windows",'~'.expand("<slnum>"))
10988 let ret= a:subdir 11245 let ret= a:subdir
10989 11246
10990 elseif a:base =~ '^\a:[/\\][^/\\]' && (has("win32") || has("win95") || has("win64") || has("win16")) 11247 elseif a:base =~ '^\a:[/\\]\([^/\\]\|$\)' && (has("win32") || has("win95") || has("win64") || has("win16"))
10991 " call Decho("windows",'~'.expand("<slnum>")) 11248 " call Decho("windows",'~'.expand("<slnum>"))
10992 if a:base =~ '[/\\]$' 11249 if a:base =~ '[/\\]$'
10993 let ret= a:base.a:subdir 11250 let ret= a:base.a:subdir
10994 else 11251 else
10995 let ret= a:base.'/'.a:subdir 11252 let ret= a:base.'/'.a:subdir
11327 endfun 11584 endfun
11328 11585
11329 " --------------------------------------------------------------------- 11586 " ---------------------------------------------------------------------
11330 " s:NetrwEnew: opens a new buffer, passes netrw buffer variables through {{{2 11587 " s:NetrwEnew: opens a new buffer, passes netrw buffer variables through {{{2
11331 fun! s:NetrwEnew(...) 11588 fun! s:NetrwEnew(...)
11332 " call Dfunc("s:NetrwEnew() a:0=".a:0." bufnr($)=".bufnr("$")) 11589 " 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>")) 11590 " call Decho("curdir<".((a:0>0)? a:1 : "")."> buf#".bufnr("%")."<".bufname("%").">",'~'.expand("<slnum>"))
11334 11591
11335 " grab a function-local-variable copy of buffer variables 11592 " grab a function-local-variable copy of buffer variables
11336 " call Decho("make function-local copy of netrw variables",'~'.expand("<slnum>")) 11593 " call Decho("make function-local copy of netrw variables",'~'.expand("<slnum>"))
11337 if exists("b:netrw_bannercnt") |let netrw_bannercnt = b:netrw_bannercnt |endif 11594 if exists("b:netrw_bannercnt") |let netrw_bannercnt = b:netrw_bannercnt |endif
11390 file NetrwTreeListing 11647 file NetrwTreeListing
11391 setl nobl bt=nowrite bh=hide 11648 setl nobl bt=nowrite bh=hide
11392 nno <silent> <buffer> [ :sil call <SID>TreeListMove('[')<cr> 11649 nno <silent> <buffer> [ :sil call <SID>TreeListMove('[')<cr>
11393 nno <silent> <buffer> ] :sil call <SID>TreeListMove(']')<cr> 11650 nno <silent> <buffer> ] :sil call <SID>TreeListMove(']')<cr>
11394 else 11651 else
11395 exe "sil! keepalt file ".fnameescape(b:netrw_curdir) 11652 call s:NetrwBufRename(b:netrw_curdir)
11396 endif 11653 endif
11397 endif 11654 endif
11398 endif 11655 endif
11399 11656
11400 " call Dret("s:NetrwEnew : buf#".bufnr("%")."<".bufname("%")."> expand(%)<".expand("%")."> expand(#)<".expand("#")."> bh=".&bh." win#".winnr()." winnr($)#".winnr("$")) 11657 " call Dret("s:NetrwEnew : buf#".bufnr("%")."<".bufname("%")."> expand(%)<".expand("%")."> expand(#)<".expand("#")."> bh=".&bh." win#".winnr()." winnr($)#".winnr("$"))
11401 endfun 11658 endfun
11402 11659
11403 " --------------------------------------------------------------------- 11660 " ---------------------------------------------------------------------
11404 " s:NetrwExe: executes a string using "!" {{{2 11661 " s:NetrwExe: executes a string using "!" {{{2
11405 fun! s:NetrwExe(cmd) 11662 fun! s:NetrwExe(cmd)
11406 " call Dfunc("s:NetrwExe(a:cmd)") 11663 " call Dfunc("s:NetrwExe(a:cmd<".a:cmd.">)")
11407 if has("win32") && &shell !~? 'cmd' && !g:netrw_cygwin 11664 if has("win32") && &shell !~? 'cmd' && !g:netrw_cygwin
11665 " call Decho("using win32:",expand("<slnum>"))
11408 let savedShell=[&shell,&shellcmdflag,&shellxquote,&shellxescape,&shellquote,&shellpipe,&shellredir,&shellslash] 11666 let savedShell=[&shell,&shellcmdflag,&shellxquote,&shellxescape,&shellquote,&shellpipe,&shellredir,&shellslash]
11409 set shell& shellcmdflag& shellxquote& shellxescape& 11667 set shell& shellcmdflag& shellxquote& shellxescape&
11410 set shellquote& shellpipe& shellredir& shellslash& 11668 set shellquote& shellpipe& shellredir& shellslash&
11411 exe a:cmd 11669 exe a:cmd
11412 let [&shell,&shellcmdflag,&shellxquote,&shellxescape,&shellquote,&shellpipe,&shellredir,&shellslash] = savedShell 11670 let [&shell,&shellcmdflag,&shellxquote,&shellxescape,&shellquote,&shellpipe,&shellredir,&shellslash] = savedShell
11413 else 11671 else
11672 " call Decho("exe ".a:cmd,'~'.expand("<slnum>"))
11414 exe a:cmd 11673 exe a:cmd
11415 endif 11674 endif
11416 " call Dret("s:NetrwExe") 11675 " call Dret("s:NetrwExe : v:shell_error=".v:shell_error)
11417 endfun 11676 endfun
11418 11677
11419 " --------------------------------------------------------------------- 11678 " ---------------------------------------------------------------------
11420 " s:NetrwInsureWinVars: insure that a netrw buffer has its w: variables in spite of a wincmd v or s {{{2 11679 " s:NetrwInsureWinVars: insure that a netrw buffer has its w: variables in spite of a wincmd v or s {{{2
11421 fun! s:NetrwInsureWinVars() 11680 fun! s:NetrwInsureWinVars()
11444 endif 11703 endif
11445 endfun 11704 endfun
11446 11705
11447 " --------------------------------------------------------------------- 11706 " ---------------------------------------------------------------------
11448 " s:NetrwLcd: handles changing the (local) directory {{{2 11707 " s:NetrwLcd: handles changing the (local) directory {{{2
11708 " Returns: 0=success
11709 " -1=failed
11449 fun! s:NetrwLcd(newdir) 11710 fun! s:NetrwLcd(newdir)
11450 " call Dfunc("s:NetrwLcd(newdir<".a:newdir.">)") 11711 " call Dfunc("s:NetrwLcd(newdir<".a:newdir.">)")
11451 11712
11713 let err472= 0
11452 try 11714 try
11453 exe 'NetrwKeepj sil lcd '.fnameescape(a:newdir) 11715 exe 'NetrwKeepj sil lcd '.fnameescape(a:newdir)
11454 catch /^Vim\%((\a\+)\)\=:E344/ 11716 catch /^Vim\%((\a\+)\)\=:E344/
11455 " Vim's lcd fails with E344 when attempting to go above the 'root' of a Windows share. 11717 " 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 11718 " Therefore, detect if a Windows share is present, and if E344 occurs, just settle at
11462 let dirname = '\' 11724 let dirname = '\'
11463 exe 'NetrwKeepj sil lcd '.fnameescape(dirname) 11725 exe 'NetrwKeepj sil lcd '.fnameescape(dirname)
11464 endif 11726 endif
11465 endif 11727 endif
11466 catch /^Vim\%((\a\+)\)\=:E472/ 11728 catch /^Vim\%((\a\+)\)\=:E472/
11729 let err472= 1
11730 endtry
11731
11732 if err472
11467 call netrw#ErrorMsg(s:ERROR,"unable to change directory to <".a:newdir."> (permissions?)",61) 11733 call netrw#ErrorMsg(s:ERROR,"unable to change directory to <".a:newdir."> (permissions?)",61)
11468 if exists("w:netrw_prvdir") 11734 if exists("w:netrw_prvdir")
11469 let a:newdir= w:netrw_prvdir 11735 let a:newdir= w:netrw_prvdir
11470 else 11736 else
11471 call s:NetrwOptionRestore("w:") 11737 call s:NetrwOptionRestore("w:")
11472 " call Decho("setl noma nomod nowrap",'~'.expand("<slnum>")) 11738 " call Decho("setl noma nomod nowrap",'~'.expand("<slnum>"))
11473 exe "setl ".g:netrw_bufsettings 11739 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>")) 11740 " 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 11741 let a:newdir= dirname
11476 " call Dret("s:NetrwBrowse : reusing buffer#".(exists("bufnum")? bufnum : 'N/A')."<".dirname."> getcwd<".getcwd().">") 11742 endif
11477 return 11743 " call Dret("s:NetrwBrowse -1 : reusing buffer#".(exists("bufnum")? bufnum : 'N/A')."<".dirname."> getcwd<".getcwd().">")
11478 endif 11744 return -1
11479 endtry 11745 endif
11480 11746
11481 " call Dret("s:NetrwLcd") 11747 " call Dret("s:NetrwLcd 0")
11748 return 0
11482 endfun 11749 endfun
11483 11750
11484 " ------------------------------------------------------------------------ 11751 " ------------------------------------------------------------------------
11485 " s:NetrwSaveWordPosn: used to keep cursor on same word after refresh, {{{2 11752 " s:NetrwSaveWordPosn: used to keep cursor on same word after refresh, {{{2
11486 " changed sorting, etc. Also see s:NetrwRestoreWordPosn(). 11753 " changed sorting, etc. Also see s:NetrwRestoreWordPosn().
11644 " s:Rexplore: implements returning from a buffer to a netrw directory {{{2 11911 " s:Rexplore: implements returning from a buffer to a netrw directory {{{2
11645 " 11912 "
11646 " s:SetRexDir() sets up <2-leftmouse> maps (if g:netrw_retmap 11913 " s:SetRexDir() sets up <2-leftmouse> maps (if g:netrw_retmap
11647 " is true) and a command, :Rexplore, which call this function. 11914 " is true) and a command, :Rexplore, which call this function.
11648 " 11915 "
11649 " s:netrw_nbcd is set up by s:NetrwBrowseChgDir() 11916 " s:netrw_posn is set up by s:NetrwBrowseChgDir()
11650 " 11917 "
11651 " s:rexposn_BUFNR used to save/restore cursor position 11918 " s:rexposn_BUFNR used to save/restore cursor position
11652 fun! s:NetrwRexplore(islocal,dirname) 11919 fun! s:NetrwRexplore(islocal,dirname)
11653 if exists("s:netrwdrag") 11920 if exists("s:netrwdrag")
11654 return 11921 return
11700 endif 11967 endif
11701 else 11968 else
11702 " call Decho("s:rexposn_".bufnr('%')."<".bufname("%")."> doesn't exist",'~'.expand("<slnum>")) 11969 " call Decho("s:rexposn_".bufnr('%')."<".bufname("%")."> doesn't exist",'~'.expand("<slnum>"))
11703 endif 11970 endif
11704 11971
11705 if exists("s:explore_match") 11972 if has("syntax") && exists("g:syntax_on") && g:syntax_on
11706 exe "2match netrwMarkFile /".s:explore_match."/" 11973 if exists("s:explore_match")
11974 exe "2match netrwMarkFile /".s:explore_match."/"
11975 endif
11707 endif 11976 endif
11708 11977
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>")) 11978 " 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) 11979 " call Dret("s:NetrwRexplore : ft=".&ft)
11711 endfun 11980 endfun
11729 " --------------------------------------------------------------------- 11998 " ---------------------------------------------------------------------
11730 " s:SavePosn: saves position associated with current buffer into a dictionary {{{2 11999 " s:SavePosn: saves position associated with current buffer into a dictionary {{{2
11731 fun! s:SavePosn(posndict) 12000 fun! s:SavePosn(posndict)
11732 " call Dfunc("s:SavePosn(posndict) curbuf#".bufnr("%")."<".bufname("%").">") 12001 " call Dfunc("s:SavePosn(posndict) curbuf#".bufnr("%")."<".bufname("%").">")
11733 12002
11734 let a:posndict[bufnr("%")]= winsaveview() 12003 if !exists("a:posndict[bufnr('%')]")
11735 " call Decho("saving posn: posndict[".bufnr("%")."]=".string(winsaveview()),'~'.expand("<slnum>")) 12004 let a:posndict[bufnr("%")]= []
12005 endif
12006 " call Decho("before push: a:posndict[buf#".bufnr("%")."]=".string(a:posndict[bufnr('%')]))
12007 call add(a:posndict[bufnr("%")],winsaveview())
12008 " call Decho("after push: a:posndict[buf#".bufnr("%")."]=".string(a:posndict[bufnr('%')]))
11736 12009
11737 " call Dret("s:SavePosn posndict") 12010 " call Dret("s:SavePosn posndict")
11738 return a:posndict 12011 return a:posndict
11739 endfun 12012 endfun
11740 12013
11741 " --------------------------------------------------------------------- 12014 " ---------------------------------------------------------------------
11742 " s:RestorePosn: restores position associated with current buffer using dictionary {{{2 12015 " s:RestorePosn: restores position associated with current buffer using dictionary {{{2
11743 fun! s:RestorePosn(posndict) 12016 fun! s:RestorePosn(posndict)
11744 " call Dfunc("s:RestorePosn(posndict) curbuf#".bufnr("%")."<".bufname("%").">") 12017 " call Dfunc("s:RestorePosn(posndict) curbuf#".bufnr("%")."<".bufname("%").">")
11745 if has_key(a:posndict,bufnr("%")) 12018 if exists("a:posndict")
11746 call winrestview(a:posndict[bufnr("%")]) 12019 if has_key(a:posndict,bufnr("%"))
11747 " call Decho("restoring posn: posndict[".bufnr("%")."]=".string(a:posndict[bufnr("%")]),'~'.expand("<slnum>")) 12020 " call Decho("before pop: a:posndict[buf#".bufnr("%")."]=".string(a:posndict[bufnr('%')]))
12021 let posnlen= len(a:posndict[bufnr("%")])
12022 if posnlen > 0
12023 let posnlen= posnlen - 1
12024 " call Decho("restoring posn posndict[".bufnr("%")."][".posnlen."]=".string(a:posndict[bufnr("%")][posnlen]),'~'.expand("<slnum>"))
12025 call winrestview(a:posndict[bufnr("%")][posnlen])
12026 call remove(a:posndict[bufnr("%")],posnlen)
12027 " call Decho("after pop: a:posndict[buf#".bufnr("%")."]=".string(a:posndict[bufnr('%')]))
12028 endif
12029 endif
11748 endif 12030 endif
11749 " call Dret("s:RestorePosn") 12031 " call Dret("s:RestorePosn")
11750 endfun 12032 endfun
11751 12033
11752 " --------------------------------------------------------------------- 12034 " ---------------------------------------------------------------------
12030 endif 12312 endif
12031 12313
12032 " call Dret("s:UserMaps") 12314 " call Dret("s:UserMaps")
12033 endfun 12315 endfun
12034 12316
12035 " --------------------------------------------------------------------- 12317 " ==========================
12036 " Settings Restoration: {{{1 12318 " Settings Restoration: {{{1
12319 " ==========================
12037 let &cpo= s:keepcpo 12320 let &cpo= s:keepcpo
12038 unlet s:keepcpo 12321 unlet s:keepcpo
12039 12322
12040 " ------------------------------------------------------------------------ 12323 " ===============
12041 " Modelines: {{{1 12324 " Modelines: {{{1
12325 " ===============
12042 " vim:ts=8 fdm=marker 12326 " vim:ts=8 fdm=marker