comparison runtime/autoload/netrw.vim @ 2152:b9e314fe473f

Updated runtime files.
author Bram Moolenaar <bram@zimbu.org>
date Fri, 14 May 2010 23:24:24 +0200
parents f63ace015c63
children 6de9efd58dc0
comparison
equal deleted inserted replaced
2151:ae22c450546c 2152:b9e314fe473f
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: Dec 28, 2009 3 " Date: May 14, 2010
4 " Version: 136 4 " Version: 138
5 " Maintainer: Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM> 5 " Maintainer: Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
6 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim 6 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
7 " Copyright: Copyright (C) 1999-2009 Charles E. Campbell, Jr. {{{1 7 " Copyright: Copyright (C) 1999-2009 Charles E. Campbell, Jr. {{{1
8 " Permission is hereby granted to use and distribute this code, 8 " Permission is hereby granted to use and distribute this code,
9 " with or without modifications, provided that this copyright 9 " with or without modifications, provided that this copyright
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 let g:loaded_netrw = "v136" 25 let g:loaded_netrw = "v138"
26 if v:version < 702 26 if v:version < 702
27 echohl WarningMsg 27 echohl WarningMsg
28 echo "***warning*** this version of netrw needs vim 7.2" 28 echo "***warning*** this version of netrw needs vim 7.2"
29 echohl Normal 29 echohl Normal
30 finish 30 finish
264 call s:NetrwInit("g:netrw_rmdir_cmd" , g:netrw_ssh_cmd." USEPORT HOSTNAME rmdir") 264 call s:NetrwInit("g:netrw_rmdir_cmd" , g:netrw_ssh_cmd." USEPORT HOSTNAME rmdir")
265 call s:NetrwInit("g:netrw_rmf_cmd" , g:netrw_ssh_cmd." USEPORT HOSTNAME rm -f") 265 call s:NetrwInit("g:netrw_rmf_cmd" , g:netrw_ssh_cmd." USEPORT HOSTNAME rm -f")
266 " Default values - s ---------- {{{3 266 " Default values - s ---------- {{{3
267 " g:netrw_sepchr: picking a character that doesn't appear in filenames that can be used to separate priority from filename 267 " g:netrw_sepchr: picking a character that doesn't appear in filenames that can be used to separate priority from filename
268 call s:NetrwInit("g:netrw_sepchr" , (&enc == "euc-jp")? "\<Char-0x01>" : "\<Char-0xff>") 268 call s:NetrwInit("g:netrw_sepchr" , (&enc == "euc-jp")? "\<Char-0x01>" : "\<Char-0xff>")
269 call s:NetrwInit("s:netrw_silentxfer" , (exists("g:netrw_silent") && g:netrw_silent != 0)? "silent " : "") 269 call s:NetrwInit("s:netrw_silentxfer" , (exists("g:netrw_silent") && g:netrw_silent != 0)? "silent keepj " : "keepj ")
270 call s:NetrwInit("g:netrw_sort_by" , "name") " alternatives: date , size 270 call s:NetrwInit("g:netrw_sort_by" , "name") " alternatives: date , size
271 call s:NetrwInit("g:netrw_sort_options" , "") 271 call s:NetrwInit("g:netrw_sort_options" , "")
272 call s:NetrwInit("g:netrw_sort_direction", "normal") " alternative: reverse (z y x ...) 272 call s:NetrwInit("g:netrw_sort_direction", "normal") " alternative: reverse (z y x ...)
273 if !exists("g:netrw_sort_sequence") 273 if !exists("g:netrw_sort_sequence")
274 if has("unix") 274 if has("unix")
284 call s:NetrwInit("g:netrw_timefmt","%c") 284 call s:NetrwInit("g:netrw_timefmt","%c")
285 call s:NetrwInit("g:netrw_xstrlen",0) 285 call s:NetrwInit("g:netrw_xstrlen",0)
286 call s:NetrwInit("g:NetrwTopLvlMenu","Netrw.") 286 call s:NetrwInit("g:NetrwTopLvlMenu","Netrw.")
287 call s:NetrwInit("g:netrw_use_errorwindow",1) 287 call s:NetrwInit("g:netrw_use_errorwindow",1)
288 call s:NetrwInit("g:netrw_win95ftp",1) 288 call s:NetrwInit("g:netrw_win95ftp",1)
289 call s:NetrwInit("g:netrw_winsize","") 289 call s:NetrwInit("g:netrw_winsize",25)
290 " --------------------------------------------------------------------- 290 " ---------------------------------------------------------------------
291 " Default values for netrw's script variables: {{{2 291 " Default values for netrw's script variables: {{{2
292 call s:NetrwInit("g:netrw_fname_escape",' ?&;%') 292 call s:NetrwInit("g:netrw_fname_escape",' ?&;%')
293 call s:NetrwInit("g:netrw_glob_escape",'[]*?`{~$') 293 if has("win32") || has("win95") || has("win64") || has("win16")
294 call s:NetrwInit("g:netrw_glob_escape",'[]*?`{$')
295 else
296 call s:NetrwInit("g:netrw_glob_escape",'[]*?`{~$\')
297 endif
298 call s:NetrwInit("g:netrw_menu_escape",'./&? \')
294 call s:NetrwInit("g:netrw_tmpfile_escape",' &;') 299 call s:NetrwInit("g:netrw_tmpfile_escape",' &;')
295 call s:NetrwInit("s:netrw_map_escape","<|\n\r\\\<C-V>\"") 300 call s:NetrwInit("s:netrw_map_escape","<|\n\r\\\<C-V>\"")
296 301
297 " BufEnter event ignored by decho when following variable is true 302 " BufEnter event ignored by decho when following variable is true
298 " Has a side effect that doau BufReadPost doesn't work, so 303 " Has a side effect that doau BufReadPost doesn't work, so
327 if exists("&l:acd") 332 if exists("&l:acd")
328 let {a:vt}netrw_acdkeep = &l:acd 333 let {a:vt}netrw_acdkeep = &l:acd
329 endif 334 endif
330 let {a:vt}netrw_aikeep = &l:ai 335 let {a:vt}netrw_aikeep = &l:ai
331 let {a:vt}netrw_awkeep = &l:aw 336 let {a:vt}netrw_awkeep = &l:aw
337 let {a:vt}netrw_bombkeep = &l:bomb
332 let {a:vt}netrw_cikeep = &l:ci 338 let {a:vt}netrw_cikeep = &l:ci
333 let {a:vt}netrw_cinkeep = &l:cin 339 let {a:vt}netrw_cinkeep = &l:cin
334 let {a:vt}netrw_cinokeep = &l:cino 340 let {a:vt}netrw_cinokeep = &l:cino
335 let {a:vt}netrw_comkeep = &l:com 341 let {a:vt}netrw_comkeep = &l:com
336 let {a:vt}netrw_cpokeep = &l:cpo 342 let {a:vt}netrw_cpokeep = &l:cpo
338 let {a:vt}netrw_dirkeep = getcwd() 344 let {a:vt}netrw_dirkeep = getcwd()
339 endif 345 endif
340 let {a:vt}netrw_fokeep = &l:fo " formatoptions 346 let {a:vt}netrw_fokeep = &l:fo " formatoptions
341 let {a:vt}netrw_gdkeep = &l:gd " gdefault 347 let {a:vt}netrw_gdkeep = &l:gd " gdefault
342 let {a:vt}netrw_hidkeep = &l:hidden 348 let {a:vt}netrw_hidkeep = &l:hidden
349 let {a:vt}netrw_imkeep = &l:im
343 let {a:vt}netrw_magickeep = &l:magic 350 let {a:vt}netrw_magickeep = &l:magic
344 let {a:vt}netrw_repkeep = &l:report 351 let {a:vt}netrw_repkeep = &l:report
345 let {a:vt}netrw_spellkeep = &l:spell 352 let {a:vt}netrw_spellkeep = &l:spell
346 let {a:vt}netrw_twkeep = &l:tw " textwidth 353 let {a:vt}netrw_twkeep = &l:tw " textwidth
347 let {a:vt}netrw_wigkeep = &l:wig " wildignore 354 let {a:vt}netrw_wigkeep = &l:wig " wildignore
373 unlet {a:vt}netrw_acdkeep 380 unlet {a:vt}netrw_acdkeep
374 if &l:acd 381 if &l:acd
375 " call Decho("exe keepjumps lcd ".fnameescape(curdir)) " NOTE: was g:netrw_fname_escape for some reason 382 " call Decho("exe keepjumps lcd ".fnameescape(curdir)) " NOTE: was g:netrw_fname_escape for some reason
376 try 383 try
377 if !exists("&l:acd") && !&l:acd 384 if !exists("&l:acd") && !&l:acd
378 exe 'keepjumps lcd '.fnameescape(curdir) 385 exe 'keepj lcd '.fnameescape(curdir)
379 endif 386 endif
380 catch /^Vim\%((\a\+)\)\=:E472/ 387 catch /^Vim\%((\a\+)\)\=:E472/
381 call netrw#ErrorMsg(s:ERROR,"unable to change directory to <".curdir."> (permissions?)",61) 388 call netrw#ErrorMsg(s:ERROR,"unable to change directory to <".curdir."> (permissions?)",61)
382 endtry 389 endtry
383 endif 390 endif
384 endif 391 endif
385 endif 392 endif
386 if exists("{a:vt}netrw_aikeep") |let &l:ai = {a:vt}netrw_aikeep |unlet {a:vt}netrw_aikeep |endif 393 if exists("{a:vt}netrw_aikeep") |let &l:ai = {a:vt}netrw_aikeep |unlet {a:vt}netrw_aikeep |endif
387 if exists("{a:vt}netrw_awkeep") |let &l:aw = {a:vt}netrw_awkeep |unlet {a:vt}netrw_awkeep |endif 394 if exists("{a:vt}netrw_awkeep") |let &l:aw = {a:vt}netrw_awkeep |unlet {a:vt}netrw_awkeep |endif
395 if exists("{a:vt}netrw_bombkeep") |let &l:bomb = {a:vt}netrw_bombkeep |unlet {a:vt}netrw_bombkeep |endif
388 if exists("{a:vt}netrw_cikeep") |let &l:ci = {a:vt}netrw_cikeep |unlet {a:vt}netrw_cikeep |endif 396 if exists("{a:vt}netrw_cikeep") |let &l:ci = {a:vt}netrw_cikeep |unlet {a:vt}netrw_cikeep |endif
389 if exists("{a:vt}netrw_cinkeep") |let &l:cin = {a:vt}netrw_cinkeep |unlet {a:vt}netrw_cinkeep |endif 397 if exists("{a:vt}netrw_cinkeep") |let &l:cin = {a:vt}netrw_cinkeep |unlet {a:vt}netrw_cinkeep |endif
390 if exists("{a:vt}netrw_cinokeep") |let &l:cino = {a:vt}netrw_cinokeep |unlet {a:vt}netrw_cinokeep |endif 398 if exists("{a:vt}netrw_cinokeep") |let &l:cino = {a:vt}netrw_cinokeep |unlet {a:vt}netrw_cinokeep |endif
391 if exists("{a:vt}netrw_comkeep") |let &l:com = {a:vt}netrw_comkeep |unlet {a:vt}netrw_comkeep |endif 399 if exists("{a:vt}netrw_comkeep") |let &l:com = {a:vt}netrw_comkeep |unlet {a:vt}netrw_comkeep |endif
392 if exists("{a:vt}netrw_cpokeep") |let &l:cpo = {a:vt}netrw_cpokeep |unlet {a:vt}netrw_cpokeep |endif 400 if exists("{a:vt}netrw_cpokeep") |let &l:cpo = {a:vt}netrw_cpokeep |unlet {a:vt}netrw_cpokeep |endif
395 if exists("{a:vt}netrw_dirkeep") |exe "keepjumps lcd ".fnameescape(dirkeep)|unlet {a:vt}netrw_dirkeep |endif 403 if exists("{a:vt}netrw_dirkeep") |exe "keepjumps lcd ".fnameescape(dirkeep)|unlet {a:vt}netrw_dirkeep |endif
396 endif 404 endif
397 if exists("{a:vt}netrw_fokeep") |let &l:fo = {a:vt}netrw_fokeep |unlet {a:vt}netrw_fokeep |endif 405 if exists("{a:vt}netrw_fokeep") |let &l:fo = {a:vt}netrw_fokeep |unlet {a:vt}netrw_fokeep |endif
398 if exists("{a:vt}netrw_gdkeep") |let &l:gd = {a:vt}netrw_gdkeep |unlet {a:vt}netrw_gdkeep |endif 406 if exists("{a:vt}netrw_gdkeep") |let &l:gd = {a:vt}netrw_gdkeep |unlet {a:vt}netrw_gdkeep |endif
399 if exists("{a:vt}netrw_hidkeep") |let &l:hidden = {a:vt}netrw_hidkeep |unlet {a:vt}netrw_hidkeep |endif 407 if exists("{a:vt}netrw_hidkeep") |let &l:hidden = {a:vt}netrw_hidkeep |unlet {a:vt}netrw_hidkeep |endif
408 if exists("{a:vt}netrw_imkeep") |let &l:im = {a:vt}netrw_imkeep |unlet {a:vt}netrw_imkeep |endif
400 if exists("{a:vt}netrw_magic") |let &l:magic = {a:vt}netrw_magic |unlet {a:vt}netrw_magic |endif 409 if exists("{a:vt}netrw_magic") |let &l:magic = {a:vt}netrw_magic |unlet {a:vt}netrw_magic |endif
401 if exists("{a:vt}netrw_repkeep") |let &l:report = {a:vt}netrw_repkeep |unlet {a:vt}netrw_repkeep |endif 410 if exists("{a:vt}netrw_repkeep") |let &l:report = {a:vt}netrw_repkeep |unlet {a:vt}netrw_repkeep |endif
402 if exists("{a:vt}netrw_spellkeep")|let &l:spell = {a:vt}netrw_spellkeep |unlet {a:vt}netrw_spellkeep|endif 411 if exists("{a:vt}netrw_spellkeep")|let &l:spell = {a:vt}netrw_spellkeep |unlet {a:vt}netrw_spellkeep|endif
403 if exists("{a:vt}netrw_twkeep") |let &l:tw = {a:vt}netrw_twkeep |unlet {a:vt}netrw_twkeep |endif 412 if exists("{a:vt}netrw_twkeep") |let &l:tw = {a:vt}netrw_twkeep |unlet {a:vt}netrw_twkeep |endif
404 if exists("{a:vt}netrw_wigkeep") |let &l:wig = {a:vt}netrw_wigkeep |unlet {a:vt}netrw_wigkeep |endif 413 if exists("{a:vt}netrw_wigkeep") |let &l:wig = {a:vt}netrw_wigkeep |unlet {a:vt}netrw_wigkeep |endif
434 " call Decho("win#".winnr()."'s ft=".&ft) 443 " call Decho("win#".winnr()."'s ft=".&ft)
435 setlocal cino= 444 setlocal cino=
436 setlocal com= 445 setlocal com=
437 setlocal cpo-=aA 446 setlocal cpo-=aA
438 if exists("&acd") | setlocal noacd | endif 447 if exists("&acd") | setlocal noacd | endif
439 setlocal nocin noai noci magic nospell nohid wig= noaw 448 setlocal nocin noai nobomb noci magic nospell nohid wig= noaw noim
440 setlocal fo=nroql2 449 setlocal fo=nroql2
441 setlocal tw=0 450 setlocal tw=0
442 setlocal report=10000 451 setlocal report=10000
443 setlocal isk+=@ isk+=* isk+=/ 452 setlocal isk+=@ isk+=* isk+=/
444 if g:netrw_use_noswf && has("win32") && !has("win95") 453 if g:netrw_use_noswf && has("win32") && !has("win95")
445 setlocal noswf 454 setlocal noswf
446 endif 455 endif
456 call s:NetrwCursorline()
447 457
448 " allow the user to override safe options 458 " allow the user to override safe options
449 if &ft == "netrw" 459 if &ft == "netrw"
460 " call Decho("do any netrw FileType autocmds")
450 silent keepalt keepjumps doau FileType netrw 461 silent keepalt keepjumps doau FileType netrw
451 endif 462 endif
452 463
453 " call Decho("fo=".&fo.(exists("&acd")? " acd=".&acd : " acd doesn't exist")) 464 " call Decho("fo=".&fo.(exists("&acd")? " acd=".&acd : " acd doesn't exist"))
454 " call Dret("s:NetrwSafeOptions") 465 " call Dret("s:NetrwSafeOptions")
524 " call Dfunc("netrw#NetRead(mode=".a:mode.",...) a:0=".a:0." ".g:loaded_netrw) 535 " call Dfunc("netrw#NetRead(mode=".a:mode.",...) a:0=".a:0." ".g:loaded_netrw)
525 536
526 " NetRead: save options {{{3 537 " NetRead: save options {{{3
527 call s:NetrwOptionSave("w:") 538 call s:NetrwOptionSave("w:")
528 call s:NetrwSafeOptions() 539 call s:NetrwSafeOptions()
540 call s:RestoreCursorline()
529 541
530 " NetRead: interpret mode into a readcmd {{{3 542 " NetRead: interpret mode into a readcmd {{{3
531 if a:mode == 0 " read remote file before current line 543 if a:mode == 0 " read remote file before current line
532 let readcmd = "0r" 544 let readcmd = "0r"
533 elseif a:mode == 1 " read file after current line 545 elseif a:mode == 1 " read file after current line
620 632
621 " Check if NetrwBrowse() should be handling this request 633 " Check if NetrwBrowse() should be handling this request
622 " call Decho("checking if NetrwBrowse() should handle choice<".choice."> with netrw_list_cmd<".g:netrw_list_cmd.">") 634 " call Decho("checking if NetrwBrowse() should handle choice<".choice."> with netrw_list_cmd<".g:netrw_list_cmd.">")
623 if choice =~ "^.*[\/]$" && b:netrw_method != 5 && choice !~ '^http://' 635 if choice =~ "^.*[\/]$" && b:netrw_method != 5 && choice !~ '^http://'
624 " call Decho("yes, choice matches '^.*[\/]$'") 636 " call Decho("yes, choice matches '^.*[\/]$'")
625 keepjumps call s:NetrwBrowse(0,choice) 637 keepj call s:NetrwBrowse(0,choice)
626 " call Dret("netrw#NetRead :3 getcwd<".getcwd().">") 638 " call Dret("netrw#NetRead :3 getcwd<".getcwd().">")
627 return 639 return
628 endif 640 endif
629 641
630 " ============ 642 " ============
667 " call Decho("read via ftp+.netrc (method #2)") 679 " call Decho("read via ftp+.netrc (method #2)")
668 let netrw_fname= b:netrw_fname 680 let netrw_fname= b:netrw_fname
669 call s:SaveBufVars()|new|call s:RestoreBufVars() 681 call s:SaveBufVars()|new|call s:RestoreBufVars()
670 let filtbuf= bufnr("%") 682 let filtbuf= bufnr("%")
671 setlocal ff=unix 683 setlocal ff=unix
672 put =g:netrw_ftpmode 684 keepj put =g:netrw_ftpmode
673 " call Decho("filter input: ".getline(line("$"))) 685 " call Decho("filter input: ".getline(line("$")))
674 if exists("g:netrw_ftpextracmd") 686 if exists("g:netrw_ftpextracmd")
675 put =g:netrw_ftpextracmd 687 keepj put =g:netrw_ftpextracmd
676 " call Decho("filter input: ".getline(line("$"))) 688 " call Decho("filter input: ".getline(line("$")))
677 endif 689 endif
678 call setline(line("$")+1,'get "'.netrw_fname.'" '.tmpfile) 690 call setline(line("$")+1,'get "'.netrw_fname.'" '.tmpfile)
679 " call Decho("filter input: ".getline(line("$"))) 691 " call Decho("filter input: ".getline(line("$")))
680 if exists("g:netrw_port") && g:netrw_port != "" 692 if exists("g:netrw_port") && g:netrw_port != ""
709 let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) 721 let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
710 call s:SaveBufVars()|new|call s:RestoreBufVars() 722 call s:SaveBufVars()|new|call s:RestoreBufVars()
711 let filtbuf= bufnr("%") 723 let filtbuf= bufnr("%")
712 setlocal ff=unix 724 setlocal ff=unix
713 if exists("g:netrw_port") && g:netrw_port != "" 725 if exists("g:netrw_port") && g:netrw_port != ""
714 put ='open '.g:netrw_machine.' '.g:netrw_port 726 keepj put ='open '.g:netrw_machine.' '.g:netrw_port
715 " call Decho("filter input: ".getline('.')) 727 " call Decho("filter input: ".getline('.'))
716 else 728 else
717 put ='open '.g:netrw_machine 729 keepj put ='open '.g:netrw_machine
718 " call Decho("filter input: ".getline('.')) 730 " call Decho("filter input: ".getline('.'))
719 endif 731 endif
720 732
721 if exists("g:netrw_ftp") && g:netrw_ftp == 1 733 if exists("g:netrw_ftp") && g:netrw_ftp == 1
722 put =g:netrw_uid 734 keepj put =g:netrw_uid
723 " call Decho("filter input: ".getline('.')) 735 " call Decho("filter input: ".getline('.'))
724 put ='\"'.s:netrw_passwd.'\"' 736 keepj put ='\"'.s:netrw_passwd.'\"'
725 " call Decho("filter input: ".getline('.')) 737 " call Decho("filter input: ".getline('.'))
726 else 738 else
727 put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"' 739 keepj put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"'
728 " call Decho("filter input: ".getline('.')) 740 " call Decho("filter input: ".getline('.'))
729 endif 741 endif
730 742
731 if exists("g:netrw_ftpmode") && g:netrw_ftpmode != "" 743 if exists("g:netrw_ftpmode") && g:netrw_ftpmode != ""
732 put =g:netrw_ftpmode 744 keepj put =g:netrw_ftpmode
733 " call Decho("filter input: ".getline('.')) 745 " call Decho("filter input: ".getline('.'))
734 endif 746 endif
735 if exists("g:netrw_ftpextracmd") 747 if exists("g:netrw_ftpextracmd")
736 put =g:netrw_ftpextracmd 748 put =g:netrw_ftpextracmd
737 " call Decho("filter input: ".getline('.')) 749 " call Decho("filter input: ".getline('.'))
738 endif 750 endif
739 put ='get \"'.netrw_fname.'\" '.tmpfile 751 keepj put ='get \"'.netrw_fname.'\" '.tmpfile
740 " call Decho("filter input: ".getline('.')) 752 " call Decho("filter input: ".getline('.'))
741 753
742 " perform ftp: 754 " perform ftp:
743 " -i : turns off interactive prompting from ftp 755 " -i : turns off interactive prompting from ftp
744 " -n unix : DON'T use <.netrc>, even though it exists 756 " -n unix : DON'T use <.netrc>, even though it exists
828 " Construct execution string (four lines) which will be passed through filter 840 " Construct execution string (four lines) which will be passed through filter
829 let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) 841 let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
830 new 842 new
831 setlocal ff=unix 843 setlocal ff=unix
832 if exists("g:netrw_port") && g:netrw_port != "" 844 if exists("g:netrw_port") && g:netrw_port != ""
833 put ='open '.g:netrw_machine.' '.g:netrw_port 845 keepj put ='open '.g:netrw_machine.' '.g:netrw_port
834 else 846 else
835 put ='open '.g:netrw_machine 847 keepj put ='open '.g:netrw_machine
836 endif 848 endif
837 put ='user '.g:netrw_uid.' '.s:netrw_passwd 849 keepj put ='user '.g:netrw_uid.' '.s:netrw_passwd
838 put ='get '.netrw_fname.' '.tmpfile 850 keepj put ='get '.netrw_fname.' '.tmpfile
839 put ='quit' 851 keepj put ='quit'
840 852
841 " perform cadaver operation: 853 " perform cadaver operation:
842 norm! 1Gdd 854 keepj norm! 1Gdd
843 " call Decho("executing: %!".g:netrw_dav_cmd) 855 " call Decho("executing: %!".g:netrw_dav_cmd)
844 exe s:netrw_silentxfer."%!".g:netrw_dav_cmd 856 exe s:netrw_silentxfer."%!".g:netrw_dav_cmd
845 bd! 857 bd!
846 endif 858 endif
847 let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) 859 let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method)
945 if &binary 957 if &binary
946 " For binary writes, always write entire file. 958 " For binary writes, always write entire file.
947 " (line numbers don't really make sense for that). 959 " (line numbers don't really make sense for that).
948 " Also supports the writing of tar and zip files. 960 " Also supports the writing of tar and zip files.
949 " call Decho("(write entire file) silent exe w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile)) 961 " call Decho("(write entire file) silent exe w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile))
950 silent exe "w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile) 962 exe "silent keepj w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile)
951 elseif g:netrw_cygwin 963 elseif g:netrw_cygwin
952 " write (selected portion of) file to temporary 964 " write (selected portion of) file to temporary
953 let cygtmpfile= substitute(tmpfile,'/cygdrive/\(.\)','\1:','') 965 let cygtmpfile= substitute(tmpfile,'/cygdrive/\(.\)','\1:','')
954 " call Decho("(write selected portion) silent exe ".a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(cygtmpfile)) 966 " call Decho("(write selected portion) silent exe ".a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(cygtmpfile))
955 silent exe a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(cygtmpfile) 967 exe "sil keepj ".a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(cygtmpfile)
956 else 968 else
957 " write (selected portion of) file to temporary 969 " write (selected portion of) file to temporary
958 " call Decho("(write selected portion) silent exe ".a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile)) 970 " call Decho("(write selected portion) silent exe ".a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile))
959 silent exe a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile) 971 exe "sil keepj ".a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile)
960 endif 972 endif
961 973
962 if curbufname == "" 974 if curbufname == ""
963 " if the file is [No Name], and one attempts to Nwrite it, the buffer takes 975 " if the file is [No Name], and one attempts to Nwrite it, the buffer takes
964 " on the temporary file's name. Deletion of the temporary file during 976 " on the temporary file's name. Deletion of the temporary file during
1070 setlocal bh=hide 1082 setlocal bh=hide
1071 enew 1083 enew
1072 1084
1073 " call Decho("filter input window#".winnr()) 1085 " call Decho("filter input window#".winnr())
1074 setlocal ff=unix 1086 setlocal ff=unix
1075 put =g:netrw_ftpmode 1087 keepj put =g:netrw_ftpmode
1076 " call Decho("filter input: ".getline('$')) 1088 " call Decho("filter input: ".getline('$'))
1077 if exists("g:netrw_ftpextracmd") 1089 if exists("g:netrw_ftpextracmd")
1078 put =g:netrw_ftpextracmd 1090 keepj put =g:netrw_ftpextracmd
1079 " call Decho("filter input: ".getline("$")) 1091 " call Decho("filter input: ".getline("$"))
1080 endif 1092 endif
1081 call setline(line("$")+1,'put "'.tmpfile.'" "'.netrw_fname.'"') 1093 call setline(line("$")+1,'put "'.tmpfile.'" "'.netrw_fname.'"')
1082 " call Decho("filter input: ".getline("$")) 1094 " call Decho("filter input: ".getline("$"))
1083 if exists("g:netrw_port") && g:netrw_port != "" 1095 if exists("g:netrw_port") && g:netrw_port != ""
1117 setlocal bh=hide 1129 setlocal bh=hide
1118 enew 1130 enew
1119 setlocal ff=unix 1131 setlocal ff=unix
1120 1132
1121 if exists("g:netrw_port") && g:netrw_port != "" 1133 if exists("g:netrw_port") && g:netrw_port != ""
1122 put ='open '.g:netrw_machine.' '.g:netrw_port 1134 keepj put ='open '.g:netrw_machine.' '.g:netrw_port
1123 " call Decho("filter input: ".getline('.')) 1135 " call Decho("filter input: ".getline('.'))
1124 else 1136 else
1125 put ='open '.g:netrw_machine 1137 keepj put ='open '.g:netrw_machine
1126 " call Decho("filter input: ".getline('.')) 1138 " call Decho("filter input: ".getline('.'))
1127 endif 1139 endif
1128 if exists("g:netrw_ftp") && g:netrw_ftp == 1 1140 if exists("g:netrw_ftp") && g:netrw_ftp == 1
1129 put =g:netrw_uid 1141 keepj put =g:netrw_uid
1130 " call Decho("filter input: ".getline('.')) 1142 " call Decho("filter input: ".getline('.'))
1131 put ='\"'.s:netrw_passwd.'\"' 1143 keepj put ='\"'.s:netrw_passwd.'\"'
1132 " call Decho("filter input: ".getline('.')) 1144 " call Decho("filter input: ".getline('.'))
1133 else 1145 else
1134 put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"' 1146 keepj put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"'
1135 " call Decho("filter input: ".getline('.')) 1147 " call Decho("filter input: ".getline('.'))
1136 endif 1148 endif
1137 put =g:netrw_ftpmode 1149 keepj put =g:netrw_ftpmode
1138 " call Decho("filter input: ".getline('$')) 1150 " call Decho("filter input: ".getline('$'))
1139 if exists("g:netrw_ftpextracmd") 1151 if exists("g:netrw_ftpextracmd")
1140 put =g:netrw_ftpextracmd 1152 keepj put =g:netrw_ftpextracmd
1141 " call Decho("filter input: ".getline("$")) 1153 " call Decho("filter input: ".getline("$"))
1142 endif 1154 endif
1143 put ='put \"'.tmpfile.'\" \"'.netrw_fname.'\"' 1155 keepj put ='put \"'.tmpfile.'\" \"'.netrw_fname.'\"'
1144 " call Decho("filter input: ".getline('.')) 1156 " call Decho("filter input: ".getline('.'))
1145 " save choice/id/password for future use 1157 " save choice/id/password for future use
1146 let b:netrw_lastfile = choice 1158 let b:netrw_lastfile = choice
1147 1159
1148 " perform ftp: 1160 " perform ftp:
1149 " -i : turns off interactive prompting from ftp 1161 " -i : turns off interactive prompting from ftp
1150 " -n unix : DON'T use <.netrc>, even though it exists 1162 " -n unix : DON'T use <.netrc>, even though it exists
1151 " -n win32: quit being obnoxious about password 1163 " -n win32: quit being obnoxious about password
1152 norm! 1Gdd 1164 keepj norm! 1Gdd
1153 " call Decho("executing: %!".g:netrw_ftp_cmd." -i -n") 1165 " call Decho("executing: %!".g:netrw_ftp_cmd." -i -n")
1154 exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n" 1166 exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n"
1155 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) 1167 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
1156 if getline(1) !~ "^$" 1168 if getline(1) !~ "^$"
1157 if !exists("g:netrw_quiet") 1169 if !exists("g:netrw_quiet")
1201 setlocal bh=hide 1213 setlocal bh=hide
1202 enew 1214 enew
1203 1215
1204 setlocal ff=unix 1216 setlocal ff=unix
1205 if exists("g:netrw_port") && g:netrw_port != "" 1217 if exists("g:netrw_port") && g:netrw_port != ""
1206 put ='open '.g:netrw_machine.' '.g:netrw_port 1218 keepj put ='open '.g:netrw_machine.' '.g:netrw_port
1207 else 1219 else
1208 put ='open '.g:netrw_machine 1220 keepj put ='open '.g:netrw_machine
1209 endif 1221 endif
1210 if exists("g:netrw_uid") && exists("s:netrw_passwd") 1222 if exists("g:netrw_uid") && exists("s:netrw_passwd")
1211 put ='user '.g:netrw_uid.' '.s:netrw_passwd 1223 keepj put ='user '.g:netrw_uid.' '.s:netrw_passwd
1212 endif 1224 endif
1213 put ='put '.tmpfile.' '.netrw_fname 1225 keepj put ='put '.tmpfile.' '.netrw_fname
1214 1226
1215 " perform cadaver operation: 1227 " perform cadaver operation:
1216 norm! 1Gdd 1228 keepj norm! 1Gdd
1217 " call Decho("executing: %!".g:netrw_dav_cmd) 1229 " call Decho("executing: %!".g:netrw_dav_cmd)
1218 exe s:netrw_silentxfer."%!".g:netrw_dav_cmd 1230 exe s:netrw_silentxfer."%!".g:netrw_dav_cmd
1219 1231
1220 " remove enew buffer (quietly) 1232 " remove enew buffer (quietly)
1221 let filtbuf= bufnr("%") 1233 let filtbuf= bufnr("%")
1380 e! 1392 e!
1381 endif 1393 endif
1382 1394
1383 " rename buffer back to remote filename 1395 " rename buffer back to remote filename
1384 " call Decho("exe silent! keepalt file ".fnameescape(rfile)) 1396 " call Decho("exe silent! keepalt file ".fnameescape(rfile))
1385 exe "silent! keepalt file ".fnameescape(rfile) 1397 exe "sil! keepalt file ".fnameescape(rfile)
1386 filetype detect 1398 filetype detect
1387 " call Dredir("renamed buffer back to remote filename<".rfile."> : expand(%)<".expand("%").">","ls!") 1399 " call Dredir("renamed buffer back to remote filename<".rfile."> : expand(%)<".expand("%").">","ls!")
1388 let line1 = 1 1400 let line1 = 1
1389 let line2 = line("$") 1401 let line2 = line("$")
1390 1402
1667 endif 1679 endif
1668 1680
1669 if method == 3 " ftp (no <.netrc>) 1681 if method == 3 " ftp (no <.netrc>)
1670 let fourblanklines= line2 - 3 1682 let fourblanklines= line2 - 3
1671 if fourblanklines >= line1 1683 if fourblanklines >= line1
1672 exe "silent ".fourblanklines.",".line2."g/^\s*$/d" 1684 exe "sil keepj ".fourblanklines.",".line2."g/^\s*$/d"
1673 call histdel("/",-1) 1685 call histdel("/",-1)
1674 endif 1686 endif
1675 endif 1687 endif
1676 1688
1677 " call Dret("NetReadFixup") 1689 " call Dret("NetReadFixup")
1691 if !exists("g:netrw_uid") || g:netrw_uid == "" 1703 if !exists("g:netrw_uid") || g:netrw_uid == ""
1692 " via prompt 1704 " via prompt
1693 let g:netrw_uid= input('Enter username: ') 1705 let g:netrw_uid= input('Enter username: ')
1694 endif 1706 endif
1695 else " from command line 1707 else " from command line
1696 " call Dfunc("NetUserPass(a:1<".a:1.">) {") 1708 " call Dfunc("NetUserPass(a:1<".a:1.">)")
1697 let g:netrw_uid= a:1 1709 let g:netrw_uid= a:1
1698 endif 1710 endif
1699 1711
1700 " get password 1712 " get password
1701 if a:0 <= 1 " via prompt 1713 if a:0 <= 1 " via prompt
1761 nnoremap <buffer> <silent> u :<c-u>call <SID>NetrwBookHistHandler(4,expand("%"))<cr> 1773 nnoremap <buffer> <silent> u :<c-u>call <SID>NetrwBookHistHandler(4,expand("%"))<cr>
1762 nnoremap <buffer> <silent> U :<c-u>call <SID>NetrwBookHistHandler(5,expand("%"))<cr> 1774 nnoremap <buffer> <silent> U :<c-u>call <SID>NetrwBookHistHandler(5,expand("%"))<cr>
1763 nnoremap <buffer> <silent> v :call <SID>NetrwSplit(5)<cr> 1775 nnoremap <buffer> <silent> v :call <SID>NetrwSplit(5)<cr>
1764 nnoremap <buffer> <silent> x :call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),0),0)"<cr> 1776 nnoremap <buffer> <silent> x :call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),0),0)"<cr>
1765 nnoremap <buffer> <silent> % :call <SID>NetrwOpenFile(1)<cr> 1777 nnoremap <buffer> <silent> % :call <SID>NetrwOpenFile(1)<cr>
1778 inoremap <buffer> <silent> <cr> <c-o>:call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord()))<cr>
1779 inoremap <buffer> <silent> - <c-o>:exe "norm! 0"<bar>call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,'../'))<cr>
1780 inoremap <buffer> <silent> a <c-o>:call <SID>NetrwHide(1)<cr>
1781 inoremap <buffer> <silent> mb <c-o>:<c-u>call <SID>NetrwBookHistHandler(0,b:netrw_curdir)<cr>
1782 inoremap <buffer> <silent> mc <c-o>:<c-u>call <SID>NetrwMarkFileCopy(1)<cr>
1783 inoremap <buffer> <silent> md <c-o>:<c-u>call <SID>NetrwMarkFileDiff(1)<cr>
1784 inoremap <buffer> <silent> me <c-o>:<c-u>call <SID>NetrwMarkFileEdit(1)<cr>
1785 inoremap <buffer> <silent> mf <c-o>:<c-u>call <SID>NetrwMarkFile(1,<SID>NetrwGetWord())<cr>
1786 inoremap <buffer> <silent> mg <c-o>:<c-u>call <SID>NetrwMarkFileGrep(1)<cr>
1787 inoremap <buffer> <silent> mh <c-o>:<c-u>call <SID>NetrwMarkHideSfx(1)<cr>
1788 inoremap <buffer> <silent> mm <c-o>:<c-u>call <SID>NetrwMarkFileMove(1)<cr>
1789 inoremap <buffer> <silent> mp <c-o>:<c-u>call <SID>NetrwMarkFilePrint(1)<cr>
1790 inoremap <buffer> <silent> mr <c-o>:<c-u>call <SID>NetrwMarkFileRegexp(1)<cr>
1791 inoremap <buffer> <silent> ms <c-o>:<c-u>call <SID>NetrwMarkFileSource(1)<cr>
1792 inoremap <buffer> <silent> mT <c-o>:<c-u>call <SID>NetrwMarkFileTag(1)<cr>
1793 inoremap <buffer> <silent> mt <c-o>:<c-u>call <SID>NetrwMarkFileTgt(1)<cr>
1794 inoremap <buffer> <silent> mu <c-o>:<c-u>call <SID>NetrwUnMarkFile(1)<cr>
1795 inoremap <buffer> <silent> mx <c-o>:<c-u>call <SID>NetrwMarkFileExe(1)<cr>
1796 inoremap <buffer> <silent> mz <c-o>:<c-u>call <SID>NetrwMarkFileCompress(1)<cr>
1797 inoremap <buffer> <silent> gb <c-o>:<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_curdir)<cr>
1798 inoremap <buffer> <silent> gh <c-o>:<c-u>call <SID>NetrwHidden(1)<cr>
1799 inoremap <buffer> <silent> gp <c-o>:<c-u>call <SID>NetrwChgPerm(1,b:netrw_curdir)<cr>
1800 inoremap <buffer> <silent> c <c-o>:exe "keepjumps lcd ".fnameescape(b:netrw_curdir)<cr>
1801 inoremap <buffer> <silent> C <c-o>:let g:netrw_chgwin= winnr()<cr>
1802 inoremap <buffer> <silent> d <c-o>:call <SID>NetrwMakeDir("")<cr>
1803 inoremap <buffer> <silent> i <c-o>:call <SID>NetrwListStyle(1)<cr>
1804 inoremap <buffer> <silent> I <c-o>:call <SID>NetrwBannerCtrl(1)<cr>
1805 inoremap <buffer> <silent> o <c-o>:call <SID>NetrwSplit(3)<cr>
1806 inoremap <buffer> <silent> O <c-o>:call <SID>NetrwObtain(1)<cr>
1807 inoremap <buffer> <silent> p <c-o>:call <SID>NetrwPreview(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),1))<cr>
1808 inoremap <buffer> <silent> P <c-o>:call <SID>NetrwPrevWinOpen(1)<cr>
1809 inoremap <buffer> <silent> qb <c-o>:<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr>
1810 inoremap <buffer> <silent> mB <c-o>:<c-u>call <SID>NetrwBookHistHandler(6,b:netrw_curdir)<cr>
1811 inoremap <buffer> <silent> qf <c-o>:<c-u>call <SID>NetrwFileInfo(1,<SID>NetrwGetWord())<cr>
1812 inoremap <buffer> <silent> 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>
1813 inoremap <buffer> <silent> s <c-o>:call <SID>NetrwSortStyle(1)<cr>
1814 inoremap <buffer> <silent> S <c-o>:call <SID>NetSortSequence(1)<cr>
1815 inoremap <buffer> <silent> t <c-o>:call <SID>NetrwSplit(4)<cr>
1816 inoremap <buffer> <silent> T <c-o>:call <SID>NetrwSplit(4)<bar>norm! gT<cr>
1817 inoremap <buffer> <silent> u <c-o>:<c-u>call <SID>NetrwBookHistHandler(4,expand("%"))<cr>
1818 inoremap <buffer> <silent> U <c-o>:<c-u>call <SID>NetrwBookHistHandler(5,expand("%"))<cr>
1819 inoremap <buffer> <silent> v <c-o>:call <SID>NetrwSplit(5)<cr>
1820 inoremap <buffer> <silent> x <c-o>:call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),0),0)"<cr>
1821 inoremap <buffer> <silent> % <c-o>:call <SID>NetrwOpenFile(1)<cr>
1766 if !hasmapto('<Plug>NetrwHideEdit') 1822 if !hasmapto('<Plug>NetrwHideEdit')
1767 nmap <buffer> <unique> <c-h> <Plug>NetrwHideEdit 1823 nmap <buffer> <unique> <c-h> <Plug>NetrwHideEdit
1824 imap <buffer> <unique> <c-h> <Plug>NetrwHideEdit
1768 endif 1825 endif
1769 nnoremap <buffer> <silent> <Plug>NetrwHideEdit :call <SID>NetrwHideEdit(1)<cr> 1826 nnoremap <buffer> <silent> <Plug>NetrwHideEdit :call <SID>NetrwHideEdit(1)<cr>
1770 if !hasmapto('<Plug>NetrwRefresh') 1827 if !hasmapto('<Plug>NetrwRefresh')
1771 nmap <buffer> <unique> <c-l> <Plug>NetrwRefresh 1828 nmap <buffer> <unique> <c-l> <Plug>NetrwRefresh
1829 imap <buffer> <unique> <c-l> <Plug>NetrwRefresh
1772 endif 1830 endif
1773 nnoremap <buffer> <silent> <Plug>NetrwRefresh :call <SID>NetrwRefresh(1,<SID>NetrwBrowseChgDir(1,'./'))<cr> 1831 nnoremap <buffer> <silent> <Plug>NetrwRefresh :call <SID>NetrwRefresh(1,<SID>NetrwBrowseChgDir(1,'./'))<cr>
1774 if s:didstarstar || !mapcheck("<s-down>","n") 1832 if s:didstarstar || !mapcheck("<s-down>","n")
1775 nnoremap <buffer> <silent> <s-down> :Nexplore<cr> 1833 nnoremap <buffer> <silent> <s-down> :Nexplore<cr>
1834 inoremap <buffer> <silent> <s-down> :Nexplore<cr>
1776 endif 1835 endif
1777 if s:didstarstar || !mapcheck("<s-up>","n") 1836 if s:didstarstar || !mapcheck("<s-up>","n")
1778 nnoremap <buffer> <silent> <s-up> :Pexplore<cr> 1837 nnoremap <buffer> <silent> <s-up> :Pexplore<cr>
1838 inoremap <buffer> <silent> <s-up> :Pexplore<cr>
1779 endif 1839 endif
1780 let mapsafecurdir = escape(b:netrw_curdir, s:netrw_map_escape) 1840 let mapsafecurdir = escape(b:netrw_curdir, s:netrw_map_escape)
1781 if g:netrw_mousemaps == 1 1841 if g:netrw_mousemaps == 1
1782 nnoremap <buffer> <silent> <leftmouse> <leftmouse>:call <SID>NetrwLeftmouse(1)<cr> 1842 nnoremap <buffer> <silent> <leftmouse> <leftmouse>:call <SID>NetrwLeftmouse(1)<cr>
1783 nnoremap <buffer> <silent> <middlemouse> <leftmouse>:call <SID>NetrwPrevWinOpen(1)<cr> 1843 nnoremap <buffer> <silent> <middlemouse> <leftmouse>:call <SID>NetrwPrevWinOpen(1)<cr>
1784 nnoremap <buffer> <silent> <s-leftmouse> <leftmouse>:call <SID>NetrwMarkFile(1,<SID>NetrwGetWord())<cr> 1844 nnoremap <buffer> <silent> <s-leftmouse> <leftmouse>:call <SID>NetrwMarkFile(1,<SID>NetrwGetWord())<cr>
1785 exe 'nnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' 1845 exe 'nnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
1786 exe 'vnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' 1846 exe 'vnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
1847 inoremap <buffer> <silent> <leftmouse> <c-o><leftmouse><c-o>:call <SID>NetrwLeftmouse(1)<cr>
1848 inoremap <buffer> <silent> <middlemouse> <c-o><leftmouse><c-o>:call <SID>NetrwPrevWinOpen(1)<cr>
1849 inoremap <buffer> <silent> <s-leftmouse> <c-o><leftmouse><c-o>:call <SID>NetrwMarkFile(1,<SID>NetrwGetWord())<cr>
1850 exe 'inoremap <buffer> <silent> <rightmouse> <c-o><leftmouse><c-o>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
1787 endif 1851 endif
1788 exe 'nnoremap <buffer> <silent> <del> :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' 1852 exe 'nnoremap <buffer> <silent> <del> :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
1853 exe 'nnoremap <buffer> <silent> D :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
1854 exe 'nnoremap <buffer> <silent> R :call <SID>NetrwLocalRename("'.mapsafecurdir.'")<cr>'
1855 exe 'nnoremap <buffer> <silent> <Leader>m :call <SID>NetrwMakeDir("")<cr>'
1789 exe 'vnoremap <buffer> <silent> <del> :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' 1856 exe 'vnoremap <buffer> <silent> <del> :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
1790 exe 'nnoremap <buffer> <silent> D :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
1791 exe 'vnoremap <buffer> <silent> D :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>' 1857 exe 'vnoremap <buffer> <silent> D :call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
1792 exe 'nnoremap <buffer> <silent> R :call <SID>NetrwLocalRename("'.mapsafecurdir.'")<cr>'
1793 exe 'vnoremap <buffer> <silent> R :call <SID>NetrwLocalRename("'.mapsafecurdir.'")<cr>' 1858 exe 'vnoremap <buffer> <silent> R :call <SID>NetrwLocalRename("'.mapsafecurdir.'")<cr>'
1794 exe 'nnoremap <buffer> <silent> <Leader>m :call <SID>NetrwMakeDir("")<cr>' 1859 exe 'inoremap <buffer> <silent> <del> <c-o>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
1860 exe 'inoremap <buffer> <silent> D <c-o>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
1861 exe 'inoremap <buffer> <silent> R <c-o>:call <SID>NetrwLocalRename("'.mapsafecurdir.'")<cr>'
1862 exe 'inoremap <buffer> <silent> <Leader>m <c-o>:call <SID>NetrwMakeDir("")<cr>'
1795 nnoremap <buffer> <F1> :he netrw-quickhelp<cr> 1863 nnoremap <buffer> <F1> :he netrw-quickhelp<cr>
1796 1864
1797 else " remote 1865 else " remote
1798 " call Decho("make remote maps") 1866 " call Decho("make remote maps")
1799 call s:RemotePathAnalysis(b:netrw_curdir) 1867 call s:RemotePathAnalysis(b:netrw_curdir)
1838 nnoremap <buffer> <silent> u :<c-u>call <SID>NetrwBookHistHandler(4,b:netrw_curdir)<cr> 1906 nnoremap <buffer> <silent> u :<c-u>call <SID>NetrwBookHistHandler(4,b:netrw_curdir)<cr>
1839 nnoremap <buffer> <silent> U :<c-u>call <SID>NetrwBookHistHandler(5,b:netrw_curdir)<cr> 1907 nnoremap <buffer> <silent> U :<c-u>call <SID>NetrwBookHistHandler(5,b:netrw_curdir)<cr>
1840 nnoremap <buffer> <silent> v :call <SID>NetrwSplit(2)<cr> 1908 nnoremap <buffer> <silent> v :call <SID>NetrwSplit(2)<cr>
1841 nnoremap <buffer> <silent> x :call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()),1)<cr> 1909 nnoremap <buffer> <silent> x :call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()),1)<cr>
1842 nnoremap <buffer> <silent> % :call <SID>NetrwOpenFile(0)<cr> 1910 nnoremap <buffer> <silent> % :call <SID>NetrwOpenFile(0)<cr>
1911 inoremap <buffer> <silent> <cr> <c-o>:call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()))<cr>
1912 inoremap <buffer> <silent> <c-l> <c-o>:call <SID>NetrwRefresh(0,<SID>NetrwBrowseChgDir(0,'./'))<cr>
1913 inoremap <buffer> <silent> - <c-o>:exe "norm! 0"<bar>call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,'../'))<cr>
1914 inoremap <buffer> <silent> a <c-o>:call <SID>NetrwHide(0)<cr>
1915 inoremap <buffer> <silent> mb <c-o>:<c-u>call <SID>NetrwBookHistHandler(0,b:netrw_curdir)<cr>
1916 inoremap <buffer> <silent> mc <c-o>:<c-u>call <SID>NetrwMarkFileCopy(0)<cr>
1917 inoremap <buffer> <silent> md <c-o>:<c-u>call <SID>NetrwMarkFileDiff(0)<cr>
1918 inoremap <buffer> <silent> me <c-o>:<c-u>call <SID>NetrwMarkFileEdit(0)<cr>
1919 inoremap <buffer> <silent> mf <c-o>:<c-u>call <SID>NetrwMarkFile(0,<SID>NetrwGetWord())<cr>
1920 inoremap <buffer> <silent> mg <c-o>:<c-u>call <SID>NetrwMarkFileGrep(0)<cr>
1921 inoremap <buffer> <silent> mh <c-o>:<c-u>call <SID>NetrwMarkHideSfx(0)<cr>
1922 inoremap <buffer> <silent> mm <c-o>:<c-u>call <SID>NetrwMarkFileMove(0)<cr>
1923 inoremap <buffer> <silent> mp <c-o>:<c-u>call <SID>NetrwMarkFilePrint(0)<cr>
1924 inoremap <buffer> <silent> mr <c-o>:<c-u>call <SID>NetrwMarkFileRegexp(0)<cr>
1925 inoremap <buffer> <silent> ms <c-o>:<c-u>call <SID>NetrwMarkFileSource(0)<cr>
1926 inoremap <buffer> <silent> mT <c-o>:<c-u>call <SID>NetrwMarkFileTag(0)<cr>
1927 inoremap <buffer> <silent> mt <c-o>:<c-u>call <SID>NetrwMarkFileTgt(0)<cr>
1928 inoremap <buffer> <silent> mu <c-o>:<c-u>call <SID>NetrwUnMarkFile(0)<cr>
1929 inoremap <buffer> <silent> mx <c-o>:<c-u>call <SID>NetrwMarkFileExe(0)<cr>
1930 inoremap <buffer> <silent> mz <c-o>:<c-u>call <SID>NetrwMarkFileCompress(0)<cr>
1931 inoremap <buffer> <silent> gb <c-o>:<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_cur)<cr>
1932 inoremap <buffer> <silent> gh <c-o>:<c-u>call <SID>NetrwHidden(0)<cr>
1933 inoremap <buffer> <silent> gp <c-o>:<c-u>call <SID>NetrwChgPerm(0,b:netrw_curdir)<cr>
1934 inoremap <buffer> <silent> C <c-o>:let g:netrw_chgwin= winnr()<cr>
1935 inoremap <buffer> <silent> i <c-o>:call <SID>NetrwListStyle(0)<cr>
1936 inoremap <buffer> <silent> I <c-o>:call <SID>NetrwBannerCtrl(1)<cr>
1937 inoremap <buffer> <silent> o <c-o>:call <SID>NetrwSplit(0)<cr>
1938 inoremap <buffer> <silent> O <c-o>:call <SID>NetrwObtain(0)<cr>
1939 inoremap <buffer> <silent> p <c-o>:call <SID>NetrwPreview(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),1))<cr>
1940 inoremap <buffer> <silent> P <c-o>:call <SID>NetrwPrevWinOpen(0)<cr>
1941 inoremap <buffer> <silent> qb <c-o>:<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr>
1942 inoremap <buffer> <silent> mB <c-o>:<c-u>call <SID>NetrwBookHistHandler(6,b:netrw_curdir)<cr>
1943 inoremap <buffer> <silent> qf <c-o>:<c-u>call <SID>NetrwFileInfo(0,<SID>NetrwGetWord())<cr>
1944 inoremap <buffer> <silent> 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>
1945 inoremap <buffer> <silent> s <c-o>:call <SID>NetrwSortStyle(0)<cr>
1946 inoremap <buffer> <silent> S <c-o>:call <SID>NetSortSequence(0)<cr>
1947 inoremap <buffer> <silent> t <c-o>:call <SID>NetrwSplit(1)<cr>
1948 inoremap <buffer> <silent> T <c-o>:call <SID>NetrwSplit(1)<bar>norm! gT<cr>
1949 inoremap <buffer> <silent> u <c-o>:<c-u>call <SID>NetrwBookHistHandler(4,b:netrw_curdir)<cr>
1950 inoremap <buffer> <silent> U <c-o>:<c-u>call <SID>NetrwBookHistHandler(5,b:netrw_curdir)<cr>
1951 inoremap <buffer> <silent> v <c-o>:call <SID>NetrwSplit(2)<cr>
1952 inoremap <buffer> <silent> x <c-o>:call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()),1)<cr>
1953 inoremap <buffer> <silent> % <c-o>:call <SID>NetrwOpenFile(0)<cr>
1843 if !hasmapto('<Plug>NetrwHideEdit') 1954 if !hasmapto('<Plug>NetrwHideEdit')
1844 nmap <buffer> <c-h> <Plug>NetrwHideEdit 1955 nmap <buffer> <c-h> <Plug>NetrwHideEdit
1956 imap <buffer> <c-h> <Plug>NetrwHideEdit
1845 endif 1957 endif
1846 nnoremap <buffer> <silent> <Plug>NetrwHideEdit :call <SID>NetrwHideEdit(0)<cr> 1958 nnoremap <buffer> <silent> <Plug>NetrwHideEdit :call <SID>NetrwHideEdit(0)<cr>
1847 if !hasmapto('<Plug>NetrwRefresh') 1959 if !hasmapto('<Plug>NetrwRefresh')
1848 nmap <buffer> <c-l> <Plug>NetrwRefresh 1960 nmap <buffer> <c-l> <Plug>NetrwRefresh
1961 imap <buffer> <c-l> <Plug>NetrwRefresh
1849 endif 1962 endif
1850 1963
1851 let mapsafepath = escape(s:path, s:netrw_map_escape) 1964 let mapsafepath = escape(s:path, s:netrw_map_escape)
1852 let mapsafeusermach = escape(s:user.s:machine, s:netrw_map_escape) 1965 let mapsafeusermach = escape(s:user.s:machine, s:netrw_map_escape)
1853 1966
1856 nnoremap <buffer> <silent> <leftmouse> <leftmouse>:call <SID>NetrwLeftmouse(0)<cr> 1969 nnoremap <buffer> <silent> <leftmouse> <leftmouse>:call <SID>NetrwLeftmouse(0)<cr>
1857 nnoremap <buffer> <silent> <middlemouse> <leftmouse>:call <SID>NetrwPrevWinOpen(0)<cr> 1970 nnoremap <buffer> <silent> <middlemouse> <leftmouse>:call <SID>NetrwPrevWinOpen(0)<cr>
1858 nnoremap <buffer> <silent> <s-leftmouse> <leftmouse>:call <SID>NetrwMarkFile(0,<SID>NetrwGetWord())<cr> 1971 nnoremap <buffer> <silent> <s-leftmouse> <leftmouse>:call <SID>NetrwMarkFile(0,<SID>NetrwGetWord())<cr>
1859 exe 'nnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' 1972 exe 'nnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
1860 exe 'vnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' 1973 exe 'vnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
1974 inoremap <buffer> <silent> <leftmouse> <c-o><leftmouse><c-o>:call <SID>NetrwLeftmouse(0)<cr>
1975 inoremap <buffer> <silent> <middlemouse> <c-o><leftmouse><c-o>:call <SID>NetrwPrevWinOpen(0)<cr>
1976 inoremap <buffer> <silent> <s-leftmouse> <c-o><leftmouse><c-o>:call <SID>NetrwMarkFile(0,<SID>NetrwGetWord())<cr>
1977 exe 'inoremap <buffer> <silent> <rightmouse> <c-o><leftmouse><c-o>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
1861 endif 1978 endif
1862 exe 'nnoremap <buffer> <silent> <del> :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' 1979 exe 'nnoremap <buffer> <silent> <del> :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
1980 exe 'nnoremap <buffer> <silent> d :call <SID>NetrwMakeDir("'.mapsafeusermach.'")<cr>'
1981 exe 'nnoremap <buffer> <silent> D :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
1982 exe 'nnoremap <buffer> <silent> R :call <SID>NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
1863 exe 'vnoremap <buffer> <silent> <del> :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' 1983 exe 'vnoremap <buffer> <silent> <del> :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
1864 exe 'nnoremap <buffer> <silent> d :call <SID>NetrwMakeDir("'.mapsafeusermach.'")<cr>' 1984 exe 'vnoremap <buffer> <silent> D :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
1865 exe 'nnoremap <buffer> <silent> D :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' 1985 exe 'vnoremap <buffer> <silent> R :call <SID>NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
1866 exe 'vnoremap <buffer> <silent> D :call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' 1986 exe 'inoremap <buffer> <silent> <del> <c-o>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
1867 exe 'nnoremap <buffer> <silent> R :call <SID>NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' 1987 exe 'inoremap <buffer> <silent> d <c-o>:call <SID>NetrwMakeDir("'.mapsafeusermach.'")<cr>'
1868 exe 'vnoremap <buffer> <silent> R :call <SID>NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")<cr>' 1988 exe 'inoremap <buffer> <silent> D <c-o>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
1989 exe 'inoremap <buffer> <silent> R <c-o>:call <SID>NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
1869 nnoremap <buffer> <F1> :he netrw-quickhelp<cr> 1990 nnoremap <buffer> <F1> :he netrw-quickhelp<cr>
1991 inoremap <buffer> <F1> <c-o>:he netrw-quickhelp<cr>
1870 endif 1992 endif
1871 call s:SetRexDir(a:islocal,b:netrw_curdir) 1993 call s:SetRexDir(a:islocal,b:netrw_curdir)
1872 " call Dret("s:BrowserMaps") 1994 " call Dret("s:BrowserMaps")
1873 endfun 1995 endfun
1874 1996
1893 " 3: (browsing) record current directory history 2015 " 3: (browsing) record current directory history
1894 " 4: (user: <u>) go up (previous) bookmark 2016 " 4: (user: <u>) go up (previous) bookmark
1895 " 5: (user: <U>) go down (next) bookmark 2017 " 5: (user: <U>) go down (next) bookmark
1896 " 6: (user: <mB>) delete bookmark 2018 " 6: (user: <mB>) delete bookmark
1897 fun! s:NetrwBookHistHandler(chg,curdir) 2019 fun! s:NetrwBookHistHandler(chg,curdir)
1898 " call Dfunc("NetrwBookHistHandler(chg=".a:chg." curdir<".a:curdir.">) cnt=".v:count." histcnt=".g:netrw_dirhist_cnt." histmax=".g:netrw_dirhistmax) 2020 " call Dfunc("s:NetrwBookHistHandler(chg=".a:chg." curdir<".a:curdir.">) cnt=".v:count." histcnt=".g:netrw_dirhist_cnt." histmax=".g:netrw_dirhistmax)
1899 2021
1900 if a:chg == 0 2022 if a:chg == 0
1901 " bookmark the current directory 2023 " bookmark the current directory
1902 " call Decho("(user: <b>) bookmark the current directory") 2024 " call Decho("(user: <b>) bookmark the current directory")
1903 if !exists("g:netrw_bookmarklist") 2025 if !exists("g:netrw_bookmarklist")
1976 if exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}") 2098 if exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}")
1977 " call Decho("changedir u#".g:netrw_dirhist_cnt."<".g:netrw_dirhist_{g:netrw_dirhist_cnt}.">") 2099 " call Decho("changedir u#".g:netrw_dirhist_cnt."<".g:netrw_dirhist_{g:netrw_dirhist_cnt}.">")
1978 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir") 2100 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir")
1979 setlocal ma noro 2101 setlocal ma noro
1980 " call Decho("setlocal ma noro") 2102 " call Decho("setlocal ma noro")
1981 %d 2103 keepj %d
1982 setlocal nomod 2104 setlocal nomod
1983 " call Decho("setlocal nomod") 2105 " call Decho("setlocal nomod")
1984 endif 2106 endif
1985 " " call Decho("exe e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt})) 2107 " " call Decho("exe e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt}))
1986 exe "e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt}) 2108 exe "keepj e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt})
1987 else 2109 else
1988 let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt + 1 ) % g:netrw_dirhistmax 2110 let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt + 1 ) % g:netrw_dirhistmax
1989 echo "Sorry, no predecessor directory exists yet" 2111 echo "Sorry, no predecessor directory exists yet"
1990 endif 2112 endif
1991 2113
1996 if exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}") 2118 if exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}")
1997 " call Decho("changedir U#".g:netrw_dirhist_cnt."<".g:netrw_dirhist_{g:netrw_dirhist_cnt}.">") 2119 " call Decho("changedir U#".g:netrw_dirhist_cnt."<".g:netrw_dirhist_{g:netrw_dirhist_cnt}.">")
1998 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir") 2120 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir")
1999 setlocal ma noro 2121 setlocal ma noro
2000 " call Decho("setlocal ma noro") 2122 " call Decho("setlocal ma noro")
2001 %d 2123 keepj %d
2002 " call Decho("removed all lines from buffer (%d)") 2124 " call Decho("removed all lines from buffer (%d)")
2003 setlocal nomod 2125 setlocal nomod
2004 " call Decho("setlocal nomod") 2126 " call Decho("setlocal nomod")
2005 endif 2127 endif
2006 " call Decho("exe e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt})) 2128 " call Decho("exe e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt}))
2007 exe "e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt}) 2129 exe "keepj e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt})
2008 else 2130 else
2009 let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt - 1 ) % g:netrw_dirhistmax 2131 let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt - 1 ) % g:netrw_dirhistmax
2010 if g:netrw_dirhist_cnt < 0 2132 if g:netrw_dirhist_cnt < 0
2011 let g:netrw_dirhist_cnt= g:netrw_dirhist_cnt + g:netrw_dirhistmax 2133 let g:netrw_dirhist_cnt= g:netrw_dirhist_cnt + g:netrw_dirhistmax
2012 endif 2134 endif
2022 call delete(savefile) 2144 call delete(savefile)
2023 endif 2145 endif
2024 call remove(g:netrw_bookmarklist,v:count-1) 2146 call remove(g:netrw_bookmarklist,v:count-1)
2025 endif 2147 endif
2026 call s:NetrwBookmarkMenu() 2148 call s:NetrwBookmarkMenu()
2027 " call Dret("NetrwBookHistHandler") 2149 " call Dret("s:NetrwBookHistHandler")
2028 endfun 2150 endfun
2029 2151
2030 " --------------------------------------------------------------------- 2152 " ---------------------------------------------------------------------
2031 " s:NetrwBookHistRead: this function reads bookmarks and history {{{2 2153 " s:NetrwBookHistRead: this function reads bookmarks and history {{{2
2032 " Sister function: s:NetrwBookHistSave() 2154 " Sister function: s:NetrwBookHistSave()
2075 let cnt = 1 2197 let cnt = 1
2076 while cnt <= g:netrw_dirhist_cnt 2198 while cnt <= g:netrw_dirhist_cnt
2077 call setline((cnt+lastline),'let g:netrw_dirhist_'.cnt."='".g:netrw_dirhist_{cnt}."'") 2199 call setline((cnt+lastline),'let g:netrw_dirhist_'.cnt."='".g:netrw_dirhist_{cnt}."'")
2078 let cnt= cnt + 1 2200 let cnt= cnt + 1
2079 endwhile 2201 endwhile
2080 exe "silent! w! ".savefile 2202 exe "sil! w! ".savefile
2081 2203
2082 silent %d 2204 sil keepj %d
2083 if exists("g:netrw_bookmarklist") && g:netrw_bookmarklist != [] 2205 if exists("g:netrw_bookmarklist") && g:netrw_bookmarklist != []
2084 " merge and write .netrwbook 2206 " merge and write .netrwbook
2085 let savefile= s:NetrwHome()."/.netrwbook" 2207 let savefile= s:NetrwHome()."/.netrwbook"
2086 2208
2087 if filereadable(savefile) 2209 if filereadable(savefile)
2088 let booklist= deepcopy(g:netrw_bookmarklist) 2210 let booklist= deepcopy(g:netrw_bookmarklist)
2089 exe "silent so ".savefile 2211 exe "sil keepj so ".savefile
2090 for bdm in booklist 2212 for bdm in booklist
2091 if index(g:netrw_bookmarklist,bdm) == -1 2213 if index(g:netrw_bookmarklist,bdm) == -1
2092 call add(g:netrw_bookmarklist,bdm) 2214 call add(g:netrw_bookmarklist,bdm)
2093 endif 2215 endif
2094 endfor 2216 endfor
2095 call sort(g:netrw_bookmarklist) 2217 call sort(g:netrw_bookmarklist)
2096 exe "silent! w! ".savefile 2218 exe "sil! w! ".savefile
2097 endif 2219 endif
2098 2220
2099 " construct and save .netrwbook 2221 " construct and save .netrwbook
2100 call setline(1,"let g:netrw_bookmarklist= ".string(g:netrw_bookmarklist)) 2222 call setline(1,"let g:netrw_bookmarklist= ".string(g:netrw_bookmarklist))
2101 exe "silent! w! ".savefile 2223 exe "sil! w! ".savefile
2102 endif 2224 endif
2103 let bgone= bufnr("%") 2225 let bgone= bufnr("%")
2104 q! 2226 q!
2105 exe bgone."bwipe!" 2227 exe bgone."bwipe!"
2106 2228
2112 " list of the contents of a local or remote directory. It is assumed that the 2234 " list of the contents of a local or remote directory. It is assumed that the
2113 " g:netrw_list_cmd has a string, USEPORT HOSTNAME, that needs to be substituted 2235 " g:netrw_list_cmd has a string, USEPORT HOSTNAME, that needs to be substituted
2114 " with the requested remote hostname first. 2236 " with the requested remote hostname first.
2115 fun! s:NetrwBrowse(islocal,dirname) 2237 fun! s:NetrwBrowse(islocal,dirname)
2116 if !exists("w:netrw_liststyle")|let w:netrw_liststyle= g:netrw_liststyle|endif 2238 if !exists("w:netrw_liststyle")|let w:netrw_liststyle= g:netrw_liststyle|endif
2117 " call Dfunc("s:NetrwBrowse(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".w:netrw_liststyle." ".g:loaded_netrw." buf#".bufnr("%")."<".bufname("%").">") 2239 " call Dfunc("s:NetrwBrowse(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".w:netrw_liststyle." ".g:loaded_netrw." buf#".bufnr("%")."<".bufname("%")."> win#".winnr())
2118 " call Decho("tab#".tabpagenr()." win#".winnr()) 2240 " call Decho("tab#".tabpagenr()." win#".winnr())
2119 " call Dredir("ls!") 2241 " call Dredir("ls!")
2120 if !exists("s:netrw_initbookhist") 2242 if !exists("s:netrw_initbookhist")
2121 call s:NetrwBookHistRead() 2243 call s:NetrwBookHistRead()
2122 endif 2244 endif
2123 " call FOTEST(7) 2245 " call FOTEST(7)
2246 "call Decho("COMBAK#01 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
2124 2247
2125 " simplify the dirname (especially for ".."s in dirnames) 2248 " simplify the dirname (especially for ".."s in dirnames)
2126 if a:dirname !~ '^\a\+://' 2249 if a:dirname !~ '^\a\+://'
2127 let dirname= simplify(a:dirname) 2250 let dirname= simplify(a:dirname)
2128 else 2251 else
2129 let dirname= a:dirname 2252 let dirname= a:dirname
2130 endif 2253 endif
2131 " call FOTEST(8) 2254 " call FOTEST(8)
2255 "call Decho("COMBAK#02 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
2132 2256
2133 if exists("s:netrw_skipbrowse") 2257 if exists("s:netrw_skipbrowse")
2134 unlet s:netrw_skipbrowse 2258 unlet s:netrw_skipbrowse
2135 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap) 2259 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap)
2136 " call Dret("s:NetrwBrowse : s:netrw_skipbrowse=".s:netrw_skipbrowse) 2260 " call Dret("s:NetrwBrowse : s:netrw_skipbrowse=".s:netrw_skipbrowse)
2147 return 2271 return
2148 endif 2272 endif
2149 2273
2150 call s:NetrwOptionSave("w:") 2274 call s:NetrwOptionSave("w:")
2151 " call FOTEST(9) 2275 " call FOTEST(9)
2276 "call Decho("COMBAK#03 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
2152 2277
2153 " re-instate any marked files 2278 " re-instate any marked files
2154 if exists("s:netrwmarkfilelist_{bufnr('%')}") 2279 if exists("s:netrwmarkfilelist_{bufnr('%')}")
2155 " call Decho("clearing marked files") 2280 " call Decho("clearing marked files")
2156 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/" 2281 exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/"
2157 endif 2282 endif
2158 " call FOTEST(10) 2283 " call FOTEST(10)
2284 "call Decho("COMBAK#04 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
2159 2285
2160 if a:islocal && exists("w:netrw_acdkeep") && w:netrw_acdkeep 2286 if a:islocal && exists("w:netrw_acdkeep") && w:netrw_acdkeep
2161 " call Decho("handle w:netrw_acdkeep:") 2287 " call Decho("handle w:netrw_acdkeep:")
2162 " call Decho("keepjumps lcd ".fnameescape(dirname)." (due to w:netrw_acdkeep=".w:netrw_acdkeep." - acd=".&acd.")") 2288 " call Decho("keepjumps lcd ".fnameescape(dirname)." (due to w:netrw_acdkeep=".w:netrw_acdkeep." - acd=".&acd.")")
2163 exe 'keepjumps lcd '.fnameescape(dirname) 2289 exe 'keepj lcd '.fnameescape(dirname)
2164 call s:NetrwSafeOptions() 2290 call s:NetrwSafeOptions()
2165 " call Decho("getcwd<".getcwd().">") 2291 " call Decho("getcwd<".getcwd().">")
2166 2292
2167 elseif !a:islocal && dirname !~ '[\/]$' && dirname !~ '^"' 2293 elseif !a:islocal && dirname !~ '[\/]$' && dirname !~ '^"'
2168 " looks like a regular file, attempt transfer 2294 " looks like a regular file, attempt transfer
2174 let path= substitute(dirname,'[*=@|]\r\=$','','e') 2300 let path= substitute(dirname,'[*=@|]\r\=$','','e')
2175 " call Decho("new path<".path.">") 2301 " call Decho("new path<".path.">")
2176 call s:RemotePathAnalysis(dirname) 2302 call s:RemotePathAnalysis(dirname)
2177 2303
2178 " remote-read the requested file into current buffer {{{3 2304 " remote-read the requested file into current buffer {{{3
2179 mark ' 2305 keepj mark '
2180 call s:NetrwEnew(dirname) 2306 call s:NetrwEnew(dirname)
2181 call s:NetrwSafeOptions() 2307 call s:NetrwSafeOptions()
2182 setlocal ma noro 2308 setlocal ma noro
2183 " call Decho("setlocal ma noro") 2309 " call Decho("setlocal ma noro")
2184 let b:netrw_curdir= dirname 2310 let b:netrw_curdir= dirname
2185 " call Decho("exe silent! keepalt file ".fnameescape(s:method."://".s:user.s:machine."/".s:path)." (bt=".&bt.")") 2311 " call Decho("exe silent! keepalt file ".fnameescape(s:method."://".s:user.s:machine."/".s:path)." (bt=".&bt.")")
2186 exe "silent! keepalt file ".fnameescape(s:method."://".s:user.s:machine."/".s:path) 2312 exe "sil! keepalt file ".fnameescape(s:method."://".s:user.s:machine."/".s:path)
2187 exe "silent keepalt doau BufReadPre ".fnameescape(s:fname) 2313 exe "sil keepalt doau BufReadPre ".fnameescape(s:fname)
2188 silent call netrw#NetRead(2,s:method."://".s:user.s:machine."/".s:path) 2314 silent call netrw#NetRead(2,s:method."://".s:user.s:machine."/".s:path)
2189 if s:path !~ '.tar.bz2$' && s:path !~ '.tar.gz' 2315 if s:path !~ '.tar.bz2$' && s:path !~ '.tar.gz'
2190 " netrw.vim and tar.vim have already handled decompression of the tarball; avoiding gzip.vim error 2316 " netrw.vim and tar.vim have already handled decompression of the tarball; avoiding gzip.vim error
2191 exe "silent keepalt doau BufReadPost ".fnameescape(s:fname) 2317 exe "sil keepalt doau BufReadPost ".fnameescape(s:fname)
2192 endif 2318 endif
2193 2319
2194 " save certain window-oriented variables into buffer-oriented variables {{{3 2320 " save certain window-oriented variables into buffer-oriented variables {{{3
2195 call s:SetBufWinVars() 2321 call s:SetBufWinVars()
2196 call s:NetrwOptionRestore("w:") 2322 call s:NetrwOptionRestore("w:")
2199 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap) 2325 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap)
2200 " call Dret("s:NetrwBrowse : file<".s:fname.">") 2326 " call Dret("s:NetrwBrowse : file<".s:fname.">")
2201 return 2327 return
2202 endif 2328 endif
2203 " call FOTEST(11) 2329 " call FOTEST(11)
2330 "call Decho("COMBAK#05 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
2204 2331
2205 " use buffer-oriented WinVars if buffer ones exist but window ones don't {{{3 2332 " use buffer-oriented WinVars if buffer ones exist but window ones don't {{{3
2206 call s:UseBufWinVars() 2333 call s:UseBufWinVars()
2207 2334
2208 " set up some variables {{{3 2335 " set up some variables {{{3
2211 let s:last_sort_by = g:netrw_sort_by 2338 let s:last_sort_by = g:netrw_sort_by
2212 2339
2213 " set up menu {{{3 2340 " set up menu {{{3
2214 call s:NetrwMenu(1) 2341 call s:NetrwMenu(1)
2215 " call FOTEST(12) 2342 " call FOTEST(12)
2343 "call Decho("COMBAK#06 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
2216 2344
2217 " set up buffer {{{3 2345 " set up buffer {{{3
2218 let reusing= s:NetrwGetBuffer(a:islocal,dirname) 2346 let reusing= s:NetrwGetBuffer(a:islocal,dirname)
2219 " maintain markfile highlighting 2347 " maintain markfile highlighting
2220 if exists("s:netrwmarkfilemtch_{bufnr('%')}") && s:netrwmarkfilemtch_{bufnr("%")} != "" 2348 if exists("s:netrwmarkfilemtch_{bufnr('%')}") && s:netrwmarkfilemtch_{bufnr("%")} != ""
2231 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap) 2359 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap)
2232 " call Dret("s:NetrwBrowse : re-using buffer") 2360 " call Dret("s:NetrwBrowse : re-using buffer")
2233 return 2361 return
2234 endif 2362 endif
2235 "" call FOTEST(13) " PROBLEM WITH LISTING 2363 "" call FOTEST(13) " PROBLEM WITH LISTING
2364 "call Decho("COMBAK#07 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
2236 2365
2237 " set b:netrw_curdir to the new directory name {{{3 2366 " set b:netrw_curdir to the new directory name {{{3
2238 " call Decho("set b:netrw_curdir to the new directory name:") 2367 " call Decho("set b:netrw_curdir to the new directory name: (buf#".bufnr("%").")")
2239 let b:netrw_curdir= dirname 2368 let b:netrw_curdir= dirname
2240 if b:netrw_curdir =~ '[/\\]$' 2369 if b:netrw_curdir =~ '[/\\]$'
2241 let b:netrw_curdir= substitute(b:netrw_curdir,'[/\\]$','','e') 2370 let b:netrw_curdir= substitute(b:netrw_curdir,'[/\\]$','','e')
2242 endif 2371 endif
2243 if b:netrw_curdir == '' 2372 if b:netrw_curdir == ''
2253 if !a:islocal && b:netrw_curdir !~ '/$' 2382 if !a:islocal && b:netrw_curdir !~ '/$'
2254 let b:netrw_curdir= b:netrw_curdir.'/' 2383 let b:netrw_curdir= b:netrw_curdir.'/'
2255 endif 2384 endif
2256 " call Decho("b:netrw_curdir<".b:netrw_curdir.">") 2385 " call Decho("b:netrw_curdir<".b:netrw_curdir.">")
2257 "" call FOTEST(14) " PROBLEM WITH LISTING 2386 "" call FOTEST(14) " PROBLEM WITH LISTING
2387 "call Decho("COMBAK#08 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
2258 2388
2259 " ------------ 2389 " ------------
2260 " (local only) {{{3 2390 " (local only) {{{3
2261 " ------------ 2391 " ------------
2262 if a:islocal 2392 if a:islocal
2270 " call Decho("handle g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd) 2400 " call Decho("handle g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd)
2271 " call Decho("l:acd".(exists("&l:acd")? "=".&l:acd : " doesn't exist")) 2401 " call Decho("l:acd".(exists("&l:acd")? "=".&l:acd : " doesn't exist"))
2272 if !exists("&l:acd") || !&l:acd 2402 if !exists("&l:acd") || !&l:acd
2273 " call Decho('exe keepjumps lcd '.fnameescape(b:netrw_curdir)) 2403 " call Decho('exe keepjumps lcd '.fnameescape(b:netrw_curdir))
2274 try 2404 try
2275 exe 'keepjumps lcd '.fnameescape(b:netrw_curdir) 2405 exe 'keepj lcd '.fnameescape(b:netrw_curdir)
2276 catch /^Vim\%((\a\+)\)\=:E472/ 2406 catch /^Vim\%((\a\+)\)\=:E472/
2277 call netrw#ErrorMsg(s:ERROR,"unable to change directory to <".b:netrw_curdir."> (permissions?)",61) 2407 call netrw#ErrorMsg(s:ERROR,"unable to change directory to <".b:netrw_curdir."> (permissions?)",61)
2278 if exists("w:netrw_prvdir") 2408 if exists("w:netrw_prvdir")
2279 let b:netrw_curdir= w:netrw_prvdir 2409 let b:netrw_curdir= w:netrw_prvdir
2280 else 2410 else
2325 endif 2455 endif
2326 let b:netrw_curdir= dirname 2456 let b:netrw_curdir= dirname
2327 " call Decho("b:netrw_curdir<".b:netrw_curdir."> (remote)") 2457 " call Decho("b:netrw_curdir<".b:netrw_curdir."> (remote)")
2328 endif " (additional remote handling) 2458 endif " (additional remote handling)
2329 "" call FOTEST(15) " PROBLEM WITH LISTING 2459 "" call FOTEST(15) " PROBLEM WITH LISTING
2460 "call Decho("COMBAK#09 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
2330 2461
2331 " ----------------------- 2462 " -----------------------
2332 " Directory Listing: {{{3 2463 " Directory Listing: {{{3
2333 " ----------------------- 2464 " -----------------------
2334 call s:BrowserMaps(a:islocal) 2465 call s:BrowserMaps(a:islocal)
2335 "" call FOTEST(16) " PROBLEM WITH LISTING 2466 "" call FOTEST(16) " PROBLEM WITH LISTING
2336 call s:PerformListing(a:islocal) 2467 call s:PerformListing(a:islocal)
2337 " call FOTEST(17) 2468 " call FOTEST(17)
2469 "call Decho("COMBAK#10 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
2338 2470
2339 " The s:LocalBrowseShellCmdRefresh() function is called by an autocmd 2471 " The s:LocalBrowseShellCmdRefresh() function is called by an autocmd
2340 " installed by s:LocalFastBrowser() when g:netrw_fastbrowse <= 1 (ie. slow, medium speed). 2472 " installed by s:LocalFastBrowser() when g:netrw_fastbrowse <= 1 (ie. slow, medium speed).
2341 " However, s:NetrwBrowse() causes the ShellCmdPost event itself to fire once; setting 2473 " However, s:NetrwBrowse() causes the ShellCmdPost event itself to fire once; setting
2342 " the variable below avoids that second refresh of the screen. The s:LocalBrowseShellCmdRefresh() 2474 " the variable below avoids that second refresh of the screen. The s:LocalBrowseShellCmdRefresh()
2443 if bufnum > 0 && bufname(bufnum) != dirname && bufname(bufnum) != '.' 2575 if bufnum > 0 && bufname(bufnum) != dirname && bufname(bufnum) != '.'
2444 " handle approximate matches 2576 " handle approximate matches
2445 " call Decho(" handling approx match: bufnum#".bufnum."<".bufname(bufnum)."> approx-dirname<".dirname.">") 2577 " call Decho(" handling approx match: bufnum#".bufnum."<".bufname(bufnum)."> approx-dirname<".dirname.">")
2446 let ibuf = 1 2578 let ibuf = 1
2447 let buflast = bufnr("$") 2579 let buflast = bufnr("$")
2448 " call Decho(" findbuf2: buflast=".buflast) 2580 " call Decho(" findbuf2: buflast=bufnr($)=".buflast)
2449 while ibuf <= buflast 2581 while ibuf <= buflast
2450 let bname= substitute(bufname(ibuf),'\\','/','g') 2582 let bname= substitute(bufname(ibuf),'\\','/','g')
2451 let bname= substitute(bname,'.\zs/$','','') 2583 let bname= substitute(bname,'.\zs/$','','')
2452 " call Decho(" findbuf3: while [ibuf=",ibuf."]<=[buflast=".buflast."]: dirname<".dirname."> bufname(".ibuf.")<".bname.">") 2584 " call Decho(" findbuf3: while [ibuf=",ibuf."]<=[buflast=".buflast."]: dirname<".dirname."> bname=bufname(".ibuf.")<".bname.">")
2453 if bname != '' && dirname =~ '/'.bname.'/\=$' && dirname !~ '^/' 2585 if bname != '' && dirname =~ '/'.bname.'/\=$' && dirname !~ '^/'
2454 " call Decho(" findbuf3: passes test 1 : dirname<".dirname.'> =~ /'.bname.'/\=$ && dirname !~ ^/') 2586 " bname is not empty
2587 " dirname ends with bname,
2588 " dirname doesn't start with /, so its not a absolute path
2589 " call Decho(" findbuf3a: passes test 1 : dirname<".dirname.'> =~ /'.bname.'/\=$ && dirname !~ ^/')
2455 break 2590 break
2456 endif 2591 endif
2457 if bname =~ '^'.dirname.'/\=$' 2592 if bname =~ '^'.dirname.'/\=$'
2458 " call Decho(' findbuf3: passes test 2 : bname<'.bname.'>=~^'.dirname.'/\=$') 2593 " bname begins with dirname
2594 " call Decho(' findbuf3b: passes test 2 : bname<'.bname.'>=~^'.dirname.'/\=$')
2459 break 2595 break
2460 endif 2596 endif
2461 if dirname =~ '^'.bname.'/$' 2597 if dirname =~ '^'.bname.'/$'
2462 " call Decho(' findbuf3: passes test 3 : dirname<'.dirname.'>=~^'.bname.'/$') 2598 " call Decho(' findbuf3c: passes test 3 : dirname<'.dirname.'>=~^'.bname.'/$')
2599 break
2600 endif
2601 if bname != '' && dirname =~ '/'.bname.'$' && bname == bufname("%") && line("$") == 1
2602 " call Decho(' findbuf3d: passes test 4 : dirname<'.dirname.'>=~ /'.bname.'$')
2463 break 2603 break
2464 endif 2604 endif
2465 let ibuf= ibuf + 1 2605 let ibuf= ibuf + 1
2466 endwhile 2606 endwhile
2467 if ibuf > buflast 2607 if ibuf > buflast
2472 " call Decho(" findbuf4: bufnum=".bufnum." (ibuf=".ibuf." buflast=".buflast.")") 2612 " call Decho(" findbuf4: bufnum=".bufnum." (ibuf=".ibuf." buflast=".buflast.")")
2473 endif 2613 endif
2474 endif 2614 endif
2475 2615
2476 " get enew buffer and name it -or- re-use buffer {{{3 2616 " get enew buffer and name it -or- re-use buffer {{{3
2477 " call Decho("--get enew buffer and name it OR re-use buffer-- (bufnum=".bufnum.")") 2617 keepj mark '
2478 mark '
2479 if bufnum < 0 || !bufexists(bufnum) 2618 if bufnum < 0 || !bufexists(bufnum)
2619 " call Decho("--get enew buffer and name it (bufexists([bufnum=".bufnum."])=".bufexists(bufnum).")")
2480 call s:NetrwEnew(dirname) 2620 call s:NetrwEnew(dirname)
2481 " call Decho(" got enew buffer#".bufnr("%")." (altbuf<".expand("#").">)") 2621 " call Decho(" got enew buffer#".bufnr("%")." (altbuf<".expand("#").">)")
2482 " name the buffer 2622 " name the buffer
2483 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST 2623 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
2484 " Got enew buffer; transform into a NetrwTreeListing 2624 " Got enew buffer; transform into a NetrwTreeListing
2488 else 2628 else
2489 let s:netrw_treelistnum= s:netrw_treelistnum + 1 2629 let s:netrw_treelistnum= s:netrw_treelistnum + 1
2490 endif 2630 endif
2491 let w:netrw_treebufnr= bufnr("%") 2631 let w:netrw_treebufnr= bufnr("%")
2492 " call Decho(" exe silent! keepalt file NetrwTreeListing ".fnameescape(s:netrw_treelistnum)) 2632 " call Decho(" exe silent! keepalt file NetrwTreeListing ".fnameescape(s:netrw_treelistnum))
2493 exe 'silent! keepalt file NetrwTreeListing\ '.fnameescape(s:netrw_treelistnum) 2633 exe 'sil! keepalt file NetrwTreeListing\ '.fnameescape(s:netrw_treelistnum)
2634 set bt=nofile noswf
2494 nnoremap <silent> <buffer> [ :silent call <SID>TreeListMove('[')<cr> 2635 nnoremap <silent> <buffer> [ :silent call <SID>TreeListMove('[')<cr>
2495 nnoremap <silent> <buffer> ] :silent call <SID>TreeListMove(']')<cr> 2636 nnoremap <silent> <buffer> ] :silent call <SID>TreeListMove(']')<cr>
2496 nnoremap <silent> <buffer> [[ :silent call <SID>TreeListMove('[')<cr> 2637 nnoremap <silent> <buffer> [[ :silent call <SID>TreeListMove('[')<cr>
2497 nnoremap <silent> <buffer> ]] :silent call <SID>TreeListMove(']')<cr> 2638 nnoremap <silent> <buffer> ]] :silent call <SID>TreeListMove(']')<cr>
2498 " call Decho(" tree listing#".s:netrw_treelistnum." bufnr=".w:netrw_treebufnr) 2639 " call Decho(" tree listing#".s:netrw_treelistnum." bufnr=".w:netrw_treebufnr)
2499 else 2640 else
2500 " let v:errmsg= "" " Decho 2641 " let v:errmsg= "" " Decho
2501 let escdirname= fnameescape(dirname) 2642 let escdirname= fnameescape(dirname)
2643 " call Decho(" errmsg<".v:errmsg."> bufnr(escdirname<".escdirname.">)=".bufnr(escdirname)." bufname()<".bufname(bufnr(escdirname)).">")
2644 " call Decho(' exe silent! keepalt file '.escdirname)
2645 " let v:errmsg= "" " Decho
2646 exe 'sil! keepalt file '.escdirname
2502 " call Decho(" errmsg<".v:errmsg."> bufnr(".escdirname.")=".bufnr(escdirname)."<".bufname(bufnr(escdirname)).">") 2647 " call Decho(" errmsg<".v:errmsg."> bufnr(".escdirname.")=".bufnr(escdirname)."<".bufname(bufnr(escdirname)).">")
2503 " call Decho(' exe silent! keepalt file '.escdirname)
2504 exe 'silent! keepalt file '.escdirname
2505 " call Decho(" errmsg<".v:errmsg."> bufnr(".escdirname.")=".bufnr(escdirname)."<".bufname(bufnr(escdirname)).">")
2506 endif 2648 endif
2507 " call Decho(" named enew buffer#".bufnr("%")."<".bufname("%").">") 2649 " call Decho(" named enew buffer#".bufnr("%")."<".bufname("%").">")
2508 2650
2509 else " Re-use the buffer 2651 else " Re-use the buffer
2510 " call Decho("--re-use buffer#".bufnum.": --") 2652 " call Decho("--re-use buffer#".bufnum." (bufexists([bufnum=".bufnum."])=".bufexists(bufnum).")")
2511 let eikeep= &ei 2653 let eikeep= &ei
2512 set ei=all 2654 set ei=all
2513 if getline(2) =~ '^" Netrw Directory Listing' 2655 if getline(2) =~ '^" Netrw Directory Listing'
2514 " call Decho(" re-use buffer#".bufnum."<".((bufnum > 0)? bufname(bufnum) : "")."> using: keepalt b ".bufnum) 2656 " call Decho(" re-use buffer#".bufnum."<".((bufnum > 0)? bufname(bufnum) : "")."> using: keepalt b ".bufnum)
2515 exe "keepalt b ".bufnum 2657 exe "keepalt b ".bufnum
2517 " call Decho(" reusing buffer#".bufnum."<".((bufnum > 0)? bufname(bufnum) : "")."> using: b ".bufnum) 2659 " call Decho(" reusing buffer#".bufnum."<".((bufnum > 0)? bufname(bufnum) : "")."> using: b ".bufnum)
2518 exe "b ".bufnum 2660 exe "b ".bufnum
2519 endif 2661 endif
2520 if bufname("%") == '.' 2662 if bufname("%") == '.'
2521 " call Decho("exe silent! keepalt file ".fnameescape(getcwd())) 2663 " call Decho("exe silent! keepalt file ".fnameescape(getcwd()))
2522 exe "silent! keepalt file ".fnameescape(getcwd()) 2664 exe "sil! keepalt file ".fnameescape(getcwd())
2523 endif 2665 endif
2524 let &ei= eikeep 2666 let &ei= eikeep
2525 if line("$") <= 1 2667 if line("$") <= 1
2526 call s:NetrwListSettings(a:islocal) 2668 call s:NetrwListSettings(a:islocal)
2527 " call Dret("s:NetrwGetBuffer 0 : re-using buffer#".bufnr("%").", but its empty, so refresh it") 2669 " call Dret("s:NetrwGetBuffer 0 : re-using buffer#".bufnr("%").", but its empty, so refresh it")
2528 return 0 2670 return 0
2529 elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST 2671 elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
2530 " call Decho("--re-use tree listing--") 2672 " call Decho("--re-use tree listing--")
2531 " call Decho(" clear buffer<".expand("%")."> with :%d") 2673 " call Decho(" clear buffer<".expand("%")."> with :%d")
2532 silent %d 2674 sil keepj %d
2533 call s:NetrwListSettings(a:islocal) 2675 call s:NetrwListSettings(a:islocal)
2534 " call Dret("s:NetrwGetBuffer 0 : re-using buffer#".bufnr("%").", but treelist mode always needs a refresh") 2676 " call Dret("s:NetrwGetBuffer 0 : re-using buffer#".bufnr("%").", but treelist mode always needs a refresh")
2535 return 0 2677 return 0
2536 else 2678 else
2537 " call Dret("s:NetrwGetBuffer 1 : buf#".bufnr("%")) 2679 " call Dret("s:NetrwGetBuffer 1 : buf#".bufnr("%"))
2542 " do netrw settings: make this buffer not-a-file, modifiable, not line-numbered, etc {{{3 2684 " do netrw settings: make this buffer not-a-file, modifiable, not line-numbered, etc {{{3
2543 " fastbrowse Local Remote Hiding a buffer implies it may be re-used (fast) 2685 " fastbrowse Local Remote Hiding a buffer implies it may be re-used (fast)
2544 " slow 0 D D Deleting a buffer implies it will not be re-used (slow) 2686 " slow 0 D D Deleting a buffer implies it will not be re-used (slow)
2545 " med 1 D H 2687 " med 1 D H
2546 " fast 2 H H 2688 " fast 2 H H
2547 " call Decho("--do netrw settings: make this buffer not-a-file, modifiable, not line-numbered, etc--") 2689 " call Decho("--do netrw settings: make this buffer#".bufnr("%")." not-a-file, modifiable, not line-numbered, etc--")
2548 let fname= expand("%") 2690 let fname= expand("%")
2549 call s:NetrwListSettings(a:islocal) 2691 call s:NetrwListSettings(a:islocal)
2550 " call Decho("exe keepalt file ".fnameescape(fname)) 2692 " call Decho("exe keepalt file ".fnameescape(fname))
2551 exe "keepalt file ".fnameescape(fname) 2693 exe "keepalt file ".fnameescape(fname)
2552 2694
2553 " delete all lines from buffer {{{3 2695 " delete all lines from buffer {{{3
2554 " call Decho("--delete all lines from buffer--") 2696 " call Decho("--delete all lines from buffer--")
2555 " call Decho(" clear buffer<".expand("%")."> with :%d") 2697 " call Decho(" clear buffer<".expand("%")."> with :%d")
2556 keepalt silent! %d 2698 sil! keepalt keepj %d
2557 2699
2558 " call Dret("s:NetrwGetBuffer 0 : buf#".bufnr("%")) 2700 " call Dret("s:NetrwGetBuffer 0 : buf#".bufnr("%"))
2559 return 0 2701 return 0
2560 endfun 2702 endfun
2561 2703
2593 endif 2735 endif
2594 2736
2595 if exists("w:netrw_bannercnt") && line(".") < w:netrw_bannercnt 2737 if exists("w:netrw_bannercnt") && line(".") < w:netrw_bannercnt
2596 " Active Banner support 2738 " Active Banner support
2597 " call Decho("active banner handling") 2739 " call Decho("active banner handling")
2598 norm! 0 2740 keepj norm! 0
2599 let dirname= "./" 2741 let dirname= "./"
2600 let curline= getline('.') 2742 let curline= getline('.')
2601 2743
2602 if curline =~ '"\s*Sorted by\s' 2744 if curline =~ '"\s*Sorted by\s'
2603 norm s 2745 keepj norm s
2604 let s:netrw_skipbrowse= 1 2746 let s:netrw_skipbrowse= 1
2605 echo 'Pressing "s" also works' 2747 echo 'Pressing "s" also works'
2606 2748
2607 elseif curline =~ '"\s*Sort sequence:' 2749 elseif curline =~ '"\s*Sort sequence:'
2608 let s:netrw_skipbrowse= 1 2750 let s:netrw_skipbrowse= 1
2609 echo 'Press "S" to edit sorting sequence' 2751 echo 'Press "S" to edit sorting sequence'
2610 2752
2611 elseif curline =~ '"\s*Quick Help:' 2753 elseif curline =~ '"\s*Quick Help:'
2612 norm ? 2754 keepj norm ?
2613 let s:netrw_skipbrowse= 1 2755 let s:netrw_skipbrowse= 1
2614 echo 'Pressing "?" also works' 2756 echo 'Pressing "?" also works'
2615 2757
2616 elseif curline =~ '"\s*\%(Hiding\|Showing\):' 2758 elseif curline =~ '"\s*\%(Hiding\|Showing\):'
2617 norm a 2759 keepj norm a
2618 let s:netrw_skipbrowse= 1 2760 let s:netrw_skipbrowse= 1
2619 echo 'Pressing "a" also works' 2761 echo 'Pressing "a" also works'
2620 2762
2621 elseif line("$") > w:netrw_bannercnt 2763 elseif line("$") > w:netrw_bannercnt
2622 exe 'silent keepjumps '.w:netrw_bannercnt 2764 exe 'sil keepj '.w:netrw_bannercnt
2623 endif 2765 endif
2624 2766
2625 elseif w:netrw_liststyle == s:THINLIST 2767 elseif w:netrw_liststyle == s:THINLIST
2626 " call Decho("thin column handling") 2768 " call Decho("thin column handling")
2627 norm! 0 2769 keepj norm! 0
2628 let dirname= getline('.') 2770 let dirname= getline('.')
2629 2771
2630 elseif w:netrw_liststyle == s:LONGLIST 2772 elseif w:netrw_liststyle == s:LONGLIST
2631 " call Decho("long column handling") 2773 " call Decho("long column handling")
2632 norm! 0 2774 keepj norm! 0
2633 let dirname= substitute(getline('.'),'^\(\%(\S\+ \)*\S\+\).\{-}$','\1','e') 2775 let dirname= substitute(getline('.'),'^\(\%(\S\+ \)*\S\+\).\{-}$','\1','e')
2634 2776
2635 elseif w:netrw_liststyle == s:TREELIST 2777 elseif w:netrw_liststyle == s:TREELIST
2636 " call Decho("treelist handling") 2778 " call Decho("treelist handling")
2637 let dirname= substitute(getline('.'),'^\(| \)*','','e') 2779 let dirname= substitute(getline('.'),'^\(| \)*','','e')
2650 " call Decho("buf#".bufnr("%")."<".bufname("%").">") 2792 " call Decho("buf#".bufnr("%")."<".bufname("%").">")
2651 let filestart = (virtcol(".")/b:netrw_cpf)*b:netrw_cpf 2793 let filestart = (virtcol(".")/b:netrw_cpf)*b:netrw_cpf
2652 " call Decho("filestart= ([virtcol=".virtcol(".")."]/[b:netrw_cpf=".b:netrw_cpf."])*b:netrw_cpf=".filestart." bannercnt=".w:netrw_bannercnt) 2794 " call Decho("filestart= ([virtcol=".virtcol(".")."]/[b:netrw_cpf=".b:netrw_cpf."])*b:netrw_cpf=".filestart." bannercnt=".w:netrw_bannercnt)
2653 " call Decho("1: dirname<".dirname.">") 2795 " call Decho("1: dirname<".dirname.">")
2654 if filestart == 0 2796 if filestart == 0
2655 norm! 0ma 2797 keepj norm! 0ma
2656 else 2798 else
2657 call cursor(line("."),filestart+1) 2799 call cursor(line("."),filestart+1)
2658 norm! ma 2800 keepj norm! ma
2659 endif 2801 endif
2660 let rega= @a 2802 let rega= @a
2661 let eofname= filestart + b:netrw_cpf + 1 2803 let eofname= filestart + b:netrw_cpf + 1
2662 if eofname <= col("$") 2804 if eofname <= col("$")
2663 call cursor(line("."),filestart+b:netrw_cpf+1) 2805 call cursor(line("."),filestart+b:netrw_cpf+1)
2664 norm! "ay`a 2806 keepj norm! "ay`a
2665 else 2807 else
2666 norm! "ay$ 2808 keepj norm! "ay$
2667 endif 2809 endif
2668 let dirname = @a 2810 let dirname = @a
2669 let @a = rega 2811 let @a = rega
2670 " call Decho("2: dirname<".dirname.">") 2812 " call Decho("2: dirname<".dirname.">")
2671 let dirname= substitute(dirname,'\s\+$','','e') 2813 let dirname= substitute(dirname,'\s\+$','','e')
2681 " call Dret("s:NetrwGetWord <".dirname.">") 2823 " call Dret("s:NetrwGetWord <".dirname.">")
2682 return dirname 2824 return dirname
2683 endfun 2825 endfun
2684 2826
2685 " --------------------------------------------------------------------- 2827 " ---------------------------------------------------------------------
2686 " s:NetrwListSettings: {{{2 2828 " s:NetrwListSettings: make standard settings for a netrw listing {{{2
2687 fun! s:NetrwListSettings(islocal) 2829 fun! s:NetrwListSettings(islocal)
2688 " call Dfunc("s:NetrwListSettings(islocal=".a:islocal.")") 2830 " call Dfunc("s:NetrwListSettings(islocal=".a:islocal.")")
2689 let fname= bufname("%") 2831 let fname= bufname("%")
2690 " call Decho("setlocal bt=nofile nobl ma nonu nowrap noro") 2832 " call Decho("setlocal bt=nofile nobl ma nonu nowrap noro")
2691 setlocal bt=nofile nobl ma nonu nowrap noro 2833 setlocal bt=nofile nobl ma nonu nowrap noro
2747 setlocal ma noro 2889 setlocal ma noro
2748 " call Decho("setlocal ma noro") 2890 " call Decho("setlocal ma noro")
2749 2891
2750 " clear buffer - this will cause NetrwBrowse/LocalBrowseCheck to do a refresh 2892 " clear buffer - this will cause NetrwBrowse/LocalBrowseCheck to do a refresh
2751 " call Decho("clear buffer<".expand("%")."> with :%d") 2893 " call Decho("clear buffer<".expand("%")."> with :%d")
2752 %d 2894 keepj %d
2895 " following prevents tree listing buffer from being marked "modified"
2896 setlocal nomod
2897
2898 " refresh the listing
2899 " call Decho("refresh the listing")
2900 let svpos= netrw#NetrwSavePosn()
2901 call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
2902 call netrw#NetrwRestorePosn(svpos)
2903 call s:NetrwCursorline()
2904
2905 " keep cursor on the filename
2906 sil keepj $
2907 let result= search('\%(^\%(|\+\s\)\=\|\s\{2,}\)\zs'.escape(fname,'.\[]*$^').'\%(\s\{2,}\|$\)','bc')
2908 " call Decho("search result=".result." w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'N/A'))
2909 if result <= 0 && exists("w:netrw_bannercnt")
2910 exe "keepj ".w:netrw_bannercnt
2911 endif
2912
2913 " call Dret("NetrwListStyle".(exists("w:netrw_liststyle")? ' : w:netrw_liststyle='.w:netrw_liststyle : ""))
2914 endfun
2915
2916 " ---------------------------------------------------------------------
2917 " s:NetrwBannerCtrl: toggles the display of the banner {{{2
2918 fun! s:NetrwBannerCtrl(islocal)
2919 " call Dfunc("s:NetrwBannerCtrl(islocal=".a:islocal.") g:netrw_banner=".g:netrw_banner)
2920
2921 " toggle the banner (enable/suppress)
2922 let g:netrw_banner= !g:netrw_banner
2753 2923
2754 " refresh the listing 2924 " refresh the listing
2755 let svpos= netrw#NetrwSavePosn() 2925 let svpos= netrw#NetrwSavePosn()
2756 call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) 2926 call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
2757 call netrw#NetrwRestorePosn(svpos)
2758 if w:netrw_liststyle != s:WIDELIST
2759 if g:netrw_cursorline == 2
2760 setlocal cursorline
2761 let &cursorcolumn= s:netrw_usercuc
2762 elseif g:netrw_cursorline
2763 setlocal cursorline
2764 " call Decho("setlocal cursorline")
2765 endif
2766 else
2767 if g:netrw_cursorline == 2
2768 setlocal cursorline cursorcolumn
2769 " call Decho("setlocal cursorline cursorcolumn")
2770 elseif g:netrw_cursorline
2771 let &cursorline= s:netrw_usercul
2772 endif
2773 endif
2774 2927
2775 " keep cursor on the filename 2928 " keep cursor on the filename
2776 silent keepjumps $ 2929 let fname= s:NetrwGetWord()
2930 sil keepj $
2777 let result= search('\%(^\%(|\+\s\)\=\|\s\{2,}\)\zs'.escape(fname,'.\[]*$^').'\%(\s\{2,}\|$\)','bc') 2931 let result= search('\%(^\%(|\+\s\)\=\|\s\{2,}\)\zs'.escape(fname,'.\[]*$^').'\%(\s\{2,}\|$\)','bc')
2778 " call Decho("search result=".result." w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'N/A')) 2932 " call Decho("search result=".result." w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'N/A'))
2779 if result <= 0 && exists("w:netrw_bannercnt") 2933 if result <= 0 && exists("w:netrw_bannercnt")
2780 exe "keepjumps ".w:netrw_bannercnt 2934 exe "keepj ".w:netrw_bannercnt
2781 endif
2782
2783 " call Dret("NetrwListStyle".(exists("w:netrw_liststyle")? ' : w:netrw_liststyle='.w:netrw_liststyle : ""))
2784 endfun
2785
2786 " ---------------------------------------------------------------------
2787 " s:NetrwBannerCtrl: toggles the display of the banner {{{2
2788 fun! s:NetrwBannerCtrl(islocal)
2789 " call Dfunc("s:NetrwBannerCtrl(islocal=".a:islocal.") g:netrw_banner=".g:netrw_banner)
2790
2791 " toggle the banner (enable/suppress)
2792 let g:netrw_banner= !g:netrw_banner
2793
2794 " refresh the listing
2795 let svpos= netrw#NetrwSavePosn()
2796 call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
2797
2798 " keep cursor on the filename
2799 let fname= s:NetrwGetWord()
2800 silent keepjumps $
2801 let result= search('\%(^\%(|\+\s\)\=\|\s\{2,}\)\zs'.escape(fname,'.\[]*$^').'\%(\s\{2,}\|$\)','bc')
2802 " call Decho("search result=".result." w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'N/A'))
2803 if result <= 0 && exists("w:netrw_bannercnt")
2804 exe "keepjumps ".w:netrw_bannercnt
2805 endif 2935 endif
2806 " call Dret("s:NetrwBannerCtrl : g:netrw_banner=".g:netrw_banner) 2936 " call Dret("s:NetrwBannerCtrl : g:netrw_banner=".g:netrw_banner)
2807 endfun 2937 endfun
2808 2938
2809 " --------------------------------------------------------------------- 2939 " ---------------------------------------------------------------------
2819 2949
2820 " the following test assures that gvim is running, has menus available, and has menus enabled. 2950 " the following test assures that gvim is running, has menus available, and has menus enabled.
2821 if has("gui") && has("menu") && has("gui_running") && &go =~ 'm' && g:netrw_menu 2951 if has("gui") && has("menu") && has("gui_running") && &go =~ 'm' && g:netrw_menu
2822 if exists("g:NetrwTopLvlMenu") 2952 if exists("g:NetrwTopLvlMenu")
2823 " call Decho("removing ".g:NetrwTopLvlMenu."Bookmarks menu item(s)") 2953 " call Decho("removing ".g:NetrwTopLvlMenu."Bookmarks menu item(s)")
2824 exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Bookmarks' 2954 exe 'sil! unmenu '.g:NetrwTopLvlMenu.'Bookmarks'
2825 exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Delete' 2955 exe 'sil! unmenu '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Delete'
2826 endif 2956 endif
2827 if !exists("s:netrw_initbookhist") 2957 if !exists("s:netrw_initbookhist")
2828 call s:NetrwBookHistRead() 2958 call s:NetrwBookHistRead()
2829 endif 2959 endif
2830 2960
2831 " show bookmarked places 2961 " show bookmarked places
2832 if exists("g:netrw_bookmarklist") && g:netrw_bookmarklist != [] 2962 if exists("g:netrw_bookmarklist") && g:netrw_bookmarklist != []
2833 let cnt= 1 2963 let cnt= 1
2834 for bmd in g:netrw_bookmarklist 2964 for bmd in g:netrw_bookmarklist
2835 " call Decho('silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmark.'.bmd.' :e '.bmd) 2965 " call Decho('silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmark.'.bmd.' :e '.bmd)
2836 let bmd= escape(bmd,'. ') 2966 let bmd= escape(bmd,g:netrw_menu_escape)
2837 2967
2838 " show bookmarks for goto menu 2968 " show bookmarks for goto menu
2839 exe 'silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks.'.bmd.' :e '.bmd."\<cr>" 2969 exe 'sil! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks.'.bmd.' :e '.bmd."\<cr>"
2840 2970
2841 " show bookmarks for deletion menu 2971 " show bookmarks for deletion menu
2842 exe 'silent! menu '.g:NetrwMenuPriority.".8.2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Delete.'.bmd.' '.cnt."mB" 2972 exe 'sil! menu '.g:NetrwMenuPriority.".8.2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Delete.'.bmd.' '.cnt."mB"
2843 let cnt= cnt + 1 2973 let cnt= cnt + 1
2844 endfor 2974 endfor
2845 2975
2846 endif 2976 endif
2847 2977
2851 let histcnt = 0 2981 let histcnt = 0
2852 while ( first || cnt != g:netrw_dirhist_cnt ) 2982 while ( first || cnt != g:netrw_dirhist_cnt )
2853 let histcnt = histcnt + 1 2983 let histcnt = histcnt + 1
2854 let priority = g:netrw_dirhist_cnt + histcnt 2984 let priority = g:netrw_dirhist_cnt + histcnt
2855 if exists("g:netrw_dirhist_{cnt}") 2985 if exists("g:netrw_dirhist_{cnt}")
2856 let histdir= escape(g:netrw_dirhist_{cnt},'./&? ') 2986 let histdir= escape(g:netrw_dirhist_{cnt},g:netrw_menu_escape)
2857 " call Decho('silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.' :e '.histdir) 2987 " call Decho('silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.' :e '.histdir)
2858 exe 'silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.' :e '.histdir."\<cr>" 2988 exe 'sil! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.' :e '.histdir."\<cr>"
2859 endif 2989 endif
2860 let first = 0 2990 let first = 0
2861 let cnt = ( cnt - 1 ) % g:netrw_dirhistmax 2991 let cnt = ( cnt - 1 ) % g:netrw_dirhistmax
2862 if cnt < 0 2992 if cnt < 0
2863 let cnt= cnt + g:netrw_dirhistmax 2993 let cnt= cnt + g:netrw_dirhistmax
2884 " call Dredir("ls!") 3014 " call Dredir("ls!")
2885 " call Dret("s:NetrwBrowseChgDir") 3015 " call Dret("s:NetrwBrowseChgDir")
2886 return 3016 return
2887 endif 3017 endif
2888 3018
2889 " check if the status bar was clicked on instead of a file/directory name
2890 call feedkeys("\<LeftMouse>")
2891 let c= getchar()
2892 let mouse_lnum = v:mouse_lnum
2893 let wlastline = line('w$')
2894 let lastline = line('$')
2895 " call Decho("v:mouse_lnum=".mouse_lnum." line(w$)=".wlastline." line($)=".lastline)
2896 if mouse_lnum == wlastline + 1 || v:mouse_win != winnr()
2897 " call Decho("appears to be a status bar leftmouse click")
2898 " appears to be a status bar leftmouse click
2899 return
2900 endif
2901
2902 call s:NetrwOptionSave("s:") 3019 call s:NetrwOptionSave("s:")
2903 call s:NetrwSafeOptions() 3020 call s:NetrwSafeOptions()
2904 let nbcd_curpos = netrw#NetrwSavePosn() 3021 let nbcd_curpos = netrw#NetrwSavePosn()
2905 let s:nbcd_curpos_{bufnr('%')} = nbcd_curpos 3022 let s:nbcd_curpos_{bufnr('%')} = nbcd_curpos
2906 let dirname = substitute(b:netrw_curdir,'\\','/','ge') 3023 if (has("win32") || has("win95") || has("win64") || has("win16"))
2907 let newdir = a:newdir 3024 let dirname = substitute(b:netrw_curdir,'\\','/','ge')
2908 let dolockout = 0 3025 else
3026 let dirname= b:netrw_curdir
3027 endif
3028 let newdir = a:newdir
3029 let dolockout = 0
2909 3030
2910 " set up o/s-dependent directory recognition pattern 3031 " set up o/s-dependent directory recognition pattern
2911 if has("amiga") 3032 if has("amiga")
2912 let dirpat= '[\/:]$' 3033 let dirpat= '[\/:]$'
2913 else 3034 else
3026 if w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") 3147 if w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict")
3027 " force a refresh 3148 " force a refresh
3028 " call Decho("clear buffer<".expand("%")."> with :%d") 3149 " call Decho("clear buffer<".expand("%")."> with :%d")
3029 setlocal noro ma 3150 setlocal noro ma
3030 " call Decho("setlocal noro ma") 3151 " call Decho("setlocal noro ma")
3031 keepjumps %d 3152 keepj %d
3032 endif 3153 endif
3033 3154
3034 if has("amiga") 3155 if has("amiga")
3035 " amiga 3156 " amiga
3036 " call Decho('case "go up one directory": newdir == "../" and amiga') 3157 " call Decho('case "go up one directory": newdir == "../" and amiga')
3062 " force a refresh (for TREELIST, wait for NetrwTreeDir() to force the refresh) 3183 " force a refresh (for TREELIST, wait for NetrwTreeDir() to force the refresh)
3063 setlocal noro ma 3184 setlocal noro ma
3064 " call Decho("setlocal noro ma") 3185 " call Decho("setlocal noro ma")
3065 if !(exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir")) 3186 if !(exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir"))
3066 " call Decho("clear buffer<".expand("%")."> with :%d") 3187 " call Decho("clear buffer<".expand("%")."> with :%d")
3067 keepjumps %d 3188 keepj %d
3068 endif 3189 endif
3069 let treedir = s:NetrwTreeDir() 3190 let treedir = s:NetrwTreeDir()
3070 let s:treecurpos = nbcd_curpos 3191 let s:treecurpos = nbcd_curpos
3071 let haskey= 0 3192 let haskey= 0
3072 " call Decho("w:netrw_treedict<".string(w:netrw_treedict).">") 3193 " call Decho("w:netrw_treedict<".string(w:netrw_treedict).">")
3105 " close tree listing for selected subdirectory 3226 " close tree listing for selected subdirectory
3106 " call Decho("closing selected subdirectory<".dirname.">") 3227 " call Decho("closing selected subdirectory<".dirname.">")
3107 call remove(w:netrw_treedict,treedir) 3228 call remove(w:netrw_treedict,treedir)
3108 " call Decho("removed entry<".treedir."> from treedict") 3229 " call Decho("removed entry<".treedir."> from treedict")
3109 " call Decho("yielding treedict<".string(w:netrw_treedict).">") 3230 " call Decho("yielding treedict<".string(w:netrw_treedict).">")
3110 let dirname = w:netrw_treetop 3231 let dirname= w:netrw_treetop
3111 else 3232 else
3112 " go down one directory 3233 " go down one directory
3113 let dirname= substitute(treedir,'/*$','/','') 3234 let dirname= substitute(treedir,'/*$','/','')
3114 " call Decho("go down one dir: treedir<".treedir.">") 3235 " call Decho("go down one dir: treedir<".treedir.">")
3115 endif 3236 endif
3202 " renaming failed 3323 " renaming failed
3203 let fname= s:netrw_tmpfile 3324 let fname= s:netrw_tmpfile
3204 endif 3325 endif
3205 else 3326 else
3206 let fname= a:fname 3327 let fname= a:fname
3328 " special ~ handler for local
3329 if fname =~ '^\~' && expand("$HOME") != ""
3330 " call Decho('invoking special ~ handler')
3331 let fname= substitute(fname,'^\~',expand("$HOME"),'')
3332 endif
3207 endif 3333 endif
3208 " call Decho("fname<".fname.">") 3334 " call Decho("fname<".fname.">")
3209 " call Decho("exten<".exten."> "."netrwFileHandlers#NFH_".exten."():exists=".exists("*netrwFileHandlers#NFH_".exten)) 3335 " call Decho("exten<".exten."> "."netrwFileHandlers#NFH_".exten."():exists=".exists("*netrwFileHandlers#NFH_".exten))
3210 3336
3211 " set up redirection 3337 " set up redirection
3268 call inputsave()|call input("Press <cr> to continue")|call inputrestore() 3394 call inputsave()|call input("Press <cr> to continue")|call inputrestore()
3269 let ret= v:shell_error 3395 let ret= v:shell_error
3270 3396
3271 elseif has("unix") && executable("gnome-open") && !s:haskdeinit 3397 elseif has("unix") && executable("gnome-open") && !s:haskdeinit
3272 " call Decho("exe silent !gnome-open ".shellescape(fname,1)." ".redir) 3398 " call Decho("exe silent !gnome-open ".shellescape(fname,1)." ".redir)
3273 exe "silent !gnome-open ".shellescape(fname,1).redir 3399 exe "sil !gnome-open ".shellescape(fname,1).redir
3274 let ret= v:shell_error 3400 let ret= v:shell_error
3275 3401
3276 elseif has("unix") && executable("kfmclient") && s:haskdeinit 3402 elseif has("unix") && executable("kfmclient") && s:haskdeinit
3277 " call Decho("exe silent !kfmclient exec ".shellescape(fname,1)." ".redir) 3403 " call Decho("exe silent !kfmclient exec ".shellescape(fname,1)." ".redir)
3278 exe "silent !kfmclient exec ".shellescape(fname,1)." ".redir 3404 exe "sil !kfmclient exec ".shellescape(fname,1)." ".redir
3279 let ret= v:shell_error 3405 let ret= v:shell_error
3280 3406
3281 elseif has("macunix") && executable("open") 3407 elseif has("macunix") && executable("open")
3282 " call Decho("exe silent !open ".shellescape(fname,1)." ".redir) 3408 " call Decho("exe silent !open ".shellescape(fname,1)." ".redir)
3283 exe "silent !open ".shellescape(fname,1)." ".redir 3409 exe "sil !open ".shellescape(fname,1)." ".redir
3284 let ret= v:shell_error 3410 let ret= v:shell_error
3285 3411
3286 else 3412 else
3287 " netrwFileHandlers#Invoke() always returns 0 3413 " netrwFileHandlers#Invoke() always returns 0
3288 let ret= netrwFileHandlers#Invoke(exten,fname) 3414 let ret= netrwFileHandlers#Invoke(exten,fname)
3309 if a:remote == 1 3435 if a:remote == 1
3310 setlocal bh=delete bt=nofile 3436 setlocal bh=delete bt=nofile
3311 if g:netrw_use_noswf 3437 if g:netrw_use_noswf
3312 setlocal noswf 3438 setlocal noswf
3313 endif 3439 endif
3314 exe "norm! \<c-o>" 3440 exe "keepj norm! \<c-o>"
3315 " redraw! 3441 " redraw!
3316 endif 3442 endif
3317 3443
3318 " call Dret("NetrwBrowseX") 3444 " call Dret("NetrwBrowseX")
3319 endfun 3445 endfun
3379 " call Dfunc("netrw#Explore(indx=".a:indx." dosplit=".a:dosplit." style=".a:style.",a:1<".a:1.">) &modified=".&modified." a:0=".a:0) 3505 " call Dfunc("netrw#Explore(indx=".a:indx." dosplit=".a:dosplit." style=".a:style.",a:1<".a:1.">) &modified=".&modified." a:0=".a:0)
3380 if !exists("b:netrw_curdir") 3506 if !exists("b:netrw_curdir")
3381 let b:netrw_curdir= getcwd() 3507 let b:netrw_curdir= getcwd()
3382 " call Decho("set b:netrw_curdir<".b:netrw_curdir."> (used getcwd)") 3508 " call Decho("set b:netrw_curdir<".b:netrw_curdir."> (used getcwd)")
3383 endif 3509 endif
3384 let curdir = b:netrw_curdir 3510 let curdir = simplify(b:netrw_curdir)
3385 let curfiledir = substitute(expand("%:p"),'^\(.*[/\\]\)[^/\\]*$','\1','e') 3511 let curfiledir = substitute(expand("%:p"),'^\(.*[/\\]\)[^/\\]*$','\1','e')
3386 " call Decho("curdir<".curdir."> curfiledir<".curfiledir.">") 3512 " call Decho("curdir<".curdir."> curfiledir<".curfiledir.">")
3387 " call FOTEST(1) 3513 " call FOTEST(1)
3388 3514
3389 " save registers 3515 " save registers
3390 silent! let keepregstar = @* 3516 sil! let keepregstar = @*
3391 silent! let keepregplus = @+ 3517 sil! let keepregplus = @+
3392 silent! let keepregslash= @/ 3518 sil! let keepregslash= @/
3393 3519
3394 " if dosplit or file has been modified 3520 " if dosplit or file has been modified
3395 if a:dosplit || &modified || a:style == 6 3521 if a:dosplit || &modified || a:style == 6
3396 " call Decho("case: dosplit=".a:dosplit." modified=".&modified." a:style=".a:style) 3522 " call Decho("case dosplit=".a:dosplit." modified=".&modified." a:style=".a:style.": dosplit or file has been modified")
3397 call s:SaveWinVars() 3523 call s:SaveWinVars()
3398 let winsize= g:netrw_winsize 3524 let winsize= g:netrw_winsize
3399 if a:indx > 0 3525 if a:indx > 0
3400 let winsize= a:indx 3526 let winsize= a:indx
3401 endif 3527 endif
3429 " call Decho("style = 6: Texplore") 3555 " call Decho("style = 6: Texplore")
3430 tabnew 3556 tabnew
3431 call s:RestoreBufVars() 3557 call s:RestoreBufVars()
3432 endif 3558 endif
3433 call s:RestoreWinVars() 3559 call s:RestoreWinVars()
3434 endif 3560 " else " Decho
3435 norm! 0 3561 " call Decho("case a:dosplit=".a:dosplit." AND modified=".&modified." AND a:style=".a:style." is not 6")
3562 endif
3563 keepj norm! 0
3436 " call FOTEST(2) 3564 " call FOTEST(2)
3437 3565
3438 if a:0 > 0 3566 if a:0 > 0
3439 " call Decho("case [a:0=".a:0."]>0: a:1<".a:1.">") 3567 " call Decho("case [a:0=".a:0."] > 0: a:1<".a:1.">")
3440 if a:1 =~ '^\~' && (has("unix") || (exists("g:netrw_cygwin") && g:netrw_cygwin)) 3568 if a:1 =~ '^\~' && (has("unix") || (exists("g:netrw_cygwin") && g:netrw_cygwin))
3441 let dirname= substitute(a:1,'\~',expand("$HOME"),'') 3569 " call Decho("case a:1: ~ and unix or cygwin")
3570 let dirname= simplify(substitute(a:1,'\~',expand("$HOME"),''))
3442 " call Decho("using dirname<".dirname."> (case: ~ && unix||cygwin)") 3571 " call Decho("using dirname<".dirname."> (case: ~ && unix||cygwin)")
3443 elseif a:1 == '.' 3572 elseif a:1 == '.'
3444 let dirname= exists("b:netrw_curdir")? b:netrw_curdir : getcwd() 3573 " call Decho("case a:1: .")
3574 let dirname= simplify(exists("b:netrw_curdir")? b:netrw_curdir : getcwd())
3445 if dirname !~ '/$' 3575 if dirname !~ '/$'
3446 let dirname= dirname."/" 3576 let dirname= dirname."/"
3447 endif 3577 endif
3448 " call Decho("using dirname<".dirname."> (case: ".(exists("b:netrw_curdir")? "b:netrw_curdir" : "getcwd()").")") 3578 " call Decho("using dirname<".dirname."> (case: ".(exists("b:netrw_curdir")? "b:netrw_curdir" : "getcwd()").")")
3449 elseif a:1 =~ '\$' 3579 elseif a:1 =~ '\$'
3450 let dirname= expand(a:1) 3580 " call Decho("case a:1: $")
3581 let dirname= simplify(expand(a:1))
3451 " call Decho("using user-specified dirname<".dirname."> with $env-var") 3582 " call Decho("using user-specified dirname<".dirname."> with $env-var")
3583 elseif a:1 !~ '^\*/'
3584 " call Decho("case a:1: other, not pattern or filepattern")
3585 let dirname= simplify(a:1)
3586 " call Decho("using user-specified dirname<".dirname.">")
3452 else 3587 else
3588 " call Decho("case a:1: pattern or filepattern")
3453 let dirname= a:1 3589 let dirname= a:1
3454 " call Decho("using user-specified dirname<".dirname.">")
3455 endif 3590 endif
3456 else 3591 else
3457 " clear explore 3592 " clear explore
3593 " call Decho("case a:0=".a:0.": clearing Explore list")
3458 call s:NetrwClearExplore() 3594 call s:NetrwClearExplore()
3459 " call Dret("netrw#Explore : cleared list") 3595 " call Dret("netrw#Explore : cleared list")
3460 return 3596 return
3461 endif 3597 endif
3598
3462 " call FOTEST(3) 3599 " call FOTEST(3)
3600 " call Decho("dirname<".dirname.">")
3601 if dirname =~ '\.\./\=$'
3602 let dirname= simplify(fnamemodify(dirname,':p:h'))
3603 elseif dirname =~ '\.\.' || dirname == '.'
3604 let dirname= simplify(fnamemodify(dirname,':p'))
3605 endif
3606 " call Decho("dirname<".dirname."> (after simplify)")
3463 3607
3464 if dirname =~ '/\*\*/' 3608 if dirname =~ '/\*\*/'
3465 " handle .../**/.../filepat 3609 " handle .../**/.../filepat
3466 " call Decho("case Explore .../**/.../filepat") 3610 " call Decho("case Explore .../**/.../filepat")
3467 let prefixdir= substitute(dirname,'^\(.\{-}\)\*\*.*$','\1','') 3611 let prefixdir= substitute(dirname,'^\(.\{-}\)\*\*.*$','\1','')
3522 call netrw#LocalBrowseCheck(dirname) 3666 call netrw#LocalBrowseCheck(dirname)
3523 endif 3667 endif
3524 3668
3525 " call Decho("curdir<".curdir.">") 3669 " call Decho("curdir<".curdir.">")
3526 if has("win32") || has("win95") || has("win64") || has("win16") 3670 if has("win32") || has("win95") || has("win64") || has("win16")
3527 call search('\<'.substitute(curdir,'^.*[/\\]','','e').'\>','cW') 3671 keepj call search('\<'.substitute(curdir,'^.*[/\\]','','e').'\>','cW')
3528 else 3672 else
3529 call search('\<'.substitute(curdir,'^.*/','','e').'\>','cW') 3673 keepj call search('\<'.substitute(curdir,'^.*/','','e').'\>','cW')
3530 endif 3674 endif
3531 3675
3532 " starpat=1: Explore *//pattern (current directory only search for files containing pattern) 3676 " starpat=1: Explore *//pattern (current directory only search for files containing pattern)
3533 " starpat=2: Explore **//pattern (recursive descent search for files containing pattern) 3677 " starpat=2: Explore **//pattern (recursive descent search for files containing pattern)
3534 " starpat=3: Explore */filepat (search in current directory for filenames matching filepat) 3678 " starpat=3: Explore */filepat (search in current directory for filenames matching filepat)
3555 if indx == -1 3699 if indx == -1
3556 " Nexplore 3700 " Nexplore
3557 " call Decho("case Nexplore with starpat=".starpat.": (indx=".indx.")") 3701 " call Decho("case Nexplore with starpat=".starpat.": (indx=".indx.")")
3558 if !exists("w:netrw_explore_list") " sanity check 3702 if !exists("w:netrw_explore_list") " sanity check
3559 call netrw#ErrorMsg(s:WARNING,"using Nexplore or <s-down> improperly; see help for netrw-starstar",40) 3703 call netrw#ErrorMsg(s:WARNING,"using Nexplore or <s-down> improperly; see help for netrw-starstar",40)
3560 silent! let @* = keepregstar 3704 sil! let @* = keepregstar
3561 silent! let @+ = keepregstar 3705 sil! let @+ = keepregstar
3562 silent! let @/ = keepregslash 3706 sil! let @/ = keepregslash
3563 " call Dret("netrw#Explore") 3707 " call Dret("netrw#Explore")
3564 return 3708 return
3565 endif 3709 endif
3566 let indx= w:netrw_explore_indx 3710 let indx= w:netrw_explore_indx
3567 if indx < 0 | let indx= 0 | endif 3711 if indx < 0 | let indx= 0 | endif
3578 elseif indx == -2 3722 elseif indx == -2
3579 " Pexplore 3723 " Pexplore
3580 " call Decho("case Pexplore with starpat=".starpat.": (indx=".indx.")") 3724 " call Decho("case Pexplore with starpat=".starpat.": (indx=".indx.")")
3581 if !exists("w:netrw_explore_list") " sanity check 3725 if !exists("w:netrw_explore_list") " sanity check
3582 call netrw#ErrorMsg(s:WARNING,"using Pexplore or <s-up> improperly; see help for netrw-starstar",41) 3726 call netrw#ErrorMsg(s:WARNING,"using Pexplore or <s-up> improperly; see help for netrw-starstar",41)
3583 silent! let @* = keepregstar 3727 sil! let @* = keepregstar
3584 silent! let @+ = keepregstar 3728 sil! let @+ = keepregstar
3585 silent! let @/ = keepregslash 3729 sil! let @/ = keepregslash
3586 " call Dret("netrw#Explore") 3730 " call Dret("netrw#Explore")
3587 return 3731 return
3588 endif 3732 endif
3589 let indx= w:netrw_explore_indx 3733 let indx= w:netrw_explore_indx
3590 if indx < 0 | let indx= 0 | endif 3734 if indx < 0 | let indx= 0 | endif
3613 if starpat == 1 3757 if starpat == 1
3614 " starpat=1: Explore *//pattern (current directory only search for files containing pattern) 3758 " starpat=1: Explore *//pattern (current directory only search for files containing pattern)
3615 " call Decho("starpat=".starpat.": build *//pattern list") 3759 " call Decho("starpat=".starpat.": build *//pattern list")
3616 " call Decho("pattern<".pattern.">") 3760 " call Decho("pattern<".pattern.">")
3617 try 3761 try
3618 exe "noautocmd vimgrep /".pattern."/gj ".fnameescape(b:netrw_curdir)."/*" 3762 exe "keepj noautocmd vimgrep /".pattern."/gj ".fnameescape(b:netrw_curdir)."/*"
3619 catch /^Vim\%((\a\+)\)\=:E480/ 3763 catch /^Vim\%((\a\+)\)\=:E480/
3620 call netrw#ErrorMsg(s:WARNING,"no match with pattern<".pattern.">",76) 3764 call netrw#ErrorMsg(s:WARNING,"no match with pattern<".pattern.">",76)
3621 " call Dret("netrw#Explore : unable to find pattern<".pattern.">") 3765 " call Dret("netrw#Explore : unable to find pattern<".pattern.">")
3622 return 3766 return
3623 endtry 3767 endtry
3626 3770
3627 elseif starpat == 2 3771 elseif starpat == 2
3628 " starpat=2: Explore **//pattern (recursive descent search for files containing pattern) 3772 " starpat=2: Explore **//pattern (recursive descent search for files containing pattern)
3629 " call Decho("starpat=".starpat.": build **//pattern list") 3773 " call Decho("starpat=".starpat.": build **//pattern list")
3630 try 3774 try
3631 exe "silent noautocmd vimgrep /".pattern."/gj "."**/*" 3775 exe "sil keepj noautocmd vimgrep /".pattern."/gj "."**/*"
3632 catch /^Vim\%((\a\+)\)\=:E480/ 3776 catch /^Vim\%((\a\+)\)\=:E480/
3633 call netrw#ErrorMsg(s:WARNING,'no files matched pattern<'.pattern.'>',45) 3777 call netrw#ErrorMsg(s:WARNING,'no files matched pattern<'.pattern.'>',45)
3634 if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif 3778 if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif
3635 silent! let @* = keepregstar 3779 silent! let @* = keepregstar
3636 silent! let @+ = keepregstar 3780 silent! let @+ = keepregstar
3663 " call Decho("w:netrw_explore_list<".string(w:netrw_explore_list).">") 3807 " call Decho("w:netrw_explore_list<".string(w:netrw_explore_list).">")
3664 " call Decho("w:netrw_explore_listlen=".w:netrw_explore_listlen) 3808 " call Decho("w:netrw_explore_listlen=".w:netrw_explore_listlen)
3665 3809
3666 if w:netrw_explore_listlen == 0 || (w:netrw_explore_listlen == 1 && w:netrw_explore_list[0] =~ '\*\*\/') 3810 if w:netrw_explore_listlen == 0 || (w:netrw_explore_listlen == 1 && w:netrw_explore_list[0] =~ '\*\*\/')
3667 call netrw#ErrorMsg(s:WARNING,"no files matched",42) 3811 call netrw#ErrorMsg(s:WARNING,"no files matched",42)
3668 silent! let @* = keepregstar 3812 sil! let @* = keepregstar
3669 silent! let @+ = keepregstar 3813 sil! let @+ = keepregstar
3670 silent! let @/ = keepregslash 3814 sil! let @/ = keepregslash
3671 " call Dret("netrw#Explore : no files matched") 3815 " call Dret("netrw#Explore : no files matched")
3672 return 3816 return
3673 endif 3817 endif
3674 endif " if indx ... endif 3818 endif " if indx ... endif
3675 3819
3694 call netrw#LocalBrowseCheck(newdir) 3838 call netrw#LocalBrowseCheck(newdir)
3695 if !exists("w:netrw_liststyle") 3839 if !exists("w:netrw_liststyle")
3696 let w:netrw_liststyle= g:netrw_liststyle 3840 let w:netrw_liststyle= g:netrw_liststyle
3697 endif 3841 endif
3698 if w:netrw_liststyle == s:THINLIST || w:netrw_liststyle == s:LONGLIST 3842 if w:netrw_liststyle == s:THINLIST || w:netrw_liststyle == s:LONGLIST
3699 call search('^'.substitute(dirfile,"^.*/","","").'\>',"W") 3843 keepj call search('^'.substitute(dirfile,"^.*/","","").'\>',"W")
3700 else 3844 else
3701 call search('\<'.substitute(dirfile,"^.*/","","").'\>',"w") 3845 keepj call search('\<'.substitute(dirfile,"^.*/","","").'\>',"w")
3702 endif 3846 endif
3703 let w:netrw_explore_mtchcnt = indx + 1 3847 let w:netrw_explore_mtchcnt = indx + 1
3704 let w:netrw_explore_bufnr = bufnr("%") 3848 let w:netrw_explore_bufnr = bufnr("%")
3705 let w:netrw_explore_line = line(".") 3849 let w:netrw_explore_line = line(".")
3706 call s:SetupNetrwStatusLine('%f %h%m%r%=%9*%{NetrwStatusLine()}') 3850 call s:SetupNetrwStatusLine('%f %h%m%r%=%9*%{NetrwStatusLine()}')
3709 else 3853 else
3710 " call Decho("your vim does not have +path_extra") 3854 " call Decho("your vim does not have +path_extra")
3711 if !exists("g:netrw_quiet") 3855 if !exists("g:netrw_quiet")
3712 call netrw#ErrorMsg(s:WARNING,"your vim needs the +path_extra feature for Exploring with **!",44) 3856 call netrw#ErrorMsg(s:WARNING,"your vim needs the +path_extra feature for Exploring with **!",44)
3713 endif 3857 endif
3714 silent! let @* = keepregstar 3858 sil! let @* = keepregstar
3715 silent! let @+ = keepregstar 3859 sil! let @+ = keepregstar
3716 silent! let @/ = keepregslash 3860 sil! let @/ = keepregslash
3717 " call Dret("netrw#Explore : missing +path_extra") 3861 " call Dret("netrw#Explore : missing +path_extra")
3718 return 3862 return
3719 endif 3863 endif
3720 3864
3721 else 3865 else
3722 " call Decho("default case: Explore newdir<".dirname.">") 3866 " call Decho("default case: Explore newdir<".dirname.">")
3723 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && dirname =~ '/' 3867 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && dirname =~ '/'
3724 silent! unlet w:netrw_treedict 3868 sil! unlet w:netrw_treedict
3725 silent! unlet w:netrw_treetop 3869 sil! unlet w:netrw_treetop
3726 endif 3870 endif
3727 let newdir= dirname 3871 let newdir= dirname
3728 if !exists("b:netrw_curdir") 3872 if !exists("b:netrw_curdir")
3729 call netrw#LocalBrowseCheck(getcwd()) 3873 call netrw#LocalBrowseCheck(getcwd())
3730 else 3874 else
3776 echo " " 3920 echo " "
3777 " call Decho("cleared explore match list") 3921 " call Decho("cleared explore match list")
3778 endif 3922 endif
3779 " call FOTEST(6) 3923 " call FOTEST(6)
3780 3924
3781 silent! let @* = keepregstar 3925 sil! let @* = keepregstar
3782 silent! let @+ = keepregstar 3926 sil! let @+ = keepregstar
3783 silent! let @/ = keepregslash 3927 sil! let @/ = keepregslash
3784 " call Dret("netrw#Explore : @/<".@/.">") 3928 " call Dret("netrw#Explore : @/<".@/.">")
3785 endfun 3929 endfun
3786 3930
3787 " --------------------------------------------------------------------- 3931 " ---------------------------------------------------------------------
3788 " s:NetrwExploreListUniq: {{{2 3932 " s:NetrwExploreListUniq: {{{2
3841 3985
3842 else 3986 else
3843 3987
3844 " switch between show-all/show-not-hidden/show-hidden 3988 " switch between show-all/show-not-hidden/show-hidden
3845 let g:netrw_hide=(g:netrw_hide+1)%3 3989 let g:netrw_hide=(g:netrw_hide+1)%3
3846 exe "norm! 0" 3990 exe "keepj norm! 0"
3847 if g:netrw_hide && g:netrw_list_hide == "" 3991 if g:netrw_hide && g:netrw_list_hide == ""
3848 call netrw#ErrorMsg(s:WARNING,"your hiding list is empty!",49) 3992 call netrw#ErrorMsg(s:WARNING,"your hiding list is empty!",49)
3849 " call Dret("NetrwHide") 3993 " call Dret("NetrwHide")
3850 return 3994 return
3851 endif 3995 endif
3915 4059
3916 " --------------------------------------------------------------------- 4060 " ---------------------------------------------------------------------
3917 " s:NetrwLeftmouse: handles the <leftmouse> when in a netrw browsing window {{{2 4061 " s:NetrwLeftmouse: handles the <leftmouse> when in a netrw browsing window {{{2
3918 fun! s:NetrwLeftmouse(islocal) 4062 fun! s:NetrwLeftmouse(islocal)
3919 " call Dfunc("s:NetrwLeftmouse(islocal=".a:islocal.")") 4063 " call Dfunc("s:NetrwLeftmouse(islocal=".a:islocal.")")
4064
4065 " check if the status bar was clicked on instead of a file/directory name
4066 call feedkeys("\<LeftMouse>")
4067 let c= getchar()
4068 let mouse_lnum = v:mouse_lnum
4069 let wlastline = line('w$')
4070 let lastline = line('$')
4071 " call Decho("v:mouse_lnum=".mouse_lnum." line(w$)=".wlastline." line($)=".lastline." v:mouse_win=".v:mouse_win." winnr#".winnr())
4072 " call Decho("v:mouse_col =".v:mouse_col." col=".col(".")." wincol =".wincol()." winwidth =".winwidth(0))
4073 if mouse_lnum >= wlastline + 1 || v:mouse_win != winnr()
4074 " appears to be a status bar leftmouse click
4075 " call Dret("s:NetrwLeftmouse : detected a status bar leftmouse click")
4076 return
4077 endif
4078 if v:mouse_col != col('.')
4079 " call Dret("s:NetrwLeftmouse : detected a vertical separator bar leftmouse click")
4080 return
4081 endif
4082
3920 if a:islocal 4083 if a:islocal
3921 if exists("b:netrw_curdir") 4084 if exists("b:netrw_curdir")
3922 call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,s:NetrwGetWord())) 4085 call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,s:NetrwGetWord()))
3923 endif 4086 endif
3924 else 4087 else
3953 endif 4116 endif
3954 4117
3955 " Prune the list by hiding any files which match 4118 " Prune the list by hiding any files which match
3956 if g:netrw_hide == 1 4119 if g:netrw_hide == 1
3957 " call Decho("hiding<".hide."> listhide<".listhide.">") 4120 " call Decho("hiding<".hide."> listhide<".listhide.">")
3958 exe 'silent keepjumps '.w:netrw_bannercnt.',$g'.sep.hide.sep.'d' 4121 exe 'sil keepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'d'
3959 elseif g:netrw_hide == 2 4122 elseif g:netrw_hide == 2
3960 " call Decho("showing<".hide."> listhide<".listhide.">") 4123 " call Decho("showing<".hide."> listhide<".listhide.">")
3961 exe 'silent keepjumps '.w:netrw_bannercnt.',$g'.sep.hide.sep.'s@^@ /-KEEP-/ @' 4124 exe 'sil keepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'s@^@ /-KEEP-/ @'
3962 endif 4125 endif
3963 endwhile 4126 endwhile
3964 if g:netrw_hide == 2 4127 if g:netrw_hide == 2
3965 exe 'silent keepjumps '.w:netrw_bannercnt.',$v@^ /-KEEP-/ @d' 4128 exe 'sil keepj '.w:netrw_bannercnt.',$v@^ /-KEEP-/ @d'
3966 exe 'silent keepjumps '.w:netrw_bannercnt.',$s@^\%( /-KEEP-/ \)\+@@e' 4129 exe 'sil keepj '.w:netrw_bannercnt.',$s@^\%( /-KEEP-/ \)\+@@e'
3967 endif 4130 endif
3968 4131
3969 " call Dret("NetrwListHide") 4132 " call Dret("NetrwListHide")
3970 endfun 4133 endfun
3971 4134
3983 call inputrestore() 4146 call inputrestore()
3984 let g:netrw_list_hide= newhide 4147 let g:netrw_list_hide= newhide
3985 " call Decho("new g:netrw_list_hide<".g:netrw_list_hide.">") 4148 " call Decho("new g:netrw_list_hide<".g:netrw_list_hide.">")
3986 4149
3987 " refresh the listing 4150 " refresh the listing
3988 silent call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,"./")) 4151 silent keepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,"./"))
3989 4152
3990 " restore cursor position 4153 " restore cursor position
3991 call netrw#NetrwRestorePosn(svpos) 4154 call netrw#NetrwRestorePosn(svpos)
3992 4155
3993 " call Dret("NetrwHideEdit") 4156 " call Dret("NetrwHideEdit")
4055 " directory, so make it! 4218 " directory, so make it!
4056 if exists("*mkdir") 4219 if exists("*mkdir")
4057 call mkdir(fullnewdir,"p") 4220 call mkdir(fullnewdir,"p")
4058 else 4221 else
4059 let netrw_origdir= s:NetrwGetcwd(1) 4222 let netrw_origdir= s:NetrwGetcwd(1)
4060 exe 'keepjumps lcd '.fnameescape(b:netrw_curdir) 4223 exe 'keepj lcd '.fnameescape(b:netrw_curdir)
4061 " call Decho("netrw_origdir<".netrw_origdir.">: lcd b:netrw_curdir<".fnameescape(b:netrw_curdir).">") 4224 " call Decho("netrw_origdir<".netrw_origdir.">: lcd b:netrw_curdir<".fnameescape(b:netrw_curdir).">")
4062 " call Decho("exe silent! !".g:netrw_local_mkdir.' '.shellescape(newdirname,1)) 4225 " call Decho("exe silent! !".g:netrw_local_mkdir.' '.shellescape(newdirname,1))
4063 exe "silent! !".g:netrw_local_mkdir.' '.shellescape(newdirname,1) 4226 exe "sil! !".g:netrw_local_mkdir.' '.shellescape(newdirname,1)
4064 if !g:netrw_keepdir 4227 if !g:netrw_keepdir
4065 exe 'keepjumps lcd '.fnameescape(netrw_origdir) 4228 exe 'keepj lcd '.fnameescape(netrw_origdir)
4066 " call Decho("netrw_keepdir=".g:netrw_keepdir.": keepjumps lcd ".fnameescape(netrw_origdir)." getcwd<".getcwd().">") 4229 " call Decho("netrw_keepdir=".g:netrw_keepdir.": keepjumps lcd ".fnameescape(netrw_origdir)." getcwd<".getcwd().">")
4067 endif 4230 endif
4068 endif 4231 endif
4069 4232
4070 if v:shell_error == 0 4233 if v:shell_error == 0
4082 " Remote mkdir: 4245 " Remote mkdir:
4083 " call Decho("remote mkdir") 4246 " call Decho("remote mkdir")
4084 let mkdircmd = s:MakeSshCmd(g:netrw_mkdir_cmd) 4247 let mkdircmd = s:MakeSshCmd(g:netrw_mkdir_cmd)
4085 let newdirname= substitute(b:netrw_curdir,'^\%(.\{-}/\)\{3}\(.*\)$','\1','').newdirname 4248 let newdirname= substitute(b:netrw_curdir,'^\%(.\{-}/\)\{3}\(.*\)$','\1','').newdirname
4086 " call Decho("exe silent! !".mkdircmd." ".shellescape(newdirname,1)) 4249 " call Decho("exe silent! !".mkdircmd." ".shellescape(newdirname,1))
4087 exe "silent! !".mkdircmd." ".shellescape(newdirname,1) 4250 exe "sil! !".mkdircmd." ".shellescape(newdirname,1)
4088 if v:shell_error == 0 4251 if v:shell_error == 0
4089 " refresh listing 4252 " refresh listing
4090 let svpos= netrw#NetrwSavePosn() 4253 let svpos= netrw#NetrwSavePosn()
4091 call s:NetrwRefresh(0,s:NetrwBrowseChgDir(0,'./')) 4254 call s:NetrwRefresh(0,s:NetrwBrowseChgDir(0,'./'))
4092 call netrw#NetrwRestorePosn(svpos) 4255 call netrw#NetrwRestorePosn(svpos)
4328 let tmpdir= curdir."/".tmpdir 4491 let tmpdir= curdir."/".tmpdir
4329 endif 4492 endif
4330 if exists("*mkdir") 4493 if exists("*mkdir")
4331 call mkdir(tmpdir) 4494 call mkdir(tmpdir)
4332 else 4495 else
4333 exe "silent! !".g:netrw_local_mkdir.' '.shellescape(tmpdir,1) 4496 exe "sil! !".g:netrw_local_mkdir.' '.shellescape(tmpdir,1)
4334 endif 4497 endif
4335 if isdirectory(tmpdir) 4498 if isdirectory(tmpdir)
4336 exe "keepjumps lcd ".fnameescape(tmpdir) 4499 exe "keepj lcd ".fnameescape(tmpdir)
4337 call netrw#NetrwObtain(a:islocal,s:netrwmarkfilelist_{bufnr('%')},tmpdir) 4500 call netrw#NetrwObtain(a:islocal,s:netrwmarkfilelist_{bufnr('%')},tmpdir)
4338 let localfiles= map(deepcopy(s:netrwmarkfilelist_{bufnr('%')}),'substitute(v:val,"^.*/","","")') 4501 let localfiles= map(deepcopy(s:netrwmarkfilelist_{bufnr('%')}),'substitute(v:val,"^.*/","","")')
4339 call s:NetrwUpload(localfiles,s:netrwmftgt) 4502 call s:NetrwUpload(localfiles,s:netrwmftgt)
4340 if getcwd() == tmpdir 4503 if getcwd() == tmpdir
4341 for fname in s:netrwmarkfilelist_{bufnr('%')} 4504 for fname in s:netrwmarkfilelist_{bufnr('%')}
4342 call s:NetrwDelete(fname) 4505 call s:NetrwDelete(fname)
4343 endfor 4506 endfor
4344 exe "keepjumps lcd ".fnameescape(curdir) 4507 exe "keepj lcd ".fnameescape(curdir)
4345 exe "silent !".g:netrw_local_rmdir." ".shellescape(tmpdir,1) 4508 exe "sil !".g:netrw_local_rmdir." ".shellescape(tmpdir,1)
4346 else 4509 else
4347 exe "keepjumps lcd ".fnameescape(curdir) 4510 exe "keepj lcd ".fnameescape(curdir)
4348 endif 4511 endif
4349 endif 4512 endif
4350 endif 4513 endif
4351 4514
4352 " ------- 4515 " -------
4568 endif 4731 endif
4569 4732
4570 " use vimgrep for both local and remote 4733 " use vimgrep for both local and remote
4571 " call Decho("exe vimgrep".pat." ".netrwmarkfilelist) 4734 " call Decho("exe vimgrep".pat." ".netrwmarkfilelist)
4572 try 4735 try
4573 exe "noautocmd vimgrep".pat." ".netrwmarkfilelist 4736 exe "keepj noautocmd vimgrep".pat." ".netrwmarkfilelist
4574 catch /^Vim\%((\a\+)\)\=:E480/ 4737 catch /^Vim\%((\a\+)\)\=:E480/
4575 call netrw#ErrorMsg(s:WARNING,"no match with pattern<".pattern.">",76) 4738 call netrw#ErrorMsg(s:WARNING,"no match with pattern<".pattern.">",76)
4576 " call Dret("s:NetrwMarkFileGrep : unable to find pattern<".pattern.">") 4739 " call Dret("s:NetrwMarkFileGrep : unable to find pattern<".pattern.">")
4577 return 4740 return
4578 endtry 4741 endtry
4748 " call Decho("handle remote regexp") 4911 " call Decho("handle remote regexp")
4749 4912
4750 " convert displayed listing into a filelist 4913 " convert displayed listing into a filelist
4751 let eikeep = &ei 4914 let eikeep = &ei
4752 let areg = @a 4915 let areg = @a
4753 silent %y a 4916 sil keepj %y a
4754 set ei=all ma 4917 set ei=all ma
4755 " call Decho("set ei=all ma") 4918 " call Decho("set ei=all ma")
4756 1split 4919 1split
4757 call s:NetrwEnew() 4920 call s:NetrwEnew()
4758 call s:NetrwSafeOptions() 4921 call s:NetrwSafeOptions()
4759 silent norm! "ap 4922 sil keepj norm! "ap
4760 2 4923 keepj 2
4761 let bannercnt= search('^" =====','W') 4924 let bannercnt= search('^" =====','W')
4762 exe "silent 1,".bannercnt."d" 4925 exe "sil keepj 1,".bannercnt."d"
4763 set bt=nofile 4926 set bt=nofile
4764 if g:netrw_liststyle == s:LONGLIST 4927 if g:netrw_liststyle == s:LONGLIST
4765 silent %s/\s\{2,}\S.*$//e 4928 sil keepj %s/\s\{2,}\S.*$//e
4766 call histdel("/",-1) 4929 call histdel("/",-1)
4767 elseif g:netrw_liststyle == s:WIDELIST 4930 elseif g:netrw_liststyle == s:WIDELIST
4768 silent %s/\s\{2,}/\r/ge 4931 sil keepj %s/\s\{2,}/\r/ge
4769 call histdel("/",-1) 4932 call histdel("/",-1)
4770 elseif g:netrw_liststyle == s:TREELIST 4933 elseif g:netrw_liststyle == s:TREELIST
4771 silent %s/^| //e 4934 sil keepj %s/^| //e
4772 silent! g/^ .*$/d 4935 sil! keepj g/^ .*$/d
4773 call histdel("/",-1) 4936 call histdel("/",-1)
4774 call histdel("/",-1) 4937 call histdel("/",-1)
4775 endif 4938 endif
4776 " convert regexp into the more usual glob-style format 4939 " convert regexp into the more usual glob-style format
4777 let regexp= substitute(regexp,'\*','.*','g') 4940 let regexp= substitute(regexp,'\*','.*','g')
4778 " call Decho("regexp<".regexp.">") 4941 " call Decho("regexp<".regexp.">")
4779 exe "silent! v/".escape(regexp,'/')."/d" 4942 exe "sil! keepj v/".escape(regexp,'/')."/d"
4780 call histdel("/",-1) 4943 call histdel("/",-1)
4781 let filelist= getline(1,line("$")) 4944 let filelist= getline(1,line("$"))
4782 q! 4945 q!
4783 for filename in filelist 4946 for filename in filelist
4784 call s:NetrwMarkFile(a:islocal,substitute(filename,'^.*/','','')) 4947 call s:NetrwMarkFile(a:islocal,substitute(filename,'^.*/','',''))
4845 let curdir= b:netrw_curdir 5008 let curdir= b:netrw_curdir
4846 1split 5009 1split
4847 e tags 5010 e tags
4848 let path= substitute(curdir,'^\(.*\)/[^/]*$','\1/','') 5011 let path= substitute(curdir,'^\(.*\)/[^/]*$','\1/','')
4849 " call Decho("curdir<".curdir."> path<".path.">") 5012 " call Decho("curdir<".curdir."> path<".path.">")
4850 exe '%s/\t\(\S\+\)\t/\t'.escape(path,"/\n\r\\").'\1\t/e' 5013 exe 'keepj %s/\t\(\S\+\)\t/\t'.escape(path,"/\n\r\\").'\1\t/e'
4851 call histdel("/",-1) 5014 call histdel("/",-1)
4852 wq! 5015 wq!
4853 endif 5016 endif
4854 2match none 5017 2match none
4855 call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) 5018 call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
4912 call s:LocalBrowseShellCmdRefresh() 5075 call s:LocalBrowseShellCmdRefresh()
4913 endif 5076 endif
4914 call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) 5077 call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
4915 call netrw#NetrwRestorePosn(svpos) 5078 call netrw#NetrwRestorePosn(svpos)
4916 if !hadtgt 5079 if !hadtgt
4917 norm! j 5080 sil! keepj norm! j
4918 endif 5081 endif
4919 5082
4920 " call Dret("s:NetrwMarkFileTgt : netrwmftgt<".(exists("s:netrwmftgt")? s:netrwmftgt : "").">") 5083 " call Dret("s:NetrwMarkFileTgt : netrwmftgt<".(exists("s:netrwmftgt")? s:netrwmftgt : "").">")
4921 endfun 5084 endfun
4922 5085
5040 " call Dfunc("NetrwMenu(domenu=".a:domenu.")") 5203 " call Dfunc("NetrwMenu(domenu=".a:domenu.")")
5041 5204
5042 if !exists("s:netrw_menu_enabled") && a:domenu 5205 if !exists("s:netrw_menu_enabled") && a:domenu
5043 " call Decho("initialize menu") 5206 " call Decho("initialize menu")
5044 let s:netrw_menu_enabled= 1 5207 let s:netrw_menu_enabled= 1
5045 exe 'silent! menu '.g:NetrwMenuPriority.'.1 '.g:NetrwTopLvlMenu.'Help<tab><F1> <F1>' 5208 exe 'sil! menu '.g:NetrwMenuPriority.'.1 '.g:NetrwTopLvlMenu.'Help<tab><F1> <F1>'
5046 exe 'silent! menu '.g:NetrwMenuPriority.'.5 '.g:NetrwTopLvlMenu.'-Sep1- :' 5209 exe 'sil! menu '.g:NetrwMenuPriority.'.5 '.g:NetrwTopLvlMenu.'-Sep1- :'
5047 exe 'silent! menu '.g:NetrwMenuPriority.'.6 '.g:NetrwTopLvlMenu.'Go\ Up\ Directory<tab>- -' 5210 exe 'sil! menu '.g:NetrwMenuPriority.'.6 '.g:NetrwTopLvlMenu.'Go\ Up\ Directory<tab>- -'
5048 exe 'silent! menu '.g:NetrwMenuPriority.'.7 '.g:NetrwTopLvlMenu.'Apply\ Special\ Viewer<tab>x x' 5211 exe 'sil! menu '.g:NetrwMenuPriority.'.7 '.g:NetrwTopLvlMenu.'Apply\ Special\ Viewer<tab>x x'
5049 exe 'silent! menu '.g:NetrwMenuPriority.'.8.1 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Current\ Directory<tab>mb mb' 5212 exe 'sil! menu '.g:NetrwMenuPriority.'.8.1 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Current\ Directory<tab>mb mb'
5050 exe 'silent! menu '.g:NetrwMenuPriority.'.8.4 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Goto\ Prev\ Dir\ (History)<tab>u u' 5213 exe 'sil! menu '.g:NetrwMenuPriority.'.8.4 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Goto\ Prev\ Dir\ (History)<tab>u u'
5051 exe 'silent! menu '.g:NetrwMenuPriority.'.8.5 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Goto\ Next\ Dir\ (History)<tab>U U' 5214 exe 'sil! menu '.g:NetrwMenuPriority.'.8.5 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Goto\ Next\ Dir\ (History)<tab>U U'
5052 exe 'silent! menu '.g:NetrwMenuPriority.'.8.6 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.List<tab>qb qb' 5215 exe 'sil! menu '.g:NetrwMenuPriority.'.8.6 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.List<tab>qb qb'
5053 exe 'silent! menu '.g:NetrwMenuPriority.'.9.1 '.g:NetrwTopLvlMenu.'Browsing\ Control.Edit\ File\ Hiding\ List<tab><ctrl-h>'." \<c-h>'" 5216 exe 'sil! menu '.g:NetrwMenuPriority.'.9.1 '.g:NetrwTopLvlMenu.'Browsing\ Control.Edit\ File\ Hiding\ List<tab><ctrl-h>'." \<c-h>'"
5054 exe 'silent! menu '.g:NetrwMenuPriority.'.9.2 '.g:NetrwTopLvlMenu.'Browsing\ Control.Edit\ Sorting\ Sequence<tab>S S' 5217 exe 'sil! menu '.g:NetrwMenuPriority.'.9.2 '.g:NetrwTopLvlMenu.'Browsing\ Control.Edit\ Sorting\ Sequence<tab>S S'
5055 exe 'silent! menu '.g:NetrwMenuPriority.'.9.3 '.g:NetrwTopLvlMenu.'Browsing\ Control.Quick\ Hide/Unhide\ Dot\ Files<tab>'."gh gh" 5218 exe 'sil! menu '.g:NetrwMenuPriority.'.9.3 '.g:NetrwTopLvlMenu.'Browsing\ Control.Quick\ Hide/Unhide\ Dot\ Files<tab>'."gh gh"
5056 exe 'silent! menu '.g:NetrwMenuPriority.'.9.4 '.g:NetrwTopLvlMenu.'Browsing\ Control.Refresh\ Listing<tab>'."<ctrl-l> \<c-l>" 5219 exe 'sil! menu '.g:NetrwMenuPriority.'.9.4 '.g:NetrwTopLvlMenu.'Browsing\ Control.Refresh\ Listing<tab>'."<ctrl-l> \<c-l>"
5057 exe 'silent! menu '.g:NetrwMenuPriority.'.9.5 '.g:NetrwTopLvlMenu.'Browsing\ Control.Settings/Options<tab>:NetrwSettings '.":NetrwSettings\<cr>" 5220 exe 'sil! menu '.g:NetrwMenuPriority.'.9.5 '.g:NetrwTopLvlMenu.'Browsing\ Control.Settings/Options<tab>:NetrwSettings '.":NetrwSettings\<cr>"
5058 exe 'silent! menu '.g:NetrwMenuPriority.'.10 '.g:NetrwTopLvlMenu.'Delete\ File/Directory<tab>D D' 5221 exe 'sil! menu '.g:NetrwMenuPriority.'.10 '.g:NetrwTopLvlMenu.'Delete\ File/Directory<tab>D D'
5059 exe 'silent! menu '.g:NetrwMenuPriority.'.11.1 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ Current\ Window<tab><cr> '."\<cr>" 5222 exe 'sil! menu '.g:NetrwMenuPriority.'.11.1 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ Current\ Window<tab><cr> '."\<cr>"
5060 exe 'silent! menu '.g:NetrwMenuPriority.'.11.2 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.Preview\ File/Directory<tab>p p' 5223 exe 'sil! menu '.g:NetrwMenuPriority.'.11.2 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.Preview\ File/Directory<tab>p p'
5061 exe 'silent! menu '.g:NetrwMenuPriority.'.11.3 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ Previous\ Window<tab>P P' 5224 exe 'sil! menu '.g:NetrwMenuPriority.'.11.3 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ Previous\ Window<tab>P P'
5062 exe 'silent! menu '.g:NetrwMenuPriority.'.11.4 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ New\ Window<tab>o o' 5225 exe 'sil! menu '.g:NetrwMenuPriority.'.11.4 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ New\ Window<tab>o o'
5063 exe 'silent! menu '.g:NetrwMenuPriority.'.11.5 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ New\ Vertical\ Window<tab>v v' 5226 exe 'sil! menu '.g:NetrwMenuPriority.'.11.5 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ New\ Vertical\ Window<tab>v v'
5064 exe 'silent! menu '.g:NetrwMenuPriority.'.12.1 '.g:NetrwTopLvlMenu.'Explore.Directory\ Name :Explore ' 5227 exe 'sil! menu '.g:NetrwMenuPriority.'.12.1 '.g:NetrwTopLvlMenu.'Explore.Directory\ Name :Explore '
5065 exe 'silent! menu '.g:NetrwMenuPriority.'.12.2 '.g:NetrwTopLvlMenu.'Explore.Filenames\ Matching\ Pattern\ (curdir\ only)<tab>:Explore\ */ :Explore */' 5228 exe 'sil! menu '.g:NetrwMenuPriority.'.12.2 '.g:NetrwTopLvlMenu.'Explore.Filenames\ Matching\ Pattern\ (curdir\ only)<tab>:Explore\ */ :Explore */'
5066 exe 'silent! menu '.g:NetrwMenuPriority.'.12.2 '.g:NetrwTopLvlMenu.'Explore.Filenames\ Matching\ Pattern\ (+subdirs)<tab>:Explore\ **/ :Explore **/' 5229 exe 'sil! menu '.g:NetrwMenuPriority.'.12.2 '.g:NetrwTopLvlMenu.'Explore.Filenames\ Matching\ Pattern\ (+subdirs)<tab>:Explore\ **/ :Explore **/'
5067 exe 'silent! menu '.g:NetrwMenuPriority.'.12.3 '.g:NetrwTopLvlMenu.'Explore.Files\ Containing\ String\ Pattern\ (curdir\ only)<tab>:Explore\ *// :Explore *//' 5230 exe 'sil! menu '.g:NetrwMenuPriority.'.12.3 '.g:NetrwTopLvlMenu.'Explore.Files\ Containing\ String\ Pattern\ (curdir\ only)<tab>:Explore\ *// :Explore *//'
5068 exe 'silent! menu '.g:NetrwMenuPriority.'.12.4 '.g:NetrwTopLvlMenu.'Explore.Files\ Containing\ String\ Pattern\ (+subdirs)<tab>:Explore\ **// :Explore **//' 5231 exe 'sil! menu '.g:NetrwMenuPriority.'.12.4 '.g:NetrwTopLvlMenu.'Explore.Files\ Containing\ String\ Pattern\ (+subdirs)<tab>:Explore\ **// :Explore **//'
5069 exe 'silent! menu '.g:NetrwMenuPriority.'.12.4 '.g:NetrwTopLvlMenu.'Explore.Next\ Match<tab>:Nexplore :Nexplore<cr>' 5232 exe 'sil! menu '.g:NetrwMenuPriority.'.12.4 '.g:NetrwTopLvlMenu.'Explore.Next\ Match<tab>:Nexplore :Nexplore<cr>'
5070 exe 'silent! menu '.g:NetrwMenuPriority.'.12.4 '.g:NetrwTopLvlMenu.'Explore.Prev\ Match<tab>:Pexplore :Pexplore<cr>' 5233 exe 'sil! menu '.g:NetrwMenuPriority.'.12.4 '.g:NetrwTopLvlMenu.'Explore.Prev\ Match<tab>:Pexplore :Pexplore<cr>'
5071 exe 'silent! menu '.g:NetrwMenuPriority.'.13 '.g:NetrwTopLvlMenu.'Make\ Subdirectory<tab>d d' 5234 exe 'sil! menu '.g:NetrwMenuPriority.'.13 '.g:NetrwTopLvlMenu.'Make\ Subdirectory<tab>d d'
5072 exe 'silent! menu '.g:NetrwMenuPriority.'.14.1 '.g:NetrwTopLvlMenu.'Marked\ Files.Mark\ File<tab>mf mf' 5235 exe 'sil! menu '.g:NetrwMenuPriority.'.14.1 '.g:NetrwTopLvlMenu.'Marked\ Files.Mark\ File<tab>mf mf'
5073 exe 'silent! menu '.g:NetrwMenuPriority.'.14.2 '.g:NetrwTopLvlMenu.'Marked\ Files.Mark\ Files\ by\ Regexp<tab>mr mr' 5236 exe 'sil! menu '.g:NetrwMenuPriority.'.14.2 '.g:NetrwTopLvlMenu.'Marked\ Files.Mark\ Files\ by\ Regexp<tab>mr mr'
5074 exe 'silent! menu '.g:NetrwMenuPriority.'.14.3 '.g:NetrwTopLvlMenu.'Marked\ Files.Hide-Show-List\ Control<tab>a a' 5237 exe 'sil! menu '.g:NetrwMenuPriority.'.14.3 '.g:NetrwTopLvlMenu.'Marked\ Files.Hide-Show-List\ Control<tab>a a'
5075 exe 'silent! menu '.g:NetrwMenuPriority.'.14.4 '.g:NetrwTopLvlMenu.'Marked\ Files.Copy\ To\ Target<tab>mc mc' 5238 exe 'sil! menu '.g:NetrwMenuPriority.'.14.4 '.g:NetrwTopLvlMenu.'Marked\ Files.Copy\ To\ Target<tab>mc mc'
5076 exe 'silent! menu '.g:NetrwMenuPriority.'.14.5 '.g:NetrwTopLvlMenu.'Marked\ Files.Delete<tab>D D' 5239 exe 'sil! menu '.g:NetrwMenuPriority.'.14.5 '.g:NetrwTopLvlMenu.'Marked\ Files.Delete<tab>D D'
5077 exe 'silent! menu '.g:NetrwMenuPriority.'.14.6 '.g:NetrwTopLvlMenu.'Marked\ Files.Diff<tab>md md' 5240 exe 'sil! menu '.g:NetrwMenuPriority.'.14.6 '.g:NetrwTopLvlMenu.'Marked\ Files.Diff<tab>md md'
5078 exe 'silent! menu '.g:NetrwMenuPriority.'.14.7 '.g:NetrwTopLvlMenu.'Marked\ Files.Edit<tab>me me' 5241 exe 'sil! menu '.g:NetrwMenuPriority.'.14.7 '.g:NetrwTopLvlMenu.'Marked\ Files.Edit<tab>me me'
5079 exe 'silent! menu '.g:NetrwMenuPriority.'.14.8 '.g:NetrwTopLvlMenu.'Marked\ Files.Exe\ Cmd<tab>mx mx' 5242 exe 'sil! menu '.g:NetrwMenuPriority.'.14.8 '.g:NetrwTopLvlMenu.'Marked\ Files.Exe\ Cmd<tab>mx mx'
5080 exe 'silent! menu '.g:NetrwMenuPriority.'.14.9 '.g:NetrwTopLvlMenu.'Marked\ Files.Move\ To\ Target<tab>mm mm' 5243 exe 'sil! menu '.g:NetrwMenuPriority.'.14.9 '.g:NetrwTopLvlMenu.'Marked\ Files.Move\ To\ Target<tab>mm mm'
5081 exe 'silent! menu '.g:NetrwMenuPriority.'.14.10 '.g:NetrwTopLvlMenu.'Marked\ Files.Obtain<tab>O O' 5244 exe 'sil! menu '.g:NetrwMenuPriority.'.14.10 '.g:NetrwTopLvlMenu.'Marked\ Files.Obtain<tab>O O'
5082 exe 'silent! menu '.g:NetrwMenuPriority.'.14.11 '.g:NetrwTopLvlMenu.'Marked\ Files.Print<tab>mp mp' 5245 exe 'sil! menu '.g:NetrwMenuPriority.'.14.11 '.g:NetrwTopLvlMenu.'Marked\ Files.Print<tab>mp mp'
5083 exe 'silent! menu '.g:NetrwMenuPriority.'.14.12 '.g:NetrwTopLvlMenu.'Marked\ Files.Replace<tab>R R' 5246 exe 'sil! menu '.g:NetrwMenuPriority.'.14.12 '.g:NetrwTopLvlMenu.'Marked\ Files.Replace<tab>R R'
5084 exe 'silent! menu '.g:NetrwMenuPriority.'.14.13 '.g:NetrwTopLvlMenu.'Marked\ Files.Set\ Target<tab>mt mt' 5247 exe 'sil! menu '.g:NetrwMenuPriority.'.14.13 '.g:NetrwTopLvlMenu.'Marked\ Files.Set\ Target<tab>mt mt'
5085 exe 'silent! menu '.g:NetrwMenuPriority.'.14.14 '.g:NetrwTopLvlMenu.'Marked\ Files.Tag<tab>mT mT' 5248 exe 'sil! menu '.g:NetrwMenuPriority.'.14.14 '.g:NetrwTopLvlMenu.'Marked\ Files.Tag<tab>mT mT'
5086 exe 'silent! menu '.g:NetrwMenuPriority.'.14.15 '.g:NetrwTopLvlMenu.'Marked\ Files.Zip/Unzip/Compress/Uncompress<tab>mz mz' 5249 exe 'sil! menu '.g:NetrwMenuPriority.'.14.15 '.g:NetrwTopLvlMenu.'Marked\ Files.Zip/Unzip/Compress/Uncompress<tab>mz mz'
5087 exe 'silent! menu '.g:NetrwMenuPriority.'.15 '.g:NetrwTopLvlMenu.'Obtain\ File<tab>O O' 5250 exe 'sil! menu '.g:NetrwMenuPriority.'.15 '.g:NetrwTopLvlMenu.'Obtain\ File<tab>O O'
5088 exe 'silent! menu '.g:NetrwMenuPriority.'.16.1 '.g:NetrwTopLvlMenu.'Style.Listing\ Style\ (thin-long-wide-tree)<tab>i i' 5251 exe 'sil! menu '.g:NetrwMenuPriority.'.16.1 '.g:NetrwTopLvlMenu.'Style.Listing\ Style\ (thin-long-wide-tree)<tab>i i'
5089 exe 'silent! menu '.g:NetrwMenuPriority.'.16.2 '.g:NetrwTopLvlMenu.'Style.Normal-Hide-Show<tab>a a' 5252 exe 'sil! menu '.g:NetrwMenuPriority.'.16.2 '.g:NetrwTopLvlMenu.'Style.Normal-Hide-Show<tab>a a'
5090 exe 'silent! menu '.g:NetrwMenuPriority.'.16.3 '.g:NetrwTopLvlMenu.'Style.Reverse\ Sorting\ Order<tab>'."r r" 5253 exe 'sil! menu '.g:NetrwMenuPriority.'.16.3 '.g:NetrwTopLvlMenu.'Style.Reverse\ Sorting\ Order<tab>'."r r"
5091 exe 'silent! menu '.g:NetrwMenuPriority.'.16.4 '.g:NetrwTopLvlMenu.'Style.Sorting\ Method\ (name-time-size)<tab>s s' 5254 exe 'sil! menu '.g:NetrwMenuPriority.'.16.4 '.g:NetrwTopLvlMenu.'Style.Sorting\ Method\ (name-time-size)<tab>s s'
5092 exe 'silent! menu '.g:NetrwMenuPriority.'.17 '.g:NetrwTopLvlMenu.'Rename\ File/Directory<tab>R R' 5255 exe 'sil! menu '.g:NetrwMenuPriority.'.17 '.g:NetrwTopLvlMenu.'Rename\ File/Directory<tab>R R'
5093 exe 'silent! menu '.g:NetrwMenuPriority.'.18 '.g:NetrwTopLvlMenu.'Set\ Current\ Directory<tab>c c' 5256 exe 'sil! menu '.g:NetrwMenuPriority.'.18 '.g:NetrwTopLvlMenu.'Set\ Current\ Directory<tab>c c'
5094 call s:NetrwBookmarkMenu() " provide some history! uses priorities 2,3, reserves 4, 8.2.x 5257 call s:NetrwBookmarkMenu() " provide some history! uses priorities 2,3, reserves 4, 8.2.x
5095 let s:netrw_menucnt= 28 5258 let s:netrw_menucnt= 28
5096 5259
5097 elseif !a:domenu 5260 elseif !a:domenu
5098 let s:netrwcnt = 0 5261 let s:netrwcnt = 0
5100 windo if getline(2) =~ "Netrw" | let s:netrwcnt= s:netrwcnt + 1 | endif 5263 windo if getline(2) =~ "Netrw" | let s:netrwcnt= s:netrwcnt + 1 | endif
5101 exe curwin."wincmd w" 5264 exe curwin."wincmd w"
5102 5265
5103 if s:netrwcnt <= 1 5266 if s:netrwcnt <= 1
5104 " call Decho("clear menus") 5267 " call Decho("clear menus")
5105 exe 'silent! unmenu '.g:NetrwTopLvlMenu 5268 exe 'sil! unmenu '.g:NetrwTopLvlMenu
5106 " call Decho('exe silent! unmenu '.g:NetrwTopLvlMenu.'*') 5269 " call Decho('exe silent! unmenu '.g:NetrwTopLvlMenu.'*')
5107 silent! unlet s:netrw_menu_enabled 5270 sil! unlet s:netrw_menu_enabled
5108 endif 5271 endif
5109 endif 5272 endif
5110 " call Dret("NetrwMenu") 5273 " call Dret("NetrwMenu")
5111 endif 5274 endif
5112 5275
5212 " call Decho("obtain via ftp+.netrc (method #2)") 5375 " call Decho("obtain via ftp+.netrc (method #2)")
5213 call s:SaveBufVars()|silent keepjumps new|call s:RestoreBufVars() 5376 call s:SaveBufVars()|silent keepjumps new|call s:RestoreBufVars()
5214 let tmpbufnr= bufnr("%") 5377 let tmpbufnr= bufnr("%")
5215 setlocal ff=unix 5378 setlocal ff=unix
5216 if exists("g:netrw_ftpmode") && g:netrw_ftpmode != "" 5379 if exists("g:netrw_ftpmode") && g:netrw_ftpmode != ""
5217 put =g:netrw_ftpmode 5380 keepj put =g:netrw_ftpmode
5218 " call Decho("filter input: ".getline('$')) 5381 " call Decho("filter input: ".getline('$'))
5219 endif 5382 endif
5220 5383
5221 if exists("b:netrw_fname") && b:netrw_fname != "" 5384 if exists("b:netrw_fname") && b:netrw_fname != ""
5222 call setline(line("$")+1,'cd "'.b:netrw_fname.'"') 5385 call setline(line("$")+1,'cd "'.b:netrw_fname.'"')
5223 " call Decho("filter input: ".getline('$')) 5386 " call Decho("filter input: ".getline('$'))
5224 endif 5387 endif
5225 5388
5226 if exists("g:netrw_ftpextracmd") 5389 if exists("g:netrw_ftpextracmd")
5227 put =g:netrw_ftpextracmd 5390 keepj put =g:netrw_ftpextracmd
5228 " call Decho("filter input: ".getline('$')) 5391 " call Decho("filter input: ".getline('$'))
5229 endif 5392 endif
5230 for fname in fnamelist 5393 for fname in fnamelist
5231 call setline(line("$")+1,'get "'.fname.'"') 5394 call setline(line("$")+1,'get "'.fname.'"')
5232 " call Decho("filter input: ".getline('$')) 5395 " call Decho("filter input: ".getline('$'))
5252 call s:SaveBufVars()|silent keepjumps new|call s:RestoreBufVars() 5415 call s:SaveBufVars()|silent keepjumps new|call s:RestoreBufVars()
5253 let tmpbufnr= bufnr("%") 5416 let tmpbufnr= bufnr("%")
5254 setlocal ff=unix 5417 setlocal ff=unix
5255 5418
5256 if exists("g:netrw_port") && g:netrw_port != "" 5419 if exists("g:netrw_port") && g:netrw_port != ""
5257 put ='open '.g:netrw_machine.' '.g:netrw_port 5420 keepj put ='open '.g:netrw_machine.' '.g:netrw_port
5258 " call Decho("filter input: ".getline('$')) 5421 " call Decho("filter input: ".getline('$'))
5259 else 5422 else
5260 put ='open '.g:netrw_machine 5423 keepj put ='open '.g:netrw_machine
5261 " call Decho("filter input: ".getline('$')) 5424 " call Decho("filter input: ".getline('$'))
5262 endif 5425 endif
5263 5426
5264 if exists("g:netrw_ftp") && g:netrw_ftp == 1 5427 if exists("g:netrw_ftp") && g:netrw_ftp == 1
5265 put =g:netrw_uid 5428 keepj put =g:netrw_uid
5266 " call Decho("filter input: ".getline('$')) 5429 " call Decho("filter input: ".getline('$'))
5267 put ='\"'.s:netrw_passwd.'\"' 5430 keepj put ='\"'.s:netrw_passwd.'\"'
5268 " call Decho("filter input: ".getline('$')) 5431 " call Decho("filter input: ".getline('$'))
5269 else 5432 else
5270 put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"' 5433 keepj put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"'
5271 " call Decho("filter input: ".getline('$')) 5434 " call Decho("filter input: ".getline('$'))
5272 endif 5435 endif
5273 5436
5274 if exists("g:netrw_ftpmode") && g:netrw_ftpmode != "" 5437 if exists("g:netrw_ftpmode") && g:netrw_ftpmode != ""
5275 put =g:netrw_ftpmode 5438 keepj put =g:netrw_ftpmode
5276 " call Decho("filter input: ".getline('$')) 5439 " call Decho("filter input: ".getline('$'))
5277 endif 5440 endif
5278 5441
5279 if exists("b:netrw_fname") && b:netrw_fname != "" 5442 if exists("b:netrw_fname") && b:netrw_fname != ""
5280 call setline(line("$")+1,'cd "'.b:netrw_fname.'"') 5443 keepj call setline(line("$")+1,'cd "'.b:netrw_fname.'"')
5281 " call Decho("filter input: ".getline('$')) 5444 " call Decho("filter input: ".getline('$'))
5282 endif 5445 endif
5283 5446
5284 if exists("g:netrw_ftpextracmd") 5447 if exists("g:netrw_ftpextracmd")
5285 put =g:netrw_ftpextracmd 5448 keepj put =g:netrw_ftpextracmd
5286 " call Decho("filter input: ".getline('$')) 5449 " call Decho("filter input: ".getline('$'))
5287 endif 5450 endif
5288 5451
5289 if exists("g:netrw_ftpextracmd") 5452 if exists("g:netrw_ftpextracmd")
5290 put =g:netrw_ftpextracmd 5453 keepj put =g:netrw_ftpextracmd
5291 " call Decho("filter input: ".getline('$')) 5454 " call Decho("filter input: ".getline('$'))
5292 endif 5455 endif
5293 for fname in fnamelist 5456 for fname in fnamelist
5294 call setline(line("$")+1,'get "'.fname.'"') 5457 keepj call setline(line("$")+1,'get "'.fname.'"')
5295 endfor 5458 endfor
5296 " call Decho("filter input: ".getline('$')) 5459 " call Decho("filter input: ".getline('$'))
5297 5460
5298 " perform ftp: 5461 " perform ftp:
5299 " -i : turns off interactive prompting from ftp 5462 " -i : turns off interactive prompting from ftp
5300 " -n unix : DON'T use <.netrc>, even though it exists 5463 " -n unix : DON'T use <.netrc>, even though it exists
5301 " -n win32: quit being obnoxious about password 5464 " -n win32: quit being obnoxious about password
5302 norm! 1Gdd 5465 keepj norm! 1Gdd
5303 " call Decho("executing: %!".g:netrw_ftp_cmd." -i -n") 5466 " call Decho("executing: %!".g:netrw_ftp_cmd." -i -n")
5304 exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n" 5467 exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n"
5305 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) 5468 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
5306 if getline(1) !~ "^$" 5469 if getline(1) !~ "^$"
5307 " call Decho("error<".getline(1).">") 5470 " call Decho("error<".getline(1).">")
5500 call s:NetrwMethod(a:tgt) 5663 call s:NetrwMethod(a:tgt)
5501 5664
5502 if b:netrw_method == 2 5665 if b:netrw_method == 2
5503 " handle uploading a list of files via ftp+.netrc 5666 " handle uploading a list of files via ftp+.netrc
5504 let netrw_fname = b:netrw_fname 5667 let netrw_fname = b:netrw_fname
5505 silent keepjumps new 5668 sil keepj new
5506 " call Decho("filter input window#".winnr()) 5669 " call Decho("filter input window#".winnr())
5507 5670
5508 put =g:netrw_ftpmode 5671 keepj put =g:netrw_ftpmode
5509 " call Decho("filter input: ".getline('$')) 5672 " call Decho("filter input: ".getline('$'))
5510 5673
5511 if exists("g:netrw_ftpextracmd") 5674 if exists("g:netrw_ftpextracmd")
5512 put =g:netrw_ftpextracmd 5675 keepj put =g:netrw_ftpextracmd
5513 " call Decho("filter input: ".getline('$')) 5676 " call Decho("filter input: ".getline('$'))
5514 endif 5677 endif
5515 5678
5516 call setline(line("$")+1,'lcd "'.fromdir.'"') 5679 keepj call setline(line("$")+1,'lcd "'.fromdir.'"')
5517 " call Decho("filter input: ".getline('$')) 5680 " call Decho("filter input: ".getline('$'))
5518 5681
5519 call setline(line("$")+1,'cd "'.tgtdir.'"') 5682 keepj call setline(line("$")+1,'cd "'.tgtdir.'"')
5520 " call Decho("filter input: ".getline('$')) 5683 " call Decho("filter input: ".getline('$'))
5521 5684
5522 for fname in a:fname 5685 for fname in a:fname
5523 call setline(line("$")+1,'put "'.fname.'"') 5686 keepj call setline(line("$")+1,'put "'.fname.'"')
5524 " call Decho("filter input: ".getline('$')) 5687 " call Decho("filter input: ".getline('$'))
5525 endfor 5688 endfor
5526 5689
5527 if exists("g:netrw_port") && g:netrw_port != "" 5690 if exists("g:netrw_port") && g:netrw_port != ""
5528 " call Decho("executing: ".s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)." ".shellescape(g:netrw_port,1)) 5691 " call Decho("executing: ".s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)." ".shellescape(g:netrw_port,1))
5531 " call Decho("filter input window#".winnr()) 5694 " call Decho("filter input window#".winnr())
5532 " call Decho("executing: ".s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)) 5695 " call Decho("executing: ".s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1))
5533 exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1) 5696 exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)
5534 endif 5697 endif
5535 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) 5698 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
5536 silent g/Local directory now/d 5699 sil keepj g/Local directory now/d
5537 call histdel("/",-1) 5700 call histdel("/",-1)
5538 if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying ' 5701 if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying '
5539 call netrw#ErrorMsg(s:ERROR,getline(1),14) 5702 call netrw#ErrorMsg(s:ERROR,getline(1),14)
5540 else 5703 else
5541 bw!|q 5704 bw!|q
5547 call s:SaveBufVars()|silent keepjumps new|call s:RestoreBufVars() 5710 call s:SaveBufVars()|silent keepjumps new|call s:RestoreBufVars()
5548 let tmpbufnr= bufnr("%") 5711 let tmpbufnr= bufnr("%")
5549 setlocal ff=unix 5712 setlocal ff=unix
5550 5713
5551 if exists("g:netrw_port") && g:netrw_port != "" 5714 if exists("g:netrw_port") && g:netrw_port != ""
5552 put ='open '.g:netrw_machine.' '.g:netrw_port 5715 keepj put ='open '.g:netrw_machine.' '.g:netrw_port
5553 " call Decho("filter input: ".getline('$')) 5716 " call Decho("filter input: ".getline('$'))
5554 else 5717 else
5555 put ='open '.g:netrw_machine 5718 keepj put ='open '.g:netrw_machine
5556 " call Decho("filter input: ".getline('$')) 5719 " call Decho("filter input: ".getline('$'))
5557 endif 5720 endif
5558 5721
5559 if exists("g:netrw_ftp") && g:netrw_ftp == 1 5722 if exists("g:netrw_ftp") && g:netrw_ftp == 1
5560 put =g:netrw_uid 5723 keepj put =g:netrw_uid
5561 " call Decho("filter input: ".getline('$')) 5724 " call Decho("filter input: ".getline('$'))
5562 call setline(line("$")+1,'"'.s:netrw_passwd.'"') 5725 keepj call setline(line("$")+1,'"'.s:netrw_passwd.'"')
5563 " call Decho("filter input: ".getline('$')) 5726 " call Decho("filter input: ".getline('$'))
5564 else 5727 else
5565 put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"' 5728 keepj put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"'
5566 " call Decho("filter input: ".getline('$')) 5729 " call Decho("filter input: ".getline('$'))
5567 endif 5730 endif
5568 5731
5569 call setline(line("$")+1,'lcd "'.fromdir.'"') 5732 keepj call setline(line("$")+1,'lcd "'.fromdir.'"')
5570 " call Decho("filter input: ".getline('$')) 5733 " call Decho("filter input: ".getline('$'))
5571 5734
5572 if exists("b:netrw_fname") && b:netrw_fname != "" 5735 if exists("b:netrw_fname") && b:netrw_fname != ""
5573 call setline(line("$")+1,'cd "'.b:netrw_fname.'"') 5736 keepj call setline(line("$")+1,'cd "'.b:netrw_fname.'"')
5574 " call Decho("filter input: ".getline('$')) 5737 " call Decho("filter input: ".getline('$'))
5575 endif 5738 endif
5576 5739
5577 if exists("g:netrw_ftpextracmd") 5740 if exists("g:netrw_ftpextracmd")
5578 put =g:netrw_ftpextracmd 5741 keepj put =g:netrw_ftpextracmd
5579 " call Decho("filter input: ".getline('$')) 5742 " call Decho("filter input: ".getline('$'))
5580 endif 5743 endif
5581 5744
5582 for fname in a:fname 5745 for fname in a:fname
5583 call setline(line("$")+1,'put "'.fname.'"') 5746 keepj call setline(line("$")+1,'put "'.fname.'"')
5584 " call Decho("filter input: ".getline('$')) 5747 " call Decho("filter input: ".getline('$'))
5585 endfor 5748 endfor
5586 5749
5587 " perform ftp: 5750 " perform ftp:
5588 " -i : turns off interactive prompting from ftp 5751 " -i : turns off interactive prompting from ftp
5589 " -n unix : DON'T use <.netrc>, even though it exists 5752 " -n unix : DON'T use <.netrc>, even though it exists
5590 " -n win32: quit being obnoxious about password 5753 " -n win32: quit being obnoxious about password
5591 norm! 1Gdd 5754 keepj norm! 1Gdd
5592 " call Decho("executing: ".s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n") 5755 " call Decho("executing: ".s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n")
5593 exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n" 5756 exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n"
5594 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) 5757 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
5595 silent g/Local directory now/d 5758 sil keepj g/Local directory now/d
5596 call histdel("/",-1) 5759 call histdel("/",-1)
5597 if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying ' 5760 if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying '
5598 let debugkeep= &debug 5761 let debugkeep= &debug
5599 setlocal debug=msg 5762 setlocal debug=msg
5600 call netrw#ErrorMsg(s:ERROR,getline(1),15) 5763 call netrw#ErrorMsg(s:ERROR,getline(1),15)
5621 " call Dfunc("NetrwPreview(path<".a:path.">)") 5784 " call Dfunc("NetrwPreview(path<".a:path.">)")
5622 call s:NetrwOptionSave("s:") 5785 call s:NetrwOptionSave("s:")
5623 call s:NetrwSafeOptions() 5786 call s:NetrwSafeOptions()
5624 if has("quickfix") 5787 if has("quickfix")
5625 if !isdirectory(a:path) 5788 if !isdirectory(a:path)
5626 exe (g:netrw_preview? "vert " : "")."pedit ".fnameescape(a:path) 5789 if g:netrw_preview && !g:netrw_alto
5790 let pvhkeep= &pvh
5791 let &pvh = winwidth(0) - g:netrw_winsize
5792 endif
5793 exe (g:netrw_alto? "top " : "bot ").(g:netrw_preview? "vert " : "")."pedit ".fnameescape(a:path)
5794 if exists("pvhkeep")
5795 let &pvh= pvhkeep
5796 endif
5627 elseif !exists("g:netrw_quiet") 5797 elseif !exists("g:netrw_quiet")
5628 call netrw#ErrorMsg(s:WARNING,"sorry, cannot preview a directory such as <".a:path.">",38) 5798 call netrw#ErrorMsg(s:WARNING,"sorry, cannot preview a directory such as <".a:path.">",38)
5629 endif 5799 endif
5630 elseif !exists("g:netrw_quiet") 5800 elseif !exists("g:netrw_quiet")
5631 call netrw#ErrorMsg(s:WARNING,"sorry, to preview your vim needs the quickfix feature compiled in",39) 5801 call netrw#ErrorMsg(s:WARNING,"sorry, to preview your vim needs the quickfix feature compiled in",39)
5642 " NetrwBrowseChgDir() may clear the display; hence a NetrwSavePosn() may not work if its placed here. 5812 " NetrwBrowseChgDir() may clear the display; hence a NetrwSavePosn() may not work if its placed here.
5643 " Also, NetrwBrowseChgDir() now does a NetrwSavePosn() itself. 5813 " Also, NetrwBrowseChgDir() now does a NetrwSavePosn() itself.
5644 setlocal ma noro 5814 setlocal ma noro
5645 " call Decho("setlocal ma noro") 5815 " call Decho("setlocal ma noro")
5646 " call Decho("clear buffer<".expand("%")."> with :%d") 5816 " call Decho("clear buffer<".expand("%")."> with :%d")
5647 %d 5817 keepj %d
5648 if a:islocal 5818 if a:islocal
5649 call netrw#LocalBrowseCheck(a:dirname) 5819 call netrw#LocalBrowseCheck(a:dirname)
5650 else 5820 else
5651 call s:NetrwBrowse(a:islocal,a:dirname) 5821 call s:NetrwBrowse(a:islocal,a:dirname)
5652 endif 5822 endif
5742 return 5912 return
5743 endif 5913 endif
5744 if seq == '*' 5914 if seq == '*'
5745 let starpriority= spriority 5915 let starpriority= spriority
5746 else 5916 else
5747 exe 'silent keepjumps '.w:netrw_bannercnt.',$g/'.seq.'/s/^/'.spriority.'/' 5917 exe 'sil keepj '.w:netrw_bannercnt.',$g/'.seq.'/s/^/'.spriority.'/'
5748 call histdel("/",-1) 5918 call histdel("/",-1)
5749 " sometimes multiple sorting patterns will match the same file or directory. 5919 " sometimes multiple sorting patterns will match the same file or directory.
5750 " The following substitute is intended to remove the excess matches. 5920 " The following substitute is intended to remove the excess matches.
5751 exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^\d\{3}'.g:netrw_sepchr.'\d\{3}\//s/^\d\{3}'.g:netrw_sepchr.'\(\d\{3}\/\).\@=/\1/e' 5921 exe 'sil keepj '.w:netrw_bannercnt.',$g/^\d\{3}'.g:netrw_sepchr.'\d\{3}\//s/^\d\{3}'.g:netrw_sepchr.'\(\d\{3}\/\).\@=/\1/e'
5752 call histdel("/",-1) 5922 call histdel("/",-1)
5753 endif 5923 endif
5754 let priority = priority + 1 5924 let priority = priority + 1
5755 endwhile 5925 endwhile
5756 if exists("starpriority") 5926 if exists("starpriority")
5757 exe 'silent keepjumps '.w:netrw_bannercnt.',$v/^\d\{3}'.g:netrw_sepchr.'/s/^/'.starpriority.'/' 5927 exe 'sil keepj '.w:netrw_bannercnt.',$v/^\d\{3}'.g:netrw_sepchr.'/s/^/'.starpriority.'/'
5758 call histdel("/",-1) 5928 call histdel("/",-1)
5759 endif 5929 endif
5760 5930
5761 " Following line associated with priority -- items that satisfy a priority 5931 " Following line associated with priority -- items that satisfy a priority
5762 " pattern get prefixed by ###/ which permits easy sorting by priority. 5932 " pattern get prefixed by ###/ which permits easy sorting by priority.
5763 " Sometimes files can satisfy multiple priority patterns -- only the latest 5933 " Sometimes files can satisfy multiple priority patterns -- only the latest
5764 " priority pattern needs to be retained. So, at this point, these excess 5934 " priority pattern needs to be retained. So, at this point, these excess
5765 " priority prefixes need to be removed, but not directories that happen to 5935 " priority prefixes need to be removed, but not directories that happen to
5766 " be just digits themselves. 5936 " be just digits themselves.
5767 exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\d\{3}'.g:netrw_sepchr.'\)\%(\d\{3}'.g:netrw_sepchr.'\)\+\ze./\1/e' 5937 exe 'sil keepj '.w:netrw_bannercnt.',$s/^\(\d\{3}'.g:netrw_sepchr.'\)\%(\d\{3}'.g:netrw_sepchr.'\)\+\ze./\1/e'
5768 call histdel("/",-1) 5938 call histdel("/",-1)
5769 5939
5770 " call Dret("SetSort") 5940 " call Dret("SetSort")
5771 endfun 5941 endfun
5772 5942
5776 " call Dfunc("s:NetrwSortStyle(islocal=".a:islocal.") netrw_sort_by<".g:netrw_sort_by.">") 5946 " call Dfunc("s:NetrwSortStyle(islocal=".a:islocal.") netrw_sort_by<".g:netrw_sort_by.">")
5777 call s:NetrwSaveWordPosn() 5947 call s:NetrwSaveWordPosn()
5778 let svpos= netrw#NetrwSavePosn() 5948 let svpos= netrw#NetrwSavePosn()
5779 5949
5780 let g:netrw_sort_by= (g:netrw_sort_by =~ 'n')? 'time' : (g:netrw_sort_by =~ 't')? 'size' : 'name' 5950 let g:netrw_sort_by= (g:netrw_sort_by =~ 'n')? 'time' : (g:netrw_sort_by =~ 't')? 'size' : 'name'
5781 norm! 0 5951 keepj norm! 0
5782 call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) 5952 call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
5783 call netrw#NetrwRestorePosn(svpos) 5953 call netrw#NetrwRestorePosn(svpos)
5784 5954
5785 " call Dret("s:NetrwSortStyle : netrw_sort_by<".g:netrw_sort_by.">") 5955 " call Dret("s:NetrwSortStyle : netrw_sort_by<".g:netrw_sort_by.">")
5786 endfun 5956 endfun
5921 " detect user attempting to close treeroot 6091 " detect user attempting to close treeroot
5922 if getline('.') !~ '|' && getline('.') != '..' 6092 if getline('.') !~ '|' && getline('.') != '..'
5923 " call Decho("user attempted to close treeroot") 6093 " call Decho("user attempted to close treeroot")
5924 " now force a refresh 6094 " now force a refresh
5925 " call Decho("clear buffer<".expand("%")."> with :%d") 6095 " call Decho("clear buffer<".expand("%")."> with :%d")
5926 keepjumps %d 6096 keepj %d
5927 " call Dret("NetrwTreeDir <".treedir."> : (side effect) s:treecurpos<".string(s:treecurpos).">") 6097 " call Dret("NetrwTreeDir <".treedir."> : (side effect) s:treecurpos<".string(s:treecurpos).">")
5928 return b:netrw_curdir 6098 return b:netrw_curdir
5929 endif 6099 endif
5930 6100
5931 " elide all non-depth information 6101 " elide all non-depth information
6002 elseif entry =~ '/$' && has_key(w:netrw_treedict,direntry.'/') 6172 elseif entry =~ '/$' && has_key(w:netrw_treedict,direntry.'/')
6003 " call Decho("<".direntry."/> is a key in treedict - display subtree for it") 6173 " call Decho("<".direntry."/> is a key in treedict - display subtree for it")
6004 call s:NetrwTreeDisplay(direntry.'/',depth) 6174 call s:NetrwTreeDisplay(direntry.'/',depth)
6005 else 6175 else
6006 " call Decho("<".entry."> is not a key in treedict (no subtree)") 6176 " call Decho("<".entry."> is not a key in treedict (no subtree)")
6007 call setline(line("$")+1,depth.entry) 6177 keepj call setline(line("$")+1,depth.entry)
6008 endif 6178 endif
6009 endfor 6179 endfor
6010 " call Dret("NetrwTreeDisplay") 6180 " call Dret("NetrwTreeDisplay")
6011 endfun 6181 endfun
6012 6182
6036 " update the directory listing for the current directory 6206 " update the directory listing for the current directory
6037 " call Decho("updating dictionary with ".a:dirname.":[..directory listing..]") 6207 " call Decho("updating dictionary with ".a:dirname.":[..directory listing..]")
6038 " call Decho("bannercnt=".w:netrw_bannercnt." line($)=".line("$")) 6208 " call Decho("bannercnt=".w:netrw_bannercnt." line($)=".line("$"))
6039 exe "silent! keepjumps ".w:netrw_bannercnt.',$g@^\.\.\=/$@d' 6209 exe "silent! keepjumps ".w:netrw_bannercnt.',$g@^\.\.\=/$@d'
6040 let w:netrw_treedict[a:dirname]= getline(w:netrw_bannercnt,line("$")) 6210 let w:netrw_treedict[a:dirname]= getline(w:netrw_bannercnt,line("$"))
6041 " call Decho("w:treedict[".a:dirname."]= ".w:netrw_treedict[a:dirname]) 6211 " call Decho("w:treedict[".a:dirname."]= ".string(w:netrw_treedict[a:dirname]))
6042 exe "silent! keepjumps ".w:netrw_bannercnt.",$d" 6212 exe "silent! keepjumps ".w:netrw_bannercnt.",$d"
6043 6213
6044 " if past banner, record word 6214 " if past banner, record word
6045 if exists("w:netrw_bannercnt") && line(".") > w:netrw_bannercnt 6215 if exists("w:netrw_bannercnt") && line(".") > w:netrw_bannercnt
6046 let fname= expand("<cword>") 6216 let fname= expand("<cword>")
6068 " fpc: filenames per column 6238 " fpc: filenames per column
6069 setlocal ma noro 6239 setlocal ma noro
6070 " call Decho("setlocal ma noro") 6240 " call Decho("setlocal ma noro")
6071 let b:netrw_cpf= 0 6241 let b:netrw_cpf= 0
6072 if line("$") >= w:netrw_bannercnt 6242 if line("$") >= w:netrw_bannercnt
6073 exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif' 6243 exe 'sil keepj '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif'
6074 call histdel("/",-1) 6244 call histdel("/",-1)
6075 else 6245 else
6076 " call Dret("NetrwWideListing") 6246 " call Dret("NetrwWideListing")
6077 return 6247 return
6078 endif 6248 endif
6085 let w:netrw_fpl= 1 6255 let w:netrw_fpl= 1
6086 endif 6256 endif
6087 " call Decho("fpl= [winwidth=".winwidth(0)."]/[b:netrw_cpf=".b:netrw_cpf.']='.w:netrw_fpl) 6257 " call Decho("fpl= [winwidth=".winwidth(0)."]/[b:netrw_cpf=".b:netrw_cpf.']='.w:netrw_fpl)
6088 6258
6089 " make wide display 6259 " make wide display
6090 exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^.*$/\=escape(printf("%-'.b:netrw_cpf.'s",submatch(0)),"\\")/' 6260 exe 'sil keepj '.w:netrw_bannercnt.',$s/^.*$/\=escape(printf("%-'.b:netrw_cpf.'s",submatch(0)),"\\")/'
6091 call histdel("/",-1) 6261 call histdel("/",-1)
6092 let fpc = (line("$") - w:netrw_bannercnt + w:netrw_fpl)/w:netrw_fpl 6262 let fpc = (line("$") - w:netrw_bannercnt + w:netrw_fpl)/w:netrw_fpl
6093 let newcolstart = w:netrw_bannercnt + fpc 6263 let newcolstart = w:netrw_bannercnt + fpc
6094 let newcolend = newcolstart + fpc - 1 6264 let newcolend = newcolstart + fpc - 1
6095 " call Decho("bannercnt=".w:netrw_bannercnt." fpl=".w:netrw_fpl." fpc=".fpc." newcol[".newcolstart.",".newcolend."]") 6265 " call Decho("bannercnt=".w:netrw_bannercnt." fpl=".w:netrw_fpl." fpc=".fpc." newcol[".newcolstart.",".newcolend."]")
6097 while line("$") >= newcolstart 6267 while line("$") >= newcolstart
6098 if newcolend > line("$") | let newcolend= line("$") | endif 6268 if newcolend > line("$") | let newcolend= line("$") | endif
6099 let newcolqty= newcolend - newcolstart 6269 let newcolqty= newcolend - newcolstart
6100 exe newcolstart 6270 exe newcolstart
6101 if newcolqty == 0 6271 if newcolqty == 0
6102 exe "silent keepjumps norm! 0\<c-v>$hx".w:netrw_bannercnt."G$p" 6272 exe "sil keepj norm! 0\<c-v>$hx".w:netrw_bannercnt."G$p"
6103 else 6273 else
6104 exe "silent keepjumps norm! 0\<c-v>".newcolqty.'j$hx'.w:netrw_bannercnt.'G$p' 6274 exe "sil keepj norm! 0\<c-v>".newcolqty.'j$hx'.w:netrw_bannercnt.'G$p'
6105 endif 6275 endif
6106 exe "silent keepjumps ".newcolstart.','.newcolend.'d' 6276 exe "sil keepj ".newcolstart.','.newcolend.'d'
6107 exe 'silent keepjumps '.w:netrw_bannercnt 6277 exe 'sil keepj '.w:netrw_bannercnt
6108 endwhile 6278 endwhile
6109 silent! let @*= keepregstar 6279 silent! let @*= keepregstar
6110 exe "silent keepjumps ".w:netrw_bannercnt.',$s/\s\+$//e' 6280 exe "sil keepj ".w:netrw_bannercnt.',$s/\s\+$//e'
6111 call histdel("/",-1) 6281 call histdel("/",-1)
6112 setlocal noma nomod ro 6282 setlocal noma nomod ro
6113 " call Dret("NetrwWideListing") 6283 " call Dret("NetrwWideListing")
6114 endif 6284 endif
6115 6285
6116 endfun 6286 endfun
6117 6287
6118 " --------------------------------------------------------------------- 6288 " ---------------------------------------------------------------------
6119 " s:PerformListing: {{{2 6289 " s:PerformListing: {{{2
6120 fun! s:PerformListing(islocal) 6290 fun! s:PerformListing(islocal)
6121 " call Dfunc("s:PerformListing(islocal=".a:islocal.") buf(%)=".bufnr("%")."<".bufname("%").">") 6291 " call Dfunc("s:PerformListing(islocal=".a:islocal.") bufnr(%)=".bufnr("%")."<".bufname("%").">")
6122 6292
6123 call s:NetrwSafeOptions() 6293 call s:NetrwSafeOptions()
6124 setlocal noro ma 6294 setlocal noro ma
6125 " call Decho("setlocal noro ma") 6295 " call Decho("setlocal noro ma")
6126 6296
6130 6300
6131 " call Decho('w:netrw_liststyle='.(exists("w:netrw_liststyle")? w:netrw_liststyle : 'n/a')) 6301 " call Decho('w:netrw_liststyle='.(exists("w:netrw_liststyle")? w:netrw_liststyle : 'n/a'))
6132 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") 6302 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict")
6133 " force a refresh for tree listings 6303 " force a refresh for tree listings
6134 " call Decho("force refresh for treelisting: clear buffer<".expand("%")."> with :%d") 6304 " call Decho("force refresh for treelisting: clear buffer<".expand("%")."> with :%d")
6135 keepjumps %d 6305 keepj %d
6136 endif 6306 endif
6137 6307
6138 " save current directory on directory history list 6308 " save current directory on directory history list
6139 call s:NetrwBookHistHandler(3,b:netrw_curdir) 6309 call s:NetrwBookHistHandler(3,b:netrw_curdir)
6140 6310
6141 " Set up the banner {{{3 6311 " Set up the banner {{{3
6142 if g:netrw_banner 6312 if g:netrw_banner
6143 " call Decho("set up banner") 6313 " call Decho("set up banner")
6144 keepjumps put ='\" ============================================================================' 6314 keepj put ='\" ============================================================================'
6145 keepjumps put ='\" Netrw Directory Listing (netrw '.g:loaded_netrw.')' 6315 keepj put ='\" Netrw Directory Listing (netrw '.g:loaded_netrw.')'
6146 keepjumps put ='\" '.b:netrw_curdir 6316 keepj put ='\" '.b:netrw_curdir
6147 keepjumps 1d 6317 keepj 1d
6148 let w:netrw_bannercnt= 3 6318 let w:netrw_bannercnt= 3
6149 exe "keepjumps ".w:netrw_bannercnt 6319 exe "keepj ".w:netrw_bannercnt
6150 else 6320 else
6151 keepjumps 1 6321 keepj 1
6152 let w:netrw_bannercnt= 1 6322 let w:netrw_bannercnt= 1
6153 endif 6323 endif
6154 6324
6155 let sortby= g:netrw_sort_by 6325 let sortby= g:netrw_sort_by
6156 if g:netrw_sort_direction =~ "^r" 6326 if g:netrw_sort_direction =~ "^r"
6161 if g:netrw_banner 6331 if g:netrw_banner
6162 " call Decho("handle specified sorting: g:netrw_sort_by<".g:netrw_sort_by.">") 6332 " call Decho("handle specified sorting: g:netrw_sort_by<".g:netrw_sort_by.">")
6163 if g:netrw_sort_by =~ "^n" 6333 if g:netrw_sort_by =~ "^n"
6164 " call Decho("directories will be sorted by name") 6334 " call Decho("directories will be sorted by name")
6165 " sorted by name 6335 " sorted by name
6166 keepjumps put ='\" Sorted by '.sortby 6336 keepj put ='\" Sorted by '.sortby
6167 keepjumps put ='\" Sort sequence: '.g:netrw_sort_sequence 6337 keepj put ='\" Sort sequence: '.g:netrw_sort_sequence
6168 let w:netrw_bannercnt= w:netrw_bannercnt + 2 6338 let w:netrw_bannercnt= w:netrw_bannercnt + 2
6169 else 6339 else
6170 " call Decho("directories will be sorted by size or time") 6340 " call Decho("directories will be sorted by size or time")
6171 " sorted by size or date 6341 " sorted by size or date
6172 keepjumps put ='\" Sorted by '.sortby 6342 keepj put ='\" Sorted by '.sortby
6173 let w:netrw_bannercnt= w:netrw_bannercnt + 1 6343 let w:netrw_bannercnt= w:netrw_bannercnt + 1
6174 endif 6344 endif
6175 exe "keepjumps ".w:netrw_bannercnt 6345 exe "keepj ".w:netrw_bannercnt
6176 endif 6346 endif
6177 6347
6178 " show copy/move target, if any 6348 " show copy/move target, if any
6179 if g:netrw_banner 6349 if g:netrw_banner
6180 if exists("s:netrwmftgt") && exists("s:netrwmftgt_islocal") 6350 if exists("s:netrwmftgt") && exists("s:netrwmftgt_islocal")
6181 " call Decho("show copy/move target<".s:netrwmftgt.">") 6351 " call Decho("show copy/move target<".s:netrwmftgt.">")
6182 keepjumps put ='' 6352 keepj put =''
6183 if s:netrwmftgt_islocal 6353 if s:netrwmftgt_islocal
6184 call setline(line("."),'" Copy/Move Tgt: '.s:netrwmftgt.' (local)') 6354 keepj call setline(line("."),'" Copy/Move Tgt: '.s:netrwmftgt.' (local)')
6185 else 6355 else
6186 call setline(line("."),'" Copy/Move Tgt: '.s:netrwmftgt.' (remote)') 6356 keepj call setline(line("."),'" Copy/Move Tgt: '.s:netrwmftgt.' (remote)')
6187 endif 6357 endif
6188 let w:netrw_bannercnt= w:netrw_bannercnt + 1 6358 let w:netrw_bannercnt= w:netrw_bannercnt + 1
6189 else 6359 else
6190 " call Decho("s:netrwmftgt does not exist, don't make Copy/Move Tgt") 6360 " call Decho("s:netrwmftgt does not exist, don't make Copy/Move Tgt")
6191 endif 6361 endif
6192 exe "keepjumps ".w:netrw_bannercnt 6362 exe "keepj ".w:netrw_bannercnt
6193 endif 6363 endif
6194 6364
6195 " Hiding... -or- Showing... {{{3 6365 " Hiding... -or- Showing... {{{3
6196 if g:netrw_banner 6366 if g:netrw_banner
6197 " call Decho("handle hiding/showing (g:netrw_hide=".g:netrw_list_hide." g:netrw_list_hide<".g:netrw_list_hide.">)") 6367 " call Decho("handle hiding/showing (g:netrw_hide=".g:netrw_list_hide." g:netrw_list_hide<".g:netrw_list_hide.">)")
6198 if g:netrw_list_hide != "" && g:netrw_hide 6368 if g:netrw_list_hide != "" && g:netrw_hide
6199 if g:netrw_hide == 1 6369 if g:netrw_hide == 1
6200 keepjumps put ='\" Hiding: '.g:netrw_list_hide 6370 keepj put ='\" Hiding: '.g:netrw_list_hide
6201 else 6371 else
6202 keepjumps put ='\" Showing: '.g:netrw_list_hide 6372 keepj put ='\" Showing: '.g:netrw_list_hide
6203 endif 6373 endif
6204 let w:netrw_bannercnt= w:netrw_bannercnt + 1 6374 let w:netrw_bannercnt= w:netrw_bannercnt + 1
6205 endif 6375 endif
6206 exe "keepjumps ".w:netrw_bannercnt 6376 exe "keepjumps ".w:netrw_bannercnt
6207 keepjumps put ='\" Quick Help: <F1>:help -:go up dir D:delete R:rename s:sort-by x:exec' 6377 keepj put ='\" Quick Help: <F1>:help -:go up dir D:delete R:rename s:sort-by x:exec'
6208 keepjumps put ='\" ============================================================================' 6378 keepj put ='\" ============================================================================'
6209 let w:netrw_bannercnt= w:netrw_bannercnt + 2 6379 let w:netrw_bannercnt= w:netrw_bannercnt + 2
6210 endif 6380 endif
6211 6381
6212 " bannercnt should index the line just after the banner 6382 " bannercnt should index the line just after the banner
6213 if g:netrw_banner 6383 if g:netrw_banner
6214 let w:netrw_bannercnt= w:netrw_bannercnt + 1 6384 let w:netrw_bannercnt= w:netrw_bannercnt + 1
6215 exe "keepjumps ".w:netrw_bannercnt 6385 exe "keepj ".w:netrw_bannercnt
6216 " call Decho("bannercnt=".w:netrw_bannercnt." (should index line just after banner) line($)=".line("$")) 6386 " call Decho("bannercnt=".w:netrw_bannercnt." (should index line just after banner) line($)=".line("$"))
6217 endif 6387 endif
6218 6388
6219 " set up syntax highlighting {{{3 6389 " set up syntax highlighting {{{3
6220 " call Decho("set up syntax highlighting") 6390 " call Decho("set up syntax highlighting")
6250 6420
6251 if !g:netrw_banner || w:netrw_bannercnt < line("$") 6421 if !g:netrw_banner || w:netrw_bannercnt < line("$")
6252 " call Decho("g:netrw_sort_direction=".g:netrw_sort_direction." (bannercnt=".w:netrw_bannercnt.")") 6422 " call Decho("g:netrw_sort_direction=".g:netrw_sort_direction." (bannercnt=".w:netrw_bannercnt.")")
6253 if g:netrw_sort_direction =~ 'n' 6423 if g:netrw_sort_direction =~ 'n'
6254 " normal direction sorting 6424 " normal direction sorting
6255 exe 'silent keepjumps '.w:netrw_bannercnt.',$sort'.' '.g:netrw_sort_options 6425 exe 'sil keepj '.w:netrw_bannercnt.',$sort'.' '.g:netrw_sort_options
6256 else 6426 else
6257 " reverse direction sorting 6427 " reverse direction sorting
6258 exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options 6428 exe 'sil keepj '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options
6259 endif 6429 endif
6260 endif 6430 endif
6261 " remove priority pattern prefix 6431 " remove priority pattern prefix
6262 " call Decho("remove priority pattern prefix") 6432 " call Decho("remove priority pattern prefix")
6263 exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}'.g:netrw_sepchr.'//e' 6433 exe 'sil keepj '.w:netrw_bannercnt.',$s/^\d\{3}'.g:netrw_sepchr.'//e'
6264 call histdel("/",-1) 6434 call histdel("/",-1)
6265 6435
6266 elseif a:islocal 6436 elseif a:islocal
6267 if !g:netrw_banner || w:netrw_bannercnt < line("$") 6437 if !g:netrw_banner || w:netrw_bannercnt < line("$")
6268 " call Decho("g:netrw_sort_direction=".g:netrw_sort_direction) 6438 " call Decho("g:netrw_sort_direction=".g:netrw_sort_direction)
6269 if g:netrw_sort_direction =~ 'n' 6439 if g:netrw_sort_direction =~ 'n'
6270 " call Decho('exe silent keepjumps '.w:netrw_bannercnt.',$sort') 6440 " call Decho('exe silent keepjumps '.w:netrw_bannercnt.',$sort')
6271 exe 'silent keepjumps '.w:netrw_bannercnt.',$sort'.' '.g:netrw_sort_options 6441 exe 'sil keepj '.w:netrw_bannercnt.',$sort'.' '.g:netrw_sort_options
6272 else 6442 else
6273 " call Decho('exe silent keepjumps '.w:netrw_bannercnt.',$sort!') 6443 " call Decho('exe silent keepjumps '.w:netrw_bannercnt.',$sort!')
6274 exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options 6444 exe 'sil keepj '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options
6275 endif 6445 endif
6276 exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{-}\///e' 6446 exe 'sil keepj '.w:netrw_bannercnt.',$s/^\d\{-}\///e'
6277 call histdel("/",-1) 6447 call histdel("/",-1)
6278 endif 6448 endif
6279 endif 6449 endif
6280 6450
6281 elseif g:netrw_sort_direction =~ 'r' 6451 elseif g:netrw_sort_direction =~ 'r'
6282 " call Decho('reverse the sorted listing') 6452 " call Decho('reverse the sorted listing')
6283 if !g:netrw_banner || w:netrw_bannercnt < line('$') 6453 if !g:netrw_banner || w:netrw_bannercnt < line('$')
6284 exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^/m '.w:netrw_bannercnt 6454 exe 'sil keepj '.w:netrw_bannercnt.',$g/^/m '.w:netrw_bannercnt
6285 call histdel("/",-1) 6455 call histdel("/",-1)
6286 endif 6456 endif
6287 endif 6457 endif
6288 endif 6458 endif
6289 6459
6293 call s:NetrwTreeListing(b:netrw_curdir) 6463 call s:NetrwTreeListing(b:netrw_curdir)
6294 6464
6295 if exists("w:netrw_bannercnt") && (line("$") > w:netrw_bannercnt || !g:netrw_banner) 6465 if exists("w:netrw_bannercnt") && (line("$") > w:netrw_bannercnt || !g:netrw_banner)
6296 " place cursor on the top-left corner of the file listing 6466 " place cursor on the top-left corner of the file listing
6297 " call Decho("place cursor on top-left corner of file listing") 6467 " call Decho("place cursor on top-left corner of file listing")
6298 exe 'silent keepjumps '.w:netrw_bannercnt 6468 exe 'sil keepj '.w:netrw_bannercnt
6299 norm! 0 6469 keepj norm! 0
6300 endif 6470 endif
6301 6471
6302 " record previous current directory 6472 " record previous current directory
6303 let w:netrw_prvdir= b:netrw_curdir 6473 let w:netrw_prvdir= b:netrw_curdir
6304 " call Decho("record netrw_prvdir<".w:netrw_prvdir.">") 6474 " call Decho("record netrw_prvdir<".w:netrw_prvdir.">")
6414 elseif g:netrw_sort_by =~ '^s' 6584 elseif g:netrw_sort_by =~ '^s'
6415 let listcmd= g:netrw_ftp_sizelist_cmd 6585 let listcmd= g:netrw_ftp_sizelist_cmd
6416 endif 6586 endif
6417 " call Decho("listcmd<".listcmd."> (using g:netrw_ftp_list_cmd)") 6587 " call Decho("listcmd<".listcmd."> (using g:netrw_ftp_list_cmd)")
6418 call s:NetrwRemoteFtpCmd(s:path,listcmd) 6588 call s:NetrwRemoteFtpCmd(s:path,listcmd)
6419 " exe "keepjumps ".w:netrw_bannercnt.',$g/^./call Decho("raw listing: ".getline("."))' 6589 " exe "keepj ".w:netrw_bannercnt.',$g/^./call Decho("raw listing: ".getline("."))'
6420 6590
6421 if w:netrw_liststyle == s:THINLIST || w:netrw_liststyle == s:WIDELIST || w:netrw_liststyle == s:TREELIST 6591 if w:netrw_liststyle == s:THINLIST || w:netrw_liststyle == s:WIDELIST || w:netrw_liststyle == s:TREELIST
6422 " shorten the listing 6592 " shorten the listing
6423 " call Decho("generate short listing") 6593 " call Decho("generate short listing")
6424 exe "keepjumps ".w:netrw_bannercnt 6594 exe "keepj ".w:netrw_bannercnt
6425 6595
6426 " cleanup 6596 " cleanup
6427 if g:netrw_ftp_browse_reject != "" 6597 if g:netrw_ftp_browse_reject != ""
6428 exe "silent! g/".g:netrw_ftp_browse_reject."/keepjumps d" 6598 exe "sil! keepj g/".g:netrw_ftp_browse_reject."/keepj d"
6429 call histdel("/",-1) 6599 call histdel("/",-1)
6430 endif 6600 endif
6431 silent! keepjumps %s/\r$//e 6601 sil! keepj %s/\r$//e
6432 call histdel("/",-1) 6602 call histdel("/",-1)
6433 6603
6434 " if there's no ../ listed, then put ./ and ../ in 6604 " if there's no ../ listed, then put ./ and ../ in
6435 let line1= line(".") 6605 let line1= line(".")
6436 exe "keepjumps ".w:netrw_bannercnt 6606 exe "keepj ".w:netrw_bannercnt
6437 let line2= search('^\.\.\/\%(\s\|$\)','cnW') 6607 let line2= search('^\.\.\/\%(\s\|$\)','cnW')
6438 if line2 == 0 6608 if line2 == 0
6439 " call Decho("netrw is putting ./ and ../ into listing") 6609 " call Decho("netrw is putting ./ and ../ into listing")
6440 keepjumps put='../' 6610 keepj put='../'
6441 keepjumps put='./' 6611 keepj put='./'
6442 endif 6612 endif
6443 exe "keepjumps ".line1 6613 exe "keepj ".line1
6444 keepjumps norm! 0 6614 keepjumps norm! 0
6445 6615
6446 " call Decho("line1=".line1." line2=".line2." line(.)=".line(".")) 6616 " call Decho("line1=".line1." line2=".line2." line(.)=".line("."))
6447 if search('^\d\{2}-\d\{2}-\d\{2}\s','n') " M$ ftp site cleanup 6617 if search('^\d\{2}-\d\{2}-\d\{2}\s','n') " M$ ftp site cleanup
6448 " call Decho("M$ ftp cleanup") 6618 " call Decho("M$ ftp cleanup")
6449 exe 'silent! keepjumps '.w:netrw_bannercnt.',$s/^\d\{2}-\d\{2}-\d\{2}\s\+\d\+:\d\+[AaPp][Mm]\s\+\%(<DIR>\|\d\+\)\s\+//' 6619 exe 'sil! keepj '.w:netrw_bannercnt.',$s/^\d\{2}-\d\{2}-\d\{2}\s\+\d\+:\d\+[AaPp][Mm]\s\+\%(<DIR>\|\d\+\)\s\+//'
6450 call histdel("/",-1) 6620 call histdel("/",-1)
6451 else " normal ftp cleanup 6621 else " normal ftp cleanup
6452 " call Decho("normal ftp cleanup") 6622 " call Decho("normal ftp cleanup")
6453 exe 'silent! keepjumps '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e' 6623 exe 'sil! keepj '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e'
6454 exe "silent! keepjumps ".w:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#e' 6624 exe "sil! keepj ".w:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#e'
6455 exe "silent! keepjumps ".w:netrw_bannercnt.',$g/ -> /s# -> .*$#/#e' 6625 exe "sil! keepj ".w:netrw_bannercnt.',$g/ -> /s# -> .*$#/#e'
6456 call histdel("/",-1) 6626 call histdel("/",-1)
6457 call histdel("/",-1) 6627 call histdel("/",-1)
6458 call histdel("/",-1) 6628 call histdel("/",-1)
6459 endif 6629 endif
6460 endif 6630 endif
6466 " call Decho("listcmd<".listcmd."> (using g:netrw_list_cmd)") 6636 " call Decho("listcmd<".listcmd."> (using g:netrw_list_cmd)")
6467 if g:netrw_scp_cmd =~ '^pscp' 6637 if g:netrw_scp_cmd =~ '^pscp'
6468 " call Decho("1: exe silent r! ".shellescape(listcmd.s:path, 1)) 6638 " call Decho("1: exe silent r! ".shellescape(listcmd.s:path, 1))
6469 exe "silent r! ".listcmd.shellescape(s:path, 1) 6639 exe "silent r! ".listcmd.shellescape(s:path, 1)
6470 " remove rubbish and adjust listing format of 'pscp' to 'ssh ls -FLa' like 6640 " remove rubbish and adjust listing format of 'pscp' to 'ssh ls -FLa' like
6471 g/^Listing directory/d 6641 keepj g/^Listing directory/keepj d
6472 g/^d[-rwx][-rwx][-rwx]/s+$+/+e 6642 keepj g/^d[-rwx][-rwx][-rwx]/keepj s+$+/+e
6473 silent g/^l[-rwx][-rwx][-rwx]/s+$+@+e 6643 sil keepj g/^l[-rwx][-rwx][-rwx]/keepj s+$+@+e
6474 call histdel("/",-1) 6644 call histdel("/",-1)
6475 call histdel("/",-1) 6645 call histdel("/",-1)
6476 call histdel("/",-1) 6646 call histdel("/",-1)
6477 if g:netrw_liststyle != s:LONGLIST 6647 if g:netrw_liststyle != s:LONGLIST
6478 g/^[dlsp-][-rwx][-rwx][-rwx]/s/^.*\s\(\S\+\)$/\1/e 6648 keepj g/^[dlsp-][-rwx][-rwx][-rwx]/keepj s/^.*\s\(\S\+\)$/\1/e
6479 call histdel("/",-1) 6649 call histdel("/",-1)
6480 endif 6650 endif
6481 else 6651 else
6482 if s:path == "" 6652 if s:path == ""
6483 " call Decho("2: exe silent r! ".listcmd) 6653 " call Decho("2: exe silent r! ".listcmd)
6484 exe "silent r! ".listcmd 6654 exe "sil r! ".listcmd
6485 else 6655 else
6486 " call Decho("3: exe silent r! ".listcmd.' '.shellescape(s:path,1)) 6656 " call Decho("3: exe silent r! ".listcmd.' '.shellescape(s:path,1))
6487 exe "silent r! ".listcmd.' '.shellescape(s:path,1) 6657 exe "sil r! ".listcmd.' '.shellescape(s:path,1)
6488 " call Decho("listcmd<".listcmd."> path<".s:path.">") 6658 " call Decho("listcmd<".listcmd."> path<".s:path.">")
6489 endif 6659 endif
6490 endif 6660 endif
6491 6661
6492 " cleanup 6662 " cleanup
6493 if g:netrw_ftp_browse_reject != "" 6663 if g:netrw_ftp_browse_reject != ""
6494 " call Decho("(cleanup) exe silent! g/".g:netrw_ssh_browse_reject."/keepjumps d") 6664 " call Decho("(cleanup) exe silent! g/".g:netrw_ssh_browse_reject."/keepjumps d")
6495 exe "silent! g/".g:netrw_ssh_browse_reject."/keepjumps d" 6665 exe "sil! g/".g:netrw_ssh_browse_reject."/keepjumps d"
6496 call histdel("/",-1) 6666 call histdel("/",-1)
6497 endif 6667 endif
6498 endif 6668 endif
6499 6669
6500 if w:netrw_liststyle == s:LONGLIST 6670 if w:netrw_liststyle == s:LONGLIST
6501 " do a long listing; these substitutions need to be done prior to sorting {{{3 6671 " do a long listing; these substitutions need to be done prior to sorting {{{3
6502 " call Decho("fix long listing:") 6672 " call Decho("fix long listing:")
6503 6673
6504 if s:method == "ftp" 6674 if s:method == "ftp"
6505 " cleanup 6675 " cleanup
6506 exe "keepjumps ".w:netrw_bannercnt 6676 exe "keepj ".w:netrw_bannercnt
6507 while getline('.') =~ g:netrw_ftp_browse_reject 6677 while getline('.') =~ g:netrw_ftp_browse_reject
6508 keepjumps d 6678 keepj d
6509 endwhile 6679 endwhile
6510 " if there's no ../ listed, then put ./ and ../ in 6680 " if there's no ../ listed, then put ./ and ../ in
6511 let line1= line(".") 6681 let line1= line(".")
6512 keepjumps 1 6682 keepj 1
6513 silent keepjumps call search('^\.\.\/\%(\s\|$\)','W') 6683 sil keepj call search('^\.\.\/\%(\s\|$\)','W')
6514 let line2= line(".") 6684 let line2= line(".")
6515 if line2 == 0 6685 if line2 == 0
6516 exe 'keepjumps '.w:netrw_bannercnt."put='./'" 6686 exe 'keepj '.w:netrw_bannercnt."put='./'"
6517 if b:netrw_curdir != '/' 6687 if b:netrw_curdir != '/'
6518 exe 'keepjumps '.w:netrw_bannercnt."put='../'" 6688 exe 'keepj '.w:netrw_bannercnt."put='../'"
6519 endif 6689 endif
6520 endif 6690 endif
6521 exe "keepjumps ".line1 6691 exe "keepj ".line1
6522 keepjumps norm! 0 6692 keepjumps norm! 0
6523 endif 6693 endif
6524 6694
6525 if search('^\d\{2}-\d\{2}-\d\{2}\s','n') " M$ ftp site cleanup 6695 if search('^\d\{2}-\d\{2}-\d\{2}\s','n') " M$ ftp site cleanup
6526 " call Decho("M$ ftp site listing cleanup") 6696 " call Decho("M$ ftp site listing cleanup")
6527 exe 'silent! keepjumps '.w:netrw_bannercnt.',$s/^\(\d\{2}-\d\{2}-\d\{2}\s\+\d\+:\d\+[AaPp][Mm]\s\+\%(<DIR>\|\d\+\)\s\+\)\(\w.*\)$/\2\t\1/' 6697 exe 'sil! keepj '.w:netrw_bannercnt.',$s/^\(\d\{2}-\d\{2}-\d\{2}\s\+\d\+:\d\+[AaPp][Mm]\s\+\%(<DIR>\|\d\+\)\s\+\)\(\w.*\)$/\2\t\1/'
6528 elseif exists("w:netrw_bannercnt") && w:netrw_bannercnt <= line("$") 6698 elseif exists("w:netrw_bannercnt") && w:netrw_bannercnt <= line("$")
6529 " call Decho("normal ftp site listing cleanup: bannercnt=".w:netrw_bannercnt." line($)=".line("$")) 6699 " call Decho("normal ftp site listing cleanup: bannercnt=".w:netrw_bannercnt." line($)=".line("$"))
6530 exe 'silent keepjumps '.w:netrw_bannercnt.',$s/ -> .*$//e' 6700 exe 'sil keepj '.w:netrw_bannercnt.',$s/ -> .*$//e'
6531 exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2\t\1/e' 6701 exe 'sil keepj '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2\t\1/e'
6532 exe 'silent keepjumps '.w:netrw_bannercnt 6702 exe 'sil keepj '.w:netrw_bannercnt
6533 call histdel("/",-1) 6703 call histdel("/",-1)
6534 call histdel("/",-1) 6704 call histdel("/",-1)
6535 call histdel("/",-1) 6705 call histdel("/",-1)
6536 endif 6706 endif
6537 endif 6707 endif
6538 6708
6539 " if exists("w:netrw_bannercnt") && w:netrw_bannercnt <= line("$") " Decho 6709 " if exists("w:netrw_bannercnt") && w:netrw_bannercnt <= line("$") " Decho
6540 " exe "keepjumps ".w:netrw_bannercnt.',$g/^./call Decho("listing: ".getline("."))' 6710 " exe "keepj ".w:netrw_bannercnt.',$g/^./call Decho("listing: ".getline("."))'
6541 " endif " Decho 6711 " endif " Decho
6542 " call Dret("s:NetrwRemoteListing") 6712 " call Dret("s:NetrwRemoteListing")
6543 endfun 6713 endfun
6544 6714
6545 " --------------------------------------------------------------------- 6715 " ---------------------------------------------------------------------
6727 6897
6728 "......................................... 6898 ".........................................
6729 if w:netrw_method == 2 || w:netrw_method == 5 6899 if w:netrw_method == 2 || w:netrw_method == 5
6730 " ftp + <.netrc>: Method #2 6900 " ftp + <.netrc>: Method #2
6731 if a:path != "" 6901 if a:path != ""
6732 put ='cd \"'.a:path.'\"' 6902 keepj put ='cd \"'.a:path.'\"'
6733 endif 6903 endif
6734 if exists("g:netrw_ftpextracmd") 6904 if exists("g:netrw_ftpextracmd")
6735 put =g:netrw_ftpextracmd 6905 keepj put =g:netrw_ftpextracmd
6736 " call Decho("filter input: ".getline('.')) 6906 " call Decho("filter input: ".getline('.'))
6737 endif 6907 endif
6738 call setline(line("$")+1,a:listcmd) 6908 call setline(line("$")+1,a:listcmd)
6739 " exe "keepjumps ".w:netrw_bannercnt.',$g/^./call Decho("ftp#".line(".").": ".getline("."))' 6909 " exe "keepjumps ".w:netrw_bannercnt.',$g/^./call Decho("ftp#".line(".").": ".getline("."))'
6740 if exists("g:netrw_port") && g:netrw_port != "" 6910 if exists("g:netrw_port") && g:netrw_port != ""
6748 "......................................... 6918 ".........................................
6749 elseif w:netrw_method == 3 6919 elseif w:netrw_method == 3
6750 " ftp + machine,id,passwd,filename: Method #3 6920 " ftp + machine,id,passwd,filename: Method #3
6751 setlocal ff=unix 6921 setlocal ff=unix
6752 if exists("g:netrw_port") && g:netrw_port != "" 6922 if exists("g:netrw_port") && g:netrw_port != ""
6753 put ='open '.g:netrw_machine.' '.g:netrw_port 6923 keepj put ='open '.g:netrw_machine.' '.g:netrw_port
6754 else 6924 else
6755 put ='open '.g:netrw_machine 6925 keepj put ='open '.g:netrw_machine
6756 endif 6926 endif
6757 6927
6758 if exists("g:netrw_ftp") && g:netrw_ftp == 1 6928 if exists("g:netrw_ftp") && g:netrw_ftp == 1
6759 put =g:netrw_uid 6929 keepj put =g:netrw_uid
6760 put ='\"'.s:netrw_passwd.'\"' 6930 keepj put ='\"'.s:netrw_passwd.'\"'
6761 else 6931 else
6762 put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"' 6932 keepj put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"'
6763 endif 6933 endif
6764 6934
6765 if a:path != "" 6935 if a:path != ""
6766 put ='cd \"'.a:path.'\"' 6936 keepj put ='cd \"'.a:path.'\"'
6767 endif 6937 endif
6768 if exists("g:netrw_ftpextracmd") 6938 if exists("g:netrw_ftpextracmd")
6769 put =g:netrw_ftpextracmd 6939 keepj put =g:netrw_ftpextracmd
6770 " call Decho("filter input: ".getline('.')) 6940 " call Decho("filter input: ".getline('.'))
6771 endif 6941 endif
6772 call setline(line("$")+1,a:listcmd) 6942 keepj call setline(line("$")+1,a:listcmd)
6773 6943
6774 " perform ftp: 6944 " perform ftp:
6775 " -i : turns off interactive prompting from ftp 6945 " -i : turns off interactive prompting from ftp
6776 " -n unix : DON'T use <.netrc>, even though it exists 6946 " -n unix : DON'T use <.netrc>, even though it exists
6777 " -n win32: quit being obnoxious about password 6947 " -n win32: quit being obnoxious about password
6784 call netrw#ErrorMsg(s:WARNING,"unable to comply with your request<" . choice . ">",23) 6954 call netrw#ErrorMsg(s:WARNING,"unable to comply with your request<" . choice . ">",23)
6785 endif 6955 endif
6786 6956
6787 " cleanup for Windows 6957 " cleanup for Windows
6788 if has("win32") || has("win95") || has("win64") || has("win16") 6958 if has("win32") || has("win95") || has("win64") || has("win16")
6789 silent! keepjumps %s/\r$//e 6959 sil! keepj %s/\r$//e
6790 call histdel("/",-1) 6960 call histdel("/",-1)
6791 endif 6961 endif
6792 if a:listcmd == "dir" 6962 if a:listcmd == "dir"
6793 " infer directory/link based on the file permission string 6963 " infer directory/link based on the file permission string
6794 silent! keepjumps g/d\%([-r][-w][-x]\)\{3}/s@$@/@ 6964 sil! keepj g/d\%([-r][-w][-x]\)\{3}/keepj s@$@/@
6795 silent! keepjumps g/l\%([-r][-w][-x]\)\{3}/s/$/@/ 6965 sil! keepj g/l\%([-r][-w][-x]\)\{3}/keepj s/$/@/
6796 call histdel("/",-1) 6966 call histdel("/",-1)
6797 call histdel("/",-1) 6967 call histdel("/",-1)
6798 if w:netrw_liststyle == s:THINLIST || w:netrw_liststyle == s:WIDELIST || w:netrw_liststyle == s:TREELIST 6968 if w:netrw_liststyle == s:THINLIST || w:netrw_liststyle == s:WIDELIST || w:netrw_liststyle == s:TREELIST
6799 exe "silent! keepjumps ".w:netrw_bannercnt.',$s/^\%(\S\+\s\+\)\{8}//e' 6969 exe "sil! keepj ".w:netrw_bannercnt.',$s/^\%(\S\+\s\+\)\{8}//e'
6800 call histdel("/",-1) 6970 call histdel("/",-1)
6801 endif 6971 endif
6802 endif 6972 endif
6803 6973
6804 " ftp's listing doesn't seem to include ./ or ../ 6974 " ftp's listing doesn't seem to include ./ or ../
6805 if !search('^\.\/$\|\s\.\/$','wn') 6975 if !search('^\.\/$\|\s\.\/$','wn')
6806 exe 'keepjumps '.w:netrw_bannercnt 6976 exe 'keepj '.w:netrw_bannercnt
6807 put ='./' 6977 keepj put ='./'
6808 endif 6978 endif
6809 if !search('^\.\.\/$\|\s\.\.\/$','wn') 6979 if !search('^\.\.\/$\|\s\.\.\/$','wn')
6810 exe 'keepjumps '.w:netrw_bannercnt 6980 exe 'keepj '.w:netrw_bannercnt
6811 put ='../' 6981 keepj put ='../'
6812 endif 6982 endif
6813 6983
6814 " restore settings 6984 " restore settings
6815 let &ff= ffkeep 6985 let &ff= ffkeep
6816 " call Dret("NetrwRemoteFtpCmd") 6986 " call Dret("NetrwRemoteFtpCmd")
6859 7029
6860 else 7030 else
6861 7031
6862 " attempt to rename files/directories 7032 " attempt to rename files/directories
6863 while ctr <= a:lastline 7033 while ctr <= a:lastline
6864 exe "keepjumps ".ctr 7034 exe "keepj ".ctr
6865 7035
6866 let oldname= s:NetrwGetWord() 7036 let oldname= s:NetrwGetWord()
6867 " call Decho("oldname<".oldname.">") 7037 " call Decho("oldname<".oldname.">")
6868 7038
6869 call inputsave() 7039 call inputsave()
7059 " call Decho("getftime(".filename.")=".getftime(filename)) 7229 " call Decho("getftime(".filename.")=".getftime(filename))
7060 let t = getftime(filename) 7230 let t = getftime(filename)
7061 let ft = strpart("000000000000000000",1,18-strlen(t)).t 7231 let ft = strpart("000000000000000000",1,18-strlen(t)).t
7062 " call Decho("exe keepjumps put ='".ft.'/'.filename."'") 7232 " call Decho("exe keepjumps put ='".ft.'/'.filename."'")
7063 let ftpfile= ft.'/'.pfile 7233 let ftpfile= ft.'/'.pfile
7064 keepjumps silent! put=ftpfile 7234 sil! keepj put=ftpfile
7065 7235
7066 elseif g:netrw_sort_by =~ "^s" 7236 elseif g:netrw_sort_by =~ "^s"
7067 " sort by size (handles file sizes up to 1 quintillion bytes, US) 7237 " sort by size (handles file sizes up to 1 quintillion bytes, US)
7068 " call Decho("getfsize(".filename.")=".getfsize(filename)) 7238 " call Decho("getfsize(".filename.")=".getfsize(filename))
7069 let sz = getfsize(filename) 7239 let sz = getfsize(filename)
7070 let fsz = strpart("000000000000000000",1,18-strlen(sz)).sz 7240 let fsz = strpart("000000000000000000",1,18-strlen(sz)).sz
7071 " call Decho("exe keepjumps put ='".fsz.'/'.filename."'") 7241 " call Decho("exe keepjumps put ='".fsz.'/'.filename."'")
7072 let fszpfile= fsz.'/'.pfile 7242 let fszpfile= fsz.'/'.pfile
7073 keepjumps silent! put =fszpfile 7243 sil! keepj put =fszpfile
7074 7244
7075 else 7245 else
7076 " sort by name 7246 " sort by name
7077 " call Decho("exe keepjumps put ='".pfile."'") 7247 " call Decho("exe keepjumps put ='".pfile."'")
7078 keepjumps silent! put=pfile 7248 sil! keepj put=pfile
7079 endif 7249 endif
7080 endwhile 7250 endwhile
7081 7251
7082 " cleanup any windows mess at end-of-line 7252 " cleanup any windows mess at end-of-line
7083 silent! keepjumps g/^$/d 7253 sil! keepj g/^$/d
7084 silent! keepjumps %s/\r$//e 7254 sil! keepj %s/\r$//e
7085 call histdel("/",-1) 7255 call histdel("/",-1)
7086 exe "setlocal ts=".g:netrw_maxfilenamelen 7256 exe "setlocal ts=".g:netrw_maxfilenamelen
7087 " call Decho("setlocal ts=".g:netrw_maxfilenamelen) 7257 " call Decho("setlocal ts=".g:netrw_maxfilenamelen)
7088 7258
7089 " call Dret("s:LocalListing") 7259 " call Dret("s:LocalListing")
7130 for ibuf in s:netrw_browselist 7300 for ibuf in s:netrw_browselist
7131 " call Decho("bufwinnr(".ibuf.") index(buftablist,".ibuf.")=".index(buftablist,ibuf)) 7301 " call Decho("bufwinnr(".ibuf.") index(buftablist,".ibuf.")=".index(buftablist,ibuf))
7132 if bufwinnr(ibuf) == -1 && index(buftablist,ibuf) == -1 7302 if bufwinnr(ibuf) == -1 && index(buftablist,ibuf) == -1
7133 " wipe out any non-displaying netrw buffer 7303 " wipe out any non-displaying netrw buffer
7134 " call Decho("wiping buf#".ibuf,"<".bufname(ibuf).">") 7304 " call Decho("wiping buf#".ibuf,"<".bufname(ibuf).">")
7135 exe "silent! bd ".fnameescape(ibuf) 7305 exe "sil! bd ".fnameescape(ibuf)
7136 call remove(s:netrw_browselist,ibl) 7306 call remove(s:netrw_browselist,ibl)
7137 " call Decho("browselist=".string(s:netrw_browselist)) 7307 " call Decho("browselist=".string(s:netrw_browselist))
7138 continue 7308 continue
7139 elseif index(tabpagebuflist(),ibuf) != -1 7309 elseif index(tabpagebuflist(),ibuf) != -1
7140 " refresh any netrw buffer 7310 " refresh any netrw buffer
7177 " remove (multiple) files and directories 7347 " remove (multiple) files and directories
7178 " call Decho("remove files in range [".a:firstline.",".a:lastline."]") 7348 " call Decho("remove files in range [".a:firstline.",".a:lastline."]")
7179 7349
7180 let ctr = a:firstline 7350 let ctr = a:firstline
7181 while ctr <= a:lastline 7351 while ctr <= a:lastline
7182 exe "keepjumps ".ctr 7352 exe "keepj ".ctr
7183 7353
7184 " sanity checks 7354 " sanity checks
7185 if line(".") < w:netrw_bannercnt 7355 if line(".") < w:netrw_bannercnt
7186 let ctr= ctr + 1 7356 let ctr= ctr + 1
7187 continue 7357 continue
7217 fun! s:NetrwLocalRmFile(path,fname,all) 7387 fun! s:NetrwLocalRmFile(path,fname,all)
7218 " call Dfunc("s:NetrwLocalRmFile(path<".a:path."> fname<".a:fname."> all=".a:all) 7388 " call Dfunc("s:NetrwLocalRmFile(path<".a:path."> fname<".a:fname."> all=".a:all)
7219 7389
7220 let all= a:all 7390 let all= a:all
7221 let ok = "" 7391 let ok = ""
7222 norm! 0 7392 keepj norm! 0
7223 let rmfile= s:ComposePath(a:path,a:fname) 7393 let rmfile= s:ComposePath(a:path,a:fname)
7224 " call Decho("rmfile<".rmfile.">") 7394 " call Decho("rmfile<".rmfile.">")
7225 7395
7226 if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '[\/]$') 7396 if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '[\/]$')
7227 " attempt to remove file 7397 " attempt to remove file
7329 7499
7330 else 7500 else
7331 7501
7332 " attempt to rename files/directories 7502 " attempt to rename files/directories
7333 while ctr <= a:lastline 7503 while ctr <= a:lastline
7334 exe "keepjumps ".ctr 7504 exe "keepj ".ctr
7335 7505
7336 " sanity checks 7506 " sanity checks
7337 if line(".") < w:netrw_bannercnt 7507 if line(".") < w:netrw_bannercnt
7338 let ctr= ctr + 1 7508 let ctr= ctr + 1
7339 continue 7509 continue
7342 if curword == "./" || curword == "../" 7512 if curword == "./" || curword == "../"
7343 let ctr= ctr + 1 7513 let ctr= ctr + 1
7344 continue 7514 continue
7345 endif 7515 endif
7346 7516
7347 norm! 0 7517 keepj norm! 0
7348 let oldname= s:ComposePath(a:path,curword) 7518 let oldname= s:ComposePath(a:path,curword)
7349 " call Decho("oldname<".oldname.">") 7519 " call Decho("oldname<".oldname.">")
7350 7520
7351 call inputsave() 7521 call inputsave()
7352 let newname= input("Moving ".oldname." to : ",substitute(oldname,'/*$','','e')) 7522 let newname= input("Moving ".oldname." to : ",substitute(oldname,'/*$','','e'))
7462 " call Decho("write to NetrwMessage buffer") 7632 " call Decho("write to NetrwMessage buffer")
7463 exe bufwinnr("NetrwMessage")."wincmd w" 7633 exe bufwinnr("NetrwMessage")."wincmd w"
7464 " call Decho("setlocal ma noro") 7634 " call Decho("setlocal ma noro")
7465 setlocal ma noro 7635 setlocal ma noro
7466 call setline(line("$")+1,level.a:msg) 7636 call setline(line("$")+1,level.a:msg)
7467 $ 7637 keepj $
7468 else 7638 else
7469 " call Decho("create a NetrwMessage buffer window") 7639 " call Decho("create a NetrwMessage buffer window")
7470 bo 1split 7640 bo 1split
7471 call s:NetrwEnew() 7641 call s:NetrwEnew()
7472 call s:NetrwSafeOptions() 7642 call s:NetrwSafeOptions()
7519 endif 7689 endif
7520 7690
7521 " restore window 7691 " restore window
7522 if exists("w:netrw_winnr") 7692 if exists("w:netrw_winnr")
7523 " call Decho("restore window: exe silent! ".w:netrw_winnr."wincmd w") 7693 " call Decho("restore window: exe silent! ".w:netrw_winnr."wincmd w")
7524 exe "silent! ".w:netrw_winnr."wincmd w" 7694 exe "sil! ".w:netrw_winnr."wincmd w"
7525 endif 7695 endif
7526 if v:shell_error == 0 7696 if v:shell_error == 0
7527 " as suggested by Bram M: redraw on no error 7697 " as suggested by Bram M: redraw on no error
7528 " allows protocol error messages to remain visible 7698 " allows protocol error messages to remain visible
7529 " redraw! 7699 " redraw!
7530 endif 7700 endif
7531 7701
7532 " restore top-of-screen line 7702 " restore top-of-screen line
7533 if exists("w:netrw_hline") 7703 if exists("w:netrw_hline")
7534 " call Decho("restore topofscreen: exe norm! ".w:netrw_hline."G0z") 7704 " call Decho("restore topofscreen: exe norm! ".w:netrw_hline."G0z")
7535 exe "norm! ".w:netrw_hline."G0z\<CR>" 7705 exe "keepj norm! ".w:netrw_hline."G0z\<CR>"
7536 endif 7706 endif
7537 7707
7538 " restore position 7708 " restore position
7539 if exists("w:netrw_line") && exists("w:netrw_col") 7709 if exists("w:netrw_line") && exists("w:netrw_col")
7540 " call Decho("restore posn: exe norm! ".w:netrw_line."G0".w:netrw_col."|") 7710 " call Decho("restore posn: exe norm! ".w:netrw_line."G0".w:netrw_col."|")
7541 exe "norm! ".w:netrw_line."G0".w:netrw_col."\<bar>" 7711 exe "keepj norm! ".w:netrw_line."G0".w:netrw_col."\<bar>"
7542 endif 7712 endif
7543 7713
7544 let &ei= eikeep 7714 let &ei= eikeep
7545 " call Dret("netrw#NetrwRestorePosn") 7715 " call Dret("netrw#NetrwRestorePosn")
7546 endfun 7716 endfun
7554 let w:netrw_line = line(".") 7724 let w:netrw_line = line(".")
7555 let w:netrw_col = virtcol(".") 7725 let w:netrw_col = virtcol(".")
7556 " call Decho("currently, win#".w:netrw_winnr." line#".w:netrw_line." col#".w:netrw_col) 7726 " call Decho("currently, win#".w:netrw_winnr." line#".w:netrw_line." col#".w:netrw_col)
7557 7727
7558 " Save top-of-screen line 7728 " Save top-of-screen line
7559 norm! H0 7729 keepj norm! H0
7560 let w:netrw_hline= line(".") 7730 let w:netrw_hline= line(".")
7561 7731
7562 " set up string holding position parameters 7732 " set up string holding position parameters
7563 let ret = "let w:netrw_winnr=".w:netrw_winnr."|let w:netrw_line=".w:netrw_line."|let w:netrw_col=".w:netrw_col."|let w:netrw_hline=".w:netrw_hline 7733 let ret = "let w:netrw_winnr=".w:netrw_winnr."|let w:netrw_line=".w:netrw_line."|let w:netrw_col=".w:netrw_col."|let w:netrw_hline=".w:netrw_hline
7564 7734
7745 if bmshowlist != [] 7915 if bmshowlist != []
7746 let bmshowfuncs= filter(bmshowlist,'v:val =~ "<SNR>\\d\\+_BMShow()"') 7916 let bmshowfuncs= filter(bmshowlist,'v:val =~ "<SNR>\\d\\+_BMShow()"')
7747 if bmshowfuncs != [] 7917 if bmshowfuncs != []
7748 let bmshowfunc = substitute(bmshowfuncs[0],'^.*:\(call.*BMShow()\).*$','\1','') 7918 let bmshowfunc = substitute(bmshowfuncs[0],'^.*:\(call.*BMShow()\).*$','\1','')
7749 if bmshowfunc =~ '^call.*BMShow()' 7919 if bmshowfunc =~ '^call.*BMShow()'
7750 exe "silent! ".bmshowfunc 7920 exe "sil! ".bmshowfunc
7751 endif 7921 endif
7752 endif 7922 endif
7753 endif 7923 endif
7754 " call Dret("s:NetrwBMShow : bmshowfunc<".(exists("bmshowfunc")? bmshowfunc : 'n/a').">") 7924 " call Dret("s:NetrwBMShow : bmshowfunc<".(exists("bmshowfunc")? bmshowfunc : 'n/a').">")
7925 endfun
7926
7927 " ---------------------------------------------------------------------
7928 " s:NetrwCursorline: {{{2
7929 fun! s:NetrwCursorline()
7930 if !exists("w:netrw_liststyle")
7931 let w:netrw_liststyle= g:netrw_liststyle
7932 endif
7933 " call Dfunc("s:NetrwCursorline() liststyle=".w:netrw_liststyle." g:netrw_cursorline=".g:netrw_cursorline." s:netrw_usercuc=".s:netrw_usercuc." s:netrw_usercul=".s:netrw_usercul)
7934 "
7935 if w:netrw_liststyle != s:WIDELIST
7936 " thin-long-tree listings
7937 if g:netrw_cursorline == 2
7938 setlocal cursorline
7939 let &l:cursorcolumn= s:netrw_usercuc
7940 " call Decho("setlocal cursorline (cursorcolumn is ".((s:netrw_usercuc)? "on" : "off").")")
7941 elseif g:netrw_cursorline
7942 setlocal cursorline
7943 " call Decho("setlocal cursorline")
7944 endif
7945
7946 else
7947 " wide listings
7948 if g:netrw_cursorline == 2
7949 setlocal cursorline cursorcolumn
7950 " call Decho("setlocal cursorline cursorcolumn")
7951 elseif g:netrw_cursorline
7952 let &l:cursorline= s:netrw_usercul
7953 " call Decho("cursorline is ".((s:netrw_usercul)? "on" : "off").")")
7954 endif
7955 endif
7956 " call Dret("s:NetrwCursorline : l:cursorline=".&l:cursorline." l:cursorcolumn=".&l:cursorcolumn)
7957 endfun
7958
7959 " ---------------------------------------------------------------------
7960 " s:RestoreCursorline: restores cursorline/cursorcolumn to original user settings {{{2
7961 fun! s:RestoreCursorline()
7962 " call Dfunc("s:RestoreCursorline() currently, cul=".&l:cursorline." cuc=".&l:cursorcolumn." win#".winnr()." buf#".bufnr("%"))
7963 let &l:cursorline = s:netrw_usercul
7964 let &l:cursorcolumn = s:netrw_usercuc
7965 " call Dret("s:RestoreCursorline : restored cul=".&l:cursorline." cuc=".&l:cursorcolumn)
7755 endfun 7966 endfun
7756 7967
7757 " --------------------------------------------------------------------- 7968 " ---------------------------------------------------------------------
7758 " s:NetrwDelete: Deletes a file. {{{2 7969 " s:NetrwDelete: Deletes a file. {{{2
7759 " Uses Steve Hall's idea to insure that Windows paths stay 7970 " Uses Steve Hall's idea to insure that Windows paths stay
7786 endfun 7997 endfun
7787 7998
7788 " --------------------------------------------------------------------- 7999 " ---------------------------------------------------------------------
7789 " s:NetrwEnew: opens a new buffer, passes netrw buffer variables through {{{2 8000 " s:NetrwEnew: opens a new buffer, passes netrw buffer variables through {{{2
7790 fun! s:NetrwEnew(...) 8001 fun! s:NetrwEnew(...)
7791 " call Dfunc("s:NetrwEnew() a:0=".a:0) 8002 " call Dfunc("s:NetrwEnew() a:0=".a:0." bufnr($)=".bufnr("$"))
7792 " call Decho("curdir<".((a:0>0)? a:1 : "")."> buf#".bufnr("%")."<".bufname("%").">") 8003 " call Decho("curdir<".((a:0>0)? a:1 : "")."> buf#".bufnr("%")."<".bufname("%").">")
7793 8004
7794 " grab a function-local-variable copy of buffer variables 8005 " grab a function-local-variable copy of buffer variables
8006 " call Decho("make function-local copy of netrw variables")
7795 if exists("b:netrw_bannercnt") |let netrw_bannercnt = b:netrw_bannercnt |endif 8007 if exists("b:netrw_bannercnt") |let netrw_bannercnt = b:netrw_bannercnt |endif
7796 if exists("b:netrw_browser_active") |let netrw_browser_active = b:netrw_browser_active |endif 8008 if exists("b:netrw_browser_active") |let netrw_browser_active = b:netrw_browser_active |endif
7797 if exists("b:netrw_cpf") |let netrw_cpf = b:netrw_cpf |endif 8009 if exists("b:netrw_cpf") |let netrw_cpf = b:netrw_cpf |endif
7798 if exists("b:netrw_curdir") |let netrw_curdir = b:netrw_curdir |endif 8010 if exists("b:netrw_curdir") |let netrw_curdir = b:netrw_curdir |endif
7799 if exists("b:netrw_explore_bufnr") |let netrw_explore_bufnr = b:netrw_explore_bufnr |endif 8011 if exists("b:netrw_explore_bufnr") |let netrw_explore_bufnr = b:netrw_explore_bufnr |endif
7809 if exists("b:netrw_option") |let netrw_option = b:netrw_option |endif 8021 if exists("b:netrw_option") |let netrw_option = b:netrw_option |endif
7810 if exists("b:netrw_prvdir") |let netrw_prvdir = b:netrw_prvdir |endif 8022 if exists("b:netrw_prvdir") |let netrw_prvdir = b:netrw_prvdir |endif
7811 8023
7812 call s:NetrwOptionRestore("w:") 8024 call s:NetrwOptionRestore("w:")
7813 " call Decho("generate a buffer with keepjumps keepalt enew!") 8025 " call Decho("generate a buffer with keepjumps keepalt enew!")
7814 keepjumps keepalt enew! 8026 keepj keepalt enew!
8027 " call Decho("bufnr($)=".bufnr("$"))
7815 call s:NetrwOptionSave("w:") 8028 call s:NetrwOptionSave("w:")
7816 8029
7817 " copy function-local-variables to buffer variable equivalents 8030 " copy function-local-variables to buffer variable equivalents
8031 " call Decho("copy function-local variables back to buffer netrw variables")
7818 if exists("netrw_bannercnt") |let b:netrw_bannercnt = netrw_bannercnt |endif 8032 if exists("netrw_bannercnt") |let b:netrw_bannercnt = netrw_bannercnt |endif
7819 if exists("netrw_browser_active") |let b:netrw_browser_active = netrw_browser_active |endif 8033 if exists("netrw_browser_active") |let b:netrw_browser_active = netrw_browser_active |endif
7820 if exists("netrw_cpf") |let b:netrw_cpf = netrw_cpf |endif 8034 if exists("netrw_cpf") |let b:netrw_cpf = netrw_cpf |endif
7821 if exists("netrw_curdir") |let b:netrw_curdir = netrw_curdir |endif 8035 if exists("netrw_curdir") |let b:netrw_curdir = netrw_curdir |endif
7822 if exists("netrw_explore_bufnr") |let b:netrw_explore_bufnr = netrw_explore_bufnr |endif 8036 if exists("netrw_explore_bufnr") |let b:netrw_explore_bufnr = netrw_explore_bufnr |endif
7835 if a:0 > 0 8049 if a:0 > 0
7836 let b:netrw_curdir= a:1 8050 let b:netrw_curdir= a:1
7837 if b:netrw_curdir =~ '/$' 8051 if b:netrw_curdir =~ '/$'
7838 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST 8052 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
7839 file NetrwTreeListing 8053 file NetrwTreeListing
8054 set bt=nowrite noswf
7840 nno <silent> <buffer> [ :silent call <SID>TreeListMove('[')<cr> 8055 nno <silent> <buffer> [ :silent call <SID>TreeListMove('[')<cr>
7841 nno <silent> <buffer> ] :silent call <SID>TreeListMove(']')<cr> 8056 nno <silent> <buffer> ] :silent call <SID>TreeListMove(']')<cr>
7842 else 8057 else
7843 exe "silent! keepalt file ".fnameescape(b:netrw_curdir) 8058 exe "sil! keepalt file ".fnameescape(b:netrw_curdir)
7844 endif 8059 endif
7845 endif 8060 endif
7846 endif 8061 endif
7847 8062
7848 " call Dret("s:NetrwEnew : buf#".bufnr("%")."<".bufname("%")."> expand(%)<".expand("%")."> expand(#)<".expand("#").">") 8063 " call Dret("s:NetrwEnew : buf#".bufnr("%")."<".bufname("%")."> expand(%)<".expand("%")."> expand(#)<".expand("#").">")
8093 " virtual length (counting, for instance, tabs as anything between 1 and 8308 " virtual length (counting, for instance, tabs as anything between 1 and
8094 " 'tabstop', wide CJK as 2 rather than 1, Arabic alif as zero when immediately 8309 " 'tabstop', wide CJK as 2 rather than 1, Arabic alif as zero when immediately
8095 " preceded by lam, one otherwise, etc.) 8310 " preceded by lam, one otherwise, etc.)
8096 " (comment from TM, solution from me) 8311 " (comment from TM, solution from me)
8097 let modkeep= &mod 8312 let modkeep= &mod
8098 exe "norm! o\<esc>" 8313 exe "keepj norm! o\<esc>"
8099 call setline(line("."),a:x) 8314 call setline(line("."),a:x)
8100 let ret= virtcol("$") - 1 8315 let ret= virtcol("$") - 1
8101 d 8316 keepj d
8102 let &mod= modkeep 8317 let &mod= modkeep
8103 8318
8104 else 8319 else
8105 " at least give a decent default 8320 " at least give a decent default
8106 let ret= strlen(a:x) 8321 let ret= strlen(a:x)
8125 " call Decho("indentm1 <".indentm1.">") 8340 " call Decho("indentm1 <".indentm1.">")
8126 8341
8127 if curline !~ '/$' 8342 if curline !~ '/$'
8128 " call Decho('regfile') 8343 " call Decho('regfile')
8129 if a:dir == '[' && prvline != '' 8344 if a:dir == '[' && prvline != ''
8130 norm! 0 8345 keepj norm! 0
8131 let nl = search('^'.indentm1.'[^|]','bWe') " search backwards from regular file 8346 let nl = search('^'.indentm1.'[^|]','bWe') " search backwards from regular file
8132 " call Decho("regfile srch back: ".nl) 8347 " call Decho("regfile srch back: ".nl)
8133 elseif a:dir == ']' && nxtline != '' 8348 elseif a:dir == ']' && nxtline != ''
8134 norm! $ 8349 keepj norm! $
8135 let nl = search('^'.indentm1.'[^|]','We') " search forwards from regular file 8350 let nl = search('^'.indentm1.'[^|]','We') " search forwards from regular file
8136 " call Decho("regfile srch fwd: ".nl) 8351 " call Decho("regfile srch fwd: ".nl)
8137 endif 8352 endif
8138 8353
8139 elseif a:dir == '[' && prvline != '' 8354 elseif a:dir == '[' && prvline != ''
8140 norm! 0 8355 keepj norm! 0
8141 let curline= line(".") 8356 let curline= line(".")
8142 let nl = search('^'.curindent.'[^|]','bWe') " search backwards From directory, same indentation 8357 let nl = search('^'.curindent.'[^|]','bWe') " search backwards From directory, same indentation
8143 " call Decho("dir srch back ind: ".nl) 8358 " call Decho("dir srch back ind: ".nl)
8144 if nl != 0 8359 if nl != 0
8145 if line(".") == curline-1 8360 if line(".") == curline-1
8147 " call Decho("dir srch back ind-1: ".nl) 8362 " call Decho("dir srch back ind-1: ".nl)
8148 endif 8363 endif
8149 endif 8364 endif
8150 8365
8151 elseif a:dir == ']' && nxtline != '' 8366 elseif a:dir == ']' && nxtline != ''
8152 norm! $ 8367 keepj norm! $
8153 let curline = line(".") 8368 let curline = line(".")
8154 let nl = search('^'.curindent.'[^|]','We') " search forwards from directory, same indentation 8369 let nl = search('^'.curindent.'[^|]','We') " search forwards from directory, same indentation
8155 " call Decho("dir srch fwd ind: ".nl) 8370 " call Decho("dir srch fwd ind: ".nl)
8156 if nl != 0 8371 if nl != 0
8157 if line(".") == curline+1 8372 if line(".") == curline+1