Mercurial > vim
comparison runtime/plugin/netrw.vim @ 461:f98374445f66
updated for version 7.0123
author | vimboss |
---|---|
date | Thu, 04 Aug 2005 21:29:45 +0000 |
parents | d9d38102399f |
children | 3b705e71c7b0 |
comparison
equal
deleted
inserted
replaced
460:7f2d3b3c15a2 | 461:f98374445f66 |
---|---|
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 01, 2005 | 2 " Last Change: Aug 02, 2005 |
3 " Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz> | 3 " Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz> |
4 " Version: 56 | 4 " Version: 58b NOT RELEASED |
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 " =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- |
12 " --------------------------------------------------------------------- | 12 " --------------------------------------------------------------------- |
13 " Load Once: {{{1 | 13 " Load Once: {{{1 |
14 if exists("g:loaded_netrw") || &cp | 14 if exists("g:loaded_netrw") || &cp |
15 finish | 15 finish |
16 endif | 16 endif |
17 let g:loaded_netrw = "v56" | 17 let g:loaded_netrw = "v58b" |
18 let loaded_explorer = 1 | 18 let loaded_explorer = 1 |
19 let s:keepcpo = &cpo | 19 let s:keepcpo = &cpo |
20 set cpo&vim | 20 set cpo&vim |
21 | 21 |
22 " --------------------------------------------------------------------- | 22 " --------------------------------------------------------------------- |
88 " alternative: reverse (z y x ...) | 88 " alternative: reverse (z y x ...) |
89 let g:netrw_sort_direction= "normal" | 89 let g:netrw_sort_direction= "normal" |
90 endif | 90 endif |
91 if !exists("g:netrw_longlist") || g:netrw_longlist == 0 | 91 if !exists("g:netrw_longlist") || g:netrw_longlist == 0 |
92 let g:netrw_longlist= 0 | 92 let g:netrw_longlist= 0 |
93 let g:netrw_list_cmd= "ssh HOSTNAME ls -FLa" | |
93 else | 94 else |
94 let g:netrw_longlist= 1 | 95 let g:netrw_longlist= 1 |
95 let g:netrw_list_cmd= "ssh HOSTNAME ls -FLa -lk" | 96 let g:netrw_list_cmd= "ssh HOSTNAME ls -FLa -l" |
97 endif | |
98 if !exists("g:netrw_list_cmd") | |
96 endif | 99 endif |
97 if !exists("g:netrw_timefmt") | 100 if !exists("g:netrw_timefmt") |
98 let g:netrw_timefmt= "%c" | 101 let g:netrw_timefmt= "%c" |
99 endif | 102 endif |
100 if !exists("g:netrw_local_rmdir") | 103 if !exists("g:netrw_local_rmdir") |
230 com! -nargs=* Nread call s:NetSavePosn()<bar>call s:NetRead(<f-args>)<bar>call s:NetRestorePosn() | 233 com! -nargs=* Nread call s:NetSavePosn()<bar>call s:NetRead(<f-args>)<bar>call s:NetRestorePosn() |
231 com! -range=% -nargs=* Nwrite call s:NetSavePosn()<bar><line1>,<line2>call s:NetWrite(<f-args>)<bar>call s:NetRestorePosn() | 234 com! -range=% -nargs=* Nwrite call s:NetSavePosn()<bar><line1>,<line2>call s:NetWrite(<f-args>)<bar>call s:NetRestorePosn() |
232 com! -nargs=* NetUserPass call NetUserPass(<f-args>) | 235 com! -nargs=* NetUserPass call NetUserPass(<f-args>) |
233 | 236 |
234 " Commands: :Explore, :Sexplore, Hexplore, Vexplore {{{1 | 237 " Commands: :Explore, :Sexplore, Hexplore, Vexplore {{{1 |
235 com! -nargs=? -bar -bang Explore call s:Explore(0,0+<bang>0,<q-args>) | 238 com! -nargs=? -bar -bang -count=0 Explore call s:Explore(<count>,0,0+<bang>0,<q-args>) |
236 com! -nargs=? -bar -bang Sexplore call s:Explore(1,0+<bang>0,<q-args>) | 239 com! -nargs=? -bar -bang -count=0 Sexplore call s:Explore(<count>,1,0+<bang>0,<q-args>) |
237 com! -nargs=? -bar -bang Hexplore call s:Explore(1,2+<bang>0,<q-args>) | 240 com! -nargs=? -bar -bang -count=0 Hexplore call s:Explore(<count>,1,2+<bang>0,<q-args>) |
238 com! -nargs=? -bar -bang Vexplore call s:Explore(1,4+<bang>0,<q-args>) | 241 com! -nargs=? -bar -bang -count=0 Vexplore call s:Explore(<count>,1,4+<bang>0,<q-args>) |
242 com! -nargs=? -bar -bang Nexplore call s:Explore(-1,0,0,<q-args>) | |
243 com! -nargs=? -bar -bang Pexplore call s:Explore(-2,0,0,<q-args>) | |
239 | 244 |
240 " ------------------------------------------------------------------------ | 245 " ------------------------------------------------------------------------ |
241 " NetSavePosn: saves position of cursor on screen {{{1 | 246 " NetSavePosn: saves position of cursor on screen {{{1 |
242 fun! s:NetSavePosn() | 247 fun! s:NetSavePosn() |
243 " call Dfunc("NetSavePosn()") | 248 " call Dfunc("NetSavePosn()") |
680 let rfile= bufname(".") | 685 let rfile= bufname(".") |
681 " call Decho("remotefile<".rfile.">") | 686 " call Decho("remotefile<".rfile.">") |
682 " call Dredir("ls!","starting buffer list") | 687 " call Dredir("ls!","starting buffer list") |
683 | 688 |
684 " rename the current buffer to the temp file (ie. fname) | 689 " rename the current buffer to the temp file (ie. fname) |
685 keepalt exe "file ".fname | 690 if v:version < 700 |
691 exe "file ".fname | |
692 else | |
693 keepalt exe "file ".fname | |
694 endif | |
686 " call Dredir("ls!","after renaming current buffer to <".fname.">") | 695 " call Dredir("ls!","after renaming current buffer to <".fname.">") |
687 | 696 |
688 " edit temporary file | 697 " edit temporary file |
689 e | 698 e |
690 " call Dredir("ls!","after editing temporary file") | 699 " call Dredir("ls!","after editing temporary file") |
691 | 700 |
692 " rename buffer back to remote filename | 701 " rename buffer back to remote filename |
693 keepalt exe "file ".rfile | 702 if v:version < 700 |
703 exe "file ".rfile | |
704 else | |
705 keepalt exe "file ".rfile | |
706 endif | |
694 " call Dredir("ls!","renaming buffer back to remote filename<".rfile.">") | 707 " call Dredir("ls!","renaming buffer back to remote filename<".rfile.">") |
695 let line1 = 1 | 708 let line1 = 1 |
696 let line2 = line("$") | 709 let line2 = line("$") |
697 | 710 |
698 elseif filereadable(fname) | 711 elseif filereadable(fname) |
1230 " Note that not all ftp servers honor the options for ls | 1243 " Note that not all ftp servers honor the options for ls |
1231 if method == "ftp" | 1244 if method == "ftp" |
1232 " use ftp to get remote file listing | 1245 " use ftp to get remote file listing |
1233 " call Decho("use ftp to get remote file listing") | 1246 " call Decho("use ftp to get remote file listing") |
1234 call NetBrowseFtpCmd(path,listcmd) | 1247 call NetBrowseFtpCmd(path,listcmd) |
1235 | |
1236 keepjumps 1d | 1248 keepjumps 1d |
1237 | 1249 |
1238 if !g:netrw_longlist | 1250 if !g:netrw_longlist |
1239 " shorten the listing | 1251 " shorten the listing |
1240 " call Decho("generate short listing") | 1252 " call Decho("generate short listing") |
1267 " use ssh to get remote file listing | 1279 " use ssh to get remote file listing |
1268 " call Decho("use ssh to get remote file listing") | 1280 " call Decho("use ssh to get remote file listing") |
1269 let shq= &shq? &shq : ( &sxq? &sxq : "'") | 1281 let shq= &shq? &shq : ( &sxq? &sxq : "'") |
1270 " call Decho("exe silent r! ".listcmd." ".shq.escape(path,s:netrw_cd_escape).shq) | 1282 " call Decho("exe silent r! ".listcmd." ".shq.escape(path,s:netrw_cd_escape).shq) |
1271 exe "silent r! ".listcmd." ".shq.escape(path,s:netrw_cd_escape).shq | 1283 exe "silent r! ".listcmd." ".shq.escape(path,s:netrw_cd_escape).shq |
1284 if !exists("g:junk") | |
1285 let g:junk=1 | |
1286 else | |
1287 put ='testing' | |
1288 return | |
1289 endif | |
1272 keepjumps 1d | 1290 keepjumps 1d |
1273 " cleanup | 1291 " cleanup |
1274 if g:netrw_ftp_browse_reject != "" | 1292 if g:netrw_ftp_browse_reject != "" |
1275 exe "silent! g/".g:netrw_ssh_browse_reject."/keepjumps d" | 1293 exe "silent! g/".g:netrw_ssh_browse_reject."/keepjumps d" |
1276 endif | 1294 endif |
1295 endif | |
1296 | |
1297 " set up syntax highlighting | |
1298 if has("syntax") | |
1299 setlocal ft=netrwlist | |
1300 if !has("syntax_items") | |
1301 setlocal ft= | |
1302 endif | |
1277 endif | 1303 endif |
1278 | 1304 |
1279 " manipulate the directory listing (hide, sort) | 1305 " manipulate the directory listing (hide, sort) |
1280 setlocal ft=netrwlist | |
1281 if line("$") >= s:netrw_bannercnt | 1306 if line("$") >= s:netrw_bannercnt |
1282 if g:netrw_hide && g:netrw_list_hide != "" | 1307 if g:netrw_hide && g:netrw_list_hide != "" |
1283 call s:NetrwListHide() | 1308 call s:NetrwListHide() |
1284 endif | 1309 endif |
1285 | 1310 |
1314 if line("$") >= s:netrw_bannercnt | 1339 if line("$") >= s:netrw_bannercnt |
1315 if g:netrw_sort_by =~ "^n" | 1340 if g:netrw_sort_by =~ "^n" |
1316 call s:SetSort() | 1341 call s:SetSort() |
1317 if v:version < 700 | 1342 if v:version < 700 |
1318 exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()' | 1343 exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()' |
1344 elseif g:netrw_sort_direction =~ 'n' | |
1345 exe 'keepjumps silent '.s:netrw_bannercnt.',$sort' | |
1319 else | 1346 else |
1320 exe 'keepjumps silent '.s:netrw_bannercnt.',$sort' | 1347 exe 'keepjumps silent '.s:netrw_bannercnt.',$sort!' |
1321 endif | 1348 endif |
1322 exe 'keepjumps silent '.s:netrw_bannercnt.',$s/^\d\{3}\///e' | 1349 exe 'keepjumps silent '.s:netrw_bannercnt.',$s/^\d\{3}\///e' |
1323 endif | 1350 endif |
1324 if g:netrw_longlist | 1351 if g:netrw_longlist |
1325 " shorten the list to keep its width <= 80 characters | 1352 " shorten the list to keep its width <= 80 characters |
1350 " call Decho("handling a file: dirname<".dirname.">") | 1377 " call Decho("handling a file: dirname<".dirname.">") |
1351 | 1378 |
1352 elseif newdir == './' | 1379 elseif newdir == './' |
1353 " refresh the directory list | 1380 " refresh the directory list |
1354 " call Decho("refresh directory listing") | 1381 " call Decho("refresh directory listing") |
1355 setlocal ma | 1382 setlocal ma nobl bh=hide |
1356 %d | 1383 %d |
1357 | 1384 |
1358 elseif newdir == '../' | 1385 elseif newdir == '../' |
1359 " go up one directory | 1386 " go up one directory |
1360 let trailer= substitute(a:dirname,'^\(\w\+://\%(\w\+@\)\=\w\+/\)\(.*\)$','\2','') | 1387 let trailer= substitute(a:dirname,'^\(\w\+://\%(\w\+@\)\=\w\+/\)\(.*\)$','\2','') |
1621 " because WinXX ftp uses unix style input | 1648 " because WinXX ftp uses unix style input |
1622 " curline is one more than the bannercnt in order to account | 1649 " curline is one more than the bannercnt in order to account |
1623 " for the unwanted first blank line (doing a :put to an empty | 1650 " for the unwanted first blank line (doing a :put to an empty |
1624 " buffer yields a blank first line) | 1651 " buffer yields a blank first line) |
1625 let ffkeep= &ff | 1652 let ffkeep= &ff |
1626 setlocal ma | 1653 setlocal ma ff=unix |
1627 setlocal ff=unix | |
1628 let curline= s:netrw_bannercnt+1 | 1654 let curline= s:netrw_bannercnt+1 |
1629 exe "silent! keepjumps ".curline.",$d" | 1655 exe "silent! keepjumps ".curline.",$d" |
1630 | 1656 |
1631 "......................................... | 1657 "......................................... |
1632 if s:netrw_method == 2 || s:netrw_method == 5 | 1658 if s:netrw_method == 2 || s:netrw_method == 5 |
1770 " call Dfunc("NetLongList(mode=".a:mode.") netrw_longlist=".g:netrw_longlist) | 1796 " call Dfunc("NetLongList(mode=".a:mode.") netrw_longlist=".g:netrw_longlist) |
1771 call s:NetSavePosn() | 1797 call s:NetSavePosn() |
1772 | 1798 |
1773 if g:netrw_longlist != 0 | 1799 if g:netrw_longlist != 0 |
1774 " turn long listing off | 1800 " turn long listing off |
1801 " call Decho("turn long listing off") | |
1775 let g:netrw_longlist = 0 | 1802 let g:netrw_longlist = 0 |
1776 let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge') | 1803 let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge') |
1777 | 1804 |
1778 else | 1805 else |
1779 " turn long listing on | 1806 " turn long listing on |
1807 " call Decho("turn long listing on") | |
1780 let g:netrw_longlist = 1 | 1808 let g:netrw_longlist = 1 |
1781 let g:netrw_list_cmd = g:netrw_list_cmd." -l" | 1809 let g:netrw_list_cmd = g:netrw_list_cmd." -l" |
1782 endif | 1810 endif |
1811 setlocal ma | |
1812 %d | |
1783 | 1813 |
1784 " refresh the listing | 1814 " refresh the listing |
1785 if a:mode == 0 | 1815 if a:mode == 0 |
1786 silent call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),"./")) | 1816 silent call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),"./")) |
1787 else | 1817 else |
1859 let netrw_origdir= s:NetGetcwd(1) | 1889 let netrw_origdir= s:NetGetcwd(1) |
1860 exe 'cd '.b:netrw_curdir | 1890 exe 'cd '.b:netrw_curdir |
1861 " call Decho("netrw_origdir<".netrw_origdir."> b:netrw_curdir<".b:netrw_curdir.">") | 1891 " call Decho("netrw_origdir<".netrw_origdir."> b:netrw_curdir<".b:netrw_curdir.">") |
1862 " call Decho("exe silent! !".g:netrw_local_mkdir.' "'.newdirname.'"') | 1892 " call Decho("exe silent! !".g:netrw_local_mkdir.' "'.newdirname.'"') |
1863 exe "silent! !".g:netrw_local_mkdir.' "'.newdirname.'"' | 1893 exe "silent! !".g:netrw_local_mkdir.' "'.newdirname.'"' |
1864 if g:netrw_keepdir | exe 'keepjumps cd '.netrw_origdir | endif | 1894 if !g:netrw_keepdir | exe 'keepjumps cd '.netrw_origdir | endif |
1865 endif | 1895 endif |
1866 | 1896 |
1867 if v:shell_error == 0 | 1897 if v:shell_error == 0 |
1868 " refresh listing | 1898 " refresh listing |
1869 " call Decho("refresh listing") | 1899 " call Decho("refresh listing") |
2011 endif | 2041 endif |
2012 | 2042 |
2013 " unfortunate interaction -- when putting debugging calls | 2043 " unfortunate interaction -- when putting debugging calls |
2014 " above one can no longer enter the DBG buffer. | 2044 " above one can no longer enter the DBG buffer. |
2015 " call Dfunc("LocalBrowse(dirname<".a:dirname.">) buf#".bufnr("%")." winnr=".winnr()) | 2045 " call Dfunc("LocalBrowse(dirname<".a:dirname.">) buf#".bufnr("%")." winnr=".winnr()) |
2016 " call Decho("winbufnr1=".winbufnr(1)." winbufnr2=".winbufnr(2)." winbufnr3=".winbufnr(3)) | |
2017 " call Dredir("ls!") | 2046 " call Dredir("ls!") |
2018 | 2047 |
2019 if v:version < 603 | 2048 if v:version < 603 |
2020 if !exists("g:netrw_quiet") | 2049 if !exists("g:netrw_quiet") |
2021 echoerr "***netrw*** vim version<".v:version."> too old for browsing with netrw" | 2050 echoerr "***netrw*** vim version<".v:version."> too old for browsing with netrw" |
2024 " call Dret("LocalBrowse : vim version<".v:version."> too old") | 2053 " call Dret("LocalBrowse : vim version<".v:version."> too old") |
2025 return | 2054 return |
2026 endif | 2055 endif |
2027 | 2056 |
2028 " record autochdir setting and then insure its unset (tnx to David Fishburn) | 2057 " record autochdir setting and then insure its unset (tnx to David Fishburn) |
2029 let keep_autochdir= &autochdir | 2058 if has("netbeans_intg") || has("sun_workshop") |
2030 set noautochdir | 2059 let keep_autochdir= &autochdir |
2031 | 2060 set noautochdir |
2032 " record and change current directory | 2061 endif |
2062 | |
2063 " find buffer number of buffer named precisely the same as a:dirname | |
2064 let bufnum= bufnr(a:dirname) | |
2065 " call Decho("findbuf: bufnum=".bufnum) | |
2066 if bufnum > 0 && bufname(bufnum) != a:dirname | |
2067 let ibuf= 1 | |
2068 let buflast= bufnr("$") | |
2069 while bufname(ibuf) !~ '^'.a:dirname.'\=$' && ibuf <= buflast | |
2070 " call Decho("findbuf: ibuf=".ibuf. " bufname<".bufname(ibuf)."> dirname<".a:dirname.">") | |
2071 let ibuf= ibuf + 1 | |
2072 endwhile | |
2073 if ibuf > buflast | |
2074 let bufnum= -1 | |
2075 else | |
2076 let bufnum= ibuf | |
2077 endif | |
2078 " call Decho("findbuf: bufnum=".bufnum." (final)") | |
2079 endif | |
2080 | |
2081 " get cleared buffer | |
2082 if bufnum < 0 | |
2083 if v:version < 700 | |
2084 enew! | |
2085 else | |
2086 keepalt enew! | |
2087 endif | |
2088 " call Decho("enew buffer") | |
2089 else | |
2090 let eikeep= &ei | |
2091 set ei=BufEnter | |
2092 if v:version < 700 | |
2093 exe "b ".bufnum | |
2094 else | |
2095 exe "keepalt b ".bufnum | |
2096 endif | |
2097 let &ei= eikeep | |
2098 if getline(2) =~ '^" Directory Listing ' | |
2099 " call Dret("LocalBrowse : reusing buffer#".bufnum."<".a:dirname.">") | |
2100 return | |
2101 endif | |
2102 endif | |
2103 | |
2104 " get the new directory name | |
2033 let b:netrw_curdir= substitute(a:dirname,'\\','/','ge') | 2105 let b:netrw_curdir= substitute(a:dirname,'\\','/','ge') |
2034 if b:netrw_curdir =~ '[/\\]$' | 2106 if b:netrw_curdir =~ '[/\\]$' |
2035 let b:netrw_curdir= substitute(b:netrw_curdir,'[/\\]$','','e') | 2107 let b:netrw_curdir= substitute(b:netrw_curdir,'[/\\]$','','e') |
2036 endif | 2108 endif |
2037 " call Decho("b:netrw_curdir<".b:netrw_curdir.">") | 2109 " call Decho("b:netrw_curdir<".b:netrw_curdir.">") |
2110 | |
2038 " make netrw's idea of the current directory vim's if the user wishes | 2111 " make netrw's idea of the current directory vim's if the user wishes |
2039 if g:netrw_keepdir | 2112 if !g:netrw_keepdir |
2040 " call Decho("change directory: cd ".b:netrw_curdir) | 2113 " call Decho("change directory: cd ".b:netrw_curdir) |
2041 exe 'cd '.b:netrw_curdir | 2114 exe 'cd '.b:netrw_curdir |
2042 endif | 2115 endif |
2043 | 2116 |
2044 " change the name of the buffer to reflect the b:netrw_curdir | 2117 " change the name of the buffer to reflect the b:netrw_curdir |
2045 exe 'silent file '.escape(b:netrw_curdir,s:netrw_cd_escape) | 2118 exe 'silent! file '.escape(b:netrw_curdir,s:netrw_cd_escape) |
2046 | 2119 |
2047 " make this buffer modifiable | 2120 " make this buffer modifiable and hidden |
2048 setlocal ma | 2121 setlocal ma hidden nonu |
2049 | 2122 |
2050 " --------------------------- | 2123 " --------------------------- |
2051 " Perform Directory Listing: | 2124 " Perform Directory Listing: |
2052 | 2125 |
2053 " save current directory on directory history list | 2126 " save current directory on directory history list |
2130 " call Decho("bannercnt=".s:netrw_bannercnt) | 2203 " call Decho("bannercnt=".s:netrw_bannercnt) |
2131 | 2204 |
2132 " generate the requested directory listing | 2205 " generate the requested directory listing |
2133 call LocalBrowseList() | 2206 call LocalBrowseList() |
2134 | 2207 |
2208 " set up syntax highlighting | |
2209 if has("syntax") | |
2210 setlocal ft=netrwlist | |
2211 if !has("syntax_items") | |
2212 setlocal ft= | |
2213 endif | |
2214 endif | |
2215 | |
2135 " manipulate the directory listing (hide, sort) | 2216 " manipulate the directory listing (hide, sort) |
2136 setlocal ft=netrwlist | |
2137 if line("$") >= s:netrw_bannercnt | 2217 if line("$") >= s:netrw_bannercnt |
2138 if g:netrw_hide && g:netrw_list_hide != "" | 2218 if g:netrw_hide && g:netrw_list_hide != "" |
2139 call s:NetrwListHide() | 2219 call s:NetrwListHide() |
2140 endif | 2220 endif |
2141 if line("$") >= s:netrw_bannercnt | 2221 if line("$") >= s:netrw_bannercnt |
2222 | |
2142 if g:netrw_sort_by =~ "^n" | 2223 if g:netrw_sort_by =~ "^n" |
2143 call s:SetSort() | 2224 call s:SetSort() |
2225 | |
2144 if v:version < 700 | 2226 if v:version < 700 |
2145 exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()' | 2227 exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()' |
2228 elseif g:netrw_sort_direction =~ 'n' | |
2229 exe 'keepjumps silent '.s:netrw_bannercnt.',$sort' | |
2146 else | 2230 else |
2147 exe 'keepjumps silent '.s:netrw_bannercnt.',$sort' | 2231 exe 'keepjumps silent '.s:netrw_bannercnt.',$sort!' |
2148 endif | 2232 endif |
2149 exe 'keepjumps silent '.s:netrw_bannercnt.',$s/^\d\{3}\///e' | 2233 exe 'keepjumps silent '.s:netrw_bannercnt.',$s/^\d\{3}\///e' |
2234 | |
2150 else | 2235 else |
2151 if v:version < 700 | 2236 if v:version < 700 |
2152 exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()' | 2237 exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()' |
2238 elseif g:netrw_sort_direction =~ 'n' | |
2239 exe 'keepjumps silent '.s:netrw_bannercnt.',$sort' | |
2153 else | 2240 else |
2154 exe 'keepjumps silent '.s:netrw_bannercnt.',$sort' | 2241 exe 'keepjumps silent '.s:netrw_bannercnt.',$sort!' |
2155 endif | 2242 endif |
2156 exe 'keepjumps silent '.s:netrw_bannercnt.',$s/^\d\{-}\///e' | 2243 exe 'keepjumps silent '.s:netrw_bannercnt.',$s/^\d\{-}\///e' |
2157 endif | 2244 endif |
2245 | |
2158 endif | 2246 endif |
2159 endif | 2247 endif |
2160 exe s:netrw_bannercnt | 2248 exe s:netrw_bannercnt |
2161 | 2249 |
2162 setlocal noma nomod nonu | 2250 setlocal noma nomod nonu bh=hide nobl |
2163 let &autochdir= keep_autochdir | 2251 if has("netbeans_intg") || has("sun_workshop") |
2252 let &autochdir= keep_autochdir | |
2253 endif | |
2164 | 2254 |
2165 " call Dret("LocalBrowse : file<".expand("%:p")."> bufname<".bufname("%").">") | 2255 " call Dret("LocalBrowse : file<".expand("%:p")."> bufname<".bufname("%").">") |
2166 endfun | 2256 endfun |
2167 | 2257 |
2168 " --------------------------------------------------------------------- | 2258 " --------------------------------------------------------------------- |
2224 " call Decho("filename<".filename.">") | 2314 " call Decho("filename<".filename.">") |
2225 " call Decho("pfile <".pfile.">") | 2315 " call Decho("pfile <".pfile.">") |
2226 | 2316 |
2227 if g:netrw_longlist | 2317 if g:netrw_longlist |
2228 let sz = getfsize(filename) | 2318 let sz = getfsize(filename) |
2229 let fsz = strpart(" ",1,15-strlen(sz)).sz | 2319 if v:version <= 700 |
2230 let pfile= pfile."\t".fsz." ".strftime(g:netrw_timefmt,getftime(filename)) | 2320 let fsz = strpart(" ",1,15-strlen(sz)).sz |
2321 let pfile= pfile."\t".fsz." ".strftime(g:netrw_timefmt,getftime(filename)) | |
2322 else | |
2323 let pfile= printf('%-'.g:netrw_maxfilenamelen.'s%15d%s',pfile,sz,getftime(filename)) | |
2324 endif | |
2231 " call Decho("sz=".sz." fsz=".fsz) | 2325 " call Decho("sz=".sz." fsz=".fsz) |
2232 endif | 2326 endif |
2233 | 2327 |
2234 if g:netrw_sort_by =~ "^t" | 2328 if g:netrw_sort_by =~ "^t" |
2235 " sort by time (handles time up to 1 quintillion seconds, US) | 2329 " sort by time (handles time up to 1 quintillion seconds, US) |
2272 if dirname !~ '[\/]$' | 2366 if dirname !~ '[\/]$' |
2273 " apparently vim is "recognizing" that it is in the home directory and | 2367 " apparently vim is "recognizing" that it is in the home directory and |
2274 " is removing the "/". Bad idea, so I have to put it back. | 2368 " is removing the "/". Bad idea, so I have to put it back. |
2275 let dirname= dirname.'/' | 2369 let dirname= dirname.'/' |
2276 " call Decho("adjusting dirname<".dirname.">") | 2370 " call Decho("adjusting dirname<".dirname.">") |
2277 setlocal ma | |
2278 %d | |
2279 endif | 2371 endif |
2280 | 2372 |
2281 if newdir !~ '[\/]$' | 2373 if newdir !~ '[\/]$' |
2282 " handling a file | 2374 " handling a file |
2283 let dirname= dirname.newdir | 2375 let dirname= dirname.newdir |
2295 | 2387 |
2296 elseif newdir == '../' | 2388 elseif newdir == '../' |
2297 " go up one directory | 2389 " go up one directory |
2298 let dirname= substitute(dirname,'^\(.*/\)\([^/]\+[\/]$\)','\1','e') | 2390 let dirname= substitute(dirname,'^\(.*/\)\([^/]\+[\/]$\)','\1','e') |
2299 " call Decho("go up one dir: dirname<".dirname.">") | 2391 " call Decho("go up one dir: dirname<".dirname.">") |
2300 setlocal ma | |
2301 %d | |
2302 | 2392 |
2303 else | 2393 else |
2304 " go down one directory | 2394 " go down one directory |
2305 let dirname= dirname.newdir | 2395 let dirname= dirname.newdir |
2306 " call Decho("go down one dir: dirname<".dirname."> newdir<".newdir.">") | 2396 " call Decho("go down one dir: dirname<".dirname."> newdir<".newdir.">") |
2307 setlocal ma | |
2308 %d | |
2309 endif | 2397 endif |
2310 | 2398 |
2311 " call Dret("LocalBrowseChgDir <".dirname.">") | 2399 " call Dret("LocalBrowseChgDir <".dirname.">") |
2312 return dirname | 2400 return dirname |
2313 endfun | 2401 endfun |
2486 " Explore: launch the local browser in the directory of the current file {{{2 | 2574 " Explore: launch the local browser in the directory of the current file {{{2 |
2487 " dosplit==0: the window will be split iff the current file has | 2575 " dosplit==0: the window will be split iff the current file has |
2488 " been modified | 2576 " been modified |
2489 " dosplit==1: the window will be split before running the local | 2577 " dosplit==1: the window will be split before running the local |
2490 " browser | 2578 " browser |
2491 fun! s:Explore(dosplit,style,...) | 2579 fun! s:Explore(indx,dosplit,style,...) |
2492 " call Dfunc("Explore(dosplit=".a:dosplit." style=".a:style.")") | 2580 " call Dfunc("Explore(indx=".a:indx." dosplit=".a:dosplit." style=".a:style.")") |
2493 | 2581 |
2494 " if dosplit or file has been modified | 2582 " if dosplit or file has been modified |
2495 if a:dosplit || &modified | 2583 if a:dosplit || &modified |
2496 if a:style == 0 " Explore, Sexplore | 2584 if a:style == 0 " Explore, Sexplore |
2497 exe g:netrw_winsize."wincmd s" | 2585 exe g:netrw_winsize."wincmd s" |
2507 exe "rightb ".g:netrw_winsize."wincmd v" | 2595 exe "rightb ".g:netrw_winsize."wincmd v" |
2508 endif | 2596 endif |
2509 endif | 2597 endif |
2510 norm! 0 | 2598 norm! 0 |
2511 | 2599 |
2512 if a:1 == "" | 2600 if a:1 == "" && a:indx >= 0 |
2513 let newdir= substitute(expand("%:p"),'^\(.*\)[/\\][^/\\]*$','\1','e') | 2601 let newdir= substitute(expand("%:p"),'^\(.*\)[/\\][^/\\]*$','\1','e') |
2602 " call Decho("calling LocalBrowse(newdir<".newdir.">)") | |
2603 call s:LocalBrowse(newdir) | |
2604 | |
2605 elseif a:1 =~ '\*\*' || a:indx < 0 | |
2606 | |
2607 if has("path_extra") | |
2608 if !exists("s:indx") | |
2609 let s:indx= 0 | |
2610 endif | |
2611 let indx = a:indx | |
2612 if indx == -1 | |
2613 let indx= s:indx + 1 | |
2614 elseif indx == -2 | |
2615 let indx= s:indx - 1 | |
2616 else | |
2617 let s:indx = 0 | |
2618 let s:explorelist = split(expand(b:netrw_curdir."/".a:1),'\n') | |
2619 let s:listlen = len(s:explorelist) | |
2620 endif | |
2621 let s:indx = indx | |
2622 " call Decho("explorelist<".join(s:explorelist,',')."> len=".s:listlen) | |
2623 | |
2624 " sanity check | |
2625 if indx >= s:listlen | |
2626 echoerr "***netrw*** no more directories with matching files" | |
2627 call inputsave()|call input("Press <cr> to continue")|call inputrestore() | |
2628 " call Dret("Explore") | |
2629 return | |
2630 endif | |
2631 | |
2632 exe "let dirfile= s:explorelist[".indx."]" | |
2633 " call Decho("dirfile<".dirfile."> indx=".indx) | |
2634 let newdir= substitute(dirfile,'/[^/]*$','','e') | |
2635 " call Decho("newdir<".newdir.">") | |
2636 " call Decho("calling LocalBrowse(newdir<".newdir.">)") | |
2637 call s:LocalBrowse(newdir) | |
2638 call search(substitute(dirfile,"^.*/","",""),"W") | |
2639 | |
2640 else | |
2641 if v:version < 700 | |
2642 echoerr "***netrw*** you need vim version 7.0 or later for Exploring with **!" | |
2643 elseif !exists("g:netrw_quiet") | |
2644 echoerr "***netrw*** your vim needs the path_extra feature for Exploring with **!" | |
2645 endif | |
2646 call inputsave()|call input("Press <cr> to continue")|call inputrestore() | |
2647 endif | |
2648 | |
2514 else | 2649 else |
2515 let newdir= a:1 | 2650 let newdir= a:1 |
2516 endif | 2651 " call Decho("calling LocalBrowse(newdir<".newdir.">)") |
2517 " call Decho("newdir<".newdir.">") | 2652 call s:LocalBrowse(newdir) |
2518 call s:LocalBrowse(newdir) | 2653 endif |
2519 | 2654 |
2520 " call Dret("Explore") | 2655 " call Dret("Explore") |
2521 endfun | 2656 endfun |
2522 | 2657 |
2523 " --------------------------------------------------------------------- | 2658 " --------------------------------------------------------------------- |