Mercurial > vim
comparison runtime/autoload/netrw.vim @ 1668:0b796e045c42 v7.2b.000
updated for version 7.2b-000
author | vimboss |
---|---|
date | Sun, 13 Jul 2008 17:41:49 +0000 |
parents | 82b5078be2dd |
children | f4f8014d516e |
comparison
equal
deleted
inserted
replaced
1667:131dbd3d2a4b | 1668:0b796e045c42 |
---|---|
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: Jun 12, 2008 | 3 " Date: Jul 12, 2008 |
4 " Version: 125 | 4 " Version: 127 |
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-2008 Charles E. Campbell, Jr. {{{1 | 7 " Copyright: Copyright (C) 1999-2008 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 |
25 if !exists("s:NOTE") | 25 if !exists("s:NOTE") |
26 let s:NOTE = 0 | 26 let s:NOTE = 0 |
27 let s:WARNING = 1 | 27 let s:WARNING = 1 |
28 let s:ERROR = 2 | 28 let s:ERROR = 2 |
29 endif | 29 endif |
30 let g:loaded_netrw = "v125" | 30 let g:loaded_netrw = "v127" |
31 | 31 |
32 " sanity checks | 32 " sanity checks |
33 if v:version < 700 | 33 if v:version < 700 |
34 call netrw#ErrorMsg(s:WARNING,"you need vim version 7.0 or later for version ".g:loaded_netrw." of netrw",1) | 34 call netrw#ErrorMsg(s:WARNING,"you need vim version 7.0 or later for version ".g:loaded_netrw." of netrw",1) |
35 finish | 35 finish |
36 endif | |
37 if !exists("*shellescape") | |
38 call netrw#ErrorMsg(s:ERROR,"you need to upgade your vim so that it has shellescape()",64) | |
39 endif | |
40 if !exists("*fnameescape") | |
41 call netrw#ErrorMsg(s:ERROR,"you need to upgade your vim so that it has fnameescape()",65) | |
42 endif | 36 endif |
43 | 37 |
44 let s:keepcpo= &cpo | 38 let s:keepcpo= &cpo |
45 setlocal cpo&vim | 39 setlocal cpo&vim |
46 "DechoTabOn | 40 "DechoTabOn |
310 endif | 304 endif |
311 if !exists("g:netrw_sort_by") | 305 if !exists("g:netrw_sort_by") |
312 " alternatives: date size | 306 " alternatives: date size |
313 let g:netrw_sort_by= "name" | 307 let g:netrw_sort_by= "name" |
314 endif | 308 endif |
309 if !exists("g:netrw_sort_options") | |
310 let g:netrw_sort_options= "" | |
311 endif | |
315 if !exists("g:netrw_sort_direction") | 312 if !exists("g:netrw_sort_direction") |
316 " alternative: reverse (z y x ...) | 313 " alternative: reverse (z y x ...) |
317 let g:netrw_sort_direction= "normal" | 314 let g:netrw_sort_direction= "normal" |
318 endif | 315 endif |
319 if !exists("g:netrw_sort_sequence") | 316 if !exists("g:netrw_sort_sequence") |
413 let {a:vt}netrw_repkeep = &l:report | 410 let {a:vt}netrw_repkeep = &l:report |
414 let {a:vt}netrw_spellkeep = &l:spell | 411 let {a:vt}netrw_spellkeep = &l:spell |
415 let {a:vt}netrw_twkeep = &l:tw " textwidth | 412 let {a:vt}netrw_twkeep = &l:tw " textwidth |
416 let {a:vt}netrw_wigkeep = &l:wig " wildignore | 413 let {a:vt}netrw_wigkeep = &l:wig " wildignore |
417 if has("win32") && !has("win95") | 414 if has("win32") && !has("win95") |
418 let {a:vt}netrw_swfkeep= &l:swf " swapfile | 415 let {a:vt}netrw_swfkeep = &l:swf " swapfile |
419 endif | 416 endif |
420 if &go =~ 'a' | silent! let {a:vt}netrw_regstar = @* | endif | 417 if &go =~ 'a' | silent! let {a:vt}netrw_regstar = @* | endif |
421 silent! let {a:vt}netrw_regslash= @/ | 418 silent! let {a:vt}netrw_regslash= @/ |
422 | 419 |
423 " call Dret("s:NetrwOptionSave : win#".winnr()." buf#".bufnr("%")) | 420 " call Dret("s:NetrwOptionSave : win#".winnr()." buf#".bufnr("%")) |
426 " ------------------------------------------------------------------------ | 423 " ------------------------------------------------------------------------ |
427 " s:NetrwOptionRestore: restore options {{{2 | 424 " s:NetrwOptionRestore: restore options {{{2 |
428 fun! s:NetrwOptionRestore(vt) | 425 fun! s:NetrwOptionRestore(vt) |
429 " call Dfunc("s:NetrwOptionRestore(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")) | 426 " call Dfunc("s:NetrwOptionRestore(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")) |
430 if !exists("{a:vt}netrw_optionsave") | 427 if !exists("{a:vt}netrw_optionsave") |
431 " call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap) | 428 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap) |
432 " call Dret("s:NetrwOptionRestore : ".a:vt."netrw_optionsave doesn't exist") | 429 " call Dret("s:NetrwOptionRestore : ".a:vt."netrw_optionsave doesn't exist") |
433 return | 430 return |
434 endif | 431 endif |
435 unlet {a:vt}netrw_optionsave | 432 unlet {a:vt}netrw_optionsave |
436 | 433 |
490 if exists("{a:vt}netrw_regstar") |silent! let @*= {a:vt}netrw_regstar |unlet {a:vt}netrw_regstar |endif | 487 if exists("{a:vt}netrw_regstar") |silent! let @*= {a:vt}netrw_regstar |unlet {a:vt}netrw_regstar |endif |
491 if exists("{a:vt}netrw_regslash")|silent! let @/= {a:vt}netrw_regslash|unlet {a:vt}netrw_regslash|endif | 488 if exists("{a:vt}netrw_regslash")|silent! let @/= {a:vt}netrw_regslash|unlet {a:vt}netrw_regslash|endif |
492 | 489 |
493 " call Decho("g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd) | 490 " call Decho("g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd) |
494 " call Decho("fo=".&fo.(exists("&acd")? " acd=".&acd : " acd doesn't exist")) | 491 " call Decho("fo=".&fo.(exists("&acd")? " acd=".&acd : " acd doesn't exist")) |
495 " call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap) | 492 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap) |
496 " call Dret("s:NetrwOptionRestore : win#".winnr()." buf#".bufnr("%")) | 493 " call Dret("s:NetrwOptionRestore : win#".winnr()." buf#".bufnr("%")) |
497 endfun | 494 endfun |
498 | 495 |
499 " --------------------------------------------------------------------- | 496 " --------------------------------------------------------------------- |
500 " s:NetrwSafeOptions: sets options to help netrw do its job {{{2 | 497 " s:NetrwSafeOptions: sets options to help netrw do its job {{{2 |
534 | 531 |
535 if choice == 1 | 532 if choice == 1 |
536 for dir in split(&rtp,',') | 533 for dir in split(&rtp,',') |
537 if filereadable(dir."/plugin/netrwPlugin.vim") | 534 if filereadable(dir."/plugin/netrwPlugin.vim") |
538 " call Decho("removing netrw-related files from ".dir) | 535 " call Decho("removing netrw-related files from ".dir) |
539 if s:System("delete",dir."/plugin/netrwPlugin.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/plugin/netrwPlugin.vim",55) |endif | 536 if s:NetrwDelete(dir."/plugin/netrwPlugin.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/plugin/netrwPlugin.vim",55) |endif |
540 if s:System("delete",dir."/autoload/netrwFileHandlers.vim")|call netrw#ErrorMsg(1,"unable to remove ".dir."/autoload/netrwFileHandlers.vim",55)|endif | 537 if s:NetrwDelete(dir."/autoload/netrwFileHandlers.vim")|call netrw#ErrorMsg(1,"unable to remove ".dir."/autoload/netrwFileHandlers.vim",55)|endif |
541 if s:System("delete",dir."/autoload/netrwSettings.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/autoload/netrwSettings.vim",55) |endif | 538 if s:NetrwDelete(dir."/autoload/netrwSettings.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/autoload/netrwSettings.vim",55) |endif |
542 if s:System("delete",dir."/autoload/netrw.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/autoload/netrw.vim",55) |endif | 539 if s:NetrwDelete(dir."/autoload/netrw.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/autoload/netrw.vim",55) |endif |
543 if s:System("delete",dir."/syntax/netrw.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/syntax/netrw.vim",55) |endif | 540 if s:NetrwDelete(dir."/syntax/netrw.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/syntax/netrw.vim",55) |endif |
544 if s:System("delete",dir."/syntax/netrwlist.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/syntax/netrwlist.vim",55) |endif | 541 if s:NetrwDelete(dir."/syntax/netrwlist.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/syntax/netrwlist.vim",55) |endif |
545 let diddir= dir | 542 let diddir= dir |
546 let diddel= diddel + 1 | 543 let diddel= diddel + 1 |
547 if !a:sys|break|endif | 544 if !a:sys|break|endif |
548 endif | 545 endif |
549 endfor | 546 endfor |
702 let uid_machine = g:netrw_uid .'@'. g:netrw_machine | 699 let uid_machine = g:netrw_uid .'@'. g:netrw_machine |
703 else | 700 else |
704 let uid_machine = g:netrw_machine | 701 let uid_machine = g:netrw_machine |
705 endif | 702 endif |
706 endif | 703 endif |
707 " call Decho("executing: !".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".shellescape(uid_machine.":".escape(b:netrw_fname,' ?&;')." ".tmpfile) | 704 " call Decho("executing: !".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".shellescape(uid_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1)) |
708 exe s:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".shellescape(uid_machine.":".escape(b:netrw_fname,' ?&;')." ".tmpfile) | 705 exe s:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".shellescape(uid_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1)) |
709 let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) | 706 let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) |
710 let b:netrw_lastfile = choice | 707 let b:netrw_lastfile = choice |
711 | 708 |
712 "......................................... | 709 "......................................... |
713 " ftp + <.netrc>: NetRead Method #2 {{{3 | 710 " ftp + <.netrc>: NetRead Method #2 {{{3 |
723 " call Decho("filter input: ".getline('.')) | 720 " call Decho("filter input: ".getline('.')) |
724 endif | 721 endif |
725 exe "put ='".'get \"'.netrw_fname.'\" '.tmpfile."'" | 722 exe "put ='".'get \"'.netrw_fname.'\" '.tmpfile."'" |
726 " call Decho("filter input: ".getline('.')) | 723 " call Decho("filter input: ".getline('.')) |
727 if exists("g:netrw_port") && g:netrw_port != "" | 724 if exists("g:netrw_port") && g:netrw_port != "" |
728 " call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port) | 725 " call Decho("executing: %!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine." ".g:netrw_port,1)) |
729 exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port | 726 exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine." ".g:netrw_port,1) |
730 else | 727 else |
731 " call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine) | 728 " call Decho("executing: %!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)) |
732 exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine | 729 exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1) |
733 endif | 730 endif |
734 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) | 731 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) |
735 if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying ' | 732 if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying ' |
736 let debugkeep= &debug | 733 let debugkeep = &debug |
737 setlocal debug=msg | 734 setlocal debug=msg |
738 call netrw#ErrorMsg(s:ERROR,getline(1),4) | 735 call netrw#ErrorMsg(s:ERROR,getline(1),4) |
739 let &debug= debugkeep | 736 let &debug = debugkeep |
740 endif | 737 endif |
741 call s:SaveBufVars()|bd!|call s:RestoreBufVars() | 738 call s:SaveBufVars()|bd!|call s:RestoreBufVars() |
742 let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) | 739 let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) |
743 let b:netrw_lastfile = choice | 740 let b:netrw_lastfile = choice |
744 | 741 |
804 if exists("g:netrw_port") && g:netrw_port != "" | 801 if exists("g:netrw_port") && g:netrw_port != "" |
805 let useport= " ".g:netrw_scpport." ".g:netrw_port | 802 let useport= " ".g:netrw_scpport." ".g:netrw_port |
806 else | 803 else |
807 let useport= "" | 804 let useport= "" |
808 endif | 805 endif |
809 " call Decho("exe s:netrw_silentxfer.!".g:netrw_scp_cmd.useport." ".shellescape(g:netrw_machine.":".escape(b:netrw_fname,g:netrw_fname_escape))." ".tmpfile) | 806 " call Decho("exe s:netrw_silentxfer.!".g:netrw_scp_cmd.useport." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1)) |
810 exe s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".shellescape(g:netrw_machine.":".escape(b:netrw_fname,g:netrw_fname_escape))." ".tmpfile | 807 exe s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1) |
811 let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) | 808 let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) |
812 let b:netrw_lastfile = choice | 809 let b:netrw_lastfile = choice |
813 | 810 |
814 "......................................... | 811 "......................................... |
815 " http: NetRead Method #5 (wget) {{{3 | 812 " http: NetRead Method #5 (wget) {{{3 |
821 endif | 818 endif |
822 " call Dret("netrw#NetRead :4 getcwd<".getcwd().">") | 819 " call Dret("netrw#NetRead :4 getcwd<".getcwd().">") |
823 return | 820 return |
824 endif | 821 endif |
825 | 822 |
826 let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) | |
827 if match(b:netrw_fname,"#") == -1 | 823 if match(b:netrw_fname,"#") == -1 |
828 " simple wget | 824 " using g:netrw_http_cmd (usually wget or curl) |
829 " call Decho('using simple wget (# not in b:netrw_fname<'.b:netrw_fname.">)") | 825 " call Decho('using '.g:netrw_http_cmd.' (# not in b:netrw_fname<'.b:netrw_fname.">)") |
830 " call Decho("exe ".s:netrw_silentxfer."!".g:netrw_http_cmd." ".shellescape(tmpfile)." ".shellescape("http://".g:netrw_machine.netrw_fname)) | 826 " call Decho("exe ".s:netrw_silentxfer."!".g:netrw_http_cmd." ".shellescape(tmpfile,1)." ".shellescape("http://".g:netrw_machine.netrw_fname,1)) |
831 exe s:netrw_silentxfer."!".g:netrw_http_cmd." ".shellescape(tmpfile)." ".shellescape("http://".g:netrw_machine.netrw_fname) | 827 exe s:netrw_silentxfer."!".g:netrw_http_cmd." ".shellescape(tmpfile,1)." ".shellescape("http://".g:netrw_machine.b:netrw_fname,1) |
832 let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) | 828 let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) |
833 | 829 |
834 else | 830 else |
835 " wget plus a jump to an in-page marker (ie. http://abc/def.html#aMarker) | 831 " wget/curl plus a jump to an in-page marker (ie. http://abc/def.html#aMarker) |
836 " call Decho(("wget/curl plus jump (# in b:netrw_fname<".b:netrw_fname.">)") | 832 " call Decho(("wget/curl plus jump (# in b:netrw_fname<".b:netrw_fname.">)") |
837 let netrw_html= substitute(netrw_fname,"#.*$","","") | 833 let netrw_html= substitute(b:netrw_fname,"#.*$","","") |
838 let netrw_tag = substitute(netrw_fname,"^.*#","","") | 834 let netrw_tag = substitute(b:netrw_fname,"^.*#","","") |
839 " call Decho("netrw_html<".netrw_html.">") | 835 " call Decho("netrw_html<".netrw_html.">") |
840 " call Decho("netrw_tag <".netrw_tag.">") | 836 " call Decho("netrw_tag <".netrw_tag.">") |
841 " call Decho("exe ".s:netrw_silentxfer."!".g:netrw_http_cmd." ".shellescape(tmpfile)." ".shellescape("http://".g:netrw_machine.netrw_html)) | 837 " call Decho("exe ".s:netrw_silentxfer."!".g:netrw_http_cmd." ".shellescape(tmpfile,1)." ".shellescape("http://".g:netrw_machine.netrw_html,1)) |
842 exe s:netrw_silentxfer."!".g:netrw_http_cmd." ".shellescape(tmpfile)." ".shellescape("http://".g:netrw_machine.netrw_html) | 838 exe s:netrw_silentxfer."!".g:netrw_http_cmd." ".shellescape(tmpfile,1)." ".shellescape("http://".g:netrw_machine.netrw_html,1) |
843 let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) | 839 let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) |
844 " call Decho('<\s*a\s*name=\s*"'.netrw_tag.'"/') | 840 " call Decho('<\s*a\s*name=\s*"'.netrw_tag.'"/') |
845 exe 'norm! 1G/<\s*a\s*name=\s*"'.netrw_tag.'"/'."\<CR>" | 841 exe 'norm! 1G/<\s*a\s*name=\s*"'.netrw_tag.'"/'."\<CR>" |
846 endif | 842 endif |
847 let b:netrw_lastfile = choice | 843 let b:netrw_lastfile = choice |
875 | 871 |
876 "......................................... | 872 "......................................... |
877 " rsync: NetRead Method #7 {{{3 | 873 " rsync: NetRead Method #7 {{{3 |
878 elseif b:netrw_method == 7 | 874 elseif b:netrw_method == 7 |
879 " call Decho("read via rsync (method #7)") | 875 " call Decho("read via rsync (method #7)") |
880 let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) | 876 " call Decho("exe ".s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1)) |
881 " call Decho("exe ".s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".shellescape(g:netrw_machine.":".netrw_fname)." ".tmpfile) | 877 exe s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1) |
882 exe s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".shellescape(g:netrw_machine.":".netrw_fname)." ".tmpfile | |
883 let result = s:NetrwGetFile(readcmd,tmpfile, b:netrw_method) | 878 let result = s:NetrwGetFile(readcmd,tmpfile, b:netrw_method) |
884 let b:netrw_lastfile = choice | 879 let b:netrw_lastfile = choice |
885 | 880 |
886 "......................................... | 881 "......................................... |
887 " fetch: NetRead Method #8 {{{3 | 882 " fetch: NetRead Method #8 {{{3 |
888 " fetch://[user@]host[:http]/path | 883 " fetch://[user@]host[:http]/path |
889 elseif b:netrw_method == 8 | 884 elseif b:netrw_method == 8 |
890 " call Decho("read via fetch (method #8)") | 885 " call Decho("read via fetch (method #8)") |
891 let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) | |
892 if g:netrw_fetch_cmd == "" | 886 if g:netrw_fetch_cmd == "" |
893 if !exists("g:netrw_quiet") | 887 if !exists("g:netrw_quiet") |
894 call netrw#ErrorMsg(s:ERROR,"fetch command not available",7) | 888 call netrw#ErrorMsg(s:ERROR,"fetch command not available",7) |
895 endif | 889 endif |
896 " call Dret("NetRead") | 890 " call Dret("NetRead") |
901 let netrw_option= "ftp" | 895 let netrw_option= "ftp" |
902 endif | 896 endif |
903 " call Decho("read via fetch for ".netrw_option) | 897 " call Decho("read via fetch for ".netrw_option) |
904 | 898 |
905 if exists("g:netrw_uid") && g:netrw_uid != "" && exists("s:netrw_passwd") && s:netrw_passwd != "" | 899 if exists("g:netrw_uid") && g:netrw_uid != "" && exists("s:netrw_passwd") && s:netrw_passwd != "" |
906 " call Decho("exe ".s:netrw_silentxfer."!".g:netrw_fetch_cmd." ".tmpfile." ".shellescape(netrw_option."://".g:netrw_uid.':'.s:netrw_passwd.'@'.g:netrw_machine."/".netrw_fname)) | 900 " call Decho("exe ".s:netrw_silentxfer."!".g:netrw_fetch_cmd." ".shellescape(tmpfile,1)." ".shellescape(netrw_option."://".g:netrw_uid.':'.s:netrw_passwd.'@'.g:netrw_machine."/".b:netrw_fname,1)) |
907 exe s:netrw_silentxfer."!".g:netrw_fetch_cmd." ".tmpfile." ".shellescape(netrw_option."://".g:netrw_uid.':'.s:netrw_passwd.'@'.g:netrw_machine."/".netrw_fname) | 901 exe s:netrw_silentxfer."!".g:netrw_fetch_cmd." ".shellescape(tmpfile,1)." ".shellescape(netrw_option."://".g:netrw_uid.':'.s:netrw_passwd.'@'.g:netrw_machine."/".b:netrw_fname,1) |
908 else | 902 else |
909 " call Decho("exe ".s:netrw_silentxfer."!".g:netrw_fetch_cmd." ".tmpfile." ".shellescape(netrw_option."://".g:netrw_machine."/".netrw_fname)) | 903 " call Decho("exe ".s:netrw_silentxfer."!".g:netrw_fetch_cmd." ".shellescape(tmpfile,1)." ".shellescape(netrw_option."://".g:netrw_machine."/".b:netrw_fname,1)) |
910 exe s:netrw_silentxfer."!".g:netrw_fetch_cmd." ".tmpfile." ".shellescape(netrw_option."://".g:netrw_machine."/".netrw_fname) | 904 exe s:netrw_silentxfer."!".g:netrw_fetch_cmd." ".shellescape(tmpfile,1)." ".shellescape(netrw_option."://".g:netrw_machine."/".b:netrw_fname,1) |
911 endif | 905 endif |
912 | 906 |
913 let result = s:NetrwGetFile(readcmd,tmpfile, b:netrw_method) | 907 let result = s:NetrwGetFile(readcmd,tmpfile, b:netrw_method) |
914 let b:netrw_lastfile = choice | 908 let b:netrw_lastfile = choice |
915 setlocal ro | 909 setlocal ro |
916 | 910 |
917 "......................................... | 911 "......................................... |
918 " sftp: NetRead Method #9 {{{3 | 912 " sftp: NetRead Method #9 {{{3 |
919 elseif b:netrw_method == 9 | 913 elseif b:netrw_method == 9 |
920 " call Decho("read via sftp (method #9)") | 914 " call Decho("read via sftp (method #9)") |
921 let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) | 915 " call Decho("exe ".s:netrw_silentxfer."!".g:netrw_sftp_cmd." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".tmpfile) |
922 " call Decho("exe ".s:netrw_silentxfer."!".g:netrw_sftp_cmd." ".shellescape(g:netrw_machine.":".netrw_fname)." ".tmpfile) | 916 exe s:netrw_silentxfer."!".g:netrw_sftp_cmd." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".tmpfile |
923 exe s:netrw_silentxfer."!".g:netrw_sftp_cmd." ".shellescape(g:netrw_machine.":".netrw_fname)." ".tmpfile | |
924 let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) | 917 let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) |
925 let b:netrw_lastfile = choice | 918 let b:netrw_lastfile = choice |
926 | 919 |
927 "......................................... | 920 "......................................... |
928 " Complain {{{3 | 921 " Complain {{{3 |
937 unlet b:netrw_method | 930 unlet b:netrw_method |
938 unlet b:netrw_fname | 931 unlet b:netrw_fname |
939 endif | 932 endif |
940 if s:FileReadable(tmpfile) && tmpfile !~ '.tar.bz2$' && tmpfile !~ '.tar.gz$' && tmpfile !~ '.zip' && tmpfile !~ '.tar' && readcmd != 't' | 933 if s:FileReadable(tmpfile) && tmpfile !~ '.tar.bz2$' && tmpfile !~ '.tar.gz$' && tmpfile !~ '.zip' && tmpfile !~ '.tar' && readcmd != 't' |
941 " call Decho("cleanup by deleting tmpfile<".tmpfile.">") | 934 " call Decho("cleanup by deleting tmpfile<".tmpfile.">") |
942 call s:System("delete",fnameescape(tmpfile)) | 935 call s:NetrwDelete(fnameescape(tmpfile)) |
943 endif | 936 endif |
944 call s:NetrwOptionRestore("w:") | 937 call s:NetrwOptionRestore("w:") |
945 | 938 |
946 " call Dret("netrw#NetRead :5 getcwd<".getcwd().">") | 939 " call Dret("netrw#NetRead :5 getcwd<".getcwd().">") |
947 endfun | 940 endfun |
973 " call Decho("curbufname<".curbufname.">") | 966 " call Decho("curbufname<".curbufname.">") |
974 if &binary | 967 if &binary |
975 " For binary writes, always write entire file. | 968 " For binary writes, always write entire file. |
976 " (line numbers don't really make sense for that). | 969 " (line numbers don't really make sense for that). |
977 " Also supports the writing of tar and zip files. | 970 " Also supports the writing of tar and zip files. |
978 " call Decho("(write entire file) silent exe w! ".v:cmdarg." ".tmpfile) | 971 " call Decho("(write entire file) silent exe w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile)) |
979 silent exe "w! ".v:cmdarg." ".tmpfile | 972 silent exe "w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile) |
980 elseif g:netrw_cygwin | 973 elseif g:netrw_cygwin |
981 " write (selected portion of) file to temporary | 974 " write (selected portion of) file to temporary |
982 let cygtmpfile= substitute(tmpfile,'/cygdrive/\(.\)','\1:','') | 975 let cygtmpfile= substitute(tmpfile,'/cygdrive/\(.\)','\1:','') |
983 " call Decho("(write selected portion) silent exe ".a:firstline."," . a:lastline . "w! ".v:cmdarg." ".cygtmpfile) | 976 " call Decho("(write selected portion) silent exe ".a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(cygtmpfile)) |
984 silent exe a:firstline."," . a:lastline . "w! ".v:cmdarg." ".cygtmpfile | 977 silent exe a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(cygtmpfile) |
985 else | 978 else |
986 " write (selected portion of) file to temporary | 979 " write (selected portion of) file to temporary |
987 " call Decho("(write selected portion) silent exe ".a:firstline."," . a:lastline . "w! ".v:cmdarg." ".tmpfile) | 980 " call Decho("(write selected portion) silent exe ".a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile)) |
988 silent exe a:firstline."," . a:lastline . "w! ".v:cmdarg." ".tmpfile | 981 silent exe a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile) |
989 endif | 982 endif |
990 | 983 |
991 if curbufname == "" | 984 if curbufname == "" |
992 " if the file is [No Name], and one attempts to Nwrite it, the buffer takes | 985 " if the file is [No Name], and one attempts to Nwrite it, the buffer takes |
993 " on the temporary file's name. Deletion of the temporary file during | 986 " on the temporary file's name. Deletion of the temporary file during |
1077 let uid_machine = g:netrw_uid .'@'. g:netrw_machine | 1070 let uid_machine = g:netrw_uid .'@'. g:netrw_machine |
1078 else | 1071 else |
1079 let uid_machine = g:netrw_machine | 1072 let uid_machine = g:netrw_machine |
1080 endif | 1073 endif |
1081 endif | 1074 endif |
1082 let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) | 1075 " call Decho("executing: !".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".shellescape(tmpfile,1)." ".shellescape(uid_machine.":".b:netrw_fname,1)) |
1083 " call Decho("executing: !".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".shellescape(tmpfile)." ".shellescape(uid_machine.":".netrw_fname)) | 1076 exe s:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".shellescape(tmpfile,1)." ".shellescape(uid_machine.":".b:netrw_fname,1) |
1084 exe s:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".shellescape(tmpfile)." ".shellescape(uid_machine.":".netrw_fname) | |
1085 let b:netrw_lastfile = choice | 1077 let b:netrw_lastfile = choice |
1086 | 1078 |
1087 "......................................... | 1079 "......................................... |
1088 " ftp + <.netrc>: NetWrite Method #2 {{{4 | 1080 " ftp + <.netrc>: NetWrite Method #2 {{{4 |
1089 elseif b:netrw_method == 2 | 1081 elseif b:netrw_method == 2 |
1099 " call Decho("filter input: ".getline('.')) | 1091 " call Decho("filter input: ".getline('.')) |
1100 endif | 1092 endif |
1101 exe "put ='".'put \"'.tmpfile.'\" \"'.netrw_fname.'\"'."'" | 1093 exe "put ='".'put \"'.tmpfile.'\" \"'.netrw_fname.'\"'."'" |
1102 " call Decho("filter input: ".getline('.')) | 1094 " call Decho("filter input: ".getline('.')) |
1103 if exists("g:netrw_port") && g:netrw_port != "" | 1095 if exists("g:netrw_port") && g:netrw_port != "" |
1104 " call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port) | 1096 " call Decho("executing: %!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)." ".shellescape(g:netrw_port,1)) |
1105 exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port | 1097 exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)." ".shellescape(g:netrw_port,1) |
1106 else | 1098 else |
1107 " call Decho("filter input window#".winnr()) | 1099 " call Decho("filter input window#".winnr()) |
1108 " call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine) | 1100 " call Decho("executing: %!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)) |
1109 exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine | 1101 exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1) |
1110 endif | 1102 endif |
1111 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) | 1103 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) |
1112 if getline(1) !~ "^$" | 1104 if getline(1) !~ "^$" |
1113 if !exists("g:netrw_quiet") | 1105 if !exists("g:netrw_quiet") |
1114 call netrw#ErrorMsg(s:ERROR,getline(1),14) | 1106 call netrw#ErrorMsg(s:ERROR,getline(1),14) |
1165 | 1157 |
1166 "......................................... | 1158 "......................................... |
1167 " scp: NetWrite Method #4 {{{4 | 1159 " scp: NetWrite Method #4 {{{4 |
1168 elseif b:netrw_method == 4 | 1160 elseif b:netrw_method == 4 |
1169 " call Decho("write via scp (method #4)") | 1161 " call Decho("write via scp (method #4)") |
1170 let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) | |
1171 if exists("g:netrw_port") && g:netrw_port != "" | 1162 if exists("g:netrw_port") && g:netrw_port != "" |
1172 let useport= " ".g:netrw_scpport." ".g:netrw_port | 1163 let useport= " ".g:netrw_scpport." ".fnameescape(g:netrw_port) |
1173 else | 1164 else |
1174 let useport= "" | 1165 let useport= "" |
1175 endif | 1166 endif |
1176 " call Decho("exe ".s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".shellescape(tmpfile)." ".shellescape(g:netrw_machine.":".netrw_fname)) | 1167 " call Decho("exe ".s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".shellescape(tmpfile,1)." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)) |
1177 exe s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".shellescape(tmpfile)." ".shellescape(g:netrw_machine.":".netrw_fname) | 1168 exe s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".shellescape(tmpfile,1)." ".shellescape(g:netrw_machine.":".b:netrw_fname,1) |
1178 let b:netrw_lastfile = choice | 1169 let b:netrw_lastfile = choice |
1179 | 1170 |
1180 "......................................... | 1171 "......................................... |
1181 " http: NetWrite Method #5 {{{4 | 1172 " http: NetWrite Method #5 {{{4 |
1182 elseif b:netrw_method == 5 | 1173 elseif b:netrw_method == 5 |
1213 | 1204 |
1214 "......................................... | 1205 "......................................... |
1215 " rsync: NetWrite Method #7 {{{4 | 1206 " rsync: NetWrite Method #7 {{{4 |
1216 elseif b:netrw_method == 7 | 1207 elseif b:netrw_method == 7 |
1217 " call Decho("write via rsync (method #7)") | 1208 " call Decho("write via rsync (method #7)") |
1218 let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) | 1209 " call Decho("executing: !".g:netrw_rsync_cmd." ".shellescape(tmpfile,1)." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)) |
1219 " call Decho("executing: !".g:netrw_rsync_cmd." ".tmpfile." ".g:netrw_machine.":".netrw_fname) | 1210 exe s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".shellescape(tmpfile,1)." ".shellescape(g:netrw_machine.":".b:netrw_fname,1) |
1220 exe s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".tmpfile." ".g:netrw_machine.":".netrw_fname | |
1221 let b:netrw_lastfile = choice | 1211 let b:netrw_lastfile = choice |
1222 | 1212 |
1223 "......................................... | 1213 "......................................... |
1224 " sftp: NetWrite Method #9 {{{4 | 1214 " sftp: NetWrite Method #9 {{{4 |
1225 elseif b:netrw_method == 9 | 1215 elseif b:netrw_method == 9 |
1233 new | 1223 new |
1234 setlocal ff=unix | 1224 setlocal ff=unix |
1235 put ='put \"'.escape(tmpfile,'\').'\" '.netrw_fname | 1225 put ='put \"'.escape(tmpfile,'\').'\" '.netrw_fname |
1236 " call Decho("filter input: ".getline('.')) | 1226 " call Decho("filter input: ".getline('.')) |
1237 norm! 1Gdd | 1227 norm! 1Gdd |
1238 " call Decho("executing: %!".g:netrw_sftp_cmd.' '.uid_machine) | 1228 " call Decho("executing: %!".g:netrw_sftp_cmd.' '.shellescape(uid_machine,1)) |
1239 exe s:netrw_silentxfer."%!".g:netrw_sftp_cmd.' '.uid_machine | 1229 exe s:netrw_silentxfer."%!".g:netrw_sftp_cmd.' '.shellescape(uid_machine,1) |
1240 bd! | 1230 bd! |
1241 let b:netrw_lastfile= choice | 1231 let b:netrw_lastfile= choice |
1242 | 1232 |
1243 "......................................... | 1233 "......................................... |
1244 " Complain {{{4 | 1234 " Complain {{{4 |
1249 | 1239 |
1250 " Cleanup: {{{3 | 1240 " Cleanup: {{{3 |
1251 " call Decho("cleanup") | 1241 " call Decho("cleanup") |
1252 if s:FileReadable(tmpfile) | 1242 if s:FileReadable(tmpfile) |
1253 " call Decho("tmpfile<".tmpfile."> readable, will now delete it") | 1243 " call Decho("tmpfile<".tmpfile."> readable, will now delete it") |
1254 call s:System("delete",tmpfile) | 1244 call s:NetrwDelete(tmpfile) |
1255 endif | 1245 endif |
1256 call s:NetrwOptionRestore("w:") | 1246 call s:NetrwOptionRestore("w:") |
1257 | 1247 |
1258 if a:firstline == 1 && a:lastline == line("$") | 1248 if a:firstline == 1 && a:lastline == line("$") |
1259 " restore modifiability; usually equivalent to set nomod | 1249 " restore modifiability; usually equivalent to set nomod |
1310 fun! s:NetrwGetFile(readcmd, tfile, method) | 1300 fun! s:NetrwGetFile(readcmd, tfile, method) |
1311 " call Dfunc("NetrwGetFile(readcmd<".a:readcmd.">,tfile<".a:tfile."> method<".a:method.">)") | 1301 " call Dfunc("NetrwGetFile(readcmd<".a:readcmd.">,tfile<".a:tfile."> method<".a:method.">)") |
1312 | 1302 |
1313 " readcmd=='t': simply do nothing | 1303 " readcmd=='t': simply do nothing |
1314 if a:readcmd == 't' | 1304 if a:readcmd == 't' |
1315 " call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap) | 1305 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap) |
1316 " call Dret("NetrwGetFile : skip read of <".a:tfile.">") | 1306 " call Dret("NetrwGetFile : skip read of <".a:tfile.">") |
1317 return | 1307 return |
1318 endif | 1308 endif |
1319 | 1309 |
1320 " get name of remote filename (ie. url and all) | 1310 " get name of remote filename (ie. url and all) |
1334 if g:netrw_cygwin | 1324 if g:netrw_cygwin |
1335 let tfile= substitute(a:tfile,'/cygdrive/\(.\)','\1:','') | 1325 let tfile= substitute(a:tfile,'/cygdrive/\(.\)','\1:','') |
1336 else | 1326 else |
1337 let tfile= a:tfile | 1327 let tfile= a:tfile |
1338 endif | 1328 endif |
1339 " " call Decho("exe silent! keepalt file ".tfile) | 1329 " call Decho("exe silent! keepalt file ".fnameescape(tfile)) |
1340 exe "silent! keepalt file ".tfile | 1330 exe "silent! keepalt file ".fnameescape(tfile) |
1341 | 1331 |
1342 " edit temporary file (ie. read the temporary file in) | 1332 " edit temporary file (ie. read the temporary file in) |
1343 if rfile =~ '\.zip$' | 1333 if rfile =~ '\.zip$' |
1344 " call Decho("handling remote zip file with zip#Browse(tfile<".tfile.">)") | 1334 " call Decho("handling remote zip file with zip#Browse(tfile<".tfile.">)") |
1345 call zip#Browse(tfile) | 1335 call zip#Browse(tfile) |
1356 " call Decho("edit temporary file") | 1346 " call Decho("edit temporary file") |
1357 e! | 1347 e! |
1358 endif | 1348 endif |
1359 | 1349 |
1360 " rename buffer back to remote filename | 1350 " rename buffer back to remote filename |
1361 " call Decho("exe silent! keepalt file ".escape(rfile,' ')) | 1351 " call Decho("exe silent! keepalt file ".fnameescape(rfile)) |
1362 exe "silent! keepalt file ".escape(rfile,' ') | 1352 exe "silent! keepalt file ".fnameescape(rfile) |
1363 if a:method == 5 | 1353 if a:method == 5 |
1364 set ft=html | 1354 set ft=html |
1365 else | 1355 else |
1366 filetype detect | 1356 filetype detect |
1367 endif | 1357 endif |
1372 elseif s:FileReadable(a:tfile) | 1362 elseif s:FileReadable(a:tfile) |
1373 " read file after current line | 1363 " read file after current line |
1374 " call Decho("read file<".a:tfile."> after current line") | 1364 " call Decho("read file<".a:tfile."> after current line") |
1375 let curline = line(".") | 1365 let curline = line(".") |
1376 let lastline= line("$") | 1366 let lastline= line("$") |
1377 " call Decho("exe<".a:readcmd." ".v:cmdarg." ".a:tfile."> line#".curline) | 1367 " call Decho("exe<".a:readcmd." ".fnameescape(v:cmdarg)." ".fnameescape(a:tfile)."> line#".curline) |
1378 exe a:readcmd." ".v:cmdarg." ".a:tfile | 1368 exe a:readcmd." ".fnameescape(v:cmdarg)." ".fnameescape(a:tfile) |
1379 let line1= curline + 1 | 1369 let line1= curline + 1 |
1380 let line2= line("$") - lastline + 1 | 1370 let line2= line("$") - lastline + 1 |
1381 | 1371 |
1382 else | 1372 else |
1383 " not readable | 1373 " not readable |
1384 " call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap) | 1374 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap) |
1385 " call Decho("tfile<".a:tfile."> not readable") | 1375 " call Decho("tfile<".a:tfile."> not readable") |
1386 call netrw#ErrorMsg(s:WARNING,"file <".a:tfile."> not readable",9) | 1376 call netrw#ErrorMsg(s:WARNING,"file <".a:tfile."> not readable",9) |
1387 " call Dret("NetrwGetFile : tfile<".a:tfile."> not readable") | 1377 " call Dret("NetrwGetFile : tfile<".a:tfile."> not readable") |
1388 return | 1378 return |
1389 endif | 1379 endif |
1404 " call Decho("readcmd<".a:readcmd."> cmdarg<".v:cmdarg."> tfile<".a:tfile."> readable=".s:FileReadable(a:tfile)) | 1394 " call Decho("readcmd<".a:readcmd."> cmdarg<".v:cmdarg."> tfile<".a:tfile."> readable=".s:FileReadable(a:tfile)) |
1405 | 1395 |
1406 " make sure file is being displayed | 1396 " make sure file is being displayed |
1407 " redraw! | 1397 " redraw! |
1408 | 1398 |
1409 " call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap) | 1399 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap) |
1410 " call Dret("NetrwGetFile") | 1400 " call Dret("NetrwGetFile") |
1411 endfun | 1401 endfun |
1412 | 1402 |
1413 " ------------------------------------------------------------------------ | 1403 " ------------------------------------------------------------------------ |
1414 " s:NetrwMethod: determine method of transfer {{{2 | 1404 " s:NetrwMethod: determine method of transfer {{{2 |
1702 nnoremap <buffer> <silent> t :call <SID>NetrwSplit(4)<cr> | 1692 nnoremap <buffer> <silent> t :call <SID>NetrwSplit(4)<cr> |
1703 nnoremap <buffer> <silent> u :<c-u>call <SID>NetrwBookmarkDir(4,expand("%"))<cr> | 1693 nnoremap <buffer> <silent> u :<c-u>call <SID>NetrwBookmarkDir(4,expand("%"))<cr> |
1704 nnoremap <buffer> <silent> U :<c-u>call <SID>NetrwBookmarkDir(5,expand("%"))<cr> | 1694 nnoremap <buffer> <silent> U :<c-u>call <SID>NetrwBookmarkDir(5,expand("%"))<cr> |
1705 nnoremap <buffer> <silent> v :call <SID>NetrwSplit(5)<cr> | 1695 nnoremap <buffer> <silent> v :call <SID>NetrwSplit(5)<cr> |
1706 nnoremap <buffer> <silent> x :call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),0),0)"<cr> | 1696 nnoremap <buffer> <silent> x :call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),0),0)"<cr> |
1697 nnoremap <buffer> <silent> % :call <SID>NetrwOpenFile(1)<cr> | |
1707 if !hasmapto('<Plug>NetrwHideEdit') | 1698 if !hasmapto('<Plug>NetrwHideEdit') |
1708 nmap <buffer> <unique> <c-h> <Plug>NetrwHideEdit | 1699 nmap <buffer> <unique> <c-h> <Plug>NetrwHideEdit |
1709 endif | 1700 endif |
1710 nnoremap <buffer> <silent> <Plug>NetrwHideEdit :call <SID>NetrwHideEdit(1)<cr> | 1701 nnoremap <buffer> <silent> <Plug>NetrwHideEdit :call <SID>NetrwHideEdit(1)<cr> |
1711 if !hasmapto('<Plug>NetrwRefresh') | 1702 if !hasmapto('<Plug>NetrwRefresh') |
1773 nnoremap <buffer> <silent> t :call <SID>NetrwSplit(1)<cr> | 1764 nnoremap <buffer> <silent> t :call <SID>NetrwSplit(1)<cr> |
1774 nnoremap <buffer> <silent> u :<c-u>call <SID>NetrwBookmarkDir(4,b:netrw_curdir)<cr> | 1765 nnoremap <buffer> <silent> u :<c-u>call <SID>NetrwBookmarkDir(4,b:netrw_curdir)<cr> |
1775 nnoremap <buffer> <silent> U :<c-u>call <SID>NetrwBookmarkDir(5,b:netrw_curdir)<cr> | 1766 nnoremap <buffer> <silent> U :<c-u>call <SID>NetrwBookmarkDir(5,b:netrw_curdir)<cr> |
1776 nnoremap <buffer> <silent> v :call <SID>NetrwSplit(2)<cr> | 1767 nnoremap <buffer> <silent> v :call <SID>NetrwSplit(2)<cr> |
1777 nnoremap <buffer> <silent> x :call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()),1)<cr> | 1768 nnoremap <buffer> <silent> x :call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()),1)<cr> |
1769 nnoremap <buffer> <silent> % :call <SID>NetrwOpenFile(0)<cr> | |
1778 if !hasmapto('<Plug>NetrwHideEdit') | 1770 if !hasmapto('<Plug>NetrwHideEdit') |
1779 nmap <buffer> <c-h> <Plug>NetrwHideEdit | 1771 nmap <buffer> <c-h> <Plug>NetrwHideEdit |
1780 endif | 1772 endif |
1781 nnoremap <buffer> <silent> <Plug>NetrwHideEdit :call <SID>NetrwHideEdit(0)<cr> | 1773 nnoremap <buffer> <silent> <Plug>NetrwHideEdit :call <SID>NetrwHideEdit(0)<cr> |
1782 if !hasmapto('<Plug>NetrwRefresh') | 1774 if !hasmapto('<Plug>NetrwRefresh') |
1795 exe 'nnoremap <buffer> <silent> d :call <SID>NetrwMakeDir("'.s:user.s:machine.'")<cr>' | 1787 exe 'nnoremap <buffer> <silent> d :call <SID>NetrwMakeDir("'.s:user.s:machine.'")<cr>' |
1796 exe 'nnoremap <buffer> <silent> D :call <SID>NetrwRemoteRm("'.s:user.s:machine.'","'.s:path.'")<cr>' | 1788 exe 'nnoremap <buffer> <silent> D :call <SID>NetrwRemoteRm("'.s:user.s:machine.'","'.s:path.'")<cr>' |
1797 exe 'vnoremap <buffer> <silent> D :call <SID>NetrwRemoteRm("'.s:user.s:machine.'","'.s:path.'")<cr>' | 1789 exe 'vnoremap <buffer> <silent> D :call <SID>NetrwRemoteRm("'.s:user.s:machine.'","'.s:path.'")<cr>' |
1798 exe 'nnoremap <buffer> <silent> R :call <SID>NetrwRemoteRename("'.s:user.s:machine.'","'.s:path.'")<cr>' | 1790 exe 'nnoremap <buffer> <silent> R :call <SID>NetrwRemoteRename("'.s:user.s:machine.'","'.s:path.'")<cr>' |
1799 exe 'vnoremap <buffer> <silent> R :call <SID>NetrwRemoteRename("'.s:user.s:machine.'","'.s:path.'")<cr>' | 1791 exe 'vnoremap <buffer> <silent> R :call <SID>NetrwRemoteRename("'.s:user.s:machine.'","'.s:path.'")<cr>' |
1800 nnoremap <buffer> <F1> :he netrw-browse-cmds<cr> | 1792 nnoremap <buffer> <F1> :he netrw-quickhelp<cr> |
1801 endif | 1793 endif |
1802 call s:SetRexDir(a:islocal,b:netrw_curdir) | 1794 call s:SetRexDir(a:islocal,b:netrw_curdir) |
1803 " call Dret("s:BrowserMaps") | 1795 " call Dret("s:BrowserMaps") |
1804 endfun | 1796 endfun |
1805 | 1797 |
1919 " call Decho("setlocal ma noro") | 1911 " call Decho("setlocal ma noro") |
1920 %d | 1912 %d |
1921 setlocal nomod | 1913 setlocal nomod |
1922 " call Decho("setlocal nomod") | 1914 " call Decho("setlocal nomod") |
1923 endif | 1915 endif |
1924 " call Decho("exe e! ".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}) | 1916 " " call Decho("exe e! ".fnameescape(g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT})) |
1925 exe "e! ".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT} | 1917 exe "e! ".fnameescape(g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}) |
1926 else | 1918 else |
1927 let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT + 1 ) % g:netrw_dirhistmax | 1919 let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT + 1 ) % g:netrw_dirhistmax |
1928 echo "Sorry, no predecessor directory exists yet" | 1920 echo "Sorry, no predecessor directory exists yet" |
1929 endif | 1921 endif |
1930 | 1922 |
1940 %d | 1932 %d |
1941 " call Decho("removed all lines from buffer (%d)") | 1933 " call Decho("removed all lines from buffer (%d)") |
1942 setlocal nomod | 1934 setlocal nomod |
1943 " call Decho("setlocal nomod") | 1935 " call Decho("setlocal nomod") |
1944 endif | 1936 endif |
1945 " call Decho("exe e! ".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}) | 1937 " call Decho("exe e! ".fnameescape(g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT})) |
1946 exe "e! ".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT} | 1938 exe "e! ".fnameescape(g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}) |
1947 else | 1939 else |
1948 let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT - 1 ) % g:netrw_dirhistmax | 1940 let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT - 1 ) % g:netrw_dirhistmax |
1949 if g:NETRW_DIRHIST_CNT < 0 | 1941 if g:NETRW_DIRHIST_CNT < 0 |
1950 let g:NETRW_DIRHIST_CNT= g:NETRW_DIRHIST_CNT + g:netrw_dirhistmax | 1942 let g:NETRW_DIRHIST_CNT= g:NETRW_DIRHIST_CNT + g:netrw_dirhistmax |
1951 endif | 1943 endif |
2006 " call Decho("tab#".tabpagenr()." win#".winnr()) | 1998 " call Decho("tab#".tabpagenr()." win#".winnr()) |
2007 " call Dredir("ls!") | 1999 " call Dredir("ls!") |
2008 | 2000 |
2009 if exists("s:netrw_skipbrowse") | 2001 if exists("s:netrw_skipbrowse") |
2010 unlet s:netrw_skipbrowse | 2002 unlet s:netrw_skipbrowse |
2011 " call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap) | 2003 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap) |
2012 " call Dret("s:NetrwBrowse : s:netrw_skipbrowse=".s:netrw_skipbrowse) | 2004 " call Dret("s:NetrwBrowse : s:netrw_skipbrowse=".s:netrw_skipbrowse) |
2013 return | 2005 return |
2014 endif | 2006 endif |
2015 if !exists("*shellescape") | 2007 if !exists("*shellescape") |
2016 call netrw#ErrorMsg(s:ERROR,"netrw can't run -- your vim is missing shellescape()",69) | 2008 call netrw#ErrorMsg(s:ERROR,"netrw can't run -- your vim is missing shellescape()",69) |
2053 mark ' | 2045 mark ' |
2054 call s:NetrwEnew(a:dirname) | 2046 call s:NetrwEnew(a:dirname) |
2055 setlocal ma noro | 2047 setlocal ma noro |
2056 " call Decho("setlocal ma noro") | 2048 " call Decho("setlocal ma noro") |
2057 let b:netrw_curdir= a:dirname | 2049 let b:netrw_curdir= a:dirname |
2058 " call Decho("exe silent! keepalt file ".s:method."://".s:user.s:machine."/".fnameescape(s:path)." (bt=".&bt.")") | 2050 " call Decho("exe silent! keepalt file ".fnameescape(s:method."://".s:user.s:machine."/".s:path)." (bt=".&bt.")") |
2059 exe "silent! keepalt file ".s:method."://".s:user.s:machine."/".fnameescape(s:path) | 2051 exe "silent! keepalt file ".fnameescape(s:method."://".s:user.s:machine."/".s:path) |
2060 exe "silent keepalt doau BufReadPre ".s:fname | 2052 exe "silent keepalt doau BufReadPre ".fnameescape(s:fname) |
2061 silent call netrw#NetRead(2,s:method."://".s:user.s:machine."/".s:path) | 2053 silent call netrw#NetRead(2,s:method."://".s:user.s:machine."/".s:path) |
2062 if s:path !~ '.tar.bz2$' && s:path !~ '.tar.gz' | 2054 if s:path !~ '.tar.bz2$' && s:path !~ '.tar.gz' |
2063 " netrw.vim and tar.vim have already handled decompression of the tarball; avoiding gzip.vim error | 2055 " netrw.vim and tar.vim have already handled decompression of the tarball; avoiding gzip.vim error |
2064 exe "silent keepalt doau BufReadPost ".s:fname | 2056 exe "silent keepalt doau BufReadPost ".fnameescape(s:fname) |
2065 endif | 2057 endif |
2066 | 2058 |
2067 " save certain window-oriented variables into buffer-oriented variables {{{3 | 2059 " save certain window-oriented variables into buffer-oriented variables {{{3 |
2068 call s:SetBufWinVars() | 2060 call s:SetBufWinVars() |
2069 call s:NetrwOptionRestore("w:") | 2061 call s:NetrwOptionRestore("w:") |
2070 setlocal ma nomod | 2062 setlocal ma nomod |
2071 | 2063 |
2072 " call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap) | 2064 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap) |
2073 " call Dret("s:NetrwBrowse : file<".s:fname.">") | 2065 " call Dret("s:NetrwBrowse : file<".s:fname.">") |
2074 return | 2066 return |
2075 endif | 2067 endif |
2076 | 2068 |
2077 " use buffer-oriented WinVars if buffer ones exist but window ones don't {{{3 | 2069 " use buffer-oriented WinVars if buffer ones exist but window ones don't {{{3 |
2097 2match none | 2089 2match none |
2098 endif | 2090 endif |
2099 if reusing | 2091 if reusing |
2100 call s:NetrwOptionRestore("w:") | 2092 call s:NetrwOptionRestore("w:") |
2101 setlocal noma nomod nowrap | 2093 setlocal noma nomod nowrap |
2102 " call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap) | 2094 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap) |
2103 " call Dret("s:NetrwBrowse : re-using buffer") | 2095 " call Dret("s:NetrwBrowse : re-using buffer") |
2104 return | 2096 return |
2105 endif | 2097 endif |
2106 | 2098 |
2107 " set b:netrw_curdir to the new directory name {{{3 | 2099 " set b:netrw_curdir to the new directory name {{{3 |
2148 let b:netrw_curdir= w:netrw_prvdir | 2140 let b:netrw_curdir= w:netrw_prvdir |
2149 else | 2141 else |
2150 call s:NetrwOptionRestore("w:") | 2142 call s:NetrwOptionRestore("w:") |
2151 setlocal noma nomod nowrap | 2143 setlocal noma nomod nowrap |
2152 let b:netrw_curdir= dirname | 2144 let b:netrw_curdir= dirname |
2153 " call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap) | 2145 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap) |
2154 " call Dret("s:NetrwBrowse : reusing buffer#".(exists("bufnum")? bufnum : 'N/A')."<".dirname."> getcwd<".getcwd().">") | 2146 " call Dret("s:NetrwBrowse : reusing buffer#".(exists("bufnum")? bufnum : 'N/A')."<".dirname."> getcwd<".getcwd().">") |
2155 return | 2147 return |
2156 endif | 2148 endif |
2157 endtry | 2149 endtry |
2158 endif | 2150 endif |
2186 if !exists("g:netrw_quiet") | 2178 if !exists("g:netrw_quiet") |
2187 call netrw#ErrorMsg(s:ERROR,"netrw doesn't understand your dirname<".dirname.">",20) | 2179 call netrw#ErrorMsg(s:ERROR,"netrw doesn't understand your dirname<".dirname.">",20) |
2188 endif | 2180 endif |
2189 call s:NetrwOptionRestore("w:") | 2181 call s:NetrwOptionRestore("w:") |
2190 setlocal noma nomod nowrap | 2182 setlocal noma nomod nowrap |
2191 " call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap) | 2183 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap) |
2192 " call Dret("s:NetrwBrowse : badly formatted dirname<".dirname.">") | 2184 " call Dret("s:NetrwBrowse : badly formatted dirname<".dirname.">") |
2193 return | 2185 return |
2194 endif | 2186 endif |
2195 let b:netrw_curdir= dirname | 2187 let b:netrw_curdir= dirname |
2196 " call Decho("b:netrw_curdir<".b:netrw_curdir."> (remote)") | 2188 " call Decho("b:netrw_curdir<".b:netrw_curdir."> (remote)") |
2200 " Directory Listing: {{{3 | 2192 " Directory Listing: {{{3 |
2201 " ----------------------- | 2193 " ----------------------- |
2202 call s:BrowserMaps(a:islocal) | 2194 call s:BrowserMaps(a:islocal) |
2203 call s:PerformListing(a:islocal) | 2195 call s:PerformListing(a:islocal) |
2204 | 2196 |
2205 " call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap) | 2197 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap) |
2206 " call Dret("s:NetrwBrowse : did PerformListing") | 2198 " call Dret("s:NetrwBrowse : did PerformListing") |
2207 return | 2199 return |
2208 endfun | 2200 endfun |
2209 | 2201 |
2210 " --------------------------------------------------------------------- | 2202 " --------------------------------------------------------------------- |
2297 | 2289 |
2298 " call Decho(" findbuf1: bufnum=bufnr('".dirname."')=".bufnum." bufname(".bufnum.")<".bufname(bufnum)."> (initial)") | 2290 " call Decho(" findbuf1: bufnum=bufnr('".dirname."')=".bufnum." bufname(".bufnum.")<".bufname(bufnum)."> (initial)") |
2299 " note: !~ was used just below, but that means using ../ to go back would match (ie. abc/def/ and abc/ matches) | 2291 " note: !~ was used just below, but that means using ../ to go back would match (ie. abc/def/ and abc/ matches) |
2300 if bufnum > 0 && bufname(bufnum) != dirname && bufname(bufnum) != '.' | 2292 if bufnum > 0 && bufname(bufnum) != dirname && bufname(bufnum) != '.' |
2301 " handle approximate matches | 2293 " handle approximate matches |
2302 " call Decho(" handling approx match: bufnum#%d<".bufname(bufnum)."> approx= dirname<".dirname.">") | 2294 " call Decho(" handling approx match: bufnum#%d<".bufname(bufnum)."> approx=dirname<".dirname.">") |
2303 let ibuf = 1 | 2295 let ibuf = 1 |
2304 let buflast = bufnr("$") | 2296 let buflast = bufnr("$") |
2305 " call Decho(" findbuf2: buflast=".buflast) | 2297 " call Decho(" findbuf2: buflast=".buflast) |
2306 while ibuf <= buflast | 2298 while ibuf <= buflast |
2307 let bname= substitute(bufname(ibuf),'\\','/','g') | 2299 let bname= substitute(bufname(ibuf),'\\','/','g') |
2300 let bname= substitute(bname,'.\zs/$','','') | |
2308 " call Decho(" findbuf3: dirname<".dirname."> bufname(".ibuf.")<".bname.">") | 2301 " call Decho(" findbuf3: dirname<".dirname."> bufname(".ibuf.")<".bname.">") |
2309 if bname != '' && bname !~ '/' && dirname =~ '/'.bname.'/\=$' | break | endif | 2302 if bname != '' && dirname =~ '/'.bname.'/\=$' | break | endif |
2310 if bname =~ '^'.dirname.'/\=$' | break | endif | 2303 if bname =~ '^'.dirname.'/\=$' | break | endif |
2311 if dirname =~ '^'.bname.'/$' | break | endif | 2304 if dirname =~ '^'.bname.'/$' | break | endif |
2312 let ibuf= ibuf + 1 | 2305 let ibuf= ibuf + 1 |
2313 endwhile | 2306 endwhile |
2314 if ibuf > buflast | 2307 if ibuf > buflast |
2334 let s:netrw_treelistnum= 1 | 2327 let s:netrw_treelistnum= 1 |
2335 else | 2328 else |
2336 let s:netrw_treelistnum= s:netrw_treelistnum + 1 | 2329 let s:netrw_treelistnum= s:netrw_treelistnum + 1 |
2337 endif | 2330 endif |
2338 let w:netrw_treebufnr= bufnr("%") | 2331 let w:netrw_treebufnr= bufnr("%") |
2339 " call Decho(" exe silent! keepalt file NetrwTreeListing ".s:netrw_treelistnum) | 2332 " call Decho(" exe silent! keepalt file NetrwTreeListing ".fnameescape(s:netrw_treelistnum)) |
2340 exe 'silent! keepalt file NetrwTreeListing\ '.s:netrw_treelistnum | 2333 exe 'silent! keepalt file NetrwTreeListing\ '.fnameescape(s:netrw_treelistnum) |
2341 nnoremap <silent> <buffer> [ :silent call <SID>TreeListMove('[')<cr> | 2334 nnoremap <silent> <buffer> [ :silent call <SID>TreeListMove('[')<cr> |
2342 nnoremap <silent> <buffer> ] :silent call <SID>TreeListMove(']')<cr> | 2335 nnoremap <silent> <buffer> ] :silent call <SID>TreeListMove(']')<cr> |
2343 nnoremap <silent> <buffer> [[ :silent call <SID>TreeListMove('[')<cr> | 2336 nnoremap <silent> <buffer> [[ :silent call <SID>TreeListMove('[')<cr> |
2344 nnoremap <silent> <buffer> ]] :silent call <SID>TreeListMove(']')<cr> | 2337 nnoremap <silent> <buffer> ]] :silent call <SID>TreeListMove(']')<cr> |
2345 " call Decho(" tree listing#".s:netrw_treelistnum." bufnr=".w:netrw_treebufnr) | 2338 " call Decho(" tree listing#".s:netrw_treelistnum." bufnr=".w:netrw_treebufnr) |
2346 else | 2339 else |
2347 " let v:errmsg= "" " Decho | 2340 " let v:errmsg= "" " Decho |
2348 let escdirname= fnameescape(dirname) | 2341 let escdirname= fnameescape(dirname) |
2349 " call Decho(" errmsg<".v:errmsg."> bufnr(".escdirname.")=".bufnr(escdirname)."<".bufname(bufnr(escdirname)).">") | 2342 " call Decho(" errmsg<".v:errmsg."> bufnr(".escdirname.")=".bufnr(escdirname)."<".bufname(bufnr(escdirname)).">") |
2350 " call Decho(' exe silent! keepalt file '.escdirname) | 2343 " call Decho(' exe silent! keepalt file '.fnameescape(escdirname)) |
2351 exe 'silent! keepalt file '.escdirname | 2344 exe 'silent! keepalt file '.fnameescape(escdirname) |
2352 " call Decho(" errmsg<".v:errmsg."> bufnr(".escdirname.")=".bufnr(escdirname)."<".bufname(bufnr(escdirname)).">") | 2345 " call Decho(" errmsg<".v:errmsg."> bufnr(".escdirname.")=".bufnr(escdirname)."<".bufname(bufnr(escdirname)).">") |
2353 endif | 2346 endif |
2354 " call Decho(" named enew buffer#".bufnr("%")."<".bufname("%").">") | 2347 " call Decho(" named enew buffer#".bufnr("%")."<".bufname("%").">") |
2355 | 2348 |
2356 else " Re-use the buffer | 2349 else " Re-use the buffer |
2363 else | 2356 else |
2364 " call Decho(" reusing buffer#".bufnum."<".((bufnum > 0)? bufname(bufnum) : "")."> using: b ".bufnum) | 2357 " call Decho(" reusing buffer#".bufnum."<".((bufnum > 0)? bufname(bufnum) : "")."> using: b ".bufnum) |
2365 exe "b ".bufnum | 2358 exe "b ".bufnum |
2366 endif | 2359 endif |
2367 if bufname("%") == '.' | 2360 if bufname("%") == '.' |
2368 exe "silent! keepalt file ".escape(getcwd(),' ') | 2361 " call Decho("exe silent! keepalt file ".fnameescape(getcwd())) |
2362 exe "silent! keepalt file ".fnameescape(getcwd()) | |
2369 endif | 2363 endif |
2370 let &ei= eikeep | 2364 let &ei= eikeep |
2371 if line("$") <= 1 | 2365 if line("$") <= 1 |
2372 call s:NetrwListSettings(a:islocal) | 2366 call s:NetrwListSettings(a:islocal) |
2373 " call Dret("s:NetrwGetBuffer 0 : re-using buffer#".bufnr("%").", but its empty, so refresh it") | 2367 " call Dret("s:NetrwGetBuffer 0 : re-using buffer#".bufnr("%").", but its empty, so refresh it") |
2391 " med 1 D H | 2385 " med 1 D H |
2392 " fast 2 H H | 2386 " fast 2 H H |
2393 " call Decho("--do netrw settings: make this buffer not-a-file, modifiable, not line-numbered, etc--") | 2387 " call Decho("--do netrw settings: make this buffer not-a-file, modifiable, not line-numbered, etc--") |
2394 let fname= expand("%") | 2388 let fname= expand("%") |
2395 call s:NetrwListSettings(a:islocal) | 2389 call s:NetrwListSettings(a:islocal) |
2396 exe "keepalt file ".escape(fname,' ') | 2390 " call Decho("exe keepalt file ".fnameescape(fname)) |
2391 exe "keepalt file ".fnameescape(fname) | |
2397 | 2392 |
2398 " delete all lines from buffer {{{3 | 2393 " delete all lines from buffer {{{3 |
2399 " call Decho("--delete all lines from buffer--") | 2394 " call Decho("--delete all lines from buffer--") |
2400 " call Decho(" clear buffer<".expand("%")."> with :%d") | 2395 " call Decho(" clear buffer<".expand("%")."> with :%d") |
2401 keepalt silent! %d | 2396 keepalt silent! %d |
2500 else | 2495 else |
2501 call cursor(line("."),filestart+1) | 2496 call cursor(line("."),filestart+1) |
2502 norm! ma | 2497 norm! ma |
2503 endif | 2498 endif |
2504 let rega= @a | 2499 let rega= @a |
2505 call cursor(line("."),filestart+b:netrw_cpf+1) | 2500 let eofname= filestart + b:netrw_cpf + 1 |
2506 norm! "ay`a | 2501 if eofname <= col("$") |
2502 call cursor(line("."),filestart+b:netrw_cpf+1) | |
2503 norm! "ay`a | |
2504 else | |
2505 norm! "ay$ | |
2506 endif | |
2507 let dirname = @a | 2507 let dirname = @a |
2508 let @a = rega | 2508 let @a = rega |
2509 " call Decho("2: dirname<".dirname.">") | 2509 " call Decho("2: dirname<".dirname.">") |
2510 let dirname= substitute(dirname,'\s\+$','','e') | 2510 let dirname= substitute(dirname,'\s\+$','','e') |
2511 " call Decho("3: dirname<".dirname.">") | 2511 " call Decho("3: dirname<".dirname.">") |
2524 " --------------------------------------------------------------------- | 2524 " --------------------------------------------------------------------- |
2525 " s:NetrwListSettings: {{{2 | 2525 " s:NetrwListSettings: {{{2 |
2526 fun! s:NetrwListSettings(islocal) | 2526 fun! s:NetrwListSettings(islocal) |
2527 " call Dfunc("s:NetrwListSettings(islocal=".a:islocal.")") | 2527 " call Dfunc("s:NetrwListSettings(islocal=".a:islocal.")") |
2528 let fname= bufname("%") | 2528 let fname= bufname("%") |
2529 " call Decho("setlocal bt=nofile nobl ma nonu nowrap noro") | |
2529 setlocal bt=nofile nobl ma nonu nowrap noro | 2530 setlocal bt=nofile nobl ma nonu nowrap noro |
2530 " call Decho("setlocal bt=nofile nobl ma nonu nowrap noro") | 2531 " call Decho("exe keepalt file ".fnameescape(fname)) |
2531 exe "keepalt file ".escape(fname,' ') | 2532 exe "keepalt file ".fnameescape(fname) |
2532 if g:netrw_use_noswf | 2533 if g:netrw_use_noswf |
2533 setlocal noswf | 2534 setlocal noswf |
2534 endif | 2535 endif |
2535 " call Dredir("ls!") | 2536 " call Dredir("ls!") |
2536 " call Decho("exe setlocal ts=".g:netrw_maxfilenamelen) | 2537 " call Decho("exe setlocal ts=".g:netrw_maxfilenamelen) |
2640 let histcnt = 0 | 2641 let histcnt = 0 |
2641 while ( first || cnt != g:NETRW_DIRHIST_CNT ) | 2642 while ( first || cnt != g:NETRW_DIRHIST_CNT ) |
2642 let histcnt = histcnt + 1 | 2643 let histcnt = histcnt + 1 |
2643 let priority = g:NETRW_DIRHIST_CNT + histcnt | 2644 let priority = g:NETRW_DIRHIST_CNT + histcnt |
2644 if exists("g:NETRW_DIRHIST_{cnt}") | 2645 if exists("g:NETRW_DIRHIST_{cnt}") |
2645 let bmdir= escape(g:NETRW_DIRHIST_{cnt},'. ') | 2646 let bmdir= escape(g:NETRW_DIRHIST_{cnt},'/&? ') |
2646 " call Decho('silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.bmdir.' :e '.bmdir) | 2647 " call Decho('silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.bmdir.' :e '.bmdir) |
2647 exe 'silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.bmdir.' :e '.bmdir."\<cr>" | 2648 exe 'silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.bmdir.' :e '.bmdir."\<cr>" |
2648 endif | 2649 endif |
2649 let first = 0 | 2650 let first = 0 |
2650 let cnt = ( cnt - 1 ) % g:netrw_dirhistmax | 2651 let cnt = ( cnt - 1 ) % g:netrw_dirhistmax |
2716 let dirname= s:ComposePath(dirname,newdir) | 2717 let dirname= s:ComposePath(dirname,newdir) |
2717 endif | 2718 endif |
2718 " call Decho("handling a file: dirname<".dirname."> (a:0=".a:0.")") | 2719 " call Decho("handling a file: dirname<".dirname."> (a:0=".a:0.")") |
2719 " this lets NetrwBrowseX avoid the edit | 2720 " this lets NetrwBrowseX avoid the edit |
2720 if a:0 < 1 | 2721 if a:0 < 1 |
2721 " call Decho("dirname<".dirname."> netrw_cd_escape<".g:netrw_cd_escape."> browse_split=".g:netrw_browse_split) | |
2722 " call Decho("set up windows for editing<".fnameescape(dirname)."> didsplit=".(exists("s:didsplit")? s:didsplit : "doesn't exist")) | 2722 " call Decho("set up windows for editing<".fnameescape(dirname)."> didsplit=".(exists("s:didsplit")? s:didsplit : "doesn't exist")) |
2723 call s:NetrwOptionRestore("s:") | 2723 call s:NetrwOptionRestore("s:") |
2724 if !exists("s:didsplit") | 2724 if !exists("s:didsplit") |
2725 if g:netrw_browse_split == 1 | 2725 if g:netrw_browse_split == 1 |
2726 new | 2726 new |
2898 " (lower case the extension, make a local copy of a remote file) | 2898 " (lower case the extension, make a local copy of a remote file) |
2899 let exten= substitute(a:fname,'.*\.\(.\{-}\)','\1','e') | 2899 let exten= substitute(a:fname,'.*\.\(.\{-}\)','\1','e') |
2900 if has("win32") || has("win95") || has("win64") || has("win16") | 2900 if has("win32") || has("win95") || has("win64") || has("win16") |
2901 let exten= substitute(exten,'^.*$','\L&\E','') | 2901 let exten= substitute(exten,'^.*$','\L&\E','') |
2902 endif | 2902 endif |
2903 let fname= escape(a:fname,"%#") | |
2904 " call Decho("fname<".fname."> after escape()") | |
2905 | 2903 |
2906 " seems kde systems often have gnome-open due to dependencies, even though | 2904 " seems kde systems often have gnome-open due to dependencies, even though |
2907 " gnome-open's subsidiary display tools are largely absent. Kde systems | 2905 " gnome-open's subsidiary display tools are largely absent. Kde systems |
2908 " usually have "kdeinit" running, though... (tnx Mikolaj Machowski) | 2906 " usually have "kdeinit" running, though... (tnx Mikolaj Machowski) |
2909 if !exists("s:haskdeinit") | 2907 if !exists("s:haskdeinit") |
2910 if has("unix") | 2908 if has("unix") |
2911 let s:haskdeinit= s:System("system",'ps -e') =~ 'kdeinit' | 2909 let s:haskdeinit= system("ps -e") =~ 'kdeinit' |
2912 if v:shell_error | 2910 if v:shell_error |
2913 let s:haskdeinit = 0 | 2911 let s:haskdeinit = 0 |
2914 endif | 2912 endif |
2915 else | 2913 else |
2916 let s:haskdeinit= 0 | 2914 let s:haskdeinit= 0 |
2919 endif | 2917 endif |
2920 | 2918 |
2921 if a:remote == 1 | 2919 if a:remote == 1 |
2922 " create a local copy | 2920 " create a local copy |
2923 let fname= fnamemodify(tempname(),":r").".".exten | 2921 let fname= fnamemodify(tempname(),":r").".".exten |
2924 " call Decho("a:remote=".a:remote.": create a local copy of <".a:fname."> as <".fname.">") | 2922 " call Decho("a:remote=".a:remote.": create a local copy of <".fname."> as <".fname.">") |
2925 exe "silent keepjumps bot 1new ".a:fname | 2923 exe "silent keepjumps bot 1new ".fnameescape(fname) |
2926 setlocal bh=delete | 2924 setlocal bh=delete |
2927 " call Decho("read <".fname.">, now writing: exe w! ".fname) | 2925 " call Decho("read <".fnameescape(fname).">, now writing: exe w! ".fnameescape(fname)) |
2928 exe "silent! w! ".fname | 2926 exe "silent! w! ".fnameescape(fname) |
2929 q | 2927 q |
2928 else | |
2929 let fname= a:fname | |
2930 endif | 2930 endif |
2931 " call Decho("exten<".exten."> "."netrwFileHandlers#NFH_".exten."():exists=".exists("*netrwFileHandlers#NFH_".exten)) | 2931 " call Decho("exten<".exten."> "."netrwFileHandlers#NFH_".exten."():exists=".exists("*netrwFileHandlers#NFH_".exten)) |
2932 | 2932 |
2933 " set up redirection | 2933 " set up redirection |
2934 if &srr =~ "%s" | 2934 if &srr =~ "%s" |
2970 " call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">") | 2970 " call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">") |
2971 let ret= netrwFileHandlers#Invoke(exten,fname) | 2971 let ret= netrwFileHandlers#Invoke(exten,fname) |
2972 | 2972 |
2973 elseif exists("g:netrw_browsex_viewer") && executable(viewer) | 2973 elseif exists("g:netrw_browsex_viewer") && executable(viewer) |
2974 " call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">") | 2974 " call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">") |
2975 " call Decho("exe silent !".viewer." ".viewopt.shellescape(fname).redir) | 2975 " call Decho("exe silent !".viewer." ".viewopt.shellescape(fname,1).redir) |
2976 exe "silent !".viewer." ".viewopt.shellescape(fname).redir | 2976 exe "silent !".viewer." ".viewopt.shellescape(fname,1).redir |
2977 let ret= v:shell_error | 2977 let ret= v:shell_error |
2978 | 2978 |
2979 elseif has("win32") || has("win64") | 2979 elseif has("win32") || has("win64") |
2980 " call Decho('exe silent !start rundll32 url.dll,FileProtocolHandler '.shellescape(fname)) | 2980 " call Decho('exe silent !start rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1)) |
2981 exe 'silent !start rundll32 url.dll,FileProtocolHandler '.shellescape(fname) | 2981 exe 'silent !start rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1) |
2982 call inputsave()|call input("Press <cr> to continue")|call inputrestore() | 2982 call inputsave()|call input("Press <cr> to continue")|call inputrestore() |
2983 let ret= v:shell_error | 2983 let ret= v:shell_error |
2984 | 2984 |
2985 elseif has("unix") && executable("gnome-open") && !s:haskdeinit | 2985 elseif has("unix") && executable("gnome-open") && !s:haskdeinit |
2986 " call Decho("exe silent !gnome-open ".shellescape(fname)." ".redir) | 2986 " call Decho("exe silent !gnome-open ".shellescape(fname,1)." ".redir) |
2987 exe "silent !gnome-open ".shellescape(fname).redir | 2987 exe "silent !gnome-open ".shellescape(fname,1).redir |
2988 let ret= v:shell_error | 2988 let ret= v:shell_error |
2989 | 2989 |
2990 elseif has("unix") && executable("kfmclient") && s:haskdeinit | 2990 elseif has("unix") && executable("kfmclient") && s:haskdeinit |
2991 " call Decho("exe silent !kfmclient exec ".shellescape(fname)." ".redir) | 2991 " call Decho("exe silent !kfmclient exec ".shellescape(fname,1)." ".redir) |
2992 exe "silent !kfmclient exec ".shellescape(fname)." ".redir | 2992 exe "silent !kfmclient exec ".shellescape(fname,1)." ".redir |
2993 let ret= v:shell_error | 2993 let ret= v:shell_error |
2994 | 2994 |
2995 elseif has("macunix") && executable("open") | 2995 elseif has("macunix") && executable("open") |
2996 " call Decho("exe silent !open ".shellescape(fname)." ".redir) | 2996 " call Decho("exe silent !open ".shellescape(fname,1)." ".redir) |
2997 exe "silent !open ".shellescape(fname)." ".redir | 2997 exe "silent !open ".shellescape(fname,1)." ".redir |
2998 let ret= v:shell_error | 2998 let ret= v:shell_error |
2999 | 2999 |
3000 else | 3000 else |
3001 " netrwFileHandlers#Invoke() always returns 0 | 3001 " netrwFileHandlers#Invoke() always returns 0 |
3002 let ret= netrwFileHandlers#Invoke(exten,fname) | 3002 let ret= netrwFileHandlers#Invoke(exten,fname) |
3005 " if unsuccessful, attempt netrwFileHandlers#Invoke() | 3005 " if unsuccessful, attempt netrwFileHandlers#Invoke() |
3006 if ret | 3006 if ret |
3007 let ret= netrwFileHandlers#Invoke(exten,fname) | 3007 let ret= netrwFileHandlers#Invoke(exten,fname) |
3008 endif | 3008 endif |
3009 | 3009 |
3010 " redraw! | 3010 " restoring redraw! after external file handlers |
3011 redraw! | |
3011 | 3012 |
3012 " cleanup: remove temporary file, | 3013 " cleanup: remove temporary file, |
3013 " delete current buffer if success with handler, | 3014 " delete current buffer if success with handler, |
3014 " return to prior buffer (directory listing) | 3015 " return to prior buffer (directory listing) |
3015 " Feb 12, 2008: had to de-activiate removal of | 3016 " Feb 12, 2008: had to de-activiate removal of |
3016 " temporary file because it wasn't getting seen. | 3017 " temporary file because it wasn't getting seen. |
3017 " if a:remote == 1 && fname != a:fname | 3018 " if a:remote == 1 && fname != a:fname |
3018 " call Decho("deleting temporary file<".fname.">") | 3019 " call Decho("deleting temporary file<".fname.">") |
3019 " call s:System("delete",fname) | 3020 " call s:NetrwDelete(fname) |
3020 " endif | 3021 " endif |
3021 | 3022 |
3022 if a:remote == 1 | 3023 if a:remote == 1 |
3023 setlocal bh=delete bt=nofile | 3024 setlocal bh=delete bt=nofile |
3024 if g:netrw_use_noswf | 3025 if g:netrw_use_noswf |
3650 call mkdir(fullnewdir,"p") | 3651 call mkdir(fullnewdir,"p") |
3651 else | 3652 else |
3652 let netrw_origdir= s:NetrwGetcwd(1) | 3653 let netrw_origdir= s:NetrwGetcwd(1) |
3653 exe 'keepjumps lcd '.fnameescape(b:netrw_curdir) | 3654 exe 'keepjumps lcd '.fnameescape(b:netrw_curdir) |
3654 " call Decho("netrw_origdir<".netrw_origdir.">: lcd b:netrw_curdir<".fnameescape(b:netrw_curdir).">") | 3655 " call Decho("netrw_origdir<".netrw_origdir.">: lcd b:netrw_curdir<".fnameescape(b:netrw_curdir).">") |
3655 " call Decho("exe silent! !".g:netrw_local_mkdir.' '.shellescape(newdirname)) | 3656 " call Decho("exe silent! !".g:netrw_local_mkdir.' '.shellescape(newdirname,1)) |
3656 exe "silent! !".g:netrw_local_mkdir.' '.shellescape(newdirname) | 3657 exe "silent! !".g:netrw_local_mkdir.' '.shellescape(newdirname,1) |
3657 if !g:netrw_keepdir | 3658 if !g:netrw_keepdir |
3658 exe 'keepjumps lcd '.fnameescape(netrw_origdir) | 3659 exe 'keepjumps lcd '.fnameescape(netrw_origdir) |
3659 " call Decho("netrw_keepdir=".g:netrw_keepdir.": keepjumps lcd ".fnameescape(netrw_origdir)." getcwd<".getcwd().">") | 3660 " call Decho("netrw_keepdir=".g:netrw_keepdir.": keepjumps lcd ".fnameescape(netrw_origdir)." getcwd<".getcwd().">") |
3660 endif | 3661 endif |
3661 endif | 3662 endif |
3674 elseif !exists("b:netrw_method") || b:netrw_method == 4 | 3675 elseif !exists("b:netrw_method") || b:netrw_method == 4 |
3675 " Remote mkdir: | 3676 " Remote mkdir: |
3676 " call Decho("remote mkdir") | 3677 " call Decho("remote mkdir") |
3677 let mkdircmd = s:MakeSshCmd(g:netrw_mkdir_cmd) | 3678 let mkdircmd = s:MakeSshCmd(g:netrw_mkdir_cmd) |
3678 let newdirname= substitute(b:netrw_curdir,'^\%(.\{-}/\)\{3}\(.*\)$','\1','').newdirname | 3679 let newdirname= substitute(b:netrw_curdir,'^\%(.\{-}/\)\{3}\(.*\)$','\1','').newdirname |
3679 " call Decho("exe silent! !".mkdircmd." ".shellescape(newdirname)) | 3680 " call Decho("exe silent! !".mkdircmd." ".shellescape(newdirname,1)) |
3680 exe "silent! !".mkdircmd." ".shellescape(newdirname) | 3681 exe "silent! !".mkdircmd." ".shellescape(newdirname,1) |
3681 if v:shell_error == 0 | 3682 if v:shell_error == 0 |
3682 " refresh listing | 3683 " refresh listing |
3683 let svpos= netrw#NetrwSavePosn() | 3684 let svpos= netrw#NetrwSavePosn() |
3684 call s:NetrwRefresh(0,s:NetrwBrowseChgDir(0,'./')) | 3685 call s:NetrwRefresh(0,s:NetrwBrowseChgDir(0,'./')) |
3685 call netrw#NetrwRestorePosn(svpos) | 3686 call netrw#NetrwRestorePosn(svpos) |
3816 for fname in s:netrwmarkfilelist_{curbufnr} | 3817 for fname in s:netrwmarkfilelist_{curbufnr} |
3817 " for every filename in the marked list | 3818 " for every filename in the marked list |
3818 for sfx in sort(keys(g:netrw_decompress)) | 3819 for sfx in sort(keys(g:netrw_decompress)) |
3819 if fname =~ '\'.sfx.'$' | 3820 if fname =~ '\'.sfx.'$' |
3820 " fname has a suffix indicating that its compressed; apply associated decompression routine | 3821 " fname has a suffix indicating that its compressed; apply associated decompression routine |
3821 let exe= g:netrw_decompress[sfx] | 3822 let exe= s:WinPath(g:netrw_decompress[sfx]) |
3822 " call Decho("fname<".fname."> is compressed so decompress with <".exe.">") | 3823 " call Decho("fname<".fname."> is compressed so decompress with <".exe.">") |
3823 if a:islocal | 3824 if a:islocal |
3824 if g:netrw_keepdir | 3825 if g:netrw_keepdir |
3825 let fname= s:ComposePath(curdir,fname) | 3826 let fname= shellescape(s:ComposePath(curdir,fname)) |
3826 endif | 3827 endif |
3827 else | 3828 else |
3828 let fname= b:netrw_curdir.fname | 3829 let fname= shellescape(b:netrw_curdir.fname) |
3829 endif | 3830 endif |
3830 if executable(exe) | 3831 if executable(exe) |
3831 if a:islocal | 3832 if a:islocal |
3832 call system(exe." ".fname) | 3833 call system(exe." ".fname) |
3833 else | 3834 else |
3841 endfor | 3842 endfor |
3842 if exists("exe") | 3843 if exists("exe") |
3843 unlet exe | 3844 unlet exe |
3844 elseif a:islocal | 3845 elseif a:islocal |
3845 " fname not a compressed file, so compress it | 3846 " fname not a compressed file, so compress it |
3846 call system(g:netrw_compress." ".s:ComposePath(b:netrw_curdir,fname)) | 3847 call system(s:WinPath(g:netrw_compress)." ".shellescape(s:ComposePath(b:netrw_curdir,fname))) |
3847 else | 3848 else |
3848 " fname not a compressed file, so compress it | 3849 " fname not a compressed file, so compress it |
3849 call s:RemoteSystem(g:netrw_compress." ".fname) | 3850 call s:RemoteSystem(s:WinPath(g:netrw_compress)." ".shellescape(fname)) |
3850 endif | 3851 endif |
3851 endfor | 3852 endfor |
3852 call s:NetrwUnmarkList(curbufnr,curdir) | 3853 call s:NetrwUnmarkList(curbufnr,curdir) |
3853 call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) | 3854 call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) |
3854 call netrw#NetrwRestorePosn(svpos) | 3855 call netrw#NetrwRestorePosn(svpos) |
3885 if a:islocal && s:netrwmftgt_islocal | 3886 if a:islocal && s:netrwmftgt_islocal |
3886 " Copy marked files, local directory to local directory | 3887 " Copy marked files, local directory to local directory |
3887 " call Decho("copy from local to local") | 3888 " call Decho("copy from local to local") |
3888 let args= join(map(copy(s:netrwmarkfilelist_{bufnr('%')}),"b:netrw_curdir.\"/\".shellescape(v:val)")) | 3889 let args= join(map(copy(s:netrwmarkfilelist_{bufnr('%')}),"b:netrw_curdir.\"/\".shellescape(v:val)")) |
3889 " call Decho("system(".g:netrw_localcopycmd." ".args." ".shellescape(s:netrwmftgt).")") | 3890 " call Decho("system(".g:netrw_localcopycmd." ".args." ".shellescape(s:netrwmftgt).")") |
3890 call system(g:netrw_localcopycmd." ".args." ".shellescape(s:netrwmftgt)) | 3891 call system(s:WinPath(g:netrw_localcopycmd)." ".args." ".shellescape(s:netrwmftgt)) |
3891 | 3892 |
3892 elseif a:islocal && !s:netrwmftgt_islocal | 3893 elseif a:islocal && !s:netrwmftgt_islocal |
3893 " Copy marked files, local directory to remote directory | 3894 " Copy marked files, local directory to remote directory |
3894 " call Decho("copy from local to remote") | 3895 " call Decho("copy from local to remote") |
3895 call s:NetrwUpload(s:netrwmarkfilelist_{bufnr('%')},s:netrwmftgt) | 3896 call s:NetrwUpload(s:netrwmarkfilelist_{bufnr('%')},s:netrwmftgt) |
3906 let tmpdir= curdir."/".tmpdir | 3907 let tmpdir= curdir."/".tmpdir |
3907 endif | 3908 endif |
3908 if exists("*mkdir") | 3909 if exists("*mkdir") |
3909 call mkdir(tmpdir) | 3910 call mkdir(tmpdir) |
3910 else | 3911 else |
3911 exe "silent! !".g:netrw_local_mkdir.' '.shellescape(tmpdir) | 3912 exe "silent! !".g:netrw_local_mkdir.' '.shellescape(tmpdir,1) |
3912 endif | 3913 endif |
3913 if isdirectory(tmpdir) | 3914 if isdirectory(tmpdir) |
3914 exe "keepjumps lcd ".fnameescape(tmpdir) | 3915 exe "keepjumps lcd ".fnameescape(tmpdir) |
3915 call netrw#NetrwObtain(a:islocal,s:netrwmarkfilelist_{bufnr('%')},tmpdir) | 3916 call netrw#NetrwObtain(a:islocal,s:netrwmarkfilelist_{bufnr('%')},tmpdir) |
3916 let localfiles= map(copy(s:netrwmarkfilelist_{bufnr('%')}),'substitute(v:val,"^.*/","","")') | 3917 let localfiles= map(copy(s:netrwmarkfilelist_{bufnr('%')}),'substitute(v:val,"^.*/","","")') |
3917 call s:NetrwUpload(localfiles,s:netrwmftgt) | 3918 call s:NetrwUpload(localfiles,s:netrwmftgt) |
3918 if getcwd() == tmpdir | 3919 if getcwd() == tmpdir |
3919 for fname in s:netrwmarkfilelist_{bufnr('%')} | 3920 for fname in s:netrwmarkfilelist_{bufnr('%')} |
3920 call s:System("delete",fname) | 3921 call s:NetrwDelete(fname) |
3921 endfor | 3922 endfor |
3922 exe "keepjumps lcd ".fnameescape(curdir) | 3923 exe "keepjumps lcd ".fnameescape(curdir) |
3923 exe "silent !".g:netrw_local_rmdir." ".fnameescape(tmpdir) | 3924 exe "silent !".g:netrw_local_rmdir." ".shellescape(tmpdir,1) |
3924 else | 3925 else |
3925 exe "keepjumps lcd ".fnameescape(curdir) | 3926 exe "keepjumps lcd ".fnameescape(curdir) |
3926 endif | 3927 endif |
3927 endif | 3928 endif |
3928 endif | 3929 endif |
4034 " apply command to marked files. Substitute: filename -> % | 4035 " apply command to marked files. Substitute: filename -> % |
4035 " If no %, then append a space and the filename to the command | 4036 " If no %, then append a space and the filename to the command |
4036 for fname in s:netrwmarkfilelist_{curbufnr} | 4037 for fname in s:netrwmarkfilelist_{curbufnr} |
4037 if a:islocal | 4038 if a:islocal |
4038 if g:netrw_keepdir | 4039 if g:netrw_keepdir |
4039 let fname= s:ComposePath(curdir,fname) | 4040 let fname= shellescape(s:WinPath(s:ComposePath(curdir,fname))) |
4040 endif | 4041 endif |
4041 else | 4042 else |
4042 let fname= b:netrw_curdir.fname | 4043 let fname= shellescape(s:WinPath(b:netrw_curdir.fname)) |
4043 endif | 4044 endif |
4044 if cmd =~ '%' | 4045 if cmd =~ '%' |
4045 let xcmd= substitute(cmd,'%',fname,'g') | 4046 let xcmd= substitute(cmd,'%',fname,'g') |
4046 else | 4047 else |
4047 let xcmd= cmd.' '.fname | 4048 let xcmd= cmd.' '.fname |
4397 endif | 4398 endif |
4398 else | 4399 else |
4399 let fname= curdir.fname | 4400 let fname= curdir.fname |
4400 endif | 4401 endif |
4401 " the autocmds will handle sourcing both local and remote files | 4402 " the autocmds will handle sourcing both local and remote files |
4402 " call Decho("exe so ".escape(fname,' ')) | 4403 " call Decho("exe so ".fnameescape(fname)) |
4403 exe "so ".escape(fname,' ') | 4404 exe "so ".fnameescape(fname) |
4404 endfor | 4405 endfor |
4405 2match none | 4406 2match none |
4406 endif | 4407 endif |
4407 " call Dret("s:NetrwMarkFileSource") | 4408 " call Dret("s:NetrwMarkFileSource") |
4408 endfun | 4409 endfun |
4437 call system(g:netrw_ctags." ".netrwmarkfilelist) | 4438 call system(g:netrw_ctags." ".netrwmarkfilelist) |
4438 else | 4439 else |
4439 call netrw#ErrorMsg(s:ERROR,"g:netrw_ctags<".g:netrw_ctags."> is not executable!",51) | 4440 call netrw#ErrorMsg(s:ERROR,"g:netrw_ctags<".g:netrw_ctags."> is not executable!",51) |
4440 endif | 4441 endif |
4441 else | 4442 else |
4442 let cmd= s:RemoteSystem(g:netrw_ctags." ".netrwmarkfilelist) | 4443 let cmd = s:RemoteSystem(g:netrw_ctags." ".netrwmarkfilelist) |
4443 call netrw#NetrwObtain(a:islocal,"tags") | 4444 call netrw#NetrwObtain(a:islocal,"tags") |
4444 let curdir= b:netrw_curdir | 4445 let curdir= b:netrw_curdir |
4445 1split | 4446 1split |
4446 e tags | 4447 e tags |
4447 let path= substitute(curdir,'^\(.*\)/[^/]*$','\1/','') | 4448 let path= substitute(curdir,'^\(.*\)/[^/]*$','\1/','') |
4514 if !hadtgt | 4515 if !hadtgt |
4515 norm! j | 4516 norm! j |
4516 endif | 4517 endif |
4517 | 4518 |
4518 " call Dret("s:NetrwMarkFileTgt : netrwmftgt<".(exists("s:netrwmftgt")? s:netrwmftgt : "").">") | 4519 " call Dret("s:NetrwMarkFileTgt : netrwmftgt<".(exists("s:netrwmftgt")? s:netrwmftgt : "").">") |
4520 endfun | |
4521 | |
4522 " --------------------------------------------------------------------- | |
4523 " s:NetrwOpenFile: query user for a filename and open it {{{2 | |
4524 fun! s:NetrwOpenFile(islocal) | |
4525 " call Dfunc("s:NetrwOpenFile(islocal=".a:islocal.")") | |
4526 call inputsave() | |
4527 let fname= input("Enter filename: ") | |
4528 call inputrestore() | |
4529 if fname !~ '[/\\]' | |
4530 if exists("b:netrw_curdir") | |
4531 if exists("g:netrw_quiet") | |
4532 let netrw_quiet_keep = g:netrw_quiet | |
4533 endif | |
4534 let g:netrw_quiet = 1 | |
4535 if b:netrw_curdir =~ '/$' | |
4536 exe "e ".fnameescape(b:netrw_curdir.fname) | |
4537 else | |
4538 exe "e ".fnameescape(b:netrw_curdir."/".fname) | |
4539 endif | |
4540 if exists("netrw_quiet_keep") | |
4541 let g:netrw_quiet= netrw_quiet_keep | |
4542 else | |
4543 unlet g:netrw_quiet | |
4544 endif | |
4545 endif | |
4546 else | |
4547 exe "e ".fnameescape(fname) | |
4548 endif | |
4549 " call Dret("s:NetrwOpenFile") | |
4519 endfun | 4550 endfun |
4520 | 4551 |
4521 " --------------------------------------------------------------------- | 4552 " --------------------------------------------------------------------- |
4522 " s:NetrwUnmarkList: delete local marked file lists and remove their contents from the global marked-file list {{{2 | 4553 " s:NetrwUnmarkList: delete local marked file lists and remove their contents from the global marked-file list {{{2 |
4523 fun! s:NetrwUnmarkList(curbufnr,curdir) | 4554 fun! s:NetrwUnmarkList(curbufnr,curdir) |
4733 if exists("b:netrw_curdir") && getcwd() != b:netrw_curdir | 4764 if exists("b:netrw_curdir") && getcwd() != b:netrw_curdir |
4734 let topath= s:ComposePath(tgtdir,"") | 4765 let topath= s:ComposePath(tgtdir,"") |
4735 if (has("win32") || has("win95") || has("win64") || has("win16")) | 4766 if (has("win32") || has("win95") || has("win64") || has("win16")) |
4736 " transfer files one at time | 4767 " transfer files one at time |
4737 for fname in fnamelist | 4768 for fname in fnamelist |
4738 " call Decho("system(".g:netrw_localcopycmd." ".fname." ".shellescape(topath).")") | 4769 " call Decho("system(".g:netrw_localcopycmd." ".shellescape(fname)." ".shellescape(topath).")") |
4739 call system(g:netrw_localcopycmd." ".fname." ".shellescape(topath)) | 4770 call system(g:netrw_localcopycmd." ".shellescape(fname)." ".shellescape(topath)) |
4740 endfor | 4771 endfor |
4741 else | 4772 else |
4742 " transfer files with one command | 4773 " transfer files with one command |
4743 let filelist= join(map(copy(fname),"shellescape(v:val)")) | 4774 let filelist= join(map(copy(fname),"shellescape(v:val)")) |
4744 " call Decho("system(".g:netrw_localcopycmd." ".filelist." ".shellescape(topath).")") | 4775 " call Decho("system(".g:netrw_localcopycmd." ".filelist." ".shellescape(topath).")") |
4768 if b:netrw_fname =~ '/' | 4799 if b:netrw_fname =~ '/' |
4769 let path= substitute(b:netrw_fname,'^\(.*/\).\{-}$','\1','') | 4800 let path= substitute(b:netrw_fname,'^\(.*/\).\{-}$','\1','') |
4770 else | 4801 else |
4771 let path= "" | 4802 let path= "" |
4772 endif | 4803 endif |
4773 let filelist= join(map(copy(fnamelist),'shellescape(g:netrw_machine.":".escape(path.v:val,g:netrw_fname_escape))')) | 4804 let filelist= join(map(copy(fnamelist),'shellescape(g:netrw_machine.":".path.v:val,1))')) |
4774 " call Decho("exe ".s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".filelist." ".shellescape(tgtdir)) | 4805 " call Decho("exe ".s:netrw_silentxfer."!".g:netrw_scp_cmd.shellescape(useport,1)." ".filelist." ".shellescape(tgtdir,1)) |
4775 exe s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".filelist." ".shellescape(tgtdir) | 4806 exe s:netrw_silentxfer."!".g:netrw_scp_cmd.shellescape(useport,1)." ".filelist." ".shellescape(tgtdir,1) |
4776 | 4807 |
4777 elseif b:netrw_method == 2 | 4808 elseif b:netrw_method == 2 |
4778 " obtain file using ftp + .netrc | 4809 " obtain file using ftp + .netrc |
4779 " call Decho("obtain via ftp+.netrc (method #2)") | 4810 " call Decho("obtain via ftp+.netrc (method #2)") |
4780 call s:SaveBufVars()|silent keepjumps new|call s:RestoreBufVars() | 4811 call s:SaveBufVars()|silent keepjumps new|call s:RestoreBufVars() |
4797 for fname in fnamelist | 4828 for fname in fnamelist |
4798 call setline(line("$")+1,'get "'.fname.'"') | 4829 call setline(line("$")+1,'get "'.fname.'"') |
4799 " call Decho("filter input: ".getline('$')) | 4830 " call Decho("filter input: ".getline('$')) |
4800 endfor | 4831 endfor |
4801 if exists("g:netrw_port") && g:netrw_port != "" | 4832 if exists("g:netrw_port") && g:netrw_port != "" |
4802 " call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port) | 4833 " call Decho("executing: %!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)." ".shellescape(g:netrw_port,1)) |
4803 exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port | 4834 exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)." ".shellescape(g:netrw_port,1) |
4804 else | 4835 else |
4805 " call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine) | 4836 " call Decho("executing: %!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)) |
4806 exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine | 4837 exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1) |
4807 endif | 4838 endif |
4808 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) | 4839 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) |
4809 if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying ' | 4840 if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying ' |
4810 let debugkeep= &debug | 4841 let debugkeep= &debug |
4811 setlocal debug=msg | 4842 setlocal debug=msg |
5027 exe "e ".efname | 5058 exe "e ".efname |
5028 " call Decho("now locally editing<".expand("%").">, has ".line("$")." lines") | 5059 " call Decho("now locally editing<".expand("%").">, has ".line("$")." lines") |
5029 if a:tgt =~ '/$' | 5060 if a:tgt =~ '/$' |
5030 let wfname= substitute(a:fname,'^.*/','','') | 5061 let wfname= substitute(a:fname,'^.*/','','') |
5031 let wfname= escape(a:tgt.wfname,g:netrw_fname_escape) | 5062 let wfname= escape(a:tgt.wfname,g:netrw_fname_escape) |
5032 " call Decho("exe w! ".wfname) | 5063 " call Decho("exe w! ".fnameescape(wfname)) |
5033 exe "w! ".wfname | 5064 exe "w! ".fnameescape(wfname) |
5034 else | 5065 else |
5035 let wfname= escape(a:tgt,g:netrw_fname_escape) | 5066 " call Decho("writing local->remote: exe w ".fnameescape(a:tgt)) |
5036 " call Decho("writing local->remote: exe w ".wfname) | 5067 exe "w ".fnameescape(a:tgt) |
5037 exe "w ".wfname | |
5038 " call Decho("done writing local->remote") | 5068 " call Decho("done writing local->remote") |
5039 endif | 5069 endif |
5040 q! | 5070 q! |
5041 | 5071 |
5042 elseif type(a:fname) == 3 | 5072 elseif type(a:fname) == 3 |
5052 else | 5082 else |
5053 let useport= "" | 5083 let useport= "" |
5054 endif | 5084 endif |
5055 let machine = substitute(a:tgt,'^scp://\([^/:]\+\).*$','\1','') | 5085 let machine = substitute(a:tgt,'^scp://\([^/:]\+\).*$','\1','') |
5056 let tgt = substitute(a:tgt,'^scp://[^/]\+/\(.*\)$','\1','') | 5086 let tgt = substitute(a:tgt,'^scp://[^/]\+/\(.*\)$','\1','') |
5057 " call Decho("exe ".s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".args." ".shellescape(machine.":".escape(tgt,g:netrw_fname_escape))) | 5087 " call Decho("exe ".s:netrw_silentxfer."!".g:netrw_scp_cmd.shellescape(useport,1)." ".args." ".shellescape(machine.":".tgt,1)) |
5058 exe s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".args." ".shellescape(machine.":".escape(tgt,g:netrw_fname_escape)) | 5088 exe s:netrw_silentxfer."!".g:netrw_scp_cmd.shellescape(useport,1)." ".args." ".shellescape(machine.":".tgt,1) |
5059 exe "keepjumps silent lcd ".fnameescape(curdir) | 5089 exe "keepjumps silent lcd ".fnameescape(curdir) |
5060 | 5090 |
5061 elseif a:tgt =~ '^ftp:' | 5091 elseif a:tgt =~ '^ftp:' |
5062 call s:NetrwMethod(a:tgt) | 5092 call s:NetrwMethod(a:tgt) |
5063 | 5093 |
5085 call setline(line("$")+1,'put "'.fname.'"') | 5115 call setline(line("$")+1,'put "'.fname.'"') |
5086 " call Decho("filter input: ".getline('$')) | 5116 " call Decho("filter input: ".getline('$')) |
5087 endfor | 5117 endfor |
5088 | 5118 |
5089 if exists("g:netrw_port") && g:netrw_port != "" | 5119 if exists("g:netrw_port") && g:netrw_port != "" |
5090 " call Decho("executing: ".s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port) | 5120 " call Decho("executing: ".s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)." ".shellescape(g:netrw_port,1)) |
5091 exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port | 5121 exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)." ".shellescape(g:netrw_port,1) |
5092 else | 5122 else |
5093 " call Decho("filter input window#".winnr()) | 5123 " call Decho("filter input window#".winnr()) |
5094 " call Decho("executing: ".s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine) | 5124 " call Decho("executing: ".s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)) |
5095 exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine | 5125 exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1) |
5096 endif | 5126 endif |
5097 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) | 5127 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) |
5098 silent g/Local directory now/d | 5128 silent g/Local directory now/d |
5099 if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying ' | 5129 if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying ' |
5100 call netrw#ErrorMsg(s:ERROR,getline(1),14) | 5130 call netrw#ErrorMsg(s:ERROR,getline(1),14) |
5792 | 5822 |
5793 if w:netrw_bannercnt < line("$") | 5823 if w:netrw_bannercnt < line("$") |
5794 " call Decho("g:netrw_sort_direction=".g:netrw_sort_direction." (bannercnt=".w:netrw_bannercnt.")") | 5824 " call Decho("g:netrw_sort_direction=".g:netrw_sort_direction." (bannercnt=".w:netrw_bannercnt.")") |
5795 if g:netrw_sort_direction =~ 'n' | 5825 if g:netrw_sort_direction =~ 'n' |
5796 " normal direction sorting | 5826 " normal direction sorting |
5797 exe 'silent keepjumps '.w:netrw_bannercnt.',$sort' | 5827 exe 'silent keepjumps '.w:netrw_bannercnt.',$sort'.' '.g:netrw_sort_options |
5798 else | 5828 else |
5799 " reverse direction sorting | 5829 " reverse direction sorting |
5800 exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!' | 5830 exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options |
5801 endif | 5831 endif |
5802 endif | 5832 endif |
5803 " remove priority pattern prefix | 5833 " remove priority pattern prefix |
5804 " call Decho("remove priority pattern prefix") | 5834 " call Decho("remove priority pattern prefix") |
5805 let sepchr= "\<Char-0xff>" | 5835 let sepchr= "\<Char-0xff>" |
5808 elseif a:islocal | 5838 elseif a:islocal |
5809 if w:netrw_bannercnt < line("$") | 5839 if w:netrw_bannercnt < line("$") |
5810 " call Decho("g:netrw_sort_direction=".g:netrw_sort_direction) | 5840 " call Decho("g:netrw_sort_direction=".g:netrw_sort_direction) |
5811 if g:netrw_sort_direction =~ 'n' | 5841 if g:netrw_sort_direction =~ 'n' |
5812 " call Decho('exe silent keepjumps '.w:netrw_bannercnt.',$sort') | 5842 " call Decho('exe silent keepjumps '.w:netrw_bannercnt.',$sort') |
5813 exe 'silent keepjumps '.w:netrw_bannercnt.',$sort' | 5843 exe 'silent keepjumps '.w:netrw_bannercnt.',$sort'.' '.g:netrw_sort_options |
5814 else | 5844 else |
5815 " call Decho('exe silent keepjumps '.w:netrw_bannercnt.',$sort!') | 5845 " call Decho('exe silent keepjumps '.w:netrw_bannercnt.',$sort!') |
5816 exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!' | 5846 exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options |
5817 endif | 5847 endif |
5818 endif | 5848 endif |
5819 exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{-}\///e' | 5849 exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{-}\///e' |
5820 endif | 5850 endif |
5821 | 5851 |
5995 " use ssh to get remote file listing {{{3 | 6025 " use ssh to get remote file listing {{{3 |
5996 " call Decho("use ssh to get remote file listing: s:path<".s:path.">") | 6026 " call Decho("use ssh to get remote file listing: s:path<".s:path.">") |
5997 let listcmd= s:MakeSshCmd(g:netrw_list_cmd) | 6027 let listcmd= s:MakeSshCmd(g:netrw_list_cmd) |
5998 " call Decho("listcmd<".listcmd."> (using g:netrw_list_cmd)") | 6028 " call Decho("listcmd<".listcmd."> (using g:netrw_list_cmd)") |
5999 if g:netrw_scp_cmd =~ '^pscp' | 6029 if g:netrw_scp_cmd =~ '^pscp' |
6000 " call Decho("1: exe silent r! ".listcmd.shellescape(s:path)) | 6030 " call Decho("1: exe silent r! ".listcmd.s:path) |
6001 exe "silent r! ".listcmd.shellescape(s:path) | 6031 exe "silent r! ".listcmd.s:path |
6002 " remove rubbish and adjust listing format of 'pscp' to 'ssh ls -FLa' like | 6032 " remove rubbish and adjust listing format of 'pscp' to 'ssh ls -FLa' like |
6003 g/^Listing directory/d | 6033 g/^Listing directory/d |
6004 g/^d[-rwx][-rwx][-rwx]/s+$+/+e | 6034 g/^d[-rwx][-rwx][-rwx]/s+$+/+e |
6005 silent g/^l[-rwx][-rwx][-rwx]/s+$+@+e | 6035 silent g/^l[-rwx][-rwx][-rwx]/s+$+@+e |
6006 if g:netrw_liststyle != s:LONGLIST | 6036 if g:netrw_liststyle != s:LONGLIST |
6009 else | 6039 else |
6010 if s:path == "" | 6040 if s:path == "" |
6011 " call Decho("2: exe silent r! ".listcmd) | 6041 " call Decho("2: exe silent r! ".listcmd) |
6012 exe "silent r! ".listcmd | 6042 exe "silent r! ".listcmd |
6013 else | 6043 else |
6014 " call Decho("3: exe silent r! ".listcmd.' "'.shellescape(s:path).'"') | 6044 " call Decho("3: exe silent r! ".listcmd.' '.shellescape(s:path,1)) |
6015 exe "silent r! ".listcmd.' "'.shellescape(s:path).'"' | 6045 exe "silent r! ".listcmd.' '.shellescape(s:path,1) |
6016 " call Decho("listcmd<".listcmd."> path<".s:path.">") | 6046 " call Decho("listcmd<".listcmd."> path<".s:path.">") |
6017 endif | 6047 endif |
6018 endif | 6048 endif |
6019 | 6049 |
6020 " cleanup | 6050 " cleanup |
6201 if all || ok =~ 'y\%[es]' || ok == "" | 6231 if all || ok =~ 'y\%[es]' || ok == "" |
6202 if exists("w:netrw_method") && (w:netrw_method == 2 || w:netrw_method == 3) | 6232 if exists("w:netrw_method") && (w:netrw_method == 2 || w:netrw_method == 3) |
6203 call s:NetrwRemoteFtpCmd(a:path,"rmdir ".a:rmfile) | 6233 call s:NetrwRemoteFtpCmd(a:path,"rmdir ".a:rmfile) |
6204 else | 6234 else |
6205 let rmfile = substitute(a:path.a:rmfile,'/$','','') | 6235 let rmfile = substitute(a:path.a:rmfile,'/$','','') |
6206 let netrw_rmdir_cmd = s:MakeSshCmd(g:netrw_rmdir_cmd).' '.rmfile | 6236 let netrw_rmdir_cmd = s:MakeSshCmd(s:WinPath(g:netrw_rmdir_cmd)).' '.shellescape(s:WinPath(rmfile)) |
6207 " call Decho("attempt to remove dir: system(".netrw_rmdir_cmd.")") | 6237 " call Decho("attempt to remove dir: system(".netrw_rmdir_cmd.")") |
6208 let ret= s:System("system",netrw_rmdir_cmd) | 6238 let ret= system(netrw_rmdir_cmd) |
6209 " call Decho("returned=".ret." errcode=".v:shell_error) | 6239 " call Decho("returned=".ret." errcode=".v:shell_error) |
6210 | 6240 |
6211 if v:shell_error != 0 | 6241 if v:shell_error != 0 |
6212 " call Decho("v:shell_error not 0") | 6242 " call Decho("v:shell_error not 0") |
6213 let netrw_rmf_cmd= s:MakeSshCmd(g:netrw_rmf_cmd).' '.substitute(rmfile,'[\/]$','','e') | 6243 let netrw_rmf_cmd= s:MakeSshCmd(s:WinPath(g:netrw_rmf_cmd)).' '.shellescape(s:WinPath(substitute(rmfile,'[\/]$','','e'))) |
6214 " call Decho("2nd attempt to remove dir: system(".netrw_rmf_cmd.")") | 6244 " call Decho("2nd attempt to remove dir: system(".netrw_rmf_cmd.")") |
6215 let ret= s:System("system",netrw_rmf_cmd) | 6245 let ret= system(netrw_rmf_cmd) |
6216 " call Decho("returned=".ret." errcode=".v:shell_error) | 6246 " call Decho("returned=".ret." errcode=".v:shell_error) |
6217 | 6247 |
6218 if v:shell_error != 0 && !exists("g:netrw_quiet") | 6248 if v:shell_error != 0 && !exists("g:netrw_quiet") |
6219 call netrw#ErrorMsg(s:ERROR,"unable to remove directory<".rmfile."> -- is it empty?",22) | 6249 call netrw#ErrorMsg(s:ERROR,"unable to remove directory<".rmfile."> -- is it empty?",22) |
6220 endif | 6250 endif |
6221 endif | 6251 endif |
6260 " call Decho("filter input: ".getline('.')) | 6290 " call Decho("filter input: ".getline('.')) |
6261 endif | 6291 endif |
6262 call setline(line("$")+1,a:listcmd) | 6292 call setline(line("$")+1,a:listcmd) |
6263 " exe "keepjumps ".w:netrw_bannercnt.',$g/^./call Decho("ftp#".line(".").": ".getline("."))' | 6293 " exe "keepjumps ".w:netrw_bannercnt.',$g/^./call Decho("ftp#".line(".").": ".getline("."))' |
6264 if exists("g:netrw_port") && g:netrw_port != "" | 6294 if exists("g:netrw_port") && g:netrw_port != "" |
6265 " call Decho("exe ".s:netrw_silentxfer.w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port) | 6295 " call Decho("exe ".s:netrw_silentxfer.w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)." ".shellescape(g:netrw_port,1)) |
6266 exe s:netrw_silentxfer." keepjumps ".w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port | 6296 exe s:netrw_silentxfer." keepjumps ".w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)." ".shellescape(g:netrw_port,1) |
6267 else | 6297 else |
6268 " call Decho("exe ".s:netrw_silentxfer.w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine) | 6298 " call Decho("exe ".s:netrw_silentxfer.w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)) |
6269 exe s:netrw_silentxfer." keepjumps ".w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine | 6299 exe s:netrw_silentxfer." keepjumps ".w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1) |
6270 endif | 6300 endif |
6271 | 6301 |
6272 "......................................... | 6302 "......................................... |
6273 elseif w:netrw_method == 3 | 6303 elseif w:netrw_method == 3 |
6274 " ftp + machine,id,passwd,filename: Method #3 | 6304 " ftp + machine,id,passwd,filename: Method #3 |
6366 endif | 6396 endif |
6367 | 6397 |
6368 if exists("w:netrw_method") && (w:netrw_method == 2 || w:netrw_method == 3) | 6398 if exists("w:netrw_method") && (w:netrw_method == 2 || w:netrw_method == 3) |
6369 call s:NetrwRemoteFtpCmd(a:path,"rename ".oldname." ".newname) | 6399 call s:NetrwRemoteFtpCmd(a:path,"rename ".oldname." ".newname) |
6370 else | 6400 else |
6371 let oldname= a:path.oldname | 6401 let oldname= shellescape(a:path.oldname) |
6372 let newname= a:path.newname | 6402 let newname= shellescape(a:path.newname) |
6373 " call Decho("system(rename_cmd".' "'.fnameescape(oldname," ").'" "'.escape(newname).'"') | 6403 " call Decho("system(s:WinPath(".rename_cmd.") ".oldname.' '.newname.")") |
6374 let ret= s:System("system",rename_cmd.' "'.fnameescape(oldname).'" "'.fnameescape(newname).'"') | 6404 let ret = system(s:WinPath(rename_cmd).' '.oldname.' '.newname) |
6375 endif | 6405 endif |
6376 | 6406 |
6377 endfor | 6407 endfor |
6378 call s:NetrwUnMarkFile(1) | 6408 call s:NetrwUnMarkFile(1) |
6379 | 6409 |
6391 call inputrestore() | 6421 call inputrestore() |
6392 | 6422 |
6393 if exists("w:netrw_method") && (w:netrw_method == 2 || w:netrw_method == 3) | 6423 if exists("w:netrw_method") && (w:netrw_method == 2 || w:netrw_method == 3) |
6394 call s:NetrwRemoteFtpCmd(a:path,"rename ".oldname." ".newname) | 6424 call s:NetrwRemoteFtpCmd(a:path,"rename ".oldname." ".newname) |
6395 else | 6425 else |
6396 let oldname= a:path.oldname | 6426 let oldname= shellescape(a:path.oldname) |
6397 let newname= a:path.newname | 6427 let newname= shellescape(a:path.newname) |
6398 " call Decho("system(rename_cmd".' "'.fnameescape(oldname," ").'" "'.escape(newname).'"') | 6428 " call Decho("system(s:WinPath(".rename_cmd.") ".oldname.' '.newname.")") |
6399 let ret= s:System("system",rename_cmd.' "'.fnameescape(oldname).'" "'.fnameescape(newname).'"') | 6429 let ret = system(s:WinPath(rename_cmd).' '.oldname.' '.newname) |
6400 endif | 6430 endif |
6401 | 6431 |
6402 let ctr= ctr + 1 | 6432 let ctr= ctr + 1 |
6403 endwhile | 6433 endwhile |
6404 endif | 6434 endif |
6749 let all= 1 | 6779 let all= 1 |
6750 endif | 6780 endif |
6751 endif | 6781 endif |
6752 | 6782 |
6753 if all || ok =~ 'y\%[es]' || ok == "" | 6783 if all || ok =~ 'y\%[es]' || ok == "" |
6754 let ret= s:System("delete",rmfile) | 6784 let ret= s:NetrwDelete(rmfile) |
6755 " call Decho("errcode=".v:shell_error." ret=".ret) | 6785 " call Decho("errcode=".v:shell_error." ret=".ret) |
6756 endif | 6786 endif |
6757 | 6787 |
6758 else | 6788 else |
6759 " attempt to remove directory | 6789 " attempt to remove directory |
6771 endif | 6801 endif |
6772 endif | 6802 endif |
6773 let rmfile= substitute(rmfile,'[\/]$','','e') | 6803 let rmfile= substitute(rmfile,'[\/]$','','e') |
6774 | 6804 |
6775 if all || ok =~ 'y\%[es]' || ok == "" | 6805 if all || ok =~ 'y\%[es]' || ok == "" |
6776 " call Decho("1st attempt: system(".g:netrw_local_rmdir.' '.shellescape(rmfile).')') | 6806 " call Decho("1st attempt: system(s:WinPath(".g:netrw_local_rmdir.') '.shellescape(rmfile).')') |
6777 call s:System("system",g:netrw_local_rmdir.' '.shellescape(rmfile)) | 6807 call system(s:WinPath(g:netrw_local_rmdir).' '.shellescape(rmfile)) |
6778 " call Decho("v:shell_error=".v:shell_error) | 6808 " call Decho("v:shell_error=".v:shell_error) |
6779 | 6809 |
6780 if v:shell_error != 0 | 6810 if v:shell_error != 0 |
6781 " call Decho("2nd attempt to remove directory<".rmfile.">") | 6811 " call Decho("2nd attempt to remove directory<".rmfile.">") |
6782 let errcode= s:System("delete",rmfile) | 6812 let errcode= s:NetrwDelete(rmfile) |
6783 " call Decho("errcode=".errcode) | 6813 " call Decho("errcode=".errcode) |
6784 | 6814 |
6785 if errcode != 0 | 6815 if errcode != 0 |
6786 if has("unix") | 6816 if has("unix") |
6787 " call Decho("3rd attempt to remove directory<".rmfile.">") | 6817 " call Decho("3rd attempt to remove directory<".rmfile.">") |
6788 call s:System("system","rm ".shellescape(rmfile)) | 6818 call system("rm ".shellescape(rmfile)) |
6789 if v:shell_error != 0 && !exists("g:netrw_quiet") | 6819 if v:shell_error != 0 && !exists("g:netrw_quiet") |
6790 call netrw#ErrorMsg(s:ERROR,"unable to remove directory<".rmfile."> -- is it empty?",34) | 6820 call netrw#ErrorMsg(s:ERROR,"unable to remove directory<".rmfile."> -- is it empty?",34) |
6791 let ok="no" | 6821 let ok="no" |
6792 endif | 6822 endif |
6793 elseif !exists("g:netrw_quiet") | 6823 elseif !exists("g:netrw_quiet") |
6936 | 6966 |
6937 " --------------------------------------------------------------------- | 6967 " --------------------------------------------------------------------- |
6938 " Support Functions: {{{1 | 6968 " Support Functions: {{{1 |
6939 | 6969 |
6940 " --------------------------------------------------------------------- | 6970 " --------------------------------------------------------------------- |
6941 " s:UpdateBuffersMenu: does emenu Buffers.Refresh (but due to locale, the menu item may not be called that) {{{2 | |
6942 " The Buffers.Refresh menu calls s:BMShow(); unfortunately, that means that that function | |
6943 " can't be called except via emenu. But due to locale, that menu line may not be called | |
6944 " Buffers.Refresh; hence, s:NetrwBMShow() utilizes a "cheat" to call that function anyway. | |
6945 fun! s:UpdateBuffersMenu() | |
6946 " call Dfunc("s:UpdateBuffersMenu()") | |
6947 if has("gui") && has("menu") && has("gui_running") && &go =~ 'm' | |
6948 try | |
6949 silent emenu Buffers.Refresh\ menu | |
6950 catch /^Vim\%((\a\+)\)\=:E/ | |
6951 let v:errmsg= "" | |
6952 silent call s:NetrwBMShow() | |
6953 endtry | |
6954 endif | |
6955 " call Dret("s:UpdateBuffersMenu") | |
6956 endfun | |
6957 | |
6958 " --------------------------------------------------------------------- | |
6959 " s:NetrwBMShow: {{{2 | |
6960 fun! s:NetrwBMShow() | |
6961 " call Dfunc("s:NetrwBMShow()") | |
6962 redir => bmshowraw | |
6963 menu | |
6964 redir END | |
6965 let bmshowlist = split(bmshowraw,'\n') | |
6966 if bmshowlist != [] | |
6967 let bmshowfuncs= filter(bmshowlist,'v:val =~ "<SNR>\\d\\+_BMShow()"') | |
6968 if bmshowfuncs != [] | |
6969 let bmshowfunc = substitute(bmshowfuncs[0],'^.*:\(call.*BMShow()\).*$','\1','') | |
6970 if bmshowfunc =~ '^call.*BMShow()' | |
6971 exe "silent! ".bmshowfunc | |
6972 endif | |
6973 endif | |
6974 endif | |
6975 " call Dret("s:NetrwBMShow : bmshowfunc<".(exists("bmshowfunc")? bmshowfunc : 'n/a').">") | |
6976 endfun | |
6977 | |
6978 " --------------------------------------------------------------------- | |
6979 " s:ComposePath: Appends a new part to a path taking different systems into consideration {{{2 | |
6980 fun! s:ComposePath(base,subdir) | |
6981 " call Dfunc("s:ComposePath(base<".a:base."> subdir<".a:subdir.">)") | |
6982 | |
6983 if(has("amiga")) | |
6984 " call Decho("amiga") | |
6985 let ec = a:base[strlen(a:base)-1] | |
6986 if ec != '/' && ec != ':' | |
6987 let ret = a:base . "/" . a:subdir | |
6988 else | |
6989 let ret = a:base . a:subdir | |
6990 endif | |
6991 | |
6992 elseif a:subdir =~ '^\a:[/\\][^/\\]' && (has("win32") || has("win95") || has("win64") || has("win16")) | |
6993 " call Decho("windows") | |
6994 let ret= a:subdir | |
6995 | |
6996 elseif a:base =~ '^\a\+://' | |
6997 " call Decho("remote linux/macos") | |
6998 let urlbase = substitute(a:base,'^\(\a\+://.\{-}/\)\(.*\)$','\1','') | |
6999 let curpath = substitute(a:base,'^\(\a\+://.\{-}/\)\(.*\)$','\2','') | |
7000 if a:subdir == '../' | |
7001 if curpath =~ '[^/]/[^/]\+/$' | |
7002 let curpath= substitute(curpath,'[^/]\+/$','','') | |
7003 else | |
7004 let curpath="" | |
7005 endif | |
7006 let ret= urlbase.curpath | |
7007 else | |
7008 let ret= urlbase.curpath.a:subdir | |
7009 endif | |
7010 " call Decho("urlbase<".urlbase.">") | |
7011 " call Decho("curpath<".curpath.">") | |
7012 " call Decho("ret<".ret.">") | |
7013 | |
7014 else | |
7015 " call Decho("local linux/macos") | |
7016 let ret = substitute(a:base."/".a:subdir,"//","/","g") | |
7017 if a:base =~ '^//' | |
7018 " keeping initial '//' for the benefit of network share listing support | |
7019 let ret= '/'.ret | |
7020 endif | |
7021 let ret= simplify(ret) | |
7022 endif | |
7023 | |
7024 " call Dret("s:ComposePath ".ret) | |
7025 return ret | |
7026 endfun | |
7027 | |
7028 " --------------------------------------------------------------------- | |
7029 " netrw#ErrorMsg: {{{2 | 6971 " netrw#ErrorMsg: {{{2 |
7030 " 0=note = s:NOTE | 6972 " 0=note = s:NOTE |
7031 " 1=warning = s:WARNING | 6973 " 1=warning = s:WARNING |
7032 " 2=error = s:ERROR | 6974 " 2=error = s:ERROR |
7033 " Jun 11, 2008 : max errnum currently is 70 | 6975 " Jul 08, 2008 : max errnum currently is 71 |
7034 fun! netrw#ErrorMsg(level,msg,errnum) | 6976 fun! netrw#ErrorMsg(level,msg,errnum) |
7035 " call Dfunc("netrw#ErrorMsg(level=".a:level." msg<".a:msg."> errnum=".a:errnum.") g:netrw_use_errorwindow=".g:netrw_use_errorwindow) | 6977 " call Dfunc("netrw#ErrorMsg(level=".a:level." msg<".a:msg."> errnum=".a:errnum.") g:netrw_use_errorwindow=".g:netrw_use_errorwindow) |
7036 | 6978 |
7037 if a:level == 1 | 6979 if a:level == 1 |
7038 let level= "**warning** (netrw) " | 6980 let level= "**warning** (netrw) " |
7097 | 7039 |
7098 " call Dret("netrw#ErrorMsg") | 7040 " call Dret("netrw#ErrorMsg") |
7099 endfun | 7041 endfun |
7100 | 7042 |
7101 " --------------------------------------------------------------------- | 7043 " --------------------------------------------------------------------- |
7044 " netrw#NetrwRestorePosn: restores the cursor and file position as saved by NetrwSavePosn() {{{2 | |
7045 fun! netrw#NetrwRestorePosn(...) | |
7046 " call Dfunc("netrw#NetrwRestorePosn() a:0=".a:0." winnr=".(exists("w:netrw_winnr")? w:netrw_winnr : -1)." line=".(exists("w:netrw_line")? w:netrw_line : -1)." col=".(exists("w:netrw_col")? w:netrw_col : -1)." hline=".(exists("w:netrw_hline")? w:netrw_hline : -1)) | |
7047 let eikeep= &ei | |
7048 set ei=all | |
7049 if expand("%") == "NetrwMessage" | |
7050 exe s:winBeforeErr."wincmd w" | |
7051 endif | |
7052 | |
7053 if a:0 > 0 | |
7054 exe a:1 | |
7055 endif | |
7056 | |
7057 " restore window | |
7058 if exists("w:netrw_winnr") | |
7059 " call Decho("restore window: exe silent! ".w:netrw_winnr."wincmd w") | |
7060 exe "silent! ".w:netrw_winnr."wincmd w" | |
7061 endif | |
7062 if v:shell_error == 0 | |
7063 " as suggested by Bram M: redraw on no error | |
7064 " allows protocol error messages to remain visible | |
7065 " redraw! | |
7066 endif | |
7067 | |
7068 " restore top-of-screen line | |
7069 if exists("w:netrw_hline") | |
7070 " call Decho("restore topofscreen: exe norm! ".w:netrw_hline."G0z") | |
7071 exe "norm! ".w:netrw_hline."G0z\<CR>" | |
7072 endif | |
7073 | |
7074 " restore position | |
7075 if exists("w:netrw_line") && exists("w:netrw_col") | |
7076 " call Decho("restore posn: exe norm! ".w:netrw_line."G0".w:netrw_col."|") | |
7077 exe "norm! ".w:netrw_line."G0".w:netrw_col."\<bar>" | |
7078 endif | |
7079 | |
7080 let &ei= eikeep | |
7081 " call Dret("netrw#NetrwRestorePosn") | |
7082 endfun | |
7083 | |
7084 " --------------------------------------------------------------------- | |
7085 " netrw#NetrwSavePosn: saves position of cursor on screen {{{2 | |
7086 fun! netrw#NetrwSavePosn() | |
7087 " call Dfunc("netrw#NetrwSavePosn()") | |
7088 " Save current line and column | |
7089 let w:netrw_winnr= winnr() | |
7090 let w:netrw_line = line(".") | |
7091 let w:netrw_col = virtcol(".") | |
7092 | |
7093 " Save top-of-screen line | |
7094 norm! H0 | |
7095 let w:netrw_hline= line(".") | |
7096 | |
7097 " set up string holding position parameters | |
7098 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 | |
7099 | |
7100 call netrw#NetrwRestorePosn() | |
7101 " call Dret("netrw#NetrwSavePosn : winnr=".w:netrw_winnr." line=".w:netrw_line." col=".w:netrw_col." hline=".w:netrw_hline) | |
7102 return ret | |
7103 endfun | |
7104 | |
7105 " ------------------------------------------------------------------------ | |
7102 " netrw#RFC2396: converts %xx into characters {{{2 | 7106 " netrw#RFC2396: converts %xx into characters {{{2 |
7103 fun! netrw#RFC2396(fname) | 7107 fun! netrw#RFC2396(fname) |
7104 " call Dfunc("netrw#RFC2396(fname<".a:fname.">)") | 7108 " call Dfunc("netrw#RFC2396(fname<".a:fname.">)") |
7105 let fname = escape(substitute(a:fname,'%\(\x\x\)','\=nr2char("0x".submatch(1))','ge')," \t") | 7109 let fname = escape(substitute(a:fname,'%\(\x\x\)','\=nr2char("0x".submatch(1))','ge')," \t") |
7106 " call Dret("netrw#RFC2396 ".fname) | 7110 " call Dret("netrw#RFC2396 ".fname) |
7107 return fname | 7111 return fname |
7108 endfun | 7112 endfun |
7109 | 7113 |
7110 " --------------------------------------------------------------------- | 7114 " --------------------------------------------------------------------- |
7115 " s:ComposePath: Appends a new part to a path taking different systems into consideration {{{2 | |
7116 fun! s:ComposePath(base,subdir) | |
7117 " call Dfunc("s:ComposePath(base<".a:base."> subdir<".a:subdir.">)") | |
7118 | |
7119 if(has("amiga")) | |
7120 " call Decho("amiga") | |
7121 let ec = a:base[strlen(a:base)-1] | |
7122 if ec != '/' && ec != ':' | |
7123 let ret = a:base . "/" . a:subdir | |
7124 else | |
7125 let ret = a:base . a:subdir | |
7126 endif | |
7127 | |
7128 elseif a:subdir =~ '^\a:[/\\][^/\\]' && (has("win32") || has("win95") || has("win64") || has("win16")) | |
7129 " call Decho("windows") | |
7130 let ret= a:subdir | |
7131 | |
7132 elseif a:base =~ '^\a\+://' | |
7133 " call Decho("remote linux/macos") | |
7134 let urlbase = substitute(a:base,'^\(\a\+://.\{-}/\)\(.*\)$','\1','') | |
7135 let curpath = substitute(a:base,'^\(\a\+://.\{-}/\)\(.*\)$','\2','') | |
7136 if a:subdir == '../' | |
7137 if curpath =~ '[^/]/[^/]\+/$' | |
7138 let curpath= substitute(curpath,'[^/]\+/$','','') | |
7139 else | |
7140 let curpath="" | |
7141 endif | |
7142 let ret= urlbase.curpath | |
7143 else | |
7144 let ret= urlbase.curpath.a:subdir | |
7145 endif | |
7146 " call Decho("urlbase<".urlbase.">") | |
7147 " call Decho("curpath<".curpath.">") | |
7148 " call Decho("ret<".ret.">") | |
7149 | |
7150 else | |
7151 " call Decho("local linux/macos") | |
7152 let ret = substitute(a:base."/".a:subdir,"//","/","g") | |
7153 if a:base =~ '^//' | |
7154 " keeping initial '//' for the benefit of network share listing support | |
7155 let ret= '/'.ret | |
7156 endif | |
7157 let ret= simplify(ret) | |
7158 endif | |
7159 | |
7160 " call Dret("s:ComposePath ".ret) | |
7161 return ret | |
7162 endfun | |
7163 | |
7164 " --------------------------------------------------------------------- | |
7111 " s:FileReadable: o/s independent filereadable {{{2 | 7165 " s:FileReadable: o/s independent filereadable {{{2 |
7112 fun! s:FileReadable(fname) | 7166 fun! s:FileReadable(fname) |
7113 " call Dfunc("s:FileReadable(fname<".a:fname.">)") | 7167 " call Dfunc("s:FileReadable(fname<".a:fname.">)") |
7114 | 7168 |
7115 if g:netrw_cygwin | 7169 if g:netrw_cygwin |
7132 if !exists("b:netrw_tmpfile") | 7186 if !exists("b:netrw_tmpfile") |
7133 " get a brand new temporary filename | 7187 " get a brand new temporary filename |
7134 let tmpfile= tempname() | 7188 let tmpfile= tempname() |
7135 " call Decho("tmpfile<".tmpfile."> : from tempname()") | 7189 " call Decho("tmpfile<".tmpfile."> : from tempname()") |
7136 | 7190 |
7137 let tmpfile= escape(substitute(tmpfile,'\','/','ge'),g:netrw_tmpfile_escape) | 7191 let tmpfile= substitute(tmpfile,'\','/','ge') |
7138 " call Decho("tmpfile<".tmpfile."> : chgd any \\ -> /") | 7192 " call Decho("tmpfile<".tmpfile."> : chgd any \\ -> /") |
7139 | 7193 |
7140 " sanity check -- does the temporary file's directory exist? | 7194 " sanity check -- does the temporary file's directory exist? |
7141 if !isdirectory(substitute(tmpfile,'[^/]\+$','','e')) | 7195 if !isdirectory(substitute(tmpfile,'[^/]\+$','','e')) |
7142 " call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap) | 7196 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap) |
7143 call netrw#ErrorMsg(s:ERROR,"your <".substitute(tmpfile,'[^/]\+$','','e')."> directory is missing!",2) | 7197 call netrw#ErrorMsg(s:ERROR,"your <".substitute(tmpfile,'[^/]\+$','','e')."> directory is missing!",2) |
7144 " call Dret("s:GetTempfile getcwd<".getcwd().">") | 7198 " call Dret("s:GetTempfile getcwd<".getcwd().">") |
7145 return "" | 7199 return "" |
7146 endif | 7200 endif |
7147 | 7201 |
7174 if a:fname =~ '.tar.gz' || a:fname =~ '.tar.bz2' | 7228 if a:fname =~ '.tar.gz' || a:fname =~ '.tar.bz2' |
7175 let suffix = ".tar".substitute(a:fname,'^.*\(\.[^./]\+\)$','\1','e') | 7229 let suffix = ".tar".substitute(a:fname,'^.*\(\.[^./]\+\)$','\1','e') |
7176 else | 7230 else |
7177 let suffix = substitute(a:fname,'^.*\(\.[^./]\+\)$','\1','e') | 7231 let suffix = substitute(a:fname,'^.*\(\.[^./]\+\)$','\1','e') |
7178 endif | 7232 endif |
7179 let suffix = escape(suffix,g:netrw_tmpfile_escape) | |
7180 " call Decho("suffix<".suffix.">") | 7233 " call Decho("suffix<".suffix.">") |
7181 let tmpfile= substitute(tmpfile,'\.tmp$','','e') | 7234 let tmpfile= substitute(tmpfile,'\.tmp$','','e') |
7182 " call Decho("chgd tmpfile<".tmpfile."> (removed any .tmp suffix)") | 7235 " call Decho("chgd tmpfile<".tmpfile."> (removed any .tmp suffix)") |
7183 let tmpfile .= suffix | 7236 let tmpfile .= suffix |
7184 " call Decho("chgd tmpfile<".tmpfile."> (added ".suffix." suffix) netrw_fname<".b:netrw_fname.">") | 7237 " call Decho("chgd tmpfile<".tmpfile."> (added ".suffix." suffix) netrw_fname<".b:netrw_fname.">") |
7185 let s:netrw_tmpfile= tmpfile " supports netrw#NetSource() | 7238 let s:netrw_tmpfile= tmpfile " supports netrw#NetSource() |
7186 endif | 7239 endif |
7187 endif | 7240 endif |
7188 | 7241 |
7189 " call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap) | 7242 " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap) |
7190 " call Dret("s:GetTempfile <".tmpfile.">") | 7243 " call Dret("s:GetTempfile <".tmpfile.">") |
7191 return tmpfile | 7244 return tmpfile |
7192 endfun | 7245 endfun |
7193 | 7246 |
7194 " --------------------------------------------------------------------- | 7247 " --------------------------------------------------------------------- |
7195 " s:MakeSshCmd: transforms input command using USEPORT HOSTNAME into {{{2 | 7248 " s:MakeSshCmd: transforms input command using USEPORT HOSTNAME into {{{2 |
7196 " a correct command | 7249 " a correct command for use with a system() call |
7197 fun! s:MakeSshCmd(sshcmd) | 7250 fun! s:MakeSshCmd(sshcmd) |
7198 " call Dfunc("s:MakeSshCmd(sshcmd<".a:sshcmd.">) user<".s:user."> machine<".s:machine.">") | 7251 " call Dfunc("s:MakeSshCmd(sshcmd<".a:sshcmd.">) user<".s:user."> machine<".s:machine.">") |
7199 let sshcmd = substitute(a:sshcmd,'\<HOSTNAME\>',s:user.s:machine,'') | 7252 let sshcmd = substitute(a:sshcmd,'\<HOSTNAME\>',s:user.s:machine,'') |
7200 if exists("g:netrw_port") && g:netrw_port != "" | 7253 if exists("g:netrw_port") && g:netrw_port != "" |
7201 let sshcmd= substitute(sshcmd,"USEPORT",g:netrw_sshport.' '.g:netrw_port,'') | 7254 let sshcmd= substitute(sshcmd,"USEPORT",g:netrw_sshport.' '.g:netrw_port,'') |
7207 " call Dret("s:MakeSshCmd <".sshcmd.">") | 7260 " call Dret("s:MakeSshCmd <".sshcmd.">") |
7208 return sshcmd | 7261 return sshcmd |
7209 endfun | 7262 endfun |
7210 | 7263 |
7211 " --------------------------------------------------------------------- | 7264 " --------------------------------------------------------------------- |
7212 " s:RemoteSystem: runs a command on a remote host using ssh {{{2 | 7265 " s:NetrwBMShow: {{{2 |
7213 " Returns status | 7266 fun! s:NetrwBMShow() |
7214 fun! s:RemoteSystem(cmd) | 7267 " call Dfunc("s:NetrwBMShow()") |
7215 " call Dfunc("s:RemoteSystem(cmd<".a:cmd.">)") | 7268 redir => bmshowraw |
7216 if !executable(g:netrw_ssh_cmd) | 7269 menu |
7217 call netrw#ErrorMsg(s:ERROR,"g:netrw_ssh_cmd<".g:netrw_ssh_cmd."> is not executable!",52) | 7270 redir END |
7218 elseif !exists("b:netrw_curdir") | 7271 let bmshowlist = split(bmshowraw,'\n') |
7219 call netrw#ErrorMsg(s:ERROR,"for some reason b:netrw_curdir doesn't exist!",53) | 7272 if bmshowlist != [] |
7273 let bmshowfuncs= filter(bmshowlist,'v:val =~ "<SNR>\\d\\+_BMShow()"') | |
7274 if bmshowfuncs != [] | |
7275 let bmshowfunc = substitute(bmshowfuncs[0],'^.*:\(call.*BMShow()\).*$','\1','') | |
7276 if bmshowfunc =~ '^call.*BMShow()' | |
7277 exe "silent! ".bmshowfunc | |
7278 endif | |
7279 endif | |
7280 endif | |
7281 " call Dret("s:NetrwBMShow : bmshowfunc<".(exists("bmshowfunc")? bmshowfunc : 'n/a').">") | |
7282 endfun | |
7283 | |
7284 " --------------------------------------------------------------------- | |
7285 " s:NetrwDelete: Deletes a file. {{{2 | |
7286 " Uses Steve Hall's idea to insure that Windows paths stay | |
7287 " acceptable. No effect on Unix paths. | |
7288 " Examples of use: let result= s:NetrwDelete(path) | |
7289 fun! s:NetrwDelete(path) | |
7290 " call Dfunc("s:NetrwDelete(path<".a:path.">)") | |
7291 | |
7292 let path = s:WinPath(a:path) | |
7293 if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16")) | |
7294 if exists("+shellslash") | |
7295 let sskeep= &shellslash | |
7296 setlocal noshellslash | |
7297 let result = delete(path) | |
7298 let &shellslash = sskeep | |
7299 else | |
7300 " call Decho("exe let result= ".a:cmd."('".path."')") | |
7301 let result= delete(path) | |
7302 endif | |
7220 else | 7303 else |
7221 let cmd = s:MakeSshCmd(g:netrw_ssh_cmd." USEPORT HOSTNAME") | 7304 " call Decho("let result= delete(".path.")") |
7222 let remotedir= substitute(b:netrw_curdir,'^.*//[^/]\+/\(.*\)$','\1','') | 7305 let result= delete(path) |
7223 if remotedir != "" | 7306 endif |
7224 let cmd= cmd.' "cd '.shellescape(remotedir).";" | 7307 if result < 0 |
7225 else | 7308 call Netrw#ErrorMsg(s:WARNING,"delete(".path.") failed!",71) |
7226 let cmd= cmd.' "' | 7309 endif |
7227 endif | 7310 |
7228 let cmd= cmd.a:cmd.'"' | 7311 " call Dret("s:NetrwDelete ".result) |
7229 " call Decho("call system(".cmd.")") | 7312 return result |
7230 let ret= system(cmd) | |
7231 endif | |
7232 " call Dret("s:RemoteSystem ".ret) | |
7233 return ret | |
7234 endfun | 7313 endfun |
7235 | 7314 |
7236 " --------------------------------------------------------------------- | 7315 " --------------------------------------------------------------------- |
7237 " s:NetrwEnew: opens a new buffer, passes netrw buffer variables through {{{2 | 7316 " s:NetrwEnew: opens a new buffer, passes netrw buffer variables through {{{2 |
7238 fun! s:NetrwEnew(curdir) | 7317 fun! s:NetrwEnew(curdir) |
7284 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST | 7363 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST |
7285 file NetrwTreeListing | 7364 file NetrwTreeListing |
7286 nno <silent> <buffer> [ :silent call <SID>TreeListMove('[')<cr> | 7365 nno <silent> <buffer> [ :silent call <SID>TreeListMove('[')<cr> |
7287 nno <silent> <buffer> ] :silent call <SID>TreeListMove(']')<cr> | 7366 nno <silent> <buffer> ] :silent call <SID>TreeListMove(']')<cr> |
7288 else | 7367 else |
7289 exe "silent! keepalt file ".b:netrw_curdir | 7368 exe "silent! keepalt file ".fnameescape(b:netrw_curdir) |
7290 endif | 7369 endif |
7291 endif | 7370 endif |
7292 | 7371 |
7293 " call Dret("s:NetrwEnew : buf#".bufnr("%")."<".bufname("%")."> expand(%)<".expand("%")."> expand(#)<".expand("#").">") | 7372 " call Dret("s:NetrwEnew : buf#".bufnr("%")."<".bufname("%")."> expand(%)<".expand("%")."> expand(#)<".expand("#").">") |
7294 endfun | 7373 endfun |
7295 | 7374 |
7296 " ------------------------------------------------------------------------ | 7375 " ------------------------------------------------------------------------ |
7297 " netrw#NetrwSavePosn: saves position of cursor on screen {{{2 | |
7298 fun! netrw#NetrwSavePosn() | |
7299 " call Dfunc("netrw#NetrwSavePosn()") | |
7300 " Save current line and column | |
7301 let w:netrw_winnr= winnr() | |
7302 let w:netrw_line = line(".") | |
7303 let w:netrw_col = virtcol(".") | |
7304 | |
7305 " Save top-of-screen line | |
7306 norm! H0 | |
7307 let w:netrw_hline= line(".") | |
7308 | |
7309 " set up string holding position parameters | |
7310 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 | |
7311 | |
7312 call netrw#NetrwRestorePosn() | |
7313 " call Dret("netrw#NetrwSavePosn : winnr=".w:netrw_winnr." line=".w:netrw_line." col=".w:netrw_col." hline=".w:netrw_hline) | |
7314 return ret | |
7315 endfun | |
7316 | |
7317 " ------------------------------------------------------------------------ | |
7318 " netrw#NetrwRestorePosn: restores the cursor and file position as saved by NetrwSavePosn() {{{2 | |
7319 fun! netrw#NetrwRestorePosn(...) | |
7320 " call Dfunc("netrw#NetrwRestorePosn() a:0=".a:0." winnr=".(exists("w:netrw_winnr")? w:netrw_winnr : -1)." line=".(exists("w:netrw_line")? w:netrw_line : -1)." col=".(exists("w:netrw_col")? w:netrw_col : -1)." hline=".(exists("w:netrw_hline")? w:netrw_hline : -1)) | |
7321 let eikeep= &ei | |
7322 set ei=all | |
7323 if expand("%") == "NetrwMessage" | |
7324 exe s:winBeforeErr."wincmd w" | |
7325 endif | |
7326 | |
7327 if a:0 > 0 | |
7328 exe a:1 | |
7329 endif | |
7330 | |
7331 " restore window | |
7332 if exists("w:netrw_winnr") | |
7333 " call Decho("restore window: exe silent! ".w:netrw_winnr."wincmd w") | |
7334 exe "silent! ".w:netrw_winnr."wincmd w" | |
7335 endif | |
7336 if v:shell_error == 0 | |
7337 " as suggested by Bram M: redraw on no error | |
7338 " allows protocol error messages to remain visible | |
7339 " redraw! | |
7340 endif | |
7341 | |
7342 " restore top-of-screen line | |
7343 if exists("w:netrw_hline") | |
7344 " call Decho("restore topofscreen: exe norm! ".w:netrw_hline."G0z") | |
7345 exe "norm! ".w:netrw_hline."G0z\<CR>" | |
7346 endif | |
7347 | |
7348 " restore position | |
7349 if exists("w:netrw_line") && exists("w:netrw_col") | |
7350 " call Decho("restore posn: exe norm! ".w:netrw_line."G0".w:netrw_col."|") | |
7351 exe "norm! ".w:netrw_line."G0".w:netrw_col."\<bar>" | |
7352 endif | |
7353 | |
7354 let &ei= eikeep | |
7355 " call Dret("netrw#NetrwRestorePosn") | |
7356 endfun | |
7357 | |
7358 " --------------------------------------------------------------------- | |
7359 " s:NetrwSaveWordPosn: used to keep cursor on same word after refresh, {{{2 | 7376 " s:NetrwSaveWordPosn: used to keep cursor on same word after refresh, {{{2 |
7360 " changed sorting, etc. Also see s:NetrwRestoreWordPosn(). | 7377 " changed sorting, etc. Also see s:NetrwRestoreWordPosn(). |
7361 fun! s:NetrwSaveWordPosn() | 7378 fun! s:NetrwSaveWordPosn() |
7362 " call Dfunc("NetrwSaveWordPosn()") | 7379 " call Dfunc("NetrwSaveWordPosn()") |
7363 let s:netrw_saveword= '^'.fnameescape(getline('.')).'$' | 7380 let s:netrw_saveword= '^'.fnameescape(getline('.')).'$' |
7369 " changed sorting, etc. Also see s:NetrwSaveWordPosn(). | 7386 " changed sorting, etc. Also see s:NetrwSaveWordPosn(). |
7370 fun! s:NetrwRestoreWordPosn() | 7387 fun! s:NetrwRestoreWordPosn() |
7371 " call Dfunc("NetrwRestoreWordPosn()") | 7388 " call Dfunc("NetrwRestoreWordPosn()") |
7372 silent! call search(s:netrw_saveword,'w') | 7389 silent! call search(s:netrw_saveword,'w') |
7373 " call Dret("NetrwRestoreWordPosn") | 7390 " call Dret("NetrwRestoreWordPosn") |
7391 endfun | |
7392 | |
7393 " --------------------------------------------------------------------- | |
7394 " s:RestoreBufVars: {{{2 | |
7395 fun! s:RestoreBufVars() | |
7396 " call Dfunc("s:RestoreBufVars()") | |
7397 | |
7398 if exists("s:netrw_curdir") |let b:netrw_curdir = s:netrw_curdir |endif | |
7399 if exists("s:netrw_lastfile") |let b:netrw_lastfile = s:netrw_lastfile |endif | |
7400 if exists("s:netrw_method") |let b:netrw_method = s:netrw_method |endif | |
7401 if exists("s:netrw_fname") |let b:netrw_fname = s:netrw_fname |endif | |
7402 if exists("s:netrw_machine") |let b:netrw_machine = s:netrw_machine |endif | |
7403 if exists("s:netrw_browser_active")|let b:netrw_browser_active = s:netrw_browser_active|endif | |
7404 | |
7405 " call Dret("s:RestoreBufVars") | |
7374 endfun | 7406 endfun |
7375 | 7407 |
7376 " --------------------------------------------------------------------- | 7408 " --------------------------------------------------------------------- |
7377 " s:RemotePathAnalysis: {{{2 | 7409 " s:RemotePathAnalysis: {{{2 |
7378 fun! s:RemotePathAnalysis(dirname) | 7410 fun! s:RemotePathAnalysis(dirname) |
7395 | 7427 |
7396 " call Dret("s:RemotePathAnalysis") | 7428 " call Dret("s:RemotePathAnalysis") |
7397 endfun | 7429 endfun |
7398 | 7430 |
7399 " --------------------------------------------------------------------- | 7431 " --------------------------------------------------------------------- |
7400 " s:RestoreBufVars: {{{2 | 7432 " s:RemoteSystem: runs a command on a remote host using ssh {{{2 |
7401 fun! s:RestoreBufVars() | 7433 " Returns status |
7402 " call Dfunc("s:RestoreBufVars()") | 7434 " Runs system() on |
7403 | 7435 " [cd REMOTEDIRPATH;] a:cmd |
7404 if exists("s:netrw_curdir") |let b:netrw_curdir = s:netrw_curdir |endif | 7436 " Note that it doesn't do shellescape(a:cmd)! |
7405 if exists("s:netrw_lastfile") |let b:netrw_lastfile = s:netrw_lastfile |endif | 7437 fun! s:RemoteSystem(cmd) |
7406 if exists("s:netrw_method") |let b:netrw_method = s:netrw_method |endif | 7438 " call Dfunc("s:RemoteSystem(cmd<".a:cmd.">)") |
7407 if exists("s:netrw_fname") |let b:netrw_fname = s:netrw_fname |endif | 7439 if !executable(g:netrw_ssh_cmd) |
7408 if exists("s:netrw_machine") |let b:netrw_machine = s:netrw_machine |endif | 7440 call netrw#ErrorMsg(s:ERROR,"g:netrw_ssh_cmd<".g:netrw_ssh_cmd."> is not executable!",52) |
7409 if exists("s:netrw_browser_active")|let b:netrw_browser_active = s:netrw_browser_active|endif | 7441 elseif !exists("b:netrw_curdir") |
7410 | 7442 call netrw#ErrorMsg(s:ERROR,"for some reason b:netrw_curdir doesn't exist!",53) |
7411 " call Dret("s:RestoreBufVars") | 7443 else |
7444 let cmd = s:MakeSshCmd(g:netrw_ssh_cmd." USEPORT HOSTNAME") | |
7445 let remotedir= substitute(b:netrw_curdir,'^.*//[^/]\+/\(.*\)$','\1','') | |
7446 if remotedir != "" | |
7447 let cmd= cmd.' cd '.shellescape(remotedir).";" | |
7448 else | |
7449 let cmd= cmd.' ' | |
7450 endif | |
7451 let cmd= cmd.a:cmd | |
7452 " call Decho("call system(".cmd.")") | |
7453 let ret= system(cmd) | |
7454 endif | |
7455 " call Dret("s:RemoteSystem ".ret) | |
7456 return ret | |
7412 endfun | 7457 endfun |
7413 | 7458 |
7414 " --------------------------------------------------------------------- | 7459 " --------------------------------------------------------------------- |
7415 " s:RestoreWinVars: (used by Explore() and NetrwSplit()) {{{2 | 7460 " s:RestoreWinVars: (used by Explore() and NetrwSplit()) {{{2 |
7416 fun! s:RestoreWinVars() | 7461 fun! s:RestoreWinVars() |
7584 " call Dret("s:Strlen ".ret) | 7629 " call Dret("s:Strlen ".ret) |
7585 return ret | 7630 return ret |
7586 endfun | 7631 endfun |
7587 | 7632 |
7588 " --------------------------------------------------------------------- | 7633 " --------------------------------------------------------------------- |
7589 " s:System: using Steve Hall's idea to insure that Windows paths stay {{{2 | |
7590 " acceptable. No effect on Unix paths. | |
7591 " Examples of use: let result= s:System("rm",path) | |
7592 " let result= s:System("delete",path) | |
7593 fun! netrw#System(cmd,path) | |
7594 echomsg s:System(a:cmd,a:path) | |
7595 endfun | |
7596 fun! s:System(cmd,path) | |
7597 " call Dfunc("s:System(cmd<".a:cmd."> path<".a:path.">)") | |
7598 | |
7599 let path = a:path | |
7600 if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16")) | |
7601 " system call prep | |
7602 " remove trailing slash (Win95) | |
7603 let path = substitute(path, '\(\\\|/\)$', '', 'g') | |
7604 " remove escaped spaces | |
7605 let path = substitute(path, '\ ', ' ', 'g') | |
7606 " convert slashes to backslashes | |
7607 let path = substitute(path, '/', '\', 'g') | |
7608 if exists("+shellslash") | |
7609 let sskeep= &shellslash | |
7610 setlocal noshellslash | |
7611 exe "let result= ".a:cmd."('".path."')" | |
7612 let &shellslash = sskeep | |
7613 else | |
7614 " call Decho("exe let result= ".a:cmd."('".path."')") | |
7615 exe "let result= ".a:cmd."('".path."')" | |
7616 endif | |
7617 else | |
7618 " call Decho("exe let result= ".a:cmd."('".path."')") | |
7619 exe "let result= ".a:cmd."('".path."')" | |
7620 endif | |
7621 | |
7622 " call Dret("s:System result<".result.">") | |
7623 return result | |
7624 endfun | |
7625 | |
7626 " --------------------------------------------------------------------- | |
7627 " s:TreeListMove: {{{2 | 7634 " s:TreeListMove: {{{2 |
7628 fun! s:TreeListMove(dir) | 7635 fun! s:TreeListMove(dir) |
7629 " call Dfunc("s:TreeListMove(dir<".a:dir.">)") | 7636 " call Dfunc("s:TreeListMove(dir<".a:dir.">)") |
7630 let curline = getline('.') | 7637 let curline = getline('.') |
7631 let prvline = (line(".") > 1)? getline(line(".")-1) : '' | 7638 let prvline = (line(".") > 1)? getline(line(".")-1) : '' |
7675 endif | 7682 endif |
7676 | 7683 |
7677 endif | 7684 endif |
7678 | 7685 |
7679 " call Dret("s:TreeListMove") | 7686 " call Dret("s:TreeListMove") |
7687 endfun | |
7688 | |
7689 " --------------------------------------------------------------------- | |
7690 " s:UpdateBuffersMenu: does emenu Buffers.Refresh (but due to locale, the menu item may not be called that) {{{2 | |
7691 " The Buffers.Refresh menu calls s:BMShow(); unfortunately, that means that that function | |
7692 " can't be called except via emenu. But due to locale, that menu line may not be called | |
7693 " Buffers.Refresh; hence, s:NetrwBMShow() utilizes a "cheat" to call that function anyway. | |
7694 fun! s:UpdateBuffersMenu() | |
7695 " call Dfunc("s:UpdateBuffersMenu()") | |
7696 if has("gui") && has("menu") && has("gui_running") && &go =~ 'm' | |
7697 try | |
7698 silent emenu Buffers.Refresh\ menu | |
7699 catch /^Vim\%((\a\+)\)\=:E/ | |
7700 let v:errmsg= "" | |
7701 silent call s:NetrwBMShow() | |
7702 endtry | |
7703 endif | |
7704 " call Dret("s:UpdateBuffersMenu") | |
7680 endfun | 7705 endfun |
7681 | 7706 |
7682 " --------------------------------------------------------------------- | 7707 " --------------------------------------------------------------------- |
7683 " s:UseBufWinVars: (used by NetrwBrowse() and LocalBrowseCheck() {{{2 | 7708 " s:UseBufWinVars: (used by NetrwBrowse() and LocalBrowseCheck() {{{2 |
7684 " Matching function to BufferWinVars() | 7709 " Matching function to BufferWinVars() |
7696 if exists("b:netrw_explore_list") && !exists("w:netrw_explore_list") |let w:netrw_explore_list = b:netrw_explore_list |endif | 7721 if exists("b:netrw_explore_list") && !exists("w:netrw_explore_list") |let w:netrw_explore_list = b:netrw_explore_list |endif |
7697 " call Dret("s:UseBufWinVars") | 7722 " call Dret("s:UseBufWinVars") |
7698 endfun | 7723 endfun |
7699 | 7724 |
7700 " --------------------------------------------------------------------- | 7725 " --------------------------------------------------------------------- |
7726 " s:WinPath: {{{2 | |
7727 fun! s:WinPath(path) | |
7728 " call Dfunc("s:WinPath(path<".a:path.">)") | |
7729 if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16")) | |
7730 " remove trailing slash (Win95) | |
7731 let path = substitute(a:path, '\(\\\|/\)$', '', 'g') | |
7732 " remove escaped spaces | |
7733 let path = substitute(path, '\ ', ' ', 'g') | |
7734 " convert slashes to backslashes | |
7735 let path = substitute(path, '/', '\', 'g') | |
7736 else | |
7737 let path= a:path | |
7738 endif | |
7739 " call Dret("s:WinPath <".path.">") | |
7740 return path | |
7741 endfun | |
7742 | |
7743 " --------------------------------------------------------------------- | |
7701 " Settings Restoration: {{{2 | 7744 " Settings Restoration: {{{2 |
7702 let &cpo= s:keepcpo | 7745 let &cpo= s:keepcpo |
7703 unlet s:keepcpo | 7746 unlet s:keepcpo |
7704 | 7747 |
7705 " ------------------------------------------------------------------------ | 7748 " ------------------------------------------------------------------------ |