comparison runtime/autoload/netrw.vim @ 13030:92a0a33f8296

move netrw back to the previous version commit https://github.com/vim/vim/commit/4697399e8c805325009351a2488e3da530d0af38 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Dec 14 19:56:46 2017 +0100 move netrw back to the previous version
author Christian Brabandt <cb@256bit.org>
date Thu, 14 Dec 2017 20:00:05 +0100
parents 65d7fd8381a3
children 6ef705baab8d
comparison
equal deleted inserted replaced
13029:ad25944f23a6 13030:92a0a33f8296
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: Nov 03, 2017 3 " Date: Apr 20, 2016
4 " Version: 162 4 " Version: 156
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 25 " netrw requires vim having patch 213; netrw will benefit from vim's having patch#656, too
26 " Check that vim has patches that netrw requires. 26 if v:version < 704 || !has("patch213")
27 " Patches needed: 1557, and 213. 27 if !exists("s:needpatch213")
28 " (netrw will benefit from vim's having patch#656, too) 28 unsilent echomsg "***sorry*** this version of netrw requires vim v7.4 with patch 213"
29 let s:needspatches=[1557,213] 29 endif
30 if exists("s:needspatches") 30 let s:needpatch213= 1
31 for ptch in s:needspatches 31 finish
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
40 endif 32 endif
41 33 let g:loaded_netrw = "v156"
42 let g:loaded_netrw = "v162"
43 if !exists("s:NOTE") 34 if !exists("s:NOTE")
44 let s:NOTE = 0 35 let s:NOTE = 0
45 let s:WARNING = 1 36 let s:WARNING = 1
46 let s:ERROR = 2 37 let s:ERROR = 2
47 endif 38 endif
62 " 1=warning = s:WARNING 53 " 1=warning = s:WARNING
63 " 2=error = s:ERROR 54 " 2=error = s:ERROR
64 " Usage: netrw#ErrorMsg(s:NOTE | s:WARNING | s:ERROR,"some message",error-number) 55 " Usage: netrw#ErrorMsg(s:NOTE | s:WARNING | s:ERROR,"some message",error-number)
65 " netrw#ErrorMsg(s:NOTE | s:WARNING | s:ERROR,["message1","message2",...],error-number) 56 " netrw#ErrorMsg(s:NOTE | s:WARNING | s:ERROR,["message1","message2",...],error-number)
66 " (this function can optionally take a list of messages) 57 " (this function can optionally take a list of messages)
67 " Mar 21, 2017 : max errnum currently is 105 58 " Jan 19, 2016 : max errnum currently is 103
68 fun! netrw#ErrorMsg(level,msg,errnum) 59 fun! netrw#ErrorMsg(level,msg,errnum)
69 " call Dfunc("netrw#ErrorMsg(level=".a:level." msg<".a:msg."> errnum=".a:errnum.") g:netrw_use_errorwindow=".g:netrw_use_errorwindow) 60 " call Dfunc("netrw#ErrorMsg(level=".a:level." msg<".a:msg."> errnum=".a:errnum.") g:netrw_use_errorwindow=".g:netrw_use_errorwindow)
70 61
71 if a:level < g:netrw_errorlvl 62 if a:level < g:netrw_errorlvl
72 " call Dret("netrw#ErrorMsg : suppressing level=".a:level." since g:netrw_errorlvl=".g:netrw_errorlvl) 63 " call Dret("netrw#ErrorMsg : suppressing level=".a:level." since g:netrw_errorlvl=".g:netrw_errorlvl)
186 call s:NetrwInit("s:LONGLIST",1) 177 call s:NetrwInit("s:LONGLIST",1)
187 call s:NetrwInit("s:WIDELIST",2) 178 call s:NetrwInit("s:WIDELIST",2)
188 call s:NetrwInit("s:TREELIST",3) 179 call s:NetrwInit("s:TREELIST",3)
189 call s:NetrwInit("s:MAXLIST" ,4) 180 call s:NetrwInit("s:MAXLIST" ,4)
190 endif 181 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 = ""
199 182
200 " --------------------------------------------------------------------- 183 " ---------------------------------------------------------------------
201 " Default values for netrw's global protocol variables {{{2 184 " Default values for netrw's global protocol variables {{{2
202 call s:NetrwInit("g:netrw_use_errorwindow",1) 185 call s:NetrwInit("g:netrw_use_errorwindow",1)
203 186
230 let s:netrw_ftp_cmd= g:netrw_ftp_cmd 213 let s:netrw_ftp_cmd= g:netrw_ftp_cmd
231 if !exists("g:netrw_ftp_options") 214 if !exists("g:netrw_ftp_options")
232 let g:netrw_ftp_options= "-i -n" 215 let g:netrw_ftp_options= "-i -n"
233 endif 216 endif
234 if !exists("g:netrw_http_cmd") 217 if !exists("g:netrw_http_cmd")
235 if executable("curl") 218 if executable("elinks")
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")
236 let g:netrw_http_cmd = "curl" 225 let g:netrw_http_cmd = "curl"
237 call s:NetrwInit("g:netrw_http_xcmd","-L -o") 226 call s:NetrwInit("g:netrw_http_xcmd","-o")
238 elseif executable("wget") 227 elseif executable("wget")
239 let g:netrw_http_cmd = "wget" 228 let g:netrw_http_cmd = "wget"
240 call s:NetrwInit("g:netrw_http_xcmd","-q -O") 229 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 >")
244 elseif executable("fetch") 230 elseif executable("fetch")
245 let g:netrw_http_cmd = "fetch" 231 let g:netrw_http_cmd = "fetch"
246 call s:NetrwInit("g:netrw_http_xcmd","-o") 232 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 >")
250 else 233 else
251 let g:netrw_http_cmd = "" 234 let g:netrw_http_cmd = ""
252 endif 235 endif
253 endif 236 endif
254 call s:NetrwInit("g:netrw_http_put_cmd","curl -T") 237 call s:NetrwInit("g:netrw_http_put_cmd","curl -T")
255 call s:NetrwInit("g:netrw_keepj","keepj") 238 call s:NetrwInit("g:netrw_keepj","keepj")
256 call s:NetrwInit("g:netrw_rcp_cmd" , "rcp") 239 call s:NetrwInit("g:netrw_rcp_cmd" , "rcp")
257 call s:NetrwInit("g:netrw_rsync_cmd", "rsync") 240 call s:NetrwInit("g:netrw_rsync_cmd", "rsync")
258 call s:NetrwInit("g:netrw_rsync_sep", "/")
259 if !exists("g:netrw_scp_cmd") 241 if !exists("g:netrw_scp_cmd")
260 if executable("scp") 242 if executable("scp")
261 call s:NetrwInit("g:netrw_scp_cmd" , "scp -q") 243 call s:NetrwInit("g:netrw_scp_cmd" , "scp -q")
262 elseif executable("pscp") 244 elseif executable("pscp")
263 if (has("win32") || has("win95") || has("win64") || has("win16")) && filereadable('c:\private.ppk') 245 if (has("win32") || has("win95") || has("win64") || has("win16")) && filereadable('c:\private.ppk')
380 if !exists("g:netrw_localcopycmd") 362 if !exists("g:netrw_localcopycmd")
381 if has("win32") || has("win95") || has("win64") || has("win16") 363 if has("win32") || has("win95") || has("win64") || has("win16")
382 if g:netrw_cygwin 364 if g:netrw_cygwin
383 let g:netrw_localcopycmd= "cp" 365 let g:netrw_localcopycmd= "cp"
384 else 366 else
385 let g:netrw_localcopycmd = expand("$COMSPEC") 367 let g:netrw_localcopycmd= expand("$COMSPEC")." /c copy"
386 let g:netrw_localcopycmdopt= " /c copy"
387 endif 368 endif
388 elseif has("unix") || has("macunix") 369 elseif has("unix") || has("macunix")
389 let g:netrw_localcopycmd= "cp" 370 let g:netrw_localcopycmd= "cp"
390 else 371 else
391 let g:netrw_localcopycmd= "" 372 let g:netrw_localcopycmd= ""
392 endif 373 endif
393 endif 374 endif
394 if !exists("g:netrw_localcopydircmd") 375 if !exists("g:netrw_localcopydircmd")
395 if has("win32") || has("win95") || has("win64") || has("win16") 376 if has("win32") || has("win95") || has("win64") || has("win16")
396 if g:netrw_cygwin 377 if g:netrw_cygwin
397 let g:netrw_localcopydircmd = "cp" 378 let g:netrw_localcopydircmd= "cp -R"
398 let g:netrw_localcopydircmdopt= " -R" 379 else
399 else 380 let g:netrw_localcopycmd= expand("$COMSPEC")." /c xcopy /e /c /h /i /k"
400 let g:netrw_localcopydircmd = expand("$COMSPEC") 381 endif
401 let g:netrw_localcopydircmdopt= " /c xcopy /e /c /h /i /k" 382 elseif has("unix") || has("macunix")
402 endif 383 let g:netrw_localcopydircmd= "cp -R"
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"
409 else 384 else
410 let g:netrw_localcopydircmd= "" 385 let g:netrw_localcopycmd= ""
411 endif 386 endif
412 endif 387 endif
413 if exists("g:netrw_local_mkdir") 388 if exists("g:netrw_local_mkdir")
414 let g:netrw_localmkdir= g:netrw_local_mkdir 389 let g:netrw_localmkdir= g:netrw_local_mkdir
415 call netrw#ErrorMsg(s:NOTE,"g:netrw_local_mkdir is deprecated in favor of g:netrw_localmkdir",87) 390 call netrw#ErrorMsg(s:NOTE,"g:netrw_local_mkdir is deprecated in favor of g:netrw_localmkdir",87)
416 endif 391 endif
417 if has("win32") || has("win95") || has("win64") || has("win16") 392 if has("win32") || has("win95") || has("win64") || has("win16")
418 if g:netrw_cygwin 393 if g:netrw_cygwin
419 call s:NetrwInit("g:netrw_localmkdir","mkdir") 394 call s:NetrwInit("g:netrw_localmkdir","mkdir")
420 else 395 else
421 let g:netrw_localmkdir = expand("$COMSPEC") 396 let g:netrw_localmkdir= expand("$COMSPEC")." /c mkdir"
422 let g:netrw_localmkdiropt= " /c mkdir"
423 endif 397 endif
424 else 398 else
425 call s:NetrwInit("g:netrw_localmkdir","mkdir") 399 call s:NetrwInit("g:netrw_localmkdir","mkdir")
426 endif 400 endif
427 call s:NetrwInit("g:netrw_remote_mkdir","mkdir") 401 call s:NetrwInit("g:netrw_remote_mkdir","mkdir")
432 if !exists("g:netrw_localmovecmd") 406 if !exists("g:netrw_localmovecmd")
433 if has("win32") || has("win95") || has("win64") || has("win16") 407 if has("win32") || has("win95") || has("win64") || has("win16")
434 if g:netrw_cygwin 408 if g:netrw_cygwin
435 let g:netrw_localmovecmd= "mv" 409 let g:netrw_localmovecmd= "mv"
436 else 410 else
437 let g:netrw_localmovecmd = expand("$COMSPEC") 411 let g:netrw_localmovecmd= expand("$COMSPEC")." /c move"
438 let g:netrw_localmovecmdopt= " /c move"
439 endif 412 endif
440 elseif has("unix") || has("macunix") 413 elseif has("unix") || has("macunix")
441 let g:netrw_localmovecmd= "mv" 414 let g:netrw_localmovecmd= "mv"
442 else 415 else
443 let g:netrw_localmovecmd= "" 416 let g:netrw_localmovecmd= ""
444 endif 417 endif
445 endif 418 endif
446 if v:version < 704 || (v:version == 704 && !has("patch1107")) 419 if v:version < 704 || !has("patch1109")
447 " 1109 provides for delete(tmpdir,"d") which is what will be used
448 if exists("g:netrw_local_rmdir") 420 if exists("g:netrw_local_rmdir")
449 let g:netrw_localrmdir= g:netrw_local_rmdir 421 let g:netrw_localrmdir= g:netrw_local_rmdir
450 call netrw#ErrorMsg(s:NOTE,"g:netrw_local_rmdir is deprecated in favor of g:netrw_localrmdir",86) 422 call netrw#ErrorMsg(s:NOTE,"g:netrw_local_rmdir is deprecated in favor of g:netrw_localrmdir",86)
451 endif 423 endif
452 if has("win32") || has("win95") || has("win64") || has("win16") 424 if has("win32") || has("win95") || has("win64") || has("win16")
453 if g:netrw_cygwin 425 if g:netrw_cygwin
454 call s:NetrwInit("g:netrw_localrmdir","rmdir") 426 call s:NetrwInit("g:netrw_localrmdir","rmdir")
455 else 427 else
456 let g:netrw_localrmdir = expand("$COMSPEC") 428 let g:netrw_localrmdir= expand("$COMSPEC")." /c rmdir"
457 let g:netrw_localrmdiropt= " /c rmdir"
458 endif 429 endif
459 else 430 else
460 call s:NetrwInit("g:netrw_localrmdir","rmdir") 431 call s:NetrwInit("g:netrw_localrmdir","rmdir")
461 endif 432 endif
462 endif 433 endif
554 if has("gui_running") && (&enc == 'utf-8' || &enc == 'utf-16' || &enc == 'ucs-4') 525 if has("gui_running") && (&enc == 'utf-8' || &enc == 'utf-16' || &enc == 'ucs-4')
555 let s:treedepthstring= "│ " 526 let s:treedepthstring= "│ "
556 else 527 else
557 let s:treedepthstring= "| " 528 let s:treedepthstring= "| "
558 endif 529 endif
559 call s:NetrwInit("s:netrw_posn",'{}') 530 call s:NetrwInit("s:netrw_nbcd",'{}')
560 531
561 " BufEnter event ignored by decho when following variable is true 532 " BufEnter event ignored by decho when following variable is true
562 " Has a side effect that doau BufReadPost doesn't work, so 533 " Has a side effect that doau BufReadPost doesn't work, so
563 " files read by network transfer aren't appropriately highlighted. 534 " files read by network transfer aren't appropriately highlighted.
564 "let g:decho_bufenter = 1 "Decho 535 "let g:decho_bufenter = 1 "Decho
915 " call Decho("..case Nexplore with starpat=".starpat.": (indx=".indx.")",'~'.expand("<slnum>")) 886 " call Decho("..case Nexplore with starpat=".starpat.": (indx=".indx.")",'~'.expand("<slnum>"))
916 if !exists("w:netrw_explore_list") " sanity check 887 if !exists("w:netrw_explore_list") " sanity check
917 NetrwKeepj call netrw#ErrorMsg(s:WARNING,"using Nexplore or <s-down> improperly; see help for netrw-starstar",40) 888 NetrwKeepj call netrw#ErrorMsg(s:WARNING,"using Nexplore or <s-down> improperly; see help for netrw-starstar",40)
918 if has("clipboard") 889 if has("clipboard")
919 sil! let @* = keepregstar 890 sil! let @* = keepregstar
920 sil! let @+ = keepregplus 891 sil! let @+ = keepregstar
921 endif 892 endif
922 sil! let @/ = keepregslash 893 sil! let @/ = keepregslash
923 " call Dret("netrw#Explore") 894 " call Dret("netrw#Explore")
924 return 895 return
925 endif 896 endif
940 " call Decho("case Pexplore with starpat=".starpat.": (indx=".indx.")",'~'.expand("<slnum>")) 911 " call Decho("case Pexplore with starpat=".starpat.": (indx=".indx.")",'~'.expand("<slnum>"))
941 if !exists("w:netrw_explore_list") " sanity check 912 if !exists("w:netrw_explore_list") " sanity check
942 NetrwKeepj call netrw#ErrorMsg(s:WARNING,"using Pexplore or <s-up> improperly; see help for netrw-starstar",41) 913 NetrwKeepj call netrw#ErrorMsg(s:WARNING,"using Pexplore or <s-up> improperly; see help for netrw-starstar",41)
943 if has("clipboard") 914 if has("clipboard")
944 sil! let @* = keepregstar 915 sil! let @* = keepregstar
945 sil! let @+ = keepregplus 916 sil! let @+ = keepregstar
946 endif 917 endif
947 sil! let @/ = keepregslash 918 sil! let @/ = keepregslash
948 " call Dret("netrw#Explore") 919 " call Dret("netrw#Explore")
949 return 920 return
950 endif 921 endif
994 exe "sil NetrwKeepj noautocmd keepalt vimgrep /".pattern."/gj "."**/*" 965 exe "sil NetrwKeepj noautocmd keepalt vimgrep /".pattern."/gj "."**/*"
995 catch /^Vim\%((\a\+)\)\=:E480/ 966 catch /^Vim\%((\a\+)\)\=:E480/
996 keepalt call netrw#ErrorMsg(s:WARNING,'no files matched pattern<'.pattern.'>',45) 967 keepalt call netrw#ErrorMsg(s:WARNING,'no files matched pattern<'.pattern.'>',45)
997 if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif 968 if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif
998 if has("clipboard") 969 if has("clipboard")
999 sil! let @* = keepregstar 970 sil! let @* = keepregstar
1000 sil! let @+ = keepregplus 971 sil! let @+ = keepregstar
1001 endif 972 endif
1002 sil! let @/ = keepregslash 973 sil! let @/ = keepregslash
1003 " call Dret("netrw#Explore : no files matched pattern") 974 " call Dret("netrw#Explore : no files matched pattern")
1004 return 975 return
1005 endtry 976 endtry
1031 1002
1032 if w:netrw_explore_listlen == 0 || (w:netrw_explore_listlen == 1 && w:netrw_explore_list[0] =~ '\*\*\/') 1003 if w:netrw_explore_listlen == 0 || (w:netrw_explore_listlen == 1 && w:netrw_explore_list[0] =~ '\*\*\/')
1033 keepalt NetrwKeepj call netrw#ErrorMsg(s:WARNING,"no files matched",42) 1004 keepalt NetrwKeepj call netrw#ErrorMsg(s:WARNING,"no files matched",42)
1034 if has("clipboard") 1005 if has("clipboard")
1035 sil! let @* = keepregstar 1006 sil! let @* = keepregstar
1036 sil! let @+ = keepregplus 1007 sil! let @+ = keepregstar
1037 endif 1008 endif
1038 sil! let @/ = keepregslash 1009 sil! let @/ = keepregslash
1039 " call Dret("netrw#Explore : no files matched") 1010 " call Dret("netrw#Explore : no files matched")
1040 return 1011 return
1041 endif 1012 endif
1079 if !exists("g:netrw_quiet") 1050 if !exists("g:netrw_quiet")
1080 keepalt NetrwKeepj call netrw#ErrorMsg(s:WARNING,"your vim needs the +path_extra feature for Exploring with **!",44) 1051 keepalt NetrwKeepj call netrw#ErrorMsg(s:WARNING,"your vim needs the +path_extra feature for Exploring with **!",44)
1081 endif 1052 endif
1082 if has("clipboard") 1053 if has("clipboard")
1083 sil! let @* = keepregstar 1054 sil! let @* = keepregstar
1084 sil! let @+ = keepregplus 1055 sil! let @+ = keepregstar
1085 endif 1056 endif
1086 sil! let @/ = keepregslash 1057 sil! let @/ = keepregslash
1087 " call Dret("netrw#Explore : missing +path_extra") 1058 " call Dret("netrw#Explore : missing +path_extra")
1088 return 1059 return
1089 endif 1060 endif
1133 endif 1104 endif
1134 endif 1105 endif
1135 let prvfname= fname 1106 let prvfname= fname
1136 endfor 1107 endfor
1137 " call Decho("explore_match<".s:explore_match.">",'~'.expand("<slnum>")) 1108 " call Decho("explore_match<".s:explore_match.">",'~'.expand("<slnum>"))
1138 if has("syntax") && exists("g:syntax_on") && g:syntax_on 1109 exe "2match netrwMarkFile /".s:explore_match."/"
1139 exe "2match netrwMarkFile /".s:explore_match."/"
1140 endif
1141 endif 1110 endif
1142 echo "<s-up>==Pexplore <s-down>==Nexplore" 1111 echo "<s-up>==Pexplore <s-down>==Nexplore"
1143 else 1112 else
1144 2match none 1113 2match none
1145 if exists("s:explore_match") | unlet s:explore_match | endif 1114 if exists("s:explore_match") | unlet s:explore_match | endif
1152 " there's no danger of a late FocusGained event on initialization. 1121 " there's no danger of a late FocusGained event on initialization.
1153 " Consequently, set s:netrw_events to 2. 1122 " Consequently, set s:netrw_events to 2.
1154 let s:netrw_events= 2 1123 let s:netrw_events= 2
1155 if has("clipboard") 1124 if has("clipboard")
1156 sil! let @* = keepregstar 1125 sil! let @* = keepregstar
1157 sil! let @+ = keepregplus 1126 sil! let @+ = keepregstar
1158 endif 1127 endif
1159 sil! let @/ = keepregslash 1128 sil! let @/ = keepregslash
1160 " call Dret("netrw#Explore : @/<".@/.">") 1129 " call Dret("netrw#Explore : @/<".@/.">")
1161 endfun 1130 endfun
1162 1131
1163 " --------------------------------------------------------------------- 1132 " ---------------------------------------------------------------------
1164 " netrw#Lexplore: toggle Explorer window, keeping it on the left of the current tab {{{2 1133 " netrw#Lexplore: toggle Explorer window, keeping it on the left of the current tab {{{2
1165 fun! netrw#Lexplore(count,rightside,...) 1134 fun! netrw#Lexplore(count,rightside,...)
1166 " call Dfunc("netrw#Lexplore(count=".a:count." rightside=".a:rightside.",...) a:0=".a:0." ft=".&ft) 1135 " call Dfunc("netrw#Lexplore(count=".a:count."rightside=".a:rightside.",...) a:0=".a:0." ft=".&ft)
1167 let curwin= winnr() 1136 let curwin= winnr()
1168 1137
1169 if a:0 > 0 && a:1 != "" 1138 if a:0 > 0 && a:1 != ""
1170 " if a netrw window is already on the left-side of the tab 1139 " if a netrw window is already on the left-side of the tab
1171 " and a directory has been specified, explore with that 1140 " and a directory has been specified, explore with that
1172 " directory. 1141 " directory.
1173 " call Decho("case has input argument(s) (a:1<".a:1.">)")
1174 let a1 = expand(a:1) 1142 let a1 = expand(a:1)
1175 " call Decho("a:1<".a:1."> curwin#".curwin,'~'.expand("<slnum>")) 1143 " call Decho("a:1<".a:1."> curwin#".curwin,'~'.expand("<slnum>"))
1176 exe "1wincmd w" 1144 exe "1wincmd w"
1177 if &ft == "netrw" 1145 if &ft == "netrw"
1178 " call Decho("exe Explore ".fnameescape(a:1),'~'.expand("<slnum>")) 1146 " call Decho("exe Explore ".fnameescape(a:1),'~'.expand("<slnum>"))
1186 return 1154 return
1187 endif 1155 endif
1188 exe curwin."wincmd w" 1156 exe curwin."wincmd w"
1189 else 1157 else
1190 let a1= "" 1158 let a1= ""
1191 " call Decho("no input arguments")
1192 endif 1159 endif
1193 1160
1194 if exists("t:netrw_lexbufnr") 1161 if exists("t:netrw_lexbufnr")
1195 " check if t:netrw_lexbufnr refers to a netrw window 1162 " check if t:netrw_lexbufnr refers to a netrw window
1196 let lexwinnr = bufwinnr(t:netrw_lexbufnr) 1163 let lexwinnr = bufwinnr(t:netrw_lexbufnr)
1197 " call Decho("lexwinnr= bufwinnr(t:netrw_lexbufnr#".t:netrw_lexbufnr.")=".lexwinnr)
1198 else 1164 else
1199 let lexwinnr= 0 1165 let lexwinnr= 0
1200 " call Decho("t:netrw_lexbufnr doesn't exist") 1166 endif
1201 endif
1202 " call Decho("lexwinnr=".lexwinnr,'~'.expand("<slnum>"))
1203 1167
1204 if lexwinnr > 0 1168 if lexwinnr > 0
1205 " close down netrw explorer window 1169 " close down netrw explorer window
1206 " call Decho("t:netrw_lexbufnr#".t:netrw_lexbufnr.": close down netrw window",'~'.expand("<slnum>")) 1170 " call Decho("t:netrw_lexbufnr#".t:netrw_lexbufnr.": close down netrw window",'~'.expand("<slnum>"))
1207 exe lexwinnr."wincmd w" 1171 exe lexwinnr."wincmd w"
1208 let g:netrw_winsize = -winwidth(0) 1172 let g:netrw_winsize = -winwidth(0)
1209 let t:netrw_lexposn = winsaveview() 1173 let t:netrw_lexposn = winsaveview()
1210 " call Decho("saving posn to t:netrw_lexposn<".string(t:netrw_lexposn).">",'~'.expand("<slnum>")) 1174 " call Decho("saving posn to t:netrw_lexposn<".string(t:netrw_lexposn).">",'~'.expand("<slnum>"))
1211 " call Decho("saving t:netrw_lexposn",'~'.expand("<slnum>")) 1175 " call Decho("saving t:netrw_lexposn",'~'.expand("<slnum>"))
1212 close 1176 close
1213 if lexwinnr < curwin 1177 if lexwinnr < curwin
1214 let curwin= curwin - 1 1178 let curwin= curwin - 1
1215 endif 1179 endif
1216 if lexwinnr != curwin 1180 exe curwin."wincmd w"
1217 exe curwin."wincmd w"
1218 endif
1219 unlet t:netrw_lexbufnr 1181 unlet t:netrw_lexbufnr
1220 " call Decho("unlet t:netrw_lexbufnr")
1221 1182
1222 else 1183 else
1223 " open netrw explorer window 1184 " open netrw explorer window
1224 " call Decho("t:netrw_lexbufnr<n/a>: open netrw explorer window",'~'.expand("<slnum>")) 1185 " call Decho("t:netrw_lexbufnr<n/a>: open netrw explorer window",'~'.expand("<slnum>"))
1225 exe "1wincmd w" 1186 exe "1wincmd w"
1230 let g:netrw_winsize = a:count 1191 let g:netrw_winsize = a:count
1231 endif 1192 endif
1232 let curfile= expand("%") 1193 let curfile= expand("%")
1233 " call Decho("curfile<".curfile.">",'~'.expand("<slnum>")) 1194 " call Decho("curfile<".curfile.">",'~'.expand("<slnum>"))
1234 exe (a:rightside? "botright" : "topleft")." vertical ".((g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize) . " new" 1195 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())
1236 if a:0 > 0 && a1 != "" 1196 if a:0 > 0 && a1 != ""
1237 " call Decho("case 1: Explore ".a1,'~'.expand("<slnum>")) 1197 " call Decho("case 1: Explore ".a1,'~'.expand("<slnum>"))
1238 call netrw#Explore(0,0,0,a1)
1239 exe "Explore ".fnameescape(a1) 1198 exe "Explore ".fnameescape(a1)
1240 elseif curfile =~ '^\a\{3,}://' 1199 elseif curfile =~ '^\a\{3,}://'
1241 " call Decho("case 2: Explore ".substitute(curfile,'[^/\\]*$','',''),'~'.expand("<slnum>")) 1200 " call Decho("case 2: Explore ".substitute(curfile,'[^/\\]*$','',''),'~'.expand("<slnum>"))
1242 call netrw#Explore(0,0,0,substitute(curfile,'[^/\\]*$','','')) 1201 exe "Explore ".substitute(curfile,'[^/\\]*$','','')
1243 else 1202 else
1244 " call Decho("case 3: Explore .",'~'.expand("<slnum>")) 1203 " call Decho("case 3: Explore .",'~'.expand("<slnum>"))
1245 call netrw#Explore(0,0,0,".") 1204 Explore .
1246 endif 1205 endif
1247 if a:count != 0 1206 if a:count != 0
1248 let g:netrw_winsize = netrw_winsize 1207 let g:netrw_winsize = netrw_winsize
1249 endif 1208 endif
1250 setlocal winfixwidth 1209 setlocal winfixwidth
1251 let g:netrw_altv = keep_altv 1210 let g:netrw_altv = keep_altv
1252 let t:netrw_lexbufnr = bufnr("%") 1211 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"))
1255 if exists("t:netrw_lexposn") 1212 if exists("t:netrw_lexposn")
1256 " call Decho("restoring to t:netrw_lexposn",'~'.expand("<slnum>")) 1213 " call Decho("restoring to t:netrw_lexposn",'~'.expand("<slnum>"))
1257 " call Decho("restoring posn to t:netrw_lexposn<".string(t:netrw_lexposn).">",'~'.expand("<slnum>")) 1214 " call Decho("restoring posn to t:netrw_lexposn<".string(t:netrw_lexposn).">",'~'.expand("<slnum>"))
1258 call winrestview(t:netrw_lexposn) 1215 call winrestview(t:netrw_lexposn)
1259 unlet t:netrw_lexposn 1216 unlet t:netrw_lexposn
1265 if a:rightside 1222 if a:rightside
1266 let g:netrw_chgwin= 1 1223 let g:netrw_chgwin= 1
1267 else 1224 else
1268 let g:netrw_chgwin= 2 1225 let g:netrw_chgwin= 2
1269 endif 1226 endif
1270 " call Decho("let g:netrw_chgwin=".g:netrw_chgwin)
1271 endif 1227 endif
1272 1228
1273 " call Dret("netrw#Lexplore") 1229 " call Dret("netrw#Lexplore")
1274 endfun 1230 endfun
1275 1231
1383 if (has("win32") || has("win95") || has("win64") || has("win16")) 1339 if (has("win32") || has("win95") || has("win64") || has("win16"))
1384 " transfer files one at time 1340 " transfer files one at time
1385 " call Decho("transfer files one at a time",'~'.expand("<slnum>")) 1341 " call Decho("transfer files one at a time",'~'.expand("<slnum>"))
1386 for fname in fnamelist 1342 for fname in fnamelist
1387 " call Decho("system(".g:netrw_localcopycmd." ".s:ShellEscape(fname)." ".s:ShellEscape(topath).")",'~'.expand("<slnum>")) 1343 " call Decho("system(".g:netrw_localcopycmd." ".s:ShellEscape(fname)." ".s:ShellEscape(topath).")",'~'.expand("<slnum>"))
1388 call system(g:netrw_localcopycmd.g:netrw_localcopycmdopt." ".s:ShellEscape(fname)." ".s:ShellEscape(topath)) 1344 call system(g:netrw_localcopycmd." ".s:ShellEscape(fname)." ".s:ShellEscape(topath))
1389 if v:shell_error != 0 1345 if v:shell_error != 0
1390 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localcopycmd<".g:netrw_localcopycmd."> to something that works",80) 1346 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localcopycmd<".g:netrw_localcopycmd."> to something that works",80)
1391 " call Dret("s:NetrwObtain 0 : failed: ".g:netrw_localcopycmd." ".s:ShellEscape(fname)." ".s:ShellEscape(topath)) 1347 " call Dret("s:NetrwObtain 0 : failed: ".g:netrw_localcopycmd." ".s:ShellEscape(fname)." ".s:ShellEscape(topath))
1392 return 1348 return
1393 endif 1349 endif
1395 else 1351 else
1396 " transfer files with one command 1352 " transfer files with one command
1397 " call Decho("transfer files with one command",'~'.expand("<slnum>")) 1353 " call Decho("transfer files with one command",'~'.expand("<slnum>"))
1398 let filelist= join(map(deepcopy(fnamelist),"s:ShellEscape(v:val)")) 1354 let filelist= join(map(deepcopy(fnamelist),"s:ShellEscape(v:val)"))
1399 " call Decho("system(".g:netrw_localcopycmd." ".filelist." ".s:ShellEscape(topath).")",'~'.expand("<slnum>")) 1355 " call Decho("system(".g:netrw_localcopycmd." ".filelist." ".s:ShellEscape(topath).")",'~'.expand("<slnum>"))
1400 call system(g:netrw_localcopycmd.g:netrw_localcopycmdopt." ".filelist." ".s:ShellEscape(topath)) 1356 call system(g:netrw_localcopycmd." ".filelist." ".s:ShellEscape(topath))
1401 if v:shell_error != 0 1357 if v:shell_error != 0
1402 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localcopycmd<".g:netrw_localcopycmd."> to something that works",80) 1358 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localcopycmd<".g:netrw_localcopycmd."> to something that works",80)
1403 " call Dret("s:NetrwObtain 0 : failed: ".g:netrw_localcopycmd." ".filelist." ".s:ShellEscape(topath)) 1359 " call Dret("s:NetrwObtain 0 : failed: ".g:netrw_localcopycmd." ".filelist." ".s:ShellEscape(topath))
1404 return 1360 return
1405 endif 1361 endif
1429 if b:netrw_fname =~ '/' 1385 if b:netrw_fname =~ '/'
1430 let path= substitute(b:netrw_fname,'^\(.*/\).\{-}$','\1','') 1386 let path= substitute(b:netrw_fname,'^\(.*/\).\{-}$','\1','')
1431 else 1387 else
1432 let path= "" 1388 let path= ""
1433 endif 1389 endif
1434 let filelist= join(map(deepcopy(fnamelist),'escape(s:ShellEscape(g:netrw_machine.":".path.v:val,1)," ")')) 1390 let filelist= join(map(deepcopy(fnamelist),'s:ShellEscape(g:netrw_machine.":".path.v:val,1)'))
1435 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_scp_cmd.s:ShellEscape(useport,1)." ".filelist." ".s:ShellEscape(tgtdir,1)) 1391 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_scp_cmd.s:ShellEscape(useport,1)." ".filelist." ".s:ShellEscape(tgtdir,1))
1436 1392
1437 elseif b:netrw_method == 2 1393 elseif b:netrw_method == 2
1438 " obtain file using ftp + .netrc 1394 " obtain file using ftp + .netrc
1439 " call Decho("obtain via ftp+.netrc (method #2)",'~'.expand("<slnum>")) 1395 " call Decho("obtain via ftp+.netrc (method #2)",'~'.expand("<slnum>"))
1604 " s:NetrwOptionRestore: restore options (based on prior s:NetrwOptionSave) {{{2 1560 " s:NetrwOptionRestore: restore options (based on prior s:NetrwOptionSave) {{{2
1605 fun! s:NetrwOptionRestore(vt) 1561 fun! s:NetrwOptionRestore(vt)
1606 " call Dfunc("s:NetrwOptionRestore(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> winnr($)=".winnr("$")) 1562 " call Dfunc("s:NetrwOptionRestore(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> winnr($)=".winnr("$"))
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>")) 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>"))
1608 if !exists("{a:vt}netrw_optionsave") 1564 if !exists("{a:vt}netrw_optionsave")
1565 call s:RestorePosn(s:netrw_nbcd)
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>")) 1566 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>"))
1610 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.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>"))
1611 " call Dret("s:NetrwOptionRestore : ".a:vt."netrw_optionsave doesn't exist") 1568 " call Dret("s:NetrwOptionRestore : ".a:vt."netrw_optionsave doesn't exist")
1612 return 1569 return
1613 endif 1570 endif
1622 if &l:acd 1579 if &l:acd
1623 call s:NetrwLcd(curdir) 1580 call s:NetrwLcd(curdir)
1624 endif 1581 endif
1625 endif 1582 endif
1626 endif 1583 endif
1627 call s:NetrwRestoreSetting(a:vt."netrw_aikeep","&l:ai") 1584 if exists("{a:vt}netrw_aikeep") |let &l:ai = {a:vt}netrw_aikeep |unlet {a:vt}netrw_aikeep |endif
1628 call s:NetrwRestoreSetting(a:vt."netrw_awkeep","&l:aw") 1585 if exists("{a:vt}netrw_awkeep") |let &l:aw = {a:vt}netrw_awkeep |unlet {a:vt}netrw_awkeep |endif
1629 call s:NetrwRestoreSetting(a:vt."netrw_blkeep","&l:bl") 1586 if exists("{a:vt}netrw_blkeep") |let &l:bl = {a:vt}netrw_blkeep |unlet {a:vt}netrw_blkeep |endif
1630 call s:NetrwRestoreSetting(a:vt."netrw_btkeep","&l:bt") 1587 if exists("{a:vt}netrw_btkeep") |let &l:bt = {a:vt}netrw_btkeep |unlet {a:vt}netrw_btkeep |endif
1631 call s:NetrwRestoreSetting(a:vt."netrw_bombkeep","&l:bomb") 1588 if exists("{a:vt}netrw_bombkeep") |let &l:bomb = {a:vt}netrw_bombkeep |unlet {a:vt}netrw_bombkeep |endif
1632 call s:NetrwRestoreSetting(a:vt."netrw_cedit","&cedit") 1589 if exists("{a:vt}netrw_cedit") |let &cedit = {a:vt}netrw_cedit |unlet {a:vt}netrw_cedit |endif
1633 call s:NetrwRestoreSetting(a:vt."netrw_cikeep","&l:ci") 1590 if exists("{a:vt}netrw_cikeep") |let &l:ci = {a:vt}netrw_cikeep |unlet {a:vt}netrw_cikeep |endif
1634 call s:NetrwRestoreSetting(a:vt."netrw_cinkeep","&l:cin") 1591 if exists("{a:vt}netrw_cinkeep") |let &l:cin = {a:vt}netrw_cinkeep |unlet {a:vt}netrw_cinkeep |endif
1635 call s:NetrwRestoreSetting(a:vt."netrw_cinokeep","&l:cino") 1592 if exists("{a:vt}netrw_cinokeep") |let &l:cino = {a:vt}netrw_cinokeep |unlet {a:vt}netrw_cinokeep |endif
1636 call s:NetrwRestoreSetting(a:vt."netrw_comkeep","&l:com") 1593 if exists("{a:vt}netrw_comkeep") |let &l:com = {a:vt}netrw_comkeep |unlet {a:vt}netrw_comkeep |endif
1637 call s:NetrwRestoreSetting(a:vt."netrw_cpokeep","&l:cpo") 1594 if exists("{a:vt}netrw_cpokeep") |let &l:cpo = {a:vt}netrw_cpokeep |unlet {a:vt}netrw_cpokeep |endif
1638 call s:NetrwRestoreSetting(a:vt."netrw_diffkeep","&l:diff") 1595 if exists("{a:vt}netrw_diffkeep") |let &l:diff = {a:vt}netrw_diffkeep |unlet {a:vt}netrw_diffkeep |endif
1639 call s:NetrwRestoreSetting(a:vt."netrw_fenkeep","&l:fen") 1596 if exists("{a:vt}netrw_fenkeep") |let &l:fen = {a:vt}netrw_fenkeep |unlet {a:vt}netrw_fenkeep |endif
1640 if exists("g:netrw_ffkeep") && g:netrw_ffkeep 1597 if exists("g:netrw_ffkep") && g:netrw_ffkeep
1641 call s:NetrwRestoreSetting(a:vt."netrw_ffkeep")","&l:ff") 1598 if exists("{a:vt}netrw_ffkeep") |let &l:ff = {a:vt}netrw_ffkeep |unlet {a:vt}netrw_ffkeep |endif
1642 endif 1599 endif
1643 call s:NetrwRestoreSetting(a:vt."netrw_fokeep","&l:fo") 1600 if exists("{a:vt}netrw_fokeep") |let &l:fo = {a:vt}netrw_fokeep |unlet {a:vt}netrw_fokeep |endif
1644 call s:NetrwRestoreSetting(a:vt."netrw_gdkeep","&l:gd") 1601 if exists("{a:vt}netrw_gdkeep") |let &l:gd = {a:vt}netrw_gdkeep |unlet {a:vt}netrw_gdkeep |endif
1645 call s:NetrwRestoreSetting(a:vt."netrw_hidkeep","&l:hidden") 1602 if exists("{a:vt}netrw_hidkeep") |let &l:hidden = {a:vt}netrw_hidkeep |unlet {a:vt}netrw_hidkeep |endif
1646 call s:NetrwRestoreSetting(a:vt."netrw_imkeep","&l:im") 1603 if exists("{a:vt}netrw_imkeep") |let &l:im = {a:vt}netrw_imkeep |unlet {a:vt}netrw_imkeep |endif
1647 call s:NetrwRestoreSetting(a:vt."netrw_iskkeep","&l:isk") 1604 if exists("{a:vt}netrw_iskkeep") |let &l:isk = {a:vt}netrw_iskkeep |unlet {a:vt}netrw_iskkeep |endif
1648 call s:NetrwRestoreSetting(a:vt."netrw_lskeep","&l:ls") 1605 if exists("{a:vt}netrw_lskeep") |let &l:ls = {a:vt}netrw_lskeep |unlet {a:vt}netrw_lskeep |endif
1649 call s:NetrwRestoreSetting(a:vt."netrw_makeep","&l:ma") 1606 if exists("{a:vt}netrw_makeep") |let &l:ma = {a:vt}netrw_makeep |unlet {a:vt}netrw_makeep |endif
1650 call s:NetrwRestoreSetting(a:vt."netrw_magickeep","&l:magic") 1607 if exists("{a:vt}netrw_magickeep")|let &l:magic = {a:vt}netrw_magickeep |unlet {a:vt}netrw_magickeep|endif
1651 call s:NetrwRestoreSetting(a:vt."netrw_modkeep","&l:mod") 1608 if exists("{a:vt}netrw_modkeep") |let &l:mod = {a:vt}netrw_modkeep |unlet {a:vt}netrw_modkeep |endif
1652 call s:NetrwRestoreSetting(a:vt."netrw_nukeep","&l:nu") 1609 if exists("{a:vt}netrw_nukeep") |let &l:nu = {a:vt}netrw_nukeep |unlet {a:vt}netrw_nukeep |endif
1653 call s:NetrwRestoreSetting(a:vt."netrw_rnukeep","&l:rnu") 1610 if exists("{a:vt}netrw_rnukeep") |let &l:rnu = {a:vt}netrw_rnukeep |unlet {a:vt}netrw_rnukeep |endif
1654 call s:NetrwRestoreSetting(a:vt."netrw_repkeep","&l:report") 1611 if exists("{a:vt}netrw_repkeep") |let &l:report = {a:vt}netrw_repkeep |unlet {a:vt}netrw_repkeep |endif
1655 call s:NetrwRestoreSetting(a:vt."netrw_rokeep","&l:ro") 1612 if exists("{a:vt}netrw_rokeep") |let &l:ro = {a:vt}netrw_rokeep |unlet {a:vt}netrw_rokeep |endif
1656 call s:NetrwRestoreSetting(a:vt."netrw_selkeep","&l:sel") 1613 if exists("{a:vt}netrw_selkeep") |let &l:sel = {a:vt}netrw_selkeep |unlet {a:vt}netrw_selkeep |endif
1657 call s:NetrwRestoreSetting(a:vt."netrw_spellkeep","&l:spell") 1614 if exists("{a:vt}netrw_spellkeep")|let &l:spell = {a:vt}netrw_spellkeep |unlet {a:vt}netrw_spellkeep|endif
1658 call s:NetrwRestoreSetting(a:vt."netrw_twkeep","&l:tw") 1615 if has("clipboard")
1659 call s:NetrwRestoreSetting(a:vt."netrw_wigkeep","&l:wig") 1616 if exists("{a:vt}netrw_starkeep") |let @* = {a:vt}netrw_starkeep |unlet {a:vt}netrw_starkeep |endif
1660 call s:NetrwRestoreSetting(a:vt."netrw_wrapkeep","&l:wrap") 1617 endif
1661 call s:NetrwRestoreSetting(a:vt."netrw_writekeep","&l:write")
1662 call s:NetrwRestoreSetting("s:yykeep","@@")
1663 " Problem: start with liststyle=0; press <i> : result, following line resets l:ts. 1618 " Problem: start with liststyle=0; press <i> : result, following line resets l:ts.
1664 call s:NetrwRestoreSetting(a:vt."netrw_tskeep","&l:ts") 1619 " if exists("{a:vt}netrw_tskeep") |let &l:ts = {a:vt}netrw_tskeep |unlet {a:vt}netrw_tskeep |endif
1665 1620 if exists("{a:vt}netrw_twkeep") |let &l:tw = {a:vt}netrw_twkeep |unlet {a:vt}netrw_twkeep |endif
1621 if exists("{a:vt}netrw_wigkeep") |let &l:wig = {a:vt}netrw_wigkeep |unlet {a:vt}netrw_wigkeep |endif
1622 if exists("{a:vt}netrw_wrapkeep") |let &l:wrap = {a:vt}netrw_wrapkeep |unlet {a:vt}netrw_wrapkeep |endif
1623 if exists("{a:vt}netrw_writekeep")|let &l:write = {a:vt}netrw_writekeep |unlet {a:vt}netrw_writekeep|endif
1624 if exists("s:yykeep") |let @@ = s:yykeep |unlet s:yykeep |endif
1666 if exists("{a:vt}netrw_swfkeep") 1625 if exists("{a:vt}netrw_swfkeep")
1667 if &directory == "" 1626 if &directory == ""
1668 " user hasn't specified a swapfile directory; 1627 " user hasn't specified a swapfile directory;
1669 " netrw will temporarily set the swapfile directory 1628 " netrw will temporarily set the swapfile directory
1670 " to the current directory as returned by getcwd(). 1629 " to the current directory as returned by getcwd().
1686 call s:NetrwLcd(dirkeep) 1645 call s:NetrwLcd(dirkeep)
1687 unlet {a:vt}netrw_dirkeep 1646 unlet {a:vt}netrw_dirkeep
1688 endif 1647 endif
1689 endif 1648 endif
1690 if has("clipboard") 1649 if has("clipboard")
1691 call s:NetrwRestoreSetting(a:vt."netrw_starkeep","@*") 1650 if exists("{a:vt}netrw_regstar") |sil! let @*= {a:vt}netrw_regstar |unlet {a:vt}netrw_regstar |endif
1692 call s:NetrwRestoreSetting(a:vt."netrw_pluskeep","@+") 1651 endif
1693 endif 1652 if exists("{a:vt}netrw_regslash")|sil! let @/= {a:vt}netrw_regslash|unlet {a:vt}netrw_regslash|endif
1694 call s:NetrwRestoreSetting(a:vt."netrw_slashkeep","@/") 1653 call s:RestorePosn(s:netrw_nbcd)
1695 1654
1696 " call Decho("g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd,'~'.expand("<slnum>")) 1655 " call Decho("g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd,'~'.expand("<slnum>"))
1697 " call Decho("fo=".&fo.(exists("+acd")? " acd=".&acd : " acd doesn't exist"),'~'.expand("<slnum>")) 1656 " call Decho("fo=".&fo.(exists("+acd")? " acd=".&acd : " acd doesn't exist"),'~'.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>")) 1657 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.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>")) 1658 " call Decho("diff=".&l:diff." win#".winnr()." w:netrw_diffkeep=".(exists("w:netrw_diffkeep")? w:netrw_diffkeep : "doesn't exist"),'~'.expand("<slnum>"))
1767 let {a:vt}netrw_selkeep = &l:sel 1726 let {a:vt}netrw_selkeep = &l:sel
1768 let {a:vt}netrw_spellkeep = &l:spell 1727 let {a:vt}netrw_spellkeep = &l:spell
1769 if !g:netrw_use_noswf 1728 if !g:netrw_use_noswf
1770 let {a:vt}netrw_swfkeep = &l:swf 1729 let {a:vt}netrw_swfkeep = &l:swf
1771 endif 1730 endif
1731 if has("clipboard")
1732 let {a:vt}netrw_starkeep = @*
1733 endif
1772 let {a:vt}netrw_tskeep = &l:ts 1734 let {a:vt}netrw_tskeep = &l:ts
1773 let {a:vt}netrw_twkeep = &l:tw " textwidth 1735 let {a:vt}netrw_twkeep = &l:tw " textwidth
1774 let {a:vt}netrw_wigkeep = &l:wig " wildignore 1736 let {a:vt}netrw_wigkeep = &l:wig " wildignore
1775 let {a:vt}netrw_wrapkeep = &l:wrap 1737 let {a:vt}netrw_wrapkeep = &l:wrap
1776 let {a:vt}netrw_writekeep = &l:write 1738 let {a:vt}netrw_writekeep = &l:write
1779 " call Decho("saving a few selected netrw-related variables",'~'.expand("<slnum>")) 1741 " call Decho("saving a few selected netrw-related variables",'~'.expand("<slnum>"))
1780 if g:netrw_keepdir 1742 if g:netrw_keepdir
1781 let {a:vt}netrw_dirkeep = getcwd() 1743 let {a:vt}netrw_dirkeep = getcwd()
1782 endif 1744 endif
1783 if has("clipboard") 1745 if has("clipboard")
1784 sil! let {a:vt}netrw_starkeep = @* 1746 if &go =~# 'a' | sil! let {a:vt}netrw_regstar = @* | endif
1785 sil! let {a:vt}netrw_pluskeep = @+ 1747 endif
1786 endif 1748 sil! let {a:vt}netrw_regslash= @/
1787 sil! let {a:vt}netrw_slashkeep= @/
1788 1749
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>")) 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>"))
1790 " call Dret("s:NetrwOptionSave : tab#".tabpagenr()." win#".winnr()) 1751 " call Dret("s:NetrwOptionSave : tab#".tabpagenr()." win#".winnr())
1791 endfun 1752 endfun
1792 1753
1793 " ------------------------------------------------------------------------ 1754 " ------------------------------------------------------------------------
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 " ---------------------------------------------------------------------
1832 " s:NetrwSafeOptions: sets options to help netrw do its job {{{2 1755 " s:NetrwSafeOptions: sets options to help netrw do its job {{{2
1833 " Use s:NetrwSaveOptions() to save user settings 1756 " Use s:NetrwSaveOptions() to save user settings
1834 " Use s:NetrwOptionRestore() to restore user settings 1757 " Use s:NetrwOptionRestore() to restore user settings
1835 fun! s:NetrwSafeOptions() 1758 fun! s:NetrwSafeOptions()
1836 " call Dfunc("s:NetrwSafeOptions() win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%"))."> winnr($)=".winnr("$")) 1759 " call Dfunc("s:NetrwSafeOptions() win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%"))."> winnr($)=".winnr("$"))
1837 " call Decho("win#".winnr()."'s ft=".&ft,'~'.expand("<slnum>")) 1760 " call Decho("win#".winnr()."'s ft=".&ft,'~'.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>")) 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>"))
1839 if exists("+acd") | call s:NetrwRestoreSetting("&l:acd",0)|endif 1762 if exists("+acd") | setl noacd | endif
1840 call s:NetrwRestoreSetting("&l:ai",0) 1763 setl noai
1841 call s:NetrwRestoreSetting("&l:aw",0) 1764 setl noaw
1842 call s:NetrwRestoreSetting("&l:bl",0) 1765 setl nobl
1843 call s:NetrwRestoreSetting("&l:bomb",0) 1766 setl nobomb
1844 call s:NetrwRestoreSetting("&l:bt","nofile") 1767 setl bt=nofile
1845 call s:NetrwRestoreSetting("&l:ci",0) 1768 setl noci
1846 call s:NetrwRestoreSetting("&l:cin",0) 1769 setl nocin
1847 call s:NetrwRestoreSetting("&l:bh","hide") 1770 setl bh=hide
1848 call s:NetrwRestoreSetting("&l:cino","") 1771 setl cino=
1849 call s:NetrwRestoreSetting("&l:com","") 1772 setl com=
1850 if &cpo =~ 'a' | call s:NetrwRestoreSetting("&cpo",substitute(&cpo,'a','','g')) | endif 1773 setl cpo-=a
1851 if &cpo =~ 'A' | call s:NetrwRestoreSetting("&cpo",substitute(&cpo,'A','','g')) | endif 1774 setl cpo-=A
1852 setl fo=nroql2 1775 setl fo=nroql2
1853 call s:NetrwRestoreSetting("&l:hid",0) 1776 setl nohid
1854 call s:NetrwRestoreSetting("&l:im",0) 1777 setl noim
1855 setl isk+=@ isk+=* isk+=/ 1778 setl isk+=@ isk+=* isk+=/
1856 call s:NetrwRestoreSetting("&l:magic",1) 1779 setl magic
1857 if g:netrw_use_noswf 1780 if g:netrw_use_noswf
1858 call s:NetrwRestoreSetting("swf",0) 1781 setl noswf
1859 endif 1782 endif
1860 call s:NetrwRestoreSetting("&l:report",10000) 1783 setl report=10000
1861 call s:NetrwRestoreSetting("&l:sel","inclusive") 1784 setl sel=inclusive
1862 call s:NetrwRestoreSetting("&l:spell",0) 1785 setl nospell
1863 call s:NetrwRestoreSetting("&l:tw",0) 1786 setl tw=0
1864 call s:NetrwRestoreSetting("&l:wig","") 1787 setl wig=
1865 setl cedit& 1788 setl cedit&
1866 call s:NetrwCursor() 1789 call s:NetrwCursor()
1867 1790
1868 " allow the user to override safe options 1791 " allow the user to override safe options
1869 " call Decho("ft<".&ft."> ei=".&ei,'~'.expand("<slnum>")) 1792 " call Decho("ft<".&ft."> ei=".&ei,'~'.expand("<slnum>"))
1870 if &ft == "netrw" 1793 if &ft == "netrw"
1871 " call Decho("do any netrw FileType autocmds (doau FileType netrw)",'~'.expand("<slnum>")) 1794 " call Decho("do any netrw FileType autocmds (doau FileType netrw)",'~'.expand("<slnum>"))
1872 keepalt NetrwKeepj doau FileType netrw 1795 sil! keepalt NetrwKeepj doau FileType netrw
1873 endif 1796 endif
1874 1797
1875 " call Decho("fo=".&fo.(exists("+acd")? " acd=".&acd : " acd doesn't exist")." bh=".&l:bh." bt<".&bt.">",'~'.expand("<slnum>")) 1798 " call Decho("fo=".&fo.(exists("+acd")? " acd=".&acd : " acd doesn't exist")." bh=".&l:bh." bt<".&bt.">",'~'.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>")) 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>"))
1877 " call Dret("s:NetrwSafeOptions") 1800 " call Dret("s:NetrwSafeOptions")
1908 else 1831 else
1909 return "Match ".w:netrw_explore_mtchcnt." of ".w:netrw_explore_listlen 1832 return "Match ".w:netrw_explore_mtchcnt." of ".w:netrw_explore_listlen
1910 endif 1833 endif
1911 endfun 1834 endfun
1912 1835
1913 " =============================== 1836 " ---------------------------------------------------------------------
1914 " Netrw Transfer Functions: {{{1 1837 " Netrw Transfer Functions: {{{1
1915 " =============================== 1838 " ===============================
1916 1839
1917 " ------------------------------------------------------------------------ 1840 " ------------------------------------------------------------------------
1918 " netrw#NetRead: responsible for reading a file over the net {{{2 1841 " netrw#NetRead: responsible for reading a file over the net {{{2
2018 let ichoice= ichoice + 1 1941 let ichoice= ichoice + 1
2019 1942
2020 " NetRead: Determine method of read (ftp, rcp, etc) {{{3 1943 " NetRead: Determine method of read (ftp, rcp, etc) {{{3
2021 call s:NetrwMethod(choice) 1944 call s:NetrwMethod(choice)
2022 if !exists("b:netrw_method") || b:netrw_method < 0 1945 if !exists("b:netrw_method") || b:netrw_method < 0
2023 " call Dret("netrw#NetRead : unsupported method") 1946 " call Dfunc("netrw#NetRead : unsupported method")
2024 return 1947 return
2025 endif 1948 endif
2026 let tmpfile= s:GetTempfile(b:netrw_fname) " apply correct suffix 1949 let tmpfile= s:GetTempfile(b:netrw_fname) " apply correct suffix
2027 1950
2028 " Check whether or not NetrwBrowse() should be handling this request 1951 " Check whether or not NetrwBrowse() should be handling this request
2178 if g:netrw_scp_cmd =~ '^scp' && (has("win32") || has("win95") || has("win64") || has("win16")) 2101 if g:netrw_scp_cmd =~ '^scp' && (has("win32") || has("win95") || has("win64") || has("win16"))
2179 let tmpfile_get = substitute(tr(tmpfile, '\', '/'), '^\(\a\):[/\\]\(.*\)$', '/\1/\2', '') 2102 let tmpfile_get = substitute(tr(tmpfile, '\', '/'), '^\(\a\):[/\\]\(.*\)$', '/\1/\2', '')
2180 else 2103 else
2181 let tmpfile_get = tmpfile 2104 let tmpfile_get = tmpfile
2182 endif 2105 endif
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)) 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))
2184 let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) 2107 let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method)
2185 let b:netrw_lastfile = choice 2108 let b:netrw_lastfile = choice
2186 2109
2187 "......................................... 2110 ".........................................
2188 " NetRead: (http) NetRead Method #5 (wget) {{{3 2111 " NetRead: (http) NetRead Method #5 (wget) {{{3
2260 2183
2261 "......................................... 2184 ".........................................
2262 " NetRead: (rsync) NetRead Method #7 {{{3 2185 " NetRead: (rsync) NetRead Method #7 {{{3
2263 elseif b:netrw_method == 7 2186 elseif b:netrw_method == 7
2264 " call Decho("read via rsync (method #7)",'~'.expand("<slnum>")) 2187 " call Decho("read via rsync (method #7)",'~'.expand("<slnum>"))
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)) 2188 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".s:ShellEscape(g:netrw_machine.":".b:netrw_fname,1)." ".s:ShellEscape(tmpfile,1))
2266 let result = s:NetrwGetFile(readcmd,tmpfile, b:netrw_method) 2189 let result = s:NetrwGetFile(readcmd,tmpfile, b:netrw_method)
2267 let b:netrw_lastfile = choice 2190 let b:netrw_lastfile = choice
2268 2191
2269 "......................................... 2192 ".........................................
2270 " NetRead: (fetch) NetRead Method #8 {{{3 2193 " NetRead: (fetch) NetRead Method #8 {{{3
2602 let curl= substitute(g:netrw_http_put_cmd,'\s\+.*$',"","") 2525 let curl= substitute(g:netrw_http_put_cmd,'\s\+.*$',"","")
2603 if executable(curl) 2526 if executable(curl)
2604 let url= g:netrw_choice 2527 let url= g:netrw_choice
2605 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_http_put_cmd." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(url,1) ) 2528 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_http_put_cmd." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(url,1) )
2606 elseif !exists("g:netrw_quiet") 2529 elseif !exists("g:netrw_quiet")
2607 call netrw#ErrorMsg(s:ERROR,"can't write to http using <".g:netrw_http_put_cmd.">".",16) 2530 call netrw#ErrorMsg(s:ERROR,"can't write to http using <".g:netrw_http_put_cmd".">".",16)
2608 endif 2531 endif
2609 2532
2610 "......................................... 2533 ".........................................
2611 " NetWrite: (dav) NetWrite Method #6 (cadaver) {{{3 2534 " NetWrite: (dav) NetWrite Method #6 (cadaver) {{{3
2612 elseif b:netrw_method == 6 2535 elseif b:netrw_method == 6
2646 2569
2647 "......................................... 2570 ".........................................
2648 " NetWrite: (rsync) NetWrite Method #7 {{{3 2571 " NetWrite: (rsync) NetWrite Method #7 {{{3
2649 elseif b:netrw_method == 7 2572 elseif b:netrw_method == 7
2650 " call Decho("write via rsync (method #7)",'~'.expand("<slnum>")) 2573 " call Decho("write via rsync (method #7)",'~'.expand("<slnum>"))
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)) 2574 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(g:netrw_machine.":".b:netrw_fname,1))
2652 let b:netrw_lastfile = choice 2575 let b:netrw_lastfile = choice
2653 2576
2654 "......................................... 2577 ".........................................
2655 " NetWrite: (sftp) NetWrite Method #9 {{{3 2578 " NetWrite: (sftp) NetWrite Method #9 {{{3
2656 elseif b:netrw_method == 9 2579 elseif b:netrw_method == 9
2751 endfun 2674 endfun
2752 2675
2753 " --------------------------------------------------------------------- 2676 " ---------------------------------------------------------------------
2754 " netrw#SetTreetop: resets the tree top to the current directory/specified directory {{{2 2677 " netrw#SetTreetop: resets the tree top to the current directory/specified directory {{{2
2755 " (implements the :Ntree command) 2678 " (implements the :Ntree command)
2756 fun! netrw#SetTreetop(iscmd,...) 2679 fun! netrw#SetTreetop(...)
2757 " call Dfunc("netrw#SetTreetop(iscmd=".a:iscmd." ".((a:0 > 0)? a:1 : "").") a:0=".a:0) 2680 " call Dfunc("netrw#SetTreetop(".((a:0 > 0)? a:1 : "").") a:0=".a:0)
2758 " call Decho("w:netrw_treetop<".w:netrw_treetop.">") 2681
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>"))
2763 " clear out the current tree 2682 " clear out the current tree
2764 if exists("w:netrw_treetop") 2683 if exists("w:netrw_treetop")
2765 " call Decho("clearing out current tree",'~'.expand("<slnum>")) 2684 " call Decho("clearing out current tree",'~'.expand("<slnum>"))
2766 let inittreetop= w:netrw_treetop 2685 let inittreetop= w:netrw_treetop
2767 unlet w:netrw_treetop 2686 unlet w:netrw_treetop
2768 endif 2687 endif
2769 if exists("w:netrw_treedict") 2688 if exists("w:netrw_treedict")
2770 " call Decho("freeing w:netrw_treedict",'~'.expand("<slnum>")) 2689 " call Decho("freeing w:netrw_treedict",'~'.expand("<slnum>"))
2771 unlet w:netrw_treedict 2690 unlet w:netrw_treedict
2772 endif 2691 endif
2773 " call Decho("inittreetop<".(exists("inittreetop")? inittreetop : "n/a").">") 2692
2774 2693 if a:1 == "" && exists("inittreetop")
2775 if (a:iscmd == 0 || a:1 == "") && exists("inittreetop")
2776 let treedir= s:NetrwTreePath(inittreetop) 2694 let treedir= s:NetrwTreePath(inittreetop)
2777 " call Decho("treedir<".treedir.">",'~'.expand("<slnum>")) 2695 " call Decho("treedir<".treedir.">",'~'.expand("<slnum>"))
2778 else 2696 else
2779 if isdirectory(s:NetrwFile(a:1)) 2697 if isdirectory(s:NetrwFile(a:1))
2780 " call Decho("a:1<".a:1."> is a directory",'~'.expand("<slnum>")) 2698 " call Decho("a:1<".a:1."> is a directory",'~'.expand("<slnum>"))
2781 let treedir= a:1 2699 let treedir= a:1
2782 elseif exists("b:netrw_curdir") && (isdirectory(s:NetrwFile(b:netrw_curdir."/".a:1)) || a:1 =~ '^\a\{3,}://') 2700 elseif exists("b:netrw_curdir") && (isdirectory(s:NetrwFile(b:netrw_curdir."/".a:1)) || a:1 =~ '^\a\{3,}://')
2783 let treedir= b:netrw_curdir."/".a:1 2701 let treedir= b:netrw_curdir."/".a:1
2784 " call Decho("a:1<".a:1."> is NOT a directory, using treedir<".treedir.">",'~'.expand("<slnum>")) 2702 " call Decho("a:1<".a:1."> is NOT a directory, trying treedir<".treedir.">",'~'.expand("<slnum>"))
2785 else 2703 else
2786 " normally the cursor is left in the message window. 2704 " normally the cursor is left in the message window.
2787 " However, here this results in the directory being listed in the message window, which is not wanted. 2705 " However, here this results in the directory being listed in the message window, which is not wanted.
2788 let netrwbuf= bufnr("%") 2706 let netrwbuf= bufnr("%")
2789 call netrw#ErrorMsg(s:ERROR,"sorry, ".a:1." doesn't seem to be a directory!",95) 2707 call netrw#ErrorMsg(s:ERROR,"sorry, ".a:1." doesn't seem to be a directory!",95)
2790 exe bufwinnr(netrwbuf)."wincmd w" 2708 exe bufwinnr(netrwbuf)."wincmd w"
2791 let treedir= "." 2709 let treedir= "."
2792 endif 2710 endif
2793 endif 2711 endif
2794 " call Decho("treedir<".treedir.">",'~'.expand("<slnum>")) 2712 " call Decho("treedir<".treedir.">",'~'.expand("<slnum>"))
2795
2796 " determine if treedir is remote or local
2797 let islocal= expand("%") !~ '^\a\{3,}://' 2713 let islocal= expand("%") !~ '^\a\{3,}://'
2798 " call Decho("islocal=".islocal,'~'.expand("<slnum>")) 2714 " call Decho("islocal=".islocal,'~'.expand("<slnum>"))
2799
2800 " browse the resulting directory
2801 if islocal 2715 if islocal
2802 call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(islocal,treedir)) 2716 call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(islocal,treedir))
2803 else 2717 else
2804 call s:NetrwBrowse(islocal,s:NetrwBrowseChgDir(islocal,treedir)) 2718 call s:NetrwBrowse(islocal,s:NetrwBrowseChgDir(islocal,treedir))
2805 endif 2719 endif
2806
2807 " call Dret("netrw#SetTreetop") 2720 " call Dret("netrw#SetTreetop")
2808 endfun 2721 endfun
2809 2722
2810 " =========================================== 2723 " ===========================================
2811 " s:NetrwGetFile: Function to read temporary file "tfile" with command "readcmd". {{{2 2724 " s:NetrwGetFile: Function to read temporary file "tfile" with command "readcmd". {{{2
2840 if g:netrw_cygwin 2753 if g:netrw_cygwin
2841 let tfile= substitute(a:tfile,g:netrw_cygdrive.'/\(.\)','\1:','') 2754 let tfile= substitute(a:tfile,g:netrw_cygdrive.'/\(.\)','\1:','')
2842 else 2755 else
2843 let tfile= a:tfile 2756 let tfile= a:tfile
2844 endif 2757 endif
2845 call s:NetrwBufRename(tfile) 2758 " call Decho("exe sil! keepalt file ".fnameescape(tfile),'~'.expand("<slnum>"))
2759 exe "sil! keepalt file ".fnameescape(tfile)
2846 2760
2847 " edit temporary file (ie. read the temporary file in) 2761 " edit temporary file (ie. read the temporary file in)
2848 if rfile =~ '\.zip$' 2762 if rfile =~ '\.zip$'
2849 " call Decho("handling remote zip file with zip#Browse(tfile<".tfile.">)",'~'.expand("<slnum>")) 2763 " call Decho("handling remote zip file with zip#Browse(tfile<".tfile.">)",'~'.expand("<slnum>"))
2850 call zip#Browse(tfile) 2764 call zip#Browse(tfile)
2867 " call Decho("edit temporary file",'~'.expand("<slnum>")) 2781 " call Decho("edit temporary file",'~'.expand("<slnum>"))
2868 NetrwKeepj e! 2782 NetrwKeepj e!
2869 endif 2783 endif
2870 2784
2871 " rename buffer back to remote filename 2785 " rename buffer back to remote filename
2872 call s:NetrwBufRename(rfile) 2786 " call Decho("exe sil! keepalt file ".fnameescape(rfile),'~'.expand("<slnum>"))
2787 exe "sil! NetrwKeepj keepalt file ".fnameescape(rfile)
2873 2788
2874 " Detect filetype of local version of remote file. 2789 " Detect filetype of local version of remote file.
2875 " Note that isk must not include a "/" for scripts.vim 2790 " Note that isk must not include a "/" for scripts.vim
2876 " to process this detection correctly. 2791 " to process this detection correctly.
2877 " call Decho("detect filetype of local version of remote file",'~'.expand("<slnum>")) 2792 " call Decho("detect filetype of local version of remote file",'~'.expand("<slnum>"))
2878 let iskkeep= &l:isk 2793 let iskkeep= &l:isk
2879 setl isk-=/ 2794 setl isk-=/
2880 let &l:isk= iskkeep 2795 let &l:isk= iskkeep
2881 " call Dredir("ls!","NetrwGetFile (renamed buffer back to remote filename<".rfile."> : expand(%)<".expand("%").">)") 2796 " call Dredir("renamed buffer back to remote filename<".rfile."> : expand(%)<".expand("%").">","ls!")
2882 let line1 = 1 2797 let line1 = 1
2883 let line2 = line("$") 2798 let line2 = line("$")
2884 2799
2885 elseif !&ma 2800 elseif !&ma
2886 " attempting to read a file after the current line in the file, but the buffer is not modifiable 2801 " attempting to read a file after the current line in the file, but the buffer is not modifiable
2947 " g:netrw_machine= hostname 2862 " g:netrw_machine= hostname
2948 " b:netrw_fname = filename 2863 " b:netrw_fname = filename
2949 " g:netrw_port = optional port number (for ftp) 2864 " g:netrw_port = optional port number (for ftp)
2950 " g:netrw_choice = copy of input url (choice) 2865 " g:netrw_choice = copy of input url (choice)
2951 fun! s:NetrwMethod(choice) 2866 fun! s:NetrwMethod(choice)
2952 " call Dfunc("s:NetrwMethod(a:choice<".a:choice.">)") 2867 " call Dfunc("NetrwMethod(a:choice<".a:choice.">)")
2953 2868
2954 " sanity check: choice should have at least three slashes in it 2869 " sanity check: choice should have at least three slashes in it
2955 if strlen(substitute(a:choice,'[^/]','','g')) < 3 2870 if strlen(substitute(a:choice,'[^/]','','g')) < 3
2956 call netrw#ErrorMsg(s:ERROR,"not a netrw-style url; netrw uses protocol://[user@]hostname[:port]/[path])",78) 2871 call netrw#ErrorMsg(s:ERROR,"not a netrw-style url; netrw uses protocol://[user@]hostname[:port]/[path])",78)
2957 let b:netrw_method = -1 2872 let b:netrw_method = -1
2958 " call Dret("s:NetrwMethod : incorrect url format<".a:choice.">") 2873 " call Dret("NetrwMethod : incorrect url format<".a:choice.">")
2959 return 2874 return
2960 endif 2875 endif
2961 2876
2962 " record current g:netrw_machine, if any 2877 " record current g:netrw_machine, if any
2963 " curmachine used if protocol == ftp and no .netrc 2878 " curmachine used if protocol == ftp and no .netrc
3066 if userid != "" 2981 if userid != ""
3067 let g:netrw_uid= userid 2982 let g:netrw_uid= userid
3068 endif 2983 endif
3069 2984
3070 if curmachine != g:netrw_machine 2985 if curmachine != g:netrw_machine
3071 if exists("s:netrw_hup[".g:netrw_machine."]") 2986 if exists("s:netwr_hup[".g:netrw_machine."]")
3072 call NetUserPass("ftp:".g:netrw_machine) 2987 call NetUserPass("ftp:".g:netrw_machine)
3073 elseif exists("s:netrw_passwd") 2988 elseif exists("s:netrw_passwd")
3074 " if there's a change in hostname, require password re-entry 2989 " if there's a change in hostname, require password re-entry
3075 unlet s:netrw_passwd 2990 unlet s:netrw_passwd
3076 endif 2991 endif
3196 " endif "Decho 3111 " endif "Decho
3197 " if exists("s:netrw_passwd") "Decho 3112 " if exists("s:netrw_passwd") "Decho
3198 " call Decho("s:netrw_passwd <".s:netrw_passwd.">",'~'.expand("<slnum>")) 3113 " call Decho("s:netrw_passwd <".s:netrw_passwd.">",'~'.expand("<slnum>"))
3199 " endif "Decho 3114 " endif "Decho
3200 " call Decho("b:netrw_fname <".b:netrw_fname.">",'~'.expand("<slnum>")) 3115 " call Decho("b:netrw_fname <".b:netrw_fname.">",'~'.expand("<slnum>"))
3201 " call Dret("s:NetrwMethod : b:netrw_method=".b:netrw_method." g:netrw_port=".g:netrw_port) 3116 " call Dret("NetrwMethod : b:netrw_method=".b:netrw_method." g:netrw_port=".g:netrw_port)
3202 endfun 3117 endfun
3203 3118
3204 " ------------------------------------------------------------------------ 3119 " ------------------------------------------------------------------------
3205 " NetReadFixup: this sort of function is typically written by the user {{{2 3120 " NetReadFixup: this sort of function is typically written by the user {{{2
3206 " to handle extra junk that their system's ftp dumps 3121 " to handle extra junk that their system's ftp dumps
3340 endif 3255 endif
3341 3256
3342 " call Dret("NetUserPass : uid<".g:netrw_uid."> passwd<".s:netrw_passwd.">") 3257 " call Dret("NetUserPass : uid<".g:netrw_uid."> passwd<".s:netrw_passwd.">")
3343 endfun 3258 endfun
3344 3259
3345 " ================================= 3260 " ===========================================
3346 " Shared Browsing Support: {{{1 3261 " Shared Browsing Support: {{{1
3347 " ================================= 3262 " ===========================================
3348 3263
3349 " --------------------------------------------------------------------- 3264 " ---------------------------------------------------------------------
3350 " s:ExplorePatHls: converts an Explore pattern into a regular expression search pattern {{{2 3265 " s:ExplorePatHls: converts an Explore pattern into a regular expression search pattern {{{2
3351 fun! s:ExplorePatHls(pattern) 3266 fun! s:ExplorePatHls(pattern)
3352 " call Dfunc("s:ExplorePatHls(pattern<".a:pattern.">)") 3267 " call Dfunc("s:ExplorePatHls(pattern<".a:pattern.">)")
3645 fun! s:NetrwBrowse(islocal,dirname) 3560 fun! s:NetrwBrowse(islocal,dirname)
3646 if !exists("w:netrw_liststyle")|let w:netrw_liststyle= g:netrw_liststyle|endif 3561 if !exists("w:netrw_liststyle")|let w:netrw_liststyle= g:netrw_liststyle|endif
3647 " call Dfunc("s:NetrwBrowse(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".w:netrw_liststyle." ".g:loaded_netrw." buf#".bufnr("%")."<".bufname("%")."> win#".winnr()) 3562 " call Dfunc("s:NetrwBrowse(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".w:netrw_liststyle." ".g:loaded_netrw." buf#".bufnr("%")."<".bufname("%")."> win#".winnr())
3648 " call Decho("modified=".&modified." modifiable=".&modifiable." readonly=".&readonly,'~'.expand("<slnum>")) 3563 " call Decho("modified=".&modified." modifiable=".&modifiable." readonly=".&readonly,'~'.expand("<slnum>"))
3649 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>")) 3564 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>"))
3650 " call Dredir("ls!","s:NetrwBrowse") 3565 " call Dredir("ls!")
3651 3566
3652 " save alternate-file's filename if w:netrw_rexlocal doesn't exist 3567 " save alternate-file's filename if w:netrw_rexlocal doesn't exist
3653 " This is useful when one edits a local file, then :e ., then :Rex 3568 " This is useful when one edits a local file, then :e ., then :Rex
3654 if a:islocal && !exists("w:netrw_rexfile") && bufname("#") != "" 3569 if a:islocal && !exists("w:netrw_rexfile") && bufname("#") != ""
3655 let w:netrw_rexfile= bufname("#") 3570 let w:netrw_rexfile= bufname("#")
3666 let dirname= simplify(a:dirname) 3581 let dirname= simplify(a:dirname)
3667 else 3582 else
3668 let dirname= a:dirname 3583 let dirname= a:dirname
3669 endif 3584 endif
3670 3585
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
3677 if exists("s:netrw_skipbrowse") 3586 if exists("s:netrw_skipbrowse")
3678 unlet s:netrw_skipbrowse 3587 unlet s:netrw_skipbrowse
3679 " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." filename<".expand("%")."> win#".winnr()." ft<".&ft.">",'~'.expand("<slnum>")) 3588 " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." filename<".expand("%")."> win#".winnr()." ft<".&ft.">",'~'.expand("<slnum>"))
3680 " call Dret("s:NetrwBrowse : s:netrw_skipbrowse existed") 3589 " call Dret("s:NetrwBrowse : s:netrw_skipbrowse existed")
3681 return 3590 return
3695 3604
3696 " s:NetrwBrowse : save options: {{{3 3605 " s:NetrwBrowse : save options: {{{3
3697 call s:NetrwOptionSave("w:") 3606 call s:NetrwOptionSave("w:")
3698 3607
3699 " s:NetrwBrowse : re-instate any marked files {{{3 3608 " s:NetrwBrowse : re-instate any marked files {{{3
3700 if has("syntax") && exists("g:syntax_on") && g:syntax_on 3609 if exists("s:netrwmarkfilelist_{bufnr('%')}")
3701 if exists("s:netrwmarkfilelist_{bufnr('%')}") 3610 " call Decho("clearing marked files",'~'.expand("<slnum>"))
3702 " call Decho("clearing marked files",'~'.expand("<slnum>")) 3611 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/"
3703 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/"
3704 endif
3705 endif 3612 endif
3706 3613
3707 if a:islocal && exists("w:netrw_acdkeep") && w:netrw_acdkeep 3614 if a:islocal && exists("w:netrw_acdkeep") && w:netrw_acdkeep
3708 " s:NetrwBrowse : set up "safe" options for local directory/file {{{3 3615 " s:NetrwBrowse : set up "safe" options for local directory/file {{{3
3709 " call Decho("handle w:netrw_acdkeep:",'~'.expand("<slnum>")) 3616 " call Decho("handle w:netrw_acdkeep:",'~'.expand("<slnum>"))
3710 " call Decho("NetrwKeepj lcd ".fnameescape(dirname)." (due to w:netrw_acdkeep=".w:netrw_acdkeep." - acd=".&acd.")",'~'.expand("<slnum>")) 3617 " call Decho("NetrwKeepj lcd ".fnameescape(dirname)." (due to w:netrw_acdkeep=".w:netrw_acdkeep." - acd=".&acd.")",'~'.expand("<slnum>"))
3711 if s:NetrwLcd(dirname) 3618 call s:NetrwLcd(dirname)
3712 " call Dret("s:NetrwBrowse : lcd failure") 3619 call s:NetrwSafeOptions()
3713 return
3714 endif
3715 " call s:NetrwSafeOptions() " tst953 failed with this enabled.
3716 " call Decho("getcwd<".getcwd().">",'~'.expand("<slnum>")) 3620 " call Decho("getcwd<".getcwd().">",'~'.expand("<slnum>"))
3717 3621
3718 elseif !a:islocal && dirname !~ '[\/]$' && dirname !~ '^"' 3622 elseif !a:islocal && dirname !~ '[\/]$' && dirname !~ '^"'
3719 " s:NetrwBrowse : remote regular file handler {{{3 3623 " s:NetrwBrowse : remote regular file handler {{{3
3720 " call Decho("handle remote regular file: dirname<".dirname.">",'~'.expand("<slnum>")) 3624 " call Decho("handle remote regular file: dirname<".dirname.">",'~'.expand("<slnum>"))
3737 call s:NetrwSafeOptions() 3641 call s:NetrwSafeOptions()
3738 setl ma noro 3642 setl ma noro
3739 " call Decho("setl ma noro",'~'.expand("<slnum>")) 3643 " call Decho("setl ma noro",'~'.expand("<slnum>"))
3740 let b:netrw_curdir = dirname 3644 let b:netrw_curdir = dirname
3741 let url = s:method."://".((s:user == "")? "" : s:user."@").s:machine.(s:port ? ":".s:port : "")."/".s:path 3645 let url = s:method."://".((s:user == "")? "" : s:user."@").s:machine.(s:port ? ":".s:port : "")."/".s:path
3742 call s:NetrwBufRename(url) 3646 " call Decho("exe sil! keepalt file ".fnameescape(url)." (bt=".&bt.")",'~'.expand("<slnum>"))
3647 exe "sil! NetrwKeepj keepalt file ".fnameescape(url)
3743 exe "sil! NetrwKeepj keepalt doau BufReadPre ".fnameescape(s:fname) 3648 exe "sil! NetrwKeepj keepalt doau BufReadPre ".fnameescape(s:fname)
3744 sil call netrw#NetRead(2,url) 3649 sil call netrw#NetRead(2,url)
3745 " netrw.vim and tar.vim have already handled decompression of the tarball; avoiding gzip.vim error 3650 " netrw.vim and tar.vim have already handled decompression of the tarball; avoiding gzip.vim error
3746 " call Decho("url<".url.">",'~'.expand("<slnum>")) 3651 " call Decho("url<".url.">",'~'.expand("<slnum>"))
3747 " call Decho("s:path<".s:path.">",'~'.expand("<slnum>")) 3652 " call Decho("s:path<".s:path.">",'~'.expand("<slnum>"))
3784 let svpos = winsaveview() 3689 let svpos = winsaveview()
3785 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) 3690 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))
3786 let reusing= s:NetrwGetBuffer(a:islocal,dirname) 3691 let reusing= s:NetrwGetBuffer(a:islocal,dirname)
3787 3692
3788 " maintain markfile highlighting 3693 " maintain markfile highlighting
3789 if has("syntax") && exists("g:syntax_on") && g:syntax_on 3694 if exists("s:netrwmarkfilemtch_{bufnr('%')}") && s:netrwmarkfilemtch_{bufnr("%")} != ""
3790 if exists("s:netrwmarkfilemtch_{bufnr('%')}") && s:netrwmarkfilemtch_{bufnr("%")} != "" 3695 " call Decho("bufnr(%)=".bufnr('%'),'~'.expand("<slnum>"))
3791 " " call Decho("bufnr(%)=".bufnr('%'),'~'.expand("<slnum>")) 3696 " call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/",'~'.expand("<slnum>"))
3792 " " call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/",'~'.expand("<slnum>")) 3697 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/"
3793 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/" 3698 else
3794 else 3699 " call Decho("2match none",'~'.expand("<slnum>"))
3795 " " call Decho("2match none",'~'.expand("<slnum>")) 3700 2match none
3796 2match none
3797 endif
3798 endif 3701 endif
3799 if reusing && line("$") > 1 3702 if reusing && line("$") > 1
3800 call s:NetrwOptionRestore("w:") 3703 call s:NetrwOptionRestore("w:")
3801 " call Decho("setl noma nomod nowrap",'~'.expand("<slnum>")) 3704 " call Decho("setl noma nomod nowrap",'~'.expand("<slnum>"))
3802 setl noma nomod nowrap 3705 setl noma nomod nowrap
3841 " handle g:netrw_keepdir: set vim's current directory to netrw's notion of the current directory {{{3 3744 " handle g:netrw_keepdir: set vim's current directory to netrw's notion of the current directory {{{3
3842 if !g:netrw_keepdir 3745 if !g:netrw_keepdir
3843 " call Decho("handle g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd,'~'.expand("<slnum>")) 3746 " call Decho("handle g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd,'~'.expand("<slnum>"))
3844 " call Decho("l:acd".(exists("&l:acd")? "=".&l:acd : " doesn't exist"),'~'.expand("<slnum>")) 3747 " call Decho("l:acd".(exists("&l:acd")? "=".&l:acd : " doesn't exist"),'~'.expand("<slnum>"))
3845 if !exists("&l:acd") || !&l:acd 3748 if !exists("&l:acd") || !&l:acd
3846 if s:NetrwLcd(b:netrw_curdir) 3749 call s:NetrwLcd(b:netrw_curdir)
3847 " call Dret("s:NetrwBrowse : lcd failure")
3848 return
3849 endif
3850 endif 3750 endif
3851 endif 3751 endif
3852 3752
3853 " -------------------------------- 3753 " --------------------------------
3854 " remote handling: {{{3 3754 " remote handling: {{{3
3913 endif 3813 endif
3914 if v:version >= 700 && has("balloon_eval") && &beval == 0 && &l:bexpr == "" && !exists("g:netrw_nobeval") 3814 if v:version >= 700 && has("balloon_eval") && &beval == 0 && &l:bexpr == "" && !exists("g:netrw_nobeval")
3915 let &l:bexpr= "netrw#BalloonHelp()" 3815 let &l:bexpr= "netrw#BalloonHelp()"
3916 " call Decho("set up balloon help: l:bexpr=".&l:bexpr,'~'.expand("<slnum>")) 3816 " call Decho("set up balloon help: l:bexpr=".&l:bexpr,'~'.expand("<slnum>"))
3917 setl beval 3817 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)
3924 endif 3818 endif
3925 3819
3926 " restore position 3820 " restore position
3927 if reusing 3821 if reusing
3928 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) 3822 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))
4064 " " call Dret("s:NetrwFullPath <".filename.">") 3958 " " call Dret("s:NetrwFullPath <".filename.">")
4065 return filename 3959 return filename
4066 endfun 3960 endfun
4067 3961
4068 " --------------------------------------------------------------------- 3962 " ---------------------------------------------------------------------
4069 " s:NetrwGetBuffer: [get a new|find an old netrw] buffer for a netrw listing {{{2 3963 " s:NetrwGetBuffer: {{{2
4070 " returns 0=cleared buffer 3964 " returns 0=cleared buffer
4071 " 1=re-used buffer (buffer not cleared) 3965 " 1=re-used buffer (buffer not cleared)
4072 fun! s:NetrwGetBuffer(islocal,dirname) 3966 fun! s:NetrwGetBuffer(islocal,dirname)
4073 " call Dfunc("s:NetrwGetBuffer(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".g:netrw_liststyle) 3967 " call Dfunc("s:NetrwGetBuffer(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".g:netrw_liststyle)
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>")) 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>"))
4075 " call Decho("netrwbuf dictionary=".(exists("s:netrwbuf")? string(s:netrwbuf) : 'n/a'),'~'.expand("<slnum>")) 3969 " call Decho("netrwbuf dictionary=".string(s:netrwbuf),'~'.expand("<slnum>"))
4076 let dirname= a:dirname 3970 let dirname= a:dirname
4077 3971
4078 " re-use buffer if possible {{{3 3972 " re-use buffer if possible {{{3
4079 " call Decho("--re-use a buffer if possible--",'~'.expand("<slnum>")) 3973 " call Decho("--re-use a buffer if possible--",'~'.expand("<slnum>"))
4080 if !exists("s:netrwbuf") 3974 if !exists("s:netrwbuf")
4081 " call Decho(" s:netrwbuf initialized to {}",'~'.expand("<slnum>"))
4082 let s:netrwbuf= {} 3975 let s:netrwbuf= {}
4083 endif 3976 endif
4084 " call Decho(" s:netrwbuf =".string(s:netrwbuf),'~'.expand("<slnum>")) 3977 if has_key(s:netrwbuf,s:NetrwFullPath(dirname))
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))
4110 let bufnum= s:netrwbuf[s:NetrwFullPath(dirname)] 3978 let bufnum= s:netrwbuf[s:NetrwFullPath(dirname)]
4111 " call Decho(" lookup netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."]=".bufnum,'~'.expand("<slnum>")) 3979 " call Decho("lookup netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."]=".bufnum)
4112 if !bufexists(bufnum) 3980 if !bufexists(bufnum)
4113 call remove(s:netrwbuf,s:NetrwFullPath(dirname)) 3981 call remove(s:netrwbuf,s:NetrwFullPath(dirname))
4114 let bufnum= -1 3982 let bufnum= -1
4115 endif 3983 endif
4116 3984 else
4117 else 3985 " call Decho("lookup netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."] not a key")
4118 " call Decho(" lookup netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."] not a key",'~'.expand("<slnum>"))
4119 let bufnum= -1 3986 let bufnum= -1
4120 endif 3987 endif
4121 " call Decho(" bufnum#".bufnum,'~'.expand("<slnum>"))
4122 3988
4123 " get enew buffer and name it -or- re-use buffer {{{3 3989 " get enew buffer and name it -or- re-use buffer {{{3
4124 if bufnum < 0 " get enew buffer and name it 3990 if bufnum < 0 " get enew buffer and name it
4125 " call Decho("--get enew buffer and name it (bufnum#".bufnum."<0 OR bufexists(".bufnum.")=".bufexists(bufnum)."==0)",'~'.expand("<slnum>")) 3991 " call Decho("--get enew buffer and name it (bufnum#".bufnum."<0 OR bufexists(".bufnum.")=".bufexists(bufnum)."==0)",'~'.expand("<slnum>"))
4126 call s:NetrwEnew(dirname) 3992 call s:NetrwEnew(dirname)
4127 " call Decho(" got enew buffer#".bufnr("%")." (altbuf<".expand("#").">)",'~'.expand("<slnum>")) 3993 " call Decho(" got enew buffer#".bufnr("%")." (altbuf<".expand("#").">)",'~'.expand("<slnum>"))
4128 " name the buffer 3994 " name the buffer
4129 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST 3995 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
4130 " Got enew buffer; transform into a NetrwTreeListing 3996 " Got enew buffer; transform into a NetrwTreeListing
4131 " call Decho("--transform enew buffer#".bufnr("%")." into a NetrwTreeListing --",'~'.expand("<slnum>")) 3997 " call Decho("--transform enew buffer#".bufnr("%")." into a NetrwTreeListing --",'~'.expand("<slnum>"))
4132 let w:netrw_treebufnr = bufnr("%") 3998 if !exists("s:netrw_treelistnum")
4133 call s:NetrwBufRename("NetrwTreeListing") 3999 let s:netrw_treelistnum= 1
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)
4134 if g:netrw_use_noswf 4006 if g:netrw_use_noswf
4135 setl nobl bt=nofile noswf 4007 setl nobl bt=nofile noswf
4136 else 4008 else
4137 setl nobl bt=nofile 4009 setl nobl bt=nofile
4138 endif 4010 endif
4139 nnoremap <silent> <buffer> [[ :sil call <SID>TreeListMove('[[')<cr> 4011 nnoremap <silent> <buffer> [[ :sil call <SID>TreeListMove('[[')<cr>
4140 nnoremap <silent> <buffer> ]] :sil call <SID>TreeListMove(']]')<cr> 4012 nnoremap <silent> <buffer> ]] :sil call <SID>TreeListMove(']]')<cr>
4141 nnoremap <silent> <buffer> [] :sil call <SID>TreeListMove('[]')<cr> 4013 nnoremap <silent> <buffer> [] :sil call <SID>TreeListMove('[]')<cr>
4142 nnoremap <silent> <buffer> ][ :sil call <SID>TreeListMove('][')<cr> 4014 nnoremap <silent> <buffer> ][ :sil call <SID>TreeListMove('][')<cr>
4143 " call Decho(" tree listing bufnr=".w:netrw_treebufnr,'~'.expand("<slnum>")) 4015 " call Decho(" tree listing#".s:netrw_treelistnum." bufnr=".w:netrw_treebufnr,'~'.expand("<slnum>"))
4144 else 4016 else
4145 call s:NetrwBufRename(dirname) 4017 " let v:errmsg = "" " Decho
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>"))
4146 " enter the new buffer into the s:netrwbuf dictionary 4024 " enter the new buffer into the s:netrwbuf dictionary
4147 let s:netrwbuf[s:NetrwFullPath(dirname)]= bufnr("%") 4025 let s:netrwbuf[s:NetrwFullPath(dirname)]= bufnr("%")
4148 " call Decho("update netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."]=".bufnr("%"),'~'.expand("<slnum>")) 4026 " call Decho("update netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."]=".bufnr("%"),'~'.expand("<slnum>"))
4149 " call Decho("netrwbuf dictionary=".string(s:netrwbuf),'~'.expand("<slnum>")) 4027 " call Decho("netrwbuf dictionary=".string(s:netrwbuf),'~'.expand("<slnum>"))
4150 endif 4028 endif
4161 " call Decho(" getline(2)<".getline(2).'> does not match "Netrw Directory Listing" : using b '.bufnum,'~'.expand("<slnum>")) 4039 " call Decho(" getline(2)<".getline(2).'> does not match "Netrw Directory Listing" : using b '.bufnum,'~'.expand("<slnum>"))
4162 exe "sil! NetrwKeepj noswapfile keepalt b ".bufnum 4040 exe "sil! NetrwKeepj noswapfile keepalt b ".bufnum
4163 endif 4041 endif
4164 " call Decho(" line($)=".line("$"),'~'.expand("<slnum>")) 4042 " call Decho(" line($)=".line("$"),'~'.expand("<slnum>"))
4165 if bufname("%") == '.' 4043 if bufname("%") == '.'
4166 call s:NetrwBufRename(getcwd()) 4044 " call Decho("exe sil! keepalt file ".fnameescape(getcwd()),'~'.expand("<slnum>"))
4045 exe "sil! NetrwKeepj keepalt file ".fnameescape(getcwd())
4167 endif 4046 endif
4168 let &ei= eikeep 4047 let &ei= eikeep
4169 4048
4170 if line("$") <= 1 && getline(1) == "" 4049 if line("$") <= 1 && getline(1) == ""
4171 " empty buffer 4050 " empty buffer
4185 return 0 4064 return 0
4186 4065
4187 elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST 4066 elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
4188 " call Decho("--re-use tree listing--",'~'.expand("<slnum>")) 4067 " call Decho("--re-use tree listing--",'~'.expand("<slnum>"))
4189 " call Decho(" clear buffer<".expand("%")."> with :%d",'~'.expand("<slnum>")) 4068 " call Decho(" clear buffer<".expand("%")."> with :%d",'~'.expand("<slnum>"))
4190 setl ma
4191 sil NetrwKeepj %d _ 4069 sil NetrwKeepj %d _
4192 NetrwKeepj call s:NetrwListSettings(a:islocal) 4070 NetrwKeepj call s:NetrwListSettings(a:islocal)
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>")) 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>"))
4194 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>")) 4072 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>"))
4195 " call Dret("s:NetrwGetBuffer 0<cleared buffer> : re-using buffer#".bufnr("%").", but treelist mode always needs a refresh") 4073 " call Dret("s:NetrwGetBuffer 0<cleared buffer> : re-using buffer#".bufnr("%").", but treelist mode always needs a refresh")
4209 " med 1 D H 4087 " med 1 D H
4210 " fast 2 H H 4088 " fast 2 H H
4211 " call Decho("--do netrw settings: make this buffer#".bufnr("%")." not-a-file, modifiable, not line-numbered, etc--",'~'.expand("<slnum>")) 4089 " call Decho("--do netrw settings: make this buffer#".bufnr("%")." not-a-file, modifiable, not line-numbered, etc--",'~'.expand("<slnum>"))
4212 let fname= expand("%") 4090 let fname= expand("%")
4213 NetrwKeepj call s:NetrwListSettings(a:islocal) 4091 NetrwKeepj call s:NetrwListSettings(a:islocal)
4214 call s:NetrwBufRename(fname) 4092 " call Decho("exe sil! keepalt file ".fnameescape(fname),'~'.expand("<slnum>"))
4093 exe "sil! NetrwKeepj keepalt file ".fnameescape(fname)
4215 4094
4216 " delete all lines from buffer {{{3 4095 " delete all lines from buffer {{{3
4217 " call Decho("--delete all lines from buffer--",'~'.expand("<slnum>")) 4096 " call Decho("--delete all lines from buffer--",'~'.expand("<slnum>"))
4218 " call Decho(" clear buffer<".expand("%")."> with :%d",'~'.expand("<slnum>")) 4097 " call Decho(" clear buffer<".expand("%")."> with :%d",'~'.expand("<slnum>"))
4219 sil! keepalt NetrwKeepj %d _ 4098 sil! keepalt NetrwKeepj %d _
4352 " call Dret("s:NetrwGetWord <".dirname.">") 4231 " call Dret("s:NetrwGetWord <".dirname.">")
4353 return dirname 4232 return dirname
4354 endfun 4233 endfun
4355 4234
4356 " --------------------------------------------------------------------- 4235 " ---------------------------------------------------------------------
4357 " s:NetrwListSettings: make standard settings for making a netrw listing {{{2 4236 " s:NetrwListSettings: make standard settings for a netrw listing {{{2
4358 " g:netrw_bufsettings will be used after the listing is produced.
4359 " Called by s:NetrwGetBuffer()
4360 fun! s:NetrwListSettings(islocal) 4237 fun! s:NetrwListSettings(islocal)
4361 " call Dfunc("s:NetrwListSettings(islocal=".a:islocal.")") 4238 " call Dfunc("s:NetrwListSettings(islocal=".a:islocal.")")
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>")) 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>"))
4363 let fname= bufname("%") 4240 let fname= bufname("%")
4364 " " call Decho("(NetrwListSettings) setl bt=nofile nobl ma nonu nowrap noro nornu",'~'.expand("<slnum>")) 4241 " " call Decho("(NetrwListSettings) setl bt=nofile nobl ma nonu nowrap noro nornu",'~'.expand("<slnum>"))
4365 " nobl noma nomod nonu noma nowrap ro nornu (std g:netrw_bufsettings) 4242 setl bt=nofile nobl ma nonu nowrap noro nornu
4366 setl bt=nofile nobl ma nonu nowrap noro nornu 4243 " call Decho("(NetrwListSettings) exe sil! keepalt file ".fnameescape(fname),'~'.expand("<slnum>"))
4367 call s:NetrwBufRename(fname) 4244 exe "sil! keepalt file ".fnameescape(fname)
4368 if g:netrw_use_noswf 4245 if g:netrw_use_noswf
4369 setl noswf 4246 setl noswf
4370 endif 4247 endif
4371 " call Dredir("ls!","s:NetrwListSettings") 4248 " call Dredir("ls!")
4372 " call Decho("(NetrwListSettings) exe setl ts=".(g:netrw_maxfilenamelen+1),'~'.expand("<slnum>")) 4249 " call Decho("(NetrwListSettings) exe setl ts=".(g:netrw_maxfilenamelen+1),'~'.expand("<slnum>"))
4373 exe "setl ts=".(g:netrw_maxfilenamelen+1) 4250 exe "setl ts=".(g:netrw_maxfilenamelen+1)
4374 setl isk+=.,~,- 4251 setl isk+=.,~,-
4375 if g:netrw_fastbrowse > a:islocal 4252 if g:netrw_fastbrowse > a:islocal
4376 setl bh=hide 4253 setl bh=hide
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>")) 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>"))
4381 " call Dret("s:NetrwListSettings") 4258 " call Dret("s:NetrwListSettings")
4382 endfun 4259 endfun
4383 4260
4384 " --------------------------------------------------------------------- 4261 " ---------------------------------------------------------------------
4385 " s:NetrwListStyle: change list style (thin - long - wide - tree) {{{2 4262 " s:NetrwListStyle: {{{2
4386 " islocal=0: remote browsing 4263 " islocal=0: remote browsing
4387 " =1: local browsing 4264 " =1: local browsing
4388 fun! s:NetrwListStyle(islocal) 4265 fun! s:NetrwListStyle(islocal)
4389 " call Dfunc("NetrwListStyle(islocal=".a:islocal.") w:netrw_liststyle=".w:netrw_liststyle) 4266 " call Dfunc("NetrwListStyle(islocal=".a:islocal.") w:netrw_liststyle=".w:netrw_liststyle)
4390 4267
4396 let w:netrw_liststyle = (w:netrw_liststyle + 1) % s:MAXLIST 4273 let w:netrw_liststyle = (w:netrw_liststyle + 1) % s:MAXLIST
4397 " call Decho("fname<".fname.">",'~'.expand("<slnum>")) 4274 " call Decho("fname<".fname.">",'~'.expand("<slnum>"))
4398 " call Decho("chgd w:netrw_liststyle to ".w:netrw_liststyle,'~'.expand("<slnum>")) 4275 " call Decho("chgd w:netrw_liststyle to ".w:netrw_liststyle,'~'.expand("<slnum>"))
4399 " call Decho("b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "doesn't exist").">",'~'.expand("<slnum>")) 4276 " call Decho("b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "doesn't exist").">",'~'.expand("<slnum>"))
4400 4277
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
4407 if w:netrw_liststyle == s:THINLIST 4278 if w:netrw_liststyle == s:THINLIST
4408 " use one column listing 4279 " use one column listing
4409 " call Decho("use one column list",'~'.expand("<slnum>")) 4280 " call Decho("use one column list",'~'.expand("<slnum>"))
4410 let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge') 4281 let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge')
4411 4282
4443 " refresh the listing 4314 " refresh the listing
4444 " call Decho("refresh the listing",'~'.expand("<slnum>")) 4315 " call Decho("refresh the listing",'~'.expand("<slnum>"))
4445 NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) 4316 NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
4446 NetrwKeepj call s:NetrwCursor() 4317 NetrwKeepj call s:NetrwCursor()
4447 4318
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
4454 " restore position; keep cursor on the filename 4319 " restore position; keep cursor on the filename
4455 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) 4320 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))
4456 NetrwKeepj call winrestview(svpos) 4321 NetrwKeepj call winrestview(svpos)
4457 let @@= ykeep 4322 let @@= ykeep
4458 4323
4472 let svpos= winsaveview() 4337 let svpos= winsaveview()
4473 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) 4338 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))
4474 call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) 4339 call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
4475 4340
4476 " keep cursor on the filename 4341 " keep cursor on the filename
4477 if g:netrw_banner && exists("w:netrw_bannercnt") && line(".") >= w:netrw_bannercnt 4342 let fname= s:NetrwGetWord()
4478 let fname= s:NetrwGetWord() 4343 sil NetrwKeepj $
4479 sil NetrwKeepj $ 4344 let result= search('\%(^\%(|\+\s\)\=\|\s\{2,}\)\zs'.escape(fname,'.\[]*$^').'\%(\s\{2,}\|$\)','bc')
4480 let result= search('\%(^\%(|\+\s\)\=\|\s\{2,}\)\zs'.escape(fname,'.\[]*$^').'\%(\s\{2,}\|$\)','bc') 4345 " call Decho("search result=".result." w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'N/A'),'~'.expand("<slnum>"))
4481 " " call Decho("search result=".result." w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'N/A'),'~'.expand("<slnum>")) 4346 if result <= 0 && exists("w:netrw_bannercnt")
4482 if result <= 0 && exists("w:netrw_bannercnt") 4347 exe "NetrwKeepj ".w:netrw_bannercnt
4483 exe "NetrwKeepj ".w:netrw_bannercnt
4484 endif
4485 endif 4348 endif
4486 let @@= ykeep 4349 let @@= ykeep
4487 " call Dret("s:NetrwBannerCtrl : g:netrw_banner=".g:netrw_banner) 4350 " call Dret("s:NetrwBannerCtrl : g:netrw_banner=".g:netrw_banner)
4488 endfun 4351 endfun
4489 4352
4641 " Don't try to change-directory: this can happen, for example, when netrw#ErrorMsg has been called 4504 " Don't try to change-directory: this can happen, for example, when netrw#ErrorMsg has been called
4642 " and the current window is the NetrwMessage window. 4505 " and the current window is the NetrwMessage window.
4643 let @@= ykeep 4506 let @@= ykeep
4644 " call Decho("b:netrw_curdir doesn't exist!",'~'.expand("<slnum>")) 4507 " call Decho("b:netrw_curdir doesn't exist!",'~'.expand("<slnum>"))
4645 " call Decho("getcwd<".getcwd().">",'~'.expand("<slnum>")) 4508 " call Decho("getcwd<".getcwd().">",'~'.expand("<slnum>"))
4646 " call Dredir("ls!","s:NetrwBrowseChgDir") 4509 " call Dredir("ls!")
4647 " call Dret("s:NetrwBrowseChgDir") 4510 " call Dret("s:NetrwBrowseChgDir")
4648 return 4511 return
4649 endif 4512 endif
4650 " call Decho("b:netrw_curdir<".b:netrw_curdir.">") 4513 " call Decho("b:netrw_curdir<".b:netrw_curdir.">")
4651 4514
4652 " NetrwBrowseChgDir: save options and initialize {{{3 4515 " NetrwBrowseChgDir: save options and initialize {{{3
4653 " call Decho("saving options",'~'.expand("<slnum>")) 4516 " call Decho("saving options",'~'.expand("<slnum>"))
4654 call s:SavePosn(s:netrw_posn) 4517 call s:SavePosn(s:netrw_nbcd)
4655 NetrwKeepj call s:NetrwOptionSave("s:") 4518 NetrwKeepj call s:NetrwOptionSave("s:")
4656 NetrwKeepj call s:NetrwSafeOptions() 4519 NetrwKeepj call s:NetrwSafeOptions()
4657 if (has("win32") || has("win95") || has("win64") || has("win16")) 4520 if (has("win32") || has("win95") || has("win64") || has("win16"))
4658 let dirname = substitute(b:netrw_curdir,'\\','/','ge') 4521 let dirname = substitute(b:netrw_curdir,'\\','/','ge')
4659 else 4522 else
4674 let g:netrw_quickhelp= (g:netrw_quickhelp + 1)%len(s:QuickHelp) 4537 let g:netrw_quickhelp= (g:netrw_quickhelp + 1)%len(s:QuickHelp)
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>")) 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>"))
4676 setl ma noro nowrap 4539 setl ma noro nowrap
4677 NetrwKeepj call setline(line('.'),'" Quick Help: <F1>:help '.s:QuickHelp[g:netrw_quickhelp]) 4540 NetrwKeepj call setline(line('.'),'" Quick Help: <F1>:help '.s:QuickHelp[g:netrw_quickhelp])
4678 setl noma nomod nowrap 4541 setl noma nomod nowrap
4542 call s:RestorePosn(s:netrw_nbcd)
4679 NetrwKeepj call s:NetrwOptionRestore("s:") 4543 NetrwKeepj call s:NetrwOptionRestore("s:")
4680 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) 4544 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
4681 endif 4545 endif
4682 endif 4546 endif
4683 " else " Decho 4547 " else " Decho
5003 " call Decho("doing option restore (dorestore=".dorestore.")",'~'.expand("<slnum>")) 4867 " call Decho("doing option restore (dorestore=".dorestore.")",'~'.expand("<slnum>"))
5004 NetrwKeepj call s:NetrwOptionRestore("s:") 4868 NetrwKeepj call s:NetrwOptionRestore("s:")
5005 " else " Decho 4869 " else " Decho
5006 " call Decho("skipping option restore (dorestore==0): hidden=".&hidden." bufhidden=".&bufhidden." mod=".&mod,'~'.expand("<slnum>")) 4870 " call Decho("skipping option restore (dorestore==0): hidden=".&hidden." bufhidden=".&bufhidden." mod=".&mod,'~'.expand("<slnum>"))
5007 endif 4871 endif
4872 call s:RestorePosn(s:netrw_nbcd)
5008 if dolockout && dorestore 4873 if dolockout && dorestore
5009 " call Decho("restore: filewritable(dirname<".dirname.">)=".filewritable(dirname),'~'.expand("<slnum>")) 4874 " call Decho("restore: filewritable(dirname<".dirname.">)=".filewritable(dirname),'~'.expand("<slnum>"))
5010 if filewritable(dirname) 4875 if filewritable(dirname)
5011 " call Decho("restore: doing modification lockout settings: ma nomod noro",'~'.expand("<slnum>")) 4876 " call Decho("restore: doing modification lockout settings: ma nomod noro",'~'.expand("<slnum>"))
5012 " call Decho("restore: setl ma nomod noro",'~'.expand("<slnum>")) 4877 " call Decho("restore: setl ma nomod noro",'~'.expand("<slnum>"))
5017 " call Decho("restore: setl ma nomod noro",'~'.expand("<slnum>")) 4882 " call Decho("restore: setl ma nomod noro",'~'.expand("<slnum>"))
5018 setl ma ro nomod 4883 setl ma ro nomod
5019 " call Decho("restore: ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) 4884 " call Decho("restore: ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
5020 endif 4885 endif
5021 endif 4886 endif
5022 call s:RestorePosn(s:netrw_posn)
5023 let @@= ykeep 4887 let @@= ykeep
5024 4888
5025 " call Dret("s:NetrwBrowseChgDir <".dirname."> : curpos<".string(getpos(".")).">") 4889 " call Dret("s:NetrwBrowseChgDir <".dirname."> : curpos<".string(getpos(".")).">")
5026 return dirname 4890 return dirname
5027 endfun 4891 endfun
5039 " directories. 4903 " directories.
5040 " call Dret("s:NetrwBrowseUpDir : cursor not in file area") 4904 " call Dret("s:NetrwBrowseUpDir : cursor not in file area")
5041 return 4905 return
5042 endif 4906 endif
5043 4907
4908 if !exists("w:netrw_liststyle") || w:netrw_liststyle != s:TREELIST
4909 call s:SavePosn(s:netrw_nbcd)
4910 endif
4911
5044 norm! 0 4912 norm! 0
5045 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") 4913 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict")
5046 " call Decho("case: treestyle",'~'.expand("<slnum>")) 4914 " call Decho("case: treestyle",'~'.expand("<slnum>"))
5047 let curline= getline(".") 4915 let curline= getline(".")
5048 let swwline= winline() - 1 4916 let swwline= winline() - 1
5049 if exists("w:netrw_treetop") 4917 if exists("w:netrw_treetop")
5050 let b:netrw_curdir= w:netrw_treetop 4918 let b:netrw_curdir= w:netrw_treetop
5051 elseif exists("b:netrw_curdir") 4919 endif
5052 let w:netrw_treetop= b:netrw_curdir 4920 let curdir= 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)
5059 if a:islocal 4921 if a:islocal
5060 call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,'../')) 4922 call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,'../'))
5061 else 4923 else
5062 call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,'../')) 4924 call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,'../'))
5063 endif 4925 endif
5064 " call Decho("looking for curfile<^".s:treedepthstring.curfile.">",'~'.expand("<slnum>")) 4926 if !search('\c^'.s:treedepthstring.curline,'cw')
5065 " call Decho("having curpath<".curpath.">",'~'.expand("<slnum>")) 4927 if !search('\c^'.curline,'cw')
5066 if w:netrw_treetop == '/' 4928 sil! NetrwKeepj 1
5067 keepj call search('^\M'.curfile,"w") 4929 endif
5068 elseif curfile == '../' 4930 endif
5069 keepj call search('^\M'.curfile,"wb") 4931 exe "sil! NetrwKeepj norm! z\<cr>"
5070 else 4932 while winline() < swwline
5071 " call Decho("search(^\\M".s:treedepthstring.curfile.") backwards")) 4933 let curwinline= winline()
5072 while 1 4934 exe "sil! NetrwKeepj norm! \<c-y>"
5073 keepj call search('^\M'.s:treedepthstring.curfile,"wb") 4935 if curwinline == winline()
5074 let treepath= s:NetrwTreePath(w:netrw_treetop) 4936 break
5075 " call Decho("..current treepath<".treepath.">",'~'.expand("<slnum>")) 4937 endif
5076 if treepath == curpath 4938 endwhile
5077 break
5078 endif
5079 endwhile
5080 endif
5081
5082 else 4939 else
5083 " call Decho("case: not treestyle",'~'.expand("<slnum>")) 4940 " call Decho("case: not treestyle",'~'.expand("<slnum>"))
5084 call s:SavePosn(s:netrw_posn)
5085 if exists("b:netrw_curdir") 4941 if exists("b:netrw_curdir")
5086 let curdir= b:netrw_curdir 4942 let curdir= b:netrw_curdir
5087 else 4943 else
5088 let curdir= expand(getcwd()) 4944 let curdir= expand(getcwd())
5089 endif 4945 endif
5090 if a:islocal 4946 if a:islocal
5091 call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,'../')) 4947 call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,'../'))
5092 else 4948 else
5093 call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,'../')) 4949 call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,'../'))
5094 endif 4950 endif
5095 call s:RestorePosn(s:netrw_posn) 4951 if has_key(s:netrw_nbcd,bufnr("%"))
5096 let curdir= substitute(curdir,'^.*[\/]','','') 4952 call s:RestorePosn(s:netrw_nbcd)
5097 call search('\<'.curdir.'/','wc') 4953 elseif exists("w:netrw_bannercnt")
5098 endif 4954 " call Decho("moving to line#".w:netrw_bannercnt,'~'.expand("<slnum>"))
4955 exe w:netrw_bannercnt
4956 else
4957 1
4958 endif
4959 endif
4960 let curdir= substitute(curdir,'^.*[\/]','','')
4961 call search('\<'.curdir.'\>','wc')
5099 " call Dret("s:NetrwBrowseUpDir") 4962 " call Dret("s:NetrwBrowseUpDir")
5100 endfun 4963 endfun
5101 4964
5102 " --------------------------------------------------------------------- 4965 " ---------------------------------------------------------------------
5103 " netrw#BrowseX: (implements "x") executes a special "viewer" script or program for the {{{2 4966 " netrw#BrowseX: (implements "x") executes a special "viewer" script or program for the {{{2
5104 " given filename; typically this means given their extension. 4967 " given filename; typically this means given their extension.
5105 " 0=local, 1=remote 4968 " 0=local, 1=remote
5106 fun! netrw#BrowseX(fname,remote) 4969 fun! netrw#BrowseX(fname,remote)
5107 " call Dfunc("netrw#BrowseX(fname<".a:fname."> remote=".a:remote.")") 4970 " call Dfunc("netrw#BrowseX(fname<".a:fname."> remote=".a:remote.")")
5108 4971
5109 " if its really just a local directory, then do a "gf" instead 4972 " if its really just a directory, then do a "gf" instead
5110 if (a:remote == 0 && isdirectory(a:fname)) || (a:remote == 1 && a:fname =~ '/$' && a:fname !~ '^https\=:') 4973 if (a:remote == 0 && isdirectory(a:fname)) || (a:remote == 1 && fname =~ '/$' && fname !~ '^https\=:')
5111 norm! gf 4974 norm! gf
5112 " call Dret("(netrw#BrowseX) did gf instead") 4975 " call Dret("netrw#BrowseX : did gf instead")
5113 endif 4976 endif
4977
5114 4978
5115 let ykeep = @@ 4979 let ykeep = @@
5116 let screenposn = winsaveview() 4980 let screenposn = winsaveview()
5117 " call Decho("(netrw#BrowseX) saving posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>")) 4981 " call Decho("saving posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>"))
5118 4982
5119 " need to save and restore aw setting as gx can invoke this function from non-netrw buffers 4983 " need to save and restore aw setting as gx can invoke this function from non-netrw buffers
5120 let awkeep = &aw 4984 let awkeep = &aw
5121 set noaw 4985 set noaw
5122 4986
5123 " special core dump handler 4987 " special core dump handler
5124 if a:fname =~ '/core\(\.\d\+\)\=$' 4988 if a:fname =~ '/core\(\.\d\+\)\=$'
5125 if exists("g:Netrw_corehandler") 4989 if exists("g:Netrw_corehandler")
5126 if type(g:Netrw_corehandler) == 2 4990 if type(g:Netrw_corehandler) == 2
5127 " g:Netrw_corehandler is a function reference (see :help Funcref) 4991 " g:Netrw_corehandler is a function reference (see :help Funcref)
5128 " call Decho("(netrw#BrowseX) g:Netrw_corehandler is a funcref",'~'.expand("<slnum>")) 4992 " call Decho("g:Netrw_corehandler is a funcref",'~'.expand("<slnum>"))
5129 call g:Netrw_corehandler(s:NetrwFile(a:fname)) 4993 call g:Netrw_corehandler(s:NetrwFile(a:fname))
5130 elseif type(g:Netrw_corehandler) == 3 4994 elseif type(g:Netrw_corehandler) == 3
5131 " g:Netrw_corehandler is a List of function references (see :help Funcref) 4995 " g:Netrw_corehandler is a List of function references (see :help Funcref)
5132 " call Decho("(netrw#BrowseX) g:Netrw_corehandler is a List",'~'.expand("<slnum>")) 4996 " call Decho("g:Netrw_corehandler is a List",'~'.expand("<slnum>"))
5133 for Fncref in g:Netrw_corehandler 4997 for Fncref in g:Netrw_corehandler
5134 if type(FncRef) == 2 4998 if type(FncRef) == 2
5135 call FncRef(a:fname) 4999 call FncRef(a:fname)
5136 endif 5000 endif
5137 endfor 5001 endfor
5138 endif 5002 endif
5139 " call Decho("(netrw#BrowseX) restoring posn: screenposn<".string(screenposn).">,'~'.expand("<slnum>"))" 5003 " call Decho("restoring posn to screenposn<".string(screenposn).">,'~'.expand("<slnum>"))"
5140 call winrestview(screenposn) 5004 call winrestview(screenposn)
5141 let @@= ykeep 5005 let @@= ykeep
5142 let &aw= awkeep 5006 let &aw= awkeep
5143 " call Dret("netrw#BrowseX : coredump handler invoked") 5007 " call Dret("netrw#BrowseX : coredump handler invoked")
5144 return 5008 return
5149 " (lower case the extension, make a local copy of a remote file) 5013 " (lower case the extension, make a local copy of a remote file)
5150 let exten= substitute(a:fname,'.*\.\(.\{-}\)','\1','e') 5014 let exten= substitute(a:fname,'.*\.\(.\{-}\)','\1','e')
5151 if has("win32") || has("win95") || has("win64") || has("win16") 5015 if has("win32") || has("win95") || has("win64") || has("win16")
5152 let exten= substitute(exten,'^.*$','\L&\E','') 5016 let exten= substitute(exten,'^.*$','\L&\E','')
5153 endif 5017 endif
5154 if exten =~ "[\\/]" 5018 " call Decho("exten<".exten.">",'~'.expand("<slnum>"))
5155 let exten= ""
5156 endif
5157 " call Decho("(netrw#BrowseX) exten<".exten.">",'~'.expand("<slnum>"))
5158 5019
5159 if a:remote == 1 5020 if a:remote == 1
5160 " create a local copy 5021 " create a local copy
5161 " call Decho("(netrw#BrowseX) remote: a:remote=".a:remote.": create a local copy of <".a:fname.">",'~'.expand("<slnum>")) 5022 " call Decho("remote: a:remote=".a:remote.": create a local copy of <".a:fname.">",'~'.expand("<slnum>"))
5162 setl bh=delete 5023 setl bh=delete
5163 call netrw#NetRead(3,a:fname) 5024 call netrw#NetRead(3,a:fname)
5164 " attempt to rename tempfile 5025 " attempt to rename tempfile
5165 let basename= substitute(a:fname,'^\(.*\)/\(.*\)\.\([^.]*\)$','\2','') 5026 let basename= substitute(a:fname,'^\(.*\)/\(.*\)\.\([^.]*\)$','\2','')
5166 let newname = substitute(s:netrw_tmpfile,'^\(.*\)/\(.*\)\.\([^.]*\)$','\1/'.basename.'.\3','') 5027 let newname = substitute(s:netrw_tmpfile,'^\(.*\)/\(.*\)\.\([^.]*\)$','\1/'.basename.'.\3','')
5167 " call Decho("(netrw#BrowseX) basename<".basename.">",'~'.expand("<slnum>")) 5028 " call Decho("basename<".basename.">",'~'.expand("<slnum>"))
5168 " call Decho("(netrw#BrowseX) newname <".newname.">",'~'.expand("<slnum>")) 5029 " call Decho("newname <".newname.">",'~'.expand("<slnum>"))
5169 if s:netrw_tmpfile != newname && newname != "" 5030 if rename(s:netrw_tmpfile,newname) == 0
5170 if rename(s:netrw_tmpfile,newname) == 0 5031 " renaming succeeded
5171 " renaming succeeded 5032 let fname= newname
5172 " call Decho("(netrw#BrowseX) renaming succeeded (tmpfile<".s:netrw_tmpfile."> to <".newname.">)") 5033 else
5173 let fname= newname 5034 " renaming failed
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
5180 let fname= s:netrw_tmpfile 5035 let fname= s:netrw_tmpfile
5181 endif 5036 endif
5182 else 5037 else
5183 " call Decho("(netrw#BrowseX) local: a:remote=".a:remote.": handling local copy of <".a:fname.">",'~'.expand("<slnum>")) 5038 " call Decho("local: a:remote=".a:remote.": handling local copy of <".a:fname.">",'~'.expand("<slnum>"))
5184 let fname= a:fname 5039 let fname= a:fname
5185 " special ~ handler for local 5040 " special ~ handler for local
5186 if fname =~ '^\~' && expand("$HOME") != "" 5041 if fname =~ '^\~' && expand("$HOME") != ""
5187 " call Decho('invoking special ~ handler','~'.expand("<slnum>")) 5042 " call Decho('invoking special ~ handler','~'.expand("<slnum>"))
5188 let fname= s:NetrwFile(substitute(fname,'^\~',expand("$HOME"),'')) 5043 let fname= s:NetrwFile(substitute(fname,'^\~',expand("$HOME"),''))
5189 endif 5044 endif
5190 endif 5045 endif
5191 " call Decho("(netrw#BrowseX) fname<".fname.">",'~'.expand("<slnum>")) 5046 " call Decho("fname<".fname.">",'~'.expand("<slnum>"))
5192 " call Decho("(netrw#BrowseX) exten<".exten."> "."netrwFileHandlers#NFH_".exten."():exists=".exists("*netrwFileHandlers#NFH_".exten),'~'.expand("<slnum>")) 5047 " call Decho("exten<".exten."> "."netrwFileHandlers#NFH_".exten."():exists=".exists("*netrwFileHandlers#NFH_".exten),'~'.expand("<slnum>"))
5193 5048
5194 " set up redirection (avoids browser messages) 5049 " set up redirection (avoids browser messages)
5195 " by default, g:netrw_suppress_gx_mesg is true 5050 " by default, g:netrw_suppress_gx_mesg is true
5196 if g:netrw_suppress_gx_mesg 5051 if g:netrw_suppress_gx_mesg
5197 if &srr =~ "%s" 5052 if &srr =~ "%s"
5204 let redir= &srr . "nul" 5059 let redir= &srr . "nul"
5205 else 5060 else
5206 let redir= &srr . "/dev/null" 5061 let redir= &srr . "/dev/null"
5207 endif 5062 endif
5208 endif 5063 endif
5209 " call Decho("(netrw#BrowseX) set up redirection: redir{".redir."} srr{".&srr."}",'~'.expand("<slnum>")) 5064 " call Decho("set up redirection: redir{".redir."} srr{".&srr."}",'~'.expand("<slnum>"))
5210 5065
5211 " extract any viewing options. Assumes that they're set apart by quotes. 5066 " extract any viewing options. Assumes that they're set apart by quotes.
5212 " call Decho("(netrw#BrowseX) extract any viewing options",'~'.expand("<slnum>")) 5067 " call Decho("extract any viewing options",'~'.expand("<slnum>"))
5213 if exists("g:netrw_browsex_viewer") 5068 if exists("g:netrw_browsex_viewer")
5214 " call Decho("(netrw#BrowseX) g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">",'~'.expand("<slnum>")) 5069 " call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">",'~'.expand("<slnum>"))
5215 if g:netrw_browsex_viewer =~ '\s' 5070 if g:netrw_browsex_viewer =~ '\s'
5216 let viewer = substitute(g:netrw_browsex_viewer,'\s.*$','','') 5071 let viewer = substitute(g:netrw_browsex_viewer,'\s.*$','','')
5217 let viewopt = substitute(g:netrw_browsex_viewer,'^\S\+\s*','','')." " 5072 let viewopt = substitute(g:netrw_browsex_viewer,'^\S\+\s*','','')." "
5218 let oviewer = '' 5073 let oviewer = ''
5219 let cnt = 1 5074 let cnt = 1
5220 while !executable(viewer) && viewer != oviewer 5075 while !executable(viewer) && viewer != oviewer
5221 let viewer = substitute(g:netrw_browsex_viewer,'^\(\(^\S\+\s\+\)\{'.cnt.'}\S\+\)\(.*\)$','\1','') 5076 let viewer = substitute(g:netrw_browsex_viewer,'^\(\(^\S\+\s\+\)\{'.cnt.'}\S\+\)\(.*\)$','\1','')
5222 let viewopt = substitute(g:netrw_browsex_viewer,'^\(\(^\S\+\s\+\)\{'.cnt.'}\S\+\)\(.*\)$','\3','')." " 5077 let viewopt = substitute(g:netrw_browsex_viewer,'^\(\(^\S\+\s\+\)\{'.cnt.'}\S\+\)\(.*\)$','\3','')." "
5223 let cnt = cnt + 1 5078 let cnt = cnt + 1
5224 let oviewer = viewer 5079 let oviewer = viewer
5225 " call Decho("(netrw#BrowseX) !exe: viewer<".viewer."> viewopt<".viewopt.">",'~'.expand("<slnum>")) 5080 " call Decho("!exe: viewer<".viewer."> viewopt<".viewopt.">",'~'.expand("<slnum>"))
5226 endwhile 5081 endwhile
5227 else 5082 else
5228 let viewer = g:netrw_browsex_viewer 5083 let viewer = g:netrw_browsex_viewer
5229 let viewopt = "" 5084 let viewopt = ""
5230 endif 5085 endif
5231 " call Decho("(netrw#BrowseX) viewer<".viewer."> viewopt<".viewopt.">",'~'.expand("<slnum>")) 5086 " call Decho("viewer<".viewer."> viewopt<".viewopt.">",'~'.expand("<slnum>"))
5232 endif 5087 endif
5233 5088
5234 " execute the file handler 5089 " execute the file handler
5235 " call Decho("(netrw#BrowseX) execute the file handler (if any)",'~'.expand("<slnum>")) 5090 " call Decho("execute the file handler (if any)",'~'.expand("<slnum>"))
5236 if exists("g:netrw_browsex_viewer") && g:netrw_browsex_viewer == '-' 5091 if exists("g:netrw_browsex_viewer") && g:netrw_browsex_viewer == '-'
5237 " call Decho("(netrw#BrowseX) g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">",'~'.expand("<slnum>")) 5092 " call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">",'~'.expand("<slnum>"))
5238 let ret= netrwFileHandlers#Invoke(exten,fname) 5093 let ret= netrwFileHandlers#Invoke(exten,fname)
5239 5094
5240 elseif exists("g:netrw_browsex_viewer") && executable(viewer) 5095 elseif exists("g:netrw_browsex_viewer") && executable(viewer)
5241 " call Decho("(netrw#BrowseX) g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">",'~'.expand("<slnum>")) 5096 " call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">",'~'.expand("<slnum>"))
5242 call s:NetrwExe("sil !".viewer." ".viewopt.s:ShellEscape(fname,1).redir) 5097 call s:NetrwExe("sil !".viewer." ".viewopt.s:ShellEscape(fname,1).redir)
5243 let ret= v:shell_error 5098 let ret= v:shell_error
5244 5099
5245 elseif has("win32") || has("win64") 5100 elseif has("win32") || has("win64")
5246 " call Decho("(netrw#BrowseX) win".(has("win32")? "32" : "64")",'~'.expand("<slnum>")) 5101 " call Decho("windows",'~'.expand("<slnum>"))
5247 if executable("start") 5102 if executable("start")
5248 call s:NetrwExe('sil! !start rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(fname,1)) 5103 call s:NetrwExe('sil! !start rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(fname,1))
5249 elseif executable("rundll32") 5104 elseif executable("rundll32")
5250 call s:NetrwExe('sil! !rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(fname,1)) 5105 call s:NetrwExe('sil! !rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(fname,1))
5251 else 5106 else
5252 call netrw#ErrorMsg(s:WARNING,"rundll32 not on path",74) 5107 call netrw#ErrorMsg(s:WARNING,"rundll32 not on path",74)
5253 endif 5108 endif
5254 " call inputsave()|call input("Press <cr> to continue")|call inputrestore() 5109 call inputsave()|call input("Press <cr> to continue")|call inputrestore()
5255 let ret= v:shell_error 5110 let ret= v:shell_error
5256 5111
5257 elseif has("win32unix") 5112 elseif has("win32unix")
5258 let winfname= 'c:\cygwin'.substitute(fname,'/','\\','g') 5113 let winfname= 'c:\cygwin'.substitute(fname,'/','\\','g')
5259 " call Decho("(netrw#BrowseX) cygwin: winfname<".s:ShellEscape(winfname,1).">",'~'.expand("<slnum>")) 5114 " call Decho("cygwin: winfname<".s:ShellEscape(winfname,1).">",'~'.expand("<slnum>"))
5260 if executable("start") 5115 if executable("start")
5261 call s:NetrwExe('sil !start rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(winfname,1)) 5116 call s:NetrwExe('sil !start rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(winfname,1))
5262 elseif executable("rundll32") 5117 elseif executable("rundll32")
5263 call s:NetrwExe('sil !rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(winfname,1)) 5118 call s:NetrwExe('sil !rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(winfname,1))
5264 elseif executable("cygstart") 5119 elseif executable("cygstart")
5265 call s:NetrwExe('sil !cygstart '.s:ShellEscape(fname,1)) 5120 call s:NetrwExe('sil !cygstart '.s:ShellEscape(fname,1))
5266 else 5121 else
5267 call netrw#ErrorMsg(s:WARNING,"rundll32 not on path",74) 5122 call netrw#ErrorMsg(s:WARNING,"rundll32 not on path",74)
5268 endif 5123 endif
5269 " call inputsave()|call input("Press <cr> to continue")|call inputrestore() 5124 call inputsave()|call input("Press <cr> to continue")|call inputrestore()
5270 let ret= v:shell_error 5125 let ret= v:shell_error
5271 5126
5272 elseif has("unix") && executable("kfmclient") && s:CheckIfKde() 5127 elseif has("unix") && executable("kfmclient") && s:CheckIfKde()
5273 " call Decho("(netrw#BrowseX) unix and kfmclient",'~'.expand("<slnum>")) 5128 " call Decho("unix and kfmclient",'~'.expand("<slnum>"))
5274 call s:NetrwExe("sil !kfmclient exec ".s:ShellEscape(fname,1)." ".redir) 5129 call s:NetrwExe("sil !kfmclient exec ".s:ShellEscape(fname,1)." ".redir)
5275 let ret= v:shell_error 5130 let ret= v:shell_error
5276 5131
5277 elseif has("unix") && executable("exo-open") && executable("xdg-open") && executable("setsid") 5132 elseif has("unix") && executable("exo-open") && executable("xdg-open") && executable("setsid")
5278 " call Decho("(netrw#BrowseX) unix, exo-open, xdg-open",'~'.expand("<slnum>")) 5133 " call Decho("unix, exo-open, xdg-open",'~'.expand("<slnum>"))
5279 call s:NetrwExe("sil !setsid xdg-open ".s:ShellEscape(fname,1).redir) 5134 call s:NetrwExe("sil !setsid xdg-open ".s:ShellEscape(fname,1).redir)
5280 let ret= v:shell_error 5135 let ret= v:shell_error
5281 5136
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
5287 elseif has("unix") && executable("xdg-open") 5137 elseif has("unix") && executable("xdg-open")
5288 " call Decho("(netrw#BrowseX) unix and xdg-open",'~'.expand("<slnum>")) 5138 " call Decho("unix and xdg-open",'~'.expand("<slnum>"))
5289 call s:NetrwExe("sil !xdg-open ".s:ShellEscape(fname,1).redir) 5139 call s:NetrwExe("sil !xdg-open ".s:ShellEscape(fname,1).redir)
5290 let ret= v:shell_error 5140 let ret= v:shell_error
5291 5141
5292 elseif has("macunix") && executable("open") 5142 elseif has("macunix") && executable("open")
5293 " call Decho("(netrw#BrowseX) macunix and open",'~'.expand("<slnum>")) 5143 " call Decho("macunix and open",'~'.expand("<slnum>"))
5294 call s:NetrwExe("sil !open ".s:ShellEscape(fname,1)." ".redir) 5144 call s:NetrwExe("sil !open ".s:ShellEscape(fname,1)." ".redir)
5295 let ret= v:shell_error 5145 let ret= v:shell_error
5296 5146
5297 else 5147 else
5298 " netrwFileHandlers#Invoke() always returns 0 5148 " netrwFileHandlers#Invoke() always returns 0
5323 setl noswf 5173 setl noswf
5324 endif 5174 endif
5325 exe "sil! NetrwKeepj norm! \<c-o>" 5175 exe "sil! NetrwKeepj norm! \<c-o>"
5326 " redraw! 5176 " redraw!
5327 endif 5177 endif
5328 " call Decho("(netrw#BrowseX) restoring posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>")) 5178 " call Decho("restoring posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>"))
5329 call winrestview(screenposn) 5179 call winrestview(screenposn)
5330 let @@ = ykeep 5180 let @@ = ykeep
5331 let &aw= awkeep 5181 let &aw= awkeep
5332 5182
5333 " call Dret("netrw#BrowseX") 5183 " 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
5349 endfun 5184 endfun
5350 5185
5351 " --------------------------------------------------------------------- 5186 " ---------------------------------------------------------------------
5352 " netrw#BrowseXVis: used by gx in visual mode to select a file for browsing {{{2 5187 " netrw#BrowseXVis: used by gx in visual mode to select a file for browsing {{{2
5353 fun! netrw#BrowseXVis() 5188 fun! netrw#BrowseXVis()
5354 " call Dfunc("netrw#BrowseXVis()") 5189 " call Dfunc("netrw#BrowseXVis()")
5355 let atkeep = @@ 5190 let atkeep = @@
5356 norm! gvy 5191 norm! gvy
5357 " call Decho("@@<".@@.">",'~'.expand("<slnum>")) 5192 " call Decho("@@<".@@.">",'~'.expand("<slnum>"))
5358 call netrw#BrowseX(@@,netrw#CheckIfRemote(@@)) 5193 call netrw#BrowseX(@@,netrw#CheckIfRemote())
5359 let @@ = atkeep 5194 let @@ = atkeep
5360 " call Dret("netrw#BrowseXVis") 5195 " call Dret("netrw#BrowseXVis")
5361 endfun 5196 endfun
5362 5197
5363 " --------------------------------------------------------------------- 5198 " ---------------------------------------------------------------------
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 " ---------------------------------------------------------------------
5385 " netrw#CheckIfRemote: returns 1 if current file looks like an url, 0 else {{{2 5199 " netrw#CheckIfRemote: returns 1 if current file looks like an url, 0 else {{{2
5386 fun! netrw#CheckIfRemote(...) 5200 fun! netrw#CheckIfRemote()
5387 " call Dfunc("netrw#CheckIfRemote() a:0=".a:0) 5201 " call Dfunc("netrw#CheckIfRemote()")
5388 if a:0 > 0 5202 if expand("%") =~ '^\a\{3,}://'
5389 let curfile= a:1
5390 else
5391 let curfile= expand("%")
5392 endif
5393 " call Decho("curfile<".curfile.">")
5394 if curfile =~ '^\a\{3,}://'
5395 " call Dret("netrw#CheckIfRemote 1") 5203 " call Dret("netrw#CheckIfRemote 1")
5396 return 1 5204 return 1
5397 else 5205 else
5398 " call Dret("netrw#CheckIfRemote 0") 5206 " call Dret("netrw#CheckIfRemote 0")
5399 return 0 5207 return 0
5655 " s:NetrwHidden: invoked by "gh" {{{2 5463 " s:NetrwHidden: invoked by "gh" {{{2
5656 fun! s:NetrwHidden(islocal) 5464 fun! s:NetrwHidden(islocal)
5657 " call Dfunc("s:NetrwHidden()") 5465 " call Dfunc("s:NetrwHidden()")
5658 let ykeep= @@ 5466 let ykeep= @@
5659 " save current position 5467 " save current position
5660 let svpos = winsaveview() 5468 let svpos= winsaveview()
5661 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) 5469 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))
5662 5470
5663 if g:netrw_list_hide =~ '\(^\|,\)\\(^\\|\\s\\s\\)\\zs\\.\\S\\+' 5471 if g:netrw_list_hide =~ '\(^\|,\)\\(^\\|\\s\\s\\)\\zs\\.\\S\\+'
5664 " remove .file pattern from hiding list 5472 " remove pattern from hiding list
5665 " call Decho("remove .file pattern from hiding list",'~'.expand("<slnum>"))
5666 let g:netrw_list_hide= substitute(g:netrw_list_hide,'\(^\|,\)\\(^\\|\\s\\s\\)\\zs\\.\\S\\+','','') 5473 let g:netrw_list_hide= substitute(g:netrw_list_hide,'\(^\|,\)\\(^\\|\\s\\s\\)\\zs\\.\\S\\+','','')
5667 elseif s:Strlen(g:netrw_list_hide) >= 1 5474 elseif s:Strlen(g:netrw_list_hide) >= 1
5668 " call Decho("add .file pattern from hiding list",'~'.expand("<slnum>"))
5669 let g:netrw_list_hide= g:netrw_list_hide . ',\(^\|\s\s\)\zs\.\S\+' 5475 let g:netrw_list_hide= g:netrw_list_hide . ',\(^\|\s\s\)\zs\.\S\+'
5670 else 5476 else
5671 " call Decho("set .file pattern as hiding list",'~'.expand("<slnum>"))
5672 let g:netrw_list_hide= '\(^\|\s\s\)\zs\.\S\+' 5477 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)
5676 endif 5478 endif
5677 5479
5678 " refresh screen and return to saved position 5480 " refresh screen and return to saved position
5679 NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) 5481 NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
5680 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) 5482 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))
5685 5487
5686 " --------------------------------------------------------------------- 5488 " ---------------------------------------------------------------------
5687 " s:NetrwHome: this function determines a "home" for saving bookmarks and history {{{2 5489 " s:NetrwHome: this function determines a "home" for saving bookmarks and history {{{2
5688 fun! s:NetrwHome() 5490 fun! s:NetrwHome()
5689 if exists("g:netrw_home") 5491 if exists("g:netrw_home")
5690 let home= expand(g:netrw_home) 5492 let home= g:netrw_home
5691 else 5493 else
5692 " go to vim plugin home 5494 " go to vim plugin home
5693 for home in split(&rtp,',') + [''] 5495 for home in split(&rtp,',') + ['']
5694 if isdirectory(s:NetrwFile(home)) && filewritable(s:NetrwFile(home)) | break | endif 5496 if isdirectory(s:NetrwFile(home)) && filewritable(s:NetrwFile(home)) | break | endif
5695 let basehome= substitute(home,'[/\\]\.vim$','','') 5497 let basehome= substitute(home,'[/\\]\.vim$','','')
5706 let home= substitute(home,'/','\\','g') 5508 let home= substitute(home,'/','\\','g')
5707 endif 5509 endif
5708 endif 5510 endif
5709 " insure that the home directory exists 5511 " insure that the home directory exists
5710 if g:netrw_dirhistmax > 0 && !isdirectory(s:NetrwFile(home)) 5512 if g:netrw_dirhistmax > 0 && !isdirectory(s:NetrwFile(home))
5711 " call Decho("insure that the home<".home."> directory exists")
5712 if exists("g:netrw_mkdir") 5513 if exists("g:netrw_mkdir")
5713 " call Decho("call system(".g:netrw_mkdir." ".s:ShellEscape(s:NetrwFile(home)).")")
5714 call system(g:netrw_mkdir." ".s:ShellEscape(s:NetrwFile(home))) 5514 call system(g:netrw_mkdir." ".s:ShellEscape(s:NetrwFile(home)))
5715 else 5515 else
5716 " call Decho("mkdir(".home.")")
5717 call mkdir(home) 5516 call mkdir(home)
5718 endif 5517 endif
5719 endif 5518 endif
5720 let g:netrw_home= home 5519 let g:netrw_home= home
5721 return home 5520 return home
5723 5522
5724 " --------------------------------------------------------------------- 5523 " ---------------------------------------------------------------------
5725 " s:NetrwLeftmouse: handles the <leftmouse> when in a netrw browsing window {{{2 5524 " s:NetrwLeftmouse: handles the <leftmouse> when in a netrw browsing window {{{2
5726 fun! s:NetrwLeftmouse(islocal) 5525 fun! s:NetrwLeftmouse(islocal)
5727 if exists("s:netrwdrag") 5526 if exists("s:netrwdrag")
5728 return
5729 endif
5730 if &ft != "netrw"
5731 return 5527 return
5732 endif 5528 endif
5733 " call Dfunc("s:NetrwLeftmouse(islocal=".a:islocal.")") 5529 " call Dfunc("s:NetrwLeftmouse(islocal=".a:islocal.")")
5734 5530
5735 let ykeep= @@ 5531 let ykeep= @@
5775 endfun 5571 endfun
5776 5572
5777 " --------------------------------------------------------------------- 5573 " ---------------------------------------------------------------------
5778 " s:NetrwCLeftmouse: used to select a file/directory for a target {{{2 5574 " s:NetrwCLeftmouse: used to select a file/directory for a target {{{2
5779 fun! s:NetrwCLeftmouse(islocal) 5575 fun! s:NetrwCLeftmouse(islocal)
5780 if &ft != "netrw"
5781 return
5782 endif
5783 " call Dfunc("s:NetrwCLeftmouse(islocal=".a:islocal.")") 5576 " call Dfunc("s:NetrwCLeftmouse(islocal=".a:islocal.")")
5784 call s:NetrwMarkFileTgt(a:islocal) 5577 call s:NetrwMarkFileTgt(a:islocal)
5785 " call Dret("s:NetrwCLeftmouse") 5578 " call Dret("s:NetrwCLeftmouse")
5786 endfun 5579 endfun
5787 5580
5788 " --------------------------------------------------------------------- 5581 " ---------------------------------------------------------------------
5789 " s:NetrwServerEdit: edit file in a server gvim, usually NETRWSERVER (implements <c-r>){{{2 5582 " s:NetrwServerEdit: edit file in a server gvim, usually NETRWSERVER (implements <c-r>){{{2
5790 " a:islocal=0 : <c-r> not used, remote 5583 " a:islocal=0 : <c-r> not used, remote
5791 " a:islocal=1 : <c-r> not used, local 5584 " a:islocal=1 : <c-r> no used, local
5792 " a:islocal=2 : <c-r> used, remote 5585 " a:islocal=2 : <c-r> used, remote
5793 " a:islocal=3 : <c-r> used, local 5586 " a:islocal=3 : <c-r> used, local
5794 fun! s:NetrwServerEdit(islocal,fname) 5587 fun! s:NetrwServerEdit(islocal,fname)
5795 " call Dfunc("s:NetrwServerEdit(islocal=".a:islocal.",fname<".a:fname.">)") 5588 " call Dfunc("s:NetrwServerEdit(islocal=".a:islocal.",fname<".a:fname.">)")
5796 let islocal = a:islocal%2 " =0: remote =1: local 5589 let islocal = a:islocal%2 " =0: remote =1: local
5911 endfun 5704 endfun
5912 5705
5913 " --------------------------------------------------------------------- 5706 " ---------------------------------------------------------------------
5914 " s:NetrwSLeftmouse: marks the file under the cursor. May be dragged to select additional files {{{2 5707 " s:NetrwSLeftmouse: marks the file under the cursor. May be dragged to select additional files {{{2
5915 fun! s:NetrwSLeftmouse(islocal) 5708 fun! s:NetrwSLeftmouse(islocal)
5916 if &ft != "netrw"
5917 return
5918 endif
5919 " call Dfunc("s:NetrwSLeftmouse(islocal=".a:islocal.")") 5709 " call Dfunc("s:NetrwSLeftmouse(islocal=".a:islocal.")")
5920 5710
5921 let s:ngw= s:NetrwGetWord() 5711 let s:ngw= s:NetrwGetWord()
5922 call s:NetrwMarkFile(a:islocal,s:ngw) 5712 call s:NetrwMarkFile(a:islocal,s:ngw)
5923 5713
5966 " --------------------------------------------------------------------- 5756 " ---------------------------------------------------------------------
5967 " s:NetrwListHide: uses [range]g~...~d to delete files that match comma {{{2 5757 " s:NetrwListHide: uses [range]g~...~d to delete files that match comma {{{2
5968 " separated patterns given in g:netrw_list_hide 5758 " separated patterns given in g:netrw_list_hide
5969 fun! s:NetrwListHide() 5759 fun! s:NetrwListHide()
5970 " call Dfunc("s:NetrwListHide() g:netrw_hide=".g:netrw_hide." g:netrw_list_hide<".g:netrw_list_hide.">") 5760 " 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,'$')))
5972 let ykeep= @@ 5761 let ykeep= @@
5973 5762
5974 " find a character not in the "hide" string to use as a separator for :g and :v commands 5763 " find a character not in the "hide" string to use as a separator for :g and :v commands
5975 " How-it-works: take the hiding command, convert it into a range. Duplicate 5764 " How-it-works: take the hiding command, convert it into a range. Duplicate
5976 " characters don't matter. Remove all such characters from the '/~...90' 5765 " characters don't matter. Remove all such characters from the '/~...90'
5985 let listhide = substitute(listhide,'^.\{-},\(.*\)$','\1','e') 5774 let listhide = substitute(listhide,'^.\{-},\(.*\)$','\1','e')
5986 else 5775 else
5987 let hide = listhide 5776 let hide = listhide
5988 let listhide = "" 5777 let listhide = ""
5989 endif 5778 endif
5990 " call Decho("hide<".hide."> listhide<".listhide.'>','~'.expand("<slnum>"))
5991 5779
5992 " Prune the list by hiding any files which match 5780 " Prune the list by hiding any files which match
5993 if g:netrw_hide == 1 5781 if g:netrw_hide == 1
5994 " call Decho("..hiding<".hide.">",'~'.expand("<slnum>")) 5782 " call Decho("hiding<".hide."> listhide<".listhide.">",'~'.expand("<slnum>"))
5995 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'d' 5783 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'d'
5996 elseif g:netrw_hide == 2 5784 elseif g:netrw_hide == 2
5997 " call Decho("..showing<".hide.">",'~'.expand("<slnum>")) 5785 " call Decho("showing<".hide."> listhide<".listhide.">",'~'.expand("<slnum>"))
5998 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'s@^@ /-KEEP-/ @' 5786 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'s@^@ /-KEEP-/ @'
5999 endif 5787 endif
6000 " call Decho("..result: ".string(getline(w:netrw_bannercnt,'$')),'~'.expand("<slnum>"))
6001 endwhile 5788 endwhile
6002 if g:netrw_hide == 2 5789 if g:netrw_hide == 2
6003 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$v@^ /-KEEP-/ @d' 5790 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$v@^ /-KEEP-/ @d'
6004 " call Decho("..v KEEP: ".string(getline(w:netrw_bannercnt,'$')),'~'.expand("<slnum>"))
6005 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$s@^\%( /-KEEP-/ \)\+@@e' 5791 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$s@^\%( /-KEEP-/ \)\+@@e'
6006 " call Decho("..g KEEP: ".string(getline(w:netrw_bannercnt,'$')),'~'.expand("<slnum>"))
6007 endif 5792 endif
6008 5793
6009 " remove any blank lines that have somehow remained. 5794 " remove any blank lines that have somehow remained.
6010 " This seems to happen under Windows. 5795 " This seems to happen under Windows.
6011 exe 'sil! NetrwKeepj 1,$g@^\s*$@d' 5796 exe 'sil! NetrwKeepj 1,$g@^\s*$@d'
6067 else 5852 else
6068 call mkdir(fullnewdir,"p") 5853 call mkdir(fullnewdir,"p")
6069 endif 5854 endif
6070 else 5855 else
6071 let netrw_origdir= s:NetrwGetcwd(1) 5856 let netrw_origdir= s:NetrwGetcwd(1)
6072 if s:NetrwLcd(b:netrw_curdir) 5857 call s:NetrwLcd(b:netrw_curdir)
6073 " call Dret("s:NetrwMakeDir : lcd failure")
6074 return
6075 endif
6076 " call Decho("netrw_origdir<".netrw_origdir.">: lcd b:netrw_curdir<".fnameescape(b:netrw_curdir).">",'~'.expand("<slnum>")) 5858 " call Decho("netrw_origdir<".netrw_origdir.">: lcd b:netrw_curdir<".fnameescape(b:netrw_curdir).">",'~'.expand("<slnum>"))
6077 call s:NetrwExe("sil! !".g:netrw_localmkdir.g:netrw_localmkdiropt.' '.s:ShellEscape(newdirname,1)) 5859 call s:NetrwExe("sil! !".g:netrw_localmkdir.' '.s:ShellEscape(newdirname,1))
6078 if v:shell_error != 0 5860 if v:shell_error != 0
6079 let @@= ykeep 5861 let @@= ykeep
6080 call netrw#ErrorMsg(s:ERROR,"consider setting g:netrw_localmkdir<".g:netrw_localmkdir."> to something that works",80) 5862 call netrw#ErrorMsg(s:ERROR,"consider setting g:netrw_localmkdir<".g:netrw_localmkdir."> to something that works",80)
6081 " call Dret("s:NetrwMakeDir : failed: sil! !".g:netrw_localmkdir.' '.s:ShellEscape(newdirname,1)) 5863 " call Dret("s:NetrwMakeDir : failed: sil! !".g:netrw_localmkdir.' '.s:ShellEscape(newdirname,1))
6082 return 5864 return
6083 endif 5865 endif
6084 if !g:netrw_keepdir 5866 if !g:netrw_keepdir
6085 " call Decho("restoring netrw_origdir since g:netrw_keepdir=".g:netrw_keepdir,'~'.expand("<slnum>")) 5867 " call Decho("restoring netrw_origdir since g:netrw_keepdir=".g:netrw_keepdir,'~'.expand("<slnum>"))
6086 if s:NetrwLcd(netrw_origdir) 5868 call s:NetrwLcd(netrw_origdir)
6087 " call Dret("s:NetrwBrowse : lcd failure")
6088 return
6089 endif
6090 endif 5869 endif
6091 endif 5870 endif
6092 5871
6093 if v:shell_error == 0 5872 if v:shell_error == 0
6094 " refresh listing 5873 " refresh listing
6196 " --------------------------------------------------------------------- 5975 " ---------------------------------------------------------------------
6197 " s:NetrwMaps: {{{2 5976 " s:NetrwMaps: {{{2
6198 fun! s:NetrwMaps(islocal) 5977 fun! s:NetrwMaps(islocal)
6199 " call Dfunc("s:NetrwMaps(islocal=".a:islocal.") b:netrw_curdir<".b:netrw_curdir.">") 5978 " call Dfunc("s:NetrwMaps(islocal=".a:islocal.") b:netrw_curdir<".b:netrw_curdir.">")
6200 5979
6201 " mouse <Plug> maps: {{{3
6202 if g:netrw_mousemaps && g:netrw_retmap 5980 if g:netrw_mousemaps && g:netrw_retmap
6203 " call Decho("set up Rexplore 2-leftmouse",'~'.expand("<slnum>")) 5981 " call Decho("set up Rexplore 2-leftmouse",'~'.expand("<slnum>"))
6204 if !hasmapto("<Plug>NetrwReturn") 5982 if !hasmapto("<Plug>NetrwReturn")
6205 if maparg("<2-leftmouse>","n") == "" || maparg("<2-leftmouse>","n") =~ '^-$' 5983 if maparg("<2-leftmouse>","n") == "" || maparg("<2-leftmouse>","n") =~ '^-$'
6206 " call Decho("making map for 2-leftmouse",'~'.expand("<slnum>")) 5984 " call Decho("making map for 2-leftmouse",'~'.expand("<slnum>"))
6212 endif 5990 endif
6213 nno <silent> <Plug>NetrwReturn :Rexplore<cr> 5991 nno <silent> <Plug>NetrwReturn :Rexplore<cr>
6214 " call Decho("made <Plug>NetrwReturn map",'~'.expand("<slnum>")) 5992 " call Decho("made <Plug>NetrwReturn map",'~'.expand("<slnum>"))
6215 endif 5993 endif
6216 5994
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
6279 if a:islocal 5995 if a:islocal
6280 " call Decho("make local maps",'~'.expand("<slnum>")) 5996 " call Decho("make local maps",'~'.expand("<slnum>"))
6281 " local normal-mode maps {{{3 5997 " local normal-mode maps
6282 nnoremap <buffer> <silent> <Plug>NetrwHide_a :<c-u>call <SID>NetrwHide(1)<cr> 5998 nnoremap <buffer> <silent> <nowait> a :<c-u>call <SID>NetrwHide(1)<cr>
6283 nnoremap <buffer> <silent> <Plug>NetrwBrowseUpDir :<c-u>call <SID>NetrwBrowseUpDir(1)<cr> 5999 nnoremap <buffer> <silent> <nowait> - :<c-u>call <SID>NetrwBrowseUpDir(1)<cr>
6284 nnoremap <buffer> <silent> <Plug>NetrwOpenFile :<c-u>call <SID>NetrwOpenFile(1)<cr> 6000 nnoremap <buffer> <silent> <nowait> % :<c-u>call <SID>NetrwOpenFile(1)<cr>
6285 nnoremap <buffer> <silent> <Plug>NetrwBadd_cb :<c-u>call <SID>NetrwBadd(1,0)<cr> 6001 nnoremap <buffer> <silent> <nowait> c :<c-u>call <SID>NetrwLcd(b:netrw_curdir)<cr>
6286 nnoremap <buffer> <silent> <Plug>NetrwBadd_cB :<c-u>call <SID>NetrwBadd(1,1)<cr> 6002 nnoremap <buffer> <silent> <nowait> C :<c-u>call <SID>NetrwSetChgwin()<cr>
6287 nnoremap <buffer> <silent> <Plug>NetrwLcd :<c-u>call <SID>NetrwLcd(b:netrw_curdir)<cr> 6003 nnoremap <buffer> <silent> <nowait> <cr> :<c-u>call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord()))<cr>
6288 nnoremap <buffer> <silent> <Plug>NetrwSetChgwin :<c-u>call <SID>NetrwSetChgwin()<cr> 6004 nnoremap <buffer> <silent> <nowait> <c-r> :<c-u>call <SID>NetrwServerEdit(3,<SID>NetrwGetWord())<cr>
6289 nnoremap <buffer> <silent> <Plug>NetrwLocalBrowseCheck :<c-u>call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord()))<cr> 6005 nnoremap <buffer> <silent> <nowait> d :<c-u>call <SID>NetrwMakeDir("")<cr>
6290 nnoremap <buffer> <silent> <Plug>NetrwServerEdit :<c-u>call <SID>NetrwServerEdit(3,<SID>NetrwGetWord())<cr> 6006 nnoremap <buffer> <silent> <nowait> gb :<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_curdir)<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 " ---------------------------------------------------------------------
6294 nnoremap <buffer> <silent> <nowait> gd :<c-u>call <SID>NetrwForceChgDir(1,<SID>NetrwGetWord())<cr> 6007 nnoremap <buffer> <silent> <nowait> gd :<c-u>call <SID>NetrwForceChgDir(1,<SID>NetrwGetWord())<cr>
6295 nnoremap <buffer> <silent> <nowait> gf :<c-u>call <SID>NetrwForceFile(1,<SID>NetrwGetWord())<cr> 6008 nnoremap <buffer> <silent> <nowait> gf :<c-u>call <SID>NetrwForceFile(1,<SID>NetrwGetWord())<cr>
6296 nnoremap <buffer> <silent> <nowait> gh :<c-u>call <SID>NetrwHidden(1)<cr> 6009 nnoremap <buffer> <silent> <nowait> gh :<c-u>call <SID>NetrwHidden(1)<cr>
6297 nnoremap <buffer> <silent> <nowait> gn :<c-u>call netrw#SetTreetop(0,<SID>NetrwGetWord())<cr> 6010 nnoremap <buffer> <silent> <nowait> gn :<c-u>call netrw#SetTreetop(<SID>NetrwGetWord())<cr>
6298 nnoremap <buffer> <silent> <nowait> gp :<c-u>call <SID>NetrwChgPerm(1,b:netrw_curdir)<cr> 6011 nnoremap <buffer> <silent> <nowait> gp :<c-u>call <SID>NetrwChgPerm(1,b:netrw_curdir)<cr>
6299 nnoremap <buffer> <silent> <nowait> I :<c-u>call <SID>NetrwBannerCtrl(1)<cr> 6012 nnoremap <buffer> <silent> <nowait> I :<c-u>call <SID>NetrwBannerCtrl(1)<cr>
6300 nnoremap <buffer> <silent> <nowait> i :<c-u>call <SID>NetrwListStyle(1)<cr> 6013 nnoremap <buffer> <silent> <nowait> i :<c-u>call <SID>NetrwListStyle(1)<cr>
6301 nnoremap <buffer> <silent> <nowait> ma :<c-u>call <SID>NetrwMarkFileArgList(1,0)<cr> 6014 nnoremap <buffer> <silent> <nowait> ma :<c-u>call <SID>NetrwMarkFileArgList(1,0)<cr>
6302 nnoremap <buffer> <silent> <nowait> mA :<c-u>call <SID>NetrwMarkFileArgList(1,1)<cr> 6015 nnoremap <buffer> <silent> <nowait> mA :<c-u>call <SID>NetrwMarkFileArgList(1,1)<cr>
6326 nnoremap <buffer> <silent> <nowait> P :<c-u>call <SID>NetrwPrevWinOpen(1)<cr> 6039 nnoremap <buffer> <silent> <nowait> P :<c-u>call <SID>NetrwPrevWinOpen(1)<cr>
6327 nnoremap <buffer> <silent> <nowait> qb :<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr> 6040 nnoremap <buffer> <silent> <nowait> qb :<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr>
6328 nnoremap <buffer> <silent> <nowait> qf :<c-u>call <SID>NetrwFileInfo(1,<SID>NetrwGetWord())<cr> 6041 nnoremap <buffer> <silent> <nowait> qf :<c-u>call <SID>NetrwFileInfo(1,<SID>NetrwGetWord())<cr>
6329 nnoremap <buffer> <silent> <nowait> qF :<c-u>call <SID>NetrwMarkFileQFEL(1,getqflist())<cr> 6042 nnoremap <buffer> <silent> <nowait> qF :<c-u>call <SID>NetrwMarkFileQFEL(1,getqflist())<cr>
6330 nnoremap <buffer> <silent> <nowait> qL :<c-u>call <SID>NetrwMarkFileQFEL(1,getloclist(v:count))<cr> 6043 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>
6331 nnoremap <buffer> <silent> <nowait> s :call <SID>NetrwSortStyle(1)<cr> 6045 nnoremap <buffer> <silent> <nowait> s :call <SID>NetrwSortStyle(1)<cr>
6332 nnoremap <buffer> <silent> <nowait> S :<c-u>call <SID>NetSortSequence(1)<cr> 6046 nnoremap <buffer> <silent> <nowait> S :<c-u>call <SID>NetSortSequence(1)<cr>
6333 nnoremap <buffer> <silent> <nowait> Tb :<c-u>call <SID>NetrwSetTgt(1,'b',v:count1)<cr> 6047 nnoremap <buffer> <silent> <nowait> Tb :<c-u>call <SID>NetrwSetTgt(1,'b',v:count1)<cr>
6334 nnoremap <buffer> <silent> <nowait> t :call <SID>NetrwSplit(4)<cr> 6048 nnoremap <buffer> <silent> <nowait> t :call <SID>NetrwSplit(4)<cr>
6335 nnoremap <buffer> <silent> <nowait> Th :<c-u>call <SID>NetrwSetTgt(1,'h',v:count)<cr> 6049 nnoremap <buffer> <silent> <nowait> Th :<c-u>call <SID>NetrwSetTgt(1,'h',v:count)<cr>
6336 nnoremap <buffer> <silent> <nowait> u :<c-u>call <SID>NetrwBookHistHandler(4,expand("%"))<cr> 6050 nnoremap <buffer> <silent> <nowait> u :<c-u>call <SID>NetrwBookHistHandler(4,expand("%"))<cr>
6337 nnoremap <buffer> <silent> <nowait> U :<c-u>call <SID>NetrwBookHistHandler(5,expand("%"))<cr> 6051 nnoremap <buffer> <silent> <nowait> U :<c-u>call <SID>NetrwBookHistHandler(5,expand("%"))<cr>
6338 nnoremap <buffer> <silent> <nowait> v :call <SID>NetrwSplit(5)<cr> 6052 nnoremap <buffer> <silent> <nowait> v :call <SID>NetrwSplit(5)<cr>
6339 nnoremap <buffer> <silent> <nowait> x :<c-u>call netrw#BrowseX(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),0),0)"<cr> 6053 nnoremap <buffer> <silent> <nowait> x :<c-u>call netrw#BrowseX(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),0),0)"<cr>
6340 nnoremap <buffer> <silent> <nowait> X :<c-u>call <SID>NetrwLocalExecute(expand("<cword>"))"<cr> 6054 nnoremap <buffer> <silent> <nowait> X :<c-u>call <SID>NetrwLocalExecute(expand("<cword>"))"<cr>
6341 6055 " " local insert-mode maps
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> 6056 " inoremap <buffer> <silent> <nowait> a <c-o>:call <SID>NetrwHide(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>
6343 if !hasmapto('<Plug>NetrwHideEdit') 6107 if !hasmapto('<Plug>NetrwHideEdit')
6344 nmap <buffer> <unique> <c-h> <Plug>NetrwHideEdit 6108 nmap <buffer> <unique> <c-h> <Plug>NetrwHideEdit
6109 " imap <buffer> <unique> <c-h> <c-o><Plug>NetrwHideEdit
6345 endif 6110 endif
6346 nnoremap <buffer> <silent> <Plug>NetrwHideEdit :call <SID>NetrwHideEdit(1)<cr> 6111 nnoremap <buffer> <silent> <Plug>NetrwHideEdit :call <SID>NetrwHideEdit(1)<cr>
6347 if !hasmapto('<Plug>NetrwRefresh') 6112 if !hasmapto('<Plug>NetrwRefresh')
6348 nmap <buffer> <unique> <c-l> <Plug>NetrwRefresh 6113 nmap <buffer> <unique> <c-l> <Plug>NetrwRefresh
6114 " imap <buffer> <unique> <c-l> <c-o><Plug>NetrwRefresh
6349 endif 6115 endif
6350 nnoremap <buffer> <silent> <Plug>NetrwRefresh <c-l>:call <SID>NetrwRefresh(1,<SID>NetrwBrowseChgDir(1,(w:netrw_liststyle == 3)? w:netrw_treetop : './'))<cr> 6116 nnoremap <buffer> <silent> <Plug>NetrwRefresh <c-l>:call <SID>NetrwRefresh(1,<SID>NetrwBrowseChgDir(1,(w:netrw_liststyle == 3)? w:netrw_treetop : './'))<cr>
6351 if s:didstarstar || !mapcheck("<s-down>","n") 6117 if s:didstarstar || !mapcheck("<s-down>","n")
6352 nnoremap <buffer> <silent> <s-down> :Nexplore<cr> 6118 nnoremap <buffer> <silent> <s-down> :Nexplore<cr>
6119 " inoremap <buffer> <silent> <s-down> <c-o>:Nexplore<cr>
6353 endif 6120 endif
6354 if s:didstarstar || !mapcheck("<s-up>","n") 6121 if s:didstarstar || !mapcheck("<s-up>","n")
6355 nnoremap <buffer> <silent> <s-up> :Pexplore<cr> 6122 nnoremap <buffer> <silent> <s-up> :Pexplore<cr>
6123 " inoremap <buffer> <silent> <s-up> <c-o>:Pexplore<cr>
6356 endif 6124 endif
6357 if !hasmapto('<Plug>NetrwTreeSqueeze') 6125 if !hasmapto('<Plug>NetrwTreeSqueeze')
6358 nmap <buffer> <silent> <nowait> <s-cr> <Plug>NetrwTreeSqueeze 6126 nmap <buffer> <silent> <nowait> <s-cr> <Plug>NetrwTreeSqueeze
6127 " imap <buffer> <silent> <nowait> <s-cr> <c-o><Plug>NetrwTreeSqueeze
6359 endif 6128 endif
6360 nnoremap <buffer> <silent> <Plug>NetrwTreeSqueeze :call <SID>TreeSqueezeDir(1)<cr> 6129 nnoremap <buffer> <silent> <Plug>NetrwTreeSqueeze :call <SID>TreeSqueezeDir(1)<cr>
6361 let mapsafecurdir = escape(b:netrw_curdir, s:netrw_map_escape) 6130 let mapsafecurdir = escape(b:netrw_curdir, s:netrw_map_escape)
6362 if g:netrw_mousemaps == 1 6131 if g:netrw_mousemaps == 1
6363 nmap <buffer> <leftmouse> <Plug>NetrwLeftmouse 6132 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
6371 nno <buffer> <silent> <Plug>NetrwLeftmouse <leftmouse>:call <SID>NetrwLeftmouse(1)<cr> 6133 nno <buffer> <silent> <Plug>NetrwLeftmouse <leftmouse>:call <SID>NetrwLeftmouse(1)<cr>
6134 nmap <buffer> <c-leftmouse> <Plug>NetrwCLeftmouse
6372 nno <buffer> <silent> <Plug>NetrwCLeftmouse <leftmouse>:call <SID>NetrwCLeftmouse(1)<cr> 6135 nno <buffer> <silent> <Plug>NetrwCLeftmouse <leftmouse>:call <SID>NetrwCLeftmouse(1)<cr>
6136 nmap <buffer> <middlemouse> <Plug>NetrwMiddlemouse
6373 nno <buffer> <silent> <Plug>NetrwMiddlemouse <leftmouse>:call <SID>NetrwPrevWinOpen(1)<cr> 6137 nno <buffer> <silent> <Plug>NetrwMiddlemouse <leftmouse>:call <SID>NetrwPrevWinOpen(1)<cr>
6138 nmap <buffer> <s-leftmouse> <Plug>NetrwSLeftmouse
6374 nno <buffer> <silent> <Plug>NetrwSLeftmouse <leftmouse>:call <SID>NetrwSLeftmouse(1)<cr> 6139 nno <buffer> <silent> <Plug>NetrwSLeftmouse <leftmouse>:call <SID>NetrwSLeftmouse(1)<cr>
6140 nmap <buffer> <s-leftdrag> <Plug>NetrwSLeftdrag
6375 nno <buffer> <silent> <Plug>NetrwSLeftdrag <leftmouse>:call <SID>NetrwSLeftdrag(1)<cr> 6141 nno <buffer> <silent> <Plug>NetrwSLeftdrag <leftmouse>:call <SID>NetrwSLeftdrag(1)<cr>
6142 nmap <buffer> <2-leftmouse> <Plug>Netrw2Leftmouse
6376 nmap <buffer> <silent> <Plug>Netrw2Leftmouse - 6143 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>
6377 exe 'nnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' 6150 exe 'nnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
6378 exe 'vnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' 6151 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>'
6379 endif 6153 endif
6380 exe 'nnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' 6154 exe 'nnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
6381 exe 'nnoremap <buffer> <silent> <nowait> D :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' 6155 exe 'nnoremap <buffer> <silent> <nowait> D :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
6382 exe 'nnoremap <buffer> <silent> <nowait> R :call <SID>NetrwLocalRename("'.mapsafecurdir.'")<cr>' 6156 exe 'nnoremap <buffer> <silent> <nowait> R :call <SID>NetrwLocalRename("'.mapsafecurdir.'")<cr>'
6383 exe 'nnoremap <buffer> <silent> <nowait> d :call <SID>NetrwMakeDir("")<cr>' 6157 exe 'nnoremap <buffer> <silent> <nowait> d :call <SID>NetrwMakeDir("")<cr>'
6384 exe 'vnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' 6158 exe 'vnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
6385 exe 'vnoremap <buffer> <silent> <nowait> D :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' 6159 exe 'vnoremap <buffer> <silent> <nowait> D :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
6386 exe 'vnoremap <buffer> <silent> <nowait> R :call <SID>NetrwLocalRename("'.mapsafecurdir.'")<cr>' 6160 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>'
6387 nnoremap <buffer> <F1> :he netrw-quickhelp<cr> 6165 nnoremap <buffer> <F1> :he netrw-quickhelp<cr>
6388 6166
6389 " support user-specified maps 6167 " support user-specified maps
6390 call netrw#UserMaps(1) 6168 call netrw#UserMaps(1)
6391 6169
6392 else 6170 else " remote
6393 " remote normal-mode maps {{{3
6394 " call Decho("make remote maps",'~'.expand("<slnum>")) 6171 " call Decho("make remote maps",'~'.expand("<slnum>"))
6395 call s:RemotePathAnalysis(b:netrw_curdir) 6172 call s:RemotePathAnalysis(b:netrw_curdir)
6396 nnoremap <buffer> <silent> <Plug>NetrwHide_a :<c-u>call <SID>NetrwHide(0)<cr> 6173 " remote normal-mode maps
6397 nnoremap <buffer> <silent> <Plug>NetrwBrowseUpDir :<c-u>call <SID>NetrwBrowseUpDir(0)<cr> 6174 nnoremap <buffer> <silent> <nowait> a :<c-u>call <SID>NetrwHide(0)<cr>
6398 nnoremap <buffer> <silent> <Plug>NetrwOpenFile :<c-u>call <SID>NetrwOpenFile(0)<cr> 6175 nnoremap <buffer> <silent> <nowait> - :<c-u>call <SID>NetrwBrowseUpDir(0)<cr>
6399 nnoremap <buffer> <silent> <Plug>NetrwBadd_cb :<c-u>call <SID>NetrwBadd(0,0)<cr> 6176 nnoremap <buffer> <silent> <nowait> % :<c-u>call <SID>NetrwOpenFile(0)<cr>
6400 nnoremap <buffer> <silent> <Plug>NetrwBadd_cB :<c-u>call <SID>NetrwBadd(0,1)<cr> 6177 nnoremap <buffer> <silent> <nowait> C :<c-u>call <SID>NetrwSetChgwin()<cr>
6401 nnoremap <buffer> <silent> <Plug>NetrwLcd :<c-u>call <SID>NetrwLcd(b:netrw_curdir)<cr> 6178 nnoremap <buffer> <silent> <nowait> <c-l> :<c-u>call <SID>NetrwRefresh(0,<SID>NetrwBrowseChgDir(0,'./'))<cr>
6402 nnoremap <buffer> <silent> <Plug>NetrwSetChgwin :<c-u>call <SID>NetrwSetChgwin()<cr> 6179 nnoremap <buffer> <silent> <nowait> <cr> :<c-u>call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()))<cr>
6403 nnoremap <buffer> <silent> <Plug>NetrwRefresh :<c-u>call <SID>NetrwRefresh(0,<SID>NetrwBrowseChgDir(0,'./'))<cr> 6180 nnoremap <buffer> <silent> <nowait> <c-r> :<c-u>call <SID>NetrwServerEdit(2,<SID>NetrwGetWord())<cr>
6404 nnoremap <buffer> <silent> <Plug>NetrwLocalBrowseCheck :<c-u>call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()))<cr> 6181 nnoremap <buffer> <silent> <nowait> gb :<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_curdir)<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 " ---------------------------------------------------------------------
6408 nnoremap <buffer> <silent> <nowait> gd :<c-u>call <SID>NetrwForceChgDir(0,<SID>NetrwGetWord())<cr> 6182 nnoremap <buffer> <silent> <nowait> gd :<c-u>call <SID>NetrwForceChgDir(0,<SID>NetrwGetWord())<cr>
6409 nnoremap <buffer> <silent> <nowait> gf :<c-u>call <SID>NetrwForceFile(0,<SID>NetrwGetWord())<cr> 6183 nnoremap <buffer> <silent> <nowait> gf :<c-u>call <SID>NetrwForceFile(0,<SID>NetrwGetWord())<cr>
6410 nnoremap <buffer> <silent> <nowait> gh :<c-u>call <SID>NetrwHidden(0)<cr> 6184 nnoremap <buffer> <silent> <nowait> gh :<c-u>call <SID>NetrwHidden(0)<cr>
6411 nnoremap <buffer> <silent> <nowait> gp :<c-u>call <SID>NetrwChgPerm(0,b:netrw_curdir)<cr> 6185 nnoremap <buffer> <silent> <nowait> gp :<c-u>call <SID>NetrwChgPerm(0,b:netrw_curdir)<cr>
6412 nnoremap <buffer> <silent> <nowait> I :<c-u>call <SID>NetrwBannerCtrl(1)<cr> 6186 nnoremap <buffer> <silent> <nowait> I :<c-u>call <SID>NetrwBannerCtrl(1)<cr>
6449 nnoremap <buffer> <silent> <nowait> Th :<c-u>call <SID>NetrwSetTgt(0,'h',v:count)<cr> 6223 nnoremap <buffer> <silent> <nowait> Th :<c-u>call <SID>NetrwSetTgt(0,'h',v:count)<cr>
6450 nnoremap <buffer> <silent> <nowait> u :<c-u>call <SID>NetrwBookHistHandler(4,b:netrw_curdir)<cr> 6224 nnoremap <buffer> <silent> <nowait> u :<c-u>call <SID>NetrwBookHistHandler(4,b:netrw_curdir)<cr>
6451 nnoremap <buffer> <silent> <nowait> U :<c-u>call <SID>NetrwBookHistHandler(5,b:netrw_curdir)<cr> 6225 nnoremap <buffer> <silent> <nowait> U :<c-u>call <SID>NetrwBookHistHandler(5,b:netrw_curdir)<cr>
6452 nnoremap <buffer> <silent> <nowait> v :call <SID>NetrwSplit(2)<cr> 6226 nnoremap <buffer> <silent> <nowait> v :call <SID>NetrwSplit(2)<cr>
6453 nnoremap <buffer> <silent> <nowait> x :<c-u>call netrw#BrowseX(<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()),1)<cr> 6227 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>
6454 if !hasmapto('<Plug>NetrwHideEdit') 6279 if !hasmapto('<Plug>NetrwHideEdit')
6455 nmap <buffer> <c-h> <Plug>NetrwHideEdit 6280 nmap <buffer> <c-h> <Plug>NetrwHideEdit
6281 " imap <buffer> <c-h> <Plug>NetrwHideEdit
6456 endif 6282 endif
6457 nnoremap <buffer> <silent> <Plug>NetrwHideEdit :call <SID>NetrwHideEdit(0)<cr> 6283 nnoremap <buffer> <silent> <Plug>NetrwHideEdit :call <SID>NetrwHideEdit(0)<cr>
6458 if !hasmapto('<Plug>NetrwRefresh') 6284 if !hasmapto('<Plug>NetrwRefresh')
6459 nmap <buffer> <c-l> <Plug>NetrwRefresh 6285 nmap <buffer> <c-l> <Plug>NetrwRefresh
6286 " imap <buffer> <c-l> <Plug>NetrwRefresh
6460 endif 6287 endif
6461 if !hasmapto('<Plug>NetrwTreeSqueeze') 6288 if !hasmapto('<Plug>NetrwTreeSqueeze')
6462 nmap <buffer> <silent> <nowait> <s-cr> <Plug>NetrwTreeSqueeze 6289 nmap <buffer> <silent> <nowait> <s-cr> <Plug>NetrwTreeSqueeze
6290 " imap <buffer> <silent> <nowait> <s-cr> <c-o><Plug>NetrwTreeSqueeze
6463 endif 6291 endif
6464 nnoremap <buffer> <silent> <Plug>NetrwTreeSqueeze :call <SID>TreeSqueezeDir(0)<cr> 6292 nnoremap <buffer> <silent> <Plug>NetrwTreeSqueeze :call <SID>TreeSqueezeDir(0)<cr>
6465 6293
6466 let mapsafepath = escape(s:path, s:netrw_map_escape) 6294 let mapsafepath = escape(s:path, s:netrw_map_escape)
6467 let mapsafeusermach = escape(((s:user == "")? "" : s:user."@").s:machine, s:netrw_map_escape) 6295 let mapsafeusermach = escape(((s:user == "")? "" : s:user."@").s:machine, s:netrw_map_escape)
6479 nmap <middlemouse> <Plug>NetrwMiddlemouse 6307 nmap <middlemouse> <Plug>NetrwMiddlemouse
6480 nno <buffer> <silent> <middlemouse> <Plug>NetrwMiddlemouse <leftmouse>:call <SID>NetrwPrevWinOpen(0)<cr> 6308 nno <buffer> <silent> <middlemouse> <Plug>NetrwMiddlemouse <leftmouse>:call <SID>NetrwPrevWinOpen(0)<cr>
6481 nmap <buffer> <2-leftmouse> <Plug>Netrw2Leftmouse 6309 nmap <buffer> <2-leftmouse> <Plug>Netrw2Leftmouse
6482 nmap <buffer> <silent> <Plug>Netrw2Leftmouse - 6310 nmap <buffer> <silent> <Plug>Netrw2Leftmouse -
6483 imap <buffer> <leftmouse> <Plug>ILeftmouse 6311 imap <buffer> <leftmouse> <Plug>ILeftmouse
6312 " ino <buffer> <silent> <Plug>ILeftmouse <c-o><leftmouse><c-o>:call <SID>NetrwLeftmouse(0)<cr>
6484 imap <buffer> <middlemouse> <Plug>IMiddlemouse 6313 imap <buffer> <middlemouse> <Plug>IMiddlemouse
6314 " ino <buffer> <silent> <Plug>IMiddlemouse <c-o><leftmouse><c-o>:call <SID>NetrwPrevWinOpen(0)<cr>
6485 imap <buffer> <s-leftmouse> <Plug>ISLeftmouse 6315 imap <buffer> <s-leftmouse> <Plug>ISLeftmouse
6316 " ino <buffer> <silent> <Plug>ISLeftmouse <c-o><leftmouse><c-o>:call <SID>NetrwMarkFile(0,<SID>NetrwGetWord())<cr>
6486 exe 'nnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' 6317 exe 'nnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
6487 exe 'vnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' 6318 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>'
6488 endif 6320 endif
6489 exe 'nnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' 6321 exe 'nnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
6490 exe 'nnoremap <buffer> <silent> <nowait> d :call <SID>NetrwMakeDir("'.mapsafeusermach.'")<cr>' 6322 exe 'nnoremap <buffer> <silent> <nowait> d :call <SID>NetrwMakeDir("'.mapsafeusermach.'")<cr>'
6491 exe 'nnoremap <buffer> <silent> <nowait> D :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' 6323 exe 'nnoremap <buffer> <silent> <nowait> D :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
6492 exe 'nnoremap <buffer> <silent> <nowait> R :call <SID>NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' 6324 exe 'nnoremap <buffer> <silent> <nowait> R :call <SID>NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
6493 exe 'vnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' 6325 exe 'vnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
6494 exe 'vnoremap <buffer> <silent> <nowait> D :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' 6326 exe 'vnoremap <buffer> <silent> <nowait> D :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
6495 exe 'vnoremap <buffer> <silent> <nowait> R :call <SID>NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' 6327 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>'
6496 nnoremap <buffer> <F1> :he netrw-quickhelp<cr> 6332 nnoremap <buffer> <F1> :he netrw-quickhelp<cr>
6333 " inoremap <buffer> <F1> <c-o>:he netrw-quickhelp<cr>
6497 6334
6498 " support user-specified maps 6335 " support user-specified maps
6499 call netrw#UserMaps(0) 6336 call netrw#UserMaps(0)
6500 endif " }}}3 6337 endif
6501 6338
6502 " call Dret("s:NetrwMaps") 6339 " call Dret("s:NetrwMaps")
6503 endfun 6340 endfun
6504 6341
6505 " --------------------------------------------------------------------- 6342 " ---------------------------------------------------------------------
6692 call add(s:netrwmarkfilelist,s:ComposePath(b:netrw_curdir,a:fname)) 6529 call add(s:netrwmarkfilelist,s:ComposePath(b:netrw_curdir,a:fname))
6693 " call Decho("init s:netrwmarkfilelist<".string(s:netrwmarkfilelist).">",'~'.expand("<slnum>")) 6530 " call Decho("init s:netrwmarkfilelist<".string(s:netrwmarkfilelist).">",'~'.expand("<slnum>"))
6694 endif 6531 endif
6695 6532
6696 " set up 2match'ing to netrwmarkfilemtch_# list 6533 " set up 2match'ing to netrwmarkfilemtch_# list
6697 if has("syntax") && exists("g:syntax_on") && g:syntax_on 6534 if exists("s:netrwmarkfilemtch_{curbufnr}") && s:netrwmarkfilemtch_{curbufnr} != ""
6698 if exists("s:netrwmarkfilemtch_{curbufnr}") && s:netrwmarkfilemtch_{curbufnr} != "" 6535 " call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/",'~'.expand("<slnum>"))
6699 " " call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/",'~'.expand("<slnum>")) 6536 if exists("g:did_drchip_netrwlist_syntax")
6700 if exists("g:did_drchip_netrwlist_syntax") 6537 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/"
6701 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/" 6538 endif
6702 endif 6539 else
6703 else 6540 " call Decho("2match none",'~'.expand("<slnum>"))
6704 " " call Decho("2match none",'~'.expand("<slnum>")) 6541 2match none
6705 2match none
6706 endif
6707 endif 6542 endif
6708 let @@= ykeep 6543 let @@= ykeep
6709 " call Dret("s:NetrwMarkFile : s:netrwmarkfilelist_".curbufnr."<".(exists("s:netrwmarkfilelist_{curbufnr}")? string(s:netrwmarkfilelist_{curbufnr}) : " doesn't exist").">") 6544 " call Dret("s:NetrwMarkFile : s:netrwmarkfilelist_".curbufnr."<".(exists("s:netrwmarkfilelist_{curbufnr}")? string(s:netrwmarkfilelist_{curbufnr}) : " doesn't exist").">")
6710 endfun 6545 endfun
6711 6546
6787 let exe= netrw#WinPath(exe) 6622 let exe= netrw#WinPath(exe)
6788 if a:islocal 6623 if a:islocal
6789 if g:netrw_keepdir 6624 if g:netrw_keepdir
6790 let fname= s:ShellEscape(s:ComposePath(curdir,fname)) 6625 let fname= s:ShellEscape(s:ComposePath(curdir,fname))
6791 endif 6626 endif
6792 call system(exe." ".fname) 6627 else
6793 if v:shell_error 6628 let fname= s:ShellEscape(b:netrw_curdir.fname,1)
6794 NetrwKeepj call netrw#ErrorMsg(s:WARNING,"unable to apply<".exe."> to file<".fname.">",50) 6629 endif
6630 if executable(exe)
6631 if a:islocal
6632 call system(exe." ".fname)
6633 else
6634 NetrwKeepj call s:RemoteSystem(exe." ".fname)
6795 endif 6635 endif
6796 else 6636 else
6797 let fname= s:ShellEscape(b:netrw_curdir.fname,1) 6637 NetrwKeepj call netrw#ErrorMsg(s:WARNING,"unable to apply<".exe."> to file<".fname.">",50)
6798 NetrwKeepj call s:RemoteSystem(exe." ".fname)
6799 endif 6638 endif
6800
6801 endif 6639 endif
6802 unlet sfx 6640 unlet sfx
6803 6641
6804 if exists("exe") 6642 if exists("exe")
6805 unlet exe 6643 unlet exe
6806 elseif a:islocal 6644 elseif a:islocal
6807 " fname not a compressed file, so compress it 6645 " fname not a compressed file, so compress it
6808 call system(netrw#WinPath(g:netrw_compress)." ".s:ShellEscape(s:ComposePath(b:netrw_curdir,fname))) 6646 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
6812 else 6647 else
6813 " fname not a compressed file, so compress it 6648 " fname not a compressed file, so compress it
6814 NetrwKeepj call s:RemoteSystem(netrw#WinPath(g:netrw_compress)." ".s:ShellEscape(fname)) 6649 NetrwKeepj call s:RemoteSystem(netrw#WinPath(g:netrw_compress)." ".s:ShellEscape(fname))
6815 endif 6650 endif
6816 endfor " for every file in the marked list 6651 endfor " for every file in the marked list
6858 " call Decho("sanity chk passed: s:netrwmftgt<".s:netrwmftgt.">",'~'.expand("<slnum>")) 6693 " call Decho("sanity chk passed: s:netrwmftgt<".s:netrwmftgt.">",'~'.expand("<slnum>"))
6859 6694
6860 if a:islocal && s:netrwmftgt_islocal 6695 if a:islocal && s:netrwmftgt_islocal
6861 " Copy marked files, local directory to local directory 6696 " Copy marked files, local directory to local directory
6862 " call Decho("copy from local to local",'~'.expand("<slnum>")) 6697 " call Decho("copy from local to local",'~'.expand("<slnum>"))
6863 if !executable(g:netrw_localcopycmd) 6698 if !executable(g:netrw_localcopycmd) && g:netrw_localcopycmd !~ '^'.expand("$COMSPEC").'\s'
6864 call netrw#ErrorMsg(s:ERROR,"g:netrw_localcopycmd<".g:netrw_localcopycmd."> not executable on your system, aborting",91) 6699 call netrw#ErrorMsg(s:ERROR,"g:netrw_localcopycmd<".g:netrw_localcopycmd."> not executable on your system, aborting",91)
6865 " call Dfunc("s:NetrwMarkFileMove : g:netrw_localcopycmd<".g:netrw_localcopycmd."> n/a!") 6700 " call Dfunc("s:NetrwMarkFileMove : g:netrw_localcopycmd<".g:netrw_localcopycmd."> n/a!")
6866 return 6701 return
6867 endif 6702 endif
6868 6703
6940 endif 6775 endif
6941 " call Decho("args <".args.">",'~'.expand("<slnum>")) 6776 " call Decho("args <".args.">",'~'.expand("<slnum>"))
6942 " call Decho("tgt <".tgt.">",'~'.expand("<slnum>")) 6777 " call Decho("tgt <".tgt.">",'~'.expand("<slnum>"))
6943 " call Decho("copycmd<".copycmd.">",'~'.expand("<slnum>")) 6778 " call Decho("copycmd<".copycmd.">",'~'.expand("<slnum>"))
6944 " call Decho("system(".copycmd." '".args."' '".tgt."')",'~'.expand("<slnum>")) 6779 " call Decho("system(".copycmd." '".args."' '".tgt."')",'~'.expand("<slnum>"))
6945 call system(copycmd.g:netrw_localcopycmdopt." '".args."' '".tgt."'") 6780 call system(copycmd." '".args."' '".tgt."'")
6946 if v:shell_error != 0 6781 if v:shell_error != 0
6947 if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && !g:netrw_keepdir 6782 if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && !g:netrw_keepdir
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) 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)
6949 else 6784 else
6950 call netrw#ErrorMsg(s:ERROR,"tried using g:netrw_localcopycmd<".g:netrw_localcopycmd.">; it doesn't work!",80) 6785 call netrw#ErrorMsg(s:ERROR,"tried using g:netrw_localcopycmd<".g:netrw_localcopycmd.">; it doesn't work!",80)
6972 let tmpdir= curdir."/".tmpdir 6807 let tmpdir= curdir."/".tmpdir
6973 endif 6808 endif
6974 if exists("*mkdir") 6809 if exists("*mkdir")
6975 call mkdir(tmpdir) 6810 call mkdir(tmpdir)
6976 else 6811 else
6977 call s:NetrwExe("sil! !".g:netrw_localmkdir.g:netrw_localmkdiropt.' '.s:ShellEscape(tmpdir,1)) 6812 call s:NetrwExe("sil! !".g:netrw_localmkdir.' '.s:ShellEscape(tmpdir,1))
6978 if v:shell_error != 0 6813 if v:shell_error != 0
6979 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localmkdir<".g:netrw_localmkdir."> to something that works",80) 6814 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localmkdir<".g:netrw_localmkdir."> to something that works",80)
6980 " call Dret("s:NetrwMarkFileCopy : failed: sil! !".g:netrw_localmkdir.' '.s:ShellEscape(tmpdir,1) ) 6815 " call Dret("s:NetrwMarkFileCopy : failed: sil! !".g:netrw_localmkdir.' '.s:ShellEscape(tmpdir,1) )
6981 return 6816 return
6982 endif 6817 endif
6983 endif 6818 endif
6984 if isdirectory(s:NetrwFile(tmpdir)) 6819 if isdirectory(s:NetrwFile(tmpdir))
6985 if s:NetrwLcd(tmpdir) 6820 call s:NetrwLcd(tmpdir)
6986 " call Dret("s:NetrwMarkFileCopy : lcd failure")
6987 return
6988 endif
6989 NetrwKeepj call netrw#Obtain(a:islocal,s:netrwmarkfilelist_{bufnr('%')},tmpdir) 6821 NetrwKeepj call netrw#Obtain(a:islocal,s:netrwmarkfilelist_{bufnr('%')},tmpdir)
6990 let localfiles= map(deepcopy(s:netrwmarkfilelist_{bufnr('%')}),'substitute(v:val,"^.*/","","")') 6822 let localfiles= map(deepcopy(s:netrwmarkfilelist_{bufnr('%')}),'substitute(v:val,"^.*/","","")')
6991 NetrwKeepj call s:NetrwUpload(localfiles,s:netrwmftgt) 6823 NetrwKeepj call s:NetrwUpload(localfiles,s:netrwmftgt)
6992 if getcwd() == tmpdir 6824 if getcwd() == tmpdir
6993 for fname in s:netrwmarkfilelist_{bufnr('%')} 6825 for fname in s:netrwmarkfilelist_{bufnr('%')}
6994 NetrwKeepj call s:NetrwDelete(fname) 6826 NetrwKeepj call s:NetrwDelete(fname)
6995 endfor 6827 endfor
6996 if s:NetrwLcd(curdir) 6828 call s:NetrwLcd(curdir)
6997 " call Dret("s:NetrwMarkFileCopy : lcd failure") 6829 if v:version < 704 || !has("patch1109")
6998 return 6830 call s:NetrwExe("sil !".g:netrw_localrmdir." ".s:ShellEscape(tmpdir,1))
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))
7002 if v:shell_error != 0 6831 if v:shell_error != 0
7003 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localrmdir<".g:netrw_localrmdir."> to something that works",80) 6832 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localrmdir<".g:netrw_localrmdir."> to something that works",80)
7004 " " call Dret("s:NetrwMarkFileCopy : failed: sil !".g:netrw_localrmdir." ".s:ShellEscape(tmpdir,1) ) 6833 " " call Dret("s:NetrwMarkFileCopy : failed: sil !".g:netrw_localrmdir." ".s:ShellEscape(tmpdir,1) )
7005 return 6834 return
7006 endif 6835 endif
7008 if delete(tmpdir,"d") 6837 if delete(tmpdir,"d")
7009 call netrw#ErrorMsg(s:ERROR,"unable to delete directory <".tmpdir.">!",103) 6838 call netrw#ErrorMsg(s:ERROR,"unable to delete directory <".tmpdir.">!",103)
7010 endif 6839 endif
7011 endif 6840 endif
7012 else 6841 else
7013 if s:NetrwLcd(curdir) 6842 call s:NetrwLcd(curdir)
7014 " call Dret("s:NetrwMarkFileCopy : lcd failure")
7015 return
7016 endif
7017 endif 6843 endif
7018 endif 6844 endif
7019 endif 6845 endif
7020 6846
7021 " ------- 6847 " -------
7538 7364
7539 if a:islocal && s:netrwmftgt_islocal 7365 if a:islocal && s:netrwmftgt_islocal
7540 " move: local -> local 7366 " move: local -> local
7541 " call Decho("move from local to local",'~'.expand("<slnum>")) 7367 " call Decho("move from local to local",'~'.expand("<slnum>"))
7542 " call Decho("local to local move",'~'.expand("<slnum>")) 7368 " call Decho("local to local move",'~'.expand("<slnum>"))
7543 if !executable(g:netrw_localmovecmd) 7369 if !executable(g:netrw_localmovecmd) && g:netrw_localmovecmd !~ '^'.expand("$COMSPEC").'\s'
7544 call netrw#ErrorMsg(s:ERROR,"g:netrw_localmovecmd<".g:netrw_localmovecmd."> not executable on your system, aborting",90) 7370 call netrw#ErrorMsg(s:ERROR,"g:netrw_localmovecmd<".g:netrw_localmovecmd."> not executable on your system, aborting",90)
7545 " call Dfunc("s:NetrwMarkFileMove : g:netrw_localmovecmd<".g:netrw_localmovecmd."> n/a!") 7371 " call Dfunc("s:NetrwMarkFileMove : g:netrw_localmovecmd<".g:netrw_localmovecmd."> n/a!")
7546 return 7372 return
7547 endif 7373 endif
7548 let tgt = s:ShellEscape(s:netrwmftgt) 7374 let tgt = s:ShellEscape(s:netrwmftgt)
7549 " call Decho("tgt<".tgt.">",'~'.expand("<slnum>")) 7375 " call Decho("tgt<".tgt.">",'~'.expand("<slnum>"))
7550 if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16")) 7376 if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16"))
7551 let tgt= substitute(tgt, '/','\\','g') 7377 let tgt = substitute(tgt, '/','\\','g')
7552 " call Decho("windows exception: tgt<".tgt.">",'~'.expand("<slnum>")) 7378 " call Decho("windows exception: tgt<".tgt.">",'~'.expand("<slnum>"))
7553 if g:netrw_localmovecmd =~ '\s' 7379 if g:netrw_localmovecmd =~ '\s'
7554 let movecmd = substitute(g:netrw_localmovecmd,'\s.*$','','') 7380 let movecmd = substitute(g:netrw_localmovecmd,'\s.*$','','')
7555 let movecmdargs = substitute(g:netrw_localmovecmd,'^.\{-}\(\s.*\)$','\1','') 7381 let movecmdargs = substitute(g:netrw_localmovecmd,'^.\{-}\(\s.*\)$','\1','')
7556 let movecmd = netrw#WinPath(movecmd).movecmdargs 7382 let movecmd = netrw#WinPath(movecmd).movecmdargs
7566 for fname in s:netrwmarkfilelist_{bufnr("%")} 7392 for fname in s:netrwmarkfilelist_{bufnr("%")}
7567 if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16")) 7393 if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16"))
7568 let fname= substitute(fname,'/','\\','g') 7394 let fname= substitute(fname,'/','\\','g')
7569 endif 7395 endif
7570 " call Decho("system(".movecmd." ".s:ShellEscape(fname)." ".tgt.")",'~'.expand("<slnum>")) 7396 " call Decho("system(".movecmd." ".s:ShellEscape(fname)." ".tgt.")",'~'.expand("<slnum>"))
7571 let ret= system(movecmd.g:netrw_localmovecmdopt." ".s:ShellEscape(fname)." ".tgt) 7397 let ret= system(movecmd." ".s:ShellEscape(fname)." ".tgt)
7572 if v:shell_error != 0 7398 if v:shell_error != 0
7573 if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && !g:netrw_keepdir 7399 if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && !g:netrw_keepdir
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) 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)
7575 else 7401 else
7576 call netrw#ErrorMsg(s:ERROR,"tried using g:netrw_localmovecmd<".g:netrw_localmovecmd.">; it doesn't work!",54) 7402 call netrw#ErrorMsg(s:ERROR,"tried using g:netrw_localmovecmd<".g:netrw_localmovecmd.">; it doesn't work!",54)
7821 " call Decho("s:netrwmarkfilelist".string(s:netrwmarkfilelist).">",'~'.expand("<slnum>")) 7647 " call Decho("s:netrwmarkfilelist".string(s:netrwmarkfilelist).">",'~'.expand("<slnum>"))
7822 let netrwmarkfilelist= join(map(deepcopy(s:netrwmarkfilelist), "s:ShellEscape(v:val,".!a:islocal.")")) 7648 let netrwmarkfilelist= join(map(deepcopy(s:netrwmarkfilelist), "s:ShellEscape(v:val,".!a:islocal.")"))
7823 call s:NetrwUnmarkAll() 7649 call s:NetrwUnmarkAll()
7824 7650
7825 if a:islocal 7651 if a:islocal
7826 7652 if executable(g:netrw_ctags)
7827 " call Decho("call system(".g:netrw_ctags." ".netrwmarkfilelist.")",'~'.expand("<slnum>")) 7653 " call Decho("call system(".g:netrw_ctags." ".netrwmarkfilelist.")",'~'.expand("<slnum>"))
7828 call system(g:netrw_ctags." ".netrwmarkfilelist) 7654 call system(g:netrw_ctags." ".netrwmarkfilelist)
7829 if v:shell_error 7655 else
7830 call netrw#ErrorMsg(s:ERROR,"g:netrw_ctags<".g:netrw_ctags."> is not executable!",51) 7656 call netrw#ErrorMsg(s:ERROR,"g:netrw_ctags<".g:netrw_ctags."> is not executable!",51)
7831 endif 7657 endif
7832
7833 else 7658 else
7834 let cmd = s:RemoteSystem(g:netrw_ctags." ".netrwmarkfilelist) 7659 let cmd = s:RemoteSystem(g:netrw_ctags." ".netrwmarkfilelist)
7835 call netrw#Obtain(a:islocal,"tags") 7660 call netrw#Obtain(a:islocal,"tags")
7836 let curdir= b:netrw_curdir 7661 let curdir= b:netrw_curdir
7837 1split 7662 1split
8282 if exists("s:netrwmarkfilelist_{bufnr('%')}") 8107 if exists("s:netrwmarkfilelist_{bufnr('%')}")
8283 let islocal= s:netrwmarkfilelist_{bufnr('%')}[1] !~ '^\a\{3,}://' 8108 let islocal= s:netrwmarkfilelist_{bufnr('%')}[1] !~ '^\a\{3,}://'
8284 call netrw#Obtain(islocal,s:netrwmarkfilelist_{bufnr('%')}) 8109 call netrw#Obtain(islocal,s:netrwmarkfilelist_{bufnr('%')})
8285 call s:NetrwUnmarkList(bufnr('%'),b:netrw_curdir) 8110 call s:NetrwUnmarkList(bufnr('%'),b:netrw_curdir)
8286 else 8111 else
8287 call netrw#Obtain(a:islocal,s:NetrwGetWord()) 8112 call netrw#Obtain(a:islocal,expand("<cWORD>"))
8288 endif 8113 endif
8289 let @@= ykeep 8114 let @@= ykeep
8290 8115
8291 " call Dret("NetrwObtain") 8116 " call Dret("NetrwObtain")
8292 endfun 8117 endfun
8317 8142
8318 let didsplit = 0 8143 let didsplit = 0
8319 if lastwinnr == 1 8144 if lastwinnr == 1
8320 " if only one window, open a new one first 8145 " if only one window, open a new one first
8321 " call Decho("only one window, so open a new one (g:netrw_alto=".g:netrw_alto.")",'~'.expand("<slnum>")) 8146 " 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
8324 if g:netrw_preview 8147 if g:netrw_preview
8325 " vertically split preview window 8148 " vertically split preview window
8326 let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize 8149 let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winheight(0))/100 : -g:netrw_winsize
8327 " call Decho("exe ".(g:netrw_alto? "top " : "bot ")."vert ".winsz."wincmd s",'~'.expand("<slnum>")) 8150 " call Decho("exe ".(g:netrw_alto? "top " : "bot ")."vert ".winsz."wincmd s",'~'.expand("<slnum>"))
8328 exe (g:netrw_alto? "top " : "bot ")."vert ".winsz."wincmd s" 8151 exe (g:netrw_alto? "top " : "bot ")."vert ".winsz."wincmd s"
8329 else 8152 else
8330 " horizontally split preview window 8153 " horizontally split preview window
8331 let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winheight(0))/100 : -g:netrw_winsize 8154 let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize
8332 " call Decho("exe ".(g:netrw_alto? "bel " : "abo ").winsz."wincmd s",'~'.expand("<slnum>")) 8155 " call Decho("exe ".(g:netrw_alto? "bel " : "abo ").winsz."wincmd s",'~'.expand("<slnum>"))
8333 exe (g:netrw_alto? "bel " : "abo ").winsz."wincmd s" 8156 exe (g:netrw_alto? "bel " : "abo ").winsz."wincmd s"
8334 endif 8157 endif
8335 let didsplit = 1 8158 let didsplit = 1
8336 " call Decho("did split",'~'.expand("<slnum>")) 8159 " call Decho("did split",'~'.expand("<slnum>"))
8458 elseif type(a:fname) == 3 8281 elseif type(a:fname) == 3
8459 " handle uploading a list of files via scp 8282 " handle uploading a list of files via scp
8460 " call Decho("handle uploading a list of files via scp",'~'.expand("<slnum>")) 8283 " call Decho("handle uploading a list of files via scp",'~'.expand("<slnum>"))
8461 let curdir= getcwd() 8284 let curdir= getcwd()
8462 if a:tgt =~ '^scp:' 8285 if a:tgt =~ '^scp:'
8463 if s:NetrwLcd(fromdir) 8286 call s:NetrwLcd(fromdir)
8464 " call Dret("s:NetrwUpload : lcd failure")
8465 return
8466 endif
8467 let filelist= deepcopy(s:netrwmarkfilelist_{bufnr('%')}) 8287 let filelist= deepcopy(s:netrwmarkfilelist_{bufnr('%')})
8468 let args = join(map(filelist,"s:ShellEscape(v:val, 1)")) 8288 let args = join(map(filelist,"s:ShellEscape(v:val, 1)"))
8469 if exists("g:netrw_port") && g:netrw_port != "" 8289 if exists("g:netrw_port") && g:netrw_port != ""
8470 let useport= " ".g:netrw_scpport." ".g:netrw_port 8290 let useport= " ".g:netrw_scpport." ".g:netrw_port
8471 else 8291 else
8472 let useport= "" 8292 let useport= ""
8473 endif 8293 endif
8474 let machine = substitute(a:tgt,'^scp://\([^/:]\+\).*$','\1','') 8294 let machine = substitute(a:tgt,'^scp://\([^/:]\+\).*$','\1','')
8475 let tgt = substitute(a:tgt,'^scp://[^/]\+/\(.*\)$','\1','') 8295 let tgt = substitute(a:tgt,'^scp://[^/]\+/\(.*\)$','\1','')
8476 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_scp_cmd.s:ShellEscape(useport,1)." ".args." ".s:ShellEscape(machine.":".tgt,1)) 8296 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_scp_cmd.s:ShellEscape(useport,1)." ".args." ".s:ShellEscape(machine.":".tgt,1))
8477 if s:NetrwLcd(curdir) 8297 call s:NetrwLcd(curdir)
8478 " call Dret("s:NetrwUpload : lcd failure")
8479 return
8480 endif
8481 8298
8482 elseif a:tgt =~ '^ftp:' 8299 elseif a:tgt =~ '^ftp:'
8483 call s:NetrwMethod(a:tgt) 8300 call s:NetrwMethod(a:tgt)
8484 8301
8485 if b:netrw_method == 2 8302 if b:netrw_method == 2
8589 let mod = 1 8406 let mod = 1
8590 else 8407 else
8591 bw!|q 8408 bw!|q
8592 endif 8409 endif
8593 elseif !exists("b:netrw_method") || b:netrw_method < 0 8410 elseif !exists("b:netrw_method") || b:netrw_method < 0
8594 " call Dret("s:#NetrwUpload : unsupported method") 8411 " call Dfunc("netrw#NetrwUpload : unsupported method")
8595 return 8412 return
8596 endif 8413 endif
8597 else 8414 else
8598 call netrw#ErrorMsg(s:ERROR,"can't obtain files with protocol from<".a:tgt.">",63) 8415 call netrw#ErrorMsg(s:ERROR,"can't obtain files with protocol from<".a:tgt.">",63)
8599 endif 8416 endif
8638 " at the current time (Mar 19, 2007) all calls to NetrwRefresh() call NetrwBrowseChgDir() first. 8455 " at the current time (Mar 19, 2007) all calls to NetrwRefresh() call NetrwBrowseChgDir() first.
8639 setl ma noro 8456 setl ma noro
8640 " call Decho("setl ma noro",'~'.expand("<slnum>")) 8457 " call Decho("setl ma noro",'~'.expand("<slnum>"))
8641 " call Decho("clear buffer<".expand("%")."> with :%d",'~'.expand("<slnum>")) 8458 " call Decho("clear buffer<".expand("%")."> with :%d",'~'.expand("<slnum>"))
8642 let ykeep = @@ 8459 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
8653 8460
8654 " save the cursor position before refresh. 8461 " save the cursor position before refresh.
8655 let screenposn = winsaveview() 8462 let screenposn = winsaveview()
8656 " call Decho("saving posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>")) 8463 " call Decho("saving posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>"))
8657 8464
8667 " restore position 8474 " restore position
8668 " call Decho("restoring posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>")) 8475 " call Decho("restoring posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>"))
8669 NetrwKeepj call winrestview(screenposn) 8476 NetrwKeepj call winrestview(screenposn)
8670 8477
8671 " restore file marks 8478 " restore file marks
8672 if has("syntax") && exists("g:syntax_on") && g:syntax_on 8479 if exists("s:netrwmarkfilemtch_{bufnr('%')}") && s:netrwmarkfilemtch_{bufnr("%")} != ""
8673 if exists("s:netrwmarkfilemtch_{bufnr('%')}") && s:netrwmarkfilemtch_{bufnr("%")} != "" 8480 " call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/",'~'.expand("<slnum>"))
8674 " " call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/",'~'.expand("<slnum>")) 8481 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/"
8675 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/" 8482 else
8676 else 8483 " call Decho("2match none (bufnr(%)=".bufnr("%")."<".bufname("%").">)",'~'.expand("<slnum>"))
8677 " " call Decho("2match none (bufnr(%)=".bufnr("%")."<".bufname("%").">)",'~'.expand("<slnum>")) 8484 2match none
8678 2match none 8485 endif
8679 endif
8680 endif
8681 8486
8682 " restore 8487 " restore
8683 let @@= ykeep 8488 let @@= ykeep
8684 " call Dret("s:NetrwRefresh") 8489 " call Dret("s:NetrwRefresh")
8685 endfun 8490 endfun
9151 8956
9152 " display subtrees (if any) 8957 " display subtrees (if any)
9153 let depth= s:treedepthstring.a:depth 8958 let depth= s:treedepthstring.a:depth
9154 " call Decho("display subtrees with depth<".depth."> and current leaves",'~'.expand("<slnum>")) 8959 " call Decho("display subtrees with depth<".depth."> and current leaves",'~'.expand("<slnum>"))
9155 8960
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
9186 " call Decho("for every entry in w:netrw_treedict[".dir."]=".string(w:netrw_treedict[dir]),'~'.expand("<slnum>")) 8961 " call Decho("for every entry in w:netrw_treedict[".dir."]=".string(w:netrw_treedict[dir]),'~'.expand("<slnum>"))
9187 for entry in w:netrw_treedict[dir] 8962 for entry in w:netrw_treedict[dir]
9188 if dir =~ '/$' 8963 if dir =~ '/$'
9189 let direntry= substitute(dir.entry,'[@/]$','','e') 8964 let direntry= substitute(dir.entry,'[@/]$','','e')
9190 else 8965 else
9203 else 8978 else
9204 " call Decho("<".entry."> is not a key in treedict (no subtree)",'~'.expand("<slnum>")) 8979 " call Decho("<".entry."> is not a key in treedict (no subtree)",'~'.expand("<slnum>"))
9205 sil! NetrwKeepj call setline(line("$")+1,depth.entry) 8980 sil! NetrwKeepj call setline(line("$")+1,depth.entry)
9206 endif 8981 endif
9207 endfor 8982 endfor
9208 " call Decho("displaying: ".string(getline(w:netrw_bannercnt,'$')))
9209 8983
9210 " call Dret("NetrwTreeDisplay") 8984 " call Dret("NetrwTreeDisplay")
9211 endfun 8985 endfun
9212 8986
9213 " --------------------------------------------------------------------- 8987 " ---------------------------------------------------------------------
9214 " s:NetrwRefreshTreeDict: updates the contents information for a tree (w:netrw_treedict) {{{2 8988 " s:NetrwRefreshTreeDict: updates the contents information for a tree (w:netrw_treedict) {{{2
9215 fun! s:NetrwRefreshTreeDict(dir) 8989 fun! s:NetrwRefreshTreeDict(dir)
9216 " call Dfunc("s:NetrwRefreshTreeDict(dir<".a:dir.">)") 8990 " 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
9222 for entry in w:netrw_treedict[a:dir] 8991 for entry in w:netrw_treedict[a:dir]
9223 let direntry= substitute(a:dir.'/'.entry,'[@/]$','','e') 8992 let direntry= substitute(a:dir.'/'.entry,'[@/]$','','e')
9224 " call Decho("a:dir<".a:dir."> entry<".entry."> direntry<".direntry.">",'~'.expand("<slnum>")) 8993 " call Decho("a:dir<".a:dir."> entry<".entry."> direntry<".direntry.">",'~'.expand("<slnum>"))
9225 8994
9226 if entry =~ '/$' && has_key(w:netrw_treedict,direntry) 8995 if entry =~ '/$' && has_key(w:netrw_treedict,direntry)
9245 let liststar = s:NetrwGlob(direntry.'/','*',1) 9014 let liststar = s:NetrwGlob(direntry.'/','*',1)
9246 let listdotstar= s:NetrwGlob(direntry.'/','.*',1) 9015 let listdotstar= s:NetrwGlob(direntry.'/','.*',1)
9247 " call Decho("updating w:netrw_treedict[".direntry.']='.string(w:netrw_treedict[direntry]),'~'.expand("<slnum>")) 9016 " call Decho("updating w:netrw_treedict[".direntry.']='.string(w:netrw_treedict[direntry]),'~'.expand("<slnum>"))
9248 9017
9249 else 9018 else
9250 " call Decho('not updating w:netrw_treedict['.string(direntry).'] with entry<'.string(entry).'> (no subtree)','~'.expand("<slnum>")) 9019 " call Decho('not updating w:netrw_treedict['.direntry.'] with entry<'.entry.'> (no subtree)',,'~'.expand("<slnum>"))
9251 endif 9020 endif
9252 endfor 9021 endfor
9253 " call Dret("s:NetrwRefreshTreeDict") 9022 " call Dret("s:NetrwRefreshTreeDict")
9254 endfun 9023 endfun
9255 9024
9312 return 9081 return
9313 endif 9082 endif
9314 endfun 9083 endfun
9315 9084
9316 " --------------------------------------------------------------------- 9085 " ---------------------------------------------------------------------
9317 " s:NetrwTreePath: returns path to current file/directory in tree listing {{{2 9086 " s:NetrwTreePath: returns path to current file in tree listing {{{2
9318 " Normally, treetop is w:netrw_treetop, but a 9087 " Normally, treetop is w:netrw_treetop, but a
9319 " user of the function ( netrw#SetTreetop() ) 9088 " user of the function ( netrw#SetTreetop() )
9320 " wipes that out prior to calling this function 9089 " wipes that out prior to calling this function
9321 fun! s:NetrwTreePath(treetop) 9090 fun! s:NetrwTreePath(treetop)
9322 " call Dfunc("s:NetrwTreePath(treetop<".a:treetop.">) line#".line(".")."<".getline(".").">") 9091 " call Dfunc("s:NetrwTreePath() 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
9332 let svpos = winsaveview() 9092 let svpos = winsaveview()
9333 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) 9093 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))
9334 let depth = substitute(getline('.'),'^\(\%('.s:treedepthstring.'\)*\)[^'.s:treedepthstring.'].\{-}$','\1','e') 9094 let depth = substitute(getline('.'),'^\(\%('.s:treedepthstring.'\)*\)[^'.s:treedepthstring.'].\{-}$','\1','e')
9335 " call Decho("depth<".depth."> 1st subst",'~'.expand("<slnum>")) 9095 " call Decho("depth<".depth."> 1st subst",'~'.expand("<slnum>"))
9336 let depth = substitute(depth,'^'.s:treedepthstring,'','') 9096 let depth = substitute(depth,'^'.s:treedepthstring,'','')
9357 let dirname= substitute(getline('.'),'^\('.s:treedepthstring.'\)*','','e') 9117 let dirname= substitute(getline('.'),'^\('.s:treedepthstring.'\)*','','e')
9358 let treedir= dirname.treedir 9118 let treedir= dirname.treedir
9359 let depth = substitute(depth,'^'.s:treedepthstring,'','') 9119 let depth = substitute(depth,'^'.s:treedepthstring,'','')
9360 " call Decho("constructing treedir<".treedir.">: dirname<".dirname."> while depth<".depth.">",'~'.expand("<slnum>")) 9120 " call Decho("constructing treedir<".treedir.">: dirname<".dirname."> while depth<".depth.">",'~'.expand("<slnum>"))
9361 endwhile 9121 endwhile
9362 " call Decho("treedir#1<".treedir.">",'~'.expand("<slnum>"))
9363 if a:treetop =~ '/$' 9122 if a:treetop =~ '/$'
9364 let treedir= a:treetop.treedir 9123 let treedir= a:treetop.treedir
9365 else 9124 else
9366 let treedir= a:treetop.'/'.treedir 9125 let treedir= a:treetop.'/'.treedir
9367 endif 9126 endif
9368 " call Decho("treedir#2<".treedir.">",'~'.expand("<slnum>"))
9369 let treedir= substitute(treedir,'//$','/','') 9127 let treedir= substitute(treedir,'//$','/','')
9370 " call Decho("treedir#3<".treedir.">",'~'.expand("<slnum>"))
9371 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))" 9128 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))"
9372 call winrestview(svpos) 9129 call winrestview(svpos)
9373 " call Dret("s:NetrwTreePath <".treedir.">") 9130 " call Dret("s:NetrwTreePath <".treedir.">")
9374 return treedir 9131 return treedir
9375 endfun 9132 endfun
9455 " --------------------------------------------------------------------- 9212 " ---------------------------------------------------------------------
9456 " s:PerformListing: {{{2 9213 " s:PerformListing: {{{2
9457 fun! s:PerformListing(islocal) 9214 fun! s:PerformListing(islocal)
9458 " call Dfunc("s:PerformListing(islocal=".a:islocal.")") 9215 " call Dfunc("s:PerformListing(islocal=".a:islocal.")")
9459 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol()." line($)=".line("$"),'~'.expand("<slnum>")) 9216 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol()." line($)=".line("$"),'~'.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>")) 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>"))
9461 9218
9462 " set up syntax highlighting {{{3 9219 " set up syntax highlighting {{{3
9463 " call Decho("--set up syntax highlighting (ie. setl ft=netrw)",'~'.expand("<slnum>")) 9220 " call Decho("--set up syntax highlighting (ie. setl ft=netrw)",'~'.expand("<slnum>"))
9464 sil! setl ft=netrw 9221 sil! setl ft=netrw
9465 9222
9535 exe "sil! NetrwKeepj ".w:netrw_bannercnt 9292 exe "sil! NetrwKeepj ".w:netrw_bannercnt
9536 " else " Decho 9293 " else " Decho
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>")) 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>"))
9538 endif 9295 endif
9539 9296
9540 " show copy/move target, if any {{{3 9297 " show copy/move target, if any
9541 if g:netrw_banner 9298 if g:netrw_banner
9542 if exists("s:netrwmftgt") && exists("s:netrwmftgt_islocal") 9299 if exists("s:netrwmftgt") && exists("s:netrwmftgt_islocal")
9543 " call Decho("--show copy/move target<".s:netrwmftgt.">",'~'.expand("<slnum>")) 9300 " call Decho("--show copy/move target<".s:netrwmftgt.">",'~'.expand("<slnum>"))
9544 NetrwKeepj put ='' 9301 NetrwKeepj put =''
9545 if s:netrwmftgt_islocal 9302 if s:netrwmftgt_islocal
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>")) 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>"))
9692 9449
9693 " resolve symbolic links if local and (thin or tree) 9450 " resolve symbolic links if local and (thin or tree)
9694 if a:islocal && (w:netrw_liststyle == s:THINLIST || (exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST)) 9451 if a:islocal && (w:netrw_liststyle == s:THINLIST || (exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST))
9695 " call Decho("--resolve symbolic links if local and thin|tree",'~'.expand("<slnum>")) 9452 " call Decho("--resolve symbolic links if local and thin|tree",'~'.expand("<slnum>"))
9696 sil! g/@$/call s:ShowLink() 9453 g/@$/call s:ShowLink()
9697 endif 9454 endif
9698 9455
9699 if exists("w:netrw_bannercnt") && (line("$") >= w:netrw_bannercnt || !g:netrw_banner) 9456 if exists("w:netrw_bannercnt") && (line("$") >= w:netrw_bannercnt || !g:netrw_banner)
9700 " place cursor on the top-left corner of the file listing 9457 " place cursor on the top-left corner of the file listing
9701 " call Decho("--place cursor on top-left corner of file listing",'~'.expand("<slnum>")) 9458 " call Decho("--place cursor on top-left corner of file listing",'~'.expand("<slnum>"))
9784 redraw 9541 redraw
9785 9542
9786 " call Dret("SetupNetrwStatusLine : stl=".&stl) 9543 " call Dret("SetupNetrwStatusLine : stl=".&stl)
9787 endfun 9544 endfun
9788 9545
9789 " ========================================= 9546 " ---------------------------------------------------------------------
9790 " Remote Directory Browsing Support: {{{1 9547 " Remote Directory Browsing Support: {{{1
9791 " ========================================= 9548 " ===========================================
9792 9549
9793 " --------------------------------------------------------------------- 9550 " ---------------------------------------------------------------------
9794 " s:NetrwRemoteFtpCmd: unfortunately, not all ftp servers honor options for ls {{{2 9551 " s:NetrwRemoteFtpCmd: unfortunately, not all ftp servers honor options for ls {{{2
9795 " This function assumes that a long listing will be received. Size, time, 9552 " This function assumes that a long listing will be received. Size, time,
9796 " and reverse sorts will be requested of the server but not otherwise 9553 " and reverse sorts will be requested of the server but not otherwise
10387 NetrwKeepj call winrestview(svpos) 10144 NetrwKeepj call winrestview(svpos)
10388 10145
10389 " call Dret("NetrwRemoteRename") 10146 " call Dret("NetrwRemoteRename")
10390 endfun 10147 endfun
10391 10148
10392 " ========================================== 10149 " ---------------------------------------------------------------------
10393 " Local Directory Browsing Support: {{{1 10150 " Local Directory Browsing Support: {{{1
10394 " ========================================== 10151 " ==========================================
10395 10152
10396 " --------------------------------------------------------------------- 10153 " ---------------------------------------------------------------------
10397 " netrw#FileUrlEdit: handles editing file://* files {{{2 10154 " netrw#FileUrlRead: handles reading file://* files {{{2
10398 " Should accept: file://localhost/etc/fstab 10155 " Should accept: file://localhost/etc/fstab
10399 " file:///etc/fstab 10156 " file:///etc/fstab
10400 " file:///c:/WINDOWS/clock.avi 10157 " file:///c:/WINDOWS/clock.avi
10401 " file:///c|/WINDOWS/clock.avi 10158 " file:///c|/WINDOWS/clock.avi
10402 " file://localhost/c:/WINDOWS/clock.avi 10159 " file://localhost/c:/WINDOWS/clock.avi
10403 " file://localhost/c|/WINDOWS/clock.avi 10160 " file://localhost/c|/WINDOWS/clock.avi
10404 " file://c:/foo.txt 10161 " file://c:/foo.txt
10405 " file:///c:/foo.txt 10162 " file:///c:/foo.txt
10406 " and %XX (where X is [0-9a-fA-F] is converted into a character with the given hexadecimal value 10163 " and %XX (where X is [0-9a-fA-F] is converted into a character with the given hexadecimal value
10407 fun! netrw#FileUrlEdit(fname) 10164 fun! netrw#FileUrlRead(fname)
10408 " call Dfunc("netrw#FileUrlEdit(fname<".a:fname.">)") 10165 " call Dfunc("netrw#FileUrlRead(fname<".a:fname.">)")
10409 let fname = a:fname 10166 let fname = a:fname
10410 if fname =~ '^file://localhost/' 10167 if fname =~ '^file://localhost/'
10411 " call Decho('converting file://localhost/ -to- file:///','~'.expand("<slnum>")) 10168 " call Decho('converting file://localhost/ -to- file:///','~'.expand("<slnum>"))
10412 let fname= substitute(fname,'^file://localhost/','file:///','') 10169 let fname= substitute(fname,'^file://localhost/','file:///','')
10413 " call Decho("fname<".fname.">",'~'.expand("<slnum>")) 10170 " call Decho("fname<".fname.">",'~'.expand("<slnum>"))
10427 if plainfname =~ '^/\+\a:' 10184 if plainfname =~ '^/\+\a:'
10428 " call Decho('removing leading "/"s','~'.expand("<slnum>")) 10185 " call Decho('removing leading "/"s','~'.expand("<slnum>"))
10429 let plainfname= substitute(plainfname,'^/\+\(\a:\)','\1','') 10186 let plainfname= substitute(plainfname,'^/\+\(\a:\)','\1','')
10430 endif 10187 endif
10431 endif 10188 endif
10432
10433 " call Decho("fname2396<".fname2396.">",'~'.expand("<slnum>")) 10189 " call Decho("fname2396<".fname2396.">",'~'.expand("<slnum>"))
10434 " call Decho("plainfname<".plainfname.">",'~'.expand("<slnum>")) 10190 " call Decho("plainfname<".plainfname.">",'~'.expand("<slnum>"))
10435 exe "sil doau BufReadPre ".fname2396e 10191 exe "sil doau BufReadPre ".fname2396e
10436 exe 'NetrwKeepj keepalt edit '.plainfname 10192 exe 'NetrwKeepj r '.plainfname
10437 exe 'sil! NetrwKeepj keepalt bdelete '.fnameescape(a:fname) 10193 exe 'sil! bdelete '.plainfname
10438 10194 exe 'keepalt file! '.plainfname
10195 NetrwKeepj 1d
10196 " call Decho("setl nomod",'~'.expand("<slnum>"))
10197 setl nomod
10439 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) 10198 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
10440 " call Dret("netrw#FileUrlEdit") 10199 " call Dret("netrw#FileUrlRead")
10441 exe "sil doau BufReadPost ".fname2396e 10200 exe "sil doau BufReadPost ".fname2396e
10442 endfun 10201 endfun
10443 10202
10444 " --------------------------------------------------------------------- 10203 " ---------------------------------------------------------------------
10445 " netrw#LocalBrowseCheck: {{{2 10204 " netrw#LocalBrowseCheck: {{{2
10453 " would hit when re-entering netrw windows, creating unexpected 10212 " would hit when re-entering netrw windows, creating unexpected
10454 " refreshes (and would do so in the middle of NetrwSaveOptions(), too) 10213 " refreshes (and would do so in the middle of NetrwSaveOptions(), too)
10455 " call Dfunc("netrw#LocalBrowseCheck(dirname<".a:dirname.">") 10214 " call Dfunc("netrw#LocalBrowseCheck(dirname<".a:dirname.">")
10456 " call Decho("isdir<".a:dirname."> =".isdirectory(s:NetrwFile(a:dirname)).((exists("s:treeforceredraw")? " treeforceredraw" : "")).'~'.expand("<slnum>")) 10215 " call Decho("isdir<".a:dirname."> =".isdirectory(s:NetrwFile(a:dirname)).((exists("s:treeforceredraw")? " treeforceredraw" : "")).'~'.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>")) 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>"))
10458 " call Dredir("ls!","netrw#LocalBrowseCheck") 10217 " call Dredir("ls!","ls!")
10459 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>")) 10218 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>"))
10460 " call Decho("current buffer#".bufnr("%")."<".bufname("%")."> ft=".&ft,'~'.expand("<slnum>")) 10219 " call Decho("current buffer#".bufnr("%")."<".bufname("%")."> ft=".&ft,'~'.expand("<slnum>"))
10461 10220
10462 let ykeep= @@ 10221 let ykeep= @@
10463 if isdirectory(s:NetrwFile(a:dirname)) 10222 if isdirectory(s:NetrwFile(a:dirname))
10532 let buftablist = [] 10291 let buftablist = []
10533 let ykeep = @@ 10292 let ykeep = @@
10534 while itab <= tabpagenr("$") 10293 while itab <= tabpagenr("$")
10535 let buftablist = buftablist + tabpagebuflist() 10294 let buftablist = buftablist + tabpagebuflist()
10536 let itab = itab + 1 10295 let itab = itab + 1
10537 sil! tabn 10296 tabn
10538 endwhile 10297 endwhile
10539 " call Decho("buftablist".string(buftablist),'~'.expand("<slnum>")) 10298 " call Decho("buftablist".string(buftablist),'~'.expand("<slnum>"))
10540 " call Decho("s:netrw_browselist<".(exists("s:netrw_browselist")? string(s:netrw_browselist) : "").">",'~'.expand("<slnum>")) 10299 " call Decho("s:netrw_browselist<".(exists("s:netrw_browselist")? string(s:netrw_browselist) : "").">",'~'.expand("<slnum>"))
10541 " GO through all buffers on netrw_browselist (ie. just local-netrw buffers): 10300 " GO through all buffers on netrw_browselist (ie. just local-netrw buffers):
10542 " | refresh any netrw window 10301 " | refresh any netrw window
10543 " | wipe out any non-displaying netrw buffer 10302 " | wipe out any non-displaying netrw buffer
10544 let curwinid = win_getid(winnr()) 10303 let curwin = winnr()
10545 let ibl = 0 10304 let ibl = 0
10546 for ibuf in s:netrw_browselist 10305 for ibuf in s:netrw_browselist
10547 " call Decho("bufwinnr(".ibuf.") index(buftablist,".ibuf.")=".index(buftablist,ibuf),'~'.expand("<slnum>")) 10306 " call Decho("bufwinnr(".ibuf.") index(buftablist,".ibuf.")=".index(buftablist,ibuf),'~'.expand("<slnum>"))
10548 if bufwinnr(ibuf) == -1 && index(buftablist,ibuf) == -1 10307 if bufwinnr(ibuf) == -1 && index(buftablist,ibuf) == -1
10549 " wipe out any non-displaying netrw buffer 10308 " wipe out any non-displaying netrw buffer
10550 " (ibuf not shown in a current window AND
10551 " ibuf not in any tab)
10552 " call Decho("wiping buf#".ibuf,"<".bufname(ibuf).">",'~'.expand("<slnum>")) 10309 " call Decho("wiping buf#".ibuf,"<".bufname(ibuf).">",'~'.expand("<slnum>"))
10553 exe "sil! keepj bd ".fnameescape(ibuf) 10310 exe "sil! keepj bd ".fnameescape(ibuf)
10554 call remove(s:netrw_browselist,ibl) 10311 call remove(s:netrw_browselist,ibl)
10555 " call Decho("browselist=".string(s:netrw_browselist),'~'.expand("<slnum>")) 10312 " call Decho("browselist=".string(s:netrw_browselist),'~'.expand("<slnum>"))
10556 continue 10313 continue
10570 NetrwKeepj call s:NetrwRefresh(1,s:NetrwBrowseChgDir(1,'./')) 10327 NetrwKeepj call s:NetrwRefresh(1,s:NetrwBrowseChgDir(1,'./'))
10571 endif 10328 endif
10572 let ibl= ibl + 1 10329 let ibl= ibl + 1
10573 " call Decho("bottom of s:netrw_browselist for loop: ibl=".ibl,'~'.expand("<slnum>")) 10330 " call Decho("bottom of s:netrw_browselist for loop: ibl=".ibl,'~'.expand("<slnum>"))
10574 endfor 10331 endfor
10575 " call Decho("restore window: win_gotoid(".curwinid.")") 10332 " call Decho("restore window: exe ".curwin."wincmd w",'~'.expand("<slnum>"))
10576 call win_gotoid(curwinid) 10333 exe curwin."wincmd w"
10577 let @@= ykeep 10334 let @@= ykeep
10578 10335
10579 " call Dret("s:LocalBrowseRefresh") 10336 " call Dret("s:LocalBrowseRefresh")
10580 endfun 10337 endfun
10581 10338
11027 endif 10784 endif
11028 endif 10785 endif
11029 let rmfile= substitute(rmfile,'[\/]$','','e') 10786 let rmfile= substitute(rmfile,'[\/]$','','e')
11030 10787
11031 if all || ok =~# 'y\%[es]' || ok == "" 10788 if all || ok =~# 'y\%[es]' || ok == ""
11032 if v:version < 704 || (v:version == 704 && !has("patch1107")) 10789 if v:version < 704 || !has("patch1109")
11033 " " call Decho("1st attempt: system(netrw#WinPath(".g:netrw_localrmdir.') '.s:ShellEscape(rmfile).')','~'.expand("<slnum>")) 10790 " " call Decho("1st attempt: system(netrw#WinPath(".g:netrw_localrmdir.') '.s:ShellEscape(rmfile).')','~'.expand("<slnum>"))
11034 call system(netrw#WinPath(g:netrw_localrmdir).' '.s:ShellEscape(rmfile)) 10791 call system(netrw#WinPath(g:netrw_localrmdir).' '.s:ShellEscape(rmfile))
11035 " " call Decho("v:shell_error=".v:shell_error,'~'.expand("<slnum>")) 10792 " " call Decho("v:shell_error=".v:shell_error,'~'.expand("<slnum>"))
11036 10793
11037 if v:shell_error != 0 10794 if v:shell_error != 0
11063 10820
11064 " call Dret("s:NetrwLocalRmFile ".ok) 10821 " call Dret("s:NetrwLocalRmFile ".ok)
11065 return ok 10822 return ok
11066 endfun 10823 endfun
11067 10824
11068 " ===================================================================== 10825 " ---------------------------------------------------------------------
11069 " Support Functions: {{{1 10826 " 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
11070 10838
11071 " --------------------------------------------------------------------- 10839 " ---------------------------------------------------------------------
11072 " netrw#Access: intended to provide access to variable values for netrw's test suite {{{2 10840 " netrw#Access: intended to provide access to variable values for netrw's test suite {{{2
11073 " 0: marked file list of current buffer 10841 " 0: marked file list of current buffer
11074 " 1: marked file target 10842 " 1: marked file target
11079 else 10847 else
11080 return "no-list-buf#".bufnr('%') 10848 return "no-list-buf#".bufnr('%')
11081 endif 10849 endif
11082 elseif a:ilist == 1 10850 elseif a:ilist == 1
11083 return s:netrwmftgt 10851 return s:netrwmftgt
11084 endif
11085 endfun 10852 endfun
11086 10853
11087 " --------------------------------------------------------------------- 10854 " ---------------------------------------------------------------------
11088 " netrw#Call: allows user-specified mappings to call internal netrw functions {{{2 10855 " netrw#Call: allows user-specified mappings to call internal netrw functions {{{2
11089 fun! netrw#Call(funcname,...) 10856 fun! netrw#Call(funcname,...)
11090 return call("s:".a:funcname,a:000) 10857 " call Dfunc("netrw#Call(funcname<".a:funcname.">,".string(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")
11091 endfun 10864 endfun
11092 10865
11093 " --------------------------------------------------------------------- 10866 " ---------------------------------------------------------------------
11094 " netrw#Expose: allows UserMaps and pchk to look at otherwise script-local variables {{{2 10867 " netrw#Expose: allows UserMaps and pchk to look at otherwise script-local variables {{{2
11095 " I expect this function to be used in 10868 " I expect this function to be used in
11195 " call Dret("netrw#WinPath <".path.">") 10968 " call Dret("netrw#WinPath <".path.">")
11196 return path 10969 return path
11197 endfun 10970 endfun
11198 10971
11199 " --------------------------------------------------------------------- 10972 " ---------------------------------------------------------------------
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 " ---------------------------------------------------------------------
11229 " s:ComposePath: Appends a new part to a path taking different systems into consideration {{{2 10973 " s:ComposePath: Appends a new part to a path taking different systems into consideration {{{2
11230 fun! s:ComposePath(base,subdir) 10974 fun! s:ComposePath(base,subdir)
11231 " call Dfunc("s:ComposePath(base<".a:base."> subdir<".a:subdir.">)") 10975 " call Dfunc("s:ComposePath(base<".a:base."> subdir<".a:subdir.">)")
11232 10976
11233 if has("amiga") 10977 if has("amiga")
11237 let ret = a:base."/" . a:subdir 10981 let ret = a:base."/" . a:subdir
11238 else 10982 else
11239 let ret = a:base.a:subdir 10983 let ret = a:base.a:subdir
11240 endif 10984 endif
11241 10985
11242 " COMBAK: test on windows with changing to root directory: :e C:/ 10986 elseif a:subdir =~ '^\a:[/\\][^/\\]' && (has("win32") || has("win95") || has("win64") || has("win16"))
11243 elseif a:subdir =~ '^\a:[/\\]\([^/\\]\|$\)' && (has("win32") || has("win95") || has("win64") || has("win16"))
11244 " call Decho("windows",'~'.expand("<slnum>")) 10987 " call Decho("windows",'~'.expand("<slnum>"))
11245 let ret= a:subdir 10988 let ret= a:subdir
11246 10989
11247 elseif a:base =~ '^\a:[/\\]\([^/\\]\|$\)' && (has("win32") || has("win95") || has("win64") || has("win16")) 10990 elseif a:base =~ '^\a:[/\\][^/\\]' && (has("win32") || has("win95") || has("win64") || has("win16"))
11248 " call Decho("windows",'~'.expand("<slnum>")) 10991 " call Decho("windows",'~'.expand("<slnum>"))
11249 if a:base =~ '[/\\]$' 10992 if a:base =~ '[/\\]$'
11250 let ret= a:base.a:subdir 10993 let ret= a:base.a:subdir
11251 else 10994 else
11252 let ret= a:base.'/'.a:subdir 10995 let ret= a:base.'/'.a:subdir
11584 endfun 11327 endfun
11585 11328
11586 " --------------------------------------------------------------------- 11329 " ---------------------------------------------------------------------
11587 " s:NetrwEnew: opens a new buffer, passes netrw buffer variables through {{{2 11330 " s:NetrwEnew: opens a new buffer, passes netrw buffer variables through {{{2
11588 fun! s:NetrwEnew(...) 11331 fun! s:NetrwEnew(...)
11589 " call Dfunc("s:NetrwEnew() a:0=".a:0." bufnr($)=".bufnr("$")." expand(%)<".expand("%").">") 11332 " call Dfunc("s:NetrwEnew() a:0=".a:0." bufnr($)=".bufnr("$"))
11590 " call Decho("curdir<".((a:0>0)? a:1 : "")."> buf#".bufnr("%")."<".bufname("%").">",'~'.expand("<slnum>")) 11333 " call Decho("curdir<".((a:0>0)? a:1 : "")."> buf#".bufnr("%")."<".bufname("%").">",'~'.expand("<slnum>"))
11591 11334
11592 " grab a function-local-variable copy of buffer variables 11335 " grab a function-local-variable copy of buffer variables
11593 " call Decho("make function-local copy of netrw variables",'~'.expand("<slnum>")) 11336 " call Decho("make function-local copy of netrw variables",'~'.expand("<slnum>"))
11594 if exists("b:netrw_bannercnt") |let netrw_bannercnt = b:netrw_bannercnt |endif 11337 if exists("b:netrw_bannercnt") |let netrw_bannercnt = b:netrw_bannercnt |endif
11647 file NetrwTreeListing 11390 file NetrwTreeListing
11648 setl nobl bt=nowrite bh=hide 11391 setl nobl bt=nowrite bh=hide
11649 nno <silent> <buffer> [ :sil call <SID>TreeListMove('[')<cr> 11392 nno <silent> <buffer> [ :sil call <SID>TreeListMove('[')<cr>
11650 nno <silent> <buffer> ] :sil call <SID>TreeListMove(']')<cr> 11393 nno <silent> <buffer> ] :sil call <SID>TreeListMove(']')<cr>
11651 else 11394 else
11652 call s:NetrwBufRename(b:netrw_curdir) 11395 exe "sil! keepalt file ".fnameescape(b:netrw_curdir)
11653 endif 11396 endif
11654 endif 11397 endif
11655 endif 11398 endif
11656 11399
11657 " call Dret("s:NetrwEnew : buf#".bufnr("%")."<".bufname("%")."> expand(%)<".expand("%")."> expand(#)<".expand("#")."> bh=".&bh." win#".winnr()." winnr($)#".winnr("$")) 11400 " call Dret("s:NetrwEnew : buf#".bufnr("%")."<".bufname("%")."> expand(%)<".expand("%")."> expand(#)<".expand("#")."> bh=".&bh." win#".winnr()." winnr($)#".winnr("$"))
11658 endfun 11401 endfun
11659 11402
11660 " --------------------------------------------------------------------- 11403 " ---------------------------------------------------------------------
11661 " s:NetrwExe: executes a string using "!" {{{2 11404 " s:NetrwExe: executes a string using "!" {{{2
11662 fun! s:NetrwExe(cmd) 11405 fun! s:NetrwExe(cmd)
11663 " call Dfunc("s:NetrwExe(a:cmd<".a:cmd.">)") 11406 " call Dfunc("s:NetrwExe(a:cmd)")
11664 if has("win32") && &shell !~? 'cmd' && !g:netrw_cygwin 11407 if has("win32") && &shell !~? 'cmd' && !g:netrw_cygwin
11665 " call Decho("using win32:",expand("<slnum>"))
11666 let savedShell=[&shell,&shellcmdflag,&shellxquote,&shellxescape,&shellquote,&shellpipe,&shellredir,&shellslash] 11408 let savedShell=[&shell,&shellcmdflag,&shellxquote,&shellxescape,&shellquote,&shellpipe,&shellredir,&shellslash]
11667 set shell& shellcmdflag& shellxquote& shellxescape& 11409 set shell& shellcmdflag& shellxquote& shellxescape&
11668 set shellquote& shellpipe& shellredir& shellslash& 11410 set shellquote& shellpipe& shellredir& shellslash&
11669 exe a:cmd 11411 exe a:cmd
11670 let [&shell,&shellcmdflag,&shellxquote,&shellxescape,&shellquote,&shellpipe,&shellredir,&shellslash] = savedShell 11412 let [&shell,&shellcmdflag,&shellxquote,&shellxescape,&shellquote,&shellpipe,&shellredir,&shellslash] = savedShell
11671 else 11413 else
11672 " call Decho("exe ".a:cmd,'~'.expand("<slnum>"))
11673 exe a:cmd 11414 exe a:cmd
11674 endif 11415 endif
11675 " call Dret("s:NetrwExe : v:shell_error=".v:shell_error) 11416 " call Dret("s:NetrwExe")
11676 endfun 11417 endfun
11677 11418
11678 " --------------------------------------------------------------------- 11419 " ---------------------------------------------------------------------
11679 " s:NetrwInsureWinVars: insure that a netrw buffer has its w: variables in spite of a wincmd v or s {{{2 11420 " s:NetrwInsureWinVars: insure that a netrw buffer has its w: variables in spite of a wincmd v or s {{{2
11680 fun! s:NetrwInsureWinVars() 11421 fun! s:NetrwInsureWinVars()
11703 endif 11444 endif
11704 endfun 11445 endfun
11705 11446
11706 " --------------------------------------------------------------------- 11447 " ---------------------------------------------------------------------
11707 " s:NetrwLcd: handles changing the (local) directory {{{2 11448 " s:NetrwLcd: handles changing the (local) directory {{{2
11708 " Returns: 0=success
11709 " -1=failed
11710 fun! s:NetrwLcd(newdir) 11449 fun! s:NetrwLcd(newdir)
11711 " call Dfunc("s:NetrwLcd(newdir<".a:newdir.">)") 11450 " call Dfunc("s:NetrwLcd(newdir<".a:newdir.">)")
11712 11451
11713 let err472= 0
11714 try 11452 try
11715 exe 'NetrwKeepj sil lcd '.fnameescape(a:newdir) 11453 exe 'NetrwKeepj sil lcd '.fnameescape(a:newdir)
11716 catch /^Vim\%((\a\+)\)\=:E344/ 11454 catch /^Vim\%((\a\+)\)\=:E344/
11717 " Vim's lcd fails with E344 when attempting to go above the 'root' of a Windows share. 11455 " Vim's lcd fails with E344 when attempting to go above the 'root' of a Windows share.
11718 " Therefore, detect if a Windows share is present, and if E344 occurs, just settle at 11456 " Therefore, detect if a Windows share is present, and if E344 occurs, just settle at
11724 let dirname = '\' 11462 let dirname = '\'
11725 exe 'NetrwKeepj sil lcd '.fnameescape(dirname) 11463 exe 'NetrwKeepj sil lcd '.fnameescape(dirname)
11726 endif 11464 endif
11727 endif 11465 endif
11728 catch /^Vim\%((\a\+)\)\=:E472/ 11466 catch /^Vim\%((\a\+)\)\=:E472/
11729 let err472= 1
11730 endtry
11731
11732 if err472
11733 call netrw#ErrorMsg(s:ERROR,"unable to change directory to <".a:newdir."> (permissions?)",61) 11467 call netrw#ErrorMsg(s:ERROR,"unable to change directory to <".a:newdir."> (permissions?)",61)
11734 if exists("w:netrw_prvdir") 11468 if exists("w:netrw_prvdir")
11735 let a:newdir= w:netrw_prvdir 11469 let a:newdir= w:netrw_prvdir
11736 else 11470 else
11737 call s:NetrwOptionRestore("w:") 11471 call s:NetrwOptionRestore("w:")
11738 " call Decho("setl noma nomod nowrap",'~'.expand("<slnum>")) 11472 " call Decho("setl noma nomod nowrap",'~'.expand("<slnum>"))
11739 exe "setl ".g:netrw_bufsettings 11473 exe "setl ".g:netrw_bufsettings
11740 " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) 11474 " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
11741 let a:newdir= dirname 11475 let a:newdir= dirname
11742 endif 11476 " call Dret("s:NetrwBrowse : reusing buffer#".(exists("bufnum")? bufnum : 'N/A')."<".dirname."> getcwd<".getcwd().">")
11743 " call Dret("s:NetrwBrowse -1 : reusing buffer#".(exists("bufnum")? bufnum : 'N/A')."<".dirname."> getcwd<".getcwd().">") 11477 return
11744 return -1 11478 endif
11745 endif 11479 endtry
11746 11480
11747 " call Dret("s:NetrwLcd 0") 11481 " call Dret("s:NetrwLcd")
11748 return 0
11749 endfun 11482 endfun
11750 11483
11751 " ------------------------------------------------------------------------ 11484 " ------------------------------------------------------------------------
11752 " s:NetrwSaveWordPosn: used to keep cursor on same word after refresh, {{{2 11485 " s:NetrwSaveWordPosn: used to keep cursor on same word after refresh, {{{2
11753 " changed sorting, etc. Also see s:NetrwRestoreWordPosn(). 11486 " changed sorting, etc. Also see s:NetrwRestoreWordPosn().
11911 " s:Rexplore: implements returning from a buffer to a netrw directory {{{2 11644 " s:Rexplore: implements returning from a buffer to a netrw directory {{{2
11912 " 11645 "
11913 " s:SetRexDir() sets up <2-leftmouse> maps (if g:netrw_retmap 11646 " s:SetRexDir() sets up <2-leftmouse> maps (if g:netrw_retmap
11914 " is true) and a command, :Rexplore, which call this function. 11647 " is true) and a command, :Rexplore, which call this function.
11915 " 11648 "
11916 " s:netrw_posn is set up by s:NetrwBrowseChgDir() 11649 " s:netrw_nbcd is set up by s:NetrwBrowseChgDir()
11917 " 11650 "
11918 " s:rexposn_BUFNR used to save/restore cursor position 11651 " s:rexposn_BUFNR used to save/restore cursor position
11919 fun! s:NetrwRexplore(islocal,dirname) 11652 fun! s:NetrwRexplore(islocal,dirname)
11920 if exists("s:netrwdrag") 11653 if exists("s:netrwdrag")
11921 return 11654 return
11967 endif 11700 endif
11968 else 11701 else
11969 " call Decho("s:rexposn_".bufnr('%')."<".bufname("%")."> doesn't exist",'~'.expand("<slnum>")) 11702 " call Decho("s:rexposn_".bufnr('%')."<".bufname("%")."> doesn't exist",'~'.expand("<slnum>"))
11970 endif 11703 endif
11971 11704
11972 if has("syntax") && exists("g:syntax_on") && g:syntax_on 11705 if exists("s:explore_match")
11973 if exists("s:explore_match") 11706 exe "2match netrwMarkFile /".s:explore_match."/"
11974 exe "2match netrwMarkFile /".s:explore_match."/"
11975 endif
11976 endif 11707 endif
11977 11708
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>")) 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>"))
11979 " call Dret("s:NetrwRexplore : ft=".&ft) 11710 " call Dret("s:NetrwRexplore : ft=".&ft)
11980 endfun 11711 endfun
11998 " --------------------------------------------------------------------- 11729 " ---------------------------------------------------------------------
11999 " s:SavePosn: saves position associated with current buffer into a dictionary {{{2 11730 " s:SavePosn: saves position associated with current buffer into a dictionary {{{2
12000 fun! s:SavePosn(posndict) 11731 fun! s:SavePosn(posndict)
12001 " call Dfunc("s:SavePosn(posndict) curbuf#".bufnr("%")."<".bufname("%").">") 11732 " call Dfunc("s:SavePosn(posndict) curbuf#".bufnr("%")."<".bufname("%").">")
12002 11733
12003 if !exists("a:posndict[bufnr('%')]") 11734 let a:posndict[bufnr("%")]= winsaveview()
12004 let a:posndict[bufnr("%")]= [] 11735 " call Decho("saving posn: posndict[".bufnr("%")."]=".string(winsaveview()),'~'.expand("<slnum>"))
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('%')]))
12009 11736
12010 " call Dret("s:SavePosn posndict") 11737 " call Dret("s:SavePosn posndict")
12011 return a:posndict 11738 return a:posndict
12012 endfun 11739 endfun
12013 11740
12014 " --------------------------------------------------------------------- 11741 " ---------------------------------------------------------------------
12015 " s:RestorePosn: restores position associated with current buffer using dictionary {{{2 11742 " s:RestorePosn: restores position associated with current buffer using dictionary {{{2
12016 fun! s:RestorePosn(posndict) 11743 fun! s:RestorePosn(posndict)
12017 " call Dfunc("s:RestorePosn(posndict) curbuf#".bufnr("%")."<".bufname("%").">") 11744 " call Dfunc("s:RestorePosn(posndict) curbuf#".bufnr("%")."<".bufname("%").">")
12018 if exists("a:posndict") 11745 if has_key(a:posndict,bufnr("%"))
12019 if has_key(a:posndict,bufnr("%")) 11746 call winrestview(a:posndict[bufnr("%")])
12020 " call Decho("before pop: a:posndict[buf#".bufnr("%")."]=".string(a:posndict[bufnr('%')])) 11747 " call Decho("restoring posn: posndict[".bufnr("%")."]=".string(a:posndict[bufnr("%")]),'~'.expand("<slnum>"))
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
12030 endif 11748 endif
12031 " call Dret("s:RestorePosn") 11749 " call Dret("s:RestorePosn")
12032 endfun 11750 endfun
12033 11751
12034 " --------------------------------------------------------------------- 11752 " ---------------------------------------------------------------------
12312 endif 12030 endif
12313 12031
12314 " call Dret("s:UserMaps") 12032 " call Dret("s:UserMaps")
12315 endfun 12033 endfun
12316 12034
12317 " ========================== 12035 " ---------------------------------------------------------------------
12318 " Settings Restoration: {{{1 12036 " Settings Restoration: {{{1
12319 " ==========================
12320 let &cpo= s:keepcpo 12037 let &cpo= s:keepcpo
12321 unlet s:keepcpo 12038 unlet s:keepcpo
12322 12039
12323 " =============== 12040 " ------------------------------------------------------------------------
12324 " Modelines: {{{1 12041 " Modelines: {{{1
12325 " ===============
12326 " vim:ts=8 fdm=marker 12042 " vim:ts=8 fdm=marker