Mercurial > vim
comparison runtime/autoload/netrw.vim @ 17433:ca8e754bdd53
Update runtime files
commit https://github.com/vim/vim/commit/85850f3a5ef9f5a9d22e908ef263de8faa265a95
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Jul 19 22:05:51 2019 +0200
Update runtime files
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 19 Jul 2019 22:15:08 +0200 |
parents | 6ef705baab8d |
children | e9a47bcf7b94 |
comparison
equal
deleted
inserted
replaced
17432:d13620591637 | 17433:ca8e754bdd53 |
---|---|
1 " netrw.vim: Handles file transfer and remote directory listing across | 1 " netrw.vim: Handles file transfer and remote directory listing across |
2 " AUTOLOAD SECTION | 2 " AUTOLOAD SECTION |
3 " Date: Apr 20, 2016 | 3 " Date: Jul 16, 2019 |
4 " Version: 156 | 4 " Version: 165 |
5 " Maintainer: Charles E Campbell <NdrOchip@ScampbellPfamily.AbizM-NOSPAM> | 5 " Maintainer: Charles E Campbell <NdrOchip@ScampbellPfamily.AbizM-NOSPAM> |
6 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim | 6 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim |
7 " Copyright: Copyright (C) 2016 Charles E. Campbell {{{1 | 7 " Copyright: Copyright (C) 2016 Charles E. Campbell {{{1 |
8 " Permission is hereby granted to use and distribute this code, | 8 " Permission is hereby granted to use and distribute this code, |
9 " with or without modifications, provided that this copyright | 9 " with or without modifications, provided that this copyright |
20 " =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | 20 " =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- |
21 " Load Once: {{{1 | 21 " Load Once: {{{1 |
22 if &cp || exists("g:loaded_netrw") | 22 if &cp || exists("g:loaded_netrw") |
23 finish | 23 finish |
24 endif | 24 endif |
25 " netrw requires vim having patch 7.4.213; netrw will benefit from vim's having patch#656, too | 25 |
26 if v:version < 704 || (v:version == 704 && !has("patch213")) | 26 " Check that vim has patches that netrw requires. |
27 if !exists("s:needpatch213") | 27 " Patches needed for v7.4: 1557, and 213. |
28 unsilent echomsg "***sorry*** this version of netrw requires vim v7.4 with patch 213" | 28 " (netrw will benefit from vim's having patch#656, too) |
29 endif | 29 let s:needspatches=[1557,213] |
30 let s:needpatch213= 1 | 30 if exists("s:needspatches") |
31 finish | 31 for ptch in s:needspatches |
32 if v:version < 704 || (v:version == 704 && !has("patch".ptch)) | |
33 if !exists("s:needpatch{ptch}") | |
34 unsilent echomsg "***sorry*** this version of netrw requires vim v7.4 with patch#".ptch | |
35 endif | |
36 let s:needpatch{ptch}= 1 | |
37 finish | |
38 endif | |
39 endfor | |
32 endif | 40 endif |
33 let g:loaded_netrw = "v156" | 41 |
42 let g:loaded_netrw = "v165" | |
34 if !exists("s:NOTE") | 43 if !exists("s:NOTE") |
35 let s:NOTE = 0 | 44 let s:NOTE = 0 |
36 let s:WARNING = 1 | 45 let s:WARNING = 1 |
37 let s:ERROR = 2 | 46 let s:ERROR = 2 |
38 endif | 47 endif |
39 | 48 |
40 let s:keepcpo= &cpo | 49 let s:keepcpo= &cpo |
41 setl cpo&vim | 50 setl cpo&vim |
42 "let g:dechofuncname= 1 | 51 "DechoFuncName 1 |
43 "DechoRemOn | 52 "DechoRemOn |
44 "call Decho("doing autoload/netrw.vim version ".g:loaded_netrw,'~'.expand("<slnum>")) | 53 "call Decho("doing autoload/netrw.vim version ".g:loaded_netrw,'~'.expand("<slnum>")) |
45 | 54 |
46 " ====================== | 55 " ====================== |
47 " Netrw Variables: {{{1 | 56 " Netrw Variables: {{{1 |
53 " 1=warning = s:WARNING | 62 " 1=warning = s:WARNING |
54 " 2=error = s:ERROR | 63 " 2=error = s:ERROR |
55 " Usage: netrw#ErrorMsg(s:NOTE | s:WARNING | s:ERROR,"some message",error-number) | 64 " Usage: netrw#ErrorMsg(s:NOTE | s:WARNING | s:ERROR,"some message",error-number) |
56 " netrw#ErrorMsg(s:NOTE | s:WARNING | s:ERROR,["message1","message2",...],error-number) | 65 " netrw#ErrorMsg(s:NOTE | s:WARNING | s:ERROR,["message1","message2",...],error-number) |
57 " (this function can optionally take a list of messages) | 66 " (this function can optionally take a list of messages) |
58 " Jan 19, 2016 : max errnum currently is 103 | 67 " Mar 21, 2017 : max errnum currently is 105 |
59 fun! netrw#ErrorMsg(level,msg,errnum) | 68 fun! netrw#ErrorMsg(level,msg,errnum) |
60 " call Dfunc("netrw#ErrorMsg(level=".a:level." msg<".a:msg."> errnum=".a:errnum.") g:netrw_use_errorwindow=".g:netrw_use_errorwindow) | 69 " call Dfunc("netrw#ErrorMsg(level=".a:level." msg<".a:msg."> errnum=".a:errnum.") g:netrw_use_errorwindow=".g:netrw_use_errorwindow) |
61 | 70 |
62 if a:level < g:netrw_errorlvl | 71 if a:level < g:netrw_errorlvl |
63 " call Dret("netrw#ErrorMsg : suppressing level=".a:level." since g:netrw_errorlvl=".g:netrw_errorlvl) | 72 " call Dret("netrw#ErrorMsg : suppressing level=".a:level." since g:netrw_errorlvl=".g:netrw_errorlvl) |
98 NetrwKeepj $ | 107 NetrwKeepj $ |
99 else | 108 else |
100 " call Decho("create a NetrwMessage buffer window",'~'.expand("<slnum>")) | 109 " call Decho("create a NetrwMessage buffer window",'~'.expand("<slnum>")) |
101 bo 1split | 110 bo 1split |
102 sil! call s:NetrwEnew() | 111 sil! call s:NetrwEnew() |
103 sil! NetrwKeepj call s:NetrwSafeOptions() | 112 sil! NetrwKeepj call s:NetrwOptionsSafe(1) |
104 setl bt=nofile | 113 setl bt=nofile |
105 NetrwKeepj file NetrwMessage | 114 NetrwKeepj file NetrwMessage |
106 " call Decho("setl ma noro",'~'.expand("<slnum>")) | 115 " call Decho("setl ma noro",'~'.expand("<slnum>")) |
107 setl ma noro | 116 setl ma noro |
108 if type(a:msg) == 3 | 117 if type(a:msg) == 3 |
169 endif | 178 endif |
170 endfun | 179 endfun |
171 | 180 |
172 " --------------------------------------------------------------------- | 181 " --------------------------------------------------------------------- |
173 " Netrw Constants: {{{2 | 182 " Netrw Constants: {{{2 |
174 call s:NetrwInit("g:netrw_dirhist_cnt",0) | 183 call s:NetrwInit("g:netrw_dirhistcnt",0) |
175 if !exists("s:LONGLIST") | 184 if !exists("s:LONGLIST") |
176 call s:NetrwInit("s:THINLIST",0) | 185 call s:NetrwInit("s:THINLIST",0) |
177 call s:NetrwInit("s:LONGLIST",1) | 186 call s:NetrwInit("s:LONGLIST",1) |
178 call s:NetrwInit("s:WIDELIST",2) | 187 call s:NetrwInit("s:WIDELIST",2) |
179 call s:NetrwInit("s:TREELIST",3) | 188 call s:NetrwInit("s:TREELIST",3) |
180 call s:NetrwInit("s:MAXLIST" ,4) | 189 call s:NetrwInit("s:MAXLIST" ,4) |
181 endif | 190 endif |
191 | |
192 " --------------------------------------------------------------------- | |
193 " Default option values: {{{2 | |
194 let g:netrw_localcopycmdopt = "" | |
195 let g:netrw_localcopydircmdopt = "" | |
196 let g:netrw_localmkdiropt = "" | |
197 let g:netrw_localmovecmdopt = "" | |
198 let g:netrw_localrmdiropt = "" | |
182 | 199 |
183 " --------------------------------------------------------------------- | 200 " --------------------------------------------------------------------- |
184 " Default values for netrw's global protocol variables {{{2 | 201 " Default values for netrw's global protocol variables {{{2 |
185 call s:NetrwInit("g:netrw_use_errorwindow",1) | 202 call s:NetrwInit("g:netrw_use_errorwindow",1) |
186 | 203 |
213 let s:netrw_ftp_cmd= g:netrw_ftp_cmd | 230 let s:netrw_ftp_cmd= g:netrw_ftp_cmd |
214 if !exists("g:netrw_ftp_options") | 231 if !exists("g:netrw_ftp_options") |
215 let g:netrw_ftp_options= "-i -n" | 232 let g:netrw_ftp_options= "-i -n" |
216 endif | 233 endif |
217 if !exists("g:netrw_http_cmd") | 234 if !exists("g:netrw_http_cmd") |
218 if executable("elinks") | 235 if executable("curl") |
219 let g:netrw_http_cmd = "elinks" | |
220 call s:NetrwInit("g:netrw_http_xcmd","-source >") | |
221 elseif executable("links") | |
222 let g:netrw_http_cmd = "links" | |
223 call s:NetrwInit("g:netrw_http_xcmd","-source >") | |
224 elseif executable("curl") | |
225 let g:netrw_http_cmd = "curl" | 236 let g:netrw_http_cmd = "curl" |
226 call s:NetrwInit("g:netrw_http_xcmd","-o") | 237 call s:NetrwInit("g:netrw_http_xcmd","-L -o") |
227 elseif executable("wget") | 238 elseif executable("wget") |
228 let g:netrw_http_cmd = "wget" | 239 let g:netrw_http_cmd = "wget" |
229 call s:NetrwInit("g:netrw_http_xcmd","-q -O") | 240 call s:NetrwInit("g:netrw_http_xcmd","-q -O") |
241 elseif executable("elinks") | |
242 let g:netrw_http_cmd = "elinks" | |
243 call s:NetrwInit("g:netrw_http_xcmd","-source >") | |
230 elseif executable("fetch") | 244 elseif executable("fetch") |
231 let g:netrw_http_cmd = "fetch" | 245 let g:netrw_http_cmd = "fetch" |
232 call s:NetrwInit("g:netrw_http_xcmd","-o") | 246 call s:NetrwInit("g:netrw_http_xcmd","-o") |
247 elseif executable("links") | |
248 let g:netrw_http_cmd = "links" | |
249 call s:NetrwInit("g:netrw_http_xcmd","-http.extra-header ".shellescape("Accept-Encoding: identity", 1)." -source >") | |
233 else | 250 else |
234 let g:netrw_http_cmd = "" | 251 let g:netrw_http_cmd = "" |
235 endif | 252 endif |
236 endif | 253 endif |
237 call s:NetrwInit("g:netrw_http_put_cmd","curl -T") | 254 call s:NetrwInit("g:netrw_http_put_cmd","curl -T") |
238 call s:NetrwInit("g:netrw_keepj","keepj") | 255 call s:NetrwInit("g:netrw_keepj","keepj") |
239 call s:NetrwInit("g:netrw_rcp_cmd" , "rcp") | 256 call s:NetrwInit("g:netrw_rcp_cmd" , "rcp") |
240 call s:NetrwInit("g:netrw_rsync_cmd", "rsync") | 257 call s:NetrwInit("g:netrw_rsync_cmd", "rsync") |
258 call s:NetrwInit("g:netrw_rsync_sep", "/") | |
241 if !exists("g:netrw_scp_cmd") | 259 if !exists("g:netrw_scp_cmd") |
242 if executable("scp") | 260 if executable("scp") |
243 call s:NetrwInit("g:netrw_scp_cmd" , "scp -q") | 261 call s:NetrwInit("g:netrw_scp_cmd" , "scp -q") |
244 elseif executable("pscp") | 262 elseif executable("pscp") |
245 if (has("win32") || has("win95") || has("win64") || has("win16")) && filereadable('c:\private.ppk') | 263 if (has("win32") || has("win95") || has("win64") || has("win16")) && filereadable('c:\private.ppk') |
297 let s:netrw_usercul = &cursorline | 315 let s:netrw_usercul = &cursorline |
298 let s:netrw_usercuc = &cursorcolumn | 316 let s:netrw_usercuc = &cursorcolumn |
299 call s:NetrwInit("g:netrw_cygdrive","/cygdrive") | 317 call s:NetrwInit("g:netrw_cygdrive","/cygdrive") |
300 " Default values - d-g ---------- {{{3 | 318 " Default values - d-g ---------- {{{3 |
301 call s:NetrwInit("s:didstarstar",0) | 319 call s:NetrwInit("s:didstarstar",0) |
302 call s:NetrwInit("g:netrw_dirhist_cnt" , 0) | 320 call s:NetrwInit("g:netrw_dirhistcnt" , 0) |
303 call s:NetrwInit("g:netrw_decompress" , '{ ".gz" : "gunzip", ".bz2" : "bunzip2", ".zip" : "unzip", ".tar" : "tar -xf", ".xz" : "unxz" }') | 321 call s:NetrwInit("g:netrw_decompress" , '{ ".gz" : "gunzip", ".bz2" : "bunzip2", ".zip" : "unzip", ".tar" : "tar -xf", ".xz" : "unxz" }') |
304 call s:NetrwInit("g:netrw_dirhistmax" , 10) | 322 call s:NetrwInit("g:netrw_dirhistmax" , 10) |
305 call s:NetrwInit("g:netrw_errorlvl" , s:NOTE) | 323 call s:NetrwInit("g:netrw_errorlvl" , s:NOTE) |
306 call s:NetrwInit("g:netrw_fastbrowse" , 1) | 324 call s:NetrwInit("g:netrw_fastbrowse" , 1) |
307 call s:NetrwInit("g:netrw_ftp_browse_reject", '^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not\|No such file\|: connect to address [0-9a-fA-F:]*: No route to host$') | 325 call s:NetrwInit("g:netrw_ftp_browse_reject", '^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not\|No such file\|: connect to address [0-9a-fA-F:]*: No route to host$') |
362 if !exists("g:netrw_localcopycmd") | 380 if !exists("g:netrw_localcopycmd") |
363 if has("win32") || has("win95") || has("win64") || has("win16") | 381 if has("win32") || has("win95") || has("win64") || has("win16") |
364 if g:netrw_cygwin | 382 if g:netrw_cygwin |
365 let g:netrw_localcopycmd= "cp" | 383 let g:netrw_localcopycmd= "cp" |
366 else | 384 else |
367 let g:netrw_localcopycmd= expand("$COMSPEC")." /c copy" | 385 let g:netrw_localcopycmd = expand("$COMSPEC") |
386 let g:netrw_localcopycmdopt= " /c copy" | |
368 endif | 387 endif |
369 elseif has("unix") || has("macunix") | 388 elseif has("unix") || has("macunix") |
370 let g:netrw_localcopycmd= "cp" | 389 let g:netrw_localcopycmd= "cp" |
371 else | 390 else |
372 let g:netrw_localcopycmd= "" | 391 let g:netrw_localcopycmd= "" |
373 endif | 392 endif |
374 endif | 393 endif |
375 if !exists("g:netrw_localcopydircmd") | 394 if !exists("g:netrw_localcopydircmd") |
376 if has("win32") || has("win95") || has("win64") || has("win16") | 395 if has("win32") || has("win95") || has("win64") || has("win16") |
377 if g:netrw_cygwin | 396 if g:netrw_cygwin |
378 let g:netrw_localcopydircmd= "cp -R" | 397 let g:netrw_localcopydircmd = "cp" |
379 else | 398 let g:netrw_localcopydircmdopt= " -R" |
380 let g:netrw_localcopycmd= expand("$COMSPEC")." /c xcopy /e /c /h /i /k" | 399 else |
381 endif | 400 let g:netrw_localcopydircmd = expand("$COMSPEC") |
382 elseif has("unix") || has("macunix") | 401 let g:netrw_localcopydircmdopt= " /c xcopy /e /c /h /i /k" |
383 let g:netrw_localcopydircmd= "cp -R" | 402 endif |
403 elseif has("unix") | |
404 let g:netrw_localcopydircmd = "cp" | |
405 let g:netrw_localcopydircmdopt= " -R" | |
406 elseif has("macunix") | |
407 let g:netrw_localcopydircmd = "cp" | |
408 let g:netrw_localcopydircmdopt= " -R" | |
384 else | 409 else |
385 let g:netrw_localcopycmd= "" | 410 let g:netrw_localcopydircmd= "" |
386 endif | 411 endif |
387 endif | 412 endif |
388 if exists("g:netrw_local_mkdir") | 413 if exists("g:netrw_local_mkdir") |
389 let g:netrw_localmkdir= g:netrw_local_mkdir | 414 let g:netrw_localmkdir= g:netrw_local_mkdir |
390 call netrw#ErrorMsg(s:NOTE,"g:netrw_local_mkdir is deprecated in favor of g:netrw_localmkdir",87) | 415 call netrw#ErrorMsg(s:NOTE,"g:netrw_local_mkdir is deprecated in favor of g:netrw_localmkdir",87) |
391 endif | 416 endif |
392 if has("win32") || has("win95") || has("win64") || has("win16") | 417 if has("win32") || has("win95") || has("win64") || has("win16") |
393 if g:netrw_cygwin | 418 if g:netrw_cygwin |
394 call s:NetrwInit("g:netrw_localmkdir","mkdir") | 419 call s:NetrwInit("g:netrw_localmkdir","mkdir") |
395 else | 420 else |
396 let g:netrw_localmkdir= expand("$COMSPEC")." /c mkdir" | 421 let g:netrw_localmkdir = expand("$COMSPEC") |
422 let g:netrw_localmkdiropt= " /c mkdir" | |
397 endif | 423 endif |
398 else | 424 else |
399 call s:NetrwInit("g:netrw_localmkdir","mkdir") | 425 call s:NetrwInit("g:netrw_localmkdir","mkdir") |
400 endif | 426 endif |
401 call s:NetrwInit("g:netrw_remote_mkdir","mkdir") | 427 call s:NetrwInit("g:netrw_remote_mkdir","mkdir") |
406 if !exists("g:netrw_localmovecmd") | 432 if !exists("g:netrw_localmovecmd") |
407 if has("win32") || has("win95") || has("win64") || has("win16") | 433 if has("win32") || has("win95") || has("win64") || has("win16") |
408 if g:netrw_cygwin | 434 if g:netrw_cygwin |
409 let g:netrw_localmovecmd= "mv" | 435 let g:netrw_localmovecmd= "mv" |
410 else | 436 else |
411 let g:netrw_localmovecmd= expand("$COMSPEC")." /c move" | 437 let g:netrw_localmovecmd = expand("$COMSPEC") |
438 let g:netrw_localmovecmdopt= " /c move" | |
412 endif | 439 endif |
413 elseif has("unix") || has("macunix") | 440 elseif has("unix") || has("macunix") |
414 let g:netrw_localmovecmd= "mv" | 441 let g:netrw_localmovecmd= "mv" |
415 else | 442 else |
416 let g:netrw_localmovecmd= "" | 443 let g:netrw_localmovecmd= "" |
417 endif | 444 endif |
418 endif | 445 endif |
419 if v:version < 704 || !has("patch1109") | 446 if v:version < 704 || (v:version == 704 && !has("patch1107")) |
447 " 1109 provides for delete(tmpdir,"d") which is what will be used | |
420 if exists("g:netrw_local_rmdir") | 448 if exists("g:netrw_local_rmdir") |
421 let g:netrw_localrmdir= g:netrw_local_rmdir | 449 let g:netrw_localrmdir= g:netrw_local_rmdir |
422 call netrw#ErrorMsg(s:NOTE,"g:netrw_local_rmdir is deprecated in favor of g:netrw_localrmdir",86) | 450 call netrw#ErrorMsg(s:NOTE,"g:netrw_local_rmdir is deprecated in favor of g:netrw_localrmdir",86) |
423 endif | 451 endif |
424 if has("win32") || has("win95") || has("win64") || has("win16") | 452 if has("win32") || has("win95") || has("win64") || has("win16") |
425 if g:netrw_cygwin | 453 if g:netrw_cygwin |
426 call s:NetrwInit("g:netrw_localrmdir","rmdir") | 454 call s:NetrwInit("g:netrw_localrmdir","rmdir") |
427 else | 455 else |
428 let g:netrw_localrmdir= expand("$COMSPEC")." /c rmdir" | 456 let g:netrw_localrmdir = expand("$COMSPEC") |
457 let g:netrw_localrmdiropt= " /c rmdir" | |
429 endif | 458 endif |
430 else | 459 else |
431 call s:NetrwInit("g:netrw_localrmdir","rmdir") | 460 call s:NetrwInit("g:netrw_localrmdir","rmdir") |
432 endif | 461 endif |
433 endif | 462 endif |
525 if has("gui_running") && (&enc == 'utf-8' || &enc == 'utf-16' || &enc == 'ucs-4') | 554 if has("gui_running") && (&enc == 'utf-8' || &enc == 'utf-16' || &enc == 'ucs-4') |
526 let s:treedepthstring= "│ " | 555 let s:treedepthstring= "│ " |
527 else | 556 else |
528 let s:treedepthstring= "| " | 557 let s:treedepthstring= "| " |
529 endif | 558 endif |
530 call s:NetrwInit("s:netrw_nbcd",'{}') | 559 call s:NetrwInit("s:netrw_posn",'{}') |
531 | 560 |
532 " BufEnter event ignored by decho when following variable is true | 561 " BufEnter event ignored by decho when following variable is true |
533 " Has a side effect that doau BufReadPost doesn't work, so | 562 " Has a side effect that doau BufReadPost doesn't work, so |
534 " files read by network transfer aren't appropriately highlighted. | 563 " files read by network transfer aren't appropriately highlighted. |
535 "let g:decho_bufenter = 1 "Decho | 564 "let g:decho_bufenter = 1 "Decho |
886 " call Decho("..case Nexplore with starpat=".starpat.": (indx=".indx.")",'~'.expand("<slnum>")) | 915 " call Decho("..case Nexplore with starpat=".starpat.": (indx=".indx.")",'~'.expand("<slnum>")) |
887 if !exists("w:netrw_explore_list") " sanity check | 916 if !exists("w:netrw_explore_list") " sanity check |
888 NetrwKeepj call netrw#ErrorMsg(s:WARNING,"using Nexplore or <s-down> improperly; see help for netrw-starstar",40) | 917 NetrwKeepj call netrw#ErrorMsg(s:WARNING,"using Nexplore or <s-down> improperly; see help for netrw-starstar",40) |
889 if has("clipboard") | 918 if has("clipboard") |
890 sil! let @* = keepregstar | 919 sil! let @* = keepregstar |
891 sil! let @+ = keepregstar | 920 sil! let @+ = keepregplus |
892 endif | 921 endif |
893 sil! let @/ = keepregslash | 922 sil! let @/ = keepregslash |
894 " call Dret("netrw#Explore") | 923 " call Dret("netrw#Explore") |
895 return | 924 return |
896 endif | 925 endif |
911 " call Decho("case Pexplore with starpat=".starpat.": (indx=".indx.")",'~'.expand("<slnum>")) | 940 " call Decho("case Pexplore with starpat=".starpat.": (indx=".indx.")",'~'.expand("<slnum>")) |
912 if !exists("w:netrw_explore_list") " sanity check | 941 if !exists("w:netrw_explore_list") " sanity check |
913 NetrwKeepj call netrw#ErrorMsg(s:WARNING,"using Pexplore or <s-up> improperly; see help for netrw-starstar",41) | 942 NetrwKeepj call netrw#ErrorMsg(s:WARNING,"using Pexplore or <s-up> improperly; see help for netrw-starstar",41) |
914 if has("clipboard") | 943 if has("clipboard") |
915 sil! let @* = keepregstar | 944 sil! let @* = keepregstar |
916 sil! let @+ = keepregstar | 945 sil! let @+ = keepregplus |
917 endif | 946 endif |
918 sil! let @/ = keepregslash | 947 sil! let @/ = keepregslash |
919 " call Dret("netrw#Explore") | 948 " call Dret("netrw#Explore") |
920 return | 949 return |
921 endif | 950 endif |
965 exe "sil NetrwKeepj noautocmd keepalt vimgrep /".pattern."/gj "."**/*" | 994 exe "sil NetrwKeepj noautocmd keepalt vimgrep /".pattern."/gj "."**/*" |
966 catch /^Vim\%((\a\+)\)\=:E480/ | 995 catch /^Vim\%((\a\+)\)\=:E480/ |
967 keepalt call netrw#ErrorMsg(s:WARNING,'no files matched pattern<'.pattern.'>',45) | 996 keepalt call netrw#ErrorMsg(s:WARNING,'no files matched pattern<'.pattern.'>',45) |
968 if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif | 997 if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif |
969 if has("clipboard") | 998 if has("clipboard") |
970 sil! let @* = keepregstar | 999 sil! let @* = keepregstar |
971 sil! let @+ = keepregstar | 1000 sil! let @+ = keepregplus |
972 endif | 1001 endif |
973 sil! let @/ = keepregslash | 1002 sil! let @/ = keepregslash |
974 " call Dret("netrw#Explore : no files matched pattern") | 1003 " call Dret("netrw#Explore : no files matched pattern") |
975 return | 1004 return |
976 endtry | 1005 endtry |
1002 | 1031 |
1003 if w:netrw_explore_listlen == 0 || (w:netrw_explore_listlen == 1 && w:netrw_explore_list[0] =~ '\*\*\/') | 1032 if w:netrw_explore_listlen == 0 || (w:netrw_explore_listlen == 1 && w:netrw_explore_list[0] =~ '\*\*\/') |
1004 keepalt NetrwKeepj call netrw#ErrorMsg(s:WARNING,"no files matched",42) | 1033 keepalt NetrwKeepj call netrw#ErrorMsg(s:WARNING,"no files matched",42) |
1005 if has("clipboard") | 1034 if has("clipboard") |
1006 sil! let @* = keepregstar | 1035 sil! let @* = keepregstar |
1007 sil! let @+ = keepregstar | 1036 sil! let @+ = keepregplus |
1008 endif | 1037 endif |
1009 sil! let @/ = keepregslash | 1038 sil! let @/ = keepregslash |
1010 " call Dret("netrw#Explore : no files matched") | 1039 " call Dret("netrw#Explore : no files matched") |
1011 return | 1040 return |
1012 endif | 1041 endif |
1050 if !exists("g:netrw_quiet") | 1079 if !exists("g:netrw_quiet") |
1051 keepalt NetrwKeepj call netrw#ErrorMsg(s:WARNING,"your vim needs the +path_extra feature for Exploring with **!",44) | 1080 keepalt NetrwKeepj call netrw#ErrorMsg(s:WARNING,"your vim needs the +path_extra feature for Exploring with **!",44) |
1052 endif | 1081 endif |
1053 if has("clipboard") | 1082 if has("clipboard") |
1054 sil! let @* = keepregstar | 1083 sil! let @* = keepregstar |
1055 sil! let @+ = keepregstar | 1084 sil! let @+ = keepregplus |
1056 endif | 1085 endif |
1057 sil! let @/ = keepregslash | 1086 sil! let @/ = keepregslash |
1058 " call Dret("netrw#Explore : missing +path_extra") | 1087 " call Dret("netrw#Explore : missing +path_extra") |
1059 return | 1088 return |
1060 endif | 1089 endif |
1104 endif | 1133 endif |
1105 endif | 1134 endif |
1106 let prvfname= fname | 1135 let prvfname= fname |
1107 endfor | 1136 endfor |
1108 " call Decho("explore_match<".s:explore_match.">",'~'.expand("<slnum>")) | 1137 " call Decho("explore_match<".s:explore_match.">",'~'.expand("<slnum>")) |
1109 exe "2match netrwMarkFile /".s:explore_match."/" | 1138 if has("syntax") && exists("g:syntax_on") && g:syntax_on |
1139 exe "2match netrwMarkFile /".s:explore_match."/" | |
1140 endif | |
1110 endif | 1141 endif |
1111 echo "<s-up>==Pexplore <s-down>==Nexplore" | 1142 echo "<s-up>==Pexplore <s-down>==Nexplore" |
1112 else | 1143 else |
1113 2match none | 1144 2match none |
1114 if exists("s:explore_match") | unlet s:explore_match | endif | 1145 if exists("s:explore_match") | unlet s:explore_match | endif |
1121 " there's no danger of a late FocusGained event on initialization. | 1152 " there's no danger of a late FocusGained event on initialization. |
1122 " Consequently, set s:netrw_events to 2. | 1153 " Consequently, set s:netrw_events to 2. |
1123 let s:netrw_events= 2 | 1154 let s:netrw_events= 2 |
1124 if has("clipboard") | 1155 if has("clipboard") |
1125 sil! let @* = keepregstar | 1156 sil! let @* = keepregstar |
1126 sil! let @+ = keepregstar | 1157 sil! let @+ = keepregplus |
1127 endif | 1158 endif |
1128 sil! let @/ = keepregslash | 1159 sil! let @/ = keepregslash |
1129 " call Dret("netrw#Explore : @/<".@/.">") | 1160 " call Dret("netrw#Explore : @/<".@/.">") |
1130 endfun | 1161 endfun |
1131 | 1162 |
1132 " --------------------------------------------------------------------- | 1163 " --------------------------------------------------------------------- |
1133 " netrw#Lexplore: toggle Explorer window, keeping it on the left of the current tab {{{2 | 1164 " netrw#Lexplore: toggle Explorer window, keeping it on the left of the current tab {{{2 |
1134 fun! netrw#Lexplore(count,rightside,...) | 1165 fun! netrw#Lexplore(count,rightside,...) |
1135 " call Dfunc("netrw#Lexplore(count=".a:count."rightside=".a:rightside.",...) a:0=".a:0." ft=".&ft) | 1166 " call Dfunc("netrw#Lexplore(count=".a:count." rightside=".a:rightside.",...) a:0=".a:0." ft=".&ft) |
1136 let curwin= winnr() | 1167 let curwin= winnr() |
1137 | 1168 |
1138 if a:0 > 0 && a:1 != "" | 1169 if a:0 > 0 && a:1 != "" |
1139 " if a netrw window is already on the left-side of the tab | 1170 " if a netrw window is already on the left-side of the tab |
1140 " and a directory has been specified, explore with that | 1171 " and a directory has been specified, explore with that |
1141 " directory. | 1172 " directory. |
1173 " call Decho("case has input argument(s) (a:1<".a:1.">)") | |
1142 let a1 = expand(a:1) | 1174 let a1 = expand(a:1) |
1143 " call Decho("a:1<".a:1."> curwin#".curwin,'~'.expand("<slnum>")) | 1175 " call Decho("a:1<".a:1."> curwin#".curwin,'~'.expand("<slnum>")) |
1144 exe "1wincmd w" | 1176 exe "1wincmd w" |
1145 if &ft == "netrw" | 1177 if &ft == "netrw" |
1146 " call Decho("exe Explore ".fnameescape(a:1),'~'.expand("<slnum>")) | 1178 " call Decho("exe Explore ".fnameescape(a:1),'~'.expand("<slnum>")) |
1154 return | 1186 return |
1155 endif | 1187 endif |
1156 exe curwin."wincmd w" | 1188 exe curwin."wincmd w" |
1157 else | 1189 else |
1158 let a1= "" | 1190 let a1= "" |
1191 " call Decho("no input arguments") | |
1159 endif | 1192 endif |
1160 | 1193 |
1161 if exists("t:netrw_lexbufnr") | 1194 if exists("t:netrw_lexbufnr") |
1162 " check if t:netrw_lexbufnr refers to a netrw window | 1195 " check if t:netrw_lexbufnr refers to a netrw window |
1163 let lexwinnr = bufwinnr(t:netrw_lexbufnr) | 1196 let lexwinnr = bufwinnr(t:netrw_lexbufnr) |
1197 " call Decho("lexwinnr= bufwinnr(t:netrw_lexbufnr#".t:netrw_lexbufnr.")=".lexwinnr) | |
1164 else | 1198 else |
1165 let lexwinnr= 0 | 1199 let lexwinnr= 0 |
1166 endif | 1200 " call Decho("t:netrw_lexbufnr doesn't exist") |
1201 endif | |
1202 " call Decho("lexwinnr=".lexwinnr,'~'.expand("<slnum>")) | |
1167 | 1203 |
1168 if lexwinnr > 0 | 1204 if lexwinnr > 0 |
1169 " close down netrw explorer window | 1205 " close down netrw explorer window |
1170 " call Decho("t:netrw_lexbufnr#".t:netrw_lexbufnr.": close down netrw window",'~'.expand("<slnum>")) | 1206 " call Decho("t:netrw_lexbufnr#".t:netrw_lexbufnr.": close down netrw window",'~'.expand("<slnum>")) |
1171 exe lexwinnr."wincmd w" | 1207 exe lexwinnr."wincmd w" |
1172 let g:netrw_winsize = -winwidth(0) | 1208 let g:netrw_winsize = -winwidth(0) |
1173 let t:netrw_lexposn = winsaveview() | 1209 let t:netrw_lexposn = winsaveview() |
1174 " call Decho("saving posn to t:netrw_lexposn<".string(t:netrw_lexposn).">",'~'.expand("<slnum>")) | 1210 " call Decho("saving posn to t:netrw_lexposn<".string(t:netrw_lexposn).">",'~'.expand("<slnum>")) |
1175 " call Decho("saving t:netrw_lexposn",'~'.expand("<slnum>")) | 1211 " call Decho("saving t:netrw_lexposn",'~'.expand("<slnum>")) |
1176 close | 1212 close |
1177 if lexwinnr < curwin | 1213 if lexwinnr < curwin |
1178 let curwin= curwin - 1 | 1214 let curwin= curwin - 1 |
1179 endif | 1215 endif |
1180 exe curwin."wincmd w" | 1216 if lexwinnr != curwin |
1217 exe curwin."wincmd w" | |
1218 endif | |
1181 unlet t:netrw_lexbufnr | 1219 unlet t:netrw_lexbufnr |
1220 " call Decho("unlet t:netrw_lexbufnr") | |
1182 | 1221 |
1183 else | 1222 else |
1184 " open netrw explorer window | 1223 " open netrw explorer window |
1185 " call Decho("t:netrw_lexbufnr<n/a>: open netrw explorer window",'~'.expand("<slnum>")) | 1224 " call Decho("t:netrw_lexbufnr<n/a>: open netrw explorer window",'~'.expand("<slnum>")) |
1186 exe "1wincmd w" | 1225 exe "1wincmd w" |
1191 let g:netrw_winsize = a:count | 1230 let g:netrw_winsize = a:count |
1192 endif | 1231 endif |
1193 let curfile= expand("%") | 1232 let curfile= expand("%") |
1194 " call Decho("curfile<".curfile.">",'~'.expand("<slnum>")) | 1233 " call Decho("curfile<".curfile.">",'~'.expand("<slnum>")) |
1195 exe (a:rightside? "botright" : "topleft")." vertical ".((g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize) . " new" | 1234 exe (a:rightside? "botright" : "topleft")." vertical ".((g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize) . " new" |
1235 " call Decho("new buf#".bufnr("%")." win#".winnr()) | |
1196 if a:0 > 0 && a1 != "" | 1236 if a:0 > 0 && a1 != "" |
1197 " call Decho("case 1: Explore ".a1,'~'.expand("<slnum>")) | 1237 " call Decho("case 1: Explore ".a1,'~'.expand("<slnum>")) |
1238 call netrw#Explore(0,0,0,a1) | |
1198 exe "Explore ".fnameescape(a1) | 1239 exe "Explore ".fnameescape(a1) |
1199 elseif curfile =~ '^\a\{3,}://' | 1240 elseif curfile =~ '^\a\{3,}://' |
1200 " call Decho("case 2: Explore ".substitute(curfile,'[^/\\]*$','',''),'~'.expand("<slnum>")) | 1241 " call Decho("case 2: Explore ".substitute(curfile,'[^/\\]*$','',''),'~'.expand("<slnum>")) |
1201 exe "Explore ".substitute(curfile,'[^/\\]*$','','') | 1242 call netrw#Explore(0,0,0,substitute(curfile,'[^/\\]*$','','')) |
1202 else | 1243 else |
1203 " call Decho("case 3: Explore .",'~'.expand("<slnum>")) | 1244 " call Decho("case 3: Explore .",'~'.expand("<slnum>")) |
1204 Explore . | 1245 call netrw#Explore(0,0,0,".") |
1205 endif | 1246 endif |
1206 if a:count != 0 | 1247 if a:count != 0 |
1207 let g:netrw_winsize = netrw_winsize | 1248 let g:netrw_winsize = netrw_winsize |
1208 endif | 1249 endif |
1209 setlocal winfixwidth | 1250 setlocal winfixwidth |
1210 let g:netrw_altv = keep_altv | 1251 let g:netrw_altv = keep_altv |
1211 let t:netrw_lexbufnr = bufnr("%") | 1252 let t:netrw_lexbufnr = bufnr("%") |
1253 " call Decho("let t:netrw_lexbufnr=".t:netrw_lexbufnr) | |
1254 " call Decho("t:netrw_lexposn".(exists("t:netrw_lexposn")? string(t:netrw_lexposn) : " n/a")) | |
1212 if exists("t:netrw_lexposn") | 1255 if exists("t:netrw_lexposn") |
1213 " call Decho("restoring to t:netrw_lexposn",'~'.expand("<slnum>")) | 1256 " call Decho("restoring to t:netrw_lexposn",'~'.expand("<slnum>")) |
1214 " call Decho("restoring posn to t:netrw_lexposn<".string(t:netrw_lexposn).">",'~'.expand("<slnum>")) | 1257 " call Decho("restoring posn to t:netrw_lexposn<".string(t:netrw_lexposn).">",'~'.expand("<slnum>")) |
1215 call winrestview(t:netrw_lexposn) | 1258 call winrestview(t:netrw_lexposn) |
1216 unlet t:netrw_lexposn | 1259 unlet t:netrw_lexposn |
1222 if a:rightside | 1265 if a:rightside |
1223 let g:netrw_chgwin= 1 | 1266 let g:netrw_chgwin= 1 |
1224 else | 1267 else |
1225 let g:netrw_chgwin= 2 | 1268 let g:netrw_chgwin= 2 |
1226 endif | 1269 endif |
1270 " call Decho("let g:netrw_chgwin=".g:netrw_chgwin) | |
1227 endif | 1271 endif |
1228 | 1272 |
1229 " call Dret("netrw#Lexplore") | 1273 " call Dret("netrw#Lexplore") |
1230 endfun | 1274 endfun |
1231 | 1275 |
1339 if (has("win32") || has("win95") || has("win64") || has("win16")) | 1383 if (has("win32") || has("win95") || has("win64") || has("win16")) |
1340 " transfer files one at time | 1384 " transfer files one at time |
1341 " call Decho("transfer files one at a time",'~'.expand("<slnum>")) | 1385 " call Decho("transfer files one at a time",'~'.expand("<slnum>")) |
1342 for fname in fnamelist | 1386 for fname in fnamelist |
1343 " call Decho("system(".g:netrw_localcopycmd." ".s:ShellEscape(fname)." ".s:ShellEscape(topath).")",'~'.expand("<slnum>")) | 1387 " call Decho("system(".g:netrw_localcopycmd." ".s:ShellEscape(fname)." ".s:ShellEscape(topath).")",'~'.expand("<slnum>")) |
1344 call system(g:netrw_localcopycmd." ".s:ShellEscape(fname)." ".s:ShellEscape(topath)) | 1388 call system(g:netrw_localcopycmd.g:netrw_localcopycmdopt." ".s:ShellEscape(fname)." ".s:ShellEscape(topath)) |
1345 if v:shell_error != 0 | 1389 if v:shell_error != 0 |
1346 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localcopycmd<".g:netrw_localcopycmd."> to something that works",80) | 1390 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localcopycmd<".g:netrw_localcopycmd."> to something that works",80) |
1347 " call Dret("s:NetrwObtain 0 : failed: ".g:netrw_localcopycmd." ".s:ShellEscape(fname)." ".s:ShellEscape(topath)) | 1391 " call Dret("s:NetrwObtain 0 : failed: ".g:netrw_localcopycmd." ".s:ShellEscape(fname)." ".s:ShellEscape(topath)) |
1348 return | 1392 return |
1349 endif | 1393 endif |
1351 else | 1395 else |
1352 " transfer files with one command | 1396 " transfer files with one command |
1353 " call Decho("transfer files with one command",'~'.expand("<slnum>")) | 1397 " call Decho("transfer files with one command",'~'.expand("<slnum>")) |
1354 let filelist= join(map(deepcopy(fnamelist),"s:ShellEscape(v:val)")) | 1398 let filelist= join(map(deepcopy(fnamelist),"s:ShellEscape(v:val)")) |
1355 " call Decho("system(".g:netrw_localcopycmd." ".filelist." ".s:ShellEscape(topath).")",'~'.expand("<slnum>")) | 1399 " call Decho("system(".g:netrw_localcopycmd." ".filelist." ".s:ShellEscape(topath).")",'~'.expand("<slnum>")) |
1356 call system(g:netrw_localcopycmd." ".filelist." ".s:ShellEscape(topath)) | 1400 call system(g:netrw_localcopycmd.g:netrw_localcopycmdopt." ".filelist." ".s:ShellEscape(topath)) |
1357 if v:shell_error != 0 | 1401 if v:shell_error != 0 |
1358 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localcopycmd<".g:netrw_localcopycmd."> to something that works",80) | 1402 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localcopycmd<".g:netrw_localcopycmd."> to something that works",80) |
1359 " call Dret("s:NetrwObtain 0 : failed: ".g:netrw_localcopycmd." ".filelist." ".s:ShellEscape(topath)) | 1403 " call Dret("s:NetrwObtain 0 : failed: ".g:netrw_localcopycmd." ".filelist." ".s:ShellEscape(topath)) |
1360 return | 1404 return |
1361 endif | 1405 endif |
1385 if b:netrw_fname =~ '/' | 1429 if b:netrw_fname =~ '/' |
1386 let path= substitute(b:netrw_fname,'^\(.*/\).\{-}$','\1','') | 1430 let path= substitute(b:netrw_fname,'^\(.*/\).\{-}$','\1','') |
1387 else | 1431 else |
1388 let path= "" | 1432 let path= "" |
1389 endif | 1433 endif |
1390 let filelist= join(map(deepcopy(fnamelist),'s:ShellEscape(g:netrw_machine.":".path.v:val,1)')) | 1434 let filelist= join(map(deepcopy(fnamelist),'escape(s:ShellEscape(g:netrw_machine.":".path.v:val,1)," ")')) |
1391 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_scp_cmd.s:ShellEscape(useport,1)." ".filelist." ".s:ShellEscape(tgtdir,1)) | 1435 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_scp_cmd.s:ShellEscape(useport,1)." ".filelist." ".s:ShellEscape(tgtdir,1)) |
1392 | 1436 |
1393 elseif b:netrw_method == 2 | 1437 elseif b:netrw_method == 2 |
1394 " obtain file using ftp + .netrc | 1438 " obtain file using ftp + .netrc |
1395 " call Decho("obtain via ftp+.netrc (method #2)",'~'.expand("<slnum>")) | 1439 " call Decho("obtain via ftp+.netrc (method #2)",'~'.expand("<slnum>")) |
1555 endif | 1599 endif |
1556 " call Dret("netrw#Nread") | 1600 " call Dret("netrw#Nread") |
1557 endfun | 1601 endfun |
1558 | 1602 |
1559 " ------------------------------------------------------------------------ | 1603 " ------------------------------------------------------------------------ |
1560 " s:NetrwOptionRestore: restore options (based on prior s:NetrwOptionSave) {{{2 | 1604 " s:NetrwOptionsSave: save options prior to setting to "netrw-buffer-standard" form {{{2 |
1561 fun! s:NetrwOptionRestore(vt) | 1605 " Options get restored by s:NetrwOptionsRestore() |
1562 " call Dfunc("s:NetrwOptionRestore(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> winnr($)=".winnr("$")) | 1606 " |
1563 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>")) | 1607 " Option handling: |
1564 if !exists("{a:vt}netrw_optionsave") | 1608 " * save user's options (s:NetrwOptionsSave) |
1565 call s:RestorePosn(s:netrw_nbcd) | 1609 " * set netrw-safe options (s:NetrwOptionsSafe) |
1566 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>")) | 1610 " - change an option only when user option != safe option (s:netrwSetSafeSetting) |
1567 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) | 1611 " * restore user's options (s:netrwOPtionsRestore) |
1568 " call Dret("s:NetrwOptionRestore : ".a:vt."netrw_optionsave doesn't exist") | 1612 " - restore a user option when != safe option (s:NetrwRestoreSetting) |
1569 return | 1613 " vt: (variable type) normally its either "w:" or "s:" |
1570 endif | 1614 fun! s:NetrwOptionsSave(vt) |
1571 unlet {a:vt}netrw_optionsave | 1615 " call Dfunc("s:NetrwOptionsSave(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%")).">"." winnr($)=".winnr("$")." mod=".&mod." ma=".&ma) |
1572 | |
1573 if exists("+acd") | |
1574 if exists("{a:vt}netrw_acdkeep") | |
1575 " call Decho("g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd,'~'.expand("<slnum>")) | |
1576 let curdir = getcwd() | |
1577 let &l:acd = {a:vt}netrw_acdkeep | |
1578 unlet {a:vt}netrw_acdkeep | |
1579 if &l:acd | |
1580 call s:NetrwLcd(curdir) | |
1581 endif | |
1582 endif | |
1583 endif | |
1584 if exists("{a:vt}netrw_aikeep") |let &l:ai = {a:vt}netrw_aikeep |unlet {a:vt}netrw_aikeep |endif | |
1585 if exists("{a:vt}netrw_awkeep") |let &l:aw = {a:vt}netrw_awkeep |unlet {a:vt}netrw_awkeep |endif | |
1586 if exists("{a:vt}netrw_blkeep") |let &l:bl = {a:vt}netrw_blkeep |unlet {a:vt}netrw_blkeep |endif | |
1587 if exists("{a:vt}netrw_btkeep") |let &l:bt = {a:vt}netrw_btkeep |unlet {a:vt}netrw_btkeep |endif | |
1588 if exists("{a:vt}netrw_bombkeep") |let &l:bomb = {a:vt}netrw_bombkeep |unlet {a:vt}netrw_bombkeep |endif | |
1589 if exists("{a:vt}netrw_cedit") |let &cedit = {a:vt}netrw_cedit |unlet {a:vt}netrw_cedit |endif | |
1590 if exists("{a:vt}netrw_cikeep") |let &l:ci = {a:vt}netrw_cikeep |unlet {a:vt}netrw_cikeep |endif | |
1591 if exists("{a:vt}netrw_cinkeep") |let &l:cin = {a:vt}netrw_cinkeep |unlet {a:vt}netrw_cinkeep |endif | |
1592 if exists("{a:vt}netrw_cinokeep") |let &l:cino = {a:vt}netrw_cinokeep |unlet {a:vt}netrw_cinokeep |endif | |
1593 if exists("{a:vt}netrw_comkeep") |let &l:com = {a:vt}netrw_comkeep |unlet {a:vt}netrw_comkeep |endif | |
1594 if exists("{a:vt}netrw_cpokeep") |let &l:cpo = {a:vt}netrw_cpokeep |unlet {a:vt}netrw_cpokeep |endif | |
1595 if exists("{a:vt}netrw_diffkeep") |let &l:diff = {a:vt}netrw_diffkeep |unlet {a:vt}netrw_diffkeep |endif | |
1596 if exists("{a:vt}netrw_fenkeep") |let &l:fen = {a:vt}netrw_fenkeep |unlet {a:vt}netrw_fenkeep |endif | |
1597 if exists("g:netrw_ffkep") && g:netrw_ffkeep | |
1598 if exists("{a:vt}netrw_ffkeep") |let &l:ff = {a:vt}netrw_ffkeep |unlet {a:vt}netrw_ffkeep |endif | |
1599 endif | |
1600 if exists("{a:vt}netrw_fokeep") |let &l:fo = {a:vt}netrw_fokeep |unlet {a:vt}netrw_fokeep |endif | |
1601 if exists("{a:vt}netrw_gdkeep") |let &l:gd = {a:vt}netrw_gdkeep |unlet {a:vt}netrw_gdkeep |endif | |
1602 if exists("{a:vt}netrw_hidkeep") |let &l:hidden = {a:vt}netrw_hidkeep |unlet {a:vt}netrw_hidkeep |endif | |
1603 if exists("{a:vt}netrw_imkeep") |let &l:im = {a:vt}netrw_imkeep |unlet {a:vt}netrw_imkeep |endif | |
1604 if exists("{a:vt}netrw_iskkeep") |let &l:isk = {a:vt}netrw_iskkeep |unlet {a:vt}netrw_iskkeep |endif | |
1605 if exists("{a:vt}netrw_lskeep") |let &l:ls = {a:vt}netrw_lskeep |unlet {a:vt}netrw_lskeep |endif | |
1606 if exists("{a:vt}netrw_makeep") |let &l:ma = {a:vt}netrw_makeep |unlet {a:vt}netrw_makeep |endif | |
1607 if exists("{a:vt}netrw_magickeep")|let &l:magic = {a:vt}netrw_magickeep |unlet {a:vt}netrw_magickeep|endif | |
1608 if exists("{a:vt}netrw_modkeep") |let &l:mod = {a:vt}netrw_modkeep |unlet {a:vt}netrw_modkeep |endif | |
1609 if exists("{a:vt}netrw_nukeep") |let &l:nu = {a:vt}netrw_nukeep |unlet {a:vt}netrw_nukeep |endif | |
1610 if exists("{a:vt}netrw_rnukeep") |let &l:rnu = {a:vt}netrw_rnukeep |unlet {a:vt}netrw_rnukeep |endif | |
1611 if exists("{a:vt}netrw_repkeep") |let &l:report = {a:vt}netrw_repkeep |unlet {a:vt}netrw_repkeep |endif | |
1612 if exists("{a:vt}netrw_rokeep") |let &l:ro = {a:vt}netrw_rokeep |unlet {a:vt}netrw_rokeep |endif | |
1613 if exists("{a:vt}netrw_selkeep") |let &l:sel = {a:vt}netrw_selkeep |unlet {a:vt}netrw_selkeep |endif | |
1614 if exists("{a:vt}netrw_spellkeep")|let &l:spell = {a:vt}netrw_spellkeep |unlet {a:vt}netrw_spellkeep|endif | |
1615 if has("clipboard") | |
1616 if exists("{a:vt}netrw_starkeep") |let @* = {a:vt}netrw_starkeep |unlet {a:vt}netrw_starkeep |endif | |
1617 endif | |
1618 " Problem: start with liststyle=0; press <i> : result, following line resets l:ts. | |
1619 " if exists("{a:vt}netrw_tskeep") |let &l:ts = {a:vt}netrw_tskeep |unlet {a:vt}netrw_tskeep |endif | |
1620 if exists("{a:vt}netrw_twkeep") |let &l:tw = {a:vt}netrw_twkeep |unlet {a:vt}netrw_twkeep |endif | |
1621 if exists("{a:vt}netrw_wigkeep") |let &l:wig = {a:vt}netrw_wigkeep |unlet {a:vt}netrw_wigkeep |endif | |
1622 if exists("{a:vt}netrw_wrapkeep") |let &l:wrap = {a:vt}netrw_wrapkeep |unlet {a:vt}netrw_wrapkeep |endif | |
1623 if exists("{a:vt}netrw_writekeep")|let &l:write = {a:vt}netrw_writekeep |unlet {a:vt}netrw_writekeep|endif | |
1624 if exists("s:yykeep") |let @@ = s:yykeep |unlet s:yykeep |endif | |
1625 if exists("{a:vt}netrw_swfkeep") | |
1626 if &directory == "" | |
1627 " user hasn't specified a swapfile directory; | |
1628 " netrw will temporarily set the swapfile directory | |
1629 " to the current directory as returned by getcwd(). | |
1630 let &l:directory= getcwd() | |
1631 sil! let &l:swf = {a:vt}netrw_swfkeep | |
1632 setl directory= | |
1633 unlet {a:vt}netrw_swfkeep | |
1634 elseif &l:swf != {a:vt}netrw_swfkeep | |
1635 if !g:netrw_use_noswf | |
1636 " following line causes a Press ENTER in windows -- can't seem to work around it!!! | |
1637 sil! let &l:swf= {a:vt}netrw_swfkeep | |
1638 endif | |
1639 unlet {a:vt}netrw_swfkeep | |
1640 endif | |
1641 endif | |
1642 if exists("{a:vt}netrw_dirkeep") && isdirectory(s:NetrwFile({a:vt}netrw_dirkeep)) && g:netrw_keepdir | |
1643 let dirkeep = substitute({a:vt}netrw_dirkeep,'\\','/','g') | |
1644 if exists("{a:vt}netrw_dirkeep") | |
1645 call s:NetrwLcd(dirkeep) | |
1646 unlet {a:vt}netrw_dirkeep | |
1647 endif | |
1648 endif | |
1649 if has("clipboard") | |
1650 if exists("{a:vt}netrw_regstar") |sil! let @*= {a:vt}netrw_regstar |unlet {a:vt}netrw_regstar |endif | |
1651 endif | |
1652 if exists("{a:vt}netrw_regslash")|sil! let @/= {a:vt}netrw_regslash|unlet {a:vt}netrw_regslash|endif | |
1653 call s:RestorePosn(s:netrw_nbcd) | |
1654 | |
1655 " call Decho("g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd,'~'.expand("<slnum>")) | |
1656 " call Decho("fo=".&fo.(exists("+acd")? " acd=".&acd : " acd doesn't exist"),'~'.expand("<slnum>")) | |
1657 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) | |
1658 " call Decho("diff=".&l:diff." win#".winnr()." w:netrw_diffkeep=".(exists("w:netrw_diffkeep")? w:netrw_diffkeep : "doesn't exist"),'~'.expand("<slnum>")) | |
1659 " call Decho("ts=".&l:ts,'~'.expand("<slnum>")) | |
1660 " Moved the filetype detect here from NetrwGetFile() because remote files | |
1661 " were having their filetype detect-generated settings overwritten by | |
1662 " NetrwOptionRestore. | |
1663 if &ft != "netrw" | |
1664 " call Decho("filetype detect (ft=".&ft.")",'~'.expand("<slnum>")) | |
1665 filetype detect | |
1666 endif | |
1667 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>")) | |
1668 " call Dret("s:NetrwOptionRestore : tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> modified=".&modified." modifiable=".&modifiable." readonly=".&readonly) | |
1669 endfun | |
1670 | |
1671 " --------------------------------------------------------------------- | |
1672 " s:NetrwOptionSave: save options prior to setting to "netrw-buffer-standard" form {{{2 | |
1673 " Options get restored by s:NetrwOptionRestore() | |
1674 " 06/08/07 : removed call to NetrwSafeOptions(), either placed | |
1675 " immediately after NetrwOptionSave() calls in NetRead | |
1676 " and NetWrite, or after the s:NetrwEnew() call in | |
1677 " NetrwBrowse. | |
1678 " vt: normally its "w:" or "s:" (a variable type) | |
1679 fun! s:NetrwOptionSave(vt) | |
1680 " call Dfunc("s:NetrwOptionSave(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%")).">"." winnr($)=".winnr("$")." mod=".&mod." ma=".&ma) | |
1681 " call Decho(a:vt."netrw_optionsave".(exists("{a:vt}netrw_optionsave")? ("=".{a:vt}netrw_optionsave) : " doesn't exist"),'~'.expand("<slnum>")) | 1616 " call Decho(a:vt."netrw_optionsave".(exists("{a:vt}netrw_optionsave")? ("=".{a:vt}netrw_optionsave) : " doesn't exist"),'~'.expand("<slnum>")) |
1682 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>")) | 1617 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>")) |
1683 | 1618 |
1684 if !exists("{a:vt}netrw_optionsave") | 1619 if !exists("{a:vt}netrw_optionsave") |
1685 let {a:vt}netrw_optionsave= 1 | 1620 let {a:vt}netrw_optionsave= 1 |
1686 else | 1621 else |
1687 " call Dret("s:NetrwOptionSave : options already saved") | 1622 " call Dret("s:NetrwOptionsSave : options already saved") |
1688 return | 1623 return |
1689 endif | 1624 endif |
1690 " call Decho("prior to save: fo=".&fo.(exists("+acd")? " acd=".&acd : " acd doesn't exist")." diff=".&l:diff,'~'.expand("<slnum>")) | 1625 " call Decho("prior to save: fo=".&fo.(exists("+acd")? " acd=".&acd : " acd doesn't exist")." diff=".&l:diff,'~'.expand("<slnum>")) |
1691 | 1626 |
1692 " Save current settings and current directory | 1627 " Save current settings and current directory |
1705 let {a:vt}netrw_cinokeep = &l:cino | 1640 let {a:vt}netrw_cinokeep = &l:cino |
1706 let {a:vt}netrw_comkeep = &l:com | 1641 let {a:vt}netrw_comkeep = &l:com |
1707 let {a:vt}netrw_cpokeep = &l:cpo | 1642 let {a:vt}netrw_cpokeep = &l:cpo |
1708 let {a:vt}netrw_diffkeep = &l:diff | 1643 let {a:vt}netrw_diffkeep = &l:diff |
1709 let {a:vt}netrw_fenkeep = &l:fen | 1644 let {a:vt}netrw_fenkeep = &l:fen |
1645 " call Decho("saving current settings: got here#1",'~'.expand("<slnum>")) | |
1710 if !exists("g:netrw_ffkeep") || g:netrw_ffkeep | 1646 if !exists("g:netrw_ffkeep") || g:netrw_ffkeep |
1711 let {a:vt}netrw_ffkeep = &l:ff | 1647 let {a:vt}netrw_ffkeep = &l:ff |
1712 endif | 1648 endif |
1713 let {a:vt}netrw_fokeep = &l:fo " formatoptions | 1649 let {a:vt}netrw_fokeep = &l:fo " formatoptions |
1714 let {a:vt}netrw_gdkeep = &l:gd " gdefault | 1650 let {a:vt}netrw_gdkeep = &l:gd " gdefault |
1723 let {a:vt}netrw_rnukeep = &l:rnu | 1659 let {a:vt}netrw_rnukeep = &l:rnu |
1724 let {a:vt}netrw_repkeep = &l:report | 1660 let {a:vt}netrw_repkeep = &l:report |
1725 let {a:vt}netrw_rokeep = &l:ro | 1661 let {a:vt}netrw_rokeep = &l:ro |
1726 let {a:vt}netrw_selkeep = &l:sel | 1662 let {a:vt}netrw_selkeep = &l:sel |
1727 let {a:vt}netrw_spellkeep = &l:spell | 1663 let {a:vt}netrw_spellkeep = &l:spell |
1664 " call Decho("saving current settings: got here#2",'~'.expand("<slnum>")) | |
1728 if !g:netrw_use_noswf | 1665 if !g:netrw_use_noswf |
1729 let {a:vt}netrw_swfkeep = &l:swf | 1666 let {a:vt}netrw_swfkeep = &l:swf |
1730 endif | |
1731 if has("clipboard") | |
1732 let {a:vt}netrw_starkeep = @* | |
1733 endif | 1667 endif |
1734 let {a:vt}netrw_tskeep = &l:ts | 1668 let {a:vt}netrw_tskeep = &l:ts |
1735 let {a:vt}netrw_twkeep = &l:tw " textwidth | 1669 let {a:vt}netrw_twkeep = &l:tw " textwidth |
1736 let {a:vt}netrw_wigkeep = &l:wig " wildignore | 1670 let {a:vt}netrw_wigkeep = &l:wig " wildignore |
1737 let {a:vt}netrw_wrapkeep = &l:wrap | 1671 let {a:vt}netrw_wrapkeep = &l:wrap |
1741 " call Decho("saving a few selected netrw-related variables",'~'.expand("<slnum>")) | 1675 " call Decho("saving a few selected netrw-related variables",'~'.expand("<slnum>")) |
1742 if g:netrw_keepdir | 1676 if g:netrw_keepdir |
1743 let {a:vt}netrw_dirkeep = getcwd() | 1677 let {a:vt}netrw_dirkeep = getcwd() |
1744 endif | 1678 endif |
1745 if has("clipboard") | 1679 if has("clipboard") |
1746 if &go =~# 'a' | sil! let {a:vt}netrw_regstar = @* | endif | 1680 sil! let {a:vt}netrw_starkeep = @* |
1747 endif | 1681 sil! let {a:vt}netrw_pluskeep = @+ |
1748 sil! let {a:vt}netrw_regslash= @/ | 1682 endif |
1683 sil! let {a:vt}netrw_slashkeep= @/ | |
1749 | 1684 |
1750 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>")) | 1685 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>")) |
1751 " call Dret("s:NetrwOptionSave : tab#".tabpagenr()." win#".winnr()) | 1686 " call Dret("s:NetrwOptionsSave : tab#".tabpagenr()." win#".winnr()) |
1752 endfun | 1687 endfun |
1753 | 1688 |
1754 " ------------------------------------------------------------------------ | 1689 " --------------------------------------------------------------------- |
1755 " s:NetrwSafeOptions: sets options to help netrw do its job {{{2 | 1690 " s:NetrwOptionsSafe: sets options to help netrw do its job {{{2 |
1756 " Use s:NetrwSaveOptions() to save user settings | 1691 " Use s:NetrwSaveOptions() to save user settings |
1757 " Use s:NetrwOptionRestore() to restore user settings | 1692 " Use s:NetrwOptionsRestore() to restore user settings |
1758 fun! s:NetrwSafeOptions() | 1693 fun! s:NetrwOptionsSafe(islocal) |
1759 " call Dfunc("s:NetrwSafeOptions() win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%"))."> winnr($)=".winnr("$")) | 1694 " call Dfunc("s:NetrwOptionsSafe(islocal=".a:islocal.") win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%"))."> winnr($)=".winnr("$")) |
1760 " call Decho("win#".winnr()."'s ft=".&ft,'~'.expand("<slnum>")) | 1695 " call Decho("win#".winnr()."'s ft=".&ft,'~'.expand("<slnum>")) |
1761 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>")) | 1696 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>")) |
1762 if exists("+acd") | setl noacd | endif | 1697 if exists("+acd") | call s:NetrwSetSafeSetting("&l:acd",0)|endif |
1763 setl noai | 1698 call s:NetrwSetSafeSetting("&l:ai",0) |
1764 setl noaw | 1699 call s:NetrwSetSafeSetting("&l:aw",0) |
1765 setl nobl | 1700 call s:NetrwSetSafeSetting("&l:bl",0) |
1766 setl nobomb | 1701 call s:NetrwSetSafeSetting("&l:bomb",0) |
1767 setl bt=nofile | 1702 if a:islocal |
1768 setl noci | 1703 call s:NetrwSetSafeSetting("&l:bt","nofile") |
1769 setl nocin | 1704 else |
1770 setl bh=hide | 1705 call s:NetrwSetSafeSetting("&l:bt","acwrite") |
1771 setl cino= | 1706 endif |
1772 setl com= | 1707 call s:NetrwSetSafeSetting("&l:ci",0) |
1773 setl cpo-=a | 1708 call s:NetrwSetSafeSetting("&l:cin",0) |
1774 setl cpo-=A | 1709 call s:NetrwSetSafeSetting("&l:bh","hide") |
1710 call s:NetrwSetSafeSetting("&l:cino","") | |
1711 call s:NetrwSetSafeSetting("&l:com","") | |
1712 if &cpo =~ 'a' | call s:NetrwSetSafeSetting("&cpo",substitute(&cpo,'a','','g')) | endif | |
1713 if &cpo =~ 'A' | call s:NetrwSetSafeSetting("&cpo",substitute(&cpo,'A','','g')) | endif | |
1775 setl fo=nroql2 | 1714 setl fo=nroql2 |
1776 setl nohid | 1715 call s:NetrwSetSafeSetting("&l:hid",0) |
1777 setl noim | 1716 call s:NetrwSetSafeSetting("&l:im",0) |
1778 setl isk+=@ isk+=* isk+=/ | 1717 setl isk+=@ isk+=* isk+=/ |
1779 setl magic | 1718 call s:NetrwSetSafeSetting("&l:magic",1) |
1780 if g:netrw_use_noswf | 1719 if g:netrw_use_noswf |
1781 setl noswf | 1720 call s:NetrwSetSafeSetting("swf",0) |
1782 endif | 1721 endif |
1783 setl report=10000 | 1722 call s:NetrwSetSafeSetting("&l:report",10000) |
1784 setl sel=inclusive | 1723 call s:NetrwSetSafeSetting("&l:sel","inclusive") |
1785 setl nospell | 1724 call s:NetrwSetSafeSetting("&l:spell",0) |
1786 setl tw=0 | 1725 call s:NetrwSetSafeSetting("&l:tw",0) |
1787 setl wig= | 1726 call s:NetrwSetSafeSetting("&l:wig","") |
1788 setl cedit& | 1727 setl cedit& |
1789 call s:NetrwCursor() | 1728 call s:NetrwCursor() |
1790 | 1729 |
1791 " allow the user to override safe options | 1730 " allow the user to override safe options |
1792 " call Decho("ft<".&ft."> ei=".&ei,'~'.expand("<slnum>")) | 1731 " call Decho("ft<".&ft."> ei=".&ei,'~'.expand("<slnum>")) |
1793 if &ft == "netrw" | 1732 if &ft == "netrw" |
1794 " call Decho("do any netrw FileType autocmds (doau FileType netrw)",'~'.expand("<slnum>")) | 1733 " call Decho("do any netrw FileType autocmds (doau FileType netrw)",'~'.expand("<slnum>")) |
1795 sil! keepalt NetrwKeepj doau FileType netrw | 1734 keepalt NetrwKeepj doau FileType netrw |
1796 endif | 1735 endif |
1797 | 1736 |
1798 " call Decho("fo=".&fo.(exists("+acd")? " acd=".&acd : " acd doesn't exist")." bh=".&l:bh." bt<".&bt.">",'~'.expand("<slnum>")) | 1737 " call Decho("fo=".&fo.(exists("+acd")? " acd=".&acd : " acd doesn't exist")." bh=".&l:bh." bt<".&bt.">",'~'.expand("<slnum>")) |
1799 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>")) | 1738 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>")) |
1800 " call Dret("s:NetrwSafeOptions") | 1739 " call Dret("s:NetrwOptionsSafe") |
1740 endfun | |
1741 | |
1742 " --------------------------------------------------------------------- | |
1743 " s:NetrwOptionsRestore: restore options (based on prior s:NetrwOptionsSave) {{{2 | |
1744 fun! s:NetrwOptionsRestore(vt) | |
1745 " call Dfunc("s:NetrwOptionsRestore(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> winnr($)=".winnr("$")) | |
1746 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>")) | |
1747 if !exists("{a:vt}netrw_optionsave") | |
1748 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>")) | |
1749 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) | |
1750 " call Dret("s:NetrwOptionsRestore : ".a:vt."netrw_optionsave doesn't exist") | |
1751 return | |
1752 endif | |
1753 unlet {a:vt}netrw_optionsave | |
1754 | |
1755 if exists("+acd") | |
1756 if exists("{a:vt}netrw_acdkeep") | |
1757 " call Decho("g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd,'~'.expand("<slnum>")) | |
1758 let curdir = getcwd() | |
1759 let &l:acd = {a:vt}netrw_acdkeep | |
1760 unlet {a:vt}netrw_acdkeep | |
1761 if &l:acd | |
1762 call s:NetrwLcd(curdir) | |
1763 endif | |
1764 endif | |
1765 endif | |
1766 call s:NetrwRestoreSetting(a:vt."netrw_aikeep","&l:ai") | |
1767 call s:NetrwRestoreSetting(a:vt."netrw_awkeep","&l:aw") | |
1768 call s:NetrwRestoreSetting(a:vt."netrw_blkeep","&l:bl") | |
1769 call s:NetrwRestoreSetting(a:vt."netrw_btkeep","&l:bt") | |
1770 call s:NetrwRestoreSetting(a:vt."netrw_bombkeep","&l:bomb") | |
1771 call s:NetrwRestoreSetting(a:vt."netrw_cedit","&cedit") | |
1772 call s:NetrwRestoreSetting(a:vt."netrw_cikeep","&l:ci") | |
1773 call s:NetrwRestoreSetting(a:vt."netrw_cinkeep","&l:cin") | |
1774 call s:NetrwRestoreSetting(a:vt."netrw_cinokeep","&l:cino") | |
1775 call s:NetrwRestoreSetting(a:vt."netrw_comkeep","&l:com") | |
1776 call s:NetrwRestoreSetting(a:vt."netrw_cpokeep","&l:cpo") | |
1777 call s:NetrwRestoreSetting(a:vt."netrw_diffkeep","&l:diff") | |
1778 call s:NetrwRestoreSetting(a:vt."netrw_fenkeep","&l:fen") | |
1779 if exists("g:netrw_ffkeep") && g:netrw_ffkeep | |
1780 call s:NetrwRestoreSetting(a:vt."netrw_ffkeep")","&l:ff") | |
1781 endif | |
1782 call s:NetrwRestoreSetting(a:vt."netrw_fokeep","&l:fo") | |
1783 call s:NetrwRestoreSetting(a:vt."netrw_gdkeep","&l:gd") | |
1784 call s:NetrwRestoreSetting(a:vt."netrw_hidkeep","&l:hidden") | |
1785 call s:NetrwRestoreSetting(a:vt."netrw_imkeep","&l:im") | |
1786 call s:NetrwRestoreSetting(a:vt."netrw_iskkeep","&l:isk") | |
1787 call s:NetrwRestoreSetting(a:vt."netrw_lskeep","&l:ls") | |
1788 call s:NetrwRestoreSetting(a:vt."netrw_makeep","&l:ma") | |
1789 call s:NetrwRestoreSetting(a:vt."netrw_magickeep","&l:magic") | |
1790 call s:NetrwRestoreSetting(a:vt."netrw_modkeep","&l:mod") | |
1791 call s:NetrwRestoreSetting(a:vt."netrw_nukeep","&l:nu") | |
1792 call s:NetrwRestoreSetting(a:vt."netrw_rnukeep","&l:rnu") | |
1793 call s:NetrwRestoreSetting(a:vt."netrw_repkeep","&l:report") | |
1794 call s:NetrwRestoreSetting(a:vt."netrw_rokeep","&l:ro") | |
1795 call s:NetrwRestoreSetting(a:vt."netrw_selkeep","&l:sel") | |
1796 call s:NetrwRestoreSetting(a:vt."netrw_spellkeep","&l:spell") | |
1797 call s:NetrwRestoreSetting(a:vt."netrw_twkeep","&l:tw") | |
1798 call s:NetrwRestoreSetting(a:vt."netrw_wigkeep","&l:wig") | |
1799 call s:NetrwRestoreSetting(a:vt."netrw_wrapkeep","&l:wrap") | |
1800 call s:NetrwRestoreSetting(a:vt."netrw_writekeep","&l:write") | |
1801 call s:NetrwRestoreSetting("s:yykeep","@@") | |
1802 " former problem: start with liststyle=0; press <i> : result, following line resets l:ts. | |
1803 " Fixed; in s:PerformListing, when w:netrw_liststyle is s:LONGLIST, will use a printf to pad filename with spaces | |
1804 " rather than by appending a tab which previously was using "&ts" to set the desired spacing. (Sep 28, 2018) | |
1805 call s:NetrwRestoreSetting(a:vt."netrw_tskeep","&l:ts") | |
1806 | |
1807 if exists("{a:vt}netrw_swfkeep") | |
1808 if &directory == "" | |
1809 " user hasn't specified a swapfile directory; | |
1810 " netrw will temporarily set the swapfile directory | |
1811 " to the current directory as returned by getcwd(). | |
1812 let &l:directory= getcwd() | |
1813 sil! let &l:swf = {a:vt}netrw_swfkeep | |
1814 setl directory= | |
1815 unlet {a:vt}netrw_swfkeep | |
1816 elseif &l:swf != {a:vt}netrw_swfkeep | |
1817 if !g:netrw_use_noswf | |
1818 " following line causes a Press ENTER in windows -- can't seem to work around it!!! | |
1819 sil! let &l:swf= {a:vt}netrw_swfkeep | |
1820 endif | |
1821 unlet {a:vt}netrw_swfkeep | |
1822 endif | |
1823 endif | |
1824 if exists("{a:vt}netrw_dirkeep") && isdirectory(s:NetrwFile({a:vt}netrw_dirkeep)) && g:netrw_keepdir | |
1825 let dirkeep = substitute({a:vt}netrw_dirkeep,'\\','/','g') | |
1826 if exists("{a:vt}netrw_dirkeep") | |
1827 call s:NetrwLcd(dirkeep) | |
1828 unlet {a:vt}netrw_dirkeep | |
1829 endif | |
1830 endif | |
1831 if has("clipboard") | |
1832 call s:NetrwRestoreSetting(a:vt."netrw_starkeep","@*") | |
1833 call s:NetrwRestoreSetting(a:vt."netrw_pluskeep","@+") | |
1834 endif | |
1835 call s:NetrwRestoreSetting(a:vt."netrw_slashkeep","@/") | |
1836 | |
1837 " call Decho("g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd,'~'.expand("<slnum>")) | |
1838 " call Decho("fo=".&fo.(exists("+acd")? " acd=".&acd : " acd doesn't exist"),'~'.expand("<slnum>")) | |
1839 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) | |
1840 " call Decho("diff=".&l:diff." win#".winnr()." w:netrw_diffkeep=".(exists("w:netrw_diffkeep")? w:netrw_diffkeep : "doesn't exist"),'~'.expand("<slnum>")) | |
1841 " call Decho("ts=".&l:ts,'~'.expand("<slnum>")) | |
1842 " Moved the filetype detect here from NetrwGetFile() because remote files | |
1843 " were having their filetype detect-generated settings overwritten by | |
1844 " NetrwOptionRestore. | |
1845 if &ft != "netrw" | |
1846 " call Decho("filetype detect (ft=".&ft.")",'~'.expand("<slnum>")) | |
1847 filetype detect | |
1848 endif | |
1849 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>")) | |
1850 " call Dret("s:NetrwOptionsRestore : tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> modified=".&modified." modifiable=".&modifiable." readonly=".&readonly) | |
1851 endfun | |
1852 | |
1853 " --------------------------------------------------------------------- | |
1854 " s:NetrwSetSafeSetting: sets an option to a safe setting {{{2 | |
1855 " but only when the options' value and the safe setting differ | |
1856 " Doing this means that netrw will not come up as having changed a | |
1857 " setting last when it really didn't actually change it. | |
1858 " | |
1859 " Called from s:NetrwOptionsSafe | |
1860 " ex. call s:NetrwSetSafeSetting("&l:sel","inclusive") | |
1861 fun! s:NetrwSetSafeSetting(setting,safesetting) | |
1862 " call Dfunc("s:NetrwSetSafeSetting(setting<".a:setting."> safesetting<".a:safesetting.">)") | |
1863 | |
1864 if a:setting =~ '^&' | |
1865 " call Decho("fyi: a:setting starts with &") | |
1866 exe "let settingval= ".a:setting | |
1867 " call Decho("fyi: settingval<".settingval.">") | |
1868 | |
1869 if settingval != a:safesetting | |
1870 " call Decho("set setting<".a:setting."> to option value<".a:safesetting.">") | |
1871 if type(a:safesetting) == 0 | |
1872 exe "let ".a:setting."=".a:safesetting | |
1873 elseif type(a:safesetting) == 1 | |
1874 exe "let ".a:setting."= '".a:safesetting."'" | |
1875 else | |
1876 call netrw#ErrorMsg(s:ERROR,"(s:NetrwRestoreSetting) doesn't know how to restore ".a:setting." with a safesetting of type#".type(a:safesetting),105) | |
1877 endif | |
1878 endif | |
1879 endif | |
1880 | |
1881 " call Dret("s:NetrwSetSafeSetting") | |
1882 endfun | |
1883 | |
1884 " ------------------------------------------------------------------------ | |
1885 " s:NetrwRestoreSetting: restores specified setting using associated keepvar, {{{2 | |
1886 " but only if the setting value differs from the associated keepvar. | |
1887 " Doing this means that netrw will not come up as having changed a | |
1888 " setting last when it really didn't actually change it. | |
1889 " | |
1890 " Used by s:NetrwOptionsRestore() to restore each netrw-senstive setting | |
1891 " keepvars are set up by s:NetrwOptionsSave | |
1892 fun! s:NetrwRestoreSetting(keepvar,setting) | |
1893 "" call Dfunc("s:NetrwRestoreSetting(a:keepvar<".a:keepvar."> a:setting<".a:setting.">)") | |
1894 | |
1895 " typically called from s:NetrwOptionsRestore | |
1896 " call s:NetrwRestoreSettings(keep-option-variable-name,'associated-option') | |
1897 " ex. call s:NetrwRestoreSetting(a:vt."netrw_selkeep","&l:sel") | |
1898 " Restores option (if different) from a keepvar | |
1899 if exists(a:keepvar) | |
1900 exe "let keepvarval= ".a:keepvar | |
1901 exe "let setting= ".a:setting | |
1902 | |
1903 "" call Decho("fyi: a:keepvar<".a:keepvar."> exists") | |
1904 "" call Decho("fyi: keepvarval=".keepvarval) | |
1905 "" call Decho("fyi: a:setting<".a:setting."> setting<".setting.">") | |
1906 | |
1907 if setting != keepvarval | |
1908 "" call Decho("restore setting<".a:setting."=".setting."> to keepvarval<".keepvarval.">") | |
1909 if type(a:setting) == 0 | |
1910 exe "let ".a:setting."= ".keepvarval | |
1911 elseif type(a:setting) == 1 | |
1912 exe "let ".a:setting."= '".keepvarval."'" | |
1913 else | |
1914 call netrw#ErrorMsg(s:ERROR,"(s:NetrwRestoreSetting) doesn't know how to restore ".a:keepvar." with a setting of type#".type(a:setting),105) | |
1915 endif | |
1916 endif | |
1917 | |
1918 exe "unlet ".a:keepvar | |
1919 endif | |
1920 | |
1921 "" call Dret("s:NetrwRestoreSetting") | |
1801 endfun | 1922 endfun |
1802 | 1923 |
1803 " --------------------------------------------------------------------- | 1924 " --------------------------------------------------------------------- |
1804 " NetrwStatusLine: {{{2 | 1925 " NetrwStatusLine: {{{2 |
1805 fun! NetrwStatusLine() | 1926 fun! NetrwStatusLine() |
1831 else | 1952 else |
1832 return "Match ".w:netrw_explore_mtchcnt." of ".w:netrw_explore_listlen | 1953 return "Match ".w:netrw_explore_mtchcnt." of ".w:netrw_explore_listlen |
1833 endif | 1954 endif |
1834 endfun | 1955 endfun |
1835 | 1956 |
1836 " --------------------------------------------------------------------- | 1957 " =============================== |
1837 " Netrw Transfer Functions: {{{1 | 1958 " Netrw Transfer Functions: {{{1 |
1838 " =============================== | 1959 " =============================== |
1839 | 1960 |
1840 " ------------------------------------------------------------------------ | 1961 " ------------------------------------------------------------------------ |
1841 " netrw#NetRead: responsible for reading a file over the net {{{2 | 1962 " netrw#NetRead: responsible for reading a file over the net {{{2 |
1845 " =3 obtain file, but leave in temporary format | 1966 " =3 obtain file, but leave in temporary format |
1846 fun! netrw#NetRead(mode,...) | 1967 fun! netrw#NetRead(mode,...) |
1847 " call Dfunc("netrw#NetRead(mode=".a:mode.",...) a:0=".a:0." ".g:loaded_netrw.((a:0 > 0)? " a:1<".a:1.">" : "")) | 1968 " call Dfunc("netrw#NetRead(mode=".a:mode.",...) a:0=".a:0." ".g:loaded_netrw.((a:0 > 0)? " a:1<".a:1.">" : "")) |
1848 | 1969 |
1849 " NetRead: save options {{{3 | 1970 " NetRead: save options {{{3 |
1850 call s:NetrwOptionSave("w:") | 1971 call s:NetrwOptionsSave("w:") |
1851 call s:NetrwSafeOptions() | 1972 call s:NetrwOptionsSafe(0) |
1852 call s:RestoreCursorline() | 1973 call s:RestoreCursorline() |
1853 " NetrwSafeOptions sets a buffer up for a netrw listing, which includes buflisting off. | 1974 " NetrwSafeOptions sets a buffer up for a netrw listing, which includes buflisting off. |
1854 " However, this setting is not wanted for a remote editing session. The buffer should be "nofile", still. | 1975 " However, this setting is not wanted for a remote editing session. The buffer should be "nofile", still. |
1855 setl bl | 1976 setl bl |
1856 " call Decho("(netrw#NetRead) buf#".bufnr("%")."<".bufname("%")."> bl=".&bl." bt=".&bt." bh=".&bh,'~'.expand("<slnum>")) | 1977 " call Decho("buf#".bufnr("%")."<".bufname("%")."> bl=".&bl." bt=".&bt." bh=".&bh,'~'.expand("<slnum>")) |
1857 | 1978 |
1858 " NetRead: interpret mode into a readcmd {{{3 | 1979 " NetRead: interpret mode into a readcmd {{{3 |
1859 if a:mode == 0 " read remote file before current line | 1980 if a:mode == 0 " read remote file before current line |
1860 let readcmd = "0r" | 1981 let readcmd = "0r" |
1861 elseif a:mode == 1 " read file after current line | 1982 elseif a:mode == 1 " read file after current line |
1941 let ichoice= ichoice + 1 | 2062 let ichoice= ichoice + 1 |
1942 | 2063 |
1943 " NetRead: Determine method of read (ftp, rcp, etc) {{{3 | 2064 " NetRead: Determine method of read (ftp, rcp, etc) {{{3 |
1944 call s:NetrwMethod(choice) | 2065 call s:NetrwMethod(choice) |
1945 if !exists("b:netrw_method") || b:netrw_method < 0 | 2066 if !exists("b:netrw_method") || b:netrw_method < 0 |
1946 " call Dfunc("netrw#NetRead : unsupported method") | 2067 " call Dret("netrw#NetRead : unsupported method") |
1947 return | 2068 return |
1948 endif | 2069 endif |
1949 let tmpfile= s:GetTempfile(b:netrw_fname) " apply correct suffix | 2070 let tmpfile= s:GetTempfile(b:netrw_fname) " apply correct suffix |
1950 | 2071 |
1951 " Check whether or not NetrwBrowse() should be handling this request | 2072 " Check whether or not NetrwBrowse() should be handling this request |
2101 if g:netrw_scp_cmd =~ '^scp' && (has("win32") || has("win95") || has("win64") || has("win16")) | 2222 if g:netrw_scp_cmd =~ '^scp' && (has("win32") || has("win95") || has("win64") || has("win16")) |
2102 let tmpfile_get = substitute(tr(tmpfile, '\', '/'), '^\(\a\):[/\\]\(.*\)$', '/\1/\2', '') | 2223 let tmpfile_get = substitute(tr(tmpfile, '\', '/'), '^\(\a\):[/\\]\(.*\)$', '/\1/\2', '') |
2103 else | 2224 else |
2104 let tmpfile_get = tmpfile | 2225 let tmpfile_get = tmpfile |
2105 endif | 2226 endif |
2106 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".s:ShellEscape(g:netrw_machine.":".b:netrw_fname,1)." ".s:ShellEscape(tmpfile_get,1)) | 2227 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".escape(s:ShellEscape(g:netrw_machine.":".b:netrw_fname,1),' ')." ".s:ShellEscape(tmpfile_get,1)) |
2107 let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) | 2228 let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) |
2108 let b:netrw_lastfile = choice | 2229 let b:netrw_lastfile = choice |
2109 | 2230 |
2110 "......................................... | 2231 "......................................... |
2111 " NetRead: (http) NetRead Method #5 (wget) {{{3 | 2232 " NetRead: (http) NetRead Method #5 (wget) {{{3 |
2183 | 2304 |
2184 "......................................... | 2305 "......................................... |
2185 " NetRead: (rsync) NetRead Method #7 {{{3 | 2306 " NetRead: (rsync) NetRead Method #7 {{{3 |
2186 elseif b:netrw_method == 7 | 2307 elseif b:netrw_method == 7 |
2187 " call Decho("read via rsync (method #7)",'~'.expand("<slnum>")) | 2308 " call Decho("read via rsync (method #7)",'~'.expand("<slnum>")) |
2188 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".s:ShellEscape(g:netrw_machine.":".b:netrw_fname,1)." ".s:ShellEscape(tmpfile,1)) | 2309 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".s:ShellEscape(g:netrw_machine.g:netrw_rsync_sep.b:netrw_fname,1)." ".s:ShellEscape(tmpfile,1)) |
2189 let result = s:NetrwGetFile(readcmd,tmpfile, b:netrw_method) | 2310 let result = s:NetrwGetFile(readcmd,tmpfile, b:netrw_method) |
2190 let b:netrw_lastfile = choice | 2311 let b:netrw_lastfile = choice |
2191 | 2312 |
2192 "......................................... | 2313 "......................................... |
2193 " NetRead: (fetch) NetRead Method #8 {{{3 | 2314 " NetRead: (fetch) NetRead Method #8 {{{3 |
2250 endif | 2371 endif |
2251 if s:FileReadable(tmpfile) && tmpfile !~ '.tar.bz2$' && tmpfile !~ '.tar.gz$' && tmpfile !~ '.zip' && tmpfile !~ '.tar' && readcmd != 't' && tmpfile !~ '.tar.xz$' && tmpfile !~ '.txz' | 2372 if s:FileReadable(tmpfile) && tmpfile !~ '.tar.bz2$' && tmpfile !~ '.tar.gz$' && tmpfile !~ '.zip' && tmpfile !~ '.tar' && readcmd != 't' && tmpfile !~ '.tar.xz$' && tmpfile !~ '.txz' |
2252 " call Decho("cleanup by deleting tmpfile<".tmpfile.">",'~'.expand("<slnum>")) | 2373 " call Decho("cleanup by deleting tmpfile<".tmpfile.">",'~'.expand("<slnum>")) |
2253 NetrwKeepj call s:NetrwDelete(tmpfile) | 2374 NetrwKeepj call s:NetrwDelete(tmpfile) |
2254 endif | 2375 endif |
2255 NetrwKeepj call s:NetrwOptionRestore("w:") | 2376 NetrwKeepj call s:NetrwOptionsRestore("w:") |
2256 | 2377 |
2257 " call Dret("netrw#NetRead :5 getcwd<".getcwd().">") | 2378 " call Dret("netrw#NetRead :5 getcwd<".getcwd().">") |
2258 endfun | 2379 endfun |
2259 | 2380 |
2260 " ------------------------------------------------------------------------ | 2381 " ------------------------------------------------------------------------ |
2262 fun! netrw#NetWrite(...) range | 2383 fun! netrw#NetWrite(...) range |
2263 " call Dfunc("netrw#NetWrite(a:0=".a:0.") ".g:loaded_netrw) | 2384 " call Dfunc("netrw#NetWrite(a:0=".a:0.") ".g:loaded_netrw) |
2264 | 2385 |
2265 " NetWrite: option handling {{{3 | 2386 " NetWrite: option handling {{{3 |
2266 let mod= 0 | 2387 let mod= 0 |
2267 call s:NetrwOptionSave("w:") | 2388 call s:NetrwOptionsSave("w:") |
2268 call s:NetrwSafeOptions() | 2389 call s:NetrwOptionsSafe(0) |
2269 | 2390 |
2270 " NetWrite: Get Temporary Filename {{{3 | 2391 " NetWrite: Get Temporary Filename {{{3 |
2271 let tmpfile= s:GetTempfile("") | 2392 let tmpfile= s:GetTempfile("") |
2272 if tmpfile == "" | 2393 if tmpfile == "" |
2273 " call Dret("netrw#NetWrite : unable to get a tempfile!") | 2394 " call Dret("netrw#NetWrite : unable to get a tempfile!") |
2372 " ============= | 2493 " ============= |
2373 " NetWrite: Perform Protocol-Based Write {{{3 | 2494 " NetWrite: Perform Protocol-Based Write {{{3 |
2374 " ============================ | 2495 " ============================ |
2375 if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1 | 2496 if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1 |
2376 echo "(netrw) Processing your write request..." | 2497 echo "(netrw) Processing your write request..." |
2377 " call Decho("(netrw) Processing your write request...",'~'.expand("<slnum>")) | 2498 " call Decho("Processing your write request...",'~'.expand("<slnum>")) |
2378 endif | 2499 endif |
2379 | 2500 |
2380 "......................................... | 2501 "......................................... |
2381 " NetWrite: (rcp) NetWrite Method #1 {{{3 | 2502 " NetWrite: (rcp) NetWrite Method #1 {{{3 |
2382 if b:netrw_method == 1 | 2503 if b:netrw_method == 1 |
2525 let curl= substitute(g:netrw_http_put_cmd,'\s\+.*$',"","") | 2646 let curl= substitute(g:netrw_http_put_cmd,'\s\+.*$',"","") |
2526 if executable(curl) | 2647 if executable(curl) |
2527 let url= g:netrw_choice | 2648 let url= g:netrw_choice |
2528 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_http_put_cmd." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(url,1) ) | 2649 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_http_put_cmd." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(url,1) ) |
2529 elseif !exists("g:netrw_quiet") | 2650 elseif !exists("g:netrw_quiet") |
2530 call netrw#ErrorMsg(s:ERROR,"can't write to http using <".g:netrw_http_put_cmd".">".",16) | 2651 call netrw#ErrorMsg(s:ERROR,"can't write to http using <".g:netrw_http_put_cmd.">".",16) |
2531 endif | 2652 endif |
2532 | 2653 |
2533 "......................................... | 2654 "......................................... |
2534 " NetWrite: (dav) NetWrite Method #6 (cadaver) {{{3 | 2655 " NetWrite: (dav) NetWrite Method #6 (cadaver) {{{3 |
2535 elseif b:netrw_method == 6 | 2656 elseif b:netrw_method == 6 |
2569 | 2690 |
2570 "......................................... | 2691 "......................................... |
2571 " NetWrite: (rsync) NetWrite Method #7 {{{3 | 2692 " NetWrite: (rsync) NetWrite Method #7 {{{3 |
2572 elseif b:netrw_method == 7 | 2693 elseif b:netrw_method == 7 |
2573 " call Decho("write via rsync (method #7)",'~'.expand("<slnum>")) | 2694 " call Decho("write via rsync (method #7)",'~'.expand("<slnum>")) |
2574 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(g:netrw_machine.":".b:netrw_fname,1)) | 2695 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(g:netrw_machine.g:netrw_rsync_sep.b:netrw_fname,1)) |
2575 let b:netrw_lastfile = choice | 2696 let b:netrw_lastfile = choice |
2576 | 2697 |
2577 "......................................... | 2698 "......................................... |
2578 " NetWrite: (sftp) NetWrite Method #9 {{{3 | 2699 " NetWrite: (sftp) NetWrite Method #9 {{{3 |
2579 elseif b:netrw_method == 9 | 2700 elseif b:netrw_method == 9 |
2614 " call Decho("cleanup",'~'.expand("<slnum>")) | 2735 " call Decho("cleanup",'~'.expand("<slnum>")) |
2615 if s:FileReadable(tmpfile) | 2736 if s:FileReadable(tmpfile) |
2616 " call Decho("tmpfile<".tmpfile."> readable, will now delete it",'~'.expand("<slnum>")) | 2737 " call Decho("tmpfile<".tmpfile."> readable, will now delete it",'~'.expand("<slnum>")) |
2617 call s:NetrwDelete(tmpfile) | 2738 call s:NetrwDelete(tmpfile) |
2618 endif | 2739 endif |
2619 call s:NetrwOptionRestore("w:") | 2740 call s:NetrwOptionsRestore("w:") |
2620 | 2741 |
2621 if a:firstline == 1 && a:lastline == line("$") | 2742 if a:firstline == 1 && a:lastline == line("$") |
2622 " restore modifiability; usually equivalent to set nomod | 2743 " restore modifiability; usually equivalent to set nomod |
2623 let &mod= mod | 2744 let &mod= mod |
2624 " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) | 2745 " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) |
2674 endfun | 2795 endfun |
2675 | 2796 |
2676 " --------------------------------------------------------------------- | 2797 " --------------------------------------------------------------------- |
2677 " netrw#SetTreetop: resets the tree top to the current directory/specified directory {{{2 | 2798 " netrw#SetTreetop: resets the tree top to the current directory/specified directory {{{2 |
2678 " (implements the :Ntree command) | 2799 " (implements the :Ntree command) |
2679 fun! netrw#SetTreetop(...) | 2800 fun! netrw#SetTreetop(iscmd,...) |
2680 " call Dfunc("netrw#SetTreetop(".((a:0 > 0)? a:1 : "").") a:0=".a:0) | 2801 " call Dfunc("netrw#SetTreetop(iscmd=".a:iscmd." ".((a:0 > 0)? a:1 : "").") a:0=".a:0) |
2681 | 2802 " call Decho("w:netrw_treetop<".w:netrw_treetop.">") |
2803 | |
2804 " iscmd==0: netrw#SetTreetop called using gn mapping | |
2805 " iscmd==1: netrw#SetTreetop called using :Ntree from the command line | |
2806 " call Decho("(iscmd=".a:iscmd.": called using :Ntree from command line",'~'.expand("<slnum>")) | |
2682 " clear out the current tree | 2807 " clear out the current tree |
2683 if exists("w:netrw_treetop") | 2808 if exists("w:netrw_treetop") |
2684 " call Decho("clearing out current tree",'~'.expand("<slnum>")) | 2809 " call Decho("clearing out current tree",'~'.expand("<slnum>")) |
2685 let inittreetop= w:netrw_treetop | 2810 let inittreetop= w:netrw_treetop |
2686 unlet w:netrw_treetop | 2811 unlet w:netrw_treetop |
2687 endif | 2812 endif |
2688 if exists("w:netrw_treedict") | 2813 if exists("w:netrw_treedict") |
2689 " call Decho("freeing w:netrw_treedict",'~'.expand("<slnum>")) | 2814 " call Decho("freeing w:netrw_treedict",'~'.expand("<slnum>")) |
2690 unlet w:netrw_treedict | 2815 unlet w:netrw_treedict |
2691 endif | 2816 endif |
2692 | 2817 " call Decho("inittreetop<".(exists("inittreetop")? inittreetop : "n/a").">") |
2693 if a:1 == "" && exists("inittreetop") | 2818 |
2819 if (a:iscmd == 0 || a:1 == "") && exists("inittreetop") | |
2694 let treedir= s:NetrwTreePath(inittreetop) | 2820 let treedir= s:NetrwTreePath(inittreetop) |
2695 " call Decho("treedir<".treedir.">",'~'.expand("<slnum>")) | 2821 " call Decho("treedir<".treedir.">",'~'.expand("<slnum>")) |
2696 else | 2822 else |
2697 if isdirectory(s:NetrwFile(a:1)) | 2823 if isdirectory(s:NetrwFile(a:1)) |
2698 " call Decho("a:1<".a:1."> is a directory",'~'.expand("<slnum>")) | 2824 " call Decho("a:1<".a:1."> is a directory",'~'.expand("<slnum>")) |
2699 let treedir= a:1 | 2825 let treedir= a:1 |
2700 elseif exists("b:netrw_curdir") && (isdirectory(s:NetrwFile(b:netrw_curdir."/".a:1)) || a:1 =~ '^\a\{3,}://') | 2826 elseif exists("b:netrw_curdir") && (isdirectory(s:NetrwFile(b:netrw_curdir."/".a:1)) || a:1 =~ '^\a\{3,}://') |
2701 let treedir= b:netrw_curdir."/".a:1 | 2827 let treedir= b:netrw_curdir."/".a:1 |
2702 " call Decho("a:1<".a:1."> is NOT a directory, trying treedir<".treedir.">",'~'.expand("<slnum>")) | 2828 " call Decho("a:1<".a:1."> is NOT a directory, using treedir<".treedir.">",'~'.expand("<slnum>")) |
2703 else | 2829 else |
2704 " normally the cursor is left in the message window. | 2830 " normally the cursor is left in the message window. |
2705 " However, here this results in the directory being listed in the message window, which is not wanted. | 2831 " However, here this results in the directory being listed in the message window, which is not wanted. |
2706 let netrwbuf= bufnr("%") | 2832 let netrwbuf= bufnr("%") |
2707 call netrw#ErrorMsg(s:ERROR,"sorry, ".a:1." doesn't seem to be a directory!",95) | 2833 call netrw#ErrorMsg(s:ERROR,"sorry, ".a:1." doesn't seem to be a directory!",95) |
2708 exe bufwinnr(netrwbuf)."wincmd w" | 2834 exe bufwinnr(netrwbuf)."wincmd w" |
2709 let treedir= "." | 2835 let treedir= "." |
2710 endif | 2836 endif |
2711 endif | 2837 endif |
2712 " call Decho("treedir<".treedir.">",'~'.expand("<slnum>")) | 2838 " call Decho("treedir<".treedir.">",'~'.expand("<slnum>")) |
2839 | |
2840 " determine if treedir is remote or local | |
2713 let islocal= expand("%") !~ '^\a\{3,}://' | 2841 let islocal= expand("%") !~ '^\a\{3,}://' |
2714 " call Decho("islocal=".islocal,'~'.expand("<slnum>")) | 2842 " call Decho("islocal=".islocal,'~'.expand("<slnum>")) |
2843 | |
2844 " browse the resulting directory | |
2715 if islocal | 2845 if islocal |
2716 call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(islocal,treedir)) | 2846 call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(islocal,treedir)) |
2717 else | 2847 else |
2718 call s:NetrwBrowse(islocal,s:NetrwBrowseChgDir(islocal,treedir)) | 2848 call s:NetrwBrowse(islocal,s:NetrwBrowseChgDir(islocal,treedir)) |
2719 endif | 2849 endif |
2850 | |
2720 " call Dret("netrw#SetTreetop") | 2851 " call Dret("netrw#SetTreetop") |
2721 endfun | 2852 endfun |
2722 | 2853 |
2723 " =========================================== | 2854 " =========================================== |
2724 " s:NetrwGetFile: Function to read temporary file "tfile" with command "readcmd". {{{2 | 2855 " s:NetrwGetFile: Function to read temporary file "tfile" with command "readcmd". {{{2 |
2753 if g:netrw_cygwin | 2884 if g:netrw_cygwin |
2754 let tfile= substitute(a:tfile,g:netrw_cygdrive.'/\(.\)','\1:','') | 2885 let tfile= substitute(a:tfile,g:netrw_cygdrive.'/\(.\)','\1:','') |
2755 else | 2886 else |
2756 let tfile= a:tfile | 2887 let tfile= a:tfile |
2757 endif | 2888 endif |
2758 " call Decho("exe sil! keepalt file ".fnameescape(tfile),'~'.expand("<slnum>")) | 2889 call s:NetrwBufRename(tfile) |
2759 exe "sil! keepalt file ".fnameescape(tfile) | |
2760 | 2890 |
2761 " edit temporary file (ie. read the temporary file in) | 2891 " edit temporary file (ie. read the temporary file in) |
2762 if rfile =~ '\.zip$' | 2892 if rfile =~ '\.zip$' |
2763 " call Decho("handling remote zip file with zip#Browse(tfile<".tfile.">)",'~'.expand("<slnum>")) | 2893 " call Decho("handling remote zip file with zip#Browse(tfile<".tfile.">)",'~'.expand("<slnum>")) |
2764 call zip#Browse(tfile) | 2894 call zip#Browse(tfile) |
2781 " call Decho("edit temporary file",'~'.expand("<slnum>")) | 2911 " call Decho("edit temporary file",'~'.expand("<slnum>")) |
2782 NetrwKeepj e! | 2912 NetrwKeepj e! |
2783 endif | 2913 endif |
2784 | 2914 |
2785 " rename buffer back to remote filename | 2915 " rename buffer back to remote filename |
2786 " call Decho("exe sil! keepalt file ".fnameescape(rfile),'~'.expand("<slnum>")) | 2916 call s:NetrwBufRename(rfile) |
2787 exe "sil! NetrwKeepj keepalt file ".fnameescape(rfile) | |
2788 | 2917 |
2789 " Detect filetype of local version of remote file. | 2918 " Detect filetype of local version of remote file. |
2790 " Note that isk must not include a "/" for scripts.vim | 2919 " Note that isk must not include a "/" for scripts.vim |
2791 " to process this detection correctly. | 2920 " to process this detection correctly. |
2792 " call Decho("detect filetype of local version of remote file",'~'.expand("<slnum>")) | 2921 " call Decho("detect filetype of local version of remote file",'~'.expand("<slnum>")) |
2793 let iskkeep= &l:isk | 2922 let iskkeep= &l:isk |
2794 setl isk-=/ | 2923 setl isk-=/ |
2795 let &l:isk= iskkeep | 2924 let &l:isk= iskkeep |
2796 " call Dredir("renamed buffer back to remote filename<".rfile."> : expand(%)<".expand("%").">","ls!") | 2925 " call Dredir("ls!","NetrwGetFile (renamed buffer back to remote filename<".rfile."> : expand(%)<".expand("%").">)") |
2797 let line1 = 1 | 2926 let line1 = 1 |
2798 let line2 = line("$") | 2927 let line2 = line("$") |
2799 | 2928 |
2800 elseif !&ma | 2929 elseif !&ma |
2801 " attempting to read a file after the current line in the file, but the buffer is not modifiable | 2930 " attempting to read a file after the current line in the file, but the buffer is not modifiable |
2862 " g:netrw_machine= hostname | 2991 " g:netrw_machine= hostname |
2863 " b:netrw_fname = filename | 2992 " b:netrw_fname = filename |
2864 " g:netrw_port = optional port number (for ftp) | 2993 " g:netrw_port = optional port number (for ftp) |
2865 " g:netrw_choice = copy of input url (choice) | 2994 " g:netrw_choice = copy of input url (choice) |
2866 fun! s:NetrwMethod(choice) | 2995 fun! s:NetrwMethod(choice) |
2867 " call Dfunc("NetrwMethod(a:choice<".a:choice.">)") | 2996 " call Dfunc("s:NetrwMethod(a:choice<".a:choice.">)") |
2868 | 2997 |
2869 " sanity check: choice should have at least three slashes in it | 2998 " sanity check: choice should have at least three slashes in it |
2870 if strlen(substitute(a:choice,'[^/]','','g')) < 3 | 2999 if strlen(substitute(a:choice,'[^/]','','g')) < 3 |
2871 call netrw#ErrorMsg(s:ERROR,"not a netrw-style url; netrw uses protocol://[user@]hostname[:port]/[path])",78) | 3000 call netrw#ErrorMsg(s:ERROR,"not a netrw-style url; netrw uses protocol://[user@]hostname[:port]/[path])",78) |
2872 let b:netrw_method = -1 | 3001 let b:netrw_method = -1 |
2873 " call Dret("NetrwMethod : incorrect url format<".a:choice.">") | 3002 " call Dret("s:NetrwMethod : incorrect url format<".a:choice.">") |
2874 return | 3003 return |
2875 endif | 3004 endif |
2876 | 3005 |
2877 " record current g:netrw_machine, if any | 3006 " record current g:netrw_machine, if any |
2878 " curmachine used if protocol == ftp and no .netrc | 3007 " curmachine used if protocol == ftp and no .netrc |
2981 if userid != "" | 3110 if userid != "" |
2982 let g:netrw_uid= userid | 3111 let g:netrw_uid= userid |
2983 endif | 3112 endif |
2984 | 3113 |
2985 if curmachine != g:netrw_machine | 3114 if curmachine != g:netrw_machine |
2986 if exists("s:netwr_hup[".g:netrw_machine."]") | 3115 if exists("s:netrw_hup[".g:netrw_machine."]") |
2987 call NetUserPass("ftp:".g:netrw_machine) | 3116 call NetUserPass("ftp:".g:netrw_machine) |
2988 elseif exists("s:netrw_passwd") | 3117 elseif exists("s:netrw_passwd") |
2989 " if there's a change in hostname, require password re-entry | 3118 " if there's a change in hostname, require password re-entry |
2990 unlet s:netrw_passwd | 3119 unlet s:netrw_passwd |
2991 endif | 3120 endif |
3111 " endif "Decho | 3240 " endif "Decho |
3112 " if exists("s:netrw_passwd") "Decho | 3241 " if exists("s:netrw_passwd") "Decho |
3113 " call Decho("s:netrw_passwd <".s:netrw_passwd.">",'~'.expand("<slnum>")) | 3242 " call Decho("s:netrw_passwd <".s:netrw_passwd.">",'~'.expand("<slnum>")) |
3114 " endif "Decho | 3243 " endif "Decho |
3115 " call Decho("b:netrw_fname <".b:netrw_fname.">",'~'.expand("<slnum>")) | 3244 " call Decho("b:netrw_fname <".b:netrw_fname.">",'~'.expand("<slnum>")) |
3116 " call Dret("NetrwMethod : b:netrw_method=".b:netrw_method." g:netrw_port=".g:netrw_port) | 3245 " call Dret("s:NetrwMethod : b:netrw_method=".b:netrw_method." g:netrw_port=".g:netrw_port) |
3117 endfun | 3246 endfun |
3118 | 3247 |
3119 " ------------------------------------------------------------------------ | 3248 " ------------------------------------------------------------------------ |
3120 " NetReadFixup: this sort of function is typically written by the user {{{2 | 3249 " NetReadFixup: this sort of function is typically written by the user {{{2 |
3121 " to handle extra junk that their system's ftp dumps | 3250 " to handle extra junk that their system's ftp dumps |
3255 endif | 3384 endif |
3256 | 3385 |
3257 " call Dret("NetUserPass : uid<".g:netrw_uid."> passwd<".s:netrw_passwd.">") | 3386 " call Dret("NetUserPass : uid<".g:netrw_uid."> passwd<".s:netrw_passwd.">") |
3258 endfun | 3387 endfun |
3259 | 3388 |
3260 " =========================================== | 3389 " ================================= |
3261 " Shared Browsing Support: {{{1 | 3390 " Shared Browsing Support: {{{1 |
3262 " =========================================== | 3391 " ================================= |
3263 | 3392 |
3264 " --------------------------------------------------------------------- | 3393 " --------------------------------------------------------------------- |
3265 " s:ExplorePatHls: converts an Explore pattern into a regular expression search pattern {{{2 | 3394 " s:ExplorePatHls: converts an Explore pattern into a regular expression search pattern {{{2 |
3266 fun! s:ExplorePatHls(pattern) | 3395 fun! s:ExplorePatHls(pattern) |
3267 " call Dfunc("s:ExplorePatHls(pattern<".a:pattern.">)") | 3396 " call Dfunc("s:ExplorePatHls(pattern<".a:pattern.">)") |
3282 " 3: (browsing) records current directory history | 3411 " 3: (browsing) records current directory history |
3283 " 4: (user: <u>) go up (previous) directory, using history | 3412 " 4: (user: <u>) go up (previous) directory, using history |
3284 " 5: (user: <U>) go down (next) directory, using history | 3413 " 5: (user: <U>) go down (next) directory, using history |
3285 " 6: (user: <mB>) delete bookmark | 3414 " 6: (user: <mB>) delete bookmark |
3286 fun! s:NetrwBookHistHandler(chg,curdir) | 3415 fun! s:NetrwBookHistHandler(chg,curdir) |
3287 " call Dfunc("s:NetrwBookHistHandler(chg=".a:chg." curdir<".a:curdir.">) cnt=".v:count." histcnt=".g:netrw_dirhist_cnt." histmax=".g:netrw_dirhistmax) | 3416 " call Dfunc("s:NetrwBookHistHandler(chg=".a:chg." curdir<".a:curdir.">) cnt=".v:count." histcnt=".g:netrw_dirhistcnt." histmax=".g:netrw_dirhistmax) |
3288 if !exists("g:netrw_dirhistmax") || g:netrw_dirhistmax <= 0 | 3417 if !exists("g:netrw_dirhistmax") || g:netrw_dirhistmax <= 0 |
3289 " " call Dret("s:NetrwBookHistHandler - suppressed due to g:netrw_dirhistmax") | 3418 " " call Dret("s:NetrwBookHistHandler - suppressed due to g:netrw_dirhistmax") |
3290 return | 3419 return |
3291 endif | 3420 endif |
3292 | 3421 |
3329 let cnt = cnt + 1 | 3458 let cnt = cnt + 1 |
3330 endfor | 3459 endfor |
3331 endif | 3460 endif |
3332 | 3461 |
3333 " list directory history | 3462 " list directory history |
3334 let cnt = g:netrw_dirhist_cnt | 3463 " Note: history is saved only when PerformListing is done; |
3464 " ie. when netrw can re-use a netrw buffer, the current directory is not saved in the history. | |
3465 let cnt = g:netrw_dirhistcnt | |
3335 let first = 1 | 3466 let first = 1 |
3336 let histcnt = 0 | 3467 let histcnt = 0 |
3337 if g:netrw_dirhistmax > 0 | 3468 if g:netrw_dirhistmax > 0 |
3338 while ( first || cnt != g:netrw_dirhist_cnt ) | 3469 while ( first || cnt != g:netrw_dirhistcnt ) |
3339 " call Decho("first=".first." cnt=".cnt." dirhist_cnt=".g:netrw_dirhist_cnt,'~'.expand("<slnum>")) | 3470 " call Decho("first=".first." cnt=".cnt." dirhistcnt=".g:netrw_dirhistcnt,'~'.expand("<slnum>")) |
3340 if exists("g:netrw_dirhist_{cnt}") | 3471 if exists("g:netrw_dirhist_{cnt}") |
3341 " call Decho("Netrw History#".histcnt.": ".g:netrw_dirhist_{cnt},'~'.expand("<slnum>")) | 3472 " call Decho("Netrw History#".histcnt.": ".g:netrw_dirhist_{cnt},'~'.expand("<slnum>")) |
3342 echo printf("Netrw History#%-2d: %s",histcnt,g:netrw_dirhist_{cnt}) | 3473 echo printf("Netrw History#%-2d: %s",histcnt,g:netrw_dirhist_{cnt}) |
3343 let didwork= 1 | 3474 let didwork= 1 |
3344 endif | 3475 endif |
3348 if cnt < 0 | 3479 if cnt < 0 |
3349 let cnt= cnt + g:netrw_dirhistmax | 3480 let cnt= cnt + g:netrw_dirhistmax |
3350 endif | 3481 endif |
3351 endwhile | 3482 endwhile |
3352 else | 3483 else |
3353 let g:netrw_dirhist_cnt= 0 | 3484 let g:netrw_dirhistcnt= 0 |
3354 endif | 3485 endif |
3355 if didwork | 3486 if didwork |
3356 call inputsave()|call input("Press <cr> to continue")|call inputrestore() | 3487 call inputsave()|call input("Press <cr> to continue")|call inputrestore() |
3357 endif | 3488 endif |
3358 | 3489 |
3359 elseif a:chg == 3 | 3490 elseif a:chg == 3 |
3360 " saves most recently visited directories (when they differ) | 3491 " saves most recently visited directories (when they differ) |
3361 " call Decho("(browsing) record curdir history",'~'.expand("<slnum>")) | 3492 " call Decho("(browsing) record curdir history",'~'.expand("<slnum>")) |
3362 if !exists("g:netrw_dirhist_cnt") || !exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}") || g:netrw_dirhist_{g:netrw_dirhist_cnt} != a:curdir | 3493 if !exists("g:netrw_dirhistcnt") || !exists("g:netrw_dirhist_{g:netrw_dirhistcnt}") || g:netrw_dirhist_{g:netrw_dirhistcnt} != a:curdir |
3363 if g:netrw_dirhistmax > 0 | 3494 if g:netrw_dirhistmax > 0 |
3364 let g:netrw_dirhist_cnt = ( g:netrw_dirhist_cnt + 1 ) % g:netrw_dirhistmax | 3495 let g:netrw_dirhistcnt = ( g:netrw_dirhistcnt + 1 ) % g:netrw_dirhistmax |
3365 let g:netrw_dirhist_{g:netrw_dirhist_cnt} = a:curdir | 3496 let g:netrw_dirhist_{g:netrw_dirhistcnt} = a:curdir |
3366 endif | 3497 endif |
3367 " call Decho("save dirhist#".g:netrw_dirhist_cnt."<".g:netrw_dirhist_{g:netrw_dirhist_cnt}.">",'~'.expand("<slnum>")) | 3498 " call Decho("save dirhist#".g:netrw_dirhistcnt."<".g:netrw_dirhist_{g:netrw_dirhistcnt}.">",'~'.expand("<slnum>")) |
3368 endif | 3499 endif |
3369 | 3500 |
3370 elseif a:chg == 4 | 3501 elseif a:chg == 4 |
3371 " u: change to the previous directory stored on the history list | 3502 " u: change to the previous directory stored on the history list |
3372 " call Decho("(user: <u>) chg to prev dir from history",'~'.expand("<slnum>")) | 3503 " call Decho("(user: <u>) chg to prev dir from history",'~'.expand("<slnum>")) |
3373 if g:netrw_dirhistmax > 0 | 3504 if g:netrw_dirhistmax > 0 |
3374 let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt - v:count1 ) % g:netrw_dirhistmax | 3505 let g:netrw_dirhistcnt= ( g:netrw_dirhistcnt - v:count1 ) % g:netrw_dirhistmax |
3375 if g:netrw_dirhist_cnt < 0 | 3506 if g:netrw_dirhistcnt < 0 |
3376 let g:netrw_dirhist_cnt= g:netrw_dirhist_cnt + g:netrw_dirhistmax | 3507 let g:netrw_dirhistcnt= g:netrw_dirhistcnt + g:netrw_dirhistmax |
3377 endif | 3508 endif |
3378 else | 3509 else |
3379 let g:netrw_dirhist_cnt= 0 | 3510 let g:netrw_dirhistcnt= 0 |
3380 endif | 3511 endif |
3381 if exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}") | 3512 if exists("g:netrw_dirhist_{g:netrw_dirhistcnt}") |
3382 " call Decho("changedir u#".g:netrw_dirhist_cnt."<".g:netrw_dirhist_{g:netrw_dirhist_cnt}.">",'~'.expand("<slnum>")) | 3513 " call Decho("changedir u#".g:netrw_dirhistcnt."<".g:netrw_dirhist_{g:netrw_dirhistcnt}.">",'~'.expand("<slnum>")) |
3383 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir") | 3514 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir") |
3384 setl ma noro | 3515 setl ma noro |
3385 " call Decho("setl ma noro",'~'.expand("<slnum>")) | 3516 " call Decho("setl ma noro",'~'.expand("<slnum>")) |
3386 sil! NetrwKeepj %d _ | 3517 sil! NetrwKeepj %d _ |
3387 setl nomod | 3518 setl nomod |
3388 " call Decho("setl nomod",'~'.expand("<slnum>")) | 3519 " call Decho("setl nomod",'~'.expand("<slnum>")) |
3389 " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) | 3520 " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) |
3390 endif | 3521 endif |
3391 " call Decho("exe e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt}),'~'.expand("<slnum>")) | 3522 " call Decho("exe e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhistcnt}),'~'.expand("<slnum>")) |
3392 exe "NetrwKeepj e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt}) | 3523 exe "NetrwKeepj e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhistcnt}) |
3393 else | 3524 else |
3394 if g:netrw_dirhistmax > 0 | 3525 if g:netrw_dirhistmax > 0 |
3395 let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt + v:count1 ) % g:netrw_dirhistmax | 3526 let g:netrw_dirhistcnt= ( g:netrw_dirhistcnt + v:count1 ) % g:netrw_dirhistmax |
3396 else | 3527 else |
3397 let g:netrw_dirhist_cnt= 0 | 3528 let g:netrw_dirhistcnt= 0 |
3398 endif | 3529 endif |
3399 echo "Sorry, no predecessor directory exists yet" | 3530 echo "Sorry, no predecessor directory exists yet" |
3400 endif | 3531 endif |
3401 | 3532 |
3402 elseif a:chg == 5 | 3533 elseif a:chg == 5 |
3403 " U: change to the subsequent directory stored on the history list | 3534 " U: change to the subsequent directory stored on the history list |
3404 " call Decho("(user: <U>) chg to next dir from history",'~'.expand("<slnum>")) | 3535 " call Decho("(user: <U>) chg to next dir from history",'~'.expand("<slnum>")) |
3405 if g:netrw_dirhistmax > 0 | 3536 if g:netrw_dirhistmax > 0 |
3406 let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt + 1 ) % g:netrw_dirhistmax | 3537 let g:netrw_dirhistcnt= ( g:netrw_dirhistcnt + 1 ) % g:netrw_dirhistmax |
3407 if exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}") | 3538 if exists("g:netrw_dirhist_{g:netrw_dirhistcnt}") |
3408 " call Decho("changedir U#".g:netrw_dirhist_cnt."<".g:netrw_dirhist_{g:netrw_dirhist_cnt}.">",'~'.expand("<slnum>")) | 3539 " call Decho("changedir U#".g:netrw_dirhistcnt."<".g:netrw_dirhist_{g:netrw_dirhistcnt}.">",'~'.expand("<slnum>")) |
3409 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir") | 3540 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir") |
3410 " call Decho("setl ma noro",'~'.expand("<slnum>")) | 3541 " call Decho("setl ma noro",'~'.expand("<slnum>")) |
3411 setl ma noro | 3542 setl ma noro |
3412 sil! NetrwKeepj %d _ | 3543 sil! NetrwKeepj %d _ |
3413 " call Decho("removed all lines from buffer (%d)",'~'.expand("<slnum>")) | 3544 " call Decho("removed all lines from buffer (%d)",'~'.expand("<slnum>")) |
3414 " call Decho("setl nomod",'~'.expand("<slnum>")) | 3545 " call Decho("setl nomod",'~'.expand("<slnum>")) |
3415 setl nomod | 3546 setl nomod |
3416 " call Decho("(set nomod) ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) | 3547 " call Decho("(set nomod) ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) |
3417 endif | 3548 endif |
3418 " call Decho("exe e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt}),'~'.expand("<slnum>")) | 3549 " call Decho("exe e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhistcnt}),'~'.expand("<slnum>")) |
3419 exe "NetrwKeepj e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt}) | 3550 exe "NetrwKeepj e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhistcnt}) |
3420 else | 3551 else |
3421 let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt - 1 ) % g:netrw_dirhistmax | 3552 let g:netrw_dirhistcnt= ( g:netrw_dirhistcnt - 1 ) % g:netrw_dirhistmax |
3422 if g:netrw_dirhist_cnt < 0 | 3553 if g:netrw_dirhistcnt < 0 |
3423 let g:netrw_dirhist_cnt= g:netrw_dirhist_cnt + g:netrw_dirhistmax | 3554 let g:netrw_dirhistcnt= g:netrw_dirhistcnt + g:netrw_dirhistmax |
3424 endif | 3555 endif |
3425 echo "Sorry, no successor directory exists yet" | 3556 echo "Sorry, no successor directory exists yet" |
3426 endif | 3557 endif |
3427 else | 3558 else |
3428 let g:netrw_dirhist_cnt= 0 | 3559 let g:netrw_dirhistcnt= 0 |
3429 echo "Sorry, no successor directory exists yet (g:netrw_dirhistmax is ".g:netrw_dirhistmax.")" | 3560 echo "Sorry, no successor directory exists yet (g:netrw_dirhistmax is ".g:netrw_dirhistmax.")" |
3430 endif | 3561 endif |
3431 | 3562 |
3432 elseif a:chg == 6 | 3563 elseif a:chg == 6 |
3433 " call Decho("(user: <mB>) delete bookmark'd directory",'~'.expand("<slnum>")) | 3564 " call Decho("(user: <mB>) delete bookmark'd directory",'~'.expand("<slnum>")) |
3458 " Will source the history file (.netrwhist) only if the g:netrw_disthistmax is > 0. | 3589 " Will source the history file (.netrwhist) only if the g:netrw_disthistmax is > 0. |
3459 " Sister function: s:NetrwBookHistSave() | 3590 " Sister function: s:NetrwBookHistSave() |
3460 fun! s:NetrwBookHistRead() | 3591 fun! s:NetrwBookHistRead() |
3461 " call Dfunc("s:NetrwBookHistRead()") | 3592 " call Dfunc("s:NetrwBookHistRead()") |
3462 if !exists("g:netrw_dirhistmax") || g:netrw_dirhistmax <= 0 | 3593 if !exists("g:netrw_dirhistmax") || g:netrw_dirhistmax <= 0 |
3463 " " call Dret("s:NetrwBookHistRead - suppressed due to g:netrw_dirhistmax") | 3594 " call Dret("s:NetrwBookHistRead - nothing read (suppressed due to dirhistmax=".(exists("g:netrw_dirhistmax")? g:netrw_dirhistmax : "n/a").")") |
3464 return | 3595 return |
3465 endif | 3596 endif |
3466 let ykeep= @@ | 3597 let ykeep= @@ |
3598 | |
3599 " read bookmarks | |
3467 if !exists("s:netrw_initbookhist") | 3600 if !exists("s:netrw_initbookhist") |
3468 let home = s:NetrwHome() | 3601 let home = s:NetrwHome() |
3469 let savefile= home."/.netrwbook" | 3602 let savefile= home."/.netrwbook" |
3470 if filereadable(s:NetrwFile(savefile)) | 3603 if filereadable(s:NetrwFile(savefile)) |
3471 " call Decho("sourcing .netrwbook",'~'.expand("<slnum>")) | 3604 " call Decho("sourcing .netrwbook",'~'.expand("<slnum>")) |
3472 exe "keepalt NetrwKeepj so ".savefile | 3605 exe "keepalt NetrwKeepj so ".savefile |
3473 endif | 3606 endif |
3607 | |
3608 " read history | |
3474 if g:netrw_dirhistmax > 0 | 3609 if g:netrw_dirhistmax > 0 |
3475 let savefile= home."/.netrwhist" | 3610 let savefile= home."/.netrwhist" |
3476 if filereadable(s:NetrwFile(savefile)) | 3611 if filereadable(s:NetrwFile(savefile)) |
3477 " call Decho("sourcing .netrwhist",'~'.expand("<slnum>")) | 3612 " call Decho("sourcing .netrwhist",'~'.expand("<slnum>")) |
3478 exe "keepalt NetrwKeepj so ".savefile | 3613 exe "keepalt NetrwKeepj so ".savefile |
3479 endif | 3614 endif |
3480 let s:netrw_initbookhist= 1 | 3615 let s:netrw_initbookhist= 1 |
3481 au VimLeave * call s:NetrwBookHistSave() | 3616 au VimLeave * call s:NetrwBookHistSave() |
3482 endif | 3617 endif |
3483 endif | 3618 endif |
3619 | |
3484 let @@= ykeep | 3620 let @@= ykeep |
3621 " call Decho("dirhistmax=".(exists("g:netrw_dirhistmax")? g:netrw_dirhistmax : "n/a"),'~'.expand("<slnum>")) | |
3622 " call Decho("dirhistcnt=".(exists("g:netrw_dirhistcnt")? g:netrw_dirhistcnt : "n/a"),'~'.expand("<slnum>")) | |
3485 " call Dret("s:NetrwBookHistRead") | 3623 " call Dret("s:NetrwBookHistRead") |
3486 endfun | 3624 endfun |
3487 | 3625 |
3488 " --------------------------------------------------------------------- | 3626 " --------------------------------------------------------------------- |
3489 " s:NetrwBookHistSave: this function saves bookmarks and history {{{2 | 3627 " s:NetrwBookHistSave: this function saves bookmarks and history to files {{{2 |
3490 " Sister function: s:NetrwBookHistRead() | 3628 " Sister function: s:NetrwBookHistRead() |
3491 " I used to do this via viminfo but that appears to | 3629 " I used to do this via viminfo but that appears to |
3492 " be unreliable for long-term storage | 3630 " be unreliable for long-term storage |
3493 " If g:netrw_dirhistmax is <= 0, no history or bookmarks | 3631 " If g:netrw_dirhistmax is <= 0, no history or bookmarks |
3494 " will be saved. | 3632 " will be saved. |
3633 " (s:NetrwBookHistHandler(3,...) used to record history) | |
3495 fun! s:NetrwBookHistSave() | 3634 fun! s:NetrwBookHistSave() |
3496 " call Dfunc("s:NetrwBookHistSave() dirhistmax=".g:netrw_dirhistmax) | 3635 " call Dfunc("s:NetrwBookHistSave() dirhistmax=".g:netrw_dirhistmax." dirhistcnt=".g:netrw_dirhistcnt) |
3497 if !exists("g:netrw_dirhistmax") || g:netrw_dirhistmax <= 0 | 3636 if !exists("g:netrw_dirhistmax") || g:netrw_dirhistmax <= 0 |
3498 " call Dret("s:NetrwBookHistSave : dirhistmax=".g:netrw_dirhistmax) | 3637 " call Dret("s:NetrwBookHistSave : nothing saved (dirhistmax=".g:netrw_dirhistmax.")") |
3499 return | 3638 return |
3500 endif | 3639 endif |
3501 | 3640 |
3502 let savefile= s:NetrwHome()."/.netrwhist" | 3641 let savefile= s:NetrwHome()."/.netrwhist" |
3642 " call Decho("savefile<".savefile.">",'~'.expand("<slnum>")) | |
3503 1split | 3643 1split |
3504 call s:NetrwEnew() | 3644 call s:NetrwEnew() |
3645 " call Decho("case g:netrw_use_noswf=".g:netrw_use_noswf.(exists("+acd")? " +acd" : " -acd"),'~'.expand("<slnum>")) | |
3505 if g:netrw_use_noswf | 3646 if g:netrw_use_noswf |
3506 setl cino= com= cpo-=a cpo-=A fo=nroql2 tw=0 report=10000 noswf | 3647 setl cino= com= cpo-=a cpo-=A fo=nroql2 tw=0 report=10000 noswf |
3507 else | 3648 else |
3508 setl cino= com= cpo-=a cpo-=A fo=nroql2 tw=0 report=10000 | 3649 setl cino= com= cpo-=a cpo-=A fo=nroql2 tw=0 report=10000 |
3509 endif | 3650 endif |
3510 setl nocin noai noci magic nospell nohid wig= noaw | 3651 setl nocin noai noci magic nospell nohid wig= noaw |
3511 setl ma noro write | 3652 setl ma noro write |
3512 if exists("+acd") | setl noacd | endif | 3653 if exists("+acd") | setl noacd | endif |
3513 sil! NetrwKeepj keepalt %d _ | 3654 sil! NetrwKeepj keepalt %d _ |
3514 | 3655 |
3515 " save .netrwhist -- no attempt to merge | 3656 " rename enew'd file: .netrwhist -- no attempt to merge |
3657 " record dirhistmax and current dirhistcnt | |
3658 " save history | |
3659 " call Decho("saving history: dirhistmax=".g:netrw_dirhistmax." dirhistcnt=".g:netrw_dirhistcnt." lastline=".line("$"),'~'.expand("<slnum>")) | |
3516 sil! keepalt file .netrwhist | 3660 sil! keepalt file .netrwhist |
3517 call setline(1,"let g:netrw_dirhistmax =".g:netrw_dirhistmax) | 3661 call setline(1,"let g:netrw_dirhistmax =".g:netrw_dirhistmax) |
3518 call setline(2,"let g:netrw_dirhist_cnt =".g:netrw_dirhist_cnt) | 3662 call setline(2,"let g:netrw_dirhistcnt =".g:netrw_dirhistcnt) |
3519 let lastline = line("$") | 3663 if g:netrw_dirhistmax > 0 |
3520 let cnt = 1 | 3664 let lastline = line("$") |
3521 while cnt <= g:netrw_dirhist_cnt | 3665 let cnt = g:netrw_dirhistcnt |
3522 call setline((cnt+lastline),'let g:netrw_dirhist_'.cnt."='".g:netrw_dirhist_{cnt}."'") | 3666 let first = 1 |
3523 let cnt= cnt + 1 | 3667 while ( first || cnt != g:netrw_dirhistcnt ) |
3524 endwhile | 3668 let lastline= lastline + 1 |
3525 exe "sil! w! ".savefile | 3669 if exists("g:netrw_dirhist_{cnt}") |
3526 | 3670 call setline(lastline,'let g:netrw_dirhist_'.cnt."='".g:netrw_dirhist_{cnt}."'") |
3671 " call Decho("..".lastline.'let g:netrw_dirhist_'.cnt."='".g:netrw_dirhist_{cnt}."'",'~'.expand("<slnum>")) | |
3672 endif | |
3673 let first = 0 | |
3674 let cnt = ( cnt - 1 ) % g:netrw_dirhistmax | |
3675 if cnt < 0 | |
3676 let cnt= cnt + g:netrw_dirhistmax | |
3677 endif | |
3678 endwhile | |
3679 exe "sil! w! ".savefile | |
3680 " call Decho("exe sil! w! ".savefile,'~'.expand("<slnum>")) | |
3681 endif | |
3682 | |
3683 " save bookmarks | |
3527 sil NetrwKeepj %d _ | 3684 sil NetrwKeepj %d _ |
3528 if exists("g:netrw_bookmarklist") && g:netrw_bookmarklist != [] | 3685 if exists("g:netrw_bookmarklist") && g:netrw_bookmarklist != [] |
3686 " call Decho("saving bookmarks",'~'.expand("<slnum>")) | |
3529 " merge and write .netrwbook | 3687 " merge and write .netrwbook |
3530 let savefile= s:NetrwHome()."/.netrwbook" | 3688 let savefile= s:NetrwHome()."/.netrwbook" |
3531 | 3689 |
3532 if filereadable(s:NetrwFile(savefile)) | 3690 if filereadable(s:NetrwFile(savefile)) |
3533 let booklist= deepcopy(g:netrw_bookmarklist) | 3691 let booklist= deepcopy(g:netrw_bookmarklist) |
3541 endif | 3699 endif |
3542 | 3700 |
3543 " construct and save .netrwbook | 3701 " construct and save .netrwbook |
3544 call setline(1,"let g:netrw_bookmarklist= ".string(g:netrw_bookmarklist)) | 3702 call setline(1,"let g:netrw_bookmarklist= ".string(g:netrw_bookmarklist)) |
3545 exe "sil! w! ".savefile | 3703 exe "sil! w! ".savefile |
3546 endif | 3704 " call Decho("exe sil! w! ".savefile,'~'.expand("<slnum>")) |
3705 endif | |
3706 | |
3707 " cleanup -- remove buffer used to construct history | |
3547 let bgone= bufnr("%") | 3708 let bgone= bufnr("%") |
3548 q! | 3709 q! |
3549 exe "keepalt ".bgone."bwipe!" | 3710 exe "keepalt ".bgone."bwipe!" |
3550 | 3711 |
3551 " call Dret("s:NetrwBookHistSave") | 3712 " call Dret("s:NetrwBookHistSave") |
3558 " with the requested remote hostname first. | 3719 " with the requested remote hostname first. |
3559 " Often called via: Explore/e dirname/etc -> netrw#LocalBrowseCheck() -> s:NetrwBrowse() | 3720 " Often called via: Explore/e dirname/etc -> netrw#LocalBrowseCheck() -> s:NetrwBrowse() |
3560 fun! s:NetrwBrowse(islocal,dirname) | 3721 fun! s:NetrwBrowse(islocal,dirname) |
3561 if !exists("w:netrw_liststyle")|let w:netrw_liststyle= g:netrw_liststyle|endif | 3722 if !exists("w:netrw_liststyle")|let w:netrw_liststyle= g:netrw_liststyle|endif |
3562 " call Dfunc("s:NetrwBrowse(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".w:netrw_liststyle." ".g:loaded_netrw." buf#".bufnr("%")."<".bufname("%")."> win#".winnr()) | 3723 " call Dfunc("s:NetrwBrowse(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".w:netrw_liststyle." ".g:loaded_netrw." buf#".bufnr("%")."<".bufname("%")."> win#".winnr()) |
3563 " call Decho("modified=".&modified." modifiable=".&modifiable." readonly=".&readonly,'~'.expand("<slnum>")) | 3724 " call Decho("fyi: modified=".&modified." modifiable=".&modifiable." readonly=".&readonly,'~'.expand("<slnum>")) |
3564 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>")) | 3725 " call Decho("fyi: tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>")) |
3565 " call Dredir("ls!") | 3726 " call Dredir("ls!","s:NetrwBrowse") |
3566 | 3727 |
3567 " save alternate-file's filename if w:netrw_rexlocal doesn't exist | 3728 " save alternate-file's filename if w:netrw_rexlocal doesn't exist |
3568 " This is useful when one edits a local file, then :e ., then :Rex | 3729 " This is useful when one edits a local file, then :e ., then :Rex |
3569 if a:islocal && !exists("w:netrw_rexfile") && bufname("#") != "" | 3730 if a:islocal && !exists("w:netrw_rexfile") && bufname("#") != "" |
3570 let w:netrw_rexfile= bufname("#") | 3731 let w:netrw_rexfile= bufname("#") |
3577 endif | 3738 endif |
3578 | 3739 |
3579 " s:NetrwBrowse : simplify the dirname (especially for ".."s in dirnames) {{{3 | 3740 " s:NetrwBrowse : simplify the dirname (especially for ".."s in dirnames) {{{3 |
3580 if a:dirname !~ '^\a\{3,}://' | 3741 if a:dirname !~ '^\a\{3,}://' |
3581 let dirname= simplify(a:dirname) | 3742 let dirname= simplify(a:dirname) |
3743 " call Decho("simplified dirname<".dirname.">") | |
3582 else | 3744 else |
3583 let dirname= a:dirname | 3745 let dirname= a:dirname |
3584 endif | 3746 endif |
3585 | 3747 |
3748 " repoint t:netrw_lexbufnr if appropriate | |
3749 if exists("t:netrw_lexbufnr") && bufnr("%") == t:netrw_lexbufnr | |
3750 " call Decho("set repointlexbufnr to true!") | |
3751 let repointlexbufnr= 1 | |
3752 endif | |
3753 | |
3754 " s:NetrwBrowse : sanity checks: {{{3 | |
3586 if exists("s:netrw_skipbrowse") | 3755 if exists("s:netrw_skipbrowse") |
3587 unlet s:netrw_skipbrowse | 3756 unlet s:netrw_skipbrowse |
3588 " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." filename<".expand("%")."> win#".winnr()." ft<".&ft.">",'~'.expand("<slnum>")) | 3757 " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." filename<".expand("%")."> win#".winnr()." ft<".&ft.">",'~'.expand("<slnum>")) |
3589 " call Dret("s:NetrwBrowse : s:netrw_skipbrowse existed") | 3758 " call Dret("s:NetrwBrowse : s:netrw_skipbrowse existed") |
3590 return | 3759 return |
3591 endif | 3760 endif |
3592 | |
3593 " s:NetrwBrowse : sanity checks: {{{3 | |
3594 if !exists("*shellescape") | 3761 if !exists("*shellescape") |
3595 NetrwKeepj call netrw#ErrorMsg(s:ERROR,"netrw can't run -- your vim is missing shellescape()",69) | 3762 NetrwKeepj call netrw#ErrorMsg(s:ERROR,"netrw can't run -- your vim is missing shellescape()",69) |
3596 " call Dret("s:NetrwBrowse : missing shellescape()") | 3763 " call Dret("s:NetrwBrowse : missing shellescape()") |
3597 return | 3764 return |
3598 endif | 3765 endif |
3601 " call Dret("s:NetrwBrowse : missing fnameescape()") | 3768 " call Dret("s:NetrwBrowse : missing fnameescape()") |
3602 return | 3769 return |
3603 endif | 3770 endif |
3604 | 3771 |
3605 " s:NetrwBrowse : save options: {{{3 | 3772 " s:NetrwBrowse : save options: {{{3 |
3606 call s:NetrwOptionSave("w:") | 3773 call s:NetrwOptionsSave("w:") |
3607 | 3774 |
3608 " s:NetrwBrowse : re-instate any marked files {{{3 | 3775 " s:NetrwBrowse : re-instate any marked files {{{3 |
3609 if exists("s:netrwmarkfilelist_{bufnr('%')}") | 3776 if has("syntax") && exists("g:syntax_on") && g:syntax_on |
3610 " call Decho("clearing marked files",'~'.expand("<slnum>")) | 3777 if exists("s:netrwmarkfilelist_{bufnr('%')}") |
3611 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/" | 3778 " call Decho("clearing marked files",'~'.expand("<slnum>")) |
3779 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/" | |
3780 endif | |
3612 endif | 3781 endif |
3613 | 3782 |
3614 if a:islocal && exists("w:netrw_acdkeep") && w:netrw_acdkeep | 3783 if a:islocal && exists("w:netrw_acdkeep") && w:netrw_acdkeep |
3615 " s:NetrwBrowse : set up "safe" options for local directory/file {{{3 | 3784 " s:NetrwBrowse : set up "safe" options for local directory/file {{{3 |
3616 " call Decho("handle w:netrw_acdkeep:",'~'.expand("<slnum>")) | 3785 " call Decho("handle w:netrw_acdkeep:",'~'.expand("<slnum>")) |
3617 " call Decho("NetrwKeepj lcd ".fnameescape(dirname)." (due to w:netrw_acdkeep=".w:netrw_acdkeep." - acd=".&acd.")",'~'.expand("<slnum>")) | 3786 " call Decho("NetrwKeepj lcd ".fnameescape(dirname)." (due to w:netrw_acdkeep=".w:netrw_acdkeep." - acd=".&acd.")",'~'.expand("<slnum>")) |
3618 call s:NetrwLcd(dirname) | 3787 if s:NetrwLcd(dirname) |
3619 call s:NetrwSafeOptions() | 3788 " call Dret("s:NetrwBrowse : lcd failure") |
3789 return | |
3790 endif | |
3791 " call s:NetrwOptionsSafe() " tst952 failed with this enabled. | |
3620 " call Decho("getcwd<".getcwd().">",'~'.expand("<slnum>")) | 3792 " call Decho("getcwd<".getcwd().">",'~'.expand("<slnum>")) |
3621 | 3793 |
3622 elseif !a:islocal && dirname !~ '[\/]$' && dirname !~ '^"' | 3794 elseif !a:islocal && dirname !~ '[\/]$' && dirname !~ '^"' |
3623 " s:NetrwBrowse : remote regular file handler {{{3 | 3795 " s:NetrwBrowse : remote regular file handler {{{3 |
3624 " call Decho("handle remote regular file: dirname<".dirname.">",'~'.expand("<slnum>")) | 3796 " call Decho("handle remote regular file: dirname<".dirname.">",'~'.expand("<slnum>")) |
3636 " call Decho("new path<".path.">",'~'.expand("<slnum>")) | 3808 " call Decho("new path<".path.">",'~'.expand("<slnum>")) |
3637 call s:RemotePathAnalysis(dirname) | 3809 call s:RemotePathAnalysis(dirname) |
3638 | 3810 |
3639 " s:NetrwBrowse : remote-read the requested file into current buffer {{{3 | 3811 " s:NetrwBrowse : remote-read the requested file into current buffer {{{3 |
3640 call s:NetrwEnew(dirname) | 3812 call s:NetrwEnew(dirname) |
3641 call s:NetrwSafeOptions() | 3813 call s:NetrwOptionsSafe(a:islocal) |
3642 setl ma noro | 3814 setl ma noro |
3643 " call Decho("setl ma noro",'~'.expand("<slnum>")) | 3815 " call Decho("setl ma noro",'~'.expand("<slnum>")) |
3644 let b:netrw_curdir = dirname | 3816 let b:netrw_curdir = dirname |
3645 let url = s:method."://".((s:user == "")? "" : s:user."@").s:machine.(s:port ? ":".s:port : "")."/".s:path | 3817 let url = s:method."://".((s:user == "")? "" : s:user."@").s:machine.(s:port ? ":".s:port : "")."/".s:path |
3646 " call Decho("exe sil! keepalt file ".fnameescape(url)." (bt=".&bt.")",'~'.expand("<slnum>")) | 3818 call s:NetrwBufRename(url) |
3647 exe "sil! NetrwKeepj keepalt file ".fnameescape(url) | |
3648 exe "sil! NetrwKeepj keepalt doau BufReadPre ".fnameescape(s:fname) | 3819 exe "sil! NetrwKeepj keepalt doau BufReadPre ".fnameescape(s:fname) |
3649 sil call netrw#NetRead(2,url) | 3820 sil call netrw#NetRead(2,url) |
3650 " netrw.vim and tar.vim have already handled decompression of the tarball; avoiding gzip.vim error | 3821 " netrw.vim and tar.vim have already handled decompression of the tarball; avoiding gzip.vim error |
3651 " call Decho("url<".url.">",'~'.expand("<slnum>")) | 3822 " call Decho("url<".url.">",'~'.expand("<slnum>")) |
3652 " call Decho("s:path<".s:path.">",'~'.expand("<slnum>")) | 3823 " call Decho("s:path<".s:path.">",'~'.expand("<slnum>")) |
3662 endif | 3833 endif |
3663 endif | 3834 endif |
3664 | 3835 |
3665 " s:NetrwBrowse : save certain window-oriented variables into buffer-oriented variables {{{3 | 3836 " s:NetrwBrowse : save certain window-oriented variables into buffer-oriented variables {{{3 |
3666 call s:SetBufWinVars() | 3837 call s:SetBufWinVars() |
3667 call s:NetrwOptionRestore("w:") | 3838 call s:NetrwOptionsRestore("w:") |
3668 " call Decho("setl ma nomod",'~'.expand("<slnum>")) | 3839 " call Decho("setl ma nomod",'~'.expand("<slnum>")) |
3669 setl ma nomod noro | 3840 setl ma nomod noro |
3670 " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) | 3841 " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) |
3671 | 3842 |
3672 " call Dret("s:NetrwBrowse : file<".s:fname.">") | 3843 " call Dret("s:NetrwBrowse : file<".s:fname.">") |
3689 let svpos = winsaveview() | 3860 let svpos = winsaveview() |
3690 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) | 3861 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) |
3691 let reusing= s:NetrwGetBuffer(a:islocal,dirname) | 3862 let reusing= s:NetrwGetBuffer(a:islocal,dirname) |
3692 | 3863 |
3693 " maintain markfile highlighting | 3864 " maintain markfile highlighting |
3694 if exists("s:netrwmarkfilemtch_{bufnr('%')}") && s:netrwmarkfilemtch_{bufnr("%")} != "" | 3865 if has("syntax") && exists("g:syntax_on") && g:syntax_on |
3695 " call Decho("bufnr(%)=".bufnr('%'),'~'.expand("<slnum>")) | 3866 if exists("s:netrwmarkfilemtch_{bufnr('%')}") && s:netrwmarkfilemtch_{bufnr("%")} != "" |
3696 " call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/",'~'.expand("<slnum>")) | 3867 " " call Decho("bufnr(%)=".bufnr('%'),'~'.expand("<slnum>")) |
3697 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/" | 3868 " " call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/",'~'.expand("<slnum>")) |
3698 else | 3869 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/" |
3699 " call Decho("2match none",'~'.expand("<slnum>")) | 3870 else |
3700 2match none | 3871 " " call Decho("2match none",'~'.expand("<slnum>")) |
3872 2match none | |
3873 endif | |
3701 endif | 3874 endif |
3702 if reusing && line("$") > 1 | 3875 if reusing && line("$") > 1 |
3703 call s:NetrwOptionRestore("w:") | 3876 call s:NetrwOptionsRestore("w:") |
3704 " call Decho("setl noma nomod nowrap",'~'.expand("<slnum>")) | 3877 " call Decho("setl noma nomod nowrap",'~'.expand("<slnum>")) |
3705 setl noma nomod nowrap | 3878 setl noma nomod nowrap |
3706 " call Decho("(set noma nomod nowrap) ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) | 3879 " call Decho("(set noma nomod nowrap) ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) |
3707 " call Dret("s:NetrwBrowse : re-using not-cleared buffer") | 3880 " call Dret("s:NetrwBrowse : re-using not-cleared buffer") |
3708 return | 3881 return |
3744 " handle g:netrw_keepdir: set vim's current directory to netrw's notion of the current directory {{{3 | 3917 " handle g:netrw_keepdir: set vim's current directory to netrw's notion of the current directory {{{3 |
3745 if !g:netrw_keepdir | 3918 if !g:netrw_keepdir |
3746 " call Decho("handle g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd,'~'.expand("<slnum>")) | 3919 " call Decho("handle g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd,'~'.expand("<slnum>")) |
3747 " call Decho("l:acd".(exists("&l:acd")? "=".&l:acd : " doesn't exist"),'~'.expand("<slnum>")) | 3920 " call Decho("l:acd".(exists("&l:acd")? "=".&l:acd : " doesn't exist"),'~'.expand("<slnum>")) |
3748 if !exists("&l:acd") || !&l:acd | 3921 if !exists("&l:acd") || !&l:acd |
3749 call s:NetrwLcd(b:netrw_curdir) | 3922 if s:NetrwLcd(b:netrw_curdir) |
3923 " call Dret("s:NetrwBrowse : lcd failure") | |
3924 return | |
3925 endif | |
3750 endif | 3926 endif |
3751 endif | 3927 endif |
3752 | 3928 |
3753 " -------------------------------- | 3929 " -------------------------------- |
3754 " remote handling: {{{3 | 3930 " remote handling: {{{3 |
3776 let dirpat = '^\(\w\{-}\)://\(\w\+@\)\=\([^/]\+\)/\(.*\)$' | 3952 let dirpat = '^\(\w\{-}\)://\(\w\+@\)\=\([^/]\+\)/\(.*\)$' |
3777 if dirname !~ dirpat | 3953 if dirname !~ dirpat |
3778 if !exists("g:netrw_quiet") | 3954 if !exists("g:netrw_quiet") |
3779 NetrwKeepj call netrw#ErrorMsg(s:ERROR,"netrw doesn't understand your dirname<".dirname.">",20) | 3955 NetrwKeepj call netrw#ErrorMsg(s:ERROR,"netrw doesn't understand your dirname<".dirname.">",20) |
3780 endif | 3956 endif |
3781 NetrwKeepj call s:NetrwOptionRestore("w:") | 3957 NetrwKeepj call s:NetrwOptionsRestore("w:") |
3782 " call Decho("setl noma nomod nowrap",'~'.expand("<slnum>")) | 3958 " call Decho("setl noma nomod nowrap",'~'.expand("<slnum>")) |
3783 setl noma nomod nowrap | 3959 setl noma nomod nowrap |
3784 " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) | 3960 " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) |
3785 " call Dret("s:NetrwBrowse : badly formatted dirname<".dirname.">") | 3961 " call Dret("s:NetrwBrowse : badly formatted dirname<".dirname.">") |
3786 return | 3962 return |
3787 endif | 3963 endif |
3788 let b:netrw_curdir= dirname | 3964 let b:netrw_curdir= dirname |
3789 " call Decho("b:netrw_curdir<".b:netrw_curdir."> (remote)",'~'.expand("<slnum>")) | 3965 " call Decho("b:netrw_curdir<".b:netrw_curdir."> (remote)",'~'.expand("<slnum>")) |
3790 endif " (additional remote handling) | 3966 endif " (additional remote handling) |
3791 | 3967 |
3792 " ----------------------- | 3968 " ------------------------------- |
3793 " Directory Listing: {{{3 | 3969 " Perform Directory Listing: {{{3 |
3794 " ----------------------- | 3970 " ------------------------------- |
3795 NetrwKeepj call s:NetrwMaps(a:islocal) | 3971 NetrwKeepj call s:NetrwMaps(a:islocal) |
3796 NetrwKeepj call s:NetrwCommands(a:islocal) | 3972 NetrwKeepj call s:NetrwCommands(a:islocal) |
3797 NetrwKeepj call s:PerformListing(a:islocal) | 3973 NetrwKeepj call s:PerformListing(a:islocal) |
3798 | 3974 |
3799 " restore option(s) | 3975 " restore option(s) |
3800 call s:NetrwOptionRestore("w:") | 3976 call s:NetrwOptionsRestore("w:") |
3801 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>")) | 3977 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>")) |
3802 | 3978 |
3803 " If there is a rexposn: restore position with rexposn | 3979 " If there is a rexposn: restore position with rexposn |
3804 " Otherwise : set rexposn | 3980 " Otherwise : set rexposn |
3805 if exists("s:rexposn_".bufnr("%")) | 3981 if exists("s:rexposn_".bufnr("%")) |
3815 let &l:bexpr= "netrw#BalloonHelp()" | 3991 let &l:bexpr= "netrw#BalloonHelp()" |
3816 " call Decho("set up balloon help: l:bexpr=".&l:bexpr,'~'.expand("<slnum>")) | 3992 " call Decho("set up balloon help: l:bexpr=".&l:bexpr,'~'.expand("<slnum>")) |
3817 setl beval | 3993 setl beval |
3818 endif | 3994 endif |
3819 | 3995 |
3996 " repoint t:netrw_lexbufnr if appropriate | |
3997 if exists("repointlexbufnr") | |
3998 let t:netrw_lexbufnr= bufnr("%") | |
3999 " call Decho("repoint t:netrw_lexbufnr to #".t:netrw_lexbufnr) | |
4000 endif | |
4001 | |
3820 " restore position | 4002 " restore position |
3821 if reusing | 4003 if reusing |
3822 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) | 4004 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) |
3823 call winrestview(svpos) | 4005 call winrestview(svpos) |
3824 endif | 4006 endif |
3825 | 4007 |
3826 " The s:LocalBrowseRefresh() function is called by an autocmd | 4008 " The s:LocalBrowseRefresh() function is called by an autocmd |
3827 " installed by s:LocalFastBrowser() when g:netrw_fastbrowse <= 1 (ie. slow, medium speed). | 4009 " installed by s:LocalFastBrowser() when g:netrw_fastbrowse <= 1 (ie. slow or medium speed). |
3828 " However, s:NetrwBrowse() causes the FocusGained event to fire the firstt time. | 4010 " However, s:NetrwBrowse() causes the FocusGained event to fire the first time. |
3829 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>")) | 4011 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>")) |
3830 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) | 4012 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) |
3831 " call Dret("s:NetrwBrowse : did PerformListing ft<".&ft.">") | 4013 " call Dret("s:NetrwBrowse : did PerformListing ft<".&ft.">") |
3832 return | 4014 return |
3833 endfun | 4015 endfun |
3835 " --------------------------------------------------------------------- | 4017 " --------------------------------------------------------------------- |
3836 " s:NetrwFile: because of g:netrw_keepdir, isdirectory(), type(), etc may or {{{2 | 4018 " s:NetrwFile: because of g:netrw_keepdir, isdirectory(), type(), etc may or {{{2 |
3837 " may not apply correctly; ie. netrw's idea of the current directory may | 4019 " may not apply correctly; ie. netrw's idea of the current directory may |
3838 " differ from vim's. This function insures that netrw's idea of the current | 4020 " differ from vim's. This function insures that netrw's idea of the current |
3839 " directory is used. | 4021 " directory is used. |
4022 " Returns a path to the file specified by a:fname | |
3840 fun! s:NetrwFile(fname) | 4023 fun! s:NetrwFile(fname) |
3841 " call Dfunc("s:NetrwFile(fname<".a:fname.">) win#".winnr()) | 4024 " "" call Dfunc("s:NetrwFile(fname<".a:fname.">) win#".winnr()) |
3842 " call Decho("g:netrw_keepdir =".(exists("g:netrw_keepdir")? g:netrw_keepdir : 'n/a'),'~'.expand("<slnum>")) | 4025 " "" call Decho("g:netrw_keepdir =".(exists("g:netrw_keepdir")? g:netrw_keepdir : 'n/a'),'~'.expand("<slnum>")) |
3843 " call Decho("g:netrw_cygwin =".(exists("g:netrw_cygwin")? g:netrw_cygwin : 'n/a'),'~'.expand("<slnum>")) | 4026 " "" call Decho("g:netrw_cygwin =".(exists("g:netrw_cygwin")? g:netrw_cygwin : 'n/a'),'~'.expand("<slnum>")) |
3844 " call Decho("g:netrw_liststyle=".(exists("g:netrw_liststyle")? g:netrw_liststyle : 'n/a'),'~'.expand("<slnum>")) | 4027 " "" call Decho("g:netrw_liststyle=".(exists("g:netrw_liststyle")? g:netrw_liststyle : 'n/a'),'~'.expand("<slnum>")) |
3845 " call Decho("w:netrw_liststyle=".(exists("w:netrw_liststyle")? w:netrw_liststyle : 'n/a'),'~'.expand("<slnum>")) | 4028 " "" call Decho("w:netrw_liststyle=".(exists("w:netrw_liststyle")? w:netrw_liststyle : 'n/a'),'~'.expand("<slnum>")) |
3846 | 4029 |
3847 " clean up any leading treedepthstring | 4030 " clean up any leading treedepthstring |
3848 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST | 4031 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST |
3849 let fname= substitute(a:fname,'^'.s:treedepthstring.'\+','','') | 4032 let fname= substitute(a:fname,'^'.s:treedepthstring.'\+','','') |
3850 " call Decho("clean up any leading treedepthstring: fname<".fname.">",'~'.expand("<slnum>")) | 4033 " "" call Decho("clean up any leading treedepthstring: fname<".fname.">",'~'.expand("<slnum>")) |
3851 else | 4034 else |
3852 let fname= a:fname | 4035 let fname= a:fname |
3853 endif | 4036 endif |
3854 | 4037 |
3855 if g:netrw_keepdir | 4038 if g:netrw_keepdir |
3860 | 4043 |
3861 if !exists("g:netrw_cygwin") && (has("win32") || has("win95") || has("win64") || has("win16")) | 4044 if !exists("g:netrw_cygwin") && (has("win32") || has("win95") || has("win64") || has("win16")) |
3862 if fname =~ '^\' || fname =~ '^\a:\' | 4045 if fname =~ '^\' || fname =~ '^\a:\' |
3863 " windows, but full path given | 4046 " windows, but full path given |
3864 let ret= fname | 4047 let ret= fname |
3865 " call Decho("windows+full path: isdirectory(".fname.")",'~'.expand("<slnum>")) | 4048 " "" call Decho("windows+full path: isdirectory(".fname.")",'~'.expand("<slnum>")) |
3866 else | 4049 else |
3867 " windows, relative path given | 4050 " windows, relative path given |
3868 let ret= s:ComposePath(b:netrw_curdir,fname) | 4051 let ret= s:ComposePath(b:netrw_curdir,fname) |
3869 " call Decho("windows+rltv path: isdirectory(".fname.")",'~'.expand("<slnum>")) | 4052 " "" call Decho("windows+rltv path: isdirectory(".fname.")",'~'.expand("<slnum>")) |
3870 endif | 4053 endif |
3871 | 4054 |
3872 elseif fname =~ '^/' | 4055 elseif fname =~ '^/' |
3873 " not windows, full path given | 4056 " not windows, full path given |
3874 let ret= fname | 4057 let ret= fname |
3875 " call Decho("unix+full path: isdirectory(".fname.")",'~'.expand("<slnum>")) | 4058 " "" call Decho("unix+full path: isdirectory(".fname.")",'~'.expand("<slnum>")) |
3876 else | 4059 else |
3877 " not windows, relative path given | 4060 " not windows, relative path given |
3878 let ret= s:ComposePath(b:netrw_curdir,fname) | 4061 let ret= s:ComposePath(b:netrw_curdir,fname) |
3879 " call Decho("unix+rltv path: isdirectory(".fname.")",'~'.expand("<slnum>")) | 4062 " "" call Decho("unix+rltv path: isdirectory(".fname.")",'~'.expand("<slnum>")) |
3880 endif | 4063 endif |
3881 else | 4064 else |
3882 " vim and netrw agree on the current directory | 4065 " vim and netrw agree on the current directory |
3883 let ret= fname | 4066 let ret= fname |
3884 " call Decho("vim and netrw agree on current directory (g:netrw_keepdir=".g:netrw_keepdir.")",'~'.expand("<slnum>")) | 4067 " "" call Decho("vim and netrw agree on current directory (g:netrw_keepdir=".g:netrw_keepdir.")",'~'.expand("<slnum>")) |
3885 " call Decho("vim directory: ".getcwd(),'~'.expand("<slnum>")) | 4068 " "" call Decho("vim directory: ".getcwd(),'~'.expand("<slnum>")) |
3886 " call Decho("netrw directory: ".(exists("b:netrw_curdir")? b:netrw_curdir : 'n/a'),'~'.expand("<slnum>")) | 4069 " "" call Decho("netrw directory: ".(exists("b:netrw_curdir")? b:netrw_curdir : 'n/a'),'~'.expand("<slnum>")) |
3887 endif | 4070 endif |
3888 | 4071 |
3889 " call Dret("s:NetrwFile ".ret) | 4072 " "" call Dret("s:NetrwFile ".ret) |
3890 return ret | 4073 return ret |
3891 endfun | 4074 endfun |
3892 | 4075 |
3893 " --------------------------------------------------------------------- | 4076 " --------------------------------------------------------------------- |
3894 " s:NetrwFileInfo: supports qf (query for file information) {{{2 | 4077 " s:NetrwFileInfo: supports qf (query for file information) {{{2 |
3958 " " call Dret("s:NetrwFullPath <".filename.">") | 4141 " " call Dret("s:NetrwFullPath <".filename.">") |
3959 return filename | 4142 return filename |
3960 endfun | 4143 endfun |
3961 | 4144 |
3962 " --------------------------------------------------------------------- | 4145 " --------------------------------------------------------------------- |
3963 " s:NetrwGetBuffer: {{{2 | 4146 " s:NetrwGetBuffer: [get a new|find an old netrw] buffer for a netrw listing {{{2 |
3964 " returns 0=cleared buffer | 4147 " returns 0=cleared buffer |
3965 " 1=re-used buffer (buffer not cleared) | 4148 " 1=re-used buffer (buffer not cleared) |
3966 fun! s:NetrwGetBuffer(islocal,dirname) | 4149 fun! s:NetrwGetBuffer(islocal,dirname) |
3967 " call Dfunc("s:NetrwGetBuffer(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".g:netrw_liststyle) | 4150 " call Dfunc("s:NetrwGetBuffer(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".g:netrw_liststyle) |
3968 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>")) | 4151 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>")) |
3969 " call Decho("netrwbuf dictionary=".string(s:netrwbuf),'~'.expand("<slnum>")) | 4152 " call Decho("netrwbuf dictionary=".(exists("s:netrwbuf")? string(s:netrwbuf) : 'n/a'),'~'.expand("<slnum>")) |
4153 " call Dredir("ls!","s:NetrwGetBuffer") | |
3970 let dirname= a:dirname | 4154 let dirname= a:dirname |
3971 | 4155 |
3972 " re-use buffer if possible {{{3 | 4156 " re-use buffer if possible {{{3 |
3973 " call Decho("--re-use a buffer if possible--",'~'.expand("<slnum>")) | 4157 " call Decho("--re-use a buffer if possible--",'~'.expand("<slnum>")) |
3974 if !exists("s:netrwbuf") | 4158 if !exists("s:netrwbuf") |
4159 " call Decho(" s:netrwbuf initialized to {}",'~'.expand("<slnum>")) | |
3975 let s:netrwbuf= {} | 4160 let s:netrwbuf= {} |
3976 endif | 4161 endif |
3977 if has_key(s:netrwbuf,s:NetrwFullPath(dirname)) | 4162 " call Decho(" s:netrwbuf =".string(s:netrwbuf),'~'.expand("<slnum>")) |
4163 " call Decho(" w:netrw_liststyle =".(exists("w:netrw_liststyle")? w:netrw_liststyle : "n/a"),'~'.expand("<slnum>")) | |
4164 | |
4165 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST | |
4166 let bufnum = -1 | |
4167 | |
4168 if !empty(s:netrwbuf) && has_key(s:netrwbuf,s:NetrwFullPath(dirname)) | |
4169 if has_key(s:netrwbuf,"NetrwTreeListing") | |
4170 let bufnum= s:netrwbuf["NetrwTreeListing"] | |
4171 else | |
4172 let bufnum= s:netrwbuf[s:NetrwFullPath(dirname)] | |
4173 endif | |
4174 " call Decho(" NetrwTreeListing: bufnum#".bufnum,'~'.expand("<slnum>")) | |
4175 if !bufexists(bufnum) | |
4176 call remove(s:netrwbuf,"NetrwTreeListing"]) | |
4177 let bufnum= -1 | |
4178 endif | |
4179 elseif bufnr("NetrwTreeListing") != -1 | |
4180 let bufnum= bufnr("NetrwTreeListing") | |
4181 " call Decho(" NetrwTreeListing".": bufnum#".bufnum,'~'.expand("<slnum>")) | |
4182 else | |
4183 " call Decho(" did not find a NetrwTreeListing buffer",'~'.expand("<slnum>")) | |
4184 let bufnum= -1 | |
4185 endif | |
4186 | |
4187 elseif has_key(s:netrwbuf,s:NetrwFullPath(dirname)) | |
3978 let bufnum= s:netrwbuf[s:NetrwFullPath(dirname)] | 4188 let bufnum= s:netrwbuf[s:NetrwFullPath(dirname)] |
3979 " call Decho("lookup netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."]=".bufnum) | 4189 " call Decho(" lookup netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."]=".bufnum,'~'.expand("<slnum>")) |
3980 if !bufexists(bufnum) | 4190 if !bufexists(bufnum) |
3981 call remove(s:netrwbuf,s:NetrwFullPath(dirname)) | 4191 call remove(s:netrwbuf,s:NetrwFullPath(dirname)) |
3982 let bufnum= -1 | 4192 let bufnum= -1 |
3983 endif | 4193 endif |
3984 else | 4194 |
3985 " call Decho("lookup netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."] not a key") | 4195 else |
4196 " call Decho(" lookup netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."] not a key",'~'.expand("<slnum>")) | |
3986 let bufnum= -1 | 4197 let bufnum= -1 |
4198 endif | |
4199 " call Decho(" bufnum#".bufnum,'~'.expand("<slnum>")) | |
4200 | |
4201 " highjack the current buffer if | |
4202 " it has the desired name | |
4203 " it is empty | |
4204 " call Decho("deciding if I can highjack the current buffer#".bufnr("%"),'~'.expand("<slnum>")) | |
4205 " call Decho("..dirname<".dirname.">",'~'.expand("<slnum>")) | |
4206 " call Decho("..bufname<".bufname("%").">",'~'.expand("<slnum>")) | |
4207 " call Decho("..getline($)<".getline("$").">",'~'.expand("<slnum>")) | |
4208 if dirname == bufname("%") && line("$") == 1 && getline("%") == "" | |
4209 " call Dret("s:NetrwGetBuffer 0<cleared buffer> : highjacking buffer#".bufnr("%")) | |
4210 return 0 | |
3987 endif | 4211 endif |
3988 | 4212 |
3989 " get enew buffer and name it -or- re-use buffer {{{3 | 4213 " get enew buffer and name it -or- re-use buffer {{{3 |
3990 if bufnum < 0 " get enew buffer and name it | 4214 if bufnum < 0 " get enew buffer and name it |
3991 " call Decho("--get enew buffer and name it (bufnum#".bufnum."<0 OR bufexists(".bufnum.")=".bufexists(bufnum)."==0)",'~'.expand("<slnum>")) | 4215 " call Decho("--get enew buffer and name it (bufnum#".bufnum."<0 OR bufexists(".bufnum.")=".bufexists(bufnum)."==0)",'~'.expand("<slnum>")) |
3993 " call Decho(" got enew buffer#".bufnr("%")." (altbuf<".expand("#").">)",'~'.expand("<slnum>")) | 4217 " call Decho(" got enew buffer#".bufnr("%")." (altbuf<".expand("#").">)",'~'.expand("<slnum>")) |
3994 " name the buffer | 4218 " name the buffer |
3995 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST | 4219 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST |
3996 " Got enew buffer; transform into a NetrwTreeListing | 4220 " Got enew buffer; transform into a NetrwTreeListing |
3997 " call Decho("--transform enew buffer#".bufnr("%")." into a NetrwTreeListing --",'~'.expand("<slnum>")) | 4221 " call Decho("--transform enew buffer#".bufnr("%")." into a NetrwTreeListing --",'~'.expand("<slnum>")) |
3998 if !exists("s:netrw_treelistnum") | 4222 let w:netrw_treebufnr = bufnr("%") |
3999 let s:netrw_treelistnum= 1 | 4223 call s:NetrwBufRename("NetrwTreeListing") |
4000 else | |
4001 let s:netrw_treelistnum= s:netrw_treelistnum + 1 | |
4002 endif | |
4003 let w:netrw_treebufnr= bufnr("%") | |
4004 " call Decho(" exe sil! keepalt file NetrwTreeListing ".fnameescape(s:netrw_treelistnum),'~'.expand("<slnum>")) | |
4005 exe 'sil! keepalt file NetrwTreeListing\ '.fnameescape(s:netrw_treelistnum) | |
4006 if g:netrw_use_noswf | 4224 if g:netrw_use_noswf |
4007 setl nobl bt=nofile noswf | 4225 setl nobl bt=nofile noswf |
4008 else | 4226 else |
4009 setl nobl bt=nofile | 4227 setl nobl bt=nofile |
4010 endif | 4228 endif |
4011 nnoremap <silent> <buffer> [[ :sil call <SID>TreeListMove('[[')<cr> | 4229 nnoremap <silent> <buffer> [[ :sil call <SID>TreeListMove('[[')<cr> |
4012 nnoremap <silent> <buffer> ]] :sil call <SID>TreeListMove(']]')<cr> | 4230 nnoremap <silent> <buffer> ]] :sil call <SID>TreeListMove(']]')<cr> |
4013 nnoremap <silent> <buffer> [] :sil call <SID>TreeListMove('[]')<cr> | 4231 nnoremap <silent> <buffer> [] :sil call <SID>TreeListMove('[]')<cr> |
4014 nnoremap <silent> <buffer> ][ :sil call <SID>TreeListMove('][')<cr> | 4232 nnoremap <silent> <buffer> ][ :sil call <SID>TreeListMove('][')<cr> |
4015 " call Decho(" tree listing#".s:netrw_treelistnum." bufnr=".w:netrw_treebufnr,'~'.expand("<slnum>")) | 4233 " call Decho(" tree listing bufnr=".w:netrw_treebufnr,'~'.expand("<slnum>")) |
4016 else | 4234 else |
4017 " let v:errmsg = "" " Decho | 4235 call s:NetrwBufRename(dirname) |
4018 let escdirname = fnameescape(dirname) | |
4019 " call Decho(" errmsg<".v:errmsg."> bufnr(escdirname<".escdirname.">)=".bufnr(escdirname)." bufname()<".bufname(bufnr(escdirname)).">",'~'.expand("<slnum>")) | |
4020 " call Decho(' exe sil! keepalt file '.escdirname,'~'.expand("<slnum>")) | |
4021 " let v:errmsg= "" " Decho | |
4022 exe 'sil! keepj keepalt file '.escdirname | |
4023 " call Decho(" errmsg<".v:errmsg."> bufnr(".escdirname.")=".bufnr(escdirname)."<".bufname(bufnr(escdirname)).">",'~'.expand("<slnum>")) | |
4024 " enter the new buffer into the s:netrwbuf dictionary | 4236 " enter the new buffer into the s:netrwbuf dictionary |
4025 let s:netrwbuf[s:NetrwFullPath(dirname)]= bufnr("%") | 4237 let s:netrwbuf[s:NetrwFullPath(dirname)]= bufnr("%") |
4026 " call Decho("update netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."]=".bufnr("%"),'~'.expand("<slnum>")) | 4238 " call Decho("update netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."]=".bufnr("%"),'~'.expand("<slnum>")) |
4027 " call Decho("netrwbuf dictionary=".string(s:netrwbuf),'~'.expand("<slnum>")) | 4239 " call Decho("netrwbuf dictionary=".string(s:netrwbuf),'~'.expand("<slnum>")) |
4028 endif | 4240 endif |
4039 " call Decho(" getline(2)<".getline(2).'> does not match "Netrw Directory Listing" : using b '.bufnum,'~'.expand("<slnum>")) | 4251 " call Decho(" getline(2)<".getline(2).'> does not match "Netrw Directory Listing" : using b '.bufnum,'~'.expand("<slnum>")) |
4040 exe "sil! NetrwKeepj noswapfile keepalt b ".bufnum | 4252 exe "sil! NetrwKeepj noswapfile keepalt b ".bufnum |
4041 endif | 4253 endif |
4042 " call Decho(" line($)=".line("$"),'~'.expand("<slnum>")) | 4254 " call Decho(" line($)=".line("$"),'~'.expand("<slnum>")) |
4043 if bufname("%") == '.' | 4255 if bufname("%") == '.' |
4044 " call Decho("exe sil! keepalt file ".fnameescape(getcwd()),'~'.expand("<slnum>")) | 4256 call s:NetrwBufRename(getcwd()) |
4045 exe "sil! NetrwKeepj keepalt file ".fnameescape(getcwd()) | |
4046 endif | 4257 endif |
4047 let &ei= eikeep | 4258 let &ei= eikeep |
4048 | 4259 |
4049 if line("$") <= 1 && getline(1) == "" | 4260 if line("$") <= 1 && getline(1) == "" |
4050 " empty buffer | 4261 " empty buffer |
4064 return 0 | 4275 return 0 |
4065 | 4276 |
4066 elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST | 4277 elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST |
4067 " call Decho("--re-use tree listing--",'~'.expand("<slnum>")) | 4278 " call Decho("--re-use tree listing--",'~'.expand("<slnum>")) |
4068 " call Decho(" clear buffer<".expand("%")."> with :%d",'~'.expand("<slnum>")) | 4279 " call Decho(" clear buffer<".expand("%")."> with :%d",'~'.expand("<slnum>")) |
4280 setl ma | |
4069 sil NetrwKeepj %d _ | 4281 sil NetrwKeepj %d _ |
4070 NetrwKeepj call s:NetrwListSettings(a:islocal) | 4282 NetrwKeepj call s:NetrwListSettings(a:islocal) |
4071 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>")) | 4283 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>")) |
4072 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>")) | 4284 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>")) |
4073 " call Dret("s:NetrwGetBuffer 0<cleared buffer> : re-using buffer#".bufnr("%").", but treelist mode always needs a refresh") | 4285 " call Dret("s:NetrwGetBuffer 0<cleared buffer> : re-using buffer#".bufnr("%").", but treelist mode always needs a refresh") |
4087 " med 1 D H | 4299 " med 1 D H |
4088 " fast 2 H H | 4300 " fast 2 H H |
4089 " call Decho("--do netrw settings: make this buffer#".bufnr("%")." not-a-file, modifiable, not line-numbered, etc--",'~'.expand("<slnum>")) | 4301 " call Decho("--do netrw settings: make this buffer#".bufnr("%")." not-a-file, modifiable, not line-numbered, etc--",'~'.expand("<slnum>")) |
4090 let fname= expand("%") | 4302 let fname= expand("%") |
4091 NetrwKeepj call s:NetrwListSettings(a:islocal) | 4303 NetrwKeepj call s:NetrwListSettings(a:islocal) |
4092 " call Decho("exe sil! keepalt file ".fnameescape(fname),'~'.expand("<slnum>")) | 4304 call s:NetrwBufRename(fname) |
4093 exe "sil! NetrwKeepj keepalt file ".fnameescape(fname) | |
4094 | 4305 |
4095 " delete all lines from buffer {{{3 | 4306 " delete all lines from buffer {{{3 |
4096 " call Decho("--delete all lines from buffer--",'~'.expand("<slnum>")) | 4307 " call Decho("--delete all lines from buffer--",'~'.expand("<slnum>")) |
4097 " call Decho(" clear buffer<".expand("%")."> with :%d",'~'.expand("<slnum>")) | 4308 " call Decho(" clear buffer<".expand("%")."> with :%d",'~'.expand("<slnum>")) |
4098 sil! keepalt NetrwKeepj %d _ | 4309 sil! keepalt NetrwKeepj %d _ |
4146 NetrwKeepj norm! 0 | 4357 NetrwKeepj norm! 0 |
4147 let dirname= "./" | 4358 let dirname= "./" |
4148 let curline= getline('.') | 4359 let curline= getline('.') |
4149 | 4360 |
4150 if curline =~# '"\s*Sorted by\s' | 4361 if curline =~# '"\s*Sorted by\s' |
4151 NetrwKeepj norm s | 4362 NetrwKeepj norm! s |
4152 let s:netrw_skipbrowse= 1 | 4363 let s:netrw_skipbrowse= 1 |
4153 echo 'Pressing "s" also works' | 4364 echo 'Pressing "s" also works' |
4154 | 4365 |
4155 elseif curline =~# '"\s*Sort sequence:' | 4366 elseif curline =~# '"\s*Sort sequence:' |
4156 let s:netrw_skipbrowse= 1 | 4367 let s:netrw_skipbrowse= 1 |
4157 echo 'Press "S" to edit sorting sequence' | 4368 echo 'Press "S" to edit sorting sequence' |
4158 | 4369 |
4159 elseif curline =~# '"\s*Quick Help:' | 4370 elseif curline =~# '"\s*Quick Help:' |
4160 NetrwKeepj norm ? | 4371 NetrwKeepj norm! ? |
4161 let s:netrw_skipbrowse= 1 | 4372 let s:netrw_skipbrowse= 1 |
4162 | 4373 |
4163 elseif curline =~# '"\s*\%(Hiding\|Showing\):' | 4374 elseif curline =~# '"\s*\%(Hiding\|Showing\):' |
4164 NetrwKeepj norm a | 4375 NetrwKeepj norm! a |
4165 let s:netrw_skipbrowse= 1 | 4376 let s:netrw_skipbrowse= 1 |
4166 echo 'Pressing "a" also works' | 4377 echo 'Pressing "a" also works' |
4167 | 4378 |
4168 elseif line("$") > w:netrw_bannercnt | 4379 elseif line("$") > w:netrw_bannercnt |
4169 exe 'sil NetrwKeepj '.w:netrw_bannercnt | 4380 exe 'sil NetrwKeepj '.w:netrw_bannercnt |
4231 " call Dret("s:NetrwGetWord <".dirname.">") | 4442 " call Dret("s:NetrwGetWord <".dirname.">") |
4232 return dirname | 4443 return dirname |
4233 endfun | 4444 endfun |
4234 | 4445 |
4235 " --------------------------------------------------------------------- | 4446 " --------------------------------------------------------------------- |
4236 " s:NetrwListSettings: make standard settings for a netrw listing {{{2 | 4447 " s:NetrwListSettings: make standard settings for making a netrw listing {{{2 |
4448 " g:netrw_bufsettings will be used after the listing is produced. | |
4449 " Called by s:NetrwGetBuffer() | |
4237 fun! s:NetrwListSettings(islocal) | 4450 fun! s:NetrwListSettings(islocal) |
4238 " call Dfunc("s:NetrwListSettings(islocal=".a:islocal.")") | 4451 " call Dfunc("s:NetrwListSettings(islocal=".a:islocal.")") |
4239 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>")) | 4452 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>")) |
4240 let fname= bufname("%") | 4453 let fname= bufname("%") |
4241 " " call Decho("(NetrwListSettings) setl bt=nofile nobl ma nonu nowrap noro nornu",'~'.expand("<slnum>")) | 4454 " " call Decho("setl bt=nofile nobl ma nonu nowrap noro nornu",'~'.expand("<slnum>")) |
4242 setl bt=nofile nobl ma nonu nowrap noro nornu | 4455 " nobl noma nomod nonu noma nowrap ro nornu (std g:netrw_bufsettings) |
4243 " call Decho("(NetrwListSettings) exe sil! keepalt file ".fnameescape(fname),'~'.expand("<slnum>")) | 4456 setl bt=nofile nobl ma nonu nowrap noro nornu |
4244 exe "sil! keepalt file ".fnameescape(fname) | 4457 call s:NetrwBufRename(fname) |
4245 if g:netrw_use_noswf | 4458 if g:netrw_use_noswf |
4246 setl noswf | 4459 setl noswf |
4247 endif | 4460 endif |
4248 " call Dredir("ls!") | 4461 " call Dredir("ls!","s:NetrwListSettings") |
4249 " call Decho("(NetrwListSettings) exe setl ts=".(g:netrw_maxfilenamelen+1),'~'.expand("<slnum>")) | 4462 " call Decho("exe setl ts=".(g:netrw_maxfilenamelen+1),'~'.expand("<slnum>")) |
4250 exe "setl ts=".(g:netrw_maxfilenamelen+1) | 4463 exe "setl ts=".(g:netrw_maxfilenamelen+1) |
4251 setl isk+=.,~,- | 4464 setl isk+=.,~,- |
4252 if g:netrw_fastbrowse > a:islocal | 4465 if g:netrw_fastbrowse > a:islocal |
4253 setl bh=hide | 4466 setl bh=hide |
4254 else | 4467 else |
4257 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>")) | 4470 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>")) |
4258 " call Dret("s:NetrwListSettings") | 4471 " call Dret("s:NetrwListSettings") |
4259 endfun | 4472 endfun |
4260 | 4473 |
4261 " --------------------------------------------------------------------- | 4474 " --------------------------------------------------------------------- |
4262 " s:NetrwListStyle: {{{2 | 4475 " s:NetrwListStyle: change list style (thin - long - wide - tree) {{{2 |
4263 " islocal=0: remote browsing | 4476 " islocal=0: remote browsing |
4264 " =1: local browsing | 4477 " =1: local browsing |
4265 fun! s:NetrwListStyle(islocal) | 4478 fun! s:NetrwListStyle(islocal) |
4266 " call Dfunc("NetrwListStyle(islocal=".a:islocal.") w:netrw_liststyle=".w:netrw_liststyle) | 4479 " call Dfunc("NetrwListStyle(islocal=".a:islocal.") w:netrw_liststyle=".w:netrw_liststyle) |
4267 | 4480 |
4273 let w:netrw_liststyle = (w:netrw_liststyle + 1) % s:MAXLIST | 4486 let w:netrw_liststyle = (w:netrw_liststyle + 1) % s:MAXLIST |
4274 " call Decho("fname<".fname.">",'~'.expand("<slnum>")) | 4487 " call Decho("fname<".fname.">",'~'.expand("<slnum>")) |
4275 " call Decho("chgd w:netrw_liststyle to ".w:netrw_liststyle,'~'.expand("<slnum>")) | 4488 " call Decho("chgd w:netrw_liststyle to ".w:netrw_liststyle,'~'.expand("<slnum>")) |
4276 " call Decho("b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "doesn't exist").">",'~'.expand("<slnum>")) | 4489 " call Decho("b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "doesn't exist").">",'~'.expand("<slnum>")) |
4277 | 4490 |
4491 " repoint t:netrw_lexbufnr if appropriate | |
4492 if exists("t:netrw_lexbufnr") && bufnr("%") == t:netrw_lexbufnr | |
4493 " call Decho("set repointlexbufnr to true!") | |
4494 let repointlexbufnr= 1 | |
4495 endif | |
4496 | |
4278 if w:netrw_liststyle == s:THINLIST | 4497 if w:netrw_liststyle == s:THINLIST |
4279 " use one column listing | 4498 " use one column listing |
4280 " call Decho("use one column list",'~'.expand("<slnum>")) | 4499 " call Decho("use one column list",'~'.expand("<slnum>")) |
4281 let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge') | 4500 let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge') |
4282 | 4501 |
4314 " refresh the listing | 4533 " refresh the listing |
4315 " call Decho("refresh the listing",'~'.expand("<slnum>")) | 4534 " call Decho("refresh the listing",'~'.expand("<slnum>")) |
4316 NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) | 4535 NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) |
4317 NetrwKeepj call s:NetrwCursor() | 4536 NetrwKeepj call s:NetrwCursor() |
4318 | 4537 |
4538 " repoint t:netrw_lexbufnr if appropriate | |
4539 if exists("repointlexbufnr") | |
4540 let t:netrw_lexbufnr= bufnr("%") | |
4541 " call Decho("repoint t:netrw_lexbufnr to #".t:netrw_lexbufnr) | |
4542 endif | |
4543 | |
4319 " restore position; keep cursor on the filename | 4544 " restore position; keep cursor on the filename |
4320 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) | 4545 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) |
4321 NetrwKeepj call winrestview(svpos) | 4546 NetrwKeepj call winrestview(svpos) |
4322 let @@= ykeep | 4547 let @@= ykeep |
4323 | 4548 |
4337 let svpos= winsaveview() | 4562 let svpos= winsaveview() |
4338 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) | 4563 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) |
4339 call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) | 4564 call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) |
4340 | 4565 |
4341 " keep cursor on the filename | 4566 " keep cursor on the filename |
4342 let fname= s:NetrwGetWord() | 4567 if g:netrw_banner && exists("w:netrw_bannercnt") && line(".") >= w:netrw_bannercnt |
4343 sil NetrwKeepj $ | 4568 let fname= s:NetrwGetWord() |
4344 let result= search('\%(^\%(|\+\s\)\=\|\s\{2,}\)\zs'.escape(fname,'.\[]*$^').'\%(\s\{2,}\|$\)','bc') | 4569 sil NetrwKeepj $ |
4345 " call Decho("search result=".result." w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'N/A'),'~'.expand("<slnum>")) | 4570 let result= search('\%(^\%(|\+\s\)\=\|\s\{2,}\)\zs'.escape(fname,'.\[]*$^').'\%(\s\{2,}\|$\)','bc') |
4346 if result <= 0 && exists("w:netrw_bannercnt") | 4571 " " call Decho("search result=".result." w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'N/A'),'~'.expand("<slnum>")) |
4347 exe "NetrwKeepj ".w:netrw_bannercnt | 4572 if result <= 0 && exists("w:netrw_bannercnt") |
4573 exe "NetrwKeepj ".w:netrw_bannercnt | |
4574 endif | |
4348 endif | 4575 endif |
4349 let @@= ykeep | 4576 let @@= ykeep |
4350 " call Dret("s:NetrwBannerCtrl : g:netrw_banner=".g:netrw_banner) | 4577 " call Dret("s:NetrwBannerCtrl : g:netrw_banner=".g:netrw_banner) |
4351 endfun | 4578 endfun |
4352 | 4579 |
4433 " (see s:NetrwMenu()) | 4660 " (see s:NetrwMenu()) |
4434 fun! s:NetrwBookmarkMenu() | 4661 fun! s:NetrwBookmarkMenu() |
4435 if !exists("s:netrw_menucnt") | 4662 if !exists("s:netrw_menucnt") |
4436 return | 4663 return |
4437 endif | 4664 endif |
4438 " call Dfunc("NetrwBookmarkMenu() histcnt=".g:netrw_dirhist_cnt." menucnt=".s:netrw_menucnt) | 4665 " call Dfunc("NetrwBookmarkMenu() histcnt=".g:netrw_dirhistcnt." menucnt=".s:netrw_menucnt) |
4439 | 4666 |
4440 " the following test assures that gvim is running, has menus available, and has menus enabled. | 4667 " the following test assures that gvim is running, has menus available, and has menus enabled. |
4441 if has("gui") && has("menu") && has("gui_running") && &go =~# 'm' && g:netrw_menu | 4668 if has("gui") && has("menu") && has("gui_running") && &go =~# 'm' && g:netrw_menu |
4442 if exists("g:NetrwTopLvlMenu") | 4669 if exists("g:NetrwTopLvlMenu") |
4443 " call Decho("removing ".g:NetrwTopLvlMenu."Bookmarks menu item(s)",'~'.expand("<slnum>")) | 4670 " call Decho("removing ".g:NetrwTopLvlMenu."Bookmarks menu item(s)",'~'.expand("<slnum>")) |
4465 | 4692 |
4466 endif | 4693 endif |
4467 | 4694 |
4468 " show directory browsing history | 4695 " show directory browsing history |
4469 if g:netrw_dirhistmax > 0 | 4696 if g:netrw_dirhistmax > 0 |
4470 let cnt = g:netrw_dirhist_cnt | 4697 let cnt = g:netrw_dirhistcnt |
4471 let first = 1 | 4698 let first = 1 |
4472 let histcnt = 0 | 4699 let histcnt = 0 |
4473 while ( first || cnt != g:netrw_dirhist_cnt ) | 4700 while ( first || cnt != g:netrw_dirhistcnt ) |
4474 let histcnt = histcnt + 1 | 4701 let histcnt = histcnt + 1 |
4475 let priority = g:netrw_dirhist_cnt + histcnt | 4702 let priority = g:netrw_dirhistcnt + histcnt |
4476 if exists("g:netrw_dirhist_{cnt}") | 4703 if exists("g:netrw_dirhist_{cnt}") |
4477 let histdir= escape(g:netrw_dirhist_{cnt},g:netrw_menu_escape) | 4704 let histdir= escape(g:netrw_dirhist_{cnt},g:netrw_menu_escape) |
4478 " call Decho('sil! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.' :e '.histdir,'~'.expand("<slnum>")) | 4705 " call Decho('sil! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.' :e '.histdir,'~'.expand("<slnum>")) |
4479 exe 'sil! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.' :e '.histdir."\<cr>" | 4706 exe 'sil! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.' :e '.histdir."\<cr>" |
4480 endif | 4707 endif |
4504 " Don't try to change-directory: this can happen, for example, when netrw#ErrorMsg has been called | 4731 " Don't try to change-directory: this can happen, for example, when netrw#ErrorMsg has been called |
4505 " and the current window is the NetrwMessage window. | 4732 " and the current window is the NetrwMessage window. |
4506 let @@= ykeep | 4733 let @@= ykeep |
4507 " call Decho("b:netrw_curdir doesn't exist!",'~'.expand("<slnum>")) | 4734 " call Decho("b:netrw_curdir doesn't exist!",'~'.expand("<slnum>")) |
4508 " call Decho("getcwd<".getcwd().">",'~'.expand("<slnum>")) | 4735 " call Decho("getcwd<".getcwd().">",'~'.expand("<slnum>")) |
4509 " call Dredir("ls!") | 4736 " call Dredir("ls!","s:NetrwBrowseChgDir") |
4510 " call Dret("s:NetrwBrowseChgDir") | 4737 " call Dret("s:NetrwBrowseChgDir") |
4511 return | 4738 return |
4512 endif | 4739 endif |
4513 " call Decho("b:netrw_curdir<".b:netrw_curdir.">") | 4740 " call Decho("b:netrw_curdir<".b:netrw_curdir.">") |
4514 | 4741 |
4515 " NetrwBrowseChgDir: save options and initialize {{{3 | 4742 " NetrwBrowseChgDir: save options and initialize {{{3 |
4516 " call Decho("saving options",'~'.expand("<slnum>")) | 4743 " call Decho("saving options",'~'.expand("<slnum>")) |
4517 call s:SavePosn(s:netrw_nbcd) | 4744 call s:SavePosn(s:netrw_posn) |
4518 NetrwKeepj call s:NetrwOptionSave("s:") | 4745 NetrwKeepj call s:NetrwOptionsSave("s:") |
4519 NetrwKeepj call s:NetrwSafeOptions() | 4746 NetrwKeepj call s:NetrwOptionsSafe(a:islocal) |
4520 if (has("win32") || has("win95") || has("win64") || has("win16")) | 4747 if (has("win32") || has("win95") || has("win64") || has("win16")) |
4521 let dirname = substitute(b:netrw_curdir,'\\','/','ge') | 4748 let dirname = substitute(b:netrw_curdir,'\\','/','ge') |
4522 else | 4749 else |
4523 let dirname = b:netrw_curdir | 4750 let dirname = b:netrw_curdir |
4524 endif | 4751 endif |
4525 let newdir = a:newdir | 4752 let newdir = a:newdir |
4526 let dolockout = 0 | 4753 let dolockout = 0 |
4527 let dorestore = 1 | 4754 let dorestore = 1 |
4528 " call Decho("dirname<".dirname.">",'~'.expand("<slnum>")) | 4755 " call Decho("dirname<".dirname.">",'~'.expand("<slnum>")) |
4756 " call Decho("newdir<".newdir.">",'~'.expand("<slnum>")) | |
4529 | 4757 |
4530 " ignore <cr>s when done in the banner | 4758 " ignore <cr>s when done in the banner |
4531 " call Decho('ignore [return]s when done in banner (g:netrw_banner='.g:netrw_banner.")",'~'.expand("<slnum>")) | 4759 " call Decho('(s:NetrwBrowseChgDir) ignore [return]s when done in banner (g:netrw_banner='.g:netrw_banner.")",'~'.expand("<slnum>")) |
4532 if g:netrw_banner | 4760 if g:netrw_banner |
4533 " call Decho("w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'n/a')." line(.)#".line('.')." line($)#".line("#"),'~'.expand("<slnum>")) | 4761 " call Decho("w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'n/a')." line(.)#".line('.')." line($)#".line("#"),'~'.expand("<slnum>")) |
4534 if exists("w:netrw_bannercnt") && line(".") < w:netrw_bannercnt && line("$") >= w:netrw_bannercnt | 4762 if exists("w:netrw_bannercnt") && line(".") < w:netrw_bannercnt && line("$") >= w:netrw_bannercnt |
4535 if getline(".") =~# 'Quick Help' | 4763 if getline(".") =~# 'Quick Help' |
4536 " call Decho("#1: quickhelp=".g:netrw_quickhelp." ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) | 4764 " call Decho("#1: quickhelp=".g:netrw_quickhelp." ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) |
4537 let g:netrw_quickhelp= (g:netrw_quickhelp + 1)%len(s:QuickHelp) | 4765 let g:netrw_quickhelp= (g:netrw_quickhelp + 1)%len(s:QuickHelp) |
4538 " call Decho("#2: quickhelp=".g:netrw_quickhelp." ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) | 4766 " call Decho("#2: quickhelp=".g:netrw_quickhelp." ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) |
4539 setl ma noro nowrap | 4767 setl ma noro nowrap |
4540 NetrwKeepj call setline(line('.'),'" Quick Help: <F1>:help '.s:QuickHelp[g:netrw_quickhelp]) | 4768 NetrwKeepj call setline(line('.'),'" Quick Help: <F1>:help '.s:QuickHelp[g:netrw_quickhelp]) |
4541 setl noma nomod nowrap | 4769 setl noma nomod nowrap |
4542 call s:RestorePosn(s:netrw_nbcd) | 4770 NetrwKeepj call s:NetrwOptionsRestore("s:") |
4543 NetrwKeepj call s:NetrwOptionRestore("s:") | |
4544 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) | 4771 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) |
4545 endif | 4772 endif |
4546 endif | 4773 endif |
4547 " else " Decho | 4774 " else " Decho |
4548 " call Decho("(s:NetrwBrowseChgdir) g:netrw_banner=".g:netrw_banner." (no banner)",'~'.expand("<slnum>")) | 4775 " call Decho("g:netrw_banner=".g:netrw_banner." (no banner)",'~'.expand("<slnum>")) |
4549 endif | 4776 endif |
4550 | 4777 |
4551 " set up o/s-dependent directory recognition pattern | 4778 " set up o/s-dependent directory recognition pattern |
4552 if has("amiga") | 4779 if has("amiga") |
4553 let dirpat= '[\/:]$' | 4780 let dirpat= '[\/:]$' |
4566 " call Decho("[newdir<".newdir."> ".((newdir =~ dirpat)? "=~" : "!~")." dirpat<".dirpat.">] && [islocal=".a:islocal."] && [newdir is ".(isdirectory(s:NetrwFile(newdir))? "" : "not ")."a directory]",'~'.expand("<slnum>")) | 4793 " call Decho("[newdir<".newdir."> ".((newdir =~ dirpat)? "=~" : "!~")." dirpat<".dirpat.">] && [islocal=".a:islocal."] && [newdir is ".(isdirectory(s:NetrwFile(newdir))? "" : "not ")."a directory]",'~'.expand("<slnum>")) |
4567 if newdir !~ dirpat && !(a:islocal && isdirectory(s:NetrwFile(s:ComposePath(dirname,newdir)))) | 4794 if newdir !~ dirpat && !(a:islocal && isdirectory(s:NetrwFile(s:ComposePath(dirname,newdir)))) |
4568 " ------------------------------ | 4795 " ------------------------------ |
4569 " NetrwBrowseChgDir: edit a file {{{3 | 4796 " NetrwBrowseChgDir: edit a file {{{3 |
4570 " ------------------------------ | 4797 " ------------------------------ |
4571 " call Decho('edit-a-file: case "handling a file": newdir<'.newdir.'> !~ dirpat<'.dirpat.">",'~'.expand("<slnum>")) | 4798 " call Decho('(s:NetrwBrowseChgDir) edit-a-file: case "handling a file": newdir<'.newdir.'> !~ dirpat<'.dirpat.">",'~'.expand("<slnum>")) |
4572 | 4799 |
4573 " save position for benefit of Rexplore | 4800 " save position for benefit of Rexplore |
4574 let s:rexposn_{bufnr("%")}= winsaveview() | 4801 let s:rexposn_{bufnr("%")}= winsaveview() |
4575 " call Decho("edit-a-file: saving posn to s:rexposn_".bufnr("%")."<".string(s:rexposn_{bufnr("%")}).">",'~'.expand("<slnum>")) | 4802 " call Decho("edit-a-file: saving posn to s:rexposn_".bufnr("%")."<".string(s:rexposn_{bufnr("%")}).">",'~'.expand("<slnum>")) |
4576 " call Decho("edit-a-file: win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> ft=".&ft,'~'.expand("<slnum>")) | 4803 " call Decho("edit-a-file: win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> ft=".&ft,'~'.expand("<slnum>")) |
4578 | 4805 |
4579 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") && newdir !~ '^\(/\|\a:\)' | 4806 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") && newdir !~ '^\(/\|\a:\)' |
4580 " call Decho("edit-a-file: handle tree listing: w:netrw_treedict<".(exists("w:netrw_treedict")? string(w:netrw_treedict) : 'n/a').">",'~'.expand("<slnum>")) | 4807 " call Decho("edit-a-file: handle tree listing: w:netrw_treedict<".(exists("w:netrw_treedict")? string(w:netrw_treedict) : 'n/a').">",'~'.expand("<slnum>")) |
4581 " call Decho("edit-a-file: newdir<".newdir.">",'~'.expand("<slnum>")) | 4808 " call Decho("edit-a-file: newdir<".newdir.">",'~'.expand("<slnum>")) |
4582 let dirname= s:NetrwTreeDir(a:islocal) | 4809 let dirname= s:NetrwTreeDir(a:islocal) |
4810 "COMBAK : not working for a symlink -- but what about a regular file? a directory? | |
4811 " call Decho("COMBAK : not working for a symlink -- but what about a regular file? a directory?") | |
4812 " Feb 17, 2019: following if-else-endif restored -- wasn't editing a file in tree mode | |
4583 if dirname =~ '/$' | 4813 if dirname =~ '/$' |
4584 let dirname= dirname.newdir | 4814 let dirname= dirname.newdir |
4585 else | 4815 else |
4586 let dirname= dirname."/".newdir | 4816 let dirname= dirname."/".newdir |
4587 endif | 4817 endif |
4595 endif | 4825 endif |
4596 " call Decho("edit-a-file: handling a file: dirname<".dirname."> (a:0=".a:0.")",'~'.expand("<slnum>")) | 4826 " call Decho("edit-a-file: handling a file: dirname<".dirname."> (a:0=".a:0.")",'~'.expand("<slnum>")) |
4597 " this lets netrw#BrowseX avoid the edit | 4827 " this lets netrw#BrowseX avoid the edit |
4598 if a:0 < 1 | 4828 if a:0 < 1 |
4599 " call Decho("edit-a-file: (a:0=".a:0."<1) set up windows for editing<".fnameescape(dirname)."> didsplit=".(exists("s:didsplit")? s:didsplit : "doesn't exist"),'~'.expand("<slnum>")) | 4829 " call Decho("edit-a-file: (a:0=".a:0."<1) set up windows for editing<".fnameescape(dirname)."> didsplit=".(exists("s:didsplit")? s:didsplit : "doesn't exist"),'~'.expand("<slnum>")) |
4600 NetrwKeepj call s:NetrwOptionRestore("s:") | 4830 NetrwKeepj call s:NetrwOptionsRestore("s:") |
4601 let curdir= b:netrw_curdir | 4831 let curdir= b:netrw_curdir |
4602 if !exists("s:didsplit") | 4832 if !exists("s:didsplit") |
4603 " call Decho("edit-a-file: s:didsplit does not exist; g:netrw_browse_split=".string(g:netrw_browse_split)." win#".winnr(),'~'.expand("<slnum>")) | 4833 " call Decho("edit-a-file: s:didsplit does not exist; g:netrw_browse_split=".string(g:netrw_browse_split)." win#".winnr(),'~'.expand("<slnum>")) |
4604 if type(g:netrw_browse_split) == 3 | 4834 if type(g:netrw_browse_split) == 3 |
4605 " open file in server | 4835 " open file in server |
4710 " NetrwBrowseChgDir: just go to the new directory spec {{{3 | 4940 " NetrwBrowseChgDir: just go to the new directory spec {{{3 |
4711 " ---------------------------------------------------- | 4941 " ---------------------------------------------------- |
4712 " call Decho('goto-newdir: case "just go to new directory spec": newdir<'.newdir.'>','~'.expand("<slnum>")) | 4942 " call Decho('goto-newdir: case "just go to new directory spec": newdir<'.newdir.'>','~'.expand("<slnum>")) |
4713 let dirname = newdir | 4943 let dirname = newdir |
4714 NetrwKeepj call s:SetRexDir(a:islocal,dirname) | 4944 NetrwKeepj call s:SetRexDir(a:islocal,dirname) |
4715 NetrwKeepj call s:NetrwOptionRestore("s:") | 4945 NetrwKeepj call s:NetrwOptionsRestore("s:") |
4716 norm! m` | 4946 norm! m` |
4717 | 4947 |
4718 elseif newdir == './' | 4948 elseif newdir == './' |
4719 " --------------------------------------------- | 4949 " --------------------------------------------- |
4720 " NetrwBrowseChgDir: refresh the directory list {{{3 | 4950 " NetrwBrowseChgDir: refresh the directory list {{{3 |
4721 " --------------------------------------------- | 4951 " --------------------------------------------- |
4722 " call Decho('refresh-dirlist: case "refresh directory listing": newdir == "./"','~'.expand("<slnum>")) | 4952 " call Decho('(s:NetrwBrowseChgDir)refresh-dirlist: case "refresh directory listing": newdir == "./"','~'.expand("<slnum>")) |
4723 NetrwKeepj call s:SetRexDir(a:islocal,dirname) | 4953 NetrwKeepj call s:SetRexDir(a:islocal,dirname) |
4724 norm! m` | 4954 norm! m` |
4725 | 4955 |
4726 elseif newdir == '../' | 4956 elseif newdir == '../' |
4727 " -------------------------------------- | 4957 " -------------------------------------- |
4728 " NetrwBrowseChgDir: go up one directory {{{3 | 4958 " NetrwBrowseChgDir: go up one directory {{{3 |
4729 " -------------------------------------- | 4959 " -------------------------------------- |
4730 " call Decho('go-up: case "go up one directory": newdir == "../"','~'.expand("<slnum>")) | 4960 " call Decho('(s:NetrwBrowseChgDir)go-up: case "go up one directory": newdir == "../"','~'.expand("<slnum>")) |
4731 | 4961 |
4732 if w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") | 4962 if w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") |
4733 " force a refresh | 4963 " force a refresh |
4734 " call Decho("go-up: clear buffer<".expand("%")."> with :%d",'~'.expand("<slnum>")) | 4964 " call Decho("go-up: clear buffer<".expand("%")."> with :%d",'~'.expand("<slnum>")) |
4735 " call Decho("go-up: setl noro ma",'~'.expand("<slnum>")) | 4965 " call Decho("go-up: setl noro ma",'~'.expand("<slnum>")) |
4763 endif | 4993 endif |
4764 " call Decho("go-up: windows: dirname<".dirname."> (go up one dir)",'~'.expand("<slnum>")) | 4994 " call Decho("go-up: windows: dirname<".dirname."> (go up one dir)",'~'.expand("<slnum>")) |
4765 | 4995 |
4766 else | 4996 else |
4767 " unix or cygwin | 4997 " unix or cygwin |
4768 " call Decho('go-up: case "go up one directory": newdir == "../" and unix or cygwin','~'.expand("<slnum>")) | 4998 " call Decho('(s:NetrwBrowseChgDir)go-up: case "go up one directory": newdir == "../" and unix or cygwin','~'.expand("<slnum>")) |
4769 if a:islocal | 4999 if a:islocal |
4770 let dirname= substitute(dirname,'^\(.*\)/\([^/]\+\)/$','\1','') | 5000 let dirname= substitute(dirname,'^\(.*\)/\([^/]\+\)/$','\1','') |
4771 if dirname == "" | 5001 if dirname == "" |
4772 let dirname= '/' | 5002 let dirname= '/' |
4773 endif | 5003 endif |
4775 let dirname= substitute(dirname,'^\(\a\{3,}://.\{-}/\{1,2}\)\(.\{-}\)\([^/]\+\)/$','\1\2','') | 5005 let dirname= substitute(dirname,'^\(\a\{3,}://.\{-}/\{1,2}\)\(.\{-}\)\([^/]\+\)/$','\1\2','') |
4776 endif | 5006 endif |
4777 " call Decho("go-up: unix: dirname<".dirname."> (go up one dir)",'~'.expand("<slnum>")) | 5007 " call Decho("go-up: unix: dirname<".dirname."> (go up one dir)",'~'.expand("<slnum>")) |
4778 endif | 5008 endif |
4779 NetrwKeepj call s:SetRexDir(a:islocal,dirname) | 5009 NetrwKeepj call s:SetRexDir(a:islocal,dirname) |
4780 norm m` | 5010 norm! m` |
4781 | 5011 |
4782 elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") | 5012 elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") |
4783 " -------------------------------------- | 5013 " -------------------------------------- |
4784 " NetrwBrowseChgDir: Handle Tree Listing {{{3 | 5014 " NetrwBrowseChgDir: Handle Tree Listing {{{3 |
4785 " -------------------------------------- | 5015 " -------------------------------------- |
4786 " call Decho('tree-list: case liststyle is TREELIST and w:netrw_treedict exists','~'.expand("<slnum>")) | 5016 " call Decho('(s:NetrwBrowseChgDir)tree-list: case liststyle is TREELIST and w:netrw_treedict exists','~'.expand("<slnum>")) |
4787 " force a refresh (for TREELIST, NetrwTreeDir() will force the refresh) | 5017 " force a refresh (for TREELIST, NetrwTreeDir() will force the refresh) |
4788 " call Decho("tree-list: setl noro ma",'~'.expand("<slnum>")) | 5018 " call Decho("tree-list: setl noro ma",'~'.expand("<slnum>")) |
4789 setl noro ma | 5019 setl noro ma |
4790 if !(exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir")) | 5020 if !(exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir")) |
4791 " call Decho("tree-list: clear buffer<".expand("%")."> with :%d (force refresh)",'~'.expand("<slnum>")) | 5021 " call Decho("tree-list: clear buffer<".expand("%")."> with :%d (force refresh)",'~'.expand("<slnum>")) |
4798 " call Decho("tree-list: w:netrw_treedict<".string(w:netrw_treedict).">",'~'.expand("<slnum>")) | 5028 " call Decho("tree-list: w:netrw_treedict<".string(w:netrw_treedict).">",'~'.expand("<slnum>")) |
4799 | 5029 |
4800 " search treedict for tree dir as-is | 5030 " search treedict for tree dir as-is |
4801 " call Decho("tree-list: search treedict for tree dir as-is",'~'.expand("<slnum>")) | 5031 " call Decho("tree-list: search treedict for tree dir as-is",'~'.expand("<slnum>")) |
4802 if has_key(w:netrw_treedict,treedir) | 5032 if has_key(w:netrw_treedict,treedir) |
4803 " call Decho('tree-list: ....searched for treedir<'.treedir.'> : found it!','~'.expand("<slnum>")) | 5033 " call Decho('(s:NetrwBrowseChgDir)tree-list: ....searched for treedir<'.treedir.'> : found it!','~'.expand("<slnum>")) |
4804 let haskey= 1 | 5034 let haskey= 1 |
4805 else | 5035 else |
4806 " call Decho('tree-list: ....searched for treedir<'.treedir.'> : not found','~'.expand("<slnum>")) | 5036 " call Decho('(s:NetrwBrowseChgDir)tree-list: ....searched for treedir<'.treedir.'> : not found','~'.expand("<slnum>")) |
4807 endif | 5037 endif |
4808 | 5038 |
4809 " search treedict for treedir with a [/@] appended | 5039 " search treedict for treedir with a [/@] appended |
4810 " call Decho("tree-list: search treedict for treedir with a [/@] appended",'~'.expand("<slnum>")) | 5040 " call Decho("tree-list: search treedict for treedir with a [/@] appended",'~'.expand("<slnum>")) |
4811 if !haskey && treedir !~ '[/@]$' | 5041 if !haskey && treedir !~ '[/@]$' |
4812 if has_key(w:netrw_treedict,treedir."/") | 5042 if has_key(w:netrw_treedict,treedir."/") |
4813 let treedir= treedir."/" | 5043 let treedir= treedir."/" |
4814 " call Decho('tree-list: ....searched.for treedir<'.treedir.'> found it!','~'.expand("<slnum>")) | 5044 " call Decho('(s:NetrwBrowseChgDir)tree-list: ....searched.for treedir<'.treedir.'> found it!','~'.expand("<slnum>")) |
4815 let haskey = 1 | 5045 let haskey = 1 |
4816 else | 5046 else |
4817 " call Decho('tree-list: ....searched for treedir<'.treedir.'/> : not found','~'.expand("<slnum>")) | 5047 " call Decho('(s:NetrwBrowseChgDir)tree-list: ....searched for treedir<'.treedir.'/> : not found','~'.expand("<slnum>")) |
4818 endif | 5048 endif |
4819 endif | 5049 endif |
4820 | 5050 |
4821 " search treedict for treedir with any trailing / elided | 5051 " search treedict for treedir with any trailing / elided |
4822 " call Decho("tree-list: search treedict for treedir with any trailing / elided",'~'.expand("<slnum>")) | 5052 " call Decho("tree-list: search treedict for treedir with any trailing / elided",'~'.expand("<slnum>")) |
4823 if !haskey && treedir =~ '/$' | 5053 if !haskey && treedir =~ '/$' |
4824 let treedir= substitute(treedir,'/$','','') | 5054 let treedir= substitute(treedir,'/$','','') |
4825 if has_key(w:netrw_treedict,treedir) | 5055 if has_key(w:netrw_treedict,treedir) |
4826 " call Decho('tree-list: ....searched.for treedir<'.treedir.'> found it!','~'.expand("<slnum>")) | 5056 " call Decho('(s:NetrwBrowseChgDir)tree-list: ....searched.for treedir<'.treedir.'> found it!','~'.expand("<slnum>")) |
4827 let haskey = 1 | 5057 let haskey = 1 |
4828 else | 5058 else |
4829 " call Decho('tree-list: ....searched for treedir<'.treedir.'> : not found','~'.expand("<slnum>")) | 5059 " call Decho('(s:NetrwBrowseChgDir)tree-list: ....searched for treedir<'.treedir.'> : not found','~'.expand("<slnum>")) |
4830 endif | 5060 endif |
4831 endif | 5061 endif |
4832 | 5062 |
4833 " call Decho("haskey=".haskey,'~'.expand("<slnum>")) | 5063 " call Decho("haskey=".haskey,'~'.expand("<slnum>")) |
4834 if haskey | 5064 if haskey |
4853 " NetrwBrowseChgDir: Go down one directory {{{3 | 5083 " NetrwBrowseChgDir: Go down one directory {{{3 |
4854 " ---------------------------------------- | 5084 " ---------------------------------------- |
4855 let dirname = s:ComposePath(dirname,newdir) | 5085 let dirname = s:ComposePath(dirname,newdir) |
4856 " call Decho("go down one dir: dirname<".dirname."> newdir<".newdir.">",'~'.expand("<slnum>")) | 5086 " call Decho("go down one dir: dirname<".dirname."> newdir<".newdir.">",'~'.expand("<slnum>")) |
4857 NetrwKeepj call s:SetRexDir(a:islocal,dirname) | 5087 NetrwKeepj call s:SetRexDir(a:islocal,dirname) |
4858 norm m` | 5088 norm! m` |
4859 endif | 5089 endif |
4860 | 5090 |
4861 " -------------------------------------- | 5091 " -------------------------------------- |
4862 " NetrwBrowseChgDir: Restore and Cleanup {{{3 | 5092 " NetrwBrowseChgDir: Restore and Cleanup {{{3 |
4863 " -------------------------------------- | 5093 " -------------------------------------- |
4864 if dorestore | 5094 if dorestore |
4865 " dorestore is zero'd when a local file was hidden or bufhidden; | 5095 " dorestore is zero'd when a local file was hidden or bufhidden; |
4866 " in such a case, we want to keep whatever settings it may have. | 5096 " in such a case, we want to keep whatever settings it may have. |
4867 " call Decho("doing option restore (dorestore=".dorestore.")",'~'.expand("<slnum>")) | 5097 " call Decho("doing option restore (dorestore=".dorestore.")",'~'.expand("<slnum>")) |
4868 NetrwKeepj call s:NetrwOptionRestore("s:") | 5098 NetrwKeepj call s:NetrwOptionsRestore("s:") |
4869 " else " Decho | 5099 " else " Decho |
4870 " call Decho("skipping option restore (dorestore==0): hidden=".&hidden." bufhidden=".&bufhidden." mod=".&mod,'~'.expand("<slnum>")) | 5100 " call Decho("skipping option restore (dorestore==0): hidden=".&hidden." bufhidden=".&bufhidden." mod=".&mod,'~'.expand("<slnum>")) |
4871 endif | 5101 endif |
4872 call s:RestorePosn(s:netrw_nbcd) | |
4873 if dolockout && dorestore | 5102 if dolockout && dorestore |
4874 " call Decho("restore: filewritable(dirname<".dirname.">)=".filewritable(dirname),'~'.expand("<slnum>")) | 5103 " call Decho("restore: filewritable(dirname<".dirname.">)=".filewritable(dirname),'~'.expand("<slnum>")) |
4875 if filewritable(dirname) | 5104 if filewritable(dirname) |
4876 " call Decho("restore: doing modification lockout settings: ma nomod noro",'~'.expand("<slnum>")) | 5105 " call Decho("restore: doing modification lockout settings: ma nomod noro",'~'.expand("<slnum>")) |
4877 " call Decho("restore: setl ma nomod noro",'~'.expand("<slnum>")) | 5106 " call Decho("restore: setl ma nomod noro",'~'.expand("<slnum>")) |
4882 " call Decho("restore: setl ma nomod noro",'~'.expand("<slnum>")) | 5111 " call Decho("restore: setl ma nomod noro",'~'.expand("<slnum>")) |
4883 setl ma ro nomod | 5112 setl ma ro nomod |
4884 " call Decho("restore: ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) | 5113 " call Decho("restore: ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) |
4885 endif | 5114 endif |
4886 endif | 5115 endif |
5116 call s:RestorePosn(s:netrw_posn) | |
4887 let @@= ykeep | 5117 let @@= ykeep |
4888 | 5118 |
4889 " call Dret("s:NetrwBrowseChgDir <".dirname."> : curpos<".string(getpos(".")).">") | 5119 " call Dret("s:NetrwBrowseChgDir <".dirname."> : curpos<".string(getpos(".")).">") |
4890 return dirname | 5120 return dirname |
4891 endfun | 5121 endfun |
4903 " directories. | 5133 " directories. |
4904 " call Dret("s:NetrwBrowseUpDir : cursor not in file area") | 5134 " call Dret("s:NetrwBrowseUpDir : cursor not in file area") |
4905 return | 5135 return |
4906 endif | 5136 endif |
4907 | 5137 |
4908 if !exists("w:netrw_liststyle") || w:netrw_liststyle != s:TREELIST | |
4909 call s:SavePosn(s:netrw_nbcd) | |
4910 endif | |
4911 | |
4912 norm! 0 | 5138 norm! 0 |
4913 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") | 5139 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") |
4914 " call Decho("case: treestyle",'~'.expand("<slnum>")) | 5140 " call Decho("case: treestyle",'~'.expand("<slnum>")) |
4915 let curline= getline(".") | 5141 let curline= getline(".") |
4916 let swwline= winline() - 1 | 5142 let swwline= winline() - 1 |
4917 if exists("w:netrw_treetop") | 5143 if exists("w:netrw_treetop") |
4918 let b:netrw_curdir= w:netrw_treetop | 5144 let b:netrw_curdir= w:netrw_treetop |
4919 endif | 5145 elseif exists("b:netrw_curdir") |
4920 let curdir= b:netrw_curdir | 5146 let w:netrw_treetop= b:netrw_curdir |
5147 else | |
5148 let w:netrw_treetop= getcwd() | |
5149 let b:netrw_curdir = w:netrw_treetop | |
5150 endif | |
5151 let curfile = getline(".") | |
5152 let curpath = s:NetrwTreePath(w:netrw_treetop) | |
4921 if a:islocal | 5153 if a:islocal |
4922 call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,'../')) | 5154 call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,'../')) |
4923 else | 5155 else |
4924 call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,'../')) | 5156 call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,'../')) |
4925 endif | 5157 endif |
4926 if !search('\c^'.s:treedepthstring.curline,'cw') | 5158 " call Decho("looking for curfile<^".s:treedepthstring.curfile.">",'~'.expand("<slnum>")) |
4927 if !search('\c^'.curline,'cw') | 5159 " call Decho("having curpath<".curpath.">",'~'.expand("<slnum>")) |
4928 sil! NetrwKeepj 1 | 5160 if w:netrw_treetop == '/' |
4929 endif | 5161 keepj call search('^\M'.curfile,"w") |
4930 endif | 5162 elseif curfile == '../' |
4931 exe "sil! NetrwKeepj norm! z\<cr>" | 5163 keepj call search('^\M'.curfile,"wb") |
4932 while winline() < swwline | 5164 else |
4933 let curwinline= winline() | 5165 " call Decho("search(^\\M".s:treedepthstring.curfile.") backwards")) |
4934 exe "sil! NetrwKeepj norm! \<c-y>" | 5166 while 1 |
4935 if curwinline == winline() | 5167 keepj call search('^\M'.s:treedepthstring.curfile,"wb") |
4936 break | 5168 let treepath= s:NetrwTreePath(w:netrw_treetop) |
4937 endif | 5169 " call Decho("..current treepath<".treepath.">",'~'.expand("<slnum>")) |
4938 endwhile | 5170 if treepath == curpath |
5171 break | |
5172 endif | |
5173 endwhile | |
5174 endif | |
5175 | |
4939 else | 5176 else |
4940 " call Decho("case: not treestyle",'~'.expand("<slnum>")) | 5177 " call Decho("case: not treestyle",'~'.expand("<slnum>")) |
5178 call s:SavePosn(s:netrw_posn) | |
4941 if exists("b:netrw_curdir") | 5179 if exists("b:netrw_curdir") |
4942 let curdir= b:netrw_curdir | 5180 let curdir= b:netrw_curdir |
4943 else | 5181 else |
4944 let curdir= expand(getcwd()) | 5182 let curdir= expand(getcwd()) |
4945 endif | 5183 endif |
4946 if a:islocal | 5184 if a:islocal |
4947 call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,'../')) | 5185 call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,'../')) |
4948 else | 5186 else |
4949 call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,'../')) | 5187 call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,'../')) |
4950 endif | 5188 endif |
4951 if has_key(s:netrw_nbcd,bufnr("%")) | 5189 call s:RestorePosn(s:netrw_posn) |
4952 call s:RestorePosn(s:netrw_nbcd) | 5190 let curdir= substitute(curdir,'^.*[\/]','','') |
4953 elseif exists("w:netrw_bannercnt") | 5191 call search('\<'.curdir.'/','wc') |
4954 " call Decho("moving to line#".w:netrw_bannercnt,'~'.expand("<slnum>")) | 5192 endif |
4955 exe w:netrw_bannercnt | |
4956 else | |
4957 1 | |
4958 endif | |
4959 endif | |
4960 let curdir= substitute(curdir,'^.*[\/]','','') | |
4961 call search('\<'.curdir.'\>','wc') | |
4962 " call Dret("s:NetrwBrowseUpDir") | 5193 " call Dret("s:NetrwBrowseUpDir") |
4963 endfun | 5194 endfun |
4964 | 5195 |
4965 " --------------------------------------------------------------------- | 5196 " --------------------------------------------------------------------- |
4966 " netrw#BrowseX: (implements "x") executes a special "viewer" script or program for the {{{2 | 5197 " netrw#BrowseX: (implements "x") executes a special "viewer" script or program for the {{{2 |
4967 " given filename; typically this means given their extension. | 5198 " given filename; typically this means given their extension. |
4968 " 0=local, 1=remote | 5199 " 0=local, 1=remote |
4969 fun! netrw#BrowseX(fname,remote) | 5200 fun! netrw#BrowseX(fname,remote) |
4970 " call Dfunc("netrw#BrowseX(fname<".a:fname."> remote=".a:remote.")") | 5201 " call Dfunc("netrw#BrowseX(fname<".a:fname."> remote=".a:remote.")") |
4971 | 5202 |
4972 " if its really just a directory, then do a "gf" instead | 5203 " if its really just a local directory, then do a "gf" instead |
4973 if (a:remote == 0 && isdirectory(a:fname)) || (a:remote == 1 && fname =~ '/$' && fname !~ '^https\=:') | 5204 if (a:remote == 0 && isdirectory(a:fname)) || (a:remote == 1 && a:fname =~ '/$' && a:fname !~ '^https\=:') |
4974 norm! gf | 5205 norm! gf |
4975 " call Dret("netrw#BrowseX : did gf instead") | 5206 " call Dret("(netrw#BrowseX) did gf instead") |
4976 endif | 5207 endif |
4977 | |
4978 | 5208 |
4979 let ykeep = @@ | 5209 let ykeep = @@ |
4980 let screenposn = winsaveview() | 5210 let screenposn = winsaveview() |
4981 " call Decho("saving posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>")) | 5211 " call Decho("saving posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>")) |
4982 | 5212 |
4998 if type(FncRef) == 2 | 5228 if type(FncRef) == 2 |
4999 call FncRef(a:fname) | 5229 call FncRef(a:fname) |
5000 endif | 5230 endif |
5001 endfor | 5231 endfor |
5002 endif | 5232 endif |
5003 " call Decho("restoring posn to screenposn<".string(screenposn).">,'~'.expand("<slnum>"))" | 5233 " call Decho("restoring posn: screenposn<".string(screenposn).">,'~'.expand("<slnum>"))" |
5004 call winrestview(screenposn) | 5234 call winrestview(screenposn) |
5005 let @@= ykeep | 5235 let @@= ykeep |
5006 let &aw= awkeep | 5236 let &aw= awkeep |
5007 " call Dret("netrw#BrowseX : coredump handler invoked") | 5237 " call Dret("netrw#BrowseX : coredump handler invoked") |
5008 return | 5238 return |
5012 " set up the filename | 5242 " set up the filename |
5013 " (lower case the extension, make a local copy of a remote file) | 5243 " (lower case the extension, make a local copy of a remote file) |
5014 let exten= substitute(a:fname,'.*\.\(.\{-}\)','\1','e') | 5244 let exten= substitute(a:fname,'.*\.\(.\{-}\)','\1','e') |
5015 if has("win32") || has("win95") || has("win64") || has("win16") | 5245 if has("win32") || has("win95") || has("win64") || has("win16") |
5016 let exten= substitute(exten,'^.*$','\L&\E','') | 5246 let exten= substitute(exten,'^.*$','\L&\E','') |
5247 endif | |
5248 if exten =~ "[\\/]" | |
5249 let exten= "" | |
5017 endif | 5250 endif |
5018 " call Decho("exten<".exten.">",'~'.expand("<slnum>")) | 5251 " call Decho("exten<".exten.">",'~'.expand("<slnum>")) |
5019 | 5252 |
5020 if a:remote == 1 | 5253 if a:remote == 1 |
5021 " create a local copy | 5254 " create a local copy |
5025 " attempt to rename tempfile | 5258 " attempt to rename tempfile |
5026 let basename= substitute(a:fname,'^\(.*\)/\(.*\)\.\([^.]*\)$','\2','') | 5259 let basename= substitute(a:fname,'^\(.*\)/\(.*\)\.\([^.]*\)$','\2','') |
5027 let newname = substitute(s:netrw_tmpfile,'^\(.*\)/\(.*\)\.\([^.]*\)$','\1/'.basename.'.\3','') | 5260 let newname = substitute(s:netrw_tmpfile,'^\(.*\)/\(.*\)\.\([^.]*\)$','\1/'.basename.'.\3','') |
5028 " call Decho("basename<".basename.">",'~'.expand("<slnum>")) | 5261 " call Decho("basename<".basename.">",'~'.expand("<slnum>")) |
5029 " call Decho("newname <".newname.">",'~'.expand("<slnum>")) | 5262 " call Decho("newname <".newname.">",'~'.expand("<slnum>")) |
5030 if rename(s:netrw_tmpfile,newname) == 0 | 5263 if s:netrw_tmpfile != newname && newname != "" |
5031 " renaming succeeded | 5264 if rename(s:netrw_tmpfile,newname) == 0 |
5032 let fname= newname | 5265 " renaming succeeded |
5033 else | 5266 " call Decho("renaming succeeded (tmpfile<".s:netrw_tmpfile."> to <".newname.">)") |
5034 " renaming failed | 5267 let fname= newname |
5268 else | |
5269 " renaming failed | |
5270 " call Decho("renaming failed (tmpfile<".s:netrw_tmpfile."> to <".newname.">)") | |
5271 let fname= s:netrw_tmpfile | |
5272 endif | |
5273 else | |
5035 let fname= s:netrw_tmpfile | 5274 let fname= s:netrw_tmpfile |
5036 endif | 5275 endif |
5037 else | 5276 else |
5038 " call Decho("local: a:remote=".a:remote.": handling local copy of <".a:fname.">",'~'.expand("<slnum>")) | 5277 " call Decho("local: a:remote=".a:remote.": handling local copy of <".a:fname.">",'~'.expand("<slnum>")) |
5039 let fname= a:fname | 5278 let fname= a:fname |
5096 " call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">",'~'.expand("<slnum>")) | 5335 " call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">",'~'.expand("<slnum>")) |
5097 call s:NetrwExe("sil !".viewer." ".viewopt.s:ShellEscape(fname,1).redir) | 5336 call s:NetrwExe("sil !".viewer." ".viewopt.s:ShellEscape(fname,1).redir) |
5098 let ret= v:shell_error | 5337 let ret= v:shell_error |
5099 | 5338 |
5100 elseif has("win32") || has("win64") | 5339 elseif has("win32") || has("win64") |
5101 " call Decho("windows",'~'.expand("<slnum>")) | 5340 " call Decho("win".(has("win32")? "32" : "64")",'~'.expand("<slnum>")) |
5102 if executable("start") | 5341 if executable("start") |
5103 call s:NetrwExe('sil! !start rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(fname,1)) | 5342 call s:NetrwExe('sil! !start rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(fname,1)) |
5104 elseif executable("rundll32") | 5343 elseif executable("rundll32") |
5105 call s:NetrwExe('sil! !rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(fname,1)) | 5344 call s:NetrwExe('sil! !rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(fname,1)) |
5106 else | 5345 else |
5107 call netrw#ErrorMsg(s:WARNING,"rundll32 not on path",74) | 5346 call netrw#ErrorMsg(s:WARNING,"rundll32 not on path",74) |
5108 endif | 5347 endif |
5109 call inputsave()|call input("Press <cr> to continue")|call inputrestore() | 5348 " call inputsave()|call input("Press <cr> to continue")|call inputrestore() |
5110 let ret= v:shell_error | 5349 let ret= v:shell_error |
5111 | 5350 |
5112 elseif has("win32unix") | 5351 elseif has("win32unix") |
5113 let winfname= 'c:\cygwin'.substitute(fname,'/','\\','g') | 5352 let winfname= 'c:\cygwin'.substitute(fname,'/','\\','g') |
5114 " call Decho("cygwin: winfname<".s:ShellEscape(winfname,1).">",'~'.expand("<slnum>")) | 5353 " call Decho("cygwin: winfname<".s:ShellEscape(winfname,1).">",'~'.expand("<slnum>")) |
5119 elseif executable("cygstart") | 5358 elseif executable("cygstart") |
5120 call s:NetrwExe('sil !cygstart '.s:ShellEscape(fname,1)) | 5359 call s:NetrwExe('sil !cygstart '.s:ShellEscape(fname,1)) |
5121 else | 5360 else |
5122 call netrw#ErrorMsg(s:WARNING,"rundll32 not on path",74) | 5361 call netrw#ErrorMsg(s:WARNING,"rundll32 not on path",74) |
5123 endif | 5362 endif |
5124 call inputsave()|call input("Press <cr> to continue")|call inputrestore() | 5363 " call inputsave()|call input("Press <cr> to continue")|call inputrestore() |
5125 let ret= v:shell_error | 5364 let ret= v:shell_error |
5126 | 5365 |
5127 elseif has("unix") && executable("kfmclient") && s:CheckIfKde() | 5366 elseif has("unix") && executable("kfmclient") && s:CheckIfKde() |
5128 " call Decho("unix and kfmclient",'~'.expand("<slnum>")) | 5367 " call Decho("unix and kfmclient",'~'.expand("<slnum>")) |
5129 call s:NetrwExe("sil !kfmclient exec ".s:ShellEscape(fname,1)." ".redir) | 5368 call s:NetrwExe("sil !kfmclient exec ".s:ShellEscape(fname,1)." ".redir) |
5130 let ret= v:shell_error | 5369 let ret= v:shell_error |
5131 | 5370 |
5132 elseif has("unix") && executable("exo-open") && executable("xdg-open") && executable("setsid") | 5371 elseif has("unix") && executable("exo-open") && executable("xdg-open") && executable("setsid") |
5133 " call Decho("unix, exo-open, xdg-open",'~'.expand("<slnum>")) | 5372 " call Decho("unix, exo-open, xdg-open",'~'.expand("<slnum>")) |
5134 call s:NetrwExe("sil !setsid xdg-open ".s:ShellEscape(fname,1).redir) | 5373 call s:NetrwExe("sil !setsid xdg-open ".s:ShellEscape(fname,1).redir) |
5374 let ret= v:shell_error | |
5375 | |
5376 elseif has("unix") && $DESKTOP_SESSION == "mate" && executable("atril") | |
5377 " call Decho("unix and atril",'~'.expand("<slnum>")) | |
5378 call s:NetrwExe("sil !atril ".s:ShellEscape(fname,1).redir) | |
5135 let ret= v:shell_error | 5379 let ret= v:shell_error |
5136 | 5380 |
5137 elseif has("unix") && executable("xdg-open") | 5381 elseif has("unix") && executable("xdg-open") |
5138 " call Decho("unix and xdg-open",'~'.expand("<slnum>")) | 5382 " call Decho("unix and xdg-open",'~'.expand("<slnum>")) |
5139 call s:NetrwExe("sil !xdg-open ".s:ShellEscape(fname,1).redir) | 5383 call s:NetrwExe("sil !xdg-open ".s:ShellEscape(fname,1).redir) |
5182 | 5426 |
5183 " call Dret("netrw#BrowseX") | 5427 " call Dret("netrw#BrowseX") |
5184 endfun | 5428 endfun |
5185 | 5429 |
5186 " --------------------------------------------------------------------- | 5430 " --------------------------------------------------------------------- |
5431 " netrw#GX: gets word under cursor for gx support {{{2 | |
5432 " See also: netrw#BrowseXVis | |
5433 " netrw#BrowseX | |
5434 fun! netrw#GX() | |
5435 " call Dfunc("netrw#GX()") | |
5436 if &ft == "netrw" | |
5437 let fname= s:NetrwGetWord() | |
5438 else | |
5439 let fname= expand((exists("g:netrw_gx")? g:netrw_gx : '<cfile>')) | |
5440 endif | |
5441 " call Dret("netrw#GX <".fname.">") | |
5442 return fname | |
5443 endfun | |
5444 | |
5445 " --------------------------------------------------------------------- | |
5187 " netrw#BrowseXVis: used by gx in visual mode to select a file for browsing {{{2 | 5446 " netrw#BrowseXVis: used by gx in visual mode to select a file for browsing {{{2 |
5188 fun! netrw#BrowseXVis() | 5447 fun! netrw#BrowseXVis() |
5189 " call Dfunc("netrw#BrowseXVis()") | 5448 " call Dfunc("netrw#BrowseXVis()") |
5190 let atkeep = @@ | 5449 let atkeep = @@ |
5191 norm! gvy | 5450 norm! gvy |
5192 " call Decho("@@<".@@.">",'~'.expand("<slnum>")) | 5451 " call Decho("@@<".@@.">",'~'.expand("<slnum>")) |
5193 call netrw#BrowseX(@@,netrw#CheckIfRemote()) | 5452 call netrw#BrowseX(@@,netrw#CheckIfRemote(@@)) |
5194 let @@ = atkeep | 5453 let @@ = atkeep |
5195 " call Dret("netrw#BrowseXVis") | 5454 " call Dret("netrw#BrowseXVis") |
5196 endfun | 5455 endfun |
5197 | 5456 |
5198 " --------------------------------------------------------------------- | 5457 " --------------------------------------------------------------------- |
5458 " s:NetrwBufRename: renames a buffer without the side effect of retaining an unlisted buffer having the old name {{{2 | |
5459 " Using the file command on a "[No Name]" buffer does not seem to cause the old "[No Name]" buffer | |
5460 " to become an unlisted buffer, so in that case don't bwipe it. | |
5461 fun! s:NetrwBufRename(newname) | |
5462 " call Dfunc("s:NetrwBufRename(newname<".a:newname.">) buf(%)#".bufnr("%")."<".bufname(bufnr("%")).">") | |
5463 " call Dredir("ls!","s:NetrwBufRename (before rename)") | |
5464 let oldbufname= bufname(bufnr("%")) | |
5465 " call Decho("buf#".bufnr("%").": oldbufname<".oldbufname.">",'~'.expand("<slnum>")) | |
5466 | |
5467 if oldbufname != a:newname | |
5468 " call Decho("do buffer rename: oldbufname<".oldbufname."> ≠ a:newname<".a:newname.">",'~'.expand("<slnum>")) | |
5469 let b:junk= 1 | |
5470 " call Decho("rename buffer: sil! keepj keepalt file ".fnameescape(a:newname),'~'.expand("<slnum>")) | |
5471 exe 'sil! keepj keepalt file '.fnameescape(a:newname) | |
5472 " call Dredir("ls!","s:NetrwBufRename (before bwipe)") | |
5473 let oldbufnr= bufnr(oldbufname) | |
5474 " call Decho("oldbufname<".oldbufname."> oldbufnr#".oldbufnr,'~'.expand("<slnum>")) | |
5475 " call Decho("bufnr(%)=".bufnr("%"),'~'.expand("<slnum>")) | |
5476 if oldbufname != "" && oldbufnr != -1 && oldbufnr != bufnr("%") | |
5477 " call Decho("bwipe ".oldbufnr,'~'.expand("<slnum>")) | |
5478 exe "bwipe! ".oldbufnr | |
5479 " else " Decho | |
5480 " call Decho("did *not* bwipe buf#".oldbufnr,'~'.expand("<slnum>")) | |
5481 endif | |
5482 " call Dredir("ls!","s:NetrwBufRename (after rename)") | |
5483 " else " Decho | |
5484 " call Decho("oldbufname<".oldbufname."> == a:newname: did *not* rename",'~'.expand("<slnum>")) | |
5485 endif | |
5486 | |
5487 " call Dret("s:NetrwBufRename : buf#".bufnr("%").": oldname<".oldbufname."> newname<".a:newname."> expand(%)<".expand("%").">") | |
5488 endfun | |
5489 | |
5490 " --------------------------------------------------------------------- | |
5199 " netrw#CheckIfRemote: returns 1 if current file looks like an url, 0 else {{{2 | 5491 " netrw#CheckIfRemote: returns 1 if current file looks like an url, 0 else {{{2 |
5200 fun! netrw#CheckIfRemote() | 5492 fun! netrw#CheckIfRemote(...) |
5201 " call Dfunc("netrw#CheckIfRemote()") | 5493 " call Dfunc("netrw#CheckIfRemote() a:0=".a:0) |
5202 if expand("%") =~ '^\a\{3,}://' | 5494 if a:0 > 0 |
5495 let curfile= a:1 | |
5496 else | |
5497 let curfile= expand("%") | |
5498 endif | |
5499 " call Decho("curfile<".curfile.">") | |
5500 if curfile =~ '^\a\{3,}://' | |
5203 " call Dret("netrw#CheckIfRemote 1") | 5501 " call Dret("netrw#CheckIfRemote 1") |
5204 return 1 | 5502 return 1 |
5205 else | 5503 else |
5206 " call Dret("netrw#CheckIfRemote 0") | 5504 " call Dret("netrw#CheckIfRemote 0") |
5207 return 0 | 5505 return 0 |
5463 " s:NetrwHidden: invoked by "gh" {{{2 | 5761 " s:NetrwHidden: invoked by "gh" {{{2 |
5464 fun! s:NetrwHidden(islocal) | 5762 fun! s:NetrwHidden(islocal) |
5465 " call Dfunc("s:NetrwHidden()") | 5763 " call Dfunc("s:NetrwHidden()") |
5466 let ykeep= @@ | 5764 let ykeep= @@ |
5467 " save current position | 5765 " save current position |
5468 let svpos= winsaveview() | 5766 let svpos = winsaveview() |
5469 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) | 5767 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) |
5470 | 5768 |
5471 if g:netrw_list_hide =~ '\(^\|,\)\\(^\\|\\s\\s\\)\\zs\\.\\S\\+' | 5769 if g:netrw_list_hide =~ '\(^\|,\)\\(^\\|\\s\\s\\)\\zs\\.\\S\\+' |
5472 " remove pattern from hiding list | 5770 " remove .file pattern from hiding list |
5771 " call Decho("remove .file pattern from hiding list",'~'.expand("<slnum>")) | |
5473 let g:netrw_list_hide= substitute(g:netrw_list_hide,'\(^\|,\)\\(^\\|\\s\\s\\)\\zs\\.\\S\\+','','') | 5772 let g:netrw_list_hide= substitute(g:netrw_list_hide,'\(^\|,\)\\(^\\|\\s\\s\\)\\zs\\.\\S\\+','','') |
5474 elseif s:Strlen(g:netrw_list_hide) >= 1 | 5773 elseif s:Strlen(g:netrw_list_hide) >= 1 |
5774 " call Decho("add .file pattern from hiding list",'~'.expand("<slnum>")) | |
5475 let g:netrw_list_hide= g:netrw_list_hide . ',\(^\|\s\s\)\zs\.\S\+' | 5775 let g:netrw_list_hide= g:netrw_list_hide . ',\(^\|\s\s\)\zs\.\S\+' |
5476 else | 5776 else |
5777 " call Decho("set .file pattern as hiding list",'~'.expand("<slnum>")) | |
5477 let g:netrw_list_hide= '\(^\|\s\s\)\zs\.\S\+' | 5778 let g:netrw_list_hide= '\(^\|\s\s\)\zs\.\S\+' |
5779 endif | |
5780 if g:netrw_list_hide =~ '^,' | |
5781 let g:netrw_list_hide= strpart(g:netrw_list_hide,1) | |
5478 endif | 5782 endif |
5479 | 5783 |
5480 " refresh screen and return to saved position | 5784 " refresh screen and return to saved position |
5481 NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) | 5785 NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) |
5482 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) | 5786 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) |
5487 | 5791 |
5488 " --------------------------------------------------------------------- | 5792 " --------------------------------------------------------------------- |
5489 " s:NetrwHome: this function determines a "home" for saving bookmarks and history {{{2 | 5793 " s:NetrwHome: this function determines a "home" for saving bookmarks and history {{{2 |
5490 fun! s:NetrwHome() | 5794 fun! s:NetrwHome() |
5491 if exists("g:netrw_home") | 5795 if exists("g:netrw_home") |
5492 let home= g:netrw_home | 5796 let home= expand(g:netrw_home) |
5493 else | 5797 else |
5494 " go to vim plugin home | 5798 " go to vim plugin home |
5495 for home in split(&rtp,',') + [''] | 5799 for home in split(&rtp,',') + [''] |
5496 if isdirectory(s:NetrwFile(home)) && filewritable(s:NetrwFile(home)) | break | endif | 5800 if isdirectory(s:NetrwFile(home)) && filewritable(s:NetrwFile(home)) | break | endif |
5497 let basehome= substitute(home,'[/\\]\.vim$','','') | 5801 let basehome= substitute(home,'[/\\]\.vim$','','') |
5508 let home= substitute(home,'/','\\','g') | 5812 let home= substitute(home,'/','\\','g') |
5509 endif | 5813 endif |
5510 endif | 5814 endif |
5511 " insure that the home directory exists | 5815 " insure that the home directory exists |
5512 if g:netrw_dirhistmax > 0 && !isdirectory(s:NetrwFile(home)) | 5816 if g:netrw_dirhistmax > 0 && !isdirectory(s:NetrwFile(home)) |
5817 " call Decho("insure that the home<".home."> directory exists") | |
5513 if exists("g:netrw_mkdir") | 5818 if exists("g:netrw_mkdir") |
5819 " call Decho("call system(".g:netrw_mkdir." ".s:ShellEscape(s:NetrwFile(home)).")") | |
5514 call system(g:netrw_mkdir." ".s:ShellEscape(s:NetrwFile(home))) | 5820 call system(g:netrw_mkdir." ".s:ShellEscape(s:NetrwFile(home))) |
5515 else | 5821 else |
5822 " call Decho("mkdir(".home.")") | |
5516 call mkdir(home) | 5823 call mkdir(home) |
5517 endif | 5824 endif |
5518 endif | 5825 endif |
5519 let g:netrw_home= home | 5826 let g:netrw_home= home |
5520 return home | 5827 return home |
5522 | 5829 |
5523 " --------------------------------------------------------------------- | 5830 " --------------------------------------------------------------------- |
5524 " s:NetrwLeftmouse: handles the <leftmouse> when in a netrw browsing window {{{2 | 5831 " s:NetrwLeftmouse: handles the <leftmouse> when in a netrw browsing window {{{2 |
5525 fun! s:NetrwLeftmouse(islocal) | 5832 fun! s:NetrwLeftmouse(islocal) |
5526 if exists("s:netrwdrag") | 5833 if exists("s:netrwdrag") |
5834 return | |
5835 endif | |
5836 if &ft != "netrw" | |
5527 return | 5837 return |
5528 endif | 5838 endif |
5529 " call Dfunc("s:NetrwLeftmouse(islocal=".a:islocal.")") | 5839 " call Dfunc("s:NetrwLeftmouse(islocal=".a:islocal.")") |
5530 | 5840 |
5531 let ykeep= @@ | 5841 let ykeep= @@ |
5571 endfun | 5881 endfun |
5572 | 5882 |
5573 " --------------------------------------------------------------------- | 5883 " --------------------------------------------------------------------- |
5574 " s:NetrwCLeftmouse: used to select a file/directory for a target {{{2 | 5884 " s:NetrwCLeftmouse: used to select a file/directory for a target {{{2 |
5575 fun! s:NetrwCLeftmouse(islocal) | 5885 fun! s:NetrwCLeftmouse(islocal) |
5886 if &ft != "netrw" | |
5887 return | |
5888 endif | |
5576 " call Dfunc("s:NetrwCLeftmouse(islocal=".a:islocal.")") | 5889 " call Dfunc("s:NetrwCLeftmouse(islocal=".a:islocal.")") |
5577 call s:NetrwMarkFileTgt(a:islocal) | 5890 call s:NetrwMarkFileTgt(a:islocal) |
5578 " call Dret("s:NetrwCLeftmouse") | 5891 " call Dret("s:NetrwCLeftmouse") |
5579 endfun | 5892 endfun |
5580 | 5893 |
5581 " --------------------------------------------------------------------- | 5894 " --------------------------------------------------------------------- |
5582 " s:NetrwServerEdit: edit file in a server gvim, usually NETRWSERVER (implements <c-r>){{{2 | 5895 " s:NetrwServerEdit: edit file in a server gvim, usually NETRWSERVER (implements <c-r>){{{2 |
5583 " a:islocal=0 : <c-r> not used, remote | 5896 " a:islocal=0 : <c-r> not used, remote |
5584 " a:islocal=1 : <c-r> no used, local | 5897 " a:islocal=1 : <c-r> not used, local |
5585 " a:islocal=2 : <c-r> used, remote | 5898 " a:islocal=2 : <c-r> used, remote |
5586 " a:islocal=3 : <c-r> used, local | 5899 " a:islocal=3 : <c-r> used, local |
5587 fun! s:NetrwServerEdit(islocal,fname) | 5900 fun! s:NetrwServerEdit(islocal,fname) |
5588 " call Dfunc("s:NetrwServerEdit(islocal=".a:islocal.",fname<".a:fname.">)") | 5901 " call Dfunc("s:NetrwServerEdit(islocal=".a:islocal.",fname<".a:fname.">)") |
5589 let islocal = a:islocal%2 " =0: remote =1: local | 5902 let islocal = a:islocal%2 " =0: remote =1: local |
5704 endfun | 6017 endfun |
5705 | 6018 |
5706 " --------------------------------------------------------------------- | 6019 " --------------------------------------------------------------------- |
5707 " s:NetrwSLeftmouse: marks the file under the cursor. May be dragged to select additional files {{{2 | 6020 " s:NetrwSLeftmouse: marks the file under the cursor. May be dragged to select additional files {{{2 |
5708 fun! s:NetrwSLeftmouse(islocal) | 6021 fun! s:NetrwSLeftmouse(islocal) |
6022 if &ft != "netrw" | |
6023 return | |
6024 endif | |
5709 " call Dfunc("s:NetrwSLeftmouse(islocal=".a:islocal.")") | 6025 " call Dfunc("s:NetrwSLeftmouse(islocal=".a:islocal.")") |
5710 | 6026 |
5711 let s:ngw= s:NetrwGetWord() | 6027 let s:ngw= s:NetrwGetWord() |
5712 call s:NetrwMarkFile(a:islocal,s:ngw) | 6028 call s:NetrwMarkFile(a:islocal,s:ngw) |
5713 | 6029 |
5756 " --------------------------------------------------------------------- | 6072 " --------------------------------------------------------------------- |
5757 " s:NetrwListHide: uses [range]g~...~d to delete files that match comma {{{2 | 6073 " s:NetrwListHide: uses [range]g~...~d to delete files that match comma {{{2 |
5758 " separated patterns given in g:netrw_list_hide | 6074 " separated patterns given in g:netrw_list_hide |
5759 fun! s:NetrwListHide() | 6075 fun! s:NetrwListHide() |
5760 " call Dfunc("s:NetrwListHide() g:netrw_hide=".g:netrw_hide." g:netrw_list_hide<".g:netrw_list_hide.">") | 6076 " call Dfunc("s:NetrwListHide() g:netrw_hide=".g:netrw_hide." g:netrw_list_hide<".g:netrw_list_hide.">") |
6077 " call Decho("initial: ".string(getline(w:netrw_bannercnt,'$'))) | |
5761 let ykeep= @@ | 6078 let ykeep= @@ |
6079 " call DechoBuf(bufnr("%"),"COMBAK#3") | |
5762 | 6080 |
5763 " find a character not in the "hide" string to use as a separator for :g and :v commands | 6081 " find a character not in the "hide" string to use as a separator for :g and :v commands |
5764 " How-it-works: take the hiding command, convert it into a range. Duplicate | 6082 " How-it-works: take the hiding command, convert it into a range. |
5765 " characters don't matter. Remove all such characters from the '/~...90' | 6083 " Duplicate characters don't matter. |
5766 " string. Use the first character left as a separator character. | 6084 " Remove all such characters from the '/~@#...890' string. |
6085 " Use the first character left as a separator character. | |
6086 " call Decho("find a character not in the hide string to use as a separator") | |
5767 let listhide= g:netrw_list_hide | 6087 let listhide= g:netrw_list_hide |
5768 let sep = strpart(substitute('/~@#$%^&*{};:,<.>?|1234567890','['.escape(listhide,'-]^\').']','','ge'),1,1) | 6088 let sep = strpart(substitute('/~@#$%^&*{};:,<.>?|1234567890','['.escape(listhide,'-]^\').']','','ge'),1,1) |
5769 " call Decho("sep=".sep,'~'.expand("<slnum>")) | 6089 " call Decho("sep=".sep,'~'.expand("<slnum>")) |
5770 | 6090 |
5771 while listhide != "" | 6091 while listhide != "" |
5774 let listhide = substitute(listhide,'^.\{-},\(.*\)$','\1','e') | 6094 let listhide = substitute(listhide,'^.\{-},\(.*\)$','\1','e') |
5775 else | 6095 else |
5776 let hide = listhide | 6096 let hide = listhide |
5777 let listhide = "" | 6097 let listhide = "" |
5778 endif | 6098 endif |
6099 " call Decho("hide<".hide."> listhide<".listhide.'>','~'.expand("<slnum>")) | |
5779 | 6100 |
5780 " Prune the list by hiding any files which match | 6101 " Prune the list by hiding any files which match |
6102 " call Decho("prune the list by hiding any files which ",((g:netrw_hide == 1)? "" : "don't")." match hide<".hide.">") | |
5781 if g:netrw_hide == 1 | 6103 if g:netrw_hide == 1 |
5782 " call Decho("hiding<".hide."> listhide<".listhide.">",'~'.expand("<slnum>")) | 6104 " call Decho("..hiding<".hide.">",'~'.expand("<slnum>")) |
5783 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'d' | 6105 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'d' |
5784 elseif g:netrw_hide == 2 | 6106 elseif g:netrw_hide == 2 |
5785 " call Decho("showing<".hide."> listhide<".listhide.">",'~'.expand("<slnum>")) | 6107 " call Decho("..showing<".hide.">",'~'.expand("<slnum>")) |
5786 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'s@^@ /-KEEP-/ @' | 6108 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'s@^@ /-KEEP-/ @' |
5787 endif | 6109 endif |
6110 " call Decho("..result: ".string(getline(w:netrw_bannercnt,'$')),'~'.expand("<slnum>")) | |
5788 endwhile | 6111 endwhile |
6112 | |
5789 if g:netrw_hide == 2 | 6113 if g:netrw_hide == 2 |
5790 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$v@^ /-KEEP-/ @d' | 6114 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$v@^ /-KEEP-/ @d' |
6115 " call Decho("..v KEEP: ".string(getline(w:netrw_bannercnt,'$')),'~'.expand("<slnum>")) | |
5791 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$s@^\%( /-KEEP-/ \)\+@@e' | 6116 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$s@^\%( /-KEEP-/ \)\+@@e' |
6117 " call Decho("..g KEEP: ".string(getline(w:netrw_bannercnt,'$')),'~'.expand("<slnum>")) | |
5792 endif | 6118 endif |
5793 | 6119 |
5794 " remove any blank lines that have somehow remained. | 6120 " remove any blank lines that have somehow remained. |
5795 " This seems to happen under Windows. | 6121 " This seems to happen under Windows. |
5796 exe 'sil! NetrwKeepj 1,$g@^\s*$@d' | 6122 exe 'sil! NetrwKeepj 1,$g@^\s*$@d' |
6123 " call DechoBuf(bufnr("%"),"COMBAK#4") | |
5797 | 6124 |
5798 let @@= ykeep | 6125 let @@= ykeep |
5799 " call Dret("s:NetrwListHide") | 6126 " call Dret("s:NetrwListHide") |
5800 endfun | 6127 endfun |
5801 | 6128 |
5852 else | 6179 else |
5853 call mkdir(fullnewdir,"p") | 6180 call mkdir(fullnewdir,"p") |
5854 endif | 6181 endif |
5855 else | 6182 else |
5856 let netrw_origdir= s:NetrwGetcwd(1) | 6183 let netrw_origdir= s:NetrwGetcwd(1) |
5857 call s:NetrwLcd(b:netrw_curdir) | 6184 if s:NetrwLcd(b:netrw_curdir) |
6185 " call Dret("s:NetrwMakeDir : lcd failure") | |
6186 return | |
6187 endif | |
5858 " call Decho("netrw_origdir<".netrw_origdir.">: lcd b:netrw_curdir<".fnameescape(b:netrw_curdir).">",'~'.expand("<slnum>")) | 6188 " call Decho("netrw_origdir<".netrw_origdir.">: lcd b:netrw_curdir<".fnameescape(b:netrw_curdir).">",'~'.expand("<slnum>")) |
5859 call s:NetrwExe("sil! !".g:netrw_localmkdir.' '.s:ShellEscape(newdirname,1)) | 6189 call s:NetrwExe("sil! !".g:netrw_localmkdir.g:netrw_localmkdiropt.' '.s:ShellEscape(newdirname,1)) |
5860 if v:shell_error != 0 | 6190 if v:shell_error != 0 |
5861 let @@= ykeep | 6191 let @@= ykeep |
5862 call netrw#ErrorMsg(s:ERROR,"consider setting g:netrw_localmkdir<".g:netrw_localmkdir."> to something that works",80) | 6192 call netrw#ErrorMsg(s:ERROR,"consider setting g:netrw_localmkdir<".g:netrw_localmkdir."> to something that works",80) |
5863 " call Dret("s:NetrwMakeDir : failed: sil! !".g:netrw_localmkdir.' '.s:ShellEscape(newdirname,1)) | 6193 " call Dret("s:NetrwMakeDir : failed: sil! !".g:netrw_localmkdir.' '.s:ShellEscape(newdirname,1)) |
5864 return | 6194 return |
5865 endif | 6195 endif |
5866 if !g:netrw_keepdir | 6196 if !g:netrw_keepdir |
5867 " call Decho("restoring netrw_origdir since g:netrw_keepdir=".g:netrw_keepdir,'~'.expand("<slnum>")) | 6197 " call Decho("restoring netrw_origdir since g:netrw_keepdir=".g:netrw_keepdir,'~'.expand("<slnum>")) |
5868 call s:NetrwLcd(netrw_origdir) | 6198 if s:NetrwLcd(netrw_origdir) |
6199 " call Dret("s:NetrwBrowse : lcd failure") | |
6200 return | |
6201 endif | |
5869 endif | 6202 endif |
5870 endif | 6203 endif |
5871 | 6204 |
5872 if v:shell_error == 0 | 6205 if v:shell_error == 0 |
5873 " refresh listing | 6206 " refresh listing |
5975 " --------------------------------------------------------------------- | 6308 " --------------------------------------------------------------------- |
5976 " s:NetrwMaps: {{{2 | 6309 " s:NetrwMaps: {{{2 |
5977 fun! s:NetrwMaps(islocal) | 6310 fun! s:NetrwMaps(islocal) |
5978 " call Dfunc("s:NetrwMaps(islocal=".a:islocal.") b:netrw_curdir<".b:netrw_curdir.">") | 6311 " call Dfunc("s:NetrwMaps(islocal=".a:islocal.") b:netrw_curdir<".b:netrw_curdir.">") |
5979 | 6312 |
6313 " mouse <Plug> maps: {{{3 | |
5980 if g:netrw_mousemaps && g:netrw_retmap | 6314 if g:netrw_mousemaps && g:netrw_retmap |
5981 " call Decho("set up Rexplore 2-leftmouse",'~'.expand("<slnum>")) | 6315 " call Decho("set up Rexplore 2-leftmouse",'~'.expand("<slnum>")) |
5982 if !hasmapto("<Plug>NetrwReturn") | 6316 if !hasmapto("<Plug>NetrwReturn") |
5983 if maparg("<2-leftmouse>","n") == "" || maparg("<2-leftmouse>","n") =~ '^-$' | 6317 if maparg("<2-leftmouse>","n") == "" || maparg("<2-leftmouse>","n") =~ '^-$' |
5984 " call Decho("making map for 2-leftmouse",'~'.expand("<slnum>")) | 6318 " call Decho("making map for 2-leftmouse",'~'.expand("<slnum>")) |
5990 endif | 6324 endif |
5991 nno <silent> <Plug>NetrwReturn :Rexplore<cr> | 6325 nno <silent> <Plug>NetrwReturn :Rexplore<cr> |
5992 " call Decho("made <Plug>NetrwReturn map",'~'.expand("<slnum>")) | 6326 " call Decho("made <Plug>NetrwReturn map",'~'.expand("<slnum>")) |
5993 endif | 6327 endif |
5994 | 6328 |
6329 " generate default <Plug> maps {{{3 | |
6330 if !hasmapto('<Plug>NetrwHide') |nmap <buffer> <silent> <nowait> a <Plug>NetrwHide_a|endif | |
6331 if !hasmapto('<Plug>NetrwBrowseUpDir') |nmap <buffer> <silent> <nowait> - <Plug>NetrwBrowseUpDir |endif | |
6332 if !hasmapto('<Plug>NetrwOpenFile') |nmap <buffer> <silent> <nowait> % <Plug>NetrwOpenFile|endif | |
6333 if !hasmapto('<Plug>NetrwBadd_cb') |nmap <buffer> <silent> <nowait> cb <Plug>NetrwBadd_cb|endif | |
6334 if !hasmapto('<Plug>NetrwBadd_cB') |nmap <buffer> <silent> <nowait> cB <Plug>NetrwBadd_cB|endif | |
6335 if !hasmapto('<Plug>NetrwLcd') |nmap <buffer> <silent> <nowait> cd <Plug>NetrwLcd|endif | |
6336 if !hasmapto('<Plug>NetrwSetChgwin') |nmap <buffer> <silent> <nowait> C <Plug>NetrwSetChgwin|endif | |
6337 if !hasmapto('<Plug>NetrwRefresh') |nmap <buffer> <silent> <nowait> <c-l> <Plug>NetrwRefresh|endif | |
6338 if !hasmapto('<Plug>NetrwLocalBrowseCheck') |nmap <buffer> <silent> <nowait> <cr> <Plug>NetrwLocalBrowseCheck|endif | |
6339 if !hasmapto('<Plug>NetrwServerEdit') |nmap <buffer> <silent> <nowait> <c-r> <Plug>NetrwServerEdit|endif | |
6340 if !hasmapto('<Plug>NetrwMakeDir') |nmap <buffer> <silent> <nowait> d <Plug>NetrwMakeDir|endif | |
6341 if !hasmapto('<Plug>NetrwBookHistHandler_gb')|nmap <buffer> <silent> <nowait> gb <Plug>NetrwBookHistHandler_gb|endif | |
6342 " --------------------------------------------------------------------- | |
6343 " if !hasmapto('<Plug>NetrwForceChgDir') |nmap <buffer> <silent> <nowait> gd <Plug>NetrwForceChgDir|endif | |
6344 " if !hasmapto('<Plug>NetrwForceFile') |nmap <buffer> <silent> <nowait> gf <Plug>NetrwForceFile|endif | |
6345 " if !hasmapto('<Plug>NetrwHidden') |nmap <buffer> <silent> <nowait> gh <Plug>NetrwHidden|endif | |
6346 " if !hasmapto('<Plug>NetrwSetTreetop') |nmap <buffer> <silent> <nowait> gn <Plug>NetrwSetTreetop|endif | |
6347 " if !hasmapto('<Plug>NetrwChgPerm') |nmap <buffer> <silent> <nowait> gp <Plug>NetrwChgPerm|endif | |
6348 " if !hasmapto('<Plug>NetrwBannerCtrl') |nmap <buffer> <silent> <nowait> I <Plug>NetrwBannerCtrl|endif | |
6349 " if !hasmapto('<Plug>NetrwListStyle') |nmap <buffer> <silent> <nowait> i <Plug>NetrwListStyle|endif | |
6350 " if !hasmapto('<Plug>NetrwMarkMoveMF2Arglist')|nmap <buffer> <silent> <nowait> ma <Plug>NetrwMarkMoveMF2Arglist|endif | |
6351 " if !hasmapto('<Plug>NetrwMarkMoveArglist2MF')|nmap <buffer> <silent> <nowait> mA <Plug>NetrwMarkMoveArglist2MF|endif | |
6352 " if !hasmapto('<Plug>NetrwBookHistHandler_mA')|nmap <buffer> <silent> <nowait> mb <Plug>NetrwBookHistHandler_mA|endif | |
6353 " if !hasmapto('<Plug>NetrwBookHistHandler_mB')|nmap <buffer> <silent> <nowait> mB <Plug>NetrwBookHistHandler_mB|endif | |
6354 " if !hasmapto('<Plug>NetrwMarkFileCopy') |nmap <buffer> <silent> <nowait> mc <Plug>NetrwMarkFileCopy|endif | |
6355 " if !hasmapto('<Plug>NetrwMarkFileDiff') |nmap <buffer> <silent> <nowait> md <Plug>NetrwMarkFileDiff|endif | |
6356 " if !hasmapto('<Plug>NetrwMarkFileEdit') |nmap <buffer> <silent> <nowait> me <Plug>NetrwMarkFileEdit|endif | |
6357 " if !hasmapto('<Plug>NetrwMarkFile') |nmap <buffer> <silent> <nowait> mf <Plug>NetrwMarkFile|endif | |
6358 " if !hasmapto('<Plug>NetrwUnmarkList') |nmap <buffer> <silent> <nowait> mF <Plug>NetrwUnmarkList|endif | |
6359 " if !hasmapto('<Plug>NetrwMarkFileGrep') |nmap <buffer> <silent> <nowait> mg <Plug>NetrwMarkFileGrep|endif | |
6360 " if !hasmapto('<Plug>NetrwMarkHideSfx') |nmap <buffer> <silent> <nowait> mh <Plug>NetrwMarkHideSfx|endif | |
6361 " if !hasmapto('<Plug>NetrwMarkFileMove') |nmap <buffer> <silent> <nowait> mm <Plug>NetrwMarkFileMove|endif | |
6362 " if !hasmapto('<Plug>NetrwMarkFilePrint') |nmap <buffer> <silent> <nowait> mp <Plug>NetrwMarkFilePrint|endif | |
6363 " if !hasmapto('<Plug>NetrwMarkFileRegexp') |nmap <buffer> <silent> <nowait> mr <Plug>NetrwMarkFileRegexp|endif | |
6364 " if !hasmapto('<Plug>NetrwMarkFileSource') |nmap <buffer> <silent> <nowait> ms <Plug>NetrwMarkFileSource|endif | |
6365 " if !hasmapto('<Plug>NetrwMarkFileTag') |nmap <buffer> <silent> <nowait> mT <Plug>NetrwMarkFileTag|endif | |
6366 " if !hasmapto('<Plug>NetrwMarkFileTgt') |nmap <buffer> <silent> <nowait> mt <Plug>NetrwMarkFileTgt|endif | |
6367 " if !hasmapto('<Plug>NetrwUnMarkFile') |nmap <buffer> <silent> <nowait> mu <Plug>NetrwUnMarkFile|endif | |
6368 " if !hasmapto('<Plug>NetrwMarkFileVimCmd') |nmap <buffer> <silent> <nowait> mv <Plug>NetrwMarkFileVimCmd|endif | |
6369 " if !hasmapto('<Plug>NetrwMarkFileExe_mx') |nmap <buffer> <silent> <nowait> mx <Plug>NetrwMarkFileExe_mx|endif | |
6370 " if !hasmapto('<Plug>NetrwMarkFileExe_mX') |nmap <buffer> <silent> <nowait> mX <Plug>NetrwMarkFileExe_mX|endif | |
6371 " if !hasmapto('<Plug>NetrwMarkFileCompress') |nmap <buffer> <silent> <nowait> mz <Plug>NetrwMarkFileCompress|endif | |
6372 " if !hasmapto('<Plug>NetrwObtain') |nmap <buffer> <silent> <nowait> O <Plug>NetrwObtain|endif | |
6373 " if !hasmapto('<Plug>NetrwSplit_o') |nmap <buffer> <silent> <nowait> o <Plug>NetrwSplit_o|endif | |
6374 " if !hasmapto('<Plug>NetrwPreview') |nmap <buffer> <silent> <nowait> p <Plug>NetrwPreview|endif | |
6375 " if !hasmapto('<Plug>NetrwPrevWinOpen') |nmap <buffer> <silent> <nowait> P <Plug>NetrwPrevWinOpen|endif | |
6376 " if !hasmapto('<Plug>NetrwBookHistHandler_qb')|nmap <buffer> <silent> <nowait> qb <Plug>NetrwBookHistHandler_qb|endif | |
6377 " if !hasmapto('<Plug>NetrwFileInfo') |nmap <buffer> <silent> <nowait> qf <Plug>NetrwFileInfo|endif | |
6378 " if !hasmapto('<Plug>NetrwMarkFileQFEL_qF') |nmap <buffer> <silent> <nowait> qF <Plug>NetrwMarkFileQFEL_qF|endif | |
6379 " if !hasmapto('<Plug>NetrwMarkFileQFEL_qL') |nmap <buffer> <silent> <nowait> qL <Plug>NetrwMarkFileQFEL_qL|endif | |
6380 " if !hasmapto('<Plug>NetrwSortStyle') |nmap <buffer> <silent> <nowait> s <Plug>NetrwSortStyle|endif | |
6381 " if !hasmapto('<Plug>NetSortSequence') |nmap <buffer> <silent> <nowait> S <Plug>NetSortSequence|endif | |
6382 " if !hasmapto('<Plug>NetrwSetTgt_Tb') |nmap <buffer> <silent> <nowait> Tb <Plug>NetrwSetTgt_Tb|endif | |
6383 " if !hasmapto('<Plug>NetrwSetTgt_Th') |nmap <buffer> <silent> <nowait> Th <Plug>NetrwSetTgt_Th|endif | |
6384 " if !hasmapto('<Plug>NetrwSplit_t') |nmap <buffer> <silent> <nowait> t <Plug>NetrwSplit_t|endif | |
6385 " if !hasmapto('<Plug>NetrwBookHistHandler_u') |nmap <buffer> <silent> <nowait> u <Plug>NetrwBookHistHandler_u|endif | |
6386 " if !hasmapto('<Plug>NetrwBookHistHandler_U') |nmap <buffer> <silent> <nowait> U <Plug>NetrwBookHistHandler_U|endif | |
6387 " if !hasmapto('<Plug>NetrwSplit_v') |nmap <buffer> <silent> <nowait> v <Plug>NetrwSplit_v|endif | |
6388 " if !hasmapto('<Plug>NetrwBrowseX') |nmap <buffer> <silent> <nowait> x <Plug>NetrwBrowseX|endif | |
6389 " if !hasmapto('<Plug>NetrwLocalExecute') |nmap <buffer> <silent> <nowait> X <Plug>NetrwLocalExecute|endif | |
6390 | |
5995 if a:islocal | 6391 if a:islocal |
5996 " call Decho("make local maps",'~'.expand("<slnum>")) | 6392 " call Decho("make local maps",'~'.expand("<slnum>")) |
5997 " local normal-mode maps | 6393 " local normal-mode maps {{{3 |
5998 nnoremap <buffer> <silent> <nowait> a :<c-u>call <SID>NetrwHide(1)<cr> | 6394 nnoremap <buffer> <silent> <Plug>NetrwHide_a :<c-u>call <SID>NetrwHide(1)<cr> |
5999 nnoremap <buffer> <silent> <nowait> - :<c-u>call <SID>NetrwBrowseUpDir(1)<cr> | 6395 nnoremap <buffer> <silent> <Plug>NetrwBrowseUpDir :<c-u>call <SID>NetrwBrowseUpDir(1)<cr> |
6000 nnoremap <buffer> <silent> <nowait> % :<c-u>call <SID>NetrwOpenFile(1)<cr> | 6396 nnoremap <buffer> <silent> <Plug>NetrwOpenFile :<c-u>call <SID>NetrwOpenFile(1)<cr> |
6001 nnoremap <buffer> <silent> <nowait> c :<c-u>call <SID>NetrwLcd(b:netrw_curdir)<cr> | 6397 nnoremap <buffer> <silent> <Plug>NetrwBadd_cb :<c-u>call <SID>NetrwBadd(1,0)<cr> |
6002 nnoremap <buffer> <silent> <nowait> C :<c-u>call <SID>NetrwSetChgwin()<cr> | 6398 nnoremap <buffer> <silent> <Plug>NetrwBadd_cB :<c-u>call <SID>NetrwBadd(1,1)<cr> |
6003 nnoremap <buffer> <silent> <nowait> <cr> :<c-u>call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord()))<cr> | 6399 nnoremap <buffer> <silent> <Plug>NetrwLcd :<c-u>call <SID>NetrwLcd(b:netrw_curdir)<cr> |
6004 nnoremap <buffer> <silent> <nowait> <c-r> :<c-u>call <SID>NetrwServerEdit(3,<SID>NetrwGetWord())<cr> | 6400 nnoremap <buffer> <silent> <Plug>NetrwSetChgwin :<c-u>call <SID>NetrwSetChgwin()<cr> |
6005 nnoremap <buffer> <silent> <nowait> d :<c-u>call <SID>NetrwMakeDir("")<cr> | 6401 nnoremap <buffer> <silent> <Plug>NetrwLocalBrowseCheck :<c-u>call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord()))<cr> |
6006 nnoremap <buffer> <silent> <nowait> gb :<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_curdir)<cr> | 6402 nnoremap <buffer> <silent> <Plug>NetrwServerEdit :<c-u>call <SID>NetrwServerEdit(3,<SID>NetrwGetWord())<cr> |
6403 nnoremap <buffer> <silent> <Plug>NetrwMakeDir :<c-u>call <SID>NetrwMakeDir("")<cr> | |
6404 nnoremap <buffer> <silent> <Plug>NetrwBookHistHandler_gb :<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_curdir)<cr> | |
6405 " --------------------------------------------------------------------- | |
6007 nnoremap <buffer> <silent> <nowait> gd :<c-u>call <SID>NetrwForceChgDir(1,<SID>NetrwGetWord())<cr> | 6406 nnoremap <buffer> <silent> <nowait> gd :<c-u>call <SID>NetrwForceChgDir(1,<SID>NetrwGetWord())<cr> |
6008 nnoremap <buffer> <silent> <nowait> gf :<c-u>call <SID>NetrwForceFile(1,<SID>NetrwGetWord())<cr> | 6407 nnoremap <buffer> <silent> <nowait> gf :<c-u>call <SID>NetrwForceFile(1,<SID>NetrwGetWord())<cr> |
6009 nnoremap <buffer> <silent> <nowait> gh :<c-u>call <SID>NetrwHidden(1)<cr> | 6408 nnoremap <buffer> <silent> <nowait> gh :<c-u>call <SID>NetrwHidden(1)<cr> |
6010 nnoremap <buffer> <silent> <nowait> gn :<c-u>call netrw#SetTreetop(<SID>NetrwGetWord())<cr> | 6409 nnoremap <buffer> <silent> <nowait> gn :<c-u>call netrw#SetTreetop(0,<SID>NetrwGetWord())<cr> |
6011 nnoremap <buffer> <silent> <nowait> gp :<c-u>call <SID>NetrwChgPerm(1,b:netrw_curdir)<cr> | 6410 nnoremap <buffer> <silent> <nowait> gp :<c-u>call <SID>NetrwChgPerm(1,b:netrw_curdir)<cr> |
6012 nnoremap <buffer> <silent> <nowait> I :<c-u>call <SID>NetrwBannerCtrl(1)<cr> | 6411 nnoremap <buffer> <silent> <nowait> I :<c-u>call <SID>NetrwBannerCtrl(1)<cr> |
6013 nnoremap <buffer> <silent> <nowait> i :<c-u>call <SID>NetrwListStyle(1)<cr> | 6412 nnoremap <buffer> <silent> <nowait> i :<c-u>call <SID>NetrwListStyle(1)<cr> |
6014 nnoremap <buffer> <silent> <nowait> ma :<c-u>call <SID>NetrwMarkFileArgList(1,0)<cr> | 6413 nnoremap <buffer> <silent> <nowait> ma :<c-u>call <SID>NetrwMarkFileArgList(1,0)<cr> |
6015 nnoremap <buffer> <silent> <nowait> mA :<c-u>call <SID>NetrwMarkFileArgList(1,1)<cr> | 6414 nnoremap <buffer> <silent> <nowait> mA :<c-u>call <SID>NetrwMarkFileArgList(1,1)<cr> |
6039 nnoremap <buffer> <silent> <nowait> P :<c-u>call <SID>NetrwPrevWinOpen(1)<cr> | 6438 nnoremap <buffer> <silent> <nowait> P :<c-u>call <SID>NetrwPrevWinOpen(1)<cr> |
6040 nnoremap <buffer> <silent> <nowait> qb :<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr> | 6439 nnoremap <buffer> <silent> <nowait> qb :<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr> |
6041 nnoremap <buffer> <silent> <nowait> qf :<c-u>call <SID>NetrwFileInfo(1,<SID>NetrwGetWord())<cr> | 6440 nnoremap <buffer> <silent> <nowait> qf :<c-u>call <SID>NetrwFileInfo(1,<SID>NetrwGetWord())<cr> |
6042 nnoremap <buffer> <silent> <nowait> qF :<c-u>call <SID>NetrwMarkFileQFEL(1,getqflist())<cr> | 6441 nnoremap <buffer> <silent> <nowait> qF :<c-u>call <SID>NetrwMarkFileQFEL(1,getqflist())<cr> |
6043 nnoremap <buffer> <silent> <nowait> qL :<c-u>call <SID>NetrwMarkFileQFEL(1,getloclist(v:count))<cr> | 6442 nnoremap <buffer> <silent> <nowait> qL :<c-u>call <SID>NetrwMarkFileQFEL(1,getloclist(v:count))<cr> |
6044 nnoremap <buffer> <silent> <nowait> r :<c-u>let g:netrw_sort_direction= (g:netrw_sort_direction =~# 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetrwRefresh(1,<SID>NetrwBrowseChgDir(1,'./'))<cr> | |
6045 nnoremap <buffer> <silent> <nowait> s :call <SID>NetrwSortStyle(1)<cr> | 6443 nnoremap <buffer> <silent> <nowait> s :call <SID>NetrwSortStyle(1)<cr> |
6046 nnoremap <buffer> <silent> <nowait> S :<c-u>call <SID>NetSortSequence(1)<cr> | 6444 nnoremap <buffer> <silent> <nowait> S :<c-u>call <SID>NetSortSequence(1)<cr> |
6047 nnoremap <buffer> <silent> <nowait> Tb :<c-u>call <SID>NetrwSetTgt(1,'b',v:count1)<cr> | 6445 nnoremap <buffer> <silent> <nowait> Tb :<c-u>call <SID>NetrwSetTgt(1,'b',v:count1)<cr> |
6048 nnoremap <buffer> <silent> <nowait> t :call <SID>NetrwSplit(4)<cr> | 6446 nnoremap <buffer> <silent> <nowait> t :call <SID>NetrwSplit(4)<cr> |
6049 nnoremap <buffer> <silent> <nowait> Th :<c-u>call <SID>NetrwSetTgt(1,'h',v:count)<cr> | 6447 nnoremap <buffer> <silent> <nowait> Th :<c-u>call <SID>NetrwSetTgt(1,'h',v:count)<cr> |
6050 nnoremap <buffer> <silent> <nowait> u :<c-u>call <SID>NetrwBookHistHandler(4,expand("%"))<cr> | 6448 nnoremap <buffer> <silent> <nowait> u :<c-u>call <SID>NetrwBookHistHandler(4,expand("%"))<cr> |
6051 nnoremap <buffer> <silent> <nowait> U :<c-u>call <SID>NetrwBookHistHandler(5,expand("%"))<cr> | 6449 nnoremap <buffer> <silent> <nowait> U :<c-u>call <SID>NetrwBookHistHandler(5,expand("%"))<cr> |
6052 nnoremap <buffer> <silent> <nowait> v :call <SID>NetrwSplit(5)<cr> | 6450 nnoremap <buffer> <silent> <nowait> v :call <SID>NetrwSplit(5)<cr> |
6053 nnoremap <buffer> <silent> <nowait> x :<c-u>call netrw#BrowseX(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),0),0)"<cr> | 6451 nnoremap <buffer> <silent> <nowait> x :<c-u>call netrw#BrowseX(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),0),0)"<cr> |
6054 nnoremap <buffer> <silent> <nowait> X :<c-u>call <SID>NetrwLocalExecute(expand("<cword>"))"<cr> | 6452 nnoremap <buffer> <silent> <nowait> X :<c-u>call <SID>NetrwLocalExecute(expand("<cword>"))"<cr> |
6055 " " local insert-mode maps | 6453 |
6056 " inoremap <buffer> <silent> <nowait> a <c-o>:call <SID>NetrwHide(1)<cr> | 6454 nnoremap <buffer> <silent> <nowait> r :<c-u>let g:netrw_sort_direction= (g:netrw_sort_direction =~# 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetrwRefresh(1,<SID>NetrwBrowseChgDir(1,'./'))<cr> |
6057 " inoremap <buffer> <silent> <nowait> c <c-o>:exe "NetrwKeepj lcd ".fnameescape(b:netrw_curdir)<cr> | |
6058 " inoremap <buffer> <silent> <nowait> c <c-o>:call <SID>NetrwLcd(b:netrw_curdir)<cr> | |
6059 " inoremap <buffer> <silent> <nowait> C <c-o>:call <SID>NetrwSetChgwin()<cr> | |
6060 " inoremap <buffer> <silent> <nowait> % <c-o>:call <SID>NetrwOpenFile(1)<cr> | |
6061 " inoremap <buffer> <silent> <nowait> - <c-o>:call <SID>NetrwBrowseUpDir(1)<cr> | |
6062 " inoremap <buffer> <silent> <nowait> <cr> <c-o>:call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord()))<cr> | |
6063 " inoremap <buffer> <silent> <nowait> d <c-o>:call <SID>NetrwMakeDir("")<cr> | |
6064 " inoremap <buffer> <silent> <nowait> gb <c-o>:<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_curdir)<cr> | |
6065 " inoremap <buffer> <silent> <nowait> gh <c-o>:<c-u>call <SID>NetrwHidden(1)<cr> | |
6066 " nnoremap <buffer> <silent> <nowait> gn :<c-u>call netrw#SetTreetop(<SID>NetrwGetWord())<cr> | |
6067 " inoremap <buffer> <silent> <nowait> gp <c-o>:<c-u>call <SID>NetrwChgPerm(1,b:netrw_curdir)<cr> | |
6068 " inoremap <buffer> <silent> <nowait> I <c-o>:call <SID>NetrwBannerCtrl(1)<cr> | |
6069 " inoremap <buffer> <silent> <nowait> i <c-o>:call <SID>NetrwListStyle(1)<cr> | |
6070 " inoremap <buffer> <silent> <nowait> mb <c-o>:<c-u>call <SID>NetrwBookHistHandler(0,b:netrw_curdir)<cr> | |
6071 " inoremap <buffer> <silent> <nowait> mB <c-o>:<c-u>call <SID>NetrwBookHistHandler(6,b:netrw_curdir)<cr> | |
6072 " inoremap <buffer> <silent> <nowait> mc <c-o>:<c-u>call <SID>NetrwMarkFileCopy(1)<cr> | |
6073 " inoremap <buffer> <silent> <nowait> md <c-o>:<c-u>call <SID>NetrwMarkFileDiff(1)<cr> | |
6074 " inoremap <buffer> <silent> <nowait> me <c-o>:<c-u>call <SID>NetrwMarkFileEdit(1)<cr> | |
6075 " inoremap <buffer> <silent> <nowait> mf <c-o>:<c-u>call <SID>NetrwMarkFile(1,<SID>NetrwGetWord())<cr> | |
6076 " inoremap <buffer> <silent> <nowait> mg <c-o>:<c-u>call <SID>NetrwMarkFileGrep(1)<cr> | |
6077 " inoremap <buffer> <silent> <nowait> mh <c-o>:<c-u>call <SID>NetrwMarkHideSfx(1)<cr> | |
6078 " inoremap <buffer> <silent> <nowait> mm <c-o>:<c-u>call <SID>NetrwMarkFileMove(1)<cr> | |
6079 " inoremap <buffer> <silent> <nowait> mp <c-o>:<c-u>call <SID>NetrwMarkFilePrint(1)<cr> | |
6080 " inoremap <buffer> <silent> <nowait> mr <c-o>:<c-u>call <SID>NetrwMarkFileRegexp(1)<cr> | |
6081 " inoremap <buffer> <silent> <nowait> ms <c-o>:<c-u>call <SID>NetrwMarkFileSource(1)<cr> | |
6082 " inoremap <buffer> <silent> <nowait> mT <c-o>:<c-u>call <SID>NetrwMarkFileTag(1)<cr> | |
6083 " inoremap <buffer> <silent> <nowait> mt <c-o>:<c-u>call <SID>NetrwMarkFileTgt(1)<cr> | |
6084 " inoremap <buffer> <silent> <nowait> mu <c-o>:<c-u>call <SID>NetrwUnMarkFile(1)<cr> | |
6085 " inoremap <buffer> <silent> <nowait> mv <c-o>:<c-u>call <SID>NetrwMarkFileVimCmd(1)<cr> | |
6086 " inoremap <buffer> <silent> <nowait> mx <c-o>:<c-u>call <SID>NetrwMarkFileExe(1,0)<cr> | |
6087 " inoremap <buffer> <silent> <nowait> mX <c-o>:<c-u>call <SID>NetrwMarkFileExe(1,1)<cr> | |
6088 " inoremap <buffer> <silent> <nowait> mz <c-o>:<c-u>call <SID>NetrwMarkFileCompress(1)<cr> | |
6089 " inoremap <buffer> <silent> <nowait> O <c-o>:call <SID>NetrwObtain(1)<cr> | |
6090 " inoremap <buffer> <silent> <nowait> o <c-o>:call <SID>NetrwSplit(3)<cr> | |
6091 " inoremap <buffer> <silent> <nowait> p <c-o>:call <SID>NetrwPreview(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),1))<cr> | |
6092 " inoremap <buffer> <silent> <nowait> P <c-o>:call <SID>NetrwPrevWinOpen(1)<cr> | |
6093 " inoremap <buffer> <silent> <nowait> qb <c-o>:<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr> | |
6094 " inoremap <buffer> <silent> <nowait> qf <c-o>:<c-u>call <SID>NetrwFileInfo(1,<SID>NetrwGetWord())<cr> | |
6095 " inoremap <buffer> <silent> <nowait> qF :<c-u>call <SID>NetrwMarkFileQFEL(1,getqflist())<cr> | |
6096 " inoremap <buffer> <silent> <nowait> qL :<c-u>call <SID>NetrwMarkFileQFEL(1,getloclist(v:count))<cr> | |
6097 " inoremap <buffer> <silent> <nowait> r <c-o>:let g:netrw_sort_direction= (g:netrw_sort_direction =~# 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetrwRefresh(1,<SID>NetrwBrowseChgDir(1,'./'))<cr> | |
6098 " inoremap <buffer> <silent> <nowait> s <c-o>:call <SID>NetrwSortStyle(1)<cr> | |
6099 " inoremap <buffer> <silent> <nowait> S <c-o>:call <SID>NetSortSequence(1)<cr> | |
6100 " inoremap <buffer> <silent> <nowait> t <c-o>:call <SID>NetrwSplit(4)<cr> | |
6101 " inoremap <buffer> <silent> <nowait> Tb <c-o>:<c-u>call <SID>NetrwSetTgt(1,'b',v:count1)<cr> | |
6102 " inoremap <buffer> <silent> <nowait> Th <c-o>:<c-u>call <SID>NetrwSetTgt(1,'h',v:count)<cr> | |
6103 " inoremap <buffer> <silent> <nowait> u <c-o>:<c-u>call <SID>NetrwBookHistHandler(4,expand("%"))<cr> | |
6104 " inoremap <buffer> <silent> <nowait> U <c-o>:<c-u>call <SID>NetrwBookHistHandler(5,expand("%"))<cr> | |
6105 " inoremap <buffer> <silent> <nowait> v <c-o>:call <SID>NetrwSplit(5)<cr> | |
6106 " inoremap <buffer> <silent> <nowait> x <c-o>:call netrw#BrowseX(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),0),0)"<cr> | |
6107 if !hasmapto('<Plug>NetrwHideEdit') | 6455 if !hasmapto('<Plug>NetrwHideEdit') |
6108 nmap <buffer> <unique> <c-h> <Plug>NetrwHideEdit | 6456 nmap <buffer> <unique> <c-h> <Plug>NetrwHideEdit |
6109 " imap <buffer> <unique> <c-h> <c-o><Plug>NetrwHideEdit | |
6110 endif | 6457 endif |
6111 nnoremap <buffer> <silent> <Plug>NetrwHideEdit :call <SID>NetrwHideEdit(1)<cr> | 6458 nnoremap <buffer> <silent> <Plug>NetrwHideEdit :call <SID>NetrwHideEdit(1)<cr> |
6112 if !hasmapto('<Plug>NetrwRefresh') | 6459 if !hasmapto('<Plug>NetrwRefresh') |
6113 nmap <buffer> <unique> <c-l> <Plug>NetrwRefresh | 6460 nmap <buffer> <unique> <c-l> <Plug>NetrwRefresh |
6114 " imap <buffer> <unique> <c-l> <c-o><Plug>NetrwRefresh | |
6115 endif | 6461 endif |
6116 nnoremap <buffer> <silent> <Plug>NetrwRefresh <c-l>:call <SID>NetrwRefresh(1,<SID>NetrwBrowseChgDir(1,(w:netrw_liststyle == 3)? w:netrw_treetop : './'))<cr> | 6462 nnoremap <buffer> <silent> <Plug>NetrwRefresh <c-l>:call <SID>NetrwRefresh(1,<SID>NetrwBrowseChgDir(1,(w:netrw_liststyle == 3)? w:netrw_treetop : './'))<cr> |
6117 if s:didstarstar || !mapcheck("<s-down>","n") | 6463 if s:didstarstar || !mapcheck("<s-down>","n") |
6118 nnoremap <buffer> <silent> <s-down> :Nexplore<cr> | 6464 nnoremap <buffer> <silent> <s-down> :Nexplore<cr> |
6119 " inoremap <buffer> <silent> <s-down> <c-o>:Nexplore<cr> | |
6120 endif | 6465 endif |
6121 if s:didstarstar || !mapcheck("<s-up>","n") | 6466 if s:didstarstar || !mapcheck("<s-up>","n") |
6122 nnoremap <buffer> <silent> <s-up> :Pexplore<cr> | 6467 nnoremap <buffer> <silent> <s-up> :Pexplore<cr> |
6123 " inoremap <buffer> <silent> <s-up> <c-o>:Pexplore<cr> | |
6124 endif | 6468 endif |
6125 if !hasmapto('<Plug>NetrwTreeSqueeze') | 6469 if !hasmapto('<Plug>NetrwTreeSqueeze') |
6126 nmap <buffer> <silent> <nowait> <s-cr> <Plug>NetrwTreeSqueeze | 6470 nmap <buffer> <silent> <nowait> <s-cr> <Plug>NetrwTreeSqueeze |
6127 " imap <buffer> <silent> <nowait> <s-cr> <c-o><Plug>NetrwTreeSqueeze | |
6128 endif | 6471 endif |
6129 nnoremap <buffer> <silent> <Plug>NetrwTreeSqueeze :call <SID>TreeSqueezeDir(1)<cr> | 6472 nnoremap <buffer> <silent> <Plug>NetrwTreeSqueeze :call <SID>TreeSqueezeDir(1)<cr> |
6130 let mapsafecurdir = escape(b:netrw_curdir, s:netrw_map_escape) | 6473 let mapsafecurdir = escape(b:netrw_curdir, s:netrw_map_escape) |
6131 if g:netrw_mousemaps == 1 | 6474 if g:netrw_mousemaps == 1 |
6132 nmap <buffer> <leftmouse> <Plug>NetrwLeftmouse | 6475 nmap <buffer> <leftmouse> <Plug>NetrwLeftmouse |
6476 nmap <buffer> <c-leftmouse> <Plug>NetrwCLeftmouse | |
6477 nmap <buffer> <middlemouse> <Plug>NetrwMiddlemouse | |
6478 nmap <buffer> <s-leftmouse> <Plug>NetrwSLeftmouse | |
6479 nmap <buffer> <s-leftdrag> <Plug>NetrwSLeftdrag | |
6480 nmap <buffer> <2-leftmouse> <Plug>Netrw2Leftmouse | |
6481 imap <buffer> <leftmouse> <Plug>ILeftmouse | |
6482 imap <buffer> <middlemouse> <Plug>IMiddlemouse | |
6133 nno <buffer> <silent> <Plug>NetrwLeftmouse <leftmouse>:call <SID>NetrwLeftmouse(1)<cr> | 6483 nno <buffer> <silent> <Plug>NetrwLeftmouse <leftmouse>:call <SID>NetrwLeftmouse(1)<cr> |
6134 nmap <buffer> <c-leftmouse> <Plug>NetrwCLeftmouse | |
6135 nno <buffer> <silent> <Plug>NetrwCLeftmouse <leftmouse>:call <SID>NetrwCLeftmouse(1)<cr> | 6484 nno <buffer> <silent> <Plug>NetrwCLeftmouse <leftmouse>:call <SID>NetrwCLeftmouse(1)<cr> |
6136 nmap <buffer> <middlemouse> <Plug>NetrwMiddlemouse | |
6137 nno <buffer> <silent> <Plug>NetrwMiddlemouse <leftmouse>:call <SID>NetrwPrevWinOpen(1)<cr> | 6485 nno <buffer> <silent> <Plug>NetrwMiddlemouse <leftmouse>:call <SID>NetrwPrevWinOpen(1)<cr> |
6138 nmap <buffer> <s-leftmouse> <Plug>NetrwSLeftmouse | |
6139 nno <buffer> <silent> <Plug>NetrwSLeftmouse <leftmouse>:call <SID>NetrwSLeftmouse(1)<cr> | 6486 nno <buffer> <silent> <Plug>NetrwSLeftmouse <leftmouse>:call <SID>NetrwSLeftmouse(1)<cr> |
6140 nmap <buffer> <s-leftdrag> <Plug>NetrwSLeftdrag | |
6141 nno <buffer> <silent> <Plug>NetrwSLeftdrag <leftmouse>:call <SID>NetrwSLeftdrag(1)<cr> | 6487 nno <buffer> <silent> <Plug>NetrwSLeftdrag <leftmouse>:call <SID>NetrwSLeftdrag(1)<cr> |
6142 nmap <buffer> <2-leftmouse> <Plug>Netrw2Leftmouse | |
6143 nmap <buffer> <silent> <Plug>Netrw2Leftmouse - | 6488 nmap <buffer> <silent> <Plug>Netrw2Leftmouse - |
6144 imap <buffer> <leftmouse> <Plug>ILeftmouse | |
6145 " ino <buffer> <silent> <Plug>ILeftmouse <c-o><leftmouse><c-o>:call <SID>NetrwLeftmouse(1)<cr> | |
6146 imap <buffer> <middlemouse> <Plug>IMiddlemouse | |
6147 " ino <buffer> <silent> <Plug>IMiddlemouse <c-o><leftmouse><c-o>:call <SID>NetrwPrevWinOpen(1)<cr> | |
6148 " imap <buffer> <s-leftmouse> <Plug>ISLeftmouse | |
6149 " ino <buffer> <silent> <Plug>ISLeftmouse <c-o><leftmouse><c-o>:call <SID>NetrwMarkFile(1,<SID>NetrwGetWord())<cr> | |
6150 exe 'nnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' | 6489 exe 'nnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' |
6151 exe 'vnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' | 6490 exe 'vnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' |
6152 " exe 'inoremap <buffer> <silent> <rightmouse> <c-o><leftmouse><c-o>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' | |
6153 endif | 6491 endif |
6154 exe 'nnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' | 6492 exe 'nnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' |
6155 exe 'nnoremap <buffer> <silent> <nowait> D :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' | 6493 exe 'nnoremap <buffer> <silent> <nowait> D :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' |
6156 exe 'nnoremap <buffer> <silent> <nowait> R :call <SID>NetrwLocalRename("'.mapsafecurdir.'")<cr>' | 6494 exe 'nnoremap <buffer> <silent> <nowait> R :call <SID>NetrwLocalRename("'.mapsafecurdir.'")<cr>' |
6157 exe 'nnoremap <buffer> <silent> <nowait> d :call <SID>NetrwMakeDir("")<cr>' | 6495 exe 'nnoremap <buffer> <silent> <nowait> d :call <SID>NetrwMakeDir("")<cr>' |
6158 exe 'vnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' | 6496 exe 'vnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' |
6159 exe 'vnoremap <buffer> <silent> <nowait> D :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' | 6497 exe 'vnoremap <buffer> <silent> <nowait> D :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' |
6160 exe 'vnoremap <buffer> <silent> <nowait> R :call <SID>NetrwLocalRename("'.mapsafecurdir.'")<cr>' | 6498 exe 'vnoremap <buffer> <silent> <nowait> R :call <SID>NetrwLocalRename("'.mapsafecurdir.'")<cr>' |
6161 " exe 'inoremap <buffer> <silent> <nowait> <del> <c-o>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' | |
6162 " exe 'inoremap <buffer> <silent> <nowait> D <c-o>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' | |
6163 " exe 'inoremap <buffer> <silent> <nowait> R <c-o>:call <SID>NetrwLocalRename("'.mapsafecurdir.'")<cr>' | |
6164 " exe 'inoremap <buffer> <silent> <nowait> d <c-o>:call <SID>NetrwMakeDir("")<cr>' | |
6165 nnoremap <buffer> <F1> :he netrw-quickhelp<cr> | 6499 nnoremap <buffer> <F1> :he netrw-quickhelp<cr> |
6166 | 6500 |
6167 " support user-specified maps | 6501 " support user-specified maps |
6168 call netrw#UserMaps(1) | 6502 call netrw#UserMaps(1) |
6169 | 6503 |
6170 else " remote | 6504 else |
6505 " remote normal-mode maps {{{3 | |
6171 " call Decho("make remote maps",'~'.expand("<slnum>")) | 6506 " call Decho("make remote maps",'~'.expand("<slnum>")) |
6172 call s:RemotePathAnalysis(b:netrw_curdir) | 6507 call s:RemotePathAnalysis(b:netrw_curdir) |
6173 " remote normal-mode maps | 6508 nnoremap <buffer> <silent> <Plug>NetrwHide_a :<c-u>call <SID>NetrwHide(0)<cr> |
6174 nnoremap <buffer> <silent> <nowait> a :<c-u>call <SID>NetrwHide(0)<cr> | 6509 nnoremap <buffer> <silent> <Plug>NetrwBrowseUpDir :<c-u>call <SID>NetrwBrowseUpDir(0)<cr> |
6175 nnoremap <buffer> <silent> <nowait> - :<c-u>call <SID>NetrwBrowseUpDir(0)<cr> | 6510 nnoremap <buffer> <silent> <Plug>NetrwOpenFile :<c-u>call <SID>NetrwOpenFile(0)<cr> |
6176 nnoremap <buffer> <silent> <nowait> % :<c-u>call <SID>NetrwOpenFile(0)<cr> | 6511 nnoremap <buffer> <silent> <Plug>NetrwBadd_cb :<c-u>call <SID>NetrwBadd(0,0)<cr> |
6177 nnoremap <buffer> <silent> <nowait> C :<c-u>call <SID>NetrwSetChgwin()<cr> | 6512 nnoremap <buffer> <silent> <Plug>NetrwBadd_cB :<c-u>call <SID>NetrwBadd(0,1)<cr> |
6178 nnoremap <buffer> <silent> <nowait> <c-l> :<c-u>call <SID>NetrwRefresh(0,<SID>NetrwBrowseChgDir(0,'./'))<cr> | 6513 nnoremap <buffer> <silent> <Plug>NetrwLcd :<c-u>call <SID>NetrwLcd(b:netrw_curdir)<cr> |
6179 nnoremap <buffer> <silent> <nowait> <cr> :<c-u>call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()))<cr> | 6514 nnoremap <buffer> <silent> <Plug>NetrwSetChgwin :<c-u>call <SID>NetrwSetChgwin()<cr> |
6180 nnoremap <buffer> <silent> <nowait> <c-r> :<c-u>call <SID>NetrwServerEdit(2,<SID>NetrwGetWord())<cr> | 6515 nnoremap <buffer> <silent> <Plug>NetrwRefresh :<c-u>call <SID>NetrwRefresh(0,<SID>NetrwBrowseChgDir(0,'./'))<cr> |
6181 nnoremap <buffer> <silent> <nowait> gb :<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_curdir)<cr> | 6516 nnoremap <buffer> <silent> <Plug>NetrwLocalBrowseCheck :<c-u>call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()))<cr> |
6517 nnoremap <buffer> <silent> <Plug>NetrwServerEdit :<c-u>call <SID>NetrwServerEdit(2,<SID>NetrwGetWord())<cr> | |
6518 nnoremap <buffer> <silent> <Plug>NetrwBookHistHandler_gb :<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_curdir)<cr> | |
6519 " --------------------------------------------------------------------- | |
6182 nnoremap <buffer> <silent> <nowait> gd :<c-u>call <SID>NetrwForceChgDir(0,<SID>NetrwGetWord())<cr> | 6520 nnoremap <buffer> <silent> <nowait> gd :<c-u>call <SID>NetrwForceChgDir(0,<SID>NetrwGetWord())<cr> |
6183 nnoremap <buffer> <silent> <nowait> gf :<c-u>call <SID>NetrwForceFile(0,<SID>NetrwGetWord())<cr> | 6521 nnoremap <buffer> <silent> <nowait> gf :<c-u>call <SID>NetrwForceFile(0,<SID>NetrwGetWord())<cr> |
6184 nnoremap <buffer> <silent> <nowait> gh :<c-u>call <SID>NetrwHidden(0)<cr> | 6522 nnoremap <buffer> <silent> <nowait> gh :<c-u>call <SID>NetrwHidden(0)<cr> |
6185 nnoremap <buffer> <silent> <nowait> gp :<c-u>call <SID>NetrwChgPerm(0,b:netrw_curdir)<cr> | 6523 nnoremap <buffer> <silent> <nowait> gp :<c-u>call <SID>NetrwChgPerm(0,b:netrw_curdir)<cr> |
6186 nnoremap <buffer> <silent> <nowait> I :<c-u>call <SID>NetrwBannerCtrl(1)<cr> | 6524 nnoremap <buffer> <silent> <nowait> I :<c-u>call <SID>NetrwBannerCtrl(1)<cr> |
6223 nnoremap <buffer> <silent> <nowait> Th :<c-u>call <SID>NetrwSetTgt(0,'h',v:count)<cr> | 6561 nnoremap <buffer> <silent> <nowait> Th :<c-u>call <SID>NetrwSetTgt(0,'h',v:count)<cr> |
6224 nnoremap <buffer> <silent> <nowait> u :<c-u>call <SID>NetrwBookHistHandler(4,b:netrw_curdir)<cr> | 6562 nnoremap <buffer> <silent> <nowait> u :<c-u>call <SID>NetrwBookHistHandler(4,b:netrw_curdir)<cr> |
6225 nnoremap <buffer> <silent> <nowait> U :<c-u>call <SID>NetrwBookHistHandler(5,b:netrw_curdir)<cr> | 6563 nnoremap <buffer> <silent> <nowait> U :<c-u>call <SID>NetrwBookHistHandler(5,b:netrw_curdir)<cr> |
6226 nnoremap <buffer> <silent> <nowait> v :call <SID>NetrwSplit(2)<cr> | 6564 nnoremap <buffer> <silent> <nowait> v :call <SID>NetrwSplit(2)<cr> |
6227 nnoremap <buffer> <silent> <nowait> x :<c-u>call netrw#BrowseX(<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()),1)<cr> | 6565 nnoremap <buffer> <silent> <nowait> x :<c-u>call netrw#BrowseX(<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()),1)<cr> |
6228 " " remote insert-mode maps | |
6229 " inoremap <buffer> <silent> <nowait> <cr> <c-o>:call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()))<cr> | |
6230 " inoremap <buffer> <silent> <nowait> <c-l> <c-o>:call <SID>NetrwRefresh(0,<SID>NetrwBrowseChgDir(0,'./'))<cr> | |
6231 " inoremap <buffer> <silent> <nowait> <s-cr> <c-o>:call <SID>TreeSqueezeDir(0)<cr> | |
6232 " inoremap <buffer> <silent> <nowait> - <c-o>:call <SID>NetrwBrowseUpDir(0)<cr> | |
6233 " inoremap <buffer> <silent> <nowait> a <c-o>:call <SID>NetrwHide(0)<cr> | |
6234 " inoremap <buffer> <silent> <nowait> mb <c-o>:<c-u>call <SID>NetrwBookHistHandler(0,b:netrw_curdir)<cr> | |
6235 " inoremap <buffer> <silent> <nowait> mc <c-o>:<c-u>call <SID>NetrwMarkFileCopy(0)<cr> | |
6236 " inoremap <buffer> <silent> <nowait> md <c-o>:<c-u>call <SID>NetrwMarkFileDiff(0)<cr> | |
6237 " inoremap <buffer> <silent> <nowait> me <c-o>:<c-u>call <SID>NetrwMarkFileEdit(0)<cr> | |
6238 " inoremap <buffer> <silent> <nowait> mf <c-o>:<c-u>call <SID>NetrwMarkFile(0,<SID>NetrwGetWord())<cr> | |
6239 " inoremap <buffer> <silent> <nowait> mg <c-o>:<c-u>call <SID>NetrwMarkFileGrep(0)<cr> | |
6240 " inoremap <buffer> <silent> <nowait> mh <c-o>:<c-u>call <SID>NetrwMarkHideSfx(0)<cr> | |
6241 " inoremap <buffer> <silent> <nowait> mm <c-o>:<c-u>call <SID>NetrwMarkFileMove(0)<cr> | |
6242 " inoremap <buffer> <silent> <nowait> mp <c-o>:<c-u>call <SID>NetrwMarkFilePrint(0)<cr> | |
6243 " inoremap <buffer> <silent> <nowait> mr <c-o>:<c-u>call <SID>NetrwMarkFileRegexp(0)<cr> | |
6244 " inoremap <buffer> <silent> <nowait> ms <c-o>:<c-u>call <SID>NetrwMarkFileSource(0)<cr> | |
6245 " inoremap <buffer> <silent> <nowait> mt <c-o>:<c-u>call <SID>NetrwMarkFileTgt(0)<cr> | |
6246 " inoremap <buffer> <silent> <nowait> mT <c-o>:<c-u>call <SID>NetrwMarkFileTag(0)<cr> | |
6247 " inoremap <buffer> <silent> <nowait> mu <c-o>:<c-u>call <SID>NetrwUnMarkFile(0)<cr> | |
6248 " nnoremap <buffer> <silent> <nowait> mv :<c-u>call <SID>NetrwMarkFileVimCmd(1)<cr> | |
6249 " inoremap <buffer> <silent> <nowait> mx <c-o>:<c-u>call <SID>NetrwMarkFileExe(0,0)<cr> | |
6250 " inoremap <buffer> <silent> <nowait> mX <c-o>:<c-u>call <SID>NetrwMarkFileExe(0,1)<cr> | |
6251 " inoremap <buffer> <silent> <nowait> mv <c-o>:<c-u>call <SID>NetrwMarkFileVimCmd(0)<cr> | |
6252 " inoremap <buffer> <silent> <nowait> mz <c-o>:<c-u>call <SID>NetrwMarkFileCompress(0)<cr> | |
6253 " inoremap <buffer> <silent> <nowait> gb <c-o>:<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_curdir)<cr> | |
6254 " inoremap <buffer> <silent> <nowait> gh <c-o>:<c-u>call <SID>NetrwHidden(0)<cr> | |
6255 " inoremap <buffer> <silent> <nowait> gp <c-o>:<c-u>call <SID>NetrwChgPerm(0,b:netrw_curdir)<cr> | |
6256 " inoremap <buffer> <silent> <nowait> C <c-o>:call <SID>NetrwSetChgwin()<cr> | |
6257 " inoremap <buffer> <silent> <nowait> i <c-o>:call <SID>NetrwListStyle(0)<cr> | |
6258 " inoremap <buffer> <silent> <nowait> I <c-o>:call <SID>NetrwBannerCtrl(1)<cr> | |
6259 " inoremap <buffer> <silent> <nowait> o <c-o>:call <SID>NetrwSplit(0)<cr> | |
6260 " inoremap <buffer> <silent> <nowait> O <c-o>:call <SID>NetrwObtain(0)<cr> | |
6261 " inoremap <buffer> <silent> <nowait> p <c-o>:call <SID>NetrwPreview(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),1))<cr> | |
6262 " inoremap <buffer> <silent> <nowait> P <c-o>:call <SID>NetrwPrevWinOpen(0)<cr> | |
6263 " inoremap <buffer> <silent> <nowait> qb <c-o>:<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr> | |
6264 " inoremap <buffer> <silent> <nowait> mB <c-o>:<c-u>call <SID>NetrwBookHistHandler(6,b:netrw_curdir)<cr> | |
6265 " inoremap <buffer> <silent> <nowait> qf <c-o>:<c-u>call <SID>NetrwFileInfo(0,<SID>NetrwGetWord())<cr> | |
6266 " inoremap <buffer> <silent> <nowait> qF :<c-u>call <SID>NetrwMarkFileQFEL(0,getqflist())<cr> | |
6267 " inoremap <buffer> <silent> <nowait> qL :<c-u>call <SID>NetrwMarkFileQFEL(0,getloclist(v:count))<cr> | |
6268 " inoremap <buffer> <silent> <nowait> r <c-o>:let g:netrw_sort_direction= (g:netrw_sort_direction =~# 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,'./'))<cr> | |
6269 " inoremap <buffer> <silent> <nowait> s <c-o>:call <SID>NetrwSortStyle(0)<cr> | |
6270 " inoremap <buffer> <silent> <nowait> S <c-o>:call <SID>NetSortSequence(0)<cr> | |
6271 " inoremap <buffer> <silent> <nowait> t <c-o>:call <SID>NetrwSplit(1)<cr> | |
6272 " inoremap <buffer> <silent> <nowait> Tb <c-o>:<c-u>call <SID>NetrwSetTgt('b',v:count1)<cr> | |
6273 " inoremap <buffer> <silent> <nowait> Th <c-o>:<c-u>call <SID>NetrwSetTgt('h',v:count)<cr> | |
6274 " inoremap <buffer> <silent> <nowait> u <c-o>:<c-u>call <SID>NetrwBookHistHandler(4,b:netrw_curdir)<cr> | |
6275 " inoremap <buffer> <silent> <nowait> U <c-o>:<c-u>call <SID>NetrwBookHistHandler(5,b:netrw_curdir)<cr> | |
6276 " inoremap <buffer> <silent> <nowait> v <c-o>:call <SID>NetrwSplit(2)<cr> | |
6277 " inoremap <buffer> <silent> <nowait> x <c-o>:call netrw#BrowseX(<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()),1)<cr> | |
6278 " inoremap <buffer> <silent> <nowait> % <c-o>:call <SID>NetrwOpenFile(0)<cr> | |
6279 if !hasmapto('<Plug>NetrwHideEdit') | 6566 if !hasmapto('<Plug>NetrwHideEdit') |
6280 nmap <buffer> <c-h> <Plug>NetrwHideEdit | 6567 nmap <buffer> <c-h> <Plug>NetrwHideEdit |
6281 " imap <buffer> <c-h> <Plug>NetrwHideEdit | |
6282 endif | 6568 endif |
6283 nnoremap <buffer> <silent> <Plug>NetrwHideEdit :call <SID>NetrwHideEdit(0)<cr> | 6569 nnoremap <buffer> <silent> <Plug>NetrwHideEdit :call <SID>NetrwHideEdit(0)<cr> |
6284 if !hasmapto('<Plug>NetrwRefresh') | 6570 if !hasmapto('<Plug>NetrwRefresh') |
6285 nmap <buffer> <c-l> <Plug>NetrwRefresh | 6571 nmap <buffer> <c-l> <Plug>NetrwRefresh |
6286 " imap <buffer> <c-l> <Plug>NetrwRefresh | |
6287 endif | 6572 endif |
6288 if !hasmapto('<Plug>NetrwTreeSqueeze') | 6573 if !hasmapto('<Plug>NetrwTreeSqueeze') |
6289 nmap <buffer> <silent> <nowait> <s-cr> <Plug>NetrwTreeSqueeze | 6574 nmap <buffer> <silent> <nowait> <s-cr> <Plug>NetrwTreeSqueeze |
6290 " imap <buffer> <silent> <nowait> <s-cr> <c-o><Plug>NetrwTreeSqueeze | |
6291 endif | 6575 endif |
6292 nnoremap <buffer> <silent> <Plug>NetrwTreeSqueeze :call <SID>TreeSqueezeDir(0)<cr> | 6576 nnoremap <buffer> <silent> <Plug>NetrwTreeSqueeze :call <SID>TreeSqueezeDir(0)<cr> |
6293 | 6577 |
6294 let mapsafepath = escape(s:path, s:netrw_map_escape) | 6578 let mapsafepath = escape(s:path, s:netrw_map_escape) |
6295 let mapsafeusermach = escape(((s:user == "")? "" : s:user."@").s:machine, s:netrw_map_escape) | 6579 let mapsafeusermach = escape(((s:user == "")? "" : s:user."@").s:machine, s:netrw_map_escape) |
6307 nmap <middlemouse> <Plug>NetrwMiddlemouse | 6591 nmap <middlemouse> <Plug>NetrwMiddlemouse |
6308 nno <buffer> <silent> <middlemouse> <Plug>NetrwMiddlemouse <leftmouse>:call <SID>NetrwPrevWinOpen(0)<cr> | 6592 nno <buffer> <silent> <middlemouse> <Plug>NetrwMiddlemouse <leftmouse>:call <SID>NetrwPrevWinOpen(0)<cr> |
6309 nmap <buffer> <2-leftmouse> <Plug>Netrw2Leftmouse | 6593 nmap <buffer> <2-leftmouse> <Plug>Netrw2Leftmouse |
6310 nmap <buffer> <silent> <Plug>Netrw2Leftmouse - | 6594 nmap <buffer> <silent> <Plug>Netrw2Leftmouse - |
6311 imap <buffer> <leftmouse> <Plug>ILeftmouse | 6595 imap <buffer> <leftmouse> <Plug>ILeftmouse |
6312 " ino <buffer> <silent> <Plug>ILeftmouse <c-o><leftmouse><c-o>:call <SID>NetrwLeftmouse(0)<cr> | |
6313 imap <buffer> <middlemouse> <Plug>IMiddlemouse | 6596 imap <buffer> <middlemouse> <Plug>IMiddlemouse |
6314 " ino <buffer> <silent> <Plug>IMiddlemouse <c-o><leftmouse><c-o>:call <SID>NetrwPrevWinOpen(0)<cr> | |
6315 imap <buffer> <s-leftmouse> <Plug>ISLeftmouse | 6597 imap <buffer> <s-leftmouse> <Plug>ISLeftmouse |
6316 " ino <buffer> <silent> <Plug>ISLeftmouse <c-o><leftmouse><c-o>:call <SID>NetrwMarkFile(0,<SID>NetrwGetWord())<cr> | |
6317 exe 'nnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' | 6598 exe 'nnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' |
6318 exe 'vnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' | 6599 exe 'vnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' |
6319 " exe 'inoremap <buffer> <silent> <rightmouse> <c-o><leftmouse><c-o>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' | |
6320 endif | 6600 endif |
6321 exe 'nnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' | 6601 exe 'nnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' |
6322 exe 'nnoremap <buffer> <silent> <nowait> d :call <SID>NetrwMakeDir("'.mapsafeusermach.'")<cr>' | 6602 exe 'nnoremap <buffer> <silent> <nowait> d :call <SID>NetrwMakeDir("'.mapsafeusermach.'")<cr>' |
6323 exe 'nnoremap <buffer> <silent> <nowait> D :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' | 6603 exe 'nnoremap <buffer> <silent> <nowait> D :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' |
6324 exe 'nnoremap <buffer> <silent> <nowait> R :call <SID>NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' | 6604 exe 'nnoremap <buffer> <silent> <nowait> R :call <SID>NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' |
6325 exe 'vnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' | 6605 exe 'vnoremap <buffer> <silent> <nowait> <del> :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' |
6326 exe 'vnoremap <buffer> <silent> <nowait> D :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' | 6606 exe 'vnoremap <buffer> <silent> <nowait> D :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' |
6327 exe 'vnoremap <buffer> <silent> <nowait> R :call <SID>NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' | 6607 exe 'vnoremap <buffer> <silent> <nowait> R :call <SID>NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' |
6328 " exe 'inoremap <buffer> <silent> <nowait> <del> <c-o>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' | |
6329 " exe 'inoremap <buffer> <silent> <nowait> d <c-o>:call <SID>NetrwMakeDir("'.mapsafeusermach.'")<cr>' | |
6330 " exe 'inoremap <buffer> <silent> <nowait> D <c-o>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' | |
6331 " exe 'inoremap <buffer> <silent> <nowait> R <c-o>:call <SID>NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' | |
6332 nnoremap <buffer> <F1> :he netrw-quickhelp<cr> | 6608 nnoremap <buffer> <F1> :he netrw-quickhelp<cr> |
6333 " inoremap <buffer> <F1> <c-o>:he netrw-quickhelp<cr> | |
6334 | 6609 |
6335 " support user-specified maps | 6610 " support user-specified maps |
6336 call netrw#UserMaps(0) | 6611 call netrw#UserMaps(0) |
6337 endif | 6612 endif " }}}3 |
6338 | 6613 |
6339 " call Dret("s:NetrwMaps") | 6614 " call Dret("s:NetrwMaps") |
6340 endfun | 6615 endfun |
6341 | 6616 |
6342 " --------------------------------------------------------------------- | 6617 " --------------------------------------------------------------------- |
6529 call add(s:netrwmarkfilelist,s:ComposePath(b:netrw_curdir,a:fname)) | 6804 call add(s:netrwmarkfilelist,s:ComposePath(b:netrw_curdir,a:fname)) |
6530 " call Decho("init s:netrwmarkfilelist<".string(s:netrwmarkfilelist).">",'~'.expand("<slnum>")) | 6805 " call Decho("init s:netrwmarkfilelist<".string(s:netrwmarkfilelist).">",'~'.expand("<slnum>")) |
6531 endif | 6806 endif |
6532 | 6807 |
6533 " set up 2match'ing to netrwmarkfilemtch_# list | 6808 " set up 2match'ing to netrwmarkfilemtch_# list |
6534 if exists("s:netrwmarkfilemtch_{curbufnr}") && s:netrwmarkfilemtch_{curbufnr} != "" | 6809 if has("syntax") && exists("g:syntax_on") && g:syntax_on |
6535 " call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/",'~'.expand("<slnum>")) | 6810 if exists("s:netrwmarkfilemtch_{curbufnr}") && s:netrwmarkfilemtch_{curbufnr} != "" |
6536 if exists("g:did_drchip_netrwlist_syntax") | 6811 " " call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/",'~'.expand("<slnum>")) |
6537 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/" | 6812 if exists("g:did_drchip_netrwlist_syntax") |
6538 endif | 6813 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/" |
6539 else | 6814 endif |
6540 " call Decho("2match none",'~'.expand("<slnum>")) | 6815 else |
6541 2match none | 6816 " " call Decho("2match none",'~'.expand("<slnum>")) |
6817 2match none | |
6818 endif | |
6542 endif | 6819 endif |
6543 let @@= ykeep | 6820 let @@= ykeep |
6544 " call Dret("s:NetrwMarkFile : s:netrwmarkfilelist_".curbufnr."<".(exists("s:netrwmarkfilelist_{curbufnr}")? string(s:netrwmarkfilelist_{curbufnr}) : " doesn't exist").">") | 6821 " call Dret("s:NetrwMarkFile : s:netrwmarkfilelist_".curbufnr."<".(exists("s:netrwmarkfilelist_{curbufnr}")? string(s:netrwmarkfilelist_{curbufnr}) : " doesn't exist").">") |
6545 endfun | 6822 endfun |
6546 | 6823 |
6622 let exe= netrw#WinPath(exe) | 6899 let exe= netrw#WinPath(exe) |
6623 if a:islocal | 6900 if a:islocal |
6624 if g:netrw_keepdir | 6901 if g:netrw_keepdir |
6625 let fname= s:ShellEscape(s:ComposePath(curdir,fname)) | 6902 let fname= s:ShellEscape(s:ComposePath(curdir,fname)) |
6626 endif | 6903 endif |
6904 call system(exe." ".fname) | |
6905 if v:shell_error | |
6906 NetrwKeepj call netrw#ErrorMsg(s:WARNING,"unable to apply<".exe."> to file<".fname.">",50) | |
6907 endif | |
6627 else | 6908 else |
6628 let fname= s:ShellEscape(b:netrw_curdir.fname,1) | 6909 let fname= s:ShellEscape(b:netrw_curdir.fname,1) |
6910 NetrwKeepj call s:RemoteSystem(exe." ".fname) | |
6629 endif | 6911 endif |
6630 if executable(exe) | 6912 |
6631 if a:islocal | |
6632 call system(exe." ".fname) | |
6633 else | |
6634 NetrwKeepj call s:RemoteSystem(exe." ".fname) | |
6635 endif | |
6636 else | |
6637 NetrwKeepj call netrw#ErrorMsg(s:WARNING,"unable to apply<".exe."> to file<".fname.">",50) | |
6638 endif | |
6639 endif | 6913 endif |
6640 unlet sfx | 6914 unlet sfx |
6641 | 6915 |
6642 if exists("exe") | 6916 if exists("exe") |
6643 unlet exe | 6917 unlet exe |
6644 elseif a:islocal | 6918 elseif a:islocal |
6645 " fname not a compressed file, so compress it | 6919 " fname not a compressed file, so compress it |
6646 call system(netrw#WinPath(g:netrw_compress)." ".s:ShellEscape(s:ComposePath(b:netrw_curdir,fname))) | 6920 call system(netrw#WinPath(g:netrw_compress)." ".s:ShellEscape(s:ComposePath(b:netrw_curdir,fname))) |
6921 if v:shell_error | |
6922 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_compress<".g:netrw_compress."> to something that works",104) | |
6923 endif | |
6647 else | 6924 else |
6648 " fname not a compressed file, so compress it | 6925 " fname not a compressed file, so compress it |
6649 NetrwKeepj call s:RemoteSystem(netrw#WinPath(g:netrw_compress)." ".s:ShellEscape(fname)) | 6926 NetrwKeepj call s:RemoteSystem(netrw#WinPath(g:netrw_compress)." ".s:ShellEscape(fname)) |
6650 endif | 6927 endif |
6651 endfor " for every file in the marked list | 6928 endfor " for every file in the marked list |
6693 " call Decho("sanity chk passed: s:netrwmftgt<".s:netrwmftgt.">",'~'.expand("<slnum>")) | 6970 " call Decho("sanity chk passed: s:netrwmftgt<".s:netrwmftgt.">",'~'.expand("<slnum>")) |
6694 | 6971 |
6695 if a:islocal && s:netrwmftgt_islocal | 6972 if a:islocal && s:netrwmftgt_islocal |
6696 " Copy marked files, local directory to local directory | 6973 " Copy marked files, local directory to local directory |
6697 " call Decho("copy from local to local",'~'.expand("<slnum>")) | 6974 " call Decho("copy from local to local",'~'.expand("<slnum>")) |
6698 if !executable(g:netrw_localcopycmd) && g:netrw_localcopycmd !~ '^'.expand("$COMSPEC").'\s' | 6975 if !executable(g:netrw_localcopycmd) |
6699 call netrw#ErrorMsg(s:ERROR,"g:netrw_localcopycmd<".g:netrw_localcopycmd."> not executable on your system, aborting",91) | 6976 call netrw#ErrorMsg(s:ERROR,"g:netrw_localcopycmd<".g:netrw_localcopycmd."> not executable on your system, aborting",91) |
6700 " call Dfunc("s:NetrwMarkFileMove : g:netrw_localcopycmd<".g:netrw_localcopycmd."> n/a!") | 6977 " call Dfunc("s:NetrwMarkFileMove : g:netrw_localcopycmd<".g:netrw_localcopycmd."> n/a!") |
6701 return | 6978 return |
6702 endif | 6979 endif |
6703 | 6980 |
6775 endif | 7052 endif |
6776 " call Decho("args <".args.">",'~'.expand("<slnum>")) | 7053 " call Decho("args <".args.">",'~'.expand("<slnum>")) |
6777 " call Decho("tgt <".tgt.">",'~'.expand("<slnum>")) | 7054 " call Decho("tgt <".tgt.">",'~'.expand("<slnum>")) |
6778 " call Decho("copycmd<".copycmd.">",'~'.expand("<slnum>")) | 7055 " call Decho("copycmd<".copycmd.">",'~'.expand("<slnum>")) |
6779 " call Decho("system(".copycmd." '".args."' '".tgt."')",'~'.expand("<slnum>")) | 7056 " call Decho("system(".copycmd." '".args."' '".tgt."')",'~'.expand("<slnum>")) |
6780 call system(copycmd." '".args."' '".tgt."'") | 7057 call system(copycmd.g:netrw_localcopycmdopt." '".args."' '".tgt."'") |
6781 if v:shell_error != 0 | 7058 if v:shell_error != 0 |
6782 if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && !g:netrw_keepdir | 7059 if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && !g:netrw_keepdir |
6783 call netrw#ErrorMsg(s:ERROR,"copy failed; perhaps due to vim's current directory<".getcwd()."> not matching netrw's (".b:netrw_curdir.") (see :help netrw-c)",101) | 7060 call netrw#ErrorMsg(s:ERROR,"copy failed; perhaps due to vim's current directory<".getcwd()."> not matching netrw's (".b:netrw_curdir.") (see :help netrw-cd)",101) |
6784 else | 7061 else |
6785 call netrw#ErrorMsg(s:ERROR,"tried using g:netrw_localcopycmd<".g:netrw_localcopycmd.">; it doesn't work!",80) | 7062 call netrw#ErrorMsg(s:ERROR,"tried using g:netrw_localcopycmd<".g:netrw_localcopycmd.">; it doesn't work!",80) |
6786 endif | 7063 endif |
6787 " call Dret("s:NetrwMarkFileCopy 0 : failed: system(".g:netrw_localcopycmd." ".args." ".s:ShellEscape(s:netrwmftgt)) | 7064 " call Dret("s:NetrwMarkFileCopy 0 : failed: system(".g:netrw_localcopycmd." ".args." ".s:ShellEscape(s:netrwmftgt)) |
6788 return 0 | 7065 return 0 |
6807 let tmpdir= curdir."/".tmpdir | 7084 let tmpdir= curdir."/".tmpdir |
6808 endif | 7085 endif |
6809 if exists("*mkdir") | 7086 if exists("*mkdir") |
6810 call mkdir(tmpdir) | 7087 call mkdir(tmpdir) |
6811 else | 7088 else |
6812 call s:NetrwExe("sil! !".g:netrw_localmkdir.' '.s:ShellEscape(tmpdir,1)) | 7089 call s:NetrwExe("sil! !".g:netrw_localmkdir.g:netrw_localmkdiropt.' '.s:ShellEscape(tmpdir,1)) |
6813 if v:shell_error != 0 | 7090 if v:shell_error != 0 |
6814 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localmkdir<".g:netrw_localmkdir."> to something that works",80) | 7091 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localmkdir<".g:netrw_localmkdir."> to something that works",80) |
6815 " call Dret("s:NetrwMarkFileCopy : failed: sil! !".g:netrw_localmkdir.' '.s:ShellEscape(tmpdir,1) ) | 7092 " call Dret("s:NetrwMarkFileCopy : failed: sil! !".g:netrw_localmkdir.' '.s:ShellEscape(tmpdir,1) ) |
6816 return | 7093 return |
6817 endif | 7094 endif |
6818 endif | 7095 endif |
6819 if isdirectory(s:NetrwFile(tmpdir)) | 7096 if isdirectory(s:NetrwFile(tmpdir)) |
6820 call s:NetrwLcd(tmpdir) | 7097 if s:NetrwLcd(tmpdir) |
7098 " call Dret("s:NetrwMarkFileCopy : lcd failure") | |
7099 return | |
7100 endif | |
6821 NetrwKeepj call netrw#Obtain(a:islocal,s:netrwmarkfilelist_{bufnr('%')},tmpdir) | 7101 NetrwKeepj call netrw#Obtain(a:islocal,s:netrwmarkfilelist_{bufnr('%')},tmpdir) |
6822 let localfiles= map(deepcopy(s:netrwmarkfilelist_{bufnr('%')}),'substitute(v:val,"^.*/","","")') | 7102 let localfiles= map(deepcopy(s:netrwmarkfilelist_{bufnr('%')}),'substitute(v:val,"^.*/","","")') |
6823 NetrwKeepj call s:NetrwUpload(localfiles,s:netrwmftgt) | 7103 NetrwKeepj call s:NetrwUpload(localfiles,s:netrwmftgt) |
6824 if getcwd() == tmpdir | 7104 if getcwd() == tmpdir |
6825 for fname in s:netrwmarkfilelist_{bufnr('%')} | 7105 for fname in s:netrwmarkfilelist_{bufnr('%')} |
6826 NetrwKeepj call s:NetrwDelete(fname) | 7106 NetrwKeepj call s:NetrwDelete(fname) |
6827 endfor | 7107 endfor |
6828 call s:NetrwLcd(curdir) | 7108 if s:NetrwLcd(curdir) |
6829 if v:version < 704 || !has("patch1109") | 7109 " call Dret("s:NetrwMarkFileCopy : lcd failure") |
6830 call s:NetrwExe("sil !".g:netrw_localrmdir." ".s:ShellEscape(tmpdir,1)) | 7110 return |
7111 endif | |
7112 if v:version < 704 || (v:version == 704 && !has("patch1107")) | |
7113 call s:NetrwExe("sil !".g:netrw_localrmdir.g:netrw_localrmdiropt." ".s:ShellEscape(tmpdir,1)) | |
6831 if v:shell_error != 0 | 7114 if v:shell_error != 0 |
6832 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localrmdir<".g:netrw_localrmdir."> to something that works",80) | 7115 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localrmdir<".g:netrw_localrmdir."> to something that works",80) |
6833 " " call Dret("s:NetrwMarkFileCopy : failed: sil !".g:netrw_localrmdir." ".s:ShellEscape(tmpdir,1) ) | 7116 " " call Dret("s:NetrwMarkFileCopy : failed: sil !".g:netrw_localrmdir." ".s:ShellEscape(tmpdir,1) ) |
6834 return | 7117 return |
6835 endif | 7118 endif |
6837 if delete(tmpdir,"d") | 7120 if delete(tmpdir,"d") |
6838 call netrw#ErrorMsg(s:ERROR,"unable to delete directory <".tmpdir.">!",103) | 7121 call netrw#ErrorMsg(s:ERROR,"unable to delete directory <".tmpdir.">!",103) |
6839 endif | 7122 endif |
6840 endif | 7123 endif |
6841 else | 7124 else |
6842 call s:NetrwLcd(curdir) | 7125 if s:NetrwLcd(curdir) |
7126 " call Dret("s:NetrwMarkFileCopy : lcd failure") | |
7127 return | |
7128 endif | |
6843 endif | 7129 endif |
6844 endif | 7130 endif |
6845 endif | 7131 endif |
6846 | 7132 |
6847 " ------- | 7133 " ------- |
7364 | 7650 |
7365 if a:islocal && s:netrwmftgt_islocal | 7651 if a:islocal && s:netrwmftgt_islocal |
7366 " move: local -> local | 7652 " move: local -> local |
7367 " call Decho("move from local to local",'~'.expand("<slnum>")) | 7653 " call Decho("move from local to local",'~'.expand("<slnum>")) |
7368 " call Decho("local to local move",'~'.expand("<slnum>")) | 7654 " call Decho("local to local move",'~'.expand("<slnum>")) |
7369 if !executable(g:netrw_localmovecmd) && g:netrw_localmovecmd !~ '^'.expand("$COMSPEC").'\s' | 7655 if !executable(g:netrw_localmovecmd) |
7370 call netrw#ErrorMsg(s:ERROR,"g:netrw_localmovecmd<".g:netrw_localmovecmd."> not executable on your system, aborting",90) | 7656 call netrw#ErrorMsg(s:ERROR,"g:netrw_localmovecmd<".g:netrw_localmovecmd."> not executable on your system, aborting",90) |
7371 " call Dfunc("s:NetrwMarkFileMove : g:netrw_localmovecmd<".g:netrw_localmovecmd."> n/a!") | 7657 " call Dfunc("s:NetrwMarkFileMove : g:netrw_localmovecmd<".g:netrw_localmovecmd."> n/a!") |
7372 return | 7658 return |
7373 endif | 7659 endif |
7374 let tgt = s:ShellEscape(s:netrwmftgt) | 7660 let tgt = s:ShellEscape(s:netrwmftgt) |
7375 " call Decho("tgt<".tgt.">",'~'.expand("<slnum>")) | 7661 " call Decho("tgt<".tgt.">",'~'.expand("<slnum>")) |
7376 if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16")) | 7662 if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16")) |
7377 let tgt = substitute(tgt, '/','\\','g') | 7663 let tgt= substitute(tgt, '/','\\','g') |
7378 " call Decho("windows exception: tgt<".tgt.">",'~'.expand("<slnum>")) | 7664 " call Decho("windows exception: tgt<".tgt.">",'~'.expand("<slnum>")) |
7379 if g:netrw_localmovecmd =~ '\s' | 7665 if g:netrw_localmovecmd =~ '\s' |
7380 let movecmd = substitute(g:netrw_localmovecmd,'\s.*$','','') | 7666 let movecmd = substitute(g:netrw_localmovecmd,'\s.*$','','') |
7381 let movecmdargs = substitute(g:netrw_localmovecmd,'^.\{-}\(\s.*\)$','\1','') | 7667 let movecmdargs = substitute(g:netrw_localmovecmd,'^.\{-}\(\s.*\)$','\1','') |
7382 let movecmd = netrw#WinPath(movecmd).movecmdargs | 7668 let movecmd = netrw#WinPath(movecmd).movecmdargs |
7392 for fname in s:netrwmarkfilelist_{bufnr("%")} | 7678 for fname in s:netrwmarkfilelist_{bufnr("%")} |
7393 if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16")) | 7679 if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16")) |
7394 let fname= substitute(fname,'/','\\','g') | 7680 let fname= substitute(fname,'/','\\','g') |
7395 endif | 7681 endif |
7396 " call Decho("system(".movecmd." ".s:ShellEscape(fname)." ".tgt.")",'~'.expand("<slnum>")) | 7682 " call Decho("system(".movecmd." ".s:ShellEscape(fname)." ".tgt.")",'~'.expand("<slnum>")) |
7397 let ret= system(movecmd." ".s:ShellEscape(fname)." ".tgt) | 7683 let ret= system(movecmd.g:netrw_localmovecmdopt." ".s:ShellEscape(fname)." ".tgt) |
7398 if v:shell_error != 0 | 7684 if v:shell_error != 0 |
7399 if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && !g:netrw_keepdir | 7685 if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && !g:netrw_keepdir |
7400 call netrw#ErrorMsg(s:ERROR,"move failed; perhaps due to vim's current directory<".getcwd()."> not matching netrw's (".b:netrw_curdir.") (see :help netrw-c)",100) | 7686 call netrw#ErrorMsg(s:ERROR,"move failed; perhaps due to vim's current directory<".getcwd()."> not matching netrw's (".b:netrw_curdir.") (see :help netrw-cd)",100) |
7401 else | 7687 else |
7402 call netrw#ErrorMsg(s:ERROR,"tried using g:netrw_localmovecmd<".g:netrw_localmovecmd.">; it doesn't work!",54) | 7688 call netrw#ErrorMsg(s:ERROR,"tried using g:netrw_localmovecmd<".g:netrw_localmovecmd.">; it doesn't work!",54) |
7403 endif | 7689 endif |
7404 break | 7690 break |
7405 endif | 7691 endif |
7522 let regexp= input("Enter regexp: ","","file") | 7808 let regexp= input("Enter regexp: ","","file") |
7523 call inputrestore() | 7809 call inputrestore() |
7524 | 7810 |
7525 if a:islocal | 7811 if a:islocal |
7526 let curdir= s:NetrwGetCurdir(a:islocal) | 7812 let curdir= s:NetrwGetCurdir(a:islocal) |
7813 " call Decho("curdir<".fnameescape(curdir).">") | |
7527 " get the matching list of files using local glob() | 7814 " get the matching list of files using local glob() |
7528 " call Decho("handle local regexp",'~'.expand("<slnum>")) | 7815 " call Decho("handle local regexp",'~'.expand("<slnum>")) |
7529 let dirname = escape(b:netrw_curdir,g:netrw_glob_escape) | 7816 let dirname = escape(b:netrw_curdir,g:netrw_glob_escape) |
7530 if v:version > 704 || (v:version == 704 && has("patch656")) | 7817 if v:version > 704 || (v:version == 704 && has("patch656")) |
7531 let files = glob(s:ComposePath(dirname,regexp),0,0,1) | 7818 let filelist= glob(s:ComposePath(dirname,regexp),0,1,1) |
7532 else | 7819 else |
7533 let files = glob(s:ComposePath(dirname,regexp),0,0) | 7820 let files = glob(s:ComposePath(dirname,regexp),0,0) |
7534 endif | 7821 let filelist= split(files,"\n") |
7535 " call Decho("files<".files.">",'~'.expand("<slnum>")) | 7822 endif |
7536 let filelist= split(files,"\n") | 7823 " call Decho("files<".string(filelist).">",'~'.expand("<slnum>")) |
7537 | 7824 |
7538 " mark the list of files | 7825 " mark the list of files |
7539 for fname in filelist | 7826 for fname in filelist |
7540 " call Decho("fname<".fname.">",'~'.expand("<slnum>")) | 7827 if fname =~ '^'.fnameescape(curdir) |
7541 NetrwKeepj call s:NetrwMarkFile(a:islocal,substitute(fname,'^.*/','','')) | 7828 " call Decho("fname<".substitute(fname,'^'.fnameescape(curdir).'/','','').">",'~'.expand("<slnum>")) |
7829 NetrwKeepj call s:NetrwMarkFile(a:islocal,substitute(fname,'^'.fnameescape(curdir).'/','','')) | |
7830 else | |
7831 " call Decho("fname<".fname.">",'~'.expand("<slnum>")) | |
7832 NetrwKeepj call s:NetrwMarkFile(a:islocal,substitute(fname,'^.*/','','')) | |
7833 endif | |
7542 endfor | 7834 endfor |
7543 | 7835 |
7544 else | 7836 else |
7545 " call Decho("handle remote regexp",'~'.expand("<slnum>")) | 7837 " call Decho("handle remote regexp",'~'.expand("<slnum>")) |
7546 | 7838 |
7550 sil NetrwKeepj %y a | 7842 sil NetrwKeepj %y a |
7551 setl ei=all ma | 7843 setl ei=all ma |
7552 " call Decho("setl ei=all ma",'~'.expand("<slnum>")) | 7844 " call Decho("setl ei=all ma",'~'.expand("<slnum>")) |
7553 1split | 7845 1split |
7554 NetrwKeepj call s:NetrwEnew() | 7846 NetrwKeepj call s:NetrwEnew() |
7555 NetrwKeepj call s:NetrwSafeOptions() | 7847 NetrwKeepj call s:NetrwOptionsSafe(a:islocal) |
7556 sil NetrwKeepj norm! "ap | 7848 sil NetrwKeepj norm! "ap |
7557 NetrwKeepj 2 | 7849 NetrwKeepj 2 |
7558 let bannercnt= search('^" =====','W') | 7850 let bannercnt= search('^" =====','W') |
7559 exe "sil NetrwKeepj 1,".bannercnt."d" | 7851 exe "sil NetrwKeepj 1,".bannercnt."d" |
7560 setl bt=nofile | 7852 setl bt=nofile |
7647 " call Decho("s:netrwmarkfilelist".string(s:netrwmarkfilelist).">",'~'.expand("<slnum>")) | 7939 " call Decho("s:netrwmarkfilelist".string(s:netrwmarkfilelist).">",'~'.expand("<slnum>")) |
7648 let netrwmarkfilelist= join(map(deepcopy(s:netrwmarkfilelist), "s:ShellEscape(v:val,".!a:islocal.")")) | 7940 let netrwmarkfilelist= join(map(deepcopy(s:netrwmarkfilelist), "s:ShellEscape(v:val,".!a:islocal.")")) |
7649 call s:NetrwUnmarkAll() | 7941 call s:NetrwUnmarkAll() |
7650 | 7942 |
7651 if a:islocal | 7943 if a:islocal |
7652 if executable(g:netrw_ctags) | 7944 |
7653 " call Decho("call system(".g:netrw_ctags." ".netrwmarkfilelist.")",'~'.expand("<slnum>")) | 7945 " call Decho("call system(".g:netrw_ctags." ".netrwmarkfilelist.")",'~'.expand("<slnum>")) |
7654 call system(g:netrw_ctags." ".netrwmarkfilelist) | 7946 call system(g:netrw_ctags." ".netrwmarkfilelist) |
7655 else | 7947 if v:shell_error |
7656 call netrw#ErrorMsg(s:ERROR,"g:netrw_ctags<".g:netrw_ctags."> is not executable!",51) | 7948 call netrw#ErrorMsg(s:ERROR,"g:netrw_ctags<".g:netrw_ctags."> is not executable!",51) |
7657 endif | 7949 endif |
7950 | |
7658 else | 7951 else |
7659 let cmd = s:RemoteSystem(g:netrw_ctags." ".netrwmarkfilelist) | 7952 let cmd = s:RemoteSystem(g:netrw_ctags." ".netrwmarkfilelist) |
7660 call netrw#Obtain(a:islocal,"tags") | 7953 call netrw#Obtain(a:islocal,"tags") |
7661 let curdir= b:netrw_curdir | 7954 let curdir= b:netrw_curdir |
7662 1split | 7955 1split |
8107 if exists("s:netrwmarkfilelist_{bufnr('%')}") | 8400 if exists("s:netrwmarkfilelist_{bufnr('%')}") |
8108 let islocal= s:netrwmarkfilelist_{bufnr('%')}[1] !~ '^\a\{3,}://' | 8401 let islocal= s:netrwmarkfilelist_{bufnr('%')}[1] !~ '^\a\{3,}://' |
8109 call netrw#Obtain(islocal,s:netrwmarkfilelist_{bufnr('%')}) | 8402 call netrw#Obtain(islocal,s:netrwmarkfilelist_{bufnr('%')}) |
8110 call s:NetrwUnmarkList(bufnr('%'),b:netrw_curdir) | 8403 call s:NetrwUnmarkList(bufnr('%'),b:netrw_curdir) |
8111 else | 8404 else |
8112 call netrw#Obtain(a:islocal,expand("<cWORD>")) | 8405 call netrw#Obtain(a:islocal,s:NetrwGetWord()) |
8113 endif | 8406 endif |
8114 let @@= ykeep | 8407 let @@= ykeep |
8115 | 8408 |
8116 " call Dret("NetrwObtain") | 8409 " call Dret("NetrwObtain") |
8117 endfun | 8410 endfun |
8142 | 8435 |
8143 let didsplit = 0 | 8436 let didsplit = 0 |
8144 if lastwinnr == 1 | 8437 if lastwinnr == 1 |
8145 " if only one window, open a new one first | 8438 " if only one window, open a new one first |
8146 " call Decho("only one window, so open a new one (g:netrw_alto=".g:netrw_alto.")",'~'.expand("<slnum>")) | 8439 " call Decho("only one window, so open a new one (g:netrw_alto=".g:netrw_alto.")",'~'.expand("<slnum>")) |
8440 " g:netrw_preview=0: preview window shown in a horizontally split window | |
8441 " g:netrw_preview=1: preview window shown in a vertically split window | |
8147 if g:netrw_preview | 8442 if g:netrw_preview |
8148 " vertically split preview window | 8443 " vertically split preview window |
8149 let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winheight(0))/100 : -g:netrw_winsize | 8444 let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize |
8150 " call Decho("exe ".(g:netrw_alto? "top " : "bot ")."vert ".winsz."wincmd s",'~'.expand("<slnum>")) | 8445 " call Decho("exe ".(g:netrw_alto? "top " : "bot ")."vert ".winsz."wincmd s",'~'.expand("<slnum>")) |
8151 exe (g:netrw_alto? "top " : "bot ")."vert ".winsz."wincmd s" | 8446 exe (g:netrw_alto? "top " : "bot ")."vert ".winsz."wincmd s" |
8152 else | 8447 else |
8153 " horizontally split preview window | 8448 " horizontally split preview window |
8154 let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize | 8449 let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winheight(0))/100 : -g:netrw_winsize |
8155 " call Decho("exe ".(g:netrw_alto? "bel " : "abo ").winsz."wincmd s",'~'.expand("<slnum>")) | 8450 " call Decho("exe ".(g:netrw_alto? "bel " : "abo ").winsz."wincmd s",'~'.expand("<slnum>")) |
8156 exe (g:netrw_alto? "bel " : "abo ").winsz."wincmd s" | 8451 exe (g:netrw_alto? "bel " : "abo ").winsz."wincmd s" |
8157 endif | 8452 endif |
8158 let didsplit = 1 | 8453 let didsplit = 1 |
8159 " call Decho("did split",'~'.expand("<slnum>")) | 8454 " call Decho("did split",'~'.expand("<slnum>")) |
8187 | 8482 |
8188 if bnrcnt == 1 && &hidden == 0 | 8483 if bnrcnt == 1 && &hidden == 0 |
8189 " only one copy of the modified buffer in a window, and | 8484 " only one copy of the modified buffer in a window, and |
8190 " hidden not set, so overwriting will lose the modified file. Ask first... | 8485 " hidden not set, so overwriting will lose the modified file. Ask first... |
8191 let choice = confirm("Save modified buffer<".prevbufname."> first?","&Yes\n&No\n&Cancel") | 8486 let choice = confirm("Save modified buffer<".prevbufname."> first?","&Yes\n&No\n&Cancel") |
8192 " call Decho("(NetrwPrevWinOpen) prevbufname<".prevbufname."> choice=".choice." current-winnr#".winnr(),'~'.expand("<slnum>")) | 8487 " call Decho("prevbufname<".prevbufname."> choice=".choice." current-winnr#".winnr(),'~'.expand("<slnum>")) |
8193 let &ei= eikeep | 8488 let &ei= eikeep |
8194 | 8489 |
8195 if choice == 1 | 8490 if choice == 1 |
8196 " Yes -- write file & then browse | 8491 " Yes -- write file & then browse |
8197 let v:errmsg= "" | 8492 let v:errmsg= "" |
8281 elseif type(a:fname) == 3 | 8576 elseif type(a:fname) == 3 |
8282 " handle uploading a list of files via scp | 8577 " handle uploading a list of files via scp |
8283 " call Decho("handle uploading a list of files via scp",'~'.expand("<slnum>")) | 8578 " call Decho("handle uploading a list of files via scp",'~'.expand("<slnum>")) |
8284 let curdir= getcwd() | 8579 let curdir= getcwd() |
8285 if a:tgt =~ '^scp:' | 8580 if a:tgt =~ '^scp:' |
8286 call s:NetrwLcd(fromdir) | 8581 if s:NetrwLcd(fromdir) |
8582 " call Dret("s:NetrwUpload : lcd failure") | |
8583 return | |
8584 endif | |
8287 let filelist= deepcopy(s:netrwmarkfilelist_{bufnr('%')}) | 8585 let filelist= deepcopy(s:netrwmarkfilelist_{bufnr('%')}) |
8288 let args = join(map(filelist,"s:ShellEscape(v:val, 1)")) | 8586 let args = join(map(filelist,"s:ShellEscape(v:val, 1)")) |
8289 if exists("g:netrw_port") && g:netrw_port != "" | 8587 if exists("g:netrw_port") && g:netrw_port != "" |
8290 let useport= " ".g:netrw_scpport." ".g:netrw_port | 8588 let useport= " ".g:netrw_scpport." ".g:netrw_port |
8291 else | 8589 else |
8292 let useport= "" | 8590 let useport= "" |
8293 endif | 8591 endif |
8294 let machine = substitute(a:tgt,'^scp://\([^/:]\+\).*$','\1','') | 8592 let machine = substitute(a:tgt,'^scp://\([^/:]\+\).*$','\1','') |
8295 let tgt = substitute(a:tgt,'^scp://[^/]\+/\(.*\)$','\1','') | 8593 let tgt = substitute(a:tgt,'^scp://[^/]\+/\(.*\)$','\1','') |
8296 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_scp_cmd.s:ShellEscape(useport,1)." ".args." ".s:ShellEscape(machine.":".tgt,1)) | 8594 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_scp_cmd.s:ShellEscape(useport,1)." ".args." ".s:ShellEscape(machine.":".tgt,1)) |
8297 call s:NetrwLcd(curdir) | 8595 if s:NetrwLcd(curdir) |
8596 " call Dret("s:NetrwUpload : lcd failure") | |
8597 return | |
8598 endif | |
8298 | 8599 |
8299 elseif a:tgt =~ '^ftp:' | 8600 elseif a:tgt =~ '^ftp:' |
8300 call s:NetrwMethod(a:tgt) | 8601 call s:NetrwMethod(a:tgt) |
8301 | 8602 |
8302 if b:netrw_method == 2 | 8603 if b:netrw_method == 2 |
8406 let mod = 1 | 8707 let mod = 1 |
8407 else | 8708 else |
8408 bw!|q | 8709 bw!|q |
8409 endif | 8710 endif |
8410 elseif !exists("b:netrw_method") || b:netrw_method < 0 | 8711 elseif !exists("b:netrw_method") || b:netrw_method < 0 |
8411 " call Dfunc("netrw#NetrwUpload : unsupported method") | 8712 " call Dret("s:#NetrwUpload : unsupported method") |
8412 return | 8713 return |
8413 endif | 8714 endif |
8414 else | 8715 else |
8415 call netrw#ErrorMsg(s:ERROR,"can't obtain files with protocol from<".a:tgt.">",63) | 8716 call netrw#ErrorMsg(s:ERROR,"can't obtain files with protocol from<".a:tgt.">",63) |
8416 endif | 8717 endif |
8418 | 8719 |
8419 " call Dret("s:NetrwUpload") | 8720 " call Dret("s:NetrwUpload") |
8420 endfun | 8721 endfun |
8421 | 8722 |
8422 " --------------------------------------------------------------------- | 8723 " --------------------------------------------------------------------- |
8423 " s:NetrwPreview: {{{2 | 8724 " s:NetrwPreview: supports netrw's "p" map {{{2 |
8424 fun! s:NetrwPreview(path) range | 8725 fun! s:NetrwPreview(path) range |
8425 " call Dfunc("NetrwPreview(path<".a:path.">)") | 8726 " call Dfunc("NetrwPreview(path<".a:path.">)") |
8727 " call Decho("g:netrw_alto =".(exists("g:netrw_alto")? g:netrw_alto : 'n/a'),'~'.expand("<slnum>")) | |
8728 " call Decho("g:netrw_preview=".(exists("g:netrw_preview")? g:netrw_preview : 'n/a'),'~'.expand("<slnum>")) | |
8426 let ykeep= @@ | 8729 let ykeep= @@ |
8427 NetrwKeepj call s:NetrwOptionSave("s:") | 8730 NetrwKeepj call s:NetrwOptionsSave("s:") |
8428 NetrwKeepj call s:NetrwSafeOptions() | 8731 if a:path !~ '^\*\{1,2}/' && a:path !~ '^\a\{3,}://' |
8732 NetrwKeepj call s:NetrwOptionsSafe(1) | |
8733 else | |
8734 NetrwKeepj call s:NetrwOptionsSafe(0) | |
8735 endif | |
8429 if has("quickfix") | 8736 if has("quickfix") |
8737 " call Decho("has quickfix",'~'.expand("<slnum>")) | |
8430 if !isdirectory(s:NetrwFile(a:path)) | 8738 if !isdirectory(s:NetrwFile(a:path)) |
8431 if g:netrw_preview && !g:netrw_alto | 8739 " call Decho("good; not previewing a directory",'~'.expand("<slnum>")) |
8740 if g:netrw_preview | |
8741 " vertical split | |
8432 let pvhkeep = &pvh | 8742 let pvhkeep = &pvh |
8433 let winsz = (g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize | 8743 let winsz = (g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize |
8434 let &pvh = winwidth(0) - winsz | 8744 let &pvh = winwidth(0) - winsz |
8435 endif | 8745 " call Decho("g:netrw_preview: winsz=".winsz." &pvh=".&pvh." (temporarily) g:netrw_winsize=".g:netrw_winsize,'~'.expand("<slnum>")) |
8746 else | |
8747 " horizontal split | |
8748 let pvhkeep = &pvh | |
8749 let winsz = (g:netrw_winsize > 0)? (g:netrw_winsize*winheight(0))/100 : -g:netrw_winsize | |
8750 let &pvh = winheight(0) - winsz | |
8751 " call Decho("!g:netrw_preview: winsz=".winsz." &pvh=".&pvh." (temporarily) g:netrw_winsize=".g:netrw_winsize,'~'.expand("<slnum>")) | |
8752 endif | |
8753 " g:netrw_preview g:netrw_alto | |
8754 " 1 : vert 1: top -- preview window is vertically split off and on the left | |
8755 " 1 : vert 0: bot -- preview window is vertically split off and on the right | |
8756 " 0 : 1: top -- preview window is horizontally split off and on the top | |
8757 " 0 : 0: bot -- preview window is horizontally split off and on the bottom | |
8758 " | |
8759 " Note that the file being previewed is already known to not be a directory, hence we can avoid doing a LocalBrowse() check via | |
8760 " the BufEnter event set up in netrwPlugin.vim | |
8761 " call Decho("exe ".(g:netrw_alto? "top " : "bot ").(g:netrw_preview? "vert " : "")."pedit ".fnameescape(a:path),'~'.expand("<slnum>")) | |
8762 let eikeep = &ei | |
8763 set ei=BufEnter | |
8436 exe (g:netrw_alto? "top " : "bot ").(g:netrw_preview? "vert " : "")."pedit ".fnameescape(a:path) | 8764 exe (g:netrw_alto? "top " : "bot ").(g:netrw_preview? "vert " : "")."pedit ".fnameescape(a:path) |
8765 let &ei= eikeep | |
8766 " call Decho("winnr($)=".winnr("$"),'~'.expand("<slnum>")) | |
8437 if exists("pvhkeep") | 8767 if exists("pvhkeep") |
8438 let &pvh= pvhkeep | 8768 let &pvh= pvhkeep |
8439 endif | 8769 endif |
8440 elseif !exists("g:netrw_quiet") | 8770 elseif !exists("g:netrw_quiet") |
8441 NetrwKeepj call netrw#ErrorMsg(s:WARNING,"sorry, cannot preview a directory such as <".a:path.">",38) | 8771 NetrwKeepj call netrw#ErrorMsg(s:WARNING,"sorry, cannot preview a directory such as <".a:path.">",38) |
8442 endif | 8772 endif |
8443 elseif !exists("g:netrw_quiet") | 8773 elseif !exists("g:netrw_quiet") |
8444 NetrwKeepj call netrw#ErrorMsg(s:WARNING,"sorry, to preview your vim needs the quickfix feature compiled in",39) | 8774 NetrwKeepj call netrw#ErrorMsg(s:WARNING,"sorry, to preview your vim needs the quickfix feature compiled in",39) |
8445 endif | 8775 endif |
8446 NetrwKeepj call s:NetrwOptionRestore("s:") | 8776 NetrwKeepj call s:NetrwOptionsRestore("s:") |
8447 let @@= ykeep | 8777 let @@= ykeep |
8448 " call Dret("NetrwPreview") | 8778 " call Dret("NetrwPreview") |
8449 endfun | 8779 endfun |
8450 | 8780 |
8451 " --------------------------------------------------------------------- | 8781 " --------------------------------------------------------------------- |
8452 " s:NetrwRefresh: {{{2 | 8782 " s:NetrwRefresh: {{{2 |
8453 fun! s:NetrwRefresh(islocal,dirname) | 8783 fun! s:NetrwRefresh(islocal,dirname) |
8454 " call Dfunc("s:NetrwRefresh(islocal<".a:islocal.">,dirname=".a:dirname.") hide=".g:netrw_hide." sortdir=".g:netrw_sort_direction) | 8784 " call Dfunc("s:NetrwRefresh(islocal<".a:islocal.">,dirname=".a:dirname.") g:netrw_hide=".g:netrw_hide." g:netrw_sort_direction=".g:netrw_sort_direction) |
8455 " at the current time (Mar 19, 2007) all calls to NetrwRefresh() call NetrwBrowseChgDir() first. | 8785 " at the current time (Mar 19, 2007) all calls to NetrwRefresh() call NetrwBrowseChgDir() first. |
8456 setl ma noro | 8786 setl ma noro |
8457 " call Decho("setl ma noro",'~'.expand("<slnum>")) | 8787 " call Decho("setl ma noro",'~'.expand("<slnum>")) |
8458 " call Decho("clear buffer<".expand("%")."> with :%d",'~'.expand("<slnum>")) | 8788 " call Decho("clear buffer<".expand("%")."> with :%d",'~'.expand("<slnum>")) |
8459 let ykeep = @@ | 8789 let ykeep = @@ |
8790 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST | |
8791 if !exists("w:netrw_treetop") | |
8792 if exists("b:netrw_curdir") | |
8793 let w:netrw_treetop= b:netrw_curdir | |
8794 else | |
8795 let w:netrw_treetop= getcwd() | |
8796 endif | |
8797 endif | |
8798 NetrwKeepj call s:NetrwRefreshTreeDict(w:netrw_treetop) | |
8799 endif | |
8460 | 8800 |
8461 " save the cursor position before refresh. | 8801 " save the cursor position before refresh. |
8462 let screenposn = winsaveview() | 8802 let screenposn = winsaveview() |
8463 " call Decho("saving posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>")) | 8803 " call Decho("saving posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>")) |
8464 | 8804 |
8474 " restore position | 8814 " restore position |
8475 " call Decho("restoring posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>")) | 8815 " call Decho("restoring posn to screenposn<".string(screenposn).">",'~'.expand("<slnum>")) |
8476 NetrwKeepj call winrestview(screenposn) | 8816 NetrwKeepj call winrestview(screenposn) |
8477 | 8817 |
8478 " restore file marks | 8818 " restore file marks |
8479 if exists("s:netrwmarkfilemtch_{bufnr('%')}") && s:netrwmarkfilemtch_{bufnr("%")} != "" | 8819 if has("syntax") && exists("g:syntax_on") && g:syntax_on |
8480 " call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/",'~'.expand("<slnum>")) | 8820 if exists("s:netrwmarkfilemtch_{bufnr('%')}") && s:netrwmarkfilemtch_{bufnr("%")} != "" |
8481 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/" | 8821 " " call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/",'~'.expand("<slnum>")) |
8482 else | 8822 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/" |
8483 " call Decho("2match none (bufnr(%)=".bufnr("%")."<".bufname("%").">)",'~'.expand("<slnum>")) | 8823 else |
8484 2match none | 8824 " " call Decho("2match none (bufnr(%)=".bufnr("%")."<".bufname("%").">)",'~'.expand("<slnum>")) |
8485 endif | 8825 2match none |
8826 endif | |
8827 endif | |
8486 | 8828 |
8487 " restore | 8829 " restore |
8488 let @@= ykeep | 8830 let @@= ykeep |
8489 " call Dret("s:NetrwRefresh") | 8831 " call Dret("s:NetrwRefresh") |
8490 endfun | 8832 endfun |
8655 | 8997 |
8656 " call Dret("s:NetrwSetTgt") | 8998 " call Dret("s:NetrwSetTgt") |
8657 endfun | 8999 endfun |
8658 | 9000 |
8659 " ===================================================================== | 9001 " ===================================================================== |
8660 " s:NetrwSortStyle: change sorting style (name - time - size) and refresh display {{{2 | 9002 " s:NetrwSortStyle: change sorting style (name - time - size - exten) and refresh display {{{2 |
8661 fun! s:NetrwSortStyle(islocal) | 9003 fun! s:NetrwSortStyle(islocal) |
8662 " call Dfunc("s:NetrwSortStyle(islocal=".a:islocal.") netrw_sort_by<".g:netrw_sort_by.">") | 9004 " call Dfunc("s:NetrwSortStyle(islocal=".a:islocal.") netrw_sort_by<".g:netrw_sort_by.">") |
8663 NetrwKeepj call s:NetrwSaveWordPosn() | 9005 NetrwKeepj call s:NetrwSaveWordPosn() |
8664 let svpos= winsaveview() | 9006 let svpos= winsaveview() |
8665 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) | 9007 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) |
8819 " target directory browsing history | 9161 " target directory browsing history |
8820 if exists("g:netrw_dirhistmax") && g:netrw_dirhistmax > 0 | 9162 if exists("g:netrw_dirhistmax") && g:netrw_dirhistmax > 0 |
8821 " call Decho("installing history as easy targets (histmax=".g:netrw_dirhistmax.")",'~'.expand("<slnum>")) | 9163 " call Decho("installing history as easy targets (histmax=".g:netrw_dirhistmax.")",'~'.expand("<slnum>")) |
8822 let histcnt = 1 | 9164 let histcnt = 1 |
8823 while histcnt <= g:netrw_dirhistmax | 9165 while histcnt <= g:netrw_dirhistmax |
8824 let priority = g:netrw_dirhist_cnt + histcnt | 9166 let priority = g:netrw_dirhistcnt + histcnt |
8825 if exists("g:netrw_dirhist_{histcnt}") | 9167 if exists("g:netrw_dirhist_{histcnt}") |
8826 let histentry = g:netrw_dirhist_{histcnt} | 9168 let histentry = g:netrw_dirhist_{histcnt} |
8827 if has_key(tgtdict,histentry) | 9169 if has_key(tgtdict,histentry) |
8828 let histcnt = histcnt + 1 | 9170 let histcnt = histcnt + 1 |
8829 continue | 9171 continue |
8956 | 9298 |
8957 " display subtrees (if any) | 9299 " display subtrees (if any) |
8958 let depth= s:treedepthstring.a:depth | 9300 let depth= s:treedepthstring.a:depth |
8959 " call Decho("display subtrees with depth<".depth."> and current leaves",'~'.expand("<slnum>")) | 9301 " call Decho("display subtrees with depth<".depth."> and current leaves",'~'.expand("<slnum>")) |
8960 | 9302 |
9303 " implement g:netrw_hide for tree listings (uses g:netrw_list_hide) | |
9304 if g:netrw_hide == 1 | |
9305 " hide given patterns | |
9306 let listhide= split(g:netrw_list_hide,',') | |
9307 " call Decho("listhide=".string(listhide)) | |
9308 for pat in listhide | |
9309 call filter(w:netrw_treedict[dir],'v:val !~ "'.pat.'"') | |
9310 endfor | |
9311 | |
9312 elseif g:netrw_hide == 2 | |
9313 " show given patterns (only) | |
9314 let listhide= split(g:netrw_list_hide,',') | |
9315 " call Decho("listhide=".string(listhide)) | |
9316 let entries=[] | |
9317 for entry in w:netrw_treedict[dir] | |
9318 for pat in listhide | |
9319 if entry =~ pat | |
9320 call add(entries,entry) | |
9321 break | |
9322 endif | |
9323 endfor | |
9324 endfor | |
9325 let w:netrw_treedict[dir]= entries | |
9326 endif | |
9327 if depth != "" | |
9328 " always remove "." and ".." entries when there's depth | |
9329 call filter(w:netrw_treedict[dir],'v:val !~ "\\.\\.$"') | |
9330 call filter(w:netrw_treedict[dir],'v:val !~ "\\.$"') | |
9331 endif | |
9332 | |
8961 " call Decho("for every entry in w:netrw_treedict[".dir."]=".string(w:netrw_treedict[dir]),'~'.expand("<slnum>")) | 9333 " call Decho("for every entry in w:netrw_treedict[".dir."]=".string(w:netrw_treedict[dir]),'~'.expand("<slnum>")) |
8962 for entry in w:netrw_treedict[dir] | 9334 for entry in w:netrw_treedict[dir] |
8963 if dir =~ '/$' | 9335 if dir =~ '/$' |
8964 let direntry= substitute(dir.entry,'[@/]$','','e') | 9336 let direntry= substitute(dir.entry,'[@/]$','','e') |
8965 else | 9337 else |
8978 else | 9350 else |
8979 " call Decho("<".entry."> is not a key in treedict (no subtree)",'~'.expand("<slnum>")) | 9351 " call Decho("<".entry."> is not a key in treedict (no subtree)",'~'.expand("<slnum>")) |
8980 sil! NetrwKeepj call setline(line("$")+1,depth.entry) | 9352 sil! NetrwKeepj call setline(line("$")+1,depth.entry) |
8981 endif | 9353 endif |
8982 endfor | 9354 endfor |
9355 " call Decho("displaying: ".string(getline(w:netrw_bannercnt,'$'))) | |
8983 | 9356 |
8984 " call Dret("NetrwTreeDisplay") | 9357 " call Dret("NetrwTreeDisplay") |
8985 endfun | 9358 endfun |
8986 | 9359 |
8987 " --------------------------------------------------------------------- | 9360 " --------------------------------------------------------------------- |
8988 " s:NetrwRefreshTreeDict: updates the contents information for a tree (w:netrw_treedict) {{{2 | 9361 " s:NetrwRefreshTreeDict: updates the contents information for a tree (w:netrw_treedict) {{{2 |
8989 fun! s:NetrwRefreshTreeDict(dir) | 9362 fun! s:NetrwRefreshTreeDict(dir) |
8990 " call Dfunc("s:NetrwRefreshTreeDict(dir<".a:dir.">)") | 9363 " call Dfunc("s:NetrwRefreshTreeDict(dir<".a:dir.">)") |
9364 if !exists("w:netrw_treedict") | |
9365 " call Dret("s:NetrwRefreshTreeDict : w:netrw_treedict doesn't exist") | |
9366 return | |
9367 endif | |
9368 | |
8991 for entry in w:netrw_treedict[a:dir] | 9369 for entry in w:netrw_treedict[a:dir] |
8992 let direntry= substitute(a:dir.'/'.entry,'[@/]$','','e') | 9370 let direntry= substitute(a:dir.'/'.entry,'[@/]$','','e') |
8993 " call Decho("a:dir<".a:dir."> entry<".entry."> direntry<".direntry.">",'~'.expand("<slnum>")) | 9371 " call Decho("a:dir<".a:dir."> entry<".entry."> direntry<".direntry.">",'~'.expand("<slnum>")) |
8994 | 9372 |
8995 if entry =~ '/$' && has_key(w:netrw_treedict,direntry) | 9373 if entry =~ '/$' && has_key(w:netrw_treedict,direntry) |
9014 let liststar = s:NetrwGlob(direntry.'/','*',1) | 9392 let liststar = s:NetrwGlob(direntry.'/','*',1) |
9015 let listdotstar= s:NetrwGlob(direntry.'/','.*',1) | 9393 let listdotstar= s:NetrwGlob(direntry.'/','.*',1) |
9016 " call Decho("updating w:netrw_treedict[".direntry.']='.string(w:netrw_treedict[direntry]),'~'.expand("<slnum>")) | 9394 " call Decho("updating w:netrw_treedict[".direntry.']='.string(w:netrw_treedict[direntry]),'~'.expand("<slnum>")) |
9017 | 9395 |
9018 else | 9396 else |
9019 " call Decho('not updating w:netrw_treedict['.direntry.'] with entry<'.entry.'> (no subtree)',,'~'.expand("<slnum>")) | 9397 " call Decho('not updating w:netrw_treedict['.string(direntry).'] with entry<'.string(entry).'> (no subtree)','~'.expand("<slnum>")) |
9020 endif | 9398 endif |
9021 endfor | 9399 endfor |
9022 " call Dret("s:NetrwRefreshTreeDict") | 9400 " call Dret("s:NetrwRefreshTreeDict") |
9023 endfun | 9401 endfun |
9024 | 9402 |
9081 return | 9459 return |
9082 endif | 9460 endif |
9083 endfun | 9461 endfun |
9084 | 9462 |
9085 " --------------------------------------------------------------------- | 9463 " --------------------------------------------------------------------- |
9086 " s:NetrwTreePath: returns path to current file in tree listing {{{2 | 9464 " s:NetrwTreePath: returns path to current file/directory in tree listing {{{2 |
9087 " Normally, treetop is w:netrw_treetop, but a | 9465 " Normally, treetop is w:netrw_treetop, but a |
9088 " user of the function ( netrw#SetTreetop() ) | 9466 " user of the function ( netrw#SetTreetop() ) |
9089 " wipes that out prior to calling this function | 9467 " wipes that out prior to calling this function |
9090 fun! s:NetrwTreePath(treetop) | 9468 fun! s:NetrwTreePath(treetop) |
9091 " call Dfunc("s:NetrwTreePath() line#".line(".")."<".getline(".").">") | 9469 " call Dfunc("s:NetrwTreePath(treetop<".a:treetop.">) line#".line(".")."<".getline(".").">") |
9470 if line(".") < w:netrw_bannercnt + 2 | |
9471 let treedir= a:treetop | |
9472 if treedir !~ '/$' | |
9473 let treedir= treedir.'/' | |
9474 endif | |
9475 " call Dret("s:NetrwTreePath ".treedir." : line#".line(".")." ≤ ".(w:netrw_bannercnt+2)) | |
9476 return treedir | |
9477 endif | |
9478 | |
9092 let svpos = winsaveview() | 9479 let svpos = winsaveview() |
9093 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) | 9480 " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("<slnum>")) |
9094 let depth = substitute(getline('.'),'^\(\%('.s:treedepthstring.'\)*\)[^'.s:treedepthstring.'].\{-}$','\1','e') | 9481 let depth = substitute(getline('.'),'^\(\%('.s:treedepthstring.'\)*\)[^'.s:treedepthstring.'].\{-}$','\1','e') |
9095 " call Decho("depth<".depth."> 1st subst",'~'.expand("<slnum>")) | 9482 " call Decho("depth<".depth."> 1st subst",'~'.expand("<slnum>")) |
9096 let depth = substitute(depth,'^'.s:treedepthstring,'','') | 9483 let depth = substitute(depth,'^'.s:treedepthstring,'','') |
9117 let dirname= substitute(getline('.'),'^\('.s:treedepthstring.'\)*','','e') | 9504 let dirname= substitute(getline('.'),'^\('.s:treedepthstring.'\)*','','e') |
9118 let treedir= dirname.treedir | 9505 let treedir= dirname.treedir |
9119 let depth = substitute(depth,'^'.s:treedepthstring,'','') | 9506 let depth = substitute(depth,'^'.s:treedepthstring,'','') |
9120 " call Decho("constructing treedir<".treedir.">: dirname<".dirname."> while depth<".depth.">",'~'.expand("<slnum>")) | 9507 " call Decho("constructing treedir<".treedir.">: dirname<".dirname."> while depth<".depth.">",'~'.expand("<slnum>")) |
9121 endwhile | 9508 endwhile |
9509 " call Decho("treedir#1<".treedir.">",'~'.expand("<slnum>")) | |
9122 if a:treetop =~ '/$' | 9510 if a:treetop =~ '/$' |
9123 let treedir= a:treetop.treedir | 9511 let treedir= a:treetop.treedir |
9124 else | 9512 else |
9125 let treedir= a:treetop.'/'.treedir | 9513 let treedir= a:treetop.'/'.treedir |
9126 endif | 9514 endif |
9515 " call Decho("treedir#2<".treedir.">",'~'.expand("<slnum>")) | |
9127 let treedir= substitute(treedir,'//$','/','') | 9516 let treedir= substitute(treedir,'//$','/','') |
9517 " call Decho("treedir#3<".treedir.">",'~'.expand("<slnum>")) | |
9128 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))" | 9518 " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("<slnum>"))" |
9129 call winrestview(svpos) | 9519 call winrestview(svpos) |
9130 " call Dret("s:NetrwTreePath <".treedir.">") | 9520 " call Dret("s:NetrwTreePath <".treedir.">") |
9131 return treedir | 9521 return treedir |
9132 endfun | 9522 endfun |
9193 NetrwKeepj call histdel("/",-1) | 9583 NetrwKeepj call histdel("/",-1) |
9194 exe 'nno <buffer> <silent> w :call search(''^.\\|\s\s\zs\S'',''W'')'."\<cr>" | 9584 exe 'nno <buffer> <silent> w :call search(''^.\\|\s\s\zs\S'',''W'')'."\<cr>" |
9195 exe 'nno <buffer> <silent> b :call search(''^.\\|\s\s\zs\S'',''bW'')'."\<cr>" | 9585 exe 'nno <buffer> <silent> b :call search(''^.\\|\s\s\zs\S'',''bW'')'."\<cr>" |
9196 " call Decho("NetrwWideListing) setl noma nomod ro",'~'.expand("<slnum>")) | 9586 " call Decho("NetrwWideListing) setl noma nomod ro",'~'.expand("<slnum>")) |
9197 exe "setl ".g:netrw_bufsettings | 9587 exe "setl ".g:netrw_bufsettings |
9198 " call Decho("(NetrwWideListing) ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) | 9588 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) |
9199 " call Dret("NetrwWideListing") | 9589 " call Dret("NetrwWideListing") |
9200 return | 9590 return |
9201 else | 9591 else |
9202 if hasmapto("w","n") | 9592 if hasmapto("w","n") |
9203 sil! nunmap <buffer> w | 9593 sil! nunmap <buffer> w |
9212 " --------------------------------------------------------------------- | 9602 " --------------------------------------------------------------------- |
9213 " s:PerformListing: {{{2 | 9603 " s:PerformListing: {{{2 |
9214 fun! s:PerformListing(islocal) | 9604 fun! s:PerformListing(islocal) |
9215 " call Dfunc("s:PerformListing(islocal=".a:islocal.")") | 9605 " call Dfunc("s:PerformListing(islocal=".a:islocal.")") |
9216 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol()." line($)=".line("$"),'~'.expand("<slnum>")) | 9606 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol()." line($)=".line("$"),'~'.expand("<slnum>")) |
9217 " call Decho("settings: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (enter)",'~'.expand("<slnum>")) | 9607 " call Decho("settings: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (enter)"." ei<".&ei.">",'~'.expand("<slnum>")) |
9608 sil! NetrwKeepj %d _ | |
9609 " call DechoBuf(bufnr("%")) | |
9218 | 9610 |
9219 " set up syntax highlighting {{{3 | 9611 " set up syntax highlighting {{{3 |
9220 " call Decho("--set up syntax highlighting (ie. setl ft=netrw)",'~'.expand("<slnum>")) | 9612 " call Decho("--set up syntax highlighting (ie. setl ft=netrw)",'~'.expand("<slnum>")) |
9221 sil! setl ft=netrw | 9613 sil! setl ft=netrw |
9222 | 9614 |
9223 NetrwKeepj call s:NetrwSafeOptions() | 9615 NetrwKeepj call s:NetrwOptionsSafe(a:islocal) |
9224 setl noro ma | 9616 setl noro ma |
9225 " call Decho("setl noro ma bh=".&bh,'~'.expand("<slnum>")) | 9617 " call Decho("setl noro ma bh=".&bh,'~'.expand("<slnum>")) |
9226 | 9618 |
9227 " if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1 " Decho | 9619 " if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1 " Decho |
9228 " call Decho("(netrw) Processing your browsing request...",'~'.expand("<slnum>")) | 9620 " call Decho("Processing your browsing request...",'~'.expand("<slnum>")) |
9229 " endif " Decho | 9621 " endif " Decho |
9230 | 9622 |
9231 " call Decho('w:netrw_liststyle='.(exists("w:netrw_liststyle")? w:netrw_liststyle : 'n/a'),'~'.expand("<slnum>")) | 9623 " call Decho('w:netrw_liststyle='.(exists("w:netrw_liststyle")? w:netrw_liststyle : 'n/a'),'~'.expand("<slnum>")) |
9232 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") | 9624 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") |
9233 " force a refresh for tree listings | 9625 " force a refresh for tree listings |
9267 let w:netrw_bannercnt= 1 | 9659 let w:netrw_bannercnt= 1 |
9268 endif | 9660 endif |
9269 " call Decho("w:netrw_bannercnt=".w:netrw_bannercnt." win#".winnr(),'~'.expand("<slnum>")) | 9661 " call Decho("w:netrw_bannercnt=".w:netrw_bannercnt." win#".winnr(),'~'.expand("<slnum>")) |
9270 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol()." line($)=".line("$"),'~'.expand("<slnum>")) | 9662 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol()." line($)=".line("$"),'~'.expand("<slnum>")) |
9271 | 9663 |
9664 " construct sortby string: [name|time|size|exten] [reversed] | |
9272 let sortby= g:netrw_sort_by | 9665 let sortby= g:netrw_sort_by |
9273 if g:netrw_sort_direction =~# "^r" | 9666 if g:netrw_sort_direction =~# "^r" |
9274 let sortby= sortby." reversed" | 9667 let sortby= sortby." reversed" |
9275 endif | 9668 endif |
9276 | 9669 |
9277 " Sorted by... {{{3 | 9670 " Sorted by... {{{3 |
9278 if g:netrw_banner | 9671 if g:netrw_banner |
9279 " call Decho("--handle specified sorting: g:netrw_sort_by<".g:netrw_sort_by.">",'~'.expand("<slnum>")) | 9672 " call Decho("--handle specified sorting: g:netrw_sort_by<".g:netrw_sort_by.">",'~'.expand("<slnum>")) |
9280 if g:netrw_sort_by =~# "^n" | 9673 if g:netrw_sort_by =~# "^n" |
9281 " call Decho("directories will be sorted by name",'~'.expand("<slnum>")) | 9674 " call Decho("directories will be sorted by name",'~'.expand("<slnum>")) |
9282 " sorted by name | 9675 " sorted by name (also includes the sorting sequence in the banner) |
9283 NetrwKeepj put ='\" Sorted by '.sortby | 9676 NetrwKeepj put ='\" Sorted by '.sortby |
9284 NetrwKeepj put ='\" Sort sequence: '.g:netrw_sort_sequence | 9677 NetrwKeepj put ='\" Sort sequence: '.g:netrw_sort_sequence |
9285 let w:netrw_bannercnt= w:netrw_bannercnt + 2 | 9678 let w:netrw_bannercnt= w:netrw_bannercnt + 2 |
9286 else | 9679 else |
9287 " call Decho("directories will be sorted by size or time",'~'.expand("<slnum>")) | 9680 " call Decho("directories will be sorted by size or time",'~'.expand("<slnum>")) |
9288 " sorted by size or date | 9681 " sorted by time, size, exten |
9289 NetrwKeepj put ='\" Sorted by '.sortby | 9682 NetrwKeepj put ='\" Sorted by '.sortby |
9290 let w:netrw_bannercnt= w:netrw_bannercnt + 1 | 9683 let w:netrw_bannercnt= w:netrw_bannercnt + 1 |
9291 endif | 9684 endif |
9292 exe "sil! NetrwKeepj ".w:netrw_bannercnt | 9685 exe "sil! NetrwKeepj ".w:netrw_bannercnt |
9293 " else " Decho | 9686 " else " Decho |
9294 " call Decho("g:netrw_banner=".g:netrw_banner.": banner ".(g:netrw_banner? "enabled" : "suppressed").": (line($)=".line("$")." byte2line(1)=".byte2line(1)." bannercnt=".w:netrw_bannercnt.")",'~'.expand("<slnum>")) | 9687 " call Decho("g:netrw_banner=".g:netrw_banner.": banner ".(g:netrw_banner? "enabled" : "suppressed").": (line($)=".line("$")." byte2line(1)=".byte2line(1)." bannercnt=".w:netrw_bannercnt.")",'~'.expand("<slnum>")) |
9295 endif | 9688 endif |
9296 | 9689 |
9297 " show copy/move target, if any | 9690 " show copy/move target, if any {{{3 |
9298 if g:netrw_banner | 9691 if g:netrw_banner |
9299 if exists("s:netrwmftgt") && exists("s:netrwmftgt_islocal") | 9692 if exists("s:netrwmftgt") && exists("s:netrwmftgt_islocal") |
9300 " call Decho("--show copy/move target<".s:netrwmftgt.">",'~'.expand("<slnum>")) | 9693 " call Decho("--show copy/move target<".s:netrwmftgt.">",'~'.expand("<slnum>")) |
9301 NetrwKeepj put ='' | 9694 NetrwKeepj put ='' |
9302 if s:netrwmftgt_islocal | 9695 if s:netrwmftgt_islocal |
9311 exe "sil! NetrwKeepj ".w:netrw_bannercnt | 9704 exe "sil! NetrwKeepj ".w:netrw_bannercnt |
9312 endif | 9705 endif |
9313 | 9706 |
9314 " Hiding... -or- Showing... {{{3 | 9707 " Hiding... -or- Showing... {{{3 |
9315 if g:netrw_banner | 9708 if g:netrw_banner |
9316 " call Decho("--handle hiding/showing (g:netrw_hide=".g:netrw_list_hide." g:netrw_list_hide<".g:netrw_list_hide.">)",'~'.expand("<slnum>")) | 9709 " call Decho("--handle hiding/showing (g:netrw_hide=".g:netrw_hide." g:netrw_list_hide<".g:netrw_list_hide.">)",'~'.expand("<slnum>")) |
9317 if g:netrw_list_hide != "" && g:netrw_hide | 9710 if g:netrw_list_hide != "" && g:netrw_hide |
9318 if g:netrw_hide == 1 | 9711 if g:netrw_hide == 1 |
9319 NetrwKeepj put ='\" Hiding: '.g:netrw_list_hide | 9712 NetrwKeepj put ='\" Hiding: '.g:netrw_list_hide |
9320 else | 9713 else |
9321 NetrwKeepj put ='\" Showing: '.g:netrw_list_hide | 9714 NetrwKeepj put ='\" Showing: '.g:netrw_list_hide |
9374 if !g:netrw_banner || line("$") >= w:netrw_bannercnt | 9767 if !g:netrw_banner || line("$") >= w:netrw_bannercnt |
9375 " call Decho("manipulate directory listing (sort) : g:netrw_sort_by<".g:netrw_sort_by.">",'~'.expand("<slnum>")) | 9768 " call Decho("manipulate directory listing (sort) : g:netrw_sort_by<".g:netrw_sort_by.">",'~'.expand("<slnum>")) |
9376 | 9769 |
9377 if g:netrw_sort_by =~# "^n" | 9770 if g:netrw_sort_by =~# "^n" |
9378 " sort by name | 9771 " sort by name |
9772 " call Decho("sort by name",'~'.expand("<slnum>")) | |
9379 NetrwKeepj call s:NetrwSetSort() | 9773 NetrwKeepj call s:NetrwSetSort() |
9380 | 9774 |
9381 if !g:netrw_banner || w:netrw_bannercnt < line("$") | 9775 if !g:netrw_banner || w:netrw_bannercnt < line("$") |
9382 " call Decho("g:netrw_sort_direction=".g:netrw_sort_direction." (bannercnt=".w:netrw_bannercnt.")",'~'.expand("<slnum>")) | 9776 " call Decho("g:netrw_sort_direction=".g:netrw_sort_direction." (bannercnt=".w:netrw_bannercnt.")",'~'.expand("<slnum>")) |
9383 if g:netrw_sort_direction =~# 'n' | 9777 if g:netrw_sort_direction =~# 'n' |
9384 " normal direction sorting | 9778 " name: sort by name of file |
9385 exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$sort'.' '.g:netrw_sort_options | 9779 exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$sort'.' '.g:netrw_sort_options |
9386 else | 9780 else |
9387 " reverse direction sorting | 9781 " reverse direction sorting |
9388 exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options | 9782 exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options |
9389 endif | 9783 endif |
9392 " call Decho("remove priority pattern prefix",'~'.expand("<slnum>")) | 9786 " call Decho("remove priority pattern prefix",'~'.expand("<slnum>")) |
9393 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$s/^\d\{3}'.g:netrw_sepchr.'//e' | 9787 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$s/^\d\{3}'.g:netrw_sepchr.'//e' |
9394 NetrwKeepj call histdel("/",-1) | 9788 NetrwKeepj call histdel("/",-1) |
9395 | 9789 |
9396 elseif g:netrw_sort_by =~# "^ext" | 9790 elseif g:netrw_sort_by =~# "^ext" |
9397 " sort by extension | 9791 " exten: sort by extension |
9792 " The histdel(...,-1) calls remove the last search from the search history | |
9793 " call Decho("sort by extension",'~'.expand("<slnum>")) | |
9398 exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$g+/+s/^/001'.g:netrw_sepchr.'/' | 9794 exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$g+/+s/^/001'.g:netrw_sepchr.'/' |
9399 NetrwKeepj call histdel("/",-1) | 9795 NetrwKeepj call histdel("/",-1) |
9400 exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$v+[./]+s/^/002'.g:netrw_sepchr.'/' | 9796 exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$v+[./]+s/^/002'.g:netrw_sepchr.'/' |
9401 NetrwKeepj call histdel("/",-1) | 9797 NetrwKeepj call histdel("/",-1) |
9402 exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$v+['.g:netrw_sepchr.'/]+s/^\(.*\.\)\(.\{-\}\)$/\2'.g:netrw_sepchr.'&/e' | 9798 exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$v+['.g:netrw_sepchr.'/]+s/^\(.*\.\)\(.\{-\}\)$/\2'.g:netrw_sepchr.'&/e' |
9448 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (internal#3)",'~'.expand("<slnum>")) | 9844 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (internal#3)",'~'.expand("<slnum>")) |
9449 | 9845 |
9450 " resolve symbolic links if local and (thin or tree) | 9846 " resolve symbolic links if local and (thin or tree) |
9451 if a:islocal && (w:netrw_liststyle == s:THINLIST || (exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST)) | 9847 if a:islocal && (w:netrw_liststyle == s:THINLIST || (exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST)) |
9452 " call Decho("--resolve symbolic links if local and thin|tree",'~'.expand("<slnum>")) | 9848 " call Decho("--resolve symbolic links if local and thin|tree",'~'.expand("<slnum>")) |
9453 g/@$/call s:ShowLink() | 9849 sil! g/@$/call s:ShowLink() |
9454 endif | 9850 endif |
9455 | 9851 |
9456 if exists("w:netrw_bannercnt") && (line("$") >= w:netrw_bannercnt || !g:netrw_banner) | 9852 if exists("w:netrw_bannercnt") && (line("$") >= w:netrw_bannercnt || !g:netrw_banner) |
9457 " place cursor on the top-left corner of the file listing | 9853 " place cursor on the top-left corner of the file listing |
9458 " call Decho("--place cursor on top-left corner of file listing",'~'.expand("<slnum>")) | 9854 " call Decho("--place cursor on top-left corner of file listing",'~'.expand("<slnum>")) |
9473 " save certain window-oriented variables into buffer-oriented variables {{{3 | 9869 " save certain window-oriented variables into buffer-oriented variables {{{3 |
9474 " call Decho("--save some window-oriented variables into buffer oriented variables",'~'.expand("<slnum>")) | 9870 " call Decho("--save some window-oriented variables into buffer oriented variables",'~'.expand("<slnum>")) |
9475 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (internal#4)",'~'.expand("<slnum>")) | 9871 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (internal#4)",'~'.expand("<slnum>")) |
9476 NetrwKeepj call s:SetBufWinVars() | 9872 NetrwKeepj call s:SetBufWinVars() |
9477 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (internal#5)",'~'.expand("<slnum>")) | 9873 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (internal#5)",'~'.expand("<slnum>")) |
9478 NetrwKeepj call s:NetrwOptionRestore("w:") | 9874 NetrwKeepj call s:NetrwOptionsRestore("w:") |
9479 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (internal#6)",'~'.expand("<slnum>")) | 9875 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (internal#6)",'~'.expand("<slnum>")) |
9480 | 9876 |
9481 " set display to netrw display settings | 9877 " set display to netrw display settings |
9482 " call Decho("--set display to netrw display settings (".g:netrw_bufsettings.")",'~'.expand("<slnum>")) | 9878 " call Decho("--set display to netrw display settings (".g:netrw_bufsettings.")",'~'.expand("<slnum>")) |
9483 exe "setl ".g:netrw_bufsettings | 9879 exe "setl ".g:netrw_bufsettings |
9484 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (internal#7)",'~'.expand("<slnum>")) | 9880 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (internal#7)",'~'.expand("<slnum>")) |
9485 if g:netrw_liststyle == s:LONGLIST | 9881 if g:netrw_liststyle == s:LONGLIST |
9486 " call Decho("exe setl ts=".(g:netrw_maxfilenamelen+1),'~'.expand("<slnum>")) | 9882 " call Decho("exe setl ts=".(g:netrw_maxfilenamelen+1),'~'.expand("<slnum>")) |
9487 exe "setl ts=".(g:netrw_maxfilenamelen+1) | 9883 exe "setl ts=".(g:netrw_maxfilenamelen+1) |
9488 endif | 9884 endif |
9885 " call DechoBuf(bufnr("%")) | |
9489 | 9886 |
9490 if exists("s:treecurpos") | 9887 if exists("s:treecurpos") |
9491 " call Decho("s:treecurpos exists; restore posn",'~'.expand("<slnum>")) | 9888 " call Decho("s:treecurpos exists; restore posn",'~'.expand("<slnum>")) |
9492 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (internal#8)",'~'.expand("<slnum>")) | 9889 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (internal#8)",'~'.expand("<slnum>")) |
9493 " call Decho("restoring posn to s:treecurpos<".string(s:treecurpos).">",'~'.expand("<slnum>")) | 9890 " call Decho("restoring posn to s:treecurpos<".string(s:treecurpos).">",'~'.expand("<slnum>")) |
9541 redraw | 9938 redraw |
9542 | 9939 |
9543 " call Dret("SetupNetrwStatusLine : stl=".&stl) | 9940 " call Dret("SetupNetrwStatusLine : stl=".&stl) |
9544 endfun | 9941 endfun |
9545 | 9942 |
9546 " --------------------------------------------------------------------- | 9943 " ========================================= |
9547 " Remote Directory Browsing Support: {{{1 | 9944 " Remote Directory Browsing Support: {{{1 |
9548 " =========================================== | 9945 " ========================================= |
9549 | 9946 |
9550 " --------------------------------------------------------------------- | 9947 " --------------------------------------------------------------------- |
9551 " s:NetrwRemoteFtpCmd: unfortunately, not all ftp servers honor options for ls {{{2 | 9948 " s:NetrwRemoteFtpCmd: unfortunately, not all ftp servers honor options for ls {{{2 |
9552 " This function assumes that a long listing will be received. Size, time, | 9949 " This function assumes that a long listing will be received. Size, time, |
9553 " and reverse sorts will be requested of the server but not otherwise | 9950 " and reverse sorts will be requested of the server but not otherwise |
9712 if !executable("ftp") | 10109 if !executable("ftp") |
9713 " call Decho("ftp is not executable",'~'.expand("<slnum>")) | 10110 " call Decho("ftp is not executable",'~'.expand("<slnum>")) |
9714 if !exists("g:netrw_quiet") | 10111 if !exists("g:netrw_quiet") |
9715 call netrw#ErrorMsg(s:ERROR,"this system doesn't support remote directory listing via ftp",18) | 10112 call netrw#ErrorMsg(s:ERROR,"this system doesn't support remote directory listing via ftp",18) |
9716 endif | 10113 endif |
9717 call s:NetrwOptionRestore("w:") | 10114 call s:NetrwOptionsRestore("w:") |
9718 " call Dret("s:NetrwRemoteListing -1") | 10115 " call Dret("s:NetrwRemoteListing -1") |
9719 return -1 | 10116 return -1 |
9720 endif | 10117 endif |
9721 | 10118 |
9722 elseif !exists("g:netrw_list_cmd") || g:netrw_list_cmd == '' | 10119 elseif !exists("g:netrw_list_cmd") || g:netrw_list_cmd == '' |
9727 else | 10124 else |
9728 NetrwKeepj call netrw#ErrorMsg(s:ERROR,"this system doesn't support remote directory listing via ".g:netrw_list_cmd,19) | 10125 NetrwKeepj call netrw#ErrorMsg(s:ERROR,"this system doesn't support remote directory listing via ".g:netrw_list_cmd,19) |
9729 endif | 10126 endif |
9730 endif | 10127 endif |
9731 | 10128 |
9732 NetrwKeepj call s:NetrwOptionRestore("w:") | 10129 NetrwKeepj call s:NetrwOptionsRestore("w:") |
9733 " call Dret("s:NetrwRemoteListing -1") | 10130 " call Dret("s:NetrwRemoteListing -1") |
9734 return -1 | 10131 return -1 |
9735 endif " (remote handling sanity check) | 10132 endif " (remote handling sanity check) |
9736 " call Decho("passed remote listing sanity checks",'~'.expand("<slnum>")) | 10133 " call Decho("passed remote listing sanity checks",'~'.expand("<slnum>")) |
9737 | 10134 |
9760 if exists("w:netrw_bannercnt") | 10157 if exists("w:netrw_bannercnt") |
9761 setl ma | 10158 setl ma |
9762 exe w:netrw_bannercnt.",$d _" | 10159 exe w:netrw_bannercnt.",$d _" |
9763 setl noma | 10160 setl noma |
9764 endif | 10161 endif |
9765 NetrwKeepj call s:NetrwOptionRestore("w:") | 10162 NetrwKeepj call s:NetrwOptionsRestore("w:") |
9766 call netrw#ErrorMsg(s:WARNING,mesg,96) | 10163 call netrw#ErrorMsg(s:WARNING,mesg,96) |
9767 " call Dret("s:NetrwRemoteListing : -1") | 10164 " call Dret("s:NetrwRemoteListing : -1") |
9768 return -1 | 10165 return -1 |
9769 endif | 10166 endif |
9770 | 10167 |
10003 endif | 10400 endif |
10004 " call Decho("call system(".netrw_rm_cmd.")",'~'.expand("<slnum>")) | 10401 " call Decho("call system(".netrw_rm_cmd.")",'~'.expand("<slnum>")) |
10005 let ret= system(netrw_rm_cmd) | 10402 let ret= system(netrw_rm_cmd) |
10006 if v:shell_error != 0 | 10403 if v:shell_error != 0 |
10007 if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && !g:netrw_keepdir | 10404 if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && !g:netrw_keepdir |
10008 call netrw#ErrorMsg(s:ERROR,"remove failed; perhaps due to vim's current directory<".getcwd()."> not matching netrw's (".b:netrw_curdir.") (see :help netrw-c)",102) | 10405 call netrw#ErrorMsg(s:ERROR,"remove failed; perhaps due to vim's current directory<".getcwd()."> not matching netrw's (".b:netrw_curdir.") (see :help netrw-cd)",102) |
10009 else | 10406 else |
10010 call netrw#ErrorMsg(s:WARNING,"cmd<".netrw_rm_cmd."> failed",60) | 10407 call netrw#ErrorMsg(s:WARNING,"cmd<".netrw_rm_cmd."> failed",60) |
10011 endif | 10408 endif |
10012 elseif ret != 0 | 10409 elseif ret != 0 |
10013 call netrw#ErrorMsg(s:WARNING,"cmd<".netrw_rm_cmd."> failed",60) | 10410 call netrw#ErrorMsg(s:WARNING,"cmd<".netrw_rm_cmd."> failed",60) |
10144 NetrwKeepj call winrestview(svpos) | 10541 NetrwKeepj call winrestview(svpos) |
10145 | 10542 |
10146 " call Dret("NetrwRemoteRename") | 10543 " call Dret("NetrwRemoteRename") |
10147 endfun | 10544 endfun |
10148 | 10545 |
10149 " --------------------------------------------------------------------- | 10546 " ========================================== |
10150 " Local Directory Browsing Support: {{{1 | 10547 " Local Directory Browsing Support: {{{1 |
10151 " ========================================== | 10548 " ========================================== |
10152 | 10549 |
10153 " --------------------------------------------------------------------- | 10550 " --------------------------------------------------------------------- |
10154 " netrw#FileUrlRead: handles reading file://* files {{{2 | 10551 " netrw#FileUrlEdit: handles editing file://* files {{{2 |
10155 " Should accept: file://localhost/etc/fstab | 10552 " Should accept: file://localhost/etc/fstab |
10156 " file:///etc/fstab | 10553 " file:///etc/fstab |
10157 " file:///c:/WINDOWS/clock.avi | 10554 " file:///c:/WINDOWS/clock.avi |
10158 " file:///c|/WINDOWS/clock.avi | 10555 " file:///c|/WINDOWS/clock.avi |
10159 " file://localhost/c:/WINDOWS/clock.avi | 10556 " file://localhost/c:/WINDOWS/clock.avi |
10160 " file://localhost/c|/WINDOWS/clock.avi | 10557 " file://localhost/c|/WINDOWS/clock.avi |
10161 " file://c:/foo.txt | 10558 " file://c:/foo.txt |
10162 " file:///c:/foo.txt | 10559 " file:///c:/foo.txt |
10163 " and %XX (where X is [0-9a-fA-F] is converted into a character with the given hexadecimal value | 10560 " and %XX (where X is [0-9a-fA-F] is converted into a character with the given hexadecimal value |
10164 fun! netrw#FileUrlRead(fname) | 10561 fun! netrw#FileUrlEdit(fname) |
10165 " call Dfunc("netrw#FileUrlRead(fname<".a:fname.">)") | 10562 " call Dfunc("netrw#FileUrlEdit(fname<".a:fname.">)") |
10166 let fname = a:fname | 10563 let fname = a:fname |
10167 if fname =~ '^file://localhost/' | 10564 if fname =~ '^file://localhost/' |
10168 " call Decho('converting file://localhost/ -to- file:///','~'.expand("<slnum>")) | 10565 " call Decho('converting file://localhost/ -to- file:///','~'.expand("<slnum>")) |
10169 let fname= substitute(fname,'^file://localhost/','file:///','') | 10566 let fname= substitute(fname,'^file://localhost/','file:///','') |
10170 " call Decho("fname<".fname.">",'~'.expand("<slnum>")) | 10567 " call Decho("fname<".fname.">",'~'.expand("<slnum>")) |
10184 if plainfname =~ '^/\+\a:' | 10581 if plainfname =~ '^/\+\a:' |
10185 " call Decho('removing leading "/"s','~'.expand("<slnum>")) | 10582 " call Decho('removing leading "/"s','~'.expand("<slnum>")) |
10186 let plainfname= substitute(plainfname,'^/\+\(\a:\)','\1','') | 10583 let plainfname= substitute(plainfname,'^/\+\(\a:\)','\1','') |
10187 endif | 10584 endif |
10188 endif | 10585 endif |
10586 | |
10189 " call Decho("fname2396<".fname2396.">",'~'.expand("<slnum>")) | 10587 " call Decho("fname2396<".fname2396.">",'~'.expand("<slnum>")) |
10190 " call Decho("plainfname<".plainfname.">",'~'.expand("<slnum>")) | 10588 " call Decho("plainfname<".plainfname.">",'~'.expand("<slnum>")) |
10191 exe "sil doau BufReadPre ".fname2396e | 10589 exe "sil doau BufReadPre ".fname2396e |
10192 exe 'NetrwKeepj r '.plainfname | 10590 exe 'NetrwKeepj keepalt edit '.plainfname |
10193 exe 'sil! bdelete '.plainfname | 10591 exe 'sil! NetrwKeepj keepalt bdelete '.fnameescape(a:fname) |
10194 exe 'keepalt file! '.plainfname | 10592 |
10195 NetrwKeepj 1d | |
10196 " call Decho("setl nomod",'~'.expand("<slnum>")) | |
10197 setl nomod | |
10198 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) | 10593 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) |
10199 " call Dret("netrw#FileUrlRead") | 10594 " call Dret("netrw#FileUrlEdit") |
10200 exe "sil doau BufReadPost ".fname2396e | 10595 exe "sil doau BufReadPost ".fname2396e |
10201 endfun | 10596 endfun |
10202 | 10597 |
10203 " --------------------------------------------------------------------- | 10598 " --------------------------------------------------------------------- |
10204 " netrw#LocalBrowseCheck: {{{2 | 10599 " netrw#LocalBrowseCheck: {{{2 |
10205 fun! netrw#LocalBrowseCheck(dirname) | 10600 fun! netrw#LocalBrowseCheck(dirname) |
10206 " This function is called by netrwPlugin.vim's s:LocalBrowse(), s:NetrwRexplore(), and by <cr> when atop listed file/directory | 10601 " This function is called by netrwPlugin.vim's s:LocalBrowse(), s:NetrwRexplore(), |
10207 " unfortunate interaction -- split window debugging can't be | 10602 " and by <cr> when atop a listed file/directory (via a buffer-local map) |
10208 " used here, must use D-echoRemOn or D-echoTabOn -- the BufEnter | 10603 " |
10209 " event triggers another call to LocalBrowseCheck() when attempts | 10604 " unfortunate interaction -- split window debugging can't be used here, must use |
10210 " to write to the DBG buffer are made. | 10605 " D-echoRemOn or D-echoTabOn as the BufEnter event triggers |
10606 " another call to LocalBrowseCheck() when attempts to write | |
10607 " to the DBG buffer are made. | |
10608 " | |
10211 " The &ft == "netrw" test was installed because the BufEnter event | 10609 " The &ft == "netrw" test was installed because the BufEnter event |
10212 " would hit when re-entering netrw windows, creating unexpected | 10610 " would hit when re-entering netrw windows, creating unexpected |
10213 " refreshes (and would do so in the middle of NetrwSaveOptions(), too) | 10611 " refreshes (and would do so in the middle of NetrwSaveOptions(), too) |
10214 " call Dfunc("netrw#LocalBrowseCheck(dirname<".a:dirname.">") | 10612 " call Dfunc("netrw#LocalBrowseCheck(dirname<".a:dirname.">)") |
10215 " call Decho("isdir<".a:dirname."> =".isdirectory(s:NetrwFile(a:dirname)).((exists("s:treeforceredraw")? " treeforceredraw" : "")).'~'.expand("<slnum>")) | 10613 " call Decho("isdir<".a:dirname."> =".isdirectory(s:NetrwFile(a:dirname)).((exists("s:treeforceredraw")? " treeforceredraw" : "")).'~'.expand("<slnum>")) |
10216 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>")) | 10614 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>")) |
10217 " call Dredir("ls!","ls!") | 10615 " call Dredir("ls!","netrw#LocalBrowseCheck") |
10218 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>")) | 10616 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>")) |
10219 " call Decho("current buffer#".bufnr("%")."<".bufname("%")."> ft=".&ft,'~'.expand("<slnum>")) | 10617 " call Decho("current buffer#".bufnr("%")."<".bufname("%")."> ft=".&ft,'~'.expand("<slnum>")) |
10220 | 10618 |
10221 let ykeep= @@ | 10619 let ykeep= @@ |
10222 if isdirectory(s:NetrwFile(a:dirname)) | 10620 if isdirectory(s:NetrwFile(a:dirname)) |
10239 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>")) | 10637 " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("<slnum>")) |
10240 " call Dret("netrw#LocalBrowseCheck") | 10638 " call Dret("netrw#LocalBrowseCheck") |
10241 return | 10639 return |
10242 endif | 10640 endif |
10243 | 10641 |
10244 " following code wipes out currently unused netrw buffers | 10642 " The following code wipes out currently unused netrw buffers |
10245 " IF g:netrw_fastbrowse is zero (ie. slow browsing selected) | 10643 " IF g:netrw_fastbrowse is zero (ie. slow browsing selected) |
10246 " AND IF the listing style is not a tree listing | 10644 " AND IF the listing style is not a tree listing |
10247 if exists("g:netrw_fastbrowse") && g:netrw_fastbrowse == 0 && g:netrw_liststyle != s:TREELIST | 10645 if exists("g:netrw_fastbrowse") && g:netrw_fastbrowse == 0 && g:netrw_liststyle != s:TREELIST |
10248 " call Decho("wiping out currently unused netrw buffers",'~'.expand("<slnum>")) | 10646 " call Decho("wiping out currently unused netrw buffers",'~'.expand("<slnum>")) |
10249 let ibuf = 1 | 10647 let ibuf = 1 |
10291 let buftablist = [] | 10689 let buftablist = [] |
10292 let ykeep = @@ | 10690 let ykeep = @@ |
10293 while itab <= tabpagenr("$") | 10691 while itab <= tabpagenr("$") |
10294 let buftablist = buftablist + tabpagebuflist() | 10692 let buftablist = buftablist + tabpagebuflist() |
10295 let itab = itab + 1 | 10693 let itab = itab + 1 |
10296 tabn | 10694 sil! tabn |
10297 endwhile | 10695 endwhile |
10298 " call Decho("buftablist".string(buftablist),'~'.expand("<slnum>")) | 10696 " call Decho("buftablist".string(buftablist),'~'.expand("<slnum>")) |
10299 " call Decho("s:netrw_browselist<".(exists("s:netrw_browselist")? string(s:netrw_browselist) : "").">",'~'.expand("<slnum>")) | 10697 " call Decho("s:netrw_browselist<".(exists("s:netrw_browselist")? string(s:netrw_browselist) : "").">",'~'.expand("<slnum>")) |
10300 " GO through all buffers on netrw_browselist (ie. just local-netrw buffers): | 10698 " GO through all buffers on netrw_browselist (ie. just local-netrw buffers): |
10301 " | refresh any netrw window | 10699 " | refresh any netrw window |
10302 " | wipe out any non-displaying netrw buffer | 10700 " | wipe out any non-displaying netrw buffer |
10303 let curwin = winnr() | 10701 let curwinid = win_getid(winnr()) |
10304 let ibl = 0 | 10702 let ibl = 0 |
10305 for ibuf in s:netrw_browselist | 10703 for ibuf in s:netrw_browselist |
10306 " call Decho("bufwinnr(".ibuf.") index(buftablist,".ibuf.")=".index(buftablist,ibuf),'~'.expand("<slnum>")) | 10704 " call Decho("bufwinnr(".ibuf.") index(buftablist,".ibuf.")=".index(buftablist,ibuf),'~'.expand("<slnum>")) |
10307 if bufwinnr(ibuf) == -1 && index(buftablist,ibuf) == -1 | 10705 if bufwinnr(ibuf) == -1 && index(buftablist,ibuf) == -1 |
10308 " wipe out any non-displaying netrw buffer | 10706 " wipe out any non-displaying netrw buffer |
10707 " (ibuf not shown in a current window AND | |
10708 " ibuf not in any tab) | |
10309 " call Decho("wiping buf#".ibuf,"<".bufname(ibuf).">",'~'.expand("<slnum>")) | 10709 " call Decho("wiping buf#".ibuf,"<".bufname(ibuf).">",'~'.expand("<slnum>")) |
10310 exe "sil! keepj bd ".fnameescape(ibuf) | 10710 exe "sil! keepj bd ".fnameescape(ibuf) |
10311 call remove(s:netrw_browselist,ibl) | 10711 call remove(s:netrw_browselist,ibl) |
10312 " call Decho("browselist=".string(s:netrw_browselist),'~'.expand("<slnum>")) | 10712 " call Decho("browselist=".string(s:netrw_browselist),'~'.expand("<slnum>")) |
10313 continue | 10713 continue |
10327 NetrwKeepj call s:NetrwRefresh(1,s:NetrwBrowseChgDir(1,'./')) | 10727 NetrwKeepj call s:NetrwRefresh(1,s:NetrwBrowseChgDir(1,'./')) |
10328 endif | 10728 endif |
10329 let ibl= ibl + 1 | 10729 let ibl= ibl + 1 |
10330 " call Decho("bottom of s:netrw_browselist for loop: ibl=".ibl,'~'.expand("<slnum>")) | 10730 " call Decho("bottom of s:netrw_browselist for loop: ibl=".ibl,'~'.expand("<slnum>")) |
10331 endfor | 10731 endfor |
10332 " call Decho("restore window: exe ".curwin."wincmd w",'~'.expand("<slnum>")) | 10732 " call Decho("restore window: win_gotoid(".curwinid.")") |
10333 exe curwin."wincmd w" | 10733 call win_gotoid(curwinid) |
10334 let @@= ykeep | 10734 let @@= ykeep |
10335 | 10735 |
10336 " call Dret("s:LocalBrowseRefresh") | 10736 " call Dret("s:LocalBrowseRefresh") |
10337 endfun | 10737 endfun |
10338 | 10738 |
10353 " =1: autocmds installed, but ignore next FocusGained event to avoid initial double-refresh of listing. | 10753 " =1: autocmds installed, but ignore next FocusGained event to avoid initial double-refresh of listing. |
10354 " BufEnter may be first event, then a FocusGained event. Ignore the first FocusGained event. | 10754 " BufEnter may be first event, then a FocusGained event. Ignore the first FocusGained event. |
10355 " If :Explore used: it sets s:netrw_events to 2, so no FocusGained events are ignored. | 10755 " If :Explore used: it sets s:netrw_events to 2, so no FocusGained events are ignored. |
10356 " =2: autocmds installed (doesn't ignore any FocusGained events) | 10756 " =2: autocmds installed (doesn't ignore any FocusGained events) |
10357 fun! s:LocalFastBrowser() | 10757 fun! s:LocalFastBrowser() |
10358 " call Dfunc("LocalFastBrowser() g:netrw_fastbrowse=".g:netrw_fastbrowse) | 10758 " call Dfunc("s:LocalFastBrowser() g:netrw_fastbrowse=".g:netrw_fastbrowse) |
10359 " call Decho("s:netrw_events ".(exists("s:netrw_events")? "exists" : 'n/a'),'~'.expand("<slnum>")) | 10759 " call Decho("s:netrw_events ".(exists("s:netrw_events")? "exists" : 'n/a'),'~'.expand("<slnum>")) |
10360 " call Decho("autocmd: ShellCmdPost ".(exists("#ShellCmdPost")? "installed" : "not installed"),'~'.expand("<slnum>")) | 10760 " call Decho("autocmd: ShellCmdPost ".(exists("#ShellCmdPost")? "already installed" : "not installed"),'~'.expand("<slnum>")) |
10361 " call Decho("autocmd: FocusGained ".(exists("#FocusGained")? "installed" : "not installed"),'~'.expand("<slnum>")) | 10761 " call Decho("autocmd: FocusGained ".(exists("#FocusGained")? "already installed" : "not installed"),'~'.expand("<slnum>")) |
10362 | 10762 |
10363 " initialize browselist, a list of buffer numbers that the local browser has used | 10763 " initialize browselist, a list of buffer numbers that the local browser has used |
10364 if !exists("s:netrw_browselist") | 10764 if !exists("s:netrw_browselist") |
10365 " call Decho("initialize s:netrw_browselist",'~'.expand("<slnum>")) | 10765 " call Decho("initialize s:netrw_browselist",'~'.expand("<slnum>")) |
10366 let s:netrw_browselist= [] | 10766 let s:netrw_browselist= [] |
10401 au! | 10801 au! |
10402 augroup END | 10802 augroup END |
10403 augroup! AuNetrwEvent | 10803 augroup! AuNetrwEvent |
10404 endif | 10804 endif |
10405 | 10805 |
10406 " call Dret("LocalFastBrowser : browselist<".string(s:netrw_browselist).">") | 10806 " call Dret("s:LocalFastBrowser : browselist<".string(s:netrw_browselist).">") |
10407 endfun | 10807 endfun |
10408 | 10808 |
10409 " --------------------------------------------------------------------- | 10809 " --------------------------------------------------------------------- |
10410 " s:LocalListing: does the job of "ls" for local directories {{{2 | 10810 " s:LocalListing: does the job of "ls" for local directories {{{2 |
10411 fun! s:LocalListing() | 10811 fun! s:LocalListing() |
10447 " call Decho("g:netrw_banner=".g:netrw_banner.": banner ".(g:netrw_banner? "enabled" : "suppressed").": (line($)=".line("$")." byte2line(1)=".byte2line(1)." bannercnt=".w:netrw_bannercnt.")",'~'.expand("<slnum>")) | 10847 " call Decho("g:netrw_banner=".g:netrw_banner.": banner ".(g:netrw_banner? "enabled" : "suppressed").": (line($)=".line("$")." byte2line(1)=".byte2line(1)." bannercnt=".w:netrw_bannercnt.")",'~'.expand("<slnum>")) |
10448 | 10848 |
10449 for filename in filelist | 10849 for filename in filelist |
10450 " call Decho(" ",'~'.expand("<slnum>")) | 10850 " call Decho(" ",'~'.expand("<slnum>")) |
10451 " call Decho("for filename in filelist: filename<".filename.">",'~'.expand("<slnum>")) | 10851 " call Decho("for filename in filelist: filename<".filename.">",'~'.expand("<slnum>")) |
10852 " call DechoBuf(bufnr("%"),"COMBAK#1") | |
10452 | 10853 |
10453 if getftype(filename) == "link" | 10854 if getftype(filename) == "link" |
10454 " indicate a symbolic link | 10855 " indicate a symbolic link |
10455 " call Decho("indicate <".filename."> is a symbolic link with trailing @",'~'.expand("<slnum>")) | 10856 " call Decho("indicate <".filename."> is a symbolic link with trailing @",'~'.expand("<slnum>")) |
10456 let pfile= filename."@" | 10857 let pfile= filename."@" |
10507 if w:netrw_liststyle == s:LONGLIST | 10908 if w:netrw_liststyle == s:LONGLIST |
10508 let sz = getfsize(filename) | 10909 let sz = getfsize(filename) |
10509 if g:netrw_sizestyle =~# "[hH]" | 10910 if g:netrw_sizestyle =~# "[hH]" |
10510 let sz= s:NetrwHumanReadable(sz) | 10911 let sz= s:NetrwHumanReadable(sz) |
10511 endif | 10912 endif |
10512 let fsz = strpart(" ",1,15-strlen(sz)).sz | 10913 let fsz = strpart(" ",1,15-strlen(sz)).sz |
10513 let pfile= pfile."\t".fsz." ".strftime(g:netrw_timefmt,getftime(filename)) | 10914 let longfile= printf("%-".(g:netrw_maxfilenamelen+1)."s",pfile) |
10915 let pfile = longfile.fsz." ".strftime(g:netrw_timefmt,getftime(filename)) | |
10514 " call Decho("longlist support: sz=".sz." fsz=".fsz,'~'.expand("<slnum>")) | 10916 " call Decho("longlist support: sz=".sz." fsz=".fsz,'~'.expand("<slnum>")) |
10515 endif | 10917 endif |
10516 | 10918 |
10517 if g:netrw_sort_by =~# "^t" | 10919 if g:netrw_sort_by =~# "^t" |
10518 " sort by time (handles time up to 1 quintillion seconds, US) | 10920 " sort by time (handles time up to 1 quintillion seconds, US) |
10538 else | 10940 else |
10539 " sort by name | 10941 " sort by name |
10540 " call Decho("exe NetrwKeepj put ='".pfile."'",'~'.expand("<slnum>")) | 10942 " call Decho("exe NetrwKeepj put ='".pfile."'",'~'.expand("<slnum>")) |
10541 sil! NetrwKeepj put=pfile | 10943 sil! NetrwKeepj put=pfile |
10542 endif | 10944 endif |
10945 " call DechoBuf(bufnr("%"),"COMBAK#2") | |
10543 endfor | 10946 endfor |
10544 | 10947 |
10545 " cleanup any windows mess at end-of-line | 10948 " cleanup any windows mess at end-of-line |
10546 sil! NetrwKeepj g/^$/d | 10949 sil! NetrwKeepj g/^$/d |
10547 sil! NetrwKeepj %s/\r$//e | 10950 sil! NetrwKeepj %s/\r$//e |
10784 endif | 11187 endif |
10785 endif | 11188 endif |
10786 let rmfile= substitute(rmfile,'[\/]$','','e') | 11189 let rmfile= substitute(rmfile,'[\/]$','','e') |
10787 | 11190 |
10788 if all || ok =~# 'y\%[es]' || ok == "" | 11191 if all || ok =~# 'y\%[es]' || ok == "" |
10789 if v:version < 704 || !has("patch1109") | 11192 if v:version < 704 || (v:version == 704 && !has("patch1107")) |
10790 " " call Decho("1st attempt: system(netrw#WinPath(".g:netrw_localrmdir.') '.s:ShellEscape(rmfile).')','~'.expand("<slnum>")) | 11193 " " call Decho("1st attempt: system(netrw#WinPath(".g:netrw_localrmdir.') '.s:ShellEscape(rmfile).')','~'.expand("<slnum>")) |
10791 call system(netrw#WinPath(g:netrw_localrmdir).' '.s:ShellEscape(rmfile)) | 11194 call system(netrw#WinPath(g:netrw_localrmdir).' '.s:ShellEscape(rmfile)) |
10792 " " call Decho("v:shell_error=".v:shell_error,'~'.expand("<slnum>")) | 11195 " " call Decho("v:shell_error=".v:shell_error,'~'.expand("<slnum>")) |
10793 | 11196 |
10794 if v:shell_error != 0 | 11197 if v:shell_error != 0 |
10820 | 11223 |
10821 " call Dret("s:NetrwLocalRmFile ".ok) | 11224 " call Dret("s:NetrwLocalRmFile ".ok) |
10822 return ok | 11225 return ok |
10823 endfun | 11226 endfun |
10824 | 11227 |
10825 " --------------------------------------------------------------------- | 11228 " ===================================================================== |
10826 " Support Functions: {{{1 | 11229 " Support Functions: {{{1 |
10827 | |
10828 " --------------------------------------------------------------------- | |
10829 " s:WinNames: COMBAK {{{2 | |
10830 fun! s:WinNames(id) | |
10831 let curwin= winnr() | |
10832 1wincmd w | |
10833 " call Decho("--- Windows By Name --- #".a:id) | |
10834 " windo call Decho("win#".winnr()."<".expand("%").">") | |
10835 " call Decho("--- --- --- --- --- ---") | |
10836 exe curwin."wincmd w" | |
10837 endfun | |
10838 | 11230 |
10839 " --------------------------------------------------------------------- | 11231 " --------------------------------------------------------------------- |
10840 " netrw#Access: intended to provide access to variable values for netrw's test suite {{{2 | 11232 " netrw#Access: intended to provide access to variable values for netrw's test suite {{{2 |
10841 " 0: marked file list of current buffer | 11233 " 0: marked file list of current buffer |
10842 " 1: marked file target | 11234 " 1: marked file target |
10847 else | 11239 else |
10848 return "no-list-buf#".bufnr('%') | 11240 return "no-list-buf#".bufnr('%') |
10849 endif | 11241 endif |
10850 elseif a:ilist == 1 | 11242 elseif a:ilist == 1 |
10851 return s:netrwmftgt | 11243 return s:netrwmftgt |
11244 endif | |
10852 endfun | 11245 endfun |
10853 | 11246 |
10854 " --------------------------------------------------------------------- | 11247 " --------------------------------------------------------------------- |
10855 " netrw#Call: allows user-specified mappings to call internal netrw functions {{{2 | 11248 " netrw#Call: allows user-specified mappings to call internal netrw functions {{{2 |
10856 fun! netrw#Call(funcname,...) | 11249 fun! netrw#Call(funcname,...) |
10857 " call Dfunc("netrw#Call(funcname<".a:funcname.">,".string(a:000).")") | 11250 return call("s:".a:funcname,a:000) |
10858 if a:0 > 0 | |
10859 exe "call s:".a:funcname."(".string(a:000).")" | |
10860 else | |
10861 exe "call s:".a:funcname."()" | |
10862 endif | |
10863 " call Dret("netrw#Call") | |
10864 endfun | 11251 endfun |
10865 | 11252 |
10866 " --------------------------------------------------------------------- | 11253 " --------------------------------------------------------------------- |
10867 " netrw#Expose: allows UserMaps and pchk to look at otherwise script-local variables {{{2 | 11254 " netrw#Expose: allows UserMaps and pchk to look at otherwise script-local variables {{{2 |
10868 " I expect this function to be used in | 11255 " I expect this function to be used in |
10920 " refresh : refresh the display | 11307 " refresh : refresh the display |
10921 " -other- : this string will be executed | 11308 " -other- : this string will be executed |
10922 " or it may return a List of strings. | 11309 " or it may return a List of strings. |
10923 " | 11310 " |
10924 " Each keymap-sequence will be set up with a nnoremap | 11311 " Each keymap-sequence will be set up with a nnoremap |
10925 " to invoke netrw#UserMaps(islocal). | 11312 " to invoke netrw#UserMaps(a:islocal). |
10926 " Related functions: | 11313 " Related functions: |
10927 " netrw#Expose(varname) -- see s:varname variables | 11314 " netrw#Expose(varname) -- see s:varname variables |
10928 " netrw#Modify(varname,newvalue) -- modify value of s:varname variable | 11315 " netrw#Modify(varname,newvalue) -- modify value of s:varname variable |
10929 " netrw#Call(funcname,...) -- call internal netrw function with optional arguments | 11316 " netrw#Call(funcname,...) -- call internal netrw function with optional arguments |
10930 fun! netrw#UserMaps(islocal) | 11317 fun! netrw#UserMaps(islocal) |
10968 " call Dret("netrw#WinPath <".path.">") | 11355 " call Dret("netrw#WinPath <".path.">") |
10969 return path | 11356 return path |
10970 endfun | 11357 endfun |
10971 | 11358 |
10972 " --------------------------------------------------------------------- | 11359 " --------------------------------------------------------------------- |
11360 " s:NetrwBadd: adds marked files to buffer list or vice versa {{{2 | |
11361 " cb : bl2mf=0 add marked files to buffer list | |
11362 " cB : bl2mf=1 use bufferlist to mark files | |
11363 " (mnemonic: cb = copy (marked files) to buffer list) | |
11364 fun! s:NetrwBadd(islocal,bl2mf) | |
11365 " " call Dfunc("s:NetrwBadd(islocal=".a:islocal." mf2bl=".mf2bl.")") | |
11366 if a:bl2mf | |
11367 " cB: add buffer list to marked files | |
11368 redir => bufl | |
11369 ls | |
11370 redir END | |
11371 let bufl = map(split(bufl,"\n"),'substitute(v:val,''^.\{-}"\(.*\)".\{-}$'',''\1'','''')') | |
11372 for fname in bufl | |
11373 call s:NetrwMarkFile(a:islocal,fname) | |
11374 endfor | |
11375 else | |
11376 " cb: add marked files to buffer list | |
11377 for fname in s:netrwmarkfilelist_{bufnr("%")} | |
11378 " " call Decho("badd ".fname,'~'.expand("<slnum>")) | |
11379 exe "badd ".fnameescape(fname) | |
11380 endfor | |
11381 let curbufnr = bufnr("%") | |
11382 let curdir = s:NetrwGetCurdir(a:islocal) | |
11383 call s:NetrwUnmarkList(curbufnr,curdir) " remove markings from local buffer | |
11384 endif | |
11385 " call Dret("s:NetrwBadd") | |
11386 endfun | |
11387 | |
11388 " --------------------------------------------------------------------- | |
10973 " s:ComposePath: Appends a new part to a path taking different systems into consideration {{{2 | 11389 " s:ComposePath: Appends a new part to a path taking different systems into consideration {{{2 |
10974 fun! s:ComposePath(base,subdir) | 11390 fun! s:ComposePath(base,subdir) |
10975 " call Dfunc("s:ComposePath(base<".a:base."> subdir<".a:subdir.">)") | 11391 " call Dfunc("s:ComposePath(base<".a:base."> subdir<".a:subdir.">)") |
10976 | 11392 |
10977 if has("amiga") | 11393 if has("amiga") |
10981 let ret = a:base."/" . a:subdir | 11397 let ret = a:base."/" . a:subdir |
10982 else | 11398 else |
10983 let ret = a:base.a:subdir | 11399 let ret = a:base.a:subdir |
10984 endif | 11400 endif |
10985 | 11401 |
10986 elseif a:subdir =~ '^\a:[/\\][^/\\]' && (has("win32") || has("win95") || has("win64") || has("win16")) | 11402 " COMBAK: test on windows with changing to root directory: :e C:/ |
11403 elseif a:subdir =~ '^\a:[/\\]\([^/\\]\|$\)' && (has("win32") || has("win95") || has("win64") || has("win16")) | |
10987 " call Decho("windows",'~'.expand("<slnum>")) | 11404 " call Decho("windows",'~'.expand("<slnum>")) |
10988 let ret= a:subdir | 11405 let ret= a:subdir |
10989 | 11406 |
10990 elseif a:base =~ '^\a:[/\\][^/\\]' && (has("win32") || has("win95") || has("win64") || has("win16")) | 11407 elseif a:base =~ '^\a:[/\\]\([^/\\]\|$\)' && (has("win32") || has("win95") || has("win64") || has("win16")) |
10991 " call Decho("windows",'~'.expand("<slnum>")) | 11408 " call Decho("windows",'~'.expand("<slnum>")) |
10992 if a:base =~ '[/\\]$' | 11409 if a:base =~ '[/\\]$' |
10993 let ret= a:base.a:subdir | 11410 let ret= a:base.a:subdir |
10994 else | 11411 else |
10995 let ret= a:base.'/'.a:subdir | 11412 let ret= a:base.'/'.a:subdir |
11327 endfun | 11744 endfun |
11328 | 11745 |
11329 " --------------------------------------------------------------------- | 11746 " --------------------------------------------------------------------- |
11330 " s:NetrwEnew: opens a new buffer, passes netrw buffer variables through {{{2 | 11747 " s:NetrwEnew: opens a new buffer, passes netrw buffer variables through {{{2 |
11331 fun! s:NetrwEnew(...) | 11748 fun! s:NetrwEnew(...) |
11332 " call Dfunc("s:NetrwEnew() a:0=".a:0." bufnr($)=".bufnr("$")) | 11749 " call Dfunc("s:NetrwEnew() a:0=".a:0." bufnr($)=".bufnr("$")." expand(%)<".expand("%").">") |
11333 " call Decho("curdir<".((a:0>0)? a:1 : "")."> buf#".bufnr("%")."<".bufname("%").">",'~'.expand("<slnum>")) | 11750 " call Decho("curdir<".((a:0>0)? a:1 : "")."> buf#".bufnr("%")."<".bufname("%").">",'~'.expand("<slnum>")) |
11334 | 11751 |
11335 " grab a function-local-variable copy of buffer variables | 11752 " grab a function-local-variable copy of buffer variables |
11336 " call Decho("make function-local copy of netrw variables",'~'.expand("<slnum>")) | 11753 " call Decho("make function-local copy of netrw variables",'~'.expand("<slnum>")) |
11337 if exists("b:netrw_bannercnt") |let netrw_bannercnt = b:netrw_bannercnt |endif | 11754 if exists("b:netrw_bannercnt") |let netrw_bannercnt = b:netrw_bannercnt |endif |
11349 if exists("b:netrw_liststyle") |let netrw_liststyle = b:netrw_liststyle |endif | 11766 if exists("b:netrw_liststyle") |let netrw_liststyle = b:netrw_liststyle |endif |
11350 if exists("b:netrw_method") |let netrw_method = b:netrw_method |endif | 11767 if exists("b:netrw_method") |let netrw_method = b:netrw_method |endif |
11351 if exists("b:netrw_option") |let netrw_option = b:netrw_option |endif | 11768 if exists("b:netrw_option") |let netrw_option = b:netrw_option |endif |
11352 if exists("b:netrw_prvdir") |let netrw_prvdir = b:netrw_prvdir |endif | 11769 if exists("b:netrw_prvdir") |let netrw_prvdir = b:netrw_prvdir |endif |
11353 | 11770 |
11354 NetrwKeepj call s:NetrwOptionRestore("w:") | 11771 NetrwKeepj call s:NetrwOptionsRestore("w:") |
11355 " call Decho("generate a buffer with NetrwKeepj keepalt enew!",'~'.expand("<slnum>")) | 11772 " call Decho("generate a buffer with NetrwKeepj keepalt enew!",'~'.expand("<slnum>")) |
11356 " when tree listing uses file TreeListing... a new buffer is made. | 11773 " when tree listing uses file TreeListing... a new buffer is made. |
11357 " Want the old buffer to be unlisted. | 11774 " Want the old buffer to be unlisted. |
11358 " COMBAK: this causes a problem, see P43 | 11775 " COMBAK: this causes a problem, see P43 |
11359 " setl nobl | 11776 " setl nobl |
11360 let netrw_keepdiff= &l:diff | 11777 let netrw_keepdiff= &l:diff |
11361 noswapfile NetrwKeepj keepalt enew! | 11778 noswapfile NetrwKeepj keepalt enew! |
11362 let &l:diff= netrw_keepdiff | 11779 let &l:diff= netrw_keepdiff |
11363 " call Decho("bufnr($)=".bufnr("$")."<".bufname(bufnr("$"))."> winnr($)=".winnr("$"),'~'.expand("<slnum>")) | 11780 " call Decho("bufnr($)=".bufnr("$")."<".bufname(bufnr("$"))."> winnr($)=".winnr("$"),'~'.expand("<slnum>")) |
11364 NetrwKeepj call s:NetrwOptionSave("w:") | 11781 NetrwKeepj call s:NetrwOptionsSave("w:") |
11365 | 11782 |
11366 " copy function-local-variables to buffer variable equivalents | 11783 " copy function-local-variables to buffer variable equivalents |
11367 " call Decho("copy function-local variables back to buffer netrw variables",'~'.expand("<slnum>")) | 11784 " call Decho("copy function-local variables back to buffer netrw variables",'~'.expand("<slnum>")) |
11368 if exists("netrw_bannercnt") |let b:netrw_bannercnt = netrw_bannercnt |endif | 11785 if exists("netrw_bannercnt") |let b:netrw_bannercnt = netrw_bannercnt |endif |
11369 if exists("netrw_browser_active") |let b:netrw_browser_active = netrw_browser_active |endif | 11786 if exists("netrw_browser_active") |let b:netrw_browser_active = netrw_browser_active |endif |
11390 file NetrwTreeListing | 11807 file NetrwTreeListing |
11391 setl nobl bt=nowrite bh=hide | 11808 setl nobl bt=nowrite bh=hide |
11392 nno <silent> <buffer> [ :sil call <SID>TreeListMove('[')<cr> | 11809 nno <silent> <buffer> [ :sil call <SID>TreeListMove('[')<cr> |
11393 nno <silent> <buffer> ] :sil call <SID>TreeListMove(']')<cr> | 11810 nno <silent> <buffer> ] :sil call <SID>TreeListMove(']')<cr> |
11394 else | 11811 else |
11395 exe "sil! keepalt file ".fnameescape(b:netrw_curdir) | 11812 call s:NetrwBufRename(b:netrw_curdir) |
11396 endif | 11813 endif |
11397 endif | 11814 endif |
11398 endif | 11815 endif |
11399 | 11816 |
11400 " call Dret("s:NetrwEnew : buf#".bufnr("%")."<".bufname("%")."> expand(%)<".expand("%")."> expand(#)<".expand("#")."> bh=".&bh." win#".winnr()." winnr($)#".winnr("$")) | 11817 " call Dret("s:NetrwEnew : buf#".bufnr("%")."<".bufname("%")."> expand(%)<".expand("%")."> expand(#)<".expand("#")."> bh=".&bh." win#".winnr()." winnr($)#".winnr("$")) |
11401 endfun | 11818 endfun |
11402 | 11819 |
11403 " --------------------------------------------------------------------- | 11820 " --------------------------------------------------------------------- |
11404 " s:NetrwExe: executes a string using "!" {{{2 | 11821 " s:NetrwExe: executes a string using "!" {{{2 |
11405 fun! s:NetrwExe(cmd) | 11822 fun! s:NetrwExe(cmd) |
11406 " call Dfunc("s:NetrwExe(a:cmd)") | 11823 " call Dfunc("s:NetrwExe(a:cmd<".a:cmd.">)") |
11407 if has("win32") && &shell !~? 'cmd' && !g:netrw_cygwin | 11824 if has("win32") && &shell !~? 'cmd' && !g:netrw_cygwin |
11825 " call Decho("using win32:",expand("<slnum>")) | |
11408 let savedShell=[&shell,&shellcmdflag,&shellxquote,&shellxescape,&shellquote,&shellpipe,&shellredir,&shellslash] | 11826 let savedShell=[&shell,&shellcmdflag,&shellxquote,&shellxescape,&shellquote,&shellpipe,&shellredir,&shellslash] |
11409 set shell& shellcmdflag& shellxquote& shellxescape& | 11827 set shell& shellcmdflag& shellxquote& shellxescape& |
11410 set shellquote& shellpipe& shellredir& shellslash& | 11828 set shellquote& shellpipe& shellredir& shellslash& |
11411 exe a:cmd | 11829 exe a:cmd |
11412 let [&shell,&shellcmdflag,&shellxquote,&shellxescape,&shellquote,&shellpipe,&shellredir,&shellslash] = savedShell | 11830 let [&shell,&shellcmdflag,&shellxquote,&shellxescape,&shellquote,&shellpipe,&shellredir,&shellslash] = savedShell |
11413 else | 11831 else |
11832 " call Decho("exe ".a:cmd,'~'.expand("<slnum>")) | |
11414 exe a:cmd | 11833 exe a:cmd |
11415 endif | 11834 endif |
11416 " call Dret("s:NetrwExe") | 11835 " call Dret("s:NetrwExe : v:shell_error=".v:shell_error) |
11417 endfun | 11836 endfun |
11418 | 11837 |
11419 " --------------------------------------------------------------------- | 11838 " --------------------------------------------------------------------- |
11420 " s:NetrwInsureWinVars: insure that a netrw buffer has its w: variables in spite of a wincmd v or s {{{2 | 11839 " s:NetrwInsureWinVars: insure that a netrw buffer has its w: variables in spite of a wincmd v or s {{{2 |
11421 fun! s:NetrwInsureWinVars() | 11840 fun! s:NetrwInsureWinVars() |
11444 endif | 11863 endif |
11445 endfun | 11864 endfun |
11446 | 11865 |
11447 " --------------------------------------------------------------------- | 11866 " --------------------------------------------------------------------- |
11448 " s:NetrwLcd: handles changing the (local) directory {{{2 | 11867 " s:NetrwLcd: handles changing the (local) directory {{{2 |
11868 " Returns: 0=success | |
11869 " -1=failed | |
11449 fun! s:NetrwLcd(newdir) | 11870 fun! s:NetrwLcd(newdir) |
11450 " call Dfunc("s:NetrwLcd(newdir<".a:newdir.">)") | 11871 " call Dfunc("s:NetrwLcd(newdir<".a:newdir.">)") |
11451 | 11872 |
11873 let err472= 0 | |
11452 try | 11874 try |
11453 exe 'NetrwKeepj sil lcd '.fnameescape(a:newdir) | 11875 exe 'NetrwKeepj sil lcd '.fnameescape(a:newdir) |
11454 catch /^Vim\%((\a\+)\)\=:E344/ | 11876 catch /^Vim\%((\a\+)\)\=:E344/ |
11455 " Vim's lcd fails with E344 when attempting to go above the 'root' of a Windows share. | 11877 " Vim's lcd fails with E344 when attempting to go above the 'root' of a Windows share. |
11456 " Therefore, detect if a Windows share is present, and if E344 occurs, just settle at | 11878 " Therefore, detect if a Windows share is present, and if E344 occurs, just settle at |
11462 let dirname = '\' | 11884 let dirname = '\' |
11463 exe 'NetrwKeepj sil lcd '.fnameescape(dirname) | 11885 exe 'NetrwKeepj sil lcd '.fnameescape(dirname) |
11464 endif | 11886 endif |
11465 endif | 11887 endif |
11466 catch /^Vim\%((\a\+)\)\=:E472/ | 11888 catch /^Vim\%((\a\+)\)\=:E472/ |
11889 let err472= 1 | |
11890 endtry | |
11891 | |
11892 if err472 | |
11467 call netrw#ErrorMsg(s:ERROR,"unable to change directory to <".a:newdir."> (permissions?)",61) | 11893 call netrw#ErrorMsg(s:ERROR,"unable to change directory to <".a:newdir."> (permissions?)",61) |
11468 if exists("w:netrw_prvdir") | 11894 if exists("w:netrw_prvdir") |
11469 let a:newdir= w:netrw_prvdir | 11895 let a:newdir= w:netrw_prvdir |
11470 else | 11896 else |
11471 call s:NetrwOptionRestore("w:") | 11897 call s:NetrwOptionsRestore("w:") |
11472 " call Decho("setl noma nomod nowrap",'~'.expand("<slnum>")) | 11898 " call Decho("setl noma nomod nowrap",'~'.expand("<slnum>")) |
11473 exe "setl ".g:netrw_bufsettings | 11899 exe "setl ".g:netrw_bufsettings |
11474 " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) | 11900 " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>")) |
11475 let a:newdir= dirname | 11901 let a:newdir= dirname |
11476 " call Dret("s:NetrwBrowse : reusing buffer#".(exists("bufnum")? bufnum : 'N/A')."<".dirname."> getcwd<".getcwd().">") | 11902 endif |
11477 return | 11903 " call Dret("s:NetrwBrowse -1 : reusing buffer#".(exists("bufnum")? bufnum : 'N/A')."<".dirname."> getcwd<".getcwd().">") |
11478 endif | 11904 return -1 |
11479 endtry | 11905 endif |
11480 | 11906 |
11481 " call Dret("s:NetrwLcd") | 11907 " call Dret("s:NetrwLcd 0") |
11908 return 0 | |
11482 endfun | 11909 endfun |
11483 | 11910 |
11484 " ------------------------------------------------------------------------ | 11911 " ------------------------------------------------------------------------ |
11485 " s:NetrwSaveWordPosn: used to keep cursor on same word after refresh, {{{2 | 11912 " s:NetrwSaveWordPosn: used to keep cursor on same word after refresh, {{{2 |
11486 " changed sorting, etc. Also see s:NetrwRestoreWordPosn(). | 11913 " changed sorting, etc. Also see s:NetrwRestoreWordPosn(). |
11644 " s:Rexplore: implements returning from a buffer to a netrw directory {{{2 | 12071 " s:Rexplore: implements returning from a buffer to a netrw directory {{{2 |
11645 " | 12072 " |
11646 " s:SetRexDir() sets up <2-leftmouse> maps (if g:netrw_retmap | 12073 " s:SetRexDir() sets up <2-leftmouse> maps (if g:netrw_retmap |
11647 " is true) and a command, :Rexplore, which call this function. | 12074 " is true) and a command, :Rexplore, which call this function. |
11648 " | 12075 " |
11649 " s:netrw_nbcd is set up by s:NetrwBrowseChgDir() | 12076 " s:netrw_posn is set up by s:NetrwBrowseChgDir() |
11650 " | 12077 " |
11651 " s:rexposn_BUFNR used to save/restore cursor position | 12078 " s:rexposn_BUFNR used to save/restore cursor position |
11652 fun! s:NetrwRexplore(islocal,dirname) | 12079 fun! s:NetrwRexplore(islocal,dirname) |
11653 if exists("s:netrwdrag") | 12080 if exists("s:netrwdrag") |
11654 return | 12081 return |
11700 endif | 12127 endif |
11701 else | 12128 else |
11702 " call Decho("s:rexposn_".bufnr('%')."<".bufname("%")."> doesn't exist",'~'.expand("<slnum>")) | 12129 " call Decho("s:rexposn_".bufnr('%')."<".bufname("%")."> doesn't exist",'~'.expand("<slnum>")) |
11703 endif | 12130 endif |
11704 | 12131 |
11705 if exists("s:explore_match") | 12132 if has("syntax") && exists("g:syntax_on") && g:syntax_on |
11706 exe "2match netrwMarkFile /".s:explore_match."/" | 12133 if exists("s:explore_match") |
12134 exe "2match netrwMarkFile /".s:explore_match."/" | |
12135 endif | |
11707 endif | 12136 endif |
11708 | 12137 |
11709 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>")) | 12138 " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("<slnum>")) |
11710 " call Dret("s:NetrwRexplore : ft=".&ft) | 12139 " call Dret("s:NetrwRexplore : ft=".&ft) |
11711 endfun | 12140 endfun |
11729 " --------------------------------------------------------------------- | 12158 " --------------------------------------------------------------------- |
11730 " s:SavePosn: saves position associated with current buffer into a dictionary {{{2 | 12159 " s:SavePosn: saves position associated with current buffer into a dictionary {{{2 |
11731 fun! s:SavePosn(posndict) | 12160 fun! s:SavePosn(posndict) |
11732 " call Dfunc("s:SavePosn(posndict) curbuf#".bufnr("%")."<".bufname("%").">") | 12161 " call Dfunc("s:SavePosn(posndict) curbuf#".bufnr("%")."<".bufname("%").">") |
11733 | 12162 |
11734 let a:posndict[bufnr("%")]= winsaveview() | 12163 if !exists("a:posndict[bufnr('%')]") |
11735 " call Decho("saving posn: posndict[".bufnr("%")."]=".string(winsaveview()),'~'.expand("<slnum>")) | 12164 let a:posndict[bufnr("%")]= [] |
12165 endif | |
12166 " call Decho("before push: a:posndict[buf#".bufnr("%")."]=".string(a:posndict[bufnr('%')])) | |
12167 call add(a:posndict[bufnr("%")],winsaveview()) | |
12168 " call Decho("after push: a:posndict[buf#".bufnr("%")."]=".string(a:posndict[bufnr('%')])) | |
11736 | 12169 |
11737 " call Dret("s:SavePosn posndict") | 12170 " call Dret("s:SavePosn posndict") |
11738 return a:posndict | 12171 return a:posndict |
11739 endfun | 12172 endfun |
11740 | 12173 |
11741 " --------------------------------------------------------------------- | 12174 " --------------------------------------------------------------------- |
11742 " s:RestorePosn: restores position associated with current buffer using dictionary {{{2 | 12175 " s:RestorePosn: restores position associated with current buffer using dictionary {{{2 |
11743 fun! s:RestorePosn(posndict) | 12176 fun! s:RestorePosn(posndict) |
11744 " call Dfunc("s:RestorePosn(posndict) curbuf#".bufnr("%")."<".bufname("%").">") | 12177 " call Dfunc("s:RestorePosn(posndict) curbuf#".bufnr("%")."<".bufname("%").">") |
11745 if has_key(a:posndict,bufnr("%")) | 12178 if exists("a:posndict") |
11746 call winrestview(a:posndict[bufnr("%")]) | 12179 if has_key(a:posndict,bufnr("%")) |
11747 " call Decho("restoring posn: posndict[".bufnr("%")."]=".string(a:posndict[bufnr("%")]),'~'.expand("<slnum>")) | 12180 " call Decho("before pop: a:posndict[buf#".bufnr("%")."]=".string(a:posndict[bufnr('%')])) |
12181 let posnlen= len(a:posndict[bufnr("%")]) | |
12182 if posnlen > 0 | |
12183 let posnlen= posnlen - 1 | |
12184 " call Decho("restoring posn posndict[".bufnr("%")."][".posnlen."]=".string(a:posndict[bufnr("%")][posnlen]),'~'.expand("<slnum>")) | |
12185 call winrestview(a:posndict[bufnr("%")][posnlen]) | |
12186 call remove(a:posndict[bufnr("%")],posnlen) | |
12187 " call Decho("after pop: a:posndict[buf#".bufnr("%")."]=".string(a:posndict[bufnr('%')])) | |
12188 endif | |
12189 endif | |
11748 endif | 12190 endif |
11749 " call Dret("s:RestorePosn") | 12191 " call Dret("s:RestorePosn") |
11750 endfun | 12192 endfun |
11751 | 12193 |
11752 " --------------------------------------------------------------------- | 12194 " --------------------------------------------------------------------- |
12030 endif | 12472 endif |
12031 | 12473 |
12032 " call Dret("s:UserMaps") | 12474 " call Dret("s:UserMaps") |
12033 endfun | 12475 endfun |
12034 | 12476 |
12035 " --------------------------------------------------------------------- | 12477 " ========================== |
12036 " Settings Restoration: {{{1 | 12478 " Settings Restoration: {{{1 |
12479 " ========================== | |
12037 let &cpo= s:keepcpo | 12480 let &cpo= s:keepcpo |
12038 unlet s:keepcpo | 12481 unlet s:keepcpo |
12039 | 12482 |
12040 " ------------------------------------------------------------------------ | 12483 " =============== |
12041 " Modelines: {{{1 | 12484 " Modelines: {{{1 |
12485 " =============== | |
12042 " vim:ts=8 fdm=marker | 12486 " vim:ts=8 fdm=marker |