Mercurial > vim
comparison runtime/plugin/netrw.vim @ 24:8ff7fd162d3c v7.0016
updated for version 7.0016
author | vimboss |
---|---|
date | Mon, 13 Sep 2004 20:26:32 +0000 |
parents | cc049b00ee70 |
children | 404aac550f35 |
comparison
equal
deleted
inserted
replaced
23:3f44e9abe4ec | 24:8ff7fd162d3c |
---|---|
1 " netrw.vim: Handles file transfer and remote directory listing across a network | 1 " netrw.vim: Handles file transfer and remote directory listing across a network |
2 " Last Change: Aug 27, 2004 | 2 " Last Change: Sep 10, 2004 |
3 " Maintainer: Charles E. Campbell, Jr. PhD <drchipNOSPAM at campbellfamily.biz> | 3 " Maintainer: Charles E. Campbell, Jr. PhD <drchipNOSPAM at campbellfamily.biz> |
4 " Version: 47 | 4 " Version: 48 |
5 " License: Vim License (see vim's :help license) | 5 " License: Vim License (see vim's :help license) |
6 " | 6 " |
7 " But be doers of the word, and not only hearers, deluding your own selves | 7 " But be doers of the Word, and not only hearers, deluding your own selves |
8 " (James 1:22 RSV) | 8 " (James 1:22 RSV) |
9 " =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | 9 " =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- |
10 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim | 10 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim |
11 | 11 |
12 " --------------------------------------------------------------------- | 12 " --------------------------------------------------------------------- |
13 " Prevent Reloading: {{{1 | 13 " Prevent Reloading: {{{1 |
14 if exists("loaded_netrw") || &cp | 14 if exists("g:loaded_netrw") || &cp |
15 finish | 15 finish |
16 endif | 16 endif |
17 let loaded_netrw = "v47" | 17 let g:loaded_netrw = "v48" |
18 let s:save_cpo = &cpo | 18 let s:save_cpo = &cpo |
19 let loaded_explorer = 1 | 19 let loaded_explorer = 1 |
20 set cpo&vim | 20 set cpo&vim |
21 | 21 |
22 " --------------------------------------------------------------------- | 22 " --------------------------------------------------------------------- |
41 else | 41 else |
42 " call Decho("ssh is not executable, can't do remote directory exploring") | 42 " call Decho("ssh is not executable, can't do remote directory exploring") |
43 let g:netrw_list_cmd= "" | 43 let g:netrw_list_cmd= "" |
44 endif | 44 endif |
45 endif | 45 endif |
46 if !exists("g:netrw_ftp_list_cmd") | |
47 if has("unix") || exists("g:netrw_cygwin") | |
48 let g:netrw_ftp_list_cmd= "ls -lF" | |
49 else | |
50 let g:netrw_ftp_list_cmd= "dir" | |
51 endif | |
52 endif | |
46 if !exists("g:netrw_rm_cmd") | 53 if !exists("g:netrw_rm_cmd") |
47 let g:netrw_rm_cmd = "ssh HOSTNAME rm" | 54 let g:netrw_rm_cmd = "ssh HOSTNAME rm" |
48 endif | 55 endif |
49 if !exists("g:netrw_rmf_cmd") | 56 if !exists("g:netrw_rmf_cmd") |
50 let g:netrw_rmf_cmd = "ssh HOSTNAME rm -f" | 57 let g:netrw_rmf_cmd = "ssh HOSTNAME rm -f" |
109 endif | 116 endif |
110 if !exists("g:netrw_ftp_browse_reject") | 117 if !exists("g:netrw_ftp_browse_reject") |
111 let g:netrw_ftp_browse_reject='^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not' | 118 let g:netrw_ftp_browse_reject='^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not' |
112 endif | 119 endif |
113 if !exists("g:netrw_keepdir") | 120 if !exists("g:netrw_keepdir") |
114 let g:netrw_keepdir= 0 | 121 let g:netrw_keepdir= 1 |
115 endif | 122 endif |
116 if !exists("s:netrw_cd_escape") | 123 if !exists("s:netrw_cd_escape") |
117 if has("win32") || has("win95") || has("win64") || has("win16") | 124 if has("win32") || has("win95") || has("win64") || has("win16") |
118 let s:netrw_cd_escape="#% " | 125 let s:netrw_cd_escape="#% " |
119 else | 126 else |
120 let s:netrw_cd_escape="*$%'\" ?`" | 127 let s:netrw_cd_escape="[]#*$%'\" ?`!&();<>\\" |
121 endif | 128 endif |
122 endif | 129 endif |
123 if !exists("s:netrw_glob_escape") | 130 if !exists("s:netrw_glob_escape") |
124 if has("win32") || has("win95") || has("win64") || has("win16") | 131 if has("win32") || has("win95") || has("win64") || has("win16") |
125 let s:netrw_glob_escape= "" | 132 let s:netrw_glob_escape= "" |
126 else | 133 else |
127 let s:netrw_glob_escape= '[]*?`{~' | 134 let s:netrw_glob_escape= '[]*?`{~$' |
128 endif | 135 endif |
136 endif | |
137 if !exists("g:netrw_alto") | |
138 let g:netrw_alto= 0 | |
139 endif | |
140 if !exists("g:netrw_altv") | |
141 let g:netrw_altv= 0 | |
129 endif | 142 endif |
130 | 143 |
131 " BufEnter event ignored by decho when following variable is true | 144 " BufEnter event ignored by decho when following variable is true |
132 " Has a side effect that doau BufReadPost doesn't work, so | 145 " Has a side effect that doau BufReadPost doesn't work, so |
133 " files read by network transfer aren't appropriately highlighted. | 146 " files read by network transfer aren't appropriately highlighted. |
284 exe "let choice= a:" . ichoice | 297 exe "let choice= a:" . ichoice |
285 " call Decho("no lastfile: choice<" . choice . ">") | 298 " call Decho("no lastfile: choice<" . choice . ">") |
286 | 299 |
287 if match(choice,"?") == 0 | 300 if match(choice,"?") == 0 |
288 " give help | 301 " give help |
289 echo 'NetRead Usage:' | 302 echomsg 'NetRead Usage:' |
290 echo ':Nread machine:path uses rcp' | 303 echomsg ':Nread machine:path uses rcp' |
291 echo ':Nread "machine path" uses ftp with <.netrc>' | 304 echomsg ':Nread "machine path" uses ftp with <.netrc>' |
292 echo ':Nread "machine id password path" uses ftp' | 305 echomsg ':Nread "machine id password path" uses ftp' |
293 echo ':Nread dav://machine[:port]/path uses cadaver' | 306 echomsg ':Nread dav://machine[:port]/path uses cadaver' |
294 echo ':Nread fetch://machine/path uses fetch' | 307 echomsg ':Nread fetch://machine/path uses fetch' |
295 echo ':Nread ftp://[user@]machine[:port]/path uses ftp autodetects <.netrc>' | 308 echomsg ':Nread ftp://[user@]machine[:port]/path uses ftp autodetects <.netrc>' |
296 echo ':Nread http://[user@]machine/path uses http wget' | 309 echomsg ':Nread http://[user@]machine/path uses http wget' |
297 echo ':Nread rcp://[user@]machine/path uses rcp' | 310 echomsg ':Nread rcp://[user@]machine/path uses rcp' |
298 echo ':Nread rsync://machine[:port]/path uses rsync' | 311 echomsg ':Nread rsync://machine[:port]/path uses rsync' |
299 echo ':Nread scp://[user@]machine[[:#]port]/path uses scp' | 312 echomsg ':Nread scp://[user@]machine[[:#]port]/path uses scp' |
300 echo ':Nread sftp://[user@]machine[[:#]port]/path uses sftp' | 313 echomsg ':Nread sftp://[user@]machine[[:#]port]/path uses sftp' |
301 break | 314 break |
302 | 315 |
303 elseif match(choice,"^\"") != -1 | 316 elseif match(choice,"^\"") != -1 |
304 " Reconstruct Choice if choice starts with '"' | 317 " Reconstruct Choice if choice starts with '"' |
305 " call Decho("reconstructing choice") | 318 " call Decho("reconstructing choice") |
313 | 326 |
314 while match(choice,"\"$") == -1 | 327 while match(choice,"\"$") == -1 |
315 let wholechoice = wholechoice . " " . choice | 328 let wholechoice = wholechoice . " " . choice |
316 let ichoice = ichoice + 1 | 329 let ichoice = ichoice + 1 |
317 if ichoice > a:0 | 330 if ichoice > a:0 |
318 echoerr "Unbalanced string in filename '". wholechoice ."'" | 331 if !exists("g:netrw_quiet") |
332 echoerr "Unbalanced string in filename '". wholechoice ."'" | |
333 endif | |
319 " call Dret("NetRead") | 334 " call Dret("NetRead") |
320 return | 335 return |
321 endif | 336 endif |
322 let choice= a:{ichoice} | 337 let choice= a:{ichoice} |
323 endwhile | 338 endwhile |
395 else | 410 else |
396 " call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine) | 411 " call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine) |
397 exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine | 412 exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine |
398 endif | 413 endif |
399 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) | 414 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) |
400 if getline(1) !~ "^$" | 415 if getline(1) !~ "^$" && !exists("g:netrw_quiet") |
401 let debugkeep= &debug | 416 let debugkeep= &debug |
402 set debug=msg | 417 set debug=msg |
403 echoerr getline(1) | 418 echoerr getline(1) |
404 exe "echomsg '".getline(1)."'" | |
405 let &debug= debugkeep | 419 let &debug= debugkeep |
406 endif | 420 endif |
407 bd! | 421 bd! |
408 let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) | 422 let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) |
409 let b:netrw_lastfile = choice | 423 let b:netrw_lastfile = choice |
443 " call Decho("executing: %!".g:netrw_ftp_cmd." -i -n") | 457 " call Decho("executing: %!".g:netrw_ftp_cmd." -i -n") |
444 exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n" | 458 exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n" |
445 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) | 459 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) |
446 if getline(1) !~ "^$" | 460 if getline(1) !~ "^$" |
447 " call Decho("error<".getline(1).">") | 461 " call Decho("error<".getline(1).">") |
448 echoerr getline(1) | 462 if !exists("g:netrw_quiet") |
463 echoerr getline(1) | |
464 endif | |
449 endif | 465 endif |
450 bd! | 466 bd! |
451 let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) | 467 let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) |
452 let b:netrw_lastfile = choice | 468 let b:netrw_lastfile = choice |
453 | 469 |
473 | 489 |
474 "......................................... | 490 "......................................... |
475 elseif b:netrw_method == 5 " read with http (wget) | 491 elseif b:netrw_method == 5 " read with http (wget) |
476 " call Decho("read via http (method #5)") | 492 " call Decho("read via http (method #5)") |
477 if g:netrw_http_cmd == "" | 493 if g:netrw_http_cmd == "" |
478 echoerr "neither wget nor fetch command is available" | 494 if !exists("g:netrw_quiet") |
495 echoerr "neither wget nor fetch command is available" | |
496 endif | |
479 exit | 497 exit |
480 endif | 498 endif |
481 | 499 |
482 if match(b:netrw_fname,"#") == -1 | 500 if match(b:netrw_fname,"#") == -1 |
483 " simple wget | 501 " simple wget |
548 "......................................... | 566 "......................................... |
549 " fetch: NetRead Method #8 | 567 " fetch: NetRead Method #8 |
550 " fetch://[user@]host[:http]/path | 568 " fetch://[user@]host[:http]/path |
551 elseif b:netrw_method == 8 " read with fetch | 569 elseif b:netrw_method == 8 " read with fetch |
552 if g:netrw_fetch_cmd == "" | 570 if g:netrw_fetch_cmd == "" |
553 echoerr "fetch command not available" | 571 if !exists("g:netrw_quiet") |
572 echoerr "fetch command not available" | |
573 endif | |
554 exit | 574 exit |
555 endif | 575 endif |
556 if exists("g:netrw_option") && g:netrw_option == ":http" | 576 if exists("g:netrw_option") && g:netrw_option == ":http" |
557 let netrw_option= "http" | 577 let netrw_option= "http" |
558 else | 578 else |
747 else | 767 else |
748 exe "let choice= a:" . ichoice | 768 exe "let choice= a:" . ichoice |
749 | 769 |
750 " Reconstruct Choice if choice starts with '"' | 770 " Reconstruct Choice if choice starts with '"' |
751 if match(choice,"?") == 0 | 771 if match(choice,"?") == 0 |
752 echo 'NetWrite Usage:"' | 772 echomsg 'NetWrite Usage:"' |
753 echo ':Nwrite machine:path uses rcp' | 773 echomsg ':Nwrite machine:path uses rcp' |
754 echo ':Nwrite "machine path" uses ftp with <.netrc>' | 774 echomsg ':Nwrite "machine path" uses ftp with <.netrc>' |
755 echo ':Nwrite "machine id password path" uses ftp' | 775 echomsg ':Nwrite "machine id password path" uses ftp' |
756 echo ':Nwrite dav://[user@]machine/path uses cadaver' | 776 echomsg ':Nwrite dav://[user@]machine/path uses cadaver' |
757 echo ':Nwrite fetch://[user@]machine/path uses fetch' | 777 echomsg ':Nwrite fetch://[user@]machine/path uses fetch' |
758 echo ':Nwrite ftp://machine[#port]/path uses ftp (autodetects <.netrc>)' | 778 echomsg ':Nwrite ftp://machine[#port]/path uses ftp (autodetects <.netrc>)' |
759 echo ':Nwrite rcp://machine/path uses rcp' | 779 echomsg ':Nwrite rcp://machine/path uses rcp' |
760 echo ':Nwrite rsync://[user@]machine/path uses rsync' | 780 echomsg ':Nwrite rsync://[user@]machine/path uses rsync' |
761 echo ':Nwrite scp://[user@]machine[[:#]port]/path uses scp' | 781 echomsg ':Nwrite scp://[user@]machine[[:#]port]/path uses scp' |
762 echo ':Nwrite sftp://[user@]machine/path uses sftp' | 782 echomsg ':Nwrite sftp://[user@]machine/path uses sftp' |
763 break | 783 break |
764 | 784 |
765 elseif match(choice,"^\"") != -1 | 785 elseif match(choice,"^\"") != -1 |
766 if match(choice,"\"$") != -1 | 786 if match(choice,"\"$") != -1 |
767 " case "..." | 787 " case "..." |
773 | 793 |
774 while match(choice,"\"$") == -1 | 794 while match(choice,"\"$") == -1 |
775 let wholechoice= wholechoice . " " . choice | 795 let wholechoice= wholechoice . " " . choice |
776 let ichoice = ichoice + 1 | 796 let ichoice = ichoice + 1 |
777 if choice > a:0 | 797 if choice > a:0 |
778 echoerr "Unbalanced string in filename '". wholechoice ."'" | 798 if !exists("g:netrw_quiet") |
799 echoerr "Unbalanced string in filename '". wholechoice ."'" | |
800 endif | |
779 " call Dret("NetWrite") | 801 " call Dret("NetWrite") |
780 return | 802 return |
781 endif | 803 endif |
782 let choice= a:{ichoice} | 804 let choice= a:{ichoice} |
783 endwhile | 805 endwhile |
841 " call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine) | 863 " call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine) |
842 exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine | 864 exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine |
843 endif | 865 endif |
844 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) | 866 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) |
845 if getline(1) !~ "^$" | 867 if getline(1) !~ "^$" |
846 echoerr getline(1) | 868 if !exists("g:netrw_quiet") |
869 echoerr getline(1) | |
870 endif | |
847 let mod=1 | 871 let mod=1 |
848 endif | 872 endif |
849 bd! | 873 bd! |
850 let b:netrw_lastfile = choice | 874 let b:netrw_lastfile = choice |
851 | 875 |
878 norm! 1Gdd | 902 norm! 1Gdd |
879 " call Decho("executing: %!".g:netrw_ftp_cmd." -i -n") | 903 " call Decho("executing: %!".g:netrw_ftp_cmd." -i -n") |
880 exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n" | 904 exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n" |
881 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) | 905 " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) |
882 if getline(1) !~ "^$" | 906 if getline(1) !~ "^$" |
883 echoerr getline(1) | 907 if !exists("g:netrw_quiet") |
908 echoerr getline(1) | |
909 endif | |
884 let mod=1 | 910 let mod=1 |
885 endif | 911 endif |
886 bd! | 912 bd! |
887 | 913 |
888 "......................................... | 914 "......................................... |
904 let b:netrw_lastfile = choice | 930 let b:netrw_lastfile = choice |
905 | 931 |
906 "......................................... | 932 "......................................... |
907 " http: NetWrite Method #5 | 933 " http: NetWrite Method #5 |
908 elseif b:netrw_method == 5 | 934 elseif b:netrw_method == 5 |
909 echoerr "***warning*** currently <netrw.vim> does not support writing using http:" | 935 if !exists("g:netrw_quiet") |
936 echoerr "***warning*** currently <netrw.vim> does not support writing using http:" | |
937 endif | |
910 | 938 |
911 "......................................... | 939 "......................................... |
912 " dav: NetWrite Method #6 | 940 " dav: NetWrite Method #6 |
913 elseif b:netrw_method == 6 " write with cadaver | 941 elseif b:netrw_method == 6 " write with cadaver |
914 " call Decho("write via cadaver (method #6)") | 942 " call Decho("write via cadaver (method #6)") |
995 " with the requested remote hostname first. | 1023 " with the requested remote hostname first. |
996 fun! <SID>NetBrowse(dirname) | 1024 fun! <SID>NetBrowse(dirname) |
997 " call Dfunc("NetBrowse(dirname<".a:dirname.">) longlist=".g:netrw_longlist) | 1025 " call Dfunc("NetBrowse(dirname<".a:dirname.">) longlist=".g:netrw_longlist) |
998 | 1026 |
999 " sanity check | 1027 " sanity check |
1000 if exists("b:netrw_method") && (b:netrw_method =~ '[23]' && !executable("ftp")) | 1028 if exists("b:netrw_method") && b:netrw_method =~ '[23]' |
1001 echoerr "***netrw*** this system doesn't support remote directory listing via ftp" | 1029 if !executable("ftp") |
1002 " call Dret("NetBrowse") | 1030 if !exists("g:netrw_quiet") |
1003 return | 1031 echoerr "***netrw*** this system doesn't support remote directory listing via ftp" |
1032 endif | |
1033 " call Dret("NetBrowse") | |
1034 return | |
1035 endif | |
1004 elseif !exists("g:netrw_list_cmd") || g:netrw_list_cmd == '' | 1036 elseif !exists("g:netrw_list_cmd") || g:netrw_list_cmd == '' |
1005 echoerr "***netrw*** this system doesn't support remote directory listing via ssh" | 1037 if !exists("g:netrw_quiet") |
1038 echoerr "***netrw*** this system doesn't support remote directory listing via ssh" | |
1039 endif | |
1006 " call Dret("NetBrowse") | 1040 " call Dret("NetBrowse") |
1007 return | 1041 return |
1008 endif | 1042 endif |
1009 | 1043 |
1010 " make this buffer modifiable | 1044 " make this buffer modifiable |
1012 | 1046 |
1013 " analyze a:dirname and g:netrw_list_cmd | 1047 " analyze a:dirname and g:netrw_list_cmd |
1014 let dirpat = '^\(\w\{-}\)://\(\w\+@\)\=\([^/]\+\)/\(.*\)$' | 1048 let dirpat = '^\(\w\{-}\)://\(\w\+@\)\=\([^/]\+\)/\(.*\)$' |
1015 " call Decho("dirpat<".dirpat.">") | 1049 " call Decho("dirpat<".dirpat.">") |
1016 if a:dirname !~ dirpat | 1050 if a:dirname !~ dirpat |
1017 echoerr "NetBrowse: I don't understand your dirname<".a:dirname.">" | 1051 if !exists("g:netrw_quiet") |
1052 echoerr "NetBrowse: I don't understand your dirname<".a:dirname.">" | |
1053 endif | |
1018 " call Dret("NetBrowse : badly formatted dirname<".a:dirname.">") | 1054 " call Dret("NetBrowse : badly formatted dirname<".a:dirname.">") |
1019 return | 1055 return |
1020 endif | 1056 endif |
1021 | 1057 |
1022 let method = substitute(a:dirname,dirpat,'\1','') | 1058 let method = substitute(a:dirname,dirpat,'\1','') |
1029 " call Decho("set up machine<".machine.">") | 1065 " call Decho("set up machine<".machine.">") |
1030 " call Decho("set up path <".path .">") | 1066 " call Decho("set up path <".path .">") |
1031 " call Decho("set up fname <".fname .">") | 1067 " call Decho("set up fname <".fname .">") |
1032 | 1068 |
1033 if method == "ftp" | 1069 if method == "ftp" |
1034 let listcmd = "-lF" | 1070 let listcmd = g:netrw_ftp_list_cmd |
1035 else | 1071 else |
1036 let listcmd = substitute(g:netrw_list_cmd,'\<HOSTNAME\>',user.machine,'') | 1072 let listcmd = substitute(g:netrw_list_cmd,'\<HOSTNAME\>',user.machine,'') |
1037 endif | 1073 endif |
1038 if exists("b:netrw_method") | 1074 if exists("b:netrw_method") |
1039 " call Decho("setting s:netrw_method<".b:netrw_method.">") | 1075 " call Decho("setting s:netrw_method<".b:netrw_method.">") |
1040 let s:netrw_method= b:netrw_method | 1076 let s:netrw_method= b:netrw_method |
1041 endif | 1077 endif |
1042 | 1078 |
1043 " optionally sort by time (-t) or by size (-S) | 1079 " optionally sort by time (-t) or by size (-S) |
1044 if g:netrw_sort_by =~ "^t" | 1080 if listcmd == "dir" && g:netrw_sort_by =~ "^[ts]" |
1045 let listcmd= listcmd."t" | 1081 echoerr "***warning*** windows' ftp doesn't support time/size sorts (get cygwin, set g:netrw_cygwin)" |
1046 elseif g:netrw_sort_by =~ "^s" | 1082 else |
1047 let listcmd= listcmd."S" | 1083 if g:netrw_sort_by =~ "^t" |
1048 endif | 1084 let listcmd= listcmd."t" |
1049 " optionally sort in reverse | 1085 elseif g:netrw_sort_by =~ "^s" |
1050 if g:netrw_sort_direction =~ "^r" | 1086 let listcmd= listcmd."S" |
1051 let listcmd= listcmd."r" | 1087 endif |
1088 " optionally sort in reverse | |
1089 if g:netrw_sort_direction =~ "^r" && listcmd == "dir" | |
1090 let listcmd= listcmd."r" | |
1091 endif | |
1052 endif | 1092 endif |
1053 | 1093 |
1054 " call Decho("set up listcmd<".listcmd.">") | 1094 " call Decho("set up listcmd<".listcmd.">") |
1055 if fname =~ '@$' && fname !~ '^"' | 1095 if fname =~ '@$' && fname !~ '^"' |
1056 " call Decho("attempt transfer of symlink as file") | 1096 " call Decho("attempt transfer of symlink as file") |
1069 let path= substitute(path,'[*=@|]$','','e') | 1109 let path= substitute(path,'[*=@|]$','','e') |
1070 " call Decho("new path<".path.">") | 1110 " call Decho("new path<".path.">") |
1071 | 1111 |
1072 " remote-read the requested file into current buffer | 1112 " remote-read the requested file into current buffer |
1073 enew! | 1113 enew! |
1114 " call Decho("exe file .method."://".user.machine."/".escape(path,s:netrw_cd_escape)) | |
1074 exe "file ".method."://".user.machine."/".escape(path,s:netrw_cd_escape) | 1115 exe "file ".method."://".user.machine."/".escape(path,s:netrw_cd_escape) |
1075 exe "silent doau BufReadPre ".fname | 1116 exe "silent doau BufReadPre ".fname |
1076 silent call s:NetRead(method."://".user.machine."/".path) | 1117 silent call s:NetRead(method."://".user.machine."/".path) |
1077 exe "silent doau BufReadPost ".fname | 1118 exe "silent doau BufReadPost ".fname |
1078 keepjumps 1d | 1119 keepjumps 1d |
1085 " --------------------------------------------------------------------- | 1126 " --------------------------------------------------------------------- |
1086 " Perform Directory Listing: | 1127 " Perform Directory Listing: |
1087 " call Decho("Perform directory listing...") | 1128 " call Decho("Perform directory listing...") |
1088 " set up new buffer and map | 1129 " set up new buffer and map |
1089 let bufname = method.'://'.user.machine.'/'.path | 1130 let bufname = method.'://'.user.machine.'/'.path |
1090 let bufnamenr = bufexists(bufname) | 1131 let bufnamenr = bufnr(bufname.'$') |
1091 " call Decho("bufname<".bufname."> bufnamenr=".bufnamenr) | 1132 " call Decho("bufname<".bufname."> bufnamenr=".bufnamenr) |
1092 if bufnamenr != 0 | 1133 if bufnamenr != -1 |
1093 " buffer already exists, switch to it! | 1134 " buffer already exists, switch to it! |
1094 " call Decho("buffer already exists, switching to it") | 1135 " call Decho("buffer already exists, switching to it") |
1095 exe "b ".bufnamenr | 1136 exe "b ".bufnamenr |
1096 if line("$") >= 5 | 1137 if line("$") >= 5 |
1097 " call Dret("NetBrowse") | 1138 " call Dret("NetBrowse") |
1102 enew! | 1143 enew! |
1103 endif | 1144 endif |
1104 | 1145 |
1105 " rename file to reflect where its from | 1146 " rename file to reflect where its from |
1106 setlocal ts=32 bt=nofile bh=wipe nobl | 1147 setlocal ts=32 bt=nofile bh=wipe nobl |
1148 " call Decho("exe file ".escape(bufname,s:netrw_cd_escape)) | |
1107 exe 'file '.escape(bufname,s:netrw_cd_escape) | 1149 exe 'file '.escape(bufname,s:netrw_cd_escape) |
1108 " call Decho("renaming file to bufname<".bufname.">") | 1150 " call Decho("renaming file to bufname<".bufname.">") |
1109 setlocal bt=nowrite bh=hide nobl | 1151 setlocal bt=nowrite bh=hide nobl |
1110 | 1152 |
1111 " set up buffer-local mappings | 1153 " set up buffer-local mappings |
1112 " call Decho("set up buffer-local mappings") | 1154 " call Decho("set up buffer-local mappings") |
1113 nnoremap <buffer> <silent> <cr> :exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr> | 1155 nnoremap <buffer> <silent> <cr> :exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr> |
1114 nnoremap <buffer> <silent> <c-l> :exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'./'))<cr> | 1156 nnoremap <buffer> <silent> <c-l> :exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'./'))<cr> |
1115 nnoremap <buffer> <silent> - :exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'../'))<cr> | 1157 nnoremap <buffer> <silent> - :exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'../'))<cr> |
1116 nnoremap <buffer> <silent> a :let g:netrw_hide=!g:netrw_hide<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'./'))<cr> | 1158 nnoremap <buffer> <silent> a :let g:netrw_hide=(g:netrw_hide+1)%3<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'./'))<cr> |
1117 nnoremap <buffer> <silent> b :<c-u>call <SID>NetBookmarkDir(0,expand("%"))<cr> | 1159 nnoremap <buffer> <silent> b :<c-u>call <SID>NetBookmarkDir(0,expand("%"))<cr> |
1118 nnoremap <buffer> <silent> B :<c-u>call <SID>NetBookmarkDir(1,expand("%"))<cr> | 1160 nnoremap <buffer> <silent> B :<c-u>call <SID>NetBookmarkDir(1,expand("%"))<cr> |
1119 nnoremap <buffer> <silent> <c-h> :call <SID>NetHideEdit(0)<cr> | 1161 nnoremap <buffer> <silent> <c-h> :call <SID>NetHideEdit(0)<cr> |
1120 nnoremap <buffer> <silent> i :call <SID>NetLongList(0)<cr> | 1162 nnoremap <buffer> <silent> i :call <SID>NetLongList(0)<cr> |
1121 nnoremap <buffer> <silent> o :exe g:netrw_winsize."wincmd s"<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr> | 1163 nnoremap <buffer> <silent> o :exe (g:netrw_alto? "bel " : "abo ").g:netrw_winsize."wincmd s"<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr> |
1122 nnoremap <buffer> <silent> q :<c-u>call <SID>NetBookmarkDir(2,expand("%"))<cr> | 1164 nnoremap <buffer> <silent> q :<c-u>call <SID>NetBookmarkDir(2,expand("%"))<cr> |
1123 nnoremap <buffer> <silent> r :let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'./'))<cr> | 1165 nnoremap <buffer> <silent> r :let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'./'))<cr> |
1124 nnoremap <buffer> <silent> s :call <SID>NetSaveWordPosn()<bar>let g:netrw_sort_by= (g:netrw_sort_by =~ 'n')? 'time' : (g:netrw_sort_by =~ 't')? 'size' : 'name'<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'./'))<bar>call <SID>NetRestoreWordPosn()<cr> | 1166 nnoremap <buffer> <silent> s :call <SID>NetSaveWordPosn()<bar>let g:netrw_sort_by= (g:netrw_sort_by =~ 'n')? 'time' : (g:netrw_sort_by =~ 't')? 'size' : 'name'<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'./'))<bar>call <SID>NetRestoreWordPosn()<cr> |
1125 nnoremap <buffer> <silent> S :call <SID>NetSortSequence(0)<cr> | 1167 nnoremap <buffer> <silent> S :call <SID>NetSortSequence(0)<cr> |
1126 nnoremap <buffer> <silent> v :exe g:netrw_winsize."wincmd v"<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr> | 1168 nnoremap <buffer> <silent> v :exe (g:netrw_altv? "rightb " : "lefta ").g:netrw_winsize."wincmd v"<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr> |
1127 nnoremap <buffer> <silent> x :exe "norm! 0"<bar>call <SID>NetBrowseX(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()),1)<cr> | 1169 nnoremap <buffer> <silent> x :exe "norm! 0"<bar>call <SID>NetBrowseX(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()),1)<cr> |
1128 nnoremap <buffer> <silent> <2-leftmouse> :exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr> | 1170 nnoremap <buffer> <silent> <2-leftmouse> :exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr> |
1129 exe 'nnoremap <buffer> <silent> <del> :exe "norm! 0"<bar>call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>' | 1171 exe 'nnoremap <buffer> <silent> <del> :exe "norm! 0"<bar>call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>' |
1130 exe 'vnoremap <buffer> <silent> <del> :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>' | 1172 exe 'vnoremap <buffer> <silent> <del> :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>' |
1131 exe 'nnoremap <buffer> <silent> d :call <SID>NetMakeDir("'.user.machine.'")<cr>' | 1173 exe 'nnoremap <buffer> <silent> d :call <SID>NetMakeDir("'.user.machine.'")<cr>' |
1155 else | 1197 else |
1156 " sorted by size or date | 1198 " sorted by size or date |
1157 keepjumps put ='\" Sorted by '.sortby | 1199 keepjumps put ='\" Sorted by '.sortby |
1158 endif | 1200 endif |
1159 if g:netrw_list_hide != "" && g:netrw_hide | 1201 if g:netrw_list_hide != "" && g:netrw_hide |
1160 keepjumps put ='\" Hiding: '.g:netrw_list_hide | 1202 if g:netrw_hide == 1 |
1203 keepjumps put ='\" Hiding: '.g:netrw_list_hide | |
1204 else | |
1205 keepjumps put ='\" Showing: '.g:netrw_list_hide | |
1206 endif | |
1161 let s:netrw_bannercnt= s:netrw_bannercnt + 1 | 1207 let s:netrw_bannercnt= s:netrw_bannercnt + 1 |
1162 endif | 1208 endif |
1163 keepjumps put ='\" Quick Help: ?:help -:go up dir D:delete R:rename s:sort-by x:exec' | 1209 keepjumps put ='\" Quick Help: ?:help -:go up dir D:delete R:rename s:sort-by x:exec' |
1164 keepjumps put ='\" ===========================================================================' | 1210 keepjumps put ='\" ===========================================================================' |
1165 | 1211 |
1166 " remote read the requested directory listing | 1212 " remote read the requested directory listing |
1167 " Use ftp if that was the file-transfer method selected, otherwise use ssh | 1213 " Use ftp if that was the file-transfer method selected, otherwise use ssh |
1168 " Note that not all ftp servers honor the options for ls | 1214 " Note that not all ftp servers honor the options for ls |
1169 if method == "ftp" | 1215 if method == "ftp" |
1170 call NetBrowseFtpCmd(path,"ls ".listcmd) | 1216 " use ftp to get remote file listing |
1217 " call Decho("use ftp to get remote file listing") | |
1218 call NetBrowseFtpCmd(path,listcmd) | |
1219 | |
1171 keepjumps 1d | 1220 keepjumps 1d |
1172 | 1221 |
1173 if !g:netrw_longlist | 1222 if !g:netrw_longlist |
1223 " shorten the listing | |
1174 " call Decho("generate short listing") | 1224 " call Decho("generate short listing") |
1175 " shorten the listing | |
1176 exe "keepjumps ".s:netrw_bannercnt | 1225 exe "keepjumps ".s:netrw_bannercnt |
1177 " cleanup | 1226 " cleanup |
1178 while getline(".") =~ g:netrw_ftp_browse_reject | 1227 while getline(".") =~ g:netrw_ftp_browse_reject |
1179 keepjumps d | 1228 keepjumps d |
1180 endwhile | 1229 endwhile |
1181 keepjumps put='../' | 1230 |
1182 keepjumps put='./' | 1231 " if there's no ../ listed, then put ./ and ../ in |
1232 let line1= line(".") | |
1233 keepjumps 1 | |
1234 silent keepjumps call search('^\.\.\/\%(\s\|$\)','W') | |
1235 let line2= line(".") | |
1236 if line2 == 0 | |
1237 keepjumps put='../' | |
1238 keepjumps put='./' | |
1239 endif | |
1240 exe "keepjumps ".line1 | |
1241 keepjumps norm! 0 | |
1242 | |
1243 " more cleanup | |
1183 exe 'keepjumps silent '.s:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e' | 1244 exe 'keepjumps silent '.s:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e' |
1184 exe "keepjumps silent ".s:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#' | 1245 exe "keepjumps silent ".s:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#' |
1185 exe "keepjumps silent ".s:netrw_bannercnt.',$g/ -> /s# -> .*$#/#' | 1246 exe "keepjumps silent ".s:netrw_bannercnt.',$g/ -> /s# -> .*$#/#' |
1186 endif | 1247 endif |
1187 | 1248 |
1188 else | 1249 else |
1189 " call Decho("use ssh") | 1250 " use ssh to get remote file listing |
1251 " call Decho("use ssh to get remote file listing") | |
1190 let shq= &shq? &shq : ( &sxq? &sxq : "'") | 1252 let shq= &shq? &shq : ( &sxq? &sxq : "'") |
1191 " call Decho("exe silent r! ".listcmd." ".shq.escape(path,s:netrw_cd_escape).shq) | 1253 " call Decho("exe silent r! ".listcmd." ".shq.escape(path,s:netrw_cd_escape).shq) |
1192 exe "silent r! ".listcmd." ".shq.escape(path,s:netrw_cd_escape).shq | 1254 exe "silent r! ".listcmd." ".shq.escape(path,s:netrw_cd_escape).shq |
1193 keepjumps 1d | 1255 keepjumps 1d |
1194 endif | 1256 endif |
1208 " cleanup | 1270 " cleanup |
1209 exe "keepjumps ".s:netrw_bannercnt | 1271 exe "keepjumps ".s:netrw_bannercnt |
1210 while getline(".") =~ '^total\s\+\d\+$' || getline(".") =~ 'Trying\s\+\d\+.*$' | 1272 while getline(".") =~ '^total\s\+\d\+$' || getline(".") =~ 'Trying\s\+\d\+.*$' |
1211 keepjumps d | 1273 keepjumps d |
1212 endwhile | 1274 endwhile |
1213 exe 'keepjumps '.s:netrw_bannercnt."put='./'" | 1275 " if there's no ../ listed, then put ./ and ../ in |
1214 exe 'keepjumps '.s:netrw_bannercnt."put='../'" | 1276 let line1= line(".") |
1277 keepjumps 1 | |
1278 silent keepjumps call search('^\.\.\/\%(\s\|$\)','W') | |
1279 let line2= line(".") | |
1280 if line2 == 0 | |
1281 exe 'keepjumps '.s:netrw_bannercnt."put='./'" | |
1282 exe 'keepjumps '.s:netrw_bannercnt."put='../'" | |
1283 endif | |
1284 exe "keepjumps ".line1 | |
1285 keepjumps norm! 0 | |
1215 endif | 1286 endif |
1216 | 1287 |
1217 exe 'keepjumps silent '.s:netrw_bannercnt.',$s/ -> .*$//e' | 1288 exe 'keepjumps silent '.s:netrw_bannercnt.',$s/ -> .*$//e' |
1218 exe 'keepjumps silent '.s:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2\t\1/e' | 1289 exe 'keepjumps silent '.s:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2\t\1/e' |
1219 exe s:netrw_bannercnt | 1290 exe s:netrw_bannercnt |
1227 if g:netrw_longlist | 1298 if g:netrw_longlist |
1228 " shorten the list to keep its width <= 80 characters | 1299 " shorten the list to keep its width <= 80 characters |
1229 exe "keepjumps silent ".s:netrw_bannercnt.',$s/\t[-dstrwx]\+/\t/e' | 1300 exe "keepjumps silent ".s:netrw_bannercnt.',$s/\t[-dstrwx]\+/\t/e' |
1230 endif | 1301 endif |
1231 endif | 1302 endif |
1303 exe "keepjumps ".s:netrw_bannercnt | |
1232 setlocal nomod | 1304 setlocal nomod |
1233 setlocal noma | 1305 setlocal noma |
1234 | 1306 |
1235 " call Dret("NetBrowse") | 1307 " call Dret("NetBrowse") |
1236 return | 1308 return |
1264 let dirname= dirname.'../' | 1336 let dirname= dirname.'../' |
1265 | 1337 |
1266 else | 1338 else |
1267 " strip off a directory name from dirname | 1339 " strip off a directory name from dirname |
1268 let dirname= substitute(dirname,'^\(.*/\)[^/]\+/','\1','') | 1340 let dirname= substitute(dirname,'^\(.*/\)[^/]\+/','\1','') |
1341 exe "silent! keepjumps ".curline.",$d" | |
1269 endif | 1342 endif |
1270 " call Decho("go up one dir: dirname<".dirname."> trailer<".trailer.">") | 1343 " call Decho("go up one dir: dirname<".dirname."> trailer<".trailer.">") |
1271 | 1344 |
1272 else | 1345 else |
1273 " go down one directory | 1346 " go down one directory |
1281 | 1354 |
1282 " --------------------------------------------------------------------- | 1355 " --------------------------------------------------------------------- |
1283 " NetGetWord: it gets the directory named under the cursor | 1356 " NetGetWord: it gets the directory named under the cursor |
1284 fun! <SID>NetGetWord() | 1357 fun! <SID>NetGetWord() |
1285 " call Dfunc("NetGetWord() line#".line(".")) | 1358 " call Dfunc("NetGetWord() line#".line(".")) |
1286 let dirname= getline(".") | 1359 if line(".") < s:netrw_bannercnt |
1287 if dirname =~ '\t' | 1360 let dirname= "./" |
1288 let dirname= substitute(dirname,'\t.*$','','e') | 1361 else |
1362 let dirname= getline(".") | |
1363 if dirname =~ '\t' | |
1364 let dirname= substitute(dirname,'\t.*$','','e') | |
1365 endif | |
1289 endif | 1366 endif |
1290 " call Dret("NetGetWord <".dirname.">") | 1367 " call Dret("NetGetWord <".dirname.">") |
1291 return dirname | 1368 return dirname |
1292 endfun | 1369 endfun |
1293 | 1370 |
1297 " call Dfunc("NetBrowseRm(usrhost<".a:usrhost."> path<".a:path.">)") | 1374 " call Dfunc("NetBrowseRm(usrhost<".a:usrhost."> path<".a:path.">)") |
1298 " call Decho("firstline=".a:firstline." lastline=".a:lastline) | 1375 " call Decho("firstline=".a:firstline." lastline=".a:lastline) |
1299 | 1376 |
1300 " preparation for removing multiple files/directories | 1377 " preparation for removing multiple files/directories |
1301 let ctr= a:firstline | 1378 let ctr= a:firstline |
1379 let all= 0 | |
1302 | 1380 |
1303 " remove multiple files and directories | 1381 " remove multiple files and directories |
1304 while ctr <= a:lastline | 1382 while ctr <= a:lastline |
1305 exe ctr | 1383 exe ctr |
1306 | 1384 |
1308 let rmfile= s:NetGetWord() | 1386 let rmfile= s:NetGetWord() |
1309 " call Decho("rmfile<".rmfile.">") | 1387 " call Decho("rmfile<".rmfile.">") |
1310 | 1388 |
1311 if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '/$') | 1389 if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '/$') |
1312 " attempt to remove file | 1390 " attempt to remove file |
1313 call inputsave() | 1391 if !all |
1314 let ok= input("Confirm deletion of file<".rmfile."> ","y") | 1392 echohl Statement |
1315 call inputrestore() | 1393 call inputsave() |
1316 | 1394 let ok= input("Confirm deletion of file<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ") |
1317 if ok == "y" | 1395 call inputrestore() |
1396 echohl NONE | |
1397 let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e') | |
1398 if ok =~ 'a\%[ll]' | |
1399 let all= 1 | |
1400 endif | |
1401 endif | |
1402 | |
1403 if all || ok =~ 'y\%[es]' || ok == "" | |
1318 if exists("s:netrw_method") && (s:netrw_method == 2 || s:netrw_method == 3) | 1404 if exists("s:netrw_method") && (s:netrw_method == 2 || s:netrw_method == 3) |
1319 silent! keepjumps .,$d | 1405 silent! keepjumps .,$d |
1320 call NetBrowseFtpCmd(a:path,"delete ".rmfile) | 1406 call NetBrowseFtpCmd(a:path,"delete ".rmfile) |
1321 else | 1407 else |
1322 let netrw_rm_cmd= substitute(g:netrw_rm_cmd,'HOSTNAME',a:usrhost,'').' "'.escape(a:path.rmfile,s:netrw_cd_escape).'"' | 1408 let netrw_rm_cmd= substitute(g:netrw_rm_cmd,'HOSTNAME',a:usrhost,'').' "'.escape(a:path.rmfile,s:netrw_cd_escape).'"' |
1323 " call Decho("attempt to remove file: system(".netrw_rm_cmd.")") | 1409 " call Decho("attempt to remove file: system(".netrw_rm_cmd.")") |
1324 let ret= system(netrw_rm_cmd) | 1410 let ret= system(netrw_rm_cmd) |
1325 " call Decho("returned=".ret." errcode=".v:shell_error) | 1411 " call Decho("returned=".ret." errcode=".v:shell_error) |
1326 endif | 1412 endif |
1413 elseif ok =~ 'q\%[uit]' | |
1414 break | |
1327 endif | 1415 endif |
1328 | 1416 |
1329 else | 1417 else |
1330 " attempt to remove directory | 1418 " attempt to remove directory |
1331 call inputsave() | 1419 if !all |
1332 let ok= input("Confirm deletion of directory<".rmfile."> ","y") | 1420 call inputsave() |
1333 call inputrestore() | 1421 let ok= input("Confirm deletion of directory<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ") |
1334 | 1422 call inputrestore() |
1335 if ok == "y" | 1423 let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e') |
1424 if ok =~ 'a\%[ll]' | |
1425 let all= 1 | |
1426 endif | |
1427 endif | |
1428 | |
1429 if all || ok =~ 'y\%[es]' || ok == "" | |
1336 if exists("s:netrw_method") && (s:netrw_method == 2 || s:netrw_method == 3) | 1430 if exists("s:netrw_method") && (s:netrw_method == 2 || s:netrw_method == 3) |
1337 call NetBrowseFtpCmd(a:path,"rmdir ".rmfile) | 1431 call NetBrowseFtpCmd(a:path,"rmdir ".rmfile) |
1338 else | 1432 else |
1339 let rmfile = a:path.rmfile | 1433 let rmfile = a:path.rmfile |
1340 let netrw_rmdir_cmd= substitute(g:netrw_rmdir_cmd,'HOSTNAME',a:usrhost,'').' '."'".'"'.rmfile.'"'."'" | 1434 let netrw_rmdir_cmd= substitute(g:netrw_rmdir_cmd,'HOSTNAME',a:usrhost,'').' '."'".'"'.rmfile.'"'."'" |
1346 let netrw_rmf_cmd= substitute(g:netrw_rmf_cmd,'HOSTNAME',a:usrhost,'').' '.substitute(rmfile,'/$','','e') | 1440 let netrw_rmf_cmd= substitute(g:netrw_rmf_cmd,'HOSTNAME',a:usrhost,'').' '.substitute(rmfile,'/$','','e') |
1347 " call Decho("2nd attempt to remove dir: system(".netrw_rmf_cmd.")") | 1441 " call Decho("2nd attempt to remove dir: system(".netrw_rmf_cmd.")") |
1348 let ret= system(netrw_rmf_cmd) | 1442 let ret= system(netrw_rmf_cmd) |
1349 " call Decho("returned=".ret." errcode=".v:shell_error) | 1443 " call Decho("returned=".ret." errcode=".v:shell_error) |
1350 | 1444 |
1351 if v:shell_error != 0 | 1445 if v:shell_error != 0 && !exists("g:netrw_quiet") |
1352 echoerr "unable to remove directory<".rmfile."> -- is it empty?" | 1446 echoerr "unable to remove directory<".rmfile."> -- is it empty?" |
1353 endif | 1447 endif |
1354 endif | 1448 endif |
1355 endif | 1449 endif |
1450 | |
1451 elseif ok =~ 'q\%[uit]' | |
1452 break | |
1356 endif | 1453 endif |
1357 endif | 1454 endif |
1358 | 1455 |
1359 let ctr= ctr + 1 | 1456 let ctr= ctr + 1 |
1360 endwhile | 1457 endwhile |
1412 " NetBrowseX: allows users to write custom functions to operate on {{{2 | 1509 " NetBrowseX: allows users to write custom functions to operate on {{{2 |
1413 " files given their extension. Passes 0=local, 1=remote | 1510 " files given their extension. Passes 0=local, 1=remote |
1414 fun! <SID>NetBrowseX(fname,remote) | 1511 fun! <SID>NetBrowseX(fname,remote) |
1415 " call Dfunc("NetBrowseX(".a:fname." remote=".a:remote.")") | 1512 " call Dfunc("NetBrowseX(".a:fname." remote=".a:remote.")") |
1416 | 1513 |
1514 " set up the filename | |
1515 " (lower case the extension, make a local copy of a remote file) | |
1417 let exten= substitute(a:fname,'.*\.\(.\{-}\)','\1','e') | 1516 let exten= substitute(a:fname,'.*\.\(.\{-}\)','\1','e') |
1418 if has("win32") || has("win95") || has("win64") || has("win16") | 1517 if has("win32") || has("win95") || has("win64") || has("win16") |
1419 let exten= substitute(exten,'^.*$','\L&\E','') | 1518 let exten= substitute(exten,'^.*$','\L&\E','') |
1420 endif | 1519 endif |
1520 let fname= escape(a:fname,"%#") | |
1521 " call Decho("fname<".fname."> after escape()") | |
1522 | |
1523 if a:remote == 1 | |
1524 " create a local copy | |
1525 let fname= tempname().".".exten | |
1526 " call Decho("create a local copy of <".a:fname."> as <".fname.">") | |
1527 exe "keepjumps silent bot 1new ".a:fname | |
1528 let eikeep= &ei | |
1529 set ei=all bh=delete | |
1530 exe "w! ".fname | |
1531 let &ei= eikeep | |
1532 q | |
1533 endif | |
1421 " call Decho("exten<".exten."> "."NetrwFileHandler_".exten."():exists=".exists("*NetrwFileHandler_".exten)) | 1534 " call Decho("exten<".exten."> "."NetrwFileHandler_".exten."():exists=".exists("*NetrwFileHandler_".exten)) |
1422 if exten != "" && exists("*NetrwFileHandler_".exten) | 1535 |
1423 | 1536 " set up redirection |
1424 let fname= a:fname | 1537 if &srr =~ "%s" |
1425 if a:remote == 1 | 1538 let redir= substitute(&srr,"%s","/dev/null"."") |
1426 " create a local copy | 1539 else |
1427 let fname= tempname().".".exten | 1540 let redir= &srr . "/dev/null" |
1428 " call Decho("create a local copy of <".a:fname."> as <".fname.">") | 1541 endif |
1429 exe "keepjumps silent bot 1new ".a:fname | 1542 " call Decho("redir:".redir.":") |
1430 let eikeep= &ei | 1543 |
1431 set ei=all bh=delete | 1544 " execute the file handler |
1432 exe "w! ".fname | 1545 if has("win32") || has("win64") |
1433 let &ei= eikeep | 1546 " call Decho('exe silent !start rundll32 url.dll,FileProtocolHandler "'.escape(fname, '%#').'"') |
1434 q | 1547 exe 'silent !start rundll32 url.dll,FileProtocolHandler "'.escape(fname, '%#').'"' |
1435 endif | 1548 let ret= v:shell_error |
1436 | 1549 |
1550 elseif has("unix") && executable("kfmclient") | |
1551 " call Decho("exe silent !kfmclient exec '".escape(fname,'%#')."' ".redir) | |
1552 exe "silent !kfmclient exec '".escape(fname,'%#')."' ".redir | |
1553 let ret= v:shell_error | |
1554 | |
1555 elseif has("unix") && executable("gnome-open") | |
1556 " call Decho("exe silent !gnome-open '".escape(fname,'%#')."' ".redir) | |
1557 exe "silent !gnome-open '".escape(fname,'%#')."'".redir | |
1558 let ret= v:shell_error | |
1559 | |
1560 elseif exten != "" && exists("*NetrwFileHandler_".exten) | |
1561 " call Decho("let ret= NetrwFileHandler_".exten.'("'.fname.'")') | |
1437 exe "let ret= NetrwFileHandler_".exten.'("'.fname.'")' | 1562 exe "let ret= NetrwFileHandler_".exten.'("'.fname.'")' |
1438 redraw! | 1563 endif |
1439 | 1564 redraw! |
1440 " cleanup: remove temporary file, | 1565 |
1441 " delete current buffer if success with handler, | 1566 " cleanup: remove temporary file, |
1442 " return to prior buffer (directory listing) | 1567 " delete current buffer if success with handler, |
1443 if a:remote == 1 && fname != a:fname | 1568 " return to prior buffer (directory listing) |
1444 " call Decho("deleting temporary file<".fname.">") | 1569 if a:remote == 1 && fname != a:fname |
1445 call delete(fname) | 1570 " call Decho("deleting temporary file<".fname.">") |
1446 endif | 1571 call delete(fname) |
1447 if ret != 0 | 1572 endif |
1448 let eikeep= &ei | 1573 |
1449 set ei=all bh=delete bt=nofile | 1574 if a:remote == 1 |
1450 exe "norm! \<c-o>" | 1575 let eikeep= &ei |
1451 let &ei= eikeep | 1576 set ei=all bh=delete bt=nofile |
1452 redraw! | 1577 exe "norm! \<c-o>" |
1453 endif | 1578 let &ei= eikeep |
1579 redraw! | |
1454 endif | 1580 endif |
1455 | 1581 |
1456 " call Dret("NetBrowseX") | 1582 " call Dret("NetBrowseX") |
1457 endfun | 1583 endfun |
1458 | 1584 |
1480 if a:path != "" | 1606 if a:path != "" |
1481 put ='cd '.a:path | 1607 put ='cd '.a:path |
1482 endif | 1608 endif |
1483 exe "put ='".a:cmd."'" | 1609 exe "put ='".a:cmd."'" |
1484 | 1610 |
1611 | |
1612 " redraw!|call inputsave()|call input("Pausing...")|call inputrestore() "Decho | |
1485 if exists("g:netrw_port") && g:netrw_port != "" | 1613 if exists("g:netrw_port") && g:netrw_port != "" |
1486 " call Decho("exe ".g:netrw_silentxfer.curline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port) | 1614 " call Decho("exe ".g:netrw_silentxfer.curline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port) |
1487 exe g:netrw_silentxfer.curline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port | 1615 exe g:netrw_silentxfer.curline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port |
1488 else | 1616 else |
1489 " call Decho("exe ".g:netrw_silentxfer.curline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine) | 1617 " call Decho("exe ".g:netrw_silentxfer.curline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine) |
1522 "......................................... | 1650 "......................................... |
1523 else | 1651 else |
1524 echo "***warning*** unable to comply with your request<" . choice . ">" | 1652 echo "***warning*** unable to comply with your request<" . choice . ">" |
1525 endif | 1653 endif |
1526 | 1654 |
1655 " cleanup for Windows | |
1656 if has("win32") || has("win95") || has("win64") || has("win16") | |
1657 keepjumps silent! %s/\r$// | |
1658 endif | |
1659 if a:cmd == "dir" | |
1660 " infer directory/link based on the file permission string | |
1661 keepjumps silent g/d\%([-r][-w][-x]\)\{3}/s@$@/@ | |
1662 keepjumps silent g/l\%([-r][-w][-x]\)\{3}/s/$/@/ | |
1663 if !g:netrw_longlist | |
1664 exe "keepjumps silent ".curline.',$s/^\%(\S\+\s\+\)\{8}//' | |
1665 endif | |
1666 endif | |
1667 | |
1527 " restore settings | 1668 " restore settings |
1528 let &ff= ffkeep | 1669 let &ff= ffkeep |
1529 " call Dret("NetBrowseFtpCmd") | 1670 " call Dret("NetBrowseFtpCmd") |
1530 endfun | 1671 endfun |
1531 | 1672 |
1542 let listhide = substitute(listhide,'^.\{-},\(.*\)$','\1','e') | 1683 let listhide = substitute(listhide,'^.\{-},\(.*\)$','\1','e') |
1543 else | 1684 else |
1544 let hide = listhide | 1685 let hide = listhide |
1545 let listhide= "" | 1686 let listhide= "" |
1546 endif | 1687 endif |
1688 | |
1689 " Prune the list by hiding any files which match | |
1547 " call Decho("pruning <".hide."> listhide<".listhide.">") | 1690 " call Decho("pruning <".hide."> listhide<".listhide.">") |
1548 exe 'keepjumps silent '.s:netrw_bannercnt.',$g~'.hide.'~d' | 1691 if g:netrw_hide == 1 |
1692 exe 'keepjumps silent '.s:netrw_bannercnt.',$g~'.hide.'~d' | |
1693 elseif g:netrw_hide == 2 | |
1694 exe 'keepjumps silent '.s:netrw_bannercnt.',$v~'.hide.'~d' | |
1695 endif | |
1549 endwhile | 1696 endwhile |
1550 | 1697 |
1551 " call Dret("NetrwListHide") | 1698 " call Dret("NetrwListHide") |
1552 endfun | 1699 endfun |
1553 | 1700 |
1660 " Local mkdir: | 1807 " Local mkdir: |
1661 " sanity checks | 1808 " sanity checks |
1662 let fullnewdir= b:netrw_curdir.'/'.newdirname | 1809 let fullnewdir= b:netrw_curdir.'/'.newdirname |
1663 " call Decho("fullnewdir<".fullnewdir.">") | 1810 " call Decho("fullnewdir<".fullnewdir.">") |
1664 if isdirectory(fullnewdir) | 1811 if isdirectory(fullnewdir) |
1665 echoerr "***warning*** <".newdirname."> is already a directory!" | 1812 if !exists("g:netrw_quiet") |
1813 echoerr "***warning*** <".newdirname."> is already a directory!" | |
1814 endif | |
1666 " call Dret("NetMakeDir : directory<".newdirname."> exists previously") | 1815 " call Dret("NetMakeDir : directory<".newdirname."> exists previously") |
1667 return | 1816 return |
1668 endif | 1817 endif |
1669 if filereadable(fullnewdir) | 1818 if filereadable(fullnewdir) |
1670 echoerr "***warning*** <".newdirname."> is already a file!" | 1819 if !exists("g:netrw_quiet") |
1820 echoerr "***warning*** <".newdirname."> is already a file!" | |
1821 endif | |
1671 " call Dret("NetMakeDir : file<".newdirname."> exists previously") | 1822 " call Dret("NetMakeDir : file<".newdirname."> exists previously") |
1672 return | 1823 return |
1673 endif | 1824 endif |
1674 let netrw_origdir= s:NetGetcwd(1) | 1825 let netrw_origdir= s:NetGetcwd(1) |
1675 exe 'cd '.b:netrw_curdir | 1826 exe 'cd '.b:netrw_curdir |
1685 norm! H0 | 1836 norm! H0 |
1686 let hline = line(".") | 1837 let hline = line(".") |
1687 call s:LocalBrowse(s:LocalBrowseChgDir(b:netrw_curdir,'./')) | 1838 call s:LocalBrowse(s:LocalBrowseChgDir(b:netrw_curdir,'./')) |
1688 exe "norm! ".hline."G0z\<CR>" | 1839 exe "norm! ".hline."G0z\<CR>" |
1689 exe linenum | 1840 exe linenum |
1690 else | 1841 elseif !exists("g:netrw_quiet") |
1691 echoerr "***warning*** unable to make directory<".newdirname.">" | 1842 echoerr "***warning*** unable to make directory<".newdirname.">" |
1692 endif | 1843 endif |
1693 redraw! | 1844 redraw! |
1694 | 1845 |
1695 else | 1846 else |
1704 norm! H0 | 1855 norm! H0 |
1705 let hline = line(".") | 1856 let hline = line(".") |
1706 call s:NetBrowse(s:NetBrowseChgDir(expand("%"),'./')) | 1857 call s:NetBrowse(s:NetBrowseChgDir(expand("%"),'./')) |
1707 exe "norm! ".hline."G0z\<CR>" | 1858 exe "norm! ".hline."G0z\<CR>" |
1708 exe linenum | 1859 exe linenum |
1709 else | 1860 elseif !exists("g:netrw_quiet") |
1710 echoerr "***warning*** unable to make directory<".newdirname.">" | 1861 echoerr "***warning*** unable to make directory<".newdirname.">" |
1711 endif | 1862 endif |
1712 redraw! | 1863 redraw! |
1713 endif | 1864 endif |
1714 | 1865 |
1773 " call Dfunc("LocalBrowse(dirname<".a:dirname.">) buf#".bufnr("%")." winnr=".winnr()) | 1924 " call Dfunc("LocalBrowse(dirname<".a:dirname.">) buf#".bufnr("%")." winnr=".winnr()) |
1774 " call Decho("winbufnr1=".winbufnr(1)." winbufnr2=".winbufnr(2)." winbufnr3=".winbufnr(3)) | 1925 " call Decho("winbufnr1=".winbufnr(1)." winbufnr2=".winbufnr(2)." winbufnr3=".winbufnr(3)) |
1775 " call Dredir("ls!") | 1926 " call Dredir("ls!") |
1776 | 1927 |
1777 if v:version < 603 | 1928 if v:version < 603 |
1778 echoerr "vim version<".v:version."> too old for browsing with netrw" | 1929 if !exists("g:netrw_quiet") |
1930 echoerr "vim version<".v:version."> too old for browsing with netrw" | |
1931 endif | |
1779 " call Dret("LocalBrowse : vim version<".v:version."> too old") | 1932 " call Dret("LocalBrowse : vim version<".v:version."> too old") |
1780 return | 1933 return |
1781 endif | 1934 endif |
1782 | 1935 |
1783 " record and change current directory | 1936 " record and change current directory |
1794 " call Decho("Perform directory listing...") | 1947 " call Decho("Perform directory listing...") |
1795 " set up new buffer and map | 1948 " set up new buffer and map |
1796 " remove the trailing "/" | 1949 " remove the trailing "/" |
1797 let dirnamens= substitute(dirname,'/$','','e') | 1950 let dirnamens= substitute(dirname,'/$','','e') |
1798 let dirnamenr= bufnr(dirnamens.'$') | 1951 let dirnamenr= bufnr(dirnamens.'$') |
1799 " call Decho("dirnamenr= bufnr(".dirnamens.")=".dirnamenr) | 1952 " call Decho("dirnamenr= bufnr(".dirnamens.")=".dirnamenr." bufname(".dirnamenr.")=".bufname(dirnamenr)) |
1800 | 1953 |
1801 if dirnamenr != 0 && bufname(dirnamenr) != dirnamens | 1954 if dirnamenr != 0 && bufname(dirnamenr) != dirnamens |
1802 " try keeping the trailing slash | 1955 " try keeping the trailing slash |
1803 let dirnamenr = bufnr(dirname.'$') | 1956 let dirnamenr = bufnr(dirname.'$') |
1804 " call Decho("retry: dirnamenr= bufnr(".dirname.")=".dirnamenr) | 1957 " call Decho("dirnamenr= bufnr(".dirname.")=".dirnamenr." bufname(".dirnamenr.")=".bufname(dirnamenr)." (retry with /)") |
1805 endif | 1958 endif |
1806 " call Decho("bufnr(dirname<".dirname.">)=".dirnamenr) | |
1807 | 1959 |
1808 if dirnamenr != -1 | 1960 if dirnamenr != -1 |
1809 " buffer already exists (hidden), so switch to it! | 1961 " buffer already exists (hidden), so switch to it! |
1810 " call Decho("buffer already exists: dirnamenr=".dirnamenr." dirname<".dirname."> pre-exists") | 1962 " call Decho("buffer already exists: dirnamenr=".dirnamenr." dirname<".dirname."> pre-exists") |
1811 " call Dredir("ls!") | 1963 " call Dredir("ls!") |
1812 exe "b ".dirnamenr | 1964 exe "b ".dirnamenr |
1813 exe 'silent! cd '.escape(substitute(a:dirname,'\\','/','ge'),s:netrw_cd_escape) | 1965 exe 'silent! cd '.escape(substitute(a:dirname,'\\','/','ge'),s:netrw_cd_escape) |
1814 " call Decho("changed directory to<".dirname.">") | 1966 " call Decho("changed directory to<".dirname.">") |
1815 if a:dirname != "." && line("$") >= 5 | 1967 if a:dirname != "." && line("$") >= 5 && exists("b:netrw_curdir") |
1816 " call Dret("LocalBrowse : buffer already exists with info, #".dirnamenr) | 1968 if b:netrw_curdir == dirname |
1817 if g:netrw_keepdir | exe 'keepjumps cd '.netrw_origdir | endif | 1969 " call Dret("LocalBrowse : buffer already exists with info, #".dirnamenr) |
1818 return | 1970 if g:netrw_keepdir | exe 'keepjumps cd '.netrw_origdir | endif |
1819 endif | 1971 return |
1820 " call Decho("buffer already exists, but needs listing (buf#".dirnamenr.")") | 1972 endif |
1973 endif | |
1974 " call Decho("buffer already exists, but needs re-listing (buf#".dirnamenr.")") | |
1821 setlocal ma | 1975 setlocal ma |
1822 keepjumps %d | 1976 keepjumps %d |
1823 if expand("%:p") != dirname | 1977 if expand("%:p") != dirname |
1824 exe 'silent! file '.escape(dirname,s:netrw_cd_escape) | 1978 exe 'silent! file '.escape(dirname,s:netrw_cd_escape) |
1825 " call Decho("renamed file to<".escape(dirname,' #').">") | 1979 " call Decho("renamed file to<".escape(dirname,' #').">") |
1837 " call Decho("Setting up local browser maps") | 1991 " call Decho("Setting up local browser maps") |
1838 let b:netrw_curdir= s:NetGetcwd(1) | 1992 let b:netrw_curdir= s:NetGetcwd(1) |
1839 nnoremap <buffer> <silent> <cr> :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr> | 1993 nnoremap <buffer> <silent> <cr> :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr> |
1840 nnoremap <buffer> <silent> <c-l> :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'))<cr> | 1994 nnoremap <buffer> <silent> <c-l> :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'))<cr> |
1841 nnoremap <buffer> <silent> - :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'../'))<cr> | 1995 nnoremap <buffer> <silent> - :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'../'))<cr> |
1842 nnoremap <buffer> <silent> a :let g:netrw_hide=!g:netrw_hide<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'))<cr> | 1996 nnoremap <buffer> <silent> a :let g:netrw_hide=(g:netrw_hide+1)%3<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'))<cr> |
1843 nnoremap <buffer> <silent> b :<c-u>call <SID>NetBookmarkDir(0,b:netrw_curdir)<cr> | 1997 nnoremap <buffer> <silent> b :<c-u>call <SID>NetBookmarkDir(0,b:netrw_curdir)<cr> |
1844 nnoremap <buffer> <silent> B :<c-u>call <SID>NetBookmarkDir(1,b:netrw_curdir)<cr> | 1998 nnoremap <buffer> <silent> B :<c-u>call <SID>NetBookmarkDir(1,b:netrw_curdir)<cr> |
1845 nnoremap <buffer> <silent> c :exe "cd ".b:netrw_curdir<cr> | 1999 nnoremap <buffer> <silent> c :exe "cd ".b:netrw_curdir<cr> |
1846 nnoremap <buffer> <silent> d :call <SID>NetMakeDir("")<cr> | 2000 nnoremap <buffer> <silent> d :call <SID>NetMakeDir("")<cr> |
1847 nnoremap <buffer> <silent> <c-h> :call <SID>NetHideEdit(1)<cr> | 2001 nnoremap <buffer> <silent> <c-h> :call <SID>NetHideEdit(1)<cr> |
1848 nnoremap <buffer> <silent> i :call <SID>NetLongList(1)<cr> | 2002 nnoremap <buffer> <silent> i :call <SID>NetLongList(1)<cr> |
1849 nnoremap <buffer> <silent> o :exe g:netrw_winsize."wincmd s"<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr> | 2003 nnoremap <buffer> <silent> o :exe (g:netrw_alto? "bel " : "abo ").g:netrw_winsize."wincmd s"<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr> |
2004 nnoremap <buffer> <silent> p :exe "norm! 0"<bar>call <SID>LocalPreview(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord(),1))<cr> | |
1850 nnoremap <buffer> <silent> q :<c-u>call <SID>NetBookmarkDir(2,b:netrw_curdir)<cr> | 2005 nnoremap <buffer> <silent> q :<c-u>call <SID>NetBookmarkDir(2,b:netrw_curdir)<cr> |
1851 nnoremap <buffer> <silent> r :let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'))<cr> | 2006 nnoremap <buffer> <silent> r :let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'))<cr> |
1852 nnoremap <buffer> <silent> s :call <SID>NetSaveWordPosn()<bar>let g:netrw_sort_by= (g:netrw_sort_by =~ 'n')? 'time' : (g:netrw_sort_by =~ 't')? 'size' : 'name'<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'))<bar>call <SID>NetRestoreWordPosn()<cr> | 2007 nnoremap <buffer> <silent> s :call <SID>NetSaveWordPosn()<bar>let g:netrw_sort_by= (g:netrw_sort_by =~ 'n')? 'time' : (g:netrw_sort_by =~ 't')? 'size' : 'name'<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'))<bar>call <SID>NetRestoreWordPosn()<cr> |
1853 nnoremap <buffer> <silent> S :call <SID>NetSortSequence(1)<cr> | 2008 nnoremap <buffer> <silent> S :call <SID>NetSortSequence(1)<cr> |
1854 nnoremap <buffer> <silent> v :exe g:netrw_winsize."wincmd v"<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr> | 2009 nnoremap <buffer> <silent> v :exe (g:netrw_altv? "rightb " : "lefta ").g:netrw_winsize."wincmd v"<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr> |
1855 nnoremap <buffer> <silent> x :exe "norm! 0"<bar>call <SID>NetBrowseX(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord(),0),0)<cr> | 2010 nnoremap <buffer> <silent> x :exe "norm! 0"<bar>call <SID>NetBrowseX(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord(),0),0)<cr> |
1856 nnoremap <buffer> <silent> <2-leftmouse> :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr> | 2011 nnoremap <buffer> <silent> <2-leftmouse> :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr> |
1857 exe 'nnoremap <buffer> <silent> <del> :exe "norm! 0"<bar>call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>' | 2012 exe 'nnoremap <buffer> <silent> <del> :exe "norm! 0"<bar>call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>' |
1858 exe 'vnoremap <buffer> <silent> <del> :call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>' | 2013 exe 'vnoremap <buffer> <silent> <del> :call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>' |
1859 exe 'nnoremap <buffer> <silent> D :exe "norm! 0"<bar>call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>' | 2014 exe 'nnoremap <buffer> <silent> D :exe "norm! 0"<bar>call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>' |
1886 " call Decho("directories will be sorted by size or date") | 2041 " call Decho("directories will be sorted by size or date") |
1887 " sorted by size or date | 2042 " sorted by size or date |
1888 keepjumps put ='\" Sorted by '.sortby | 2043 keepjumps put ='\" Sorted by '.sortby |
1889 endif | 2044 endif |
1890 if g:netrw_list_hide != "" && g:netrw_hide | 2045 if g:netrw_list_hide != "" && g:netrw_hide |
1891 keepjumps put ='\" Hiding: '.g:netrw_list_hide | 2046 if g:netrw_hide == 1 |
2047 keepjumps put ='\" Hiding: '.g:netrw_list_hide | |
2048 else | |
2049 keepjumps put ='\" Showing: '.g:netrw_list_hide | |
2050 endif | |
1892 let s:netrw_bannercnt= s:netrw_bannercnt + 1 | 2051 let s:netrw_bannercnt= s:netrw_bannercnt + 1 |
1893 endif | 2052 endif |
1894 keepjumps put ='\" Quick Help: ?:help -:go up dir D:delete R:rename s:sort-by x:exec' | 2053 keepjumps put ='\" Quick Help: ?:help -:go up dir D:delete R:rename s:sort-by x:exec' |
1895 keepjumps put ='\" ============================================================================' | 2054 keepjumps put ='\" ============================================================================' |
1896 | 2055 |
1923 " --------------------------------------------------------------------- | 2082 " --------------------------------------------------------------------- |
1924 " LocalBrowseList: does the job of "ls" for local directories {{{2 | 2083 " LocalBrowseList: does the job of "ls" for local directories {{{2 |
1925 fun! LocalBrowseList(dirname) | 2084 fun! LocalBrowseList(dirname) |
1926 " call Dfunc("LocalBrowseList(dirname<".a:dirname.">)") | 2085 " call Dfunc("LocalBrowseList(dirname<".a:dirname.">)") |
1927 | 2086 |
2087 " get the list of files contained in the current directory | |
1928 let dirname = escape(a:dirname,s:netrw_glob_escape) | 2088 let dirname = escape(a:dirname,s:netrw_glob_escape) |
1929 let dirnamelen = strlen(a:dirname) | 2089 let dirnamelen = strlen(a:dirname) |
1930 let filelist = glob(dirname."*") | 2090 let filelist = glob(dirname."*") |
2091 " call Decho("glob(dirname<".dirname.">,*)=".filelist) | |
1931 if filelist != "" | 2092 if filelist != "" |
1932 let filelist= filelist."\n" | 2093 let filelist= filelist."\n" |
1933 endif | 2094 endif |
1934 let filelist= filelist.glob(dirname.".*") | 2095 let filelist= filelist.glob(dirname.".*") |
2096 " call Decho("glob(dirname<".dirname.">,.*)=".glob(dirname.".*")) | |
2097 | |
2098 " if the directory name includes a "$", and possibly other characters, | |
2099 " the glob() doesn't include "." and ".." entries. | |
2100 if filelist !~ '[\\/]\.[\\/]\=\(\n\|$\)' | |
2101 " call Decho("forcibly tacking on .") | |
2102 if filelist == "" | |
2103 let filelist= dirname."." | |
2104 else | |
2105 let filelist= filelist."\n".a:dirname."." | |
2106 endif | |
2107 " call Decho("filelist<".filelist.">") | |
2108 endif | |
2109 if filelist !~ '[\\/]\.\.[\\/]\=\(\n\|$\)' | |
2110 " call Decho("forcibly tacking on ..") | |
2111 let filelist= filelist."\n".a:dirname.".." | |
2112 " call Decho("filelist<".filelist.">") | |
2113 endif | |
2114 let filelist= substitute(filelist,'\n\{2,}','\n','ge') | |
2115 | |
1935 " call Decho("dirname<".dirname.">") | 2116 " call Decho("dirname<".dirname.">") |
1936 " call Decho("dirnamelen<".dirnamelen.">") | 2117 " call Decho("dirnamelen<".dirnamelen.">") |
1937 " call Decho("filelist<".filelist.">") | 2118 " call Decho("filelist<".filelist.">") |
1938 | 2119 |
1939 while filelist != "" | 2120 while filelist != "" |
1945 let filelist= "" | 2126 let filelist= "" |
1946 endif | 2127 endif |
1947 let pfile= file | 2128 let pfile= file |
1948 if isdirectory(file) | 2129 if isdirectory(file) |
1949 let pfile= file."/" | 2130 let pfile= file."/" |
2131 endif | |
2132 if pfile =~ '//$' | |
2133 let pfile= substitute(pfile,'//$','/','e') | |
1950 endif | 2134 endif |
1951 let pfile= strpart(pfile,dirnamelen) | 2135 let pfile= strpart(pfile,dirnamelen) |
1952 if g:netrw_longlist | 2136 if g:netrw_longlist |
1953 let sz = getfsize(file) | 2137 let sz = getfsize(file) |
1954 let fsz = strpart(" ",1,15-strlen(sz)).sz | 2138 let fsz = strpart(" ",1,15-strlen(sz)).sz |
2038 " preparation for removing multiple files/directories | 2222 " preparation for removing multiple files/directories |
2039 let ctr = a:firstline | 2223 let ctr = a:firstline |
2040 let ret = 0 | 2224 let ret = 0 |
2041 let netrw_origdir = s:NetGetcwd(1) | 2225 let netrw_origdir = s:NetGetcwd(1) |
2042 exe 'cd '.b:netrw_curdir | 2226 exe 'cd '.b:netrw_curdir |
2227 let all= 0 | |
2043 | 2228 |
2044 " remove multiple files and directories | 2229 " remove multiple files and directories |
2045 while ctr <= a:lastline | 2230 while ctr <= a:lastline |
2046 exe "keepjumps ".ctr | 2231 exe "keepjumps ".ctr |
2047 | 2232 |
2060 let rmfile= a:path.curword | 2245 let rmfile= a:path.curword |
2061 " call Decho("rmfile<".rmfile.">") | 2246 " call Decho("rmfile<".rmfile.">") |
2062 | 2247 |
2063 if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '/$') | 2248 if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '/$') |
2064 " attempt to remove file | 2249 " attempt to remove file |
2065 call inputsave() | 2250 if !all |
2066 let ok= input("Confirm deletion of file<".rmfile."> ","y") | 2251 echohl Statement |
2067 call inputrestore() | 2252 call inputsave() |
2068 if ok == "y" | 2253 let ok= input("Confirm deletion of file<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ") |
2254 call inputrestore() | |
2255 echohl NONE | |
2256 let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e') | |
2257 if ok =~ 'a\%[ll]' | |
2258 let all= 1 | |
2259 endif | |
2260 endif | |
2261 | |
2262 if all || ok =~ 'y\%[es]' || ok == "" | |
2069 let ret= delete(rmfile) | 2263 let ret= delete(rmfile) |
2070 " call Decho("errcode=".v:shell_error." ret=".ret) | 2264 " call Decho("errcode=".v:shell_error." ret=".ret) |
2265 elseif ok =~ 'q\%[uit]' | |
2266 break | |
2071 endif | 2267 endif |
2072 | 2268 |
2073 else | 2269 else |
2074 " attempt to remove directory | 2270 " attempt to remove directory |
2075 call inputsave() | 2271 if !all |
2076 let ok= input("Confirm deletion of directory<".rmfile."> ","y") | 2272 echohl Statement |
2077 call inputrestore() | 2273 call inputsave() |
2274 let ok= input("Confirm deletion of directory<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ") | |
2275 call inputrestore() | |
2276 let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e') | |
2277 if ok =~ 'a\%[ll]' | |
2278 let all= 1 | |
2279 endif | |
2280 endif | |
2078 let rmfile= substitute(rmfile,'/$','','e') | 2281 let rmfile= substitute(rmfile,'/$','','e') |
2079 | 2282 |
2080 if ok == "y" | 2283 if all || ok =~ 'y\%[es]' || ok == "" |
2081 " call Decho("1st attempt: system(".g:netrw_local_rmdir.' "'.rmfile.'")') | 2284 " call Decho("1st attempt: system(".g:netrw_local_rmdir.' "'.rmfile.'")') |
2082 call system(g:netrw_local_rmdir.' "'.rmfile.'"') | 2285 call system(g:netrw_local_rmdir.' "'.rmfile.'"') |
2083 " call Decho("v:shell_error=".v:shell_error) | 2286 " call Decho("v:shell_error=".v:shell_error) |
2084 | 2287 |
2085 if v:shell_error != 0 | 2288 if v:shell_error != 0 |
2089 | 2292 |
2090 if errcode != 0 | 2293 if errcode != 0 |
2091 if has("unix") | 2294 if has("unix") |
2092 " call Decho("3rd attempt to remove directory<".rmfile.">") | 2295 " call Decho("3rd attempt to remove directory<".rmfile.">") |
2093 call system("rm ".rmfile) | 2296 call system("rm ".rmfile) |
2094 if v:shell_error != 0 | 2297 if v:shell_error != 0 && !exists("g:netrw_quiet") |
2095 echoerr "unable to remove directory<".rmfile."> -- is it empty?" | 2298 echoerr "unable to remove directory<".rmfile."> -- is it empty?" |
2096 endif | 2299 endif |
2097 else | 2300 elseif !exist("g:netrw_quiet")s |
2098 echoerr "unable to remove directory<".rmfile."> -- is it empty?" | 2301 echoerr "unable to remove directory<".rmfile."> -- is it empty?" |
2099 endif | 2302 endif |
2100 endif | 2303 endif |
2101 endif | 2304 endif |
2305 | |
2306 elseif ok =~ 'q\%[uit]' | |
2307 break | |
2102 endif | 2308 endif |
2103 endif | 2309 endif |
2104 | 2310 |
2105 let ctr= ctr + 1 | 2311 let ctr= ctr + 1 |
2106 endwhile | 2312 endwhile |
2159 exe "keepjumps ".curline | 2365 exe "keepjumps ".curline |
2160 " call Dret("LocalBrowseRename") | 2366 " call Dret("LocalBrowseRename") |
2161 endfun | 2367 endfun |
2162 | 2368 |
2163 " --------------------------------------------------------------------- | 2369 " --------------------------------------------------------------------- |
2164 " NetGetcwd: get the current directory. | 2370 " LocalPreview: {{{2 |
2371 fun! <SID>LocalPreview(path) range | |
2372 " call Dfunc("LocalPreview(path<".a:path.">)") | |
2373 if has("quickfix") | |
2374 if !isdirectory(a:path) | |
2375 exe "pedit ".a:path | |
2376 elseif !exist("g:netrw_quiet")s | |
2377 echoerr "sorry, cannot preview a directory such as <".a:path.">" | |
2378 endif | |
2379 elseif !exist("g:netrw_quiet")s | |
2380 echoerr "sorry, to preview your vim needs the quickfix feature compiled in" | |
2381 endif | |
2382 " call Dret("LocalPreview") | |
2383 endfun | |
2384 | |
2385 " --------------------------------------------------------------------- | |
2386 " NetGetcwd: get the current directory. {{{2 | |
2165 " Change backslashes to forward slashes, if any. | 2387 " Change backslashes to forward slashes, if any. |
2166 " If doesc is true, escape certain troublesome characters | 2388 " If doesc is true, escape certain troublesome characters |
2167 fun! <SID>NetGetcwd(doesc) | 2389 fun! <SID>NetGetcwd(doesc) |
2168 " call Dfunc("NetGetcwd(doesc=".a:doesc.")") | 2390 " call Dfunc("NetGetcwd(doesc=".a:doesc.")") |
2169 let curdir= substitute(getcwd(),'\\','/','ge') | 2391 let curdir= substitute(getcwd(),'\\','/','ge') |
2352 " don't let PCs try <.netrc> | 2574 " don't let PCs try <.netrc> |
2353 let b:netrw_method = 3 | 2575 let b:netrw_method = 3 |
2354 endif | 2576 endif |
2355 | 2577 |
2356 else | 2578 else |
2357 echoerr "***error*** cannot determine method" | 2579 if !exists("g:netrw_quiet") |
2580 echoerr "***error*** cannot determine method" | |
2581 endif | |
2358 let b:netrw_method = -1 | 2582 let b:netrw_method = -1 |
2359 endif | 2583 endif |
2360 | 2584 |
2361 " call Decho("a:choice <".a:choice.">") | 2585 " call Decho("a:choice <".a:choice.">") |
2362 " call Decho("b:netrw_method <".b:netrw_method.">") | 2586 " call Decho("b:netrw_method <".b:netrw_method.">") |