diff options
author | Bram Moolenaar <Bram@vim.org> | 2006-04-13 20:37:35 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2006-04-13 20:37:35 +0000 |
commit | 7fc904b610d5739dd7b72fb2f6b0e4b330c97179 (patch) | |
tree | a7ea75d0ab26a753f13949e25e08e2c875b37d69 /runtime/autoload/netrw.vim | |
parent | 18144c84231aee36ae1d11b74941c9b318f1706a (diff) | |
download | vim-git-7fc904b610d5739dd7b72fb2f6b0e4b330c97179.tar.gz |
updated for version 7.0d03v7.0d03
Diffstat (limited to 'runtime/autoload/netrw.vim')
-rw-r--r-- | runtime/autoload/netrw.vim | 177 |
1 files changed, 99 insertions, 78 deletions
diff --git a/runtime/autoload/netrw.vim b/runtime/autoload/netrw.vim index 7f4bd64e4..1a865fabe 100644 --- a/runtime/autoload/netrw.vim +++ b/runtime/autoload/netrw.vim @@ -1,7 +1,7 @@ " netrw.vim: Handles file transfer and remote directory listing across a network " AUTOLOAD PORTION -" Date: Apr 06, 2006 -" Version: 86 +" Date: Apr 12, 2006 +" Version: 87 " Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz> " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim " Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1 @@ -23,7 +23,7 @@ if &cp || exists("g:loaded_netrw") finish endif -let g:loaded_netrw = "v86" +let g:loaded_netrw = "v87" if v:version < 700 echohl WarningMsg | echo "***netrw*** you need vim version 7.0 or later for version ".g:loaded_netrw." of netrw" | echohl None finish @@ -1155,7 +1155,7 @@ fun! s:NetBrowse(dirname) " set up menus let b:netrw_browser_active= 1 - call s:NetMenu() + call s:NetMenu(1) " make this buffer modifiable setlocal ma nonu nowrap @@ -1460,6 +1460,7 @@ fun! s:NetBrowse(dirname) else exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!' endif + " remove priority pattern prefix exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}\///e' endif if w:netrw_longlist == 1 @@ -1494,14 +1495,17 @@ fun! s:NetBrowseChgDir(dirname,newdir) if newdir !~ '[\/]$' " handling a file let dirname= dirname.newdir + let didfile= 0 if g:netrw_browse_split == 1 new wincmd _ elseif g:netrw_browse_split == 2 rightb vert new wincmd | + else + " handling a file, didn't split, so possibly remove menu + call s:NetMenu(0) endif - call s:NetMenu() " call Decho("handling a file: dirname<".dirname.">") elseif newdir == './' @@ -2567,7 +2571,7 @@ fun! netrw#NetObtain(...) endfun " --------------------------------------------------------------------- -" NetPrevWinOpen: opoen file/directory in previous window. {{{2 +" NetPrevWinOpen: open file/directory in previous window. {{{2 " If there's only one window, then the window will first be split. fun! s:NetPrevWinOpen(islocal) " call Dfunc("NetPrevWinOpen(islocal=".a:islocal.")") @@ -2644,69 +2648,81 @@ endfun " --------------------------------------------------------------------- " NetMenu: generates the menu for gvim and netrw {{{2 -fun! s:NetMenu() +fun! s:NetMenu(domenu) if has("menu") && has("gui_running") && &go =~ 'm' -" call Dfunc("NetMenu()") - if !exists("s:netrw_menu_enabled") +" call Dfunc("NetMenu(domenu=".a:domenu.")") + if !exists("s:netrw_menu_enabled") && a:domenu +" call Decho("initialize menu") let s:netrw_menu_enabled= 1 - if !exists("g:DrChipTopLvlMenu") - let g:DrChipTopLvlMenu= "DrChip." + if !exists("g:NetrwTopLvlMenu") + let g:NetrwTopLvlMenu= "Netrw." + endif + exe 'silent! menu '.g:NetrwTopLvlMenu.'Help<tab><F1> <F1>' + exe 'silent! menu '.g:NetrwTopLvlMenu.'Apply\ Special\ Viewer<tab>x x' + exe 'silent! menu '.g:NetrwTopLvlMenu.'Bookmark\ Current\ Directory<tab>b Nb' + exe 'silent! menu '.g:NetrwTopLvlMenu.'Go\ Up\ Directory<tab>- -' + exe 'silent! menu '.g:NetrwTopLvlMenu.'Goto\ Bookmarked\ Directory<tab>B NB' + exe 'silent! menu '.g:NetrwTopLvlMenu.'Change\ To\ Recently\ Used\ Directory<tab>u u' + exe 'silent! menu '.g:NetrwTopLvlMenu.'Change\ To\ Subsequently\ Used\ Directory<tab>U U' + exe 'silent! menu '.g:NetrwTopLvlMenu.'Delete\ File/Directory<tab>D D' + exe 'silent! menu '.g:NetrwTopLvlMenu.'Edit\ File\ Hiding\ List<tab>'."<ctrl-h> \<c-h>" + exe 'silent! menu '.g:NetrwTopLvlMenu.'Edit\ File/Directory<tab><cr> '."\<cr>" + exe 'silent! menu '.g:NetrwTopLvlMenu.'Edit\ File/Directory,\ New\ Window<tab>o o' + exe 'silent! menu '.g:NetrwTopLvlMenu.'Edit\ File/Directory,\ New\ Vertical\ Window<tab>v v' + exe 'silent! menu '.g:NetrwTopLvlMenu.'List\ Bookmarks\ and\ History<tab>q q' + exe 'silent! menu '.g:NetrwTopLvlMenu.'Listing\ Style\ (thin-long-wide)<tab>i i' + exe 'silent! menu '.g:NetrwTopLvlMenu.'Make\ Subdirectory<tab>d d' + exe 'silent! menu '.g:NetrwTopLvlMenu.'Normal-Hide-Show<tab>a a' + exe 'silent! menu '.g:NetrwTopLvlMenu.'Obtain\ File<tab>O O' + exe 'silent! menu '.g:NetrwTopLvlMenu.'Preview\ File/Directory<tab>p p' + exe 'silent! menu '.g:NetrwTopLvlMenu.'Previous\ Window\ Browser<tab>P P' + exe 'silent! menu '.g:NetrwTopLvlMenu.'Refresh\ Listing<tab>'."<ctrl-l> \<c-l>" + exe 'silent! menu '.g:NetrwTopLvlMenu.'Rename\ File/Directory<tab>R R' + exe 'silent! menu '.g:NetrwTopLvlMenu.'Reverse\ Sorting\ Order<tab>'."r r" + exe 'silent! menu '.g:NetrwTopLvlMenu.'Select\ Sorting\ Style<tab>s s' + exe 'silent! menu '.g:NetrwTopLvlMenu.'Sorting\ Sequence\ Edit<tab>S S' + exe 'silent! menu '.g:NetrwTopLvlMenu.'Set\ Current\ Directory<tab>c c' + exe 'silent! menu '.g:NetrwTopLvlMenu.'Settings/Options<tab>:NetrwSettings '.":NetrwSettings\<cr>" + elseif !a:domenu + let s:netrwcnt = 0 + let curwin = winnr() + windo if getline(2) =~ "Netrw" | let s:netrwcnt= s:netrwcnt + 1 | endif + exe curwin."wincmd w" + + if s:netrwcnt <= 1 +" call Decho("clear menus") + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Help' + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Apply\ Special\ Viewer' + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Bookmark\ Current\ Directory' + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Go\ Up\ Directory' + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Goto\ Bookmarked\ Directory' + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Change\ To\ Recently\ Used\ Directory' + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Change\ To\ Subsequently\ Used\ Directory' + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Delete\ File/Directory' + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Edit\ File/Directory' + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Edit\ File/Directory,\ New\ Window' + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Edit\ File/Directory,\ New\ Vertical\ Window' + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Edit\ File\ Hiding\ List' + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Edit\ File' + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Enter\ File/Directory' + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Enter\ File/Directory\ (vertical\ split)' + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'List\ Bookmarks\ and\ History' + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Listing\ Style\ (thin-long-wide)' + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Make\ Subdirectory' + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Normal-Hide-Show' + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Obtain\ File' + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Preview\ File/Directory' + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Previous\ Window\ Browser' + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Refresh\ Listing' + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Rename\ File/Directory' + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Reverse\ Sorting\ Order' + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Select\ Sorting\ Style' + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Sorting\ Sequence\ Edit' + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Set\ Current\ Directory' + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Settings/Options' + unlet s:netrw_menu_enabled endif - exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Help<tab>? ?' - exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Apply\ Special\ Viewer<tab>x x' - exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Bookmark\ Current\ Directory<tab>b Nb' - exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Go\ Up\ Directory<tab>- -' - exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Goto\ Bookmarked\ Directory<tab>B NB' - exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Change\ To\ Recently\ Used\ Directory<tab>u u' - exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Change\ To\ Subsequently\ Used\ Directory<tab>U U' - exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Delete\ File/Directory<tab>D D' - exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Edit\ File\ Hiding\ List<tab>'."<ctrl-h> \<c-h>" - exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Edit\ File/Directory<tab><cr> '."\<cr>" - exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Edit\ File/Directory,\ New\ Window<tab>o o' - exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Edit\ File/Directory,\ New\ Vertical\ Window\ <tab>v v' - exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.List\ Bookmarks\ and\ History<tab>q q' - exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Listing\ Style\ (thin-long-wide)<tab>i i' - exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Make\ Subdirectory<tab>d d' - exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Normal-Hide-Show<tab>a a' - exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Obtain\ File<tab>O O' - exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Preview\ File/Directory<tab>p p' - exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Previous\ Window\ Browser<tab>P P' - exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Refresh\ Listing<tab>'."<ctrl-l> \<c-l>" - exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Rename\ File/Directory<tab>R R' - exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Reverse\ Sorting\ Order<tab>'."r r" - exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Select\ Sorting\ Style<tab>s s' - exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Sorting\ Sequence\ Edit<tab>S S' - exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Set\ Current\ Directory<tab>c c' - exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Settings/Options<tab>:NetrwSettings '.":NetrwSettings\<cr>" - else -" call Decho("clear menus") - exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Help' - exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Apply\ Special\ Viewer' - exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Bookmark\ Current\ Directory' - exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Go\ Up\ Directory' - exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Goto\ Bookmarked\ Directory' - exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Change\ To\ Recently\ Used\ Directory' - exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Change\ To\ Subsequently\ Used\ Directory' - exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Delete\ File/Directory' - exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Edit\ File\ Hiding\ List' - exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Edit\ File' - exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Enter\ File/Directory' - exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Enter\ File/Directory\ (vertical\ split)' - exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.List\ Bookmarks\ and\ History' - exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Listing\ Style\ (thin-long-wide)' - exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Make\ Subdirectory' - exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Normal-Hide-Show' - exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Obtain\ File' - exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Preview\ File' - exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Previous\ Window\ Browser' - exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Refresh\ Listing' - exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Rename\ File/Directory' - exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Reverse\ Sorting\ Order' - exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Select\ Sorting\ Style' - exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Sorting\ Sequence\ Edit' - exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Set\ Current\ Directory' - exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Settings/Options' endif " call Dret("NetMenu") endif @@ -2766,7 +2782,7 @@ fun! netrw#DirBrowse(dirname) " set up menus let b:netrw_browser_active= 1 - call s:NetMenu() + call s:NetMenu(1) " find buffer number of buffer named precisely the same as a:dirname let bufnum= bufnr(escape(a:dirname,'\')) @@ -2793,7 +2809,7 @@ fun! netrw#DirBrowse(dirname) else exe "keepalt b ".bufnum if exists("s:last_sort_by") && g:netrw_sort_by == s:last_sort_by - if getline(2) =~ '^" Directory Listing ' + if getline(2) =~ '^" Netrw Directory Listing ' if !g:netrw_keepdir " call Decho("change directory: cd ".b:netrw_curdir) exe 'cd '.escape(b:netrw_curdir,s:netrw_cd_escape) @@ -2911,7 +2927,7 @@ fun! netrw#DirBrowse(dirname) " call Decho("set up banner") keepjumps put ='\" ============================================================================' keepjumps 1d - keepjumps put ='\" Directory Listing (netrw '.g:loaded_netrw.')' + keepjumps put ='\" Netrw Directory Listing (netrw '.g:loaded_netrw.')' keepjumps put ='\" '.b:netrw_curdir let w:netrw_bannercnt= 3 @@ -2979,6 +2995,7 @@ fun! netrw#DirBrowse(dirname) exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!' endif endif + " remove priority pattern prefix exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}\///e' else @@ -3025,12 +3042,12 @@ fun! s:LocalBrowseList() let dirname = escape(b:netrw_curdir,s:netrw_glob_escape) let dirnamelen = strlen(b:netrw_curdir) let filelist = glob(dirname."/*") -" call Decho("glob(dirname<".dirname.">,*)=".filelist) +" call Decho("glob(dirname<".dirname."/.*>)=".filelist) if filelist != "" let filelist= filelist."\n" endif let filelist= filelist.glob(dirname."/.*") -" call Decho("glob(dirname<".dirname.">,.*)=".glob(dirname.".*")) +" call Decho("glob(dirname<".dirname."/.*>)=".glob(dirname.".*")) " if the directory name includes a "$", and possibly other characters, " the glob() doesn't include "." and ".." entries. @@ -3145,9 +3162,11 @@ fun! s:LocalBrowseChgDir(dirname,newdir,...) elseif g:netrw_browse_split == 2 rightb vert new wincmd | + else + " handling a file, didn't split, so possibly remove menu + call s:NetMenu(0) endif exe "e! ".escape(dirname,s:netrw_cd_escape) - call s:NetMenu() set ma nomod endif @@ -3177,8 +3196,9 @@ endfun " on the chance that s/he removed/created a file/directory with it. fun! s:LocalBrowseShellCmdRefresh() " call Dfunc("LocalBrowseShellCmdRefresh() browselist=".string(s:netrw_browselist)) - " go through all buffers, - " including unlisted (which is why I can't use bufdo) + " GO through all buffers on netrw_browselist (ie. just local-netrw buffers): + " | refresh any netrw window + " | wipe out any non-displaying netrw buffer let curwin = winnr() let ibl = 0 for ibuf in s:netrw_browselist @@ -4098,11 +4118,12 @@ fun! s:SetSort() let priority = priority + 1 endwhile - " I'm afraid that I don't remember why the following line was present. It - " has something to do with priority -- items that satisfy a two or more - " priority patterns get preceded by two or more priority patterns: ###/ - " So, I want to remove priority patterns, but not ###/ directory names. - " Following pattern retains just one priority pattern. + " Following line associated with priority -- items that satisfy a priority + " pattern get prefixed by ###/ which permits easy sorting by priority. + " Sometimes files can satisfy multiple priority patterns -- only the latest + " priority pattern needs to be retained. So, at this point, these excess + " priority prefixes need to be removed, but not directories that happen to + " be just digits themselves. exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\d\{3}\/\)\%(\d\{3}\/\)\+\ze./\1/e' " call Dret("SetSort") |