From b611dad6e16011a9178f2d4a1592bda648ce7a13 Mon Sep 17 00:00:00 2001 From: gmarik Date: Tue, 2 Nov 2010 22:11:20 -0500 Subject: [PATCH] Bundling by name and Search --- README.md | 74 +++++++++++++++++++++++++++++++-------------- autoload/vundle.vim | 48 +++++++++++++++++++---------- 2 files changed, 84 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index ca24a1b..99df4bf 100644 --- a/README.md +++ b/README.md @@ -2,37 +2,60 @@ [Vundle] is a short cut for **V**imb**undle** and is a ~80 LOC plugin for managing [Vim] plugins. +## Why +[Vundle] can: +- automatically install vim script (aka bundle) +- manage runtime path of your installed scripts so you don't have to +- disable/enable bundles by commenting/uncommenting configured Bundle(requires reload) +- NEW: search [all available vim scripts] by name -## Installation +[Vundle] takes advantage of [vim-scripts.org](http://vim-scripts.org) +in order to install/search [all available vim scripts] - mkdir -p ~/.vim/autoload/ && \ - curl http://github.com/gmarik/vundle/raw/master/autoload/vundle.vim > ~/.vim/autoload/vundle.vim +## How -## Configuration +1. Setup [Vundle]: -Add to your ~/.vimrc + git clone http://github.com/gmarik/vundle.git > ~/.vim/vundle.vim - call vundle#rc() - " My bundles - " Bundle "" - Bundle "http://github.com/vim-scripts/L9.git" - Bundle "http://github.com/vim-scripts/FuzzyFinder.git" - Bundle "git://git.wincent.com/command-t.git" - Bundle "http://github.com/vim-scripts/rails.vim.git" - Bundle "http://github.com/vim-scripts/ack.vim.git" - " check http://vim-scripts.org for more +2. Configure bundles: -BTW [Vim-Scripts.org](http://vim-scripts.org) is a git mirror of all vim scripts. See [gmarik's vimrc](http://github.com/gmarik/vimfiles/blob/6926a7e2ba176a292a8e71b6e4c17f15b8eebe04/vimrc#L134) for working example. + Add to your ~/.vimrc: -## Installing plugins + set rtp+=~/.vim/vundle.git/ + call vundle#rc() -Launch vim and run :BundleInstall. + " My bundles + Bundle "L9" + Bundle "FuzzyFinder" + Bundle "rails.vim" + Bundle "ack.vim" + Bundle "git://git.wincent.com/command-t.git" + " check http://vim-scripts.org for more -Or from command line: +3. Install configured bundles: - $ vim -e -c 'BundleInstall' -c 'q' + Launch vim and run :BundleInstall. -triggers [Git clone](http://gitref.org/creating/#clone) for each configured repo to ~/.vim/bundle/. + Or from command line: + + $ vim -e -c 'BundleInstall' -c 'q' + + triggers [Git clone](http://gitref.org/creating/#clone) for each configured repo to ~/.vim/bundle/. + + See [gmarik's vimrc](https://github.com/gmarik/vimfiles/blob/1f4f26d42f54443f1158e0009746a56b9a28b053/vimrc#L136) for working example. + +## Searching + + :BundleSearch Finder + +Will split new window with results: + + Bundle "FuzzyFinder" + Bundle "Indent-Finder" + Bundle "cHeaderFinder" + +So you can just copy one you need to you .vimrc ## Inspiration and ideas from @@ -41,12 +64,19 @@ triggers [Git clone](http://gitref.org/creating/#clone) for each configured repo * [Scott Bronson](http://github.com/bronson) ## TODO: +[Vundle] is a work in progress so any ideas/patches appreciated -* improve code -* support non [Git] resources aswell +* tests +* allow specify revision/version? +* activate newly added bundles on .vimrc reload +* search by description aswell +* show descrption in search results +* use location list/quick fix list for search results +* make it rock! [Vundle]:http://github.com/gmarik/vundle [Pathogen]:http://github.com/tpope/vim-pathogen/ [Bundler]:http://github.com/wycats/bundler/ [Vim]:http://vim.org [Git]:http://git-scm.com +[all available vim scripts]:http://vim-scripts.org/scripts.html diff --git a/autoload/vundle.vim b/autoload/vundle.vim index 7ca0724..d3d29e0 100644 --- a/autoload/vundle.vim +++ b/autoload/vundle.vim @@ -1,34 +1,49 @@ " vundle.vim - is a shortcut for Vim Bundle and Is a simple plugin manager for Vim " Maintainer: http://github.com/gmarik -" Version: 0.1 +" Version: 0.2 " Readme: http://github.com/gmarik/vundle/blob/master/README.md -if exists("g:vundle_loaded") || &cp | finish | endif -let g:vundle_loaded = 1 - -au BufRead,BufNewFile {bundlerc} set ft=vim - -com! -nargs=+ Bundle call vundle#add_bundle() +com! -nargs=+ Bundle call vundle#add_bundle() com! -nargs=0 BundleInstall call vundle#install_bundles() -com! -nargs=0 BundleDocs call vundle#helptagify_bundles() +com! -nargs=0 BundleDocs call vundle#helptagify_bundles() -let g:bundle_dir = expand('~/.vim/bundle/') +com! -nargs=* BundleSearch call vundle#scripts#search() func! vundle#rc() + let g:bundle_dir = expand('$HOME/.vim/bundle/') let g:bundles = [] endf func! vundle#add_bundle(...) - let [uri; rest] = a:000 | let opts = {} + let [arg; rest] = a:000 | let opts = {} if len(rest) == 1 | let opts = rest[0] | endif - let bundle = vundle#new_bundle(uri, opts) - call vundle#require_bundle(bundle) + " try + let bundle = vundle#new_bundle(arg, opts) + call vundle#require_bundle(bundle) + " catch | echo 'Error: loadin '.arg | endtry endf -func! vundle#new_bundle(uri, opts) - let bundle = a:opts - let bundle.uri = a:uri - let bundle.name = split(a:uri,'\/')[-1] +func! vundle#init_bundle(arg, opts) + let bundle = a:opts | let arg = a:arg + if arg =~ '^\s*\d\+\s*$' || type(arg) == type(42) " script id + let bundle.name = vundle#scripts#find(arg) + let bundle.uri = vundle#script_uri(bundle.name) + elseif arg =~ '^\s*\(git@\|git://\)\S\+' || arg =~ 'https\?://' || arg =~ '\.git\*$' + let bundle.uri = arg + let bundle.name = substitute(split(bundle.uri,'\/')[-1], '\.git\s*$','','i') + else + let bundle.name = arg + let bundle.uri = vundle#script_uri(bundle.name) + endif + return bundle +endf + +func! vundle#script_uri(name) + return 'http://github.com/vim-scripts/'.a:name.'.git' +endf + +func! vundle#new_bundle(arg, opts) + let bundle = vundle#init_bundle(a:arg, a:opts) let bundle.path = expand(g:bundle_dir.''.bundle.name) let bundle.rtpath = has_key(bundle, 'rtp') ? join([bundle.path, bundle.rtp], '/') : bundle.path call add(g:bundles, bundle) @@ -68,3 +83,4 @@ func! vundle#helptagify_bundles() endif endfor endf +