" Author: Gergely Kontra " Version: 0.2 " Description: " Adds a new menu to vim " You can add your favourite files (and directories) into it " " Installation: Drop it into your plugin directory " " History: " 0.1: Initial release " 0.2: " * Fixed bug, which caused same files to hide each other " * Your favourite files must be located at $FAVOURITES " * You can Edit the favourites. Menus will updated, when you save " * When you click on the menu, it invokes the fav_fun function " * You can choose cascade delete menu by defining fav_cascade_del " (at startup!) " * You can add directories to your favourites " Thanks to the_intellectual_person , " who gave me a patch for this " 0.21:* Fixed bug, which caused not to update you menu, when you remove " one of your favourites " * Fixed REGEXP bug (When removing files) " " TODO: " Are all valid filenames escaped? " let s:cascade_del=exists('fav_cascade_del') fu! SpWhenModified(f) if &mod exe 'sp '.a:f else exe 'e '.a:f endif endf fu! SpWhenNamedOrModified(f) if bufname('')!='' || &mod exe 'sp '.a:f else exe 'e '.a:f endf fu! FavFunc() if exists('g:fav_fun') retu g:fav_fun el retu 'SpWhenModified' en endf fu! AddThisFile(name) let fullname=fnamemodify(a:name,':p') let path=escape(fnamemodify(fullname,':p:h'),'\. #') let fn=escape(fnamemodify(fullname,':p:t'),'\. #') if strlen(fn) let item=fn.'\ ['.s:cnt.']'.path else let item='\ ['.s:cnt.']'.path endif let s:cnt=s:cnt+1 exe 'amenu Fa&vourites.'.item." :call \=FavFunc()('".escape(fullname,'#')."')" if s:cascade_del exe 'amenu Fa&vourites.Remove.'.item." :call RemoveThisFile('".fullname."')" endif endf fu! AddThisFilePermanent(name) let fullname=fnamemodify(a:name,':p') call AddThisFile(a:name) sp $FAVOURITES|set nobl|1 if search('^\V'.escape(fullname,'\').'\$','w') call confirm('This is already in your favourites file!',' :-/ ',1,'W') else exe 'norm Go'.fullname."\" endif wq endf fu! RemoveThisFile(name) let fullname=fnamemodify(a:name,':p') let path=escape(fnamemodify(fullname,':p:h'),'\. ') let fn=escape(fnamemodify(fullname,':p:t'),'\. ') sp $FAVOURITES|set nobl if search('^\V'.escape(fullname,'\').'\$','w') d _ else call confirm('Cannot find this file in your favourites file!',' :-/ ',1,'e') endif wq call Init() endf fu! Init() let s:cnt=1 silent! aunmenu Fa&vourites amenu 65.1 Fa&vourites.&Add\ current\ file :call AddThisFilePermanent(@%) amenu 65.4 Fa&vourites.&Edit\ favourites :call =FavFunc()($FAVOURITES):au BufWritePost % call Init() amenu 65.5 Fa&vourites.-sep- if s:cascade_del amenu 65.3 Fa&vourites.&Remove.Dummy else amenu 65.2 Fa&vourites.&Remove\ current\ file :call RemoveThisFile(@%) endif if filereadable($FAVOURITES) sp $FAVOURITES|set nobl let s=@/ g/\S/call AddThisFile(getline('.')) let @/=s q silent! aunmenu Fa&vourites.&Remove.Dummy endif endf silent! call Init()