rb_nav 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +14 -0
- data/MIT-LICENSE.txt +21 -0
- data/NOTES +10 -0
- data/README.markdown +91 -0
- data/Rakefile +70 -0
- data/bin/rb_nav_classes +28 -0
- data/bin/rb_nav_install +14 -0
- data/bin/rb_nav_methods +19 -0
- data/lib/rb_nav/version.rb +4 -0
- data/lib/rb_nav.rb +4 -0
- data/lib/rb_nav.vim +150 -0
- data/rb_nav.gemspec +29 -0
- metadata +73 -0
data/.gitignore
ADDED
data/MIT-LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
Copyright (c) 2011 Daniel Choi, http://danielchoi.com/software/
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
21
|
+
|
data/NOTES
ADDED
data/README.markdown
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
# RbNav
|
2
|
+
|
3
|
+
RbNav is a lightweight Vim pluging that helps you navigate the classes,
|
4
|
+
modules, and methods in your Ruby project
|
5
|
+
|
6
|
+
[screenshots]
|
7
|
+
|
8
|
+
Benefits
|
9
|
+
|
10
|
+
* navigate the classes and modules in your Ruby projects with less typing
|
11
|
+
* jump to methods on current page more quickly
|
12
|
+
* symbol-centric approach to navigation might suit you better than the file-centric approach
|
13
|
+
|
14
|
+
|
15
|
+
## Prerequisites
|
16
|
+
|
17
|
+
* Ruby 1.8.6 (tested on 1.9.2)
|
18
|
+
* Vim 7.2 or higher
|
19
|
+
|
20
|
+
## Install
|
21
|
+
|
22
|
+
gem install rb_nav
|
23
|
+
|
24
|
+
Then
|
25
|
+
|
26
|
+
rb_nav_install
|
27
|
+
|
28
|
+
This installs the rb_nav.vim plugin into your ~/.vim/plugin directory.
|
29
|
+
|
30
|
+
To upgrade RbNav to a newer version, just repeat the installation procedure.
|
31
|
+
Don't forget to run `rb_nav_install` again after you download the new gem.
|
32
|
+
|
33
|
+
|
34
|
+
## Commands
|
35
|
+
|
36
|
+
For the all the commands below, the mapleader is assumed to be `,`. If it is
|
37
|
+
`\` or something else for your setup, use that instead.
|
38
|
+
|
39
|
+
### Invoking the plugin
|
40
|
+
|
41
|
+
* `,N` navigate the classes and modules in your project
|
42
|
+
* `,n` navigating the methods in the current file
|
43
|
+
|
44
|
+
|
45
|
+
Press `TAB` to start autocompletion.
|
46
|
+
|
47
|
+
Use the standard Vim autocompletion commands to move up and down the match
|
48
|
+
list.
|
49
|
+
|
50
|
+
* `CTRL-p` and `CTRL-n` let you navigate the drop-down matches. Press `ENTER` to select
|
51
|
+
one.
|
52
|
+
* `CTRL-e` closes the match list and lets you continue typing
|
53
|
+
* `CTRL-u`: when the match list is active, cycles forward through the match
|
54
|
+
list and what you've typed so far; when the match list is inactive, erases
|
55
|
+
what you've typed.
|
56
|
+
* both `TAB` and `CTRL-x CTRL-u` reactivates autocompletion if it's gone away
|
57
|
+
* `CTRL-y` selects the highlighted match without triggering ENTER
|
58
|
+
|
59
|
+
|
60
|
+
### The search path
|
61
|
+
|
62
|
+
By default RbNav looks for `app`, `lib`, and `test` directories in your working
|
63
|
+
directory and adds what it finds to the search path.
|
64
|
+
|
65
|
+
You can customize the search path by putting something like this in a `.vimrc`
|
66
|
+
files at the root of your project's directory.
|
67
|
+
|
68
|
+
let g:RbNavPaths = "application lib spec"
|
69
|
+
|
70
|
+
The directories should be separated by spaces.
|
71
|
+
|
72
|
+
|
73
|
+
## Bug reports and feature requests
|
74
|
+
|
75
|
+
Please submit them here:
|
76
|
+
|
77
|
+
* <https://github.com/danchoi/rb_nav/issues>
|
78
|
+
|
79
|
+
|
80
|
+
## About the developer
|
81
|
+
|
82
|
+
My name is Daniel Choi. I specialize in Ruby, Rails, MySQL, PostgreSQL, and iOS
|
83
|
+
development. I am based in Cambridge, Massachusetts, USA.
|
84
|
+
|
85
|
+
* Twitter: [@danchoi][twitter]
|
86
|
+
* Personal Email: dhchoi@gmail.com
|
87
|
+
* My Homepage: <http://danielchoi.com/software>
|
88
|
+
|
89
|
+
[twitter]:http://twitter.com/#!/danchoi
|
90
|
+
|
91
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'bundler'
|
4
|
+
Bundler::GemHelper.install_tasks
|
5
|
+
|
6
|
+
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), 'lib')
|
7
|
+
|
8
|
+
desc "release and build and push new website"
|
9
|
+
task :push => [:release, :web]
|
10
|
+
|
11
|
+
desc "Bumps version number up one and git commits"
|
12
|
+
task :bump do
|
13
|
+
basefile = "lib/rb_nav/version.rb"
|
14
|
+
file = File.read(basefile)
|
15
|
+
oldver = file[/VERSION = '(\d.\d.\d)'/, 1]
|
16
|
+
newver_i = oldver.gsub(".", '').to_i + 1
|
17
|
+
newver = ("%.3d" % newver_i).split(//).join('.')
|
18
|
+
puts oldver
|
19
|
+
puts newver
|
20
|
+
puts "Bumping version: #{oldver} => #{newver}"
|
21
|
+
newfile = file.gsub("VERSION = '#{oldver}'", "VERSION = '#{newver}'")
|
22
|
+
File.open(basefile, 'w') {|f| f.write newfile}
|
23
|
+
`git commit -am 'Bump'`
|
24
|
+
end
|
25
|
+
|
26
|
+
desc "build and push website"
|
27
|
+
task :web => :build_webpage do
|
28
|
+
puts "Building and pushing website"
|
29
|
+
Dir.chdir "../project-webpages" do
|
30
|
+
`scp out/rb_nav.html zoe2@instantwatcher.com:~/danielchoi.com/public/software/`
|
31
|
+
`rsync -avz out/images-rb_nav zoe2@instantwatcher.com:~/danielchoi.com/public/software/`
|
32
|
+
`rsync -avz out/stylesheets zoe2@instantwatcher.com:~/danielchoi.com/public/software/`
|
33
|
+
`rsync -avz out/lightbox2 zoe2@instantwatcher.com:~/danielchoi.com/public/software/`
|
34
|
+
end
|
35
|
+
#`open http://danielchoi.com/software/rb_nav.html`
|
36
|
+
end
|
37
|
+
|
38
|
+
desc "build webpage"
|
39
|
+
task :build_webpage do
|
40
|
+
`cp README.markdown ../project-webpages/src/rb_nav.README.markdown`
|
41
|
+
`cp coverage.markdown ../project-webpages/src/rb_nav.coverage.markdown`
|
42
|
+
Dir.chdir "../project-webpages" do
|
43
|
+
puts `ruby gen.rb rb_nav #{RIVim::VERSION}`
|
44
|
+
`open out/rb_nav.html`
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
|
49
|
+
desc "git push and rake release bumped version"
|
50
|
+
task :bumped do
|
51
|
+
puts `git push && rake release`
|
52
|
+
Rake::Task["web"].execute
|
53
|
+
end
|
54
|
+
|
55
|
+
desc "Run tests"
|
56
|
+
task :test do
|
57
|
+
$:.unshift File.expand_path("test")
|
58
|
+
require 'test_helper'
|
59
|
+
Dir.chdir("test") do
|
60
|
+
Dir['*_test.rb'].each do |x|
|
61
|
+
puts "requiring #{x}"
|
62
|
+
require x
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
MiniTest::Unit.autorun
|
67
|
+
end
|
68
|
+
|
69
|
+
task :default => :test
|
70
|
+
|
data/bin/rb_nav_classes
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# Use this pipe
|
4
|
+
# grep -rn '^\s*\(class\|module\) ' app lib | ruby nav/nav.rb
|
5
|
+
|
6
|
+
begin
|
7
|
+
xs = STDIN.readlines.
|
8
|
+
map {|x|
|
9
|
+
parts = x.strip.split(/:/,3)
|
10
|
+
path, line, klass = *parts
|
11
|
+
klass = klass ? klass.strip.sub(/^\w+\s/,'') : "no class"
|
12
|
+
if klass =~ /<<\s*self/
|
13
|
+
nil
|
14
|
+
else
|
15
|
+
[klass, [path, line].join(':')]
|
16
|
+
end
|
17
|
+
}.compact
|
18
|
+
|
19
|
+
max_width = xs.reduce(0) { |max, x| [x[0].length, max].max }
|
20
|
+
|
21
|
+
xs.each do |x|
|
22
|
+
klass, path = *x
|
23
|
+
puts "%-#{max_width}s %s" % [klass, path]
|
24
|
+
end
|
25
|
+
rescue
|
26
|
+
puts $!
|
27
|
+
end
|
28
|
+
|
data/bin/rb_nav_install
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
begin
|
3
|
+
require 'install'
|
4
|
+
rescue LoadError
|
5
|
+
require 'rubygems'
|
6
|
+
require 'install'
|
7
|
+
end
|
8
|
+
|
9
|
+
`mkdir -p #{ENV['HOME']}/.vim/plugin`
|
10
|
+
vimscript_file = File.join(File.dirname(__FILE__), '..', 'lib/rb_nav.vim')
|
11
|
+
|
12
|
+
path = "#{ENV['HOME']}/.vim/plugin/"
|
13
|
+
`cp #{vimscript_file} #{path}`
|
14
|
+
puts "rb_nav.vim installed at #{path}"
|
data/bin/rb_nav_methods
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# Use this pipe
|
4
|
+
#grep -rn '^\s*\def ' $1 | ruby nav/methods.rb
|
5
|
+
|
6
|
+
xs = STDIN.readlines.
|
7
|
+
map {|x|
|
8
|
+
line, method = *x.strip.split(/:/)
|
9
|
+
method = method.strip
|
10
|
+
[method, line]
|
11
|
+
}
|
12
|
+
|
13
|
+
max_width = xs.reduce(0) { |max, x| [x[0].length, max].max }
|
14
|
+
|
15
|
+
xs.each do |x|
|
16
|
+
method, line = *x
|
17
|
+
puts "%-#{max_width}s %s" % [method, line]
|
18
|
+
end
|
19
|
+
|
data/lib/rb_nav.rb
ADDED
data/lib/rb_nav.vim
ADDED
@@ -0,0 +1,150 @@
|
|
1
|
+
" Vim script that add ability to search and play iTunes tracks from Vim
|
2
|
+
" Maintainer: Daniel Choi <dhchoi@gmail.com>
|
3
|
+
" License: MIT License (c) 2011 Daniel Choi
|
4
|
+
|
5
|
+
" This can be set in .vimrc
|
6
|
+
if !exists("g:RbNavPaths")
|
7
|
+
let g:RbNavPaths = ""
|
8
|
+
for x in ['app', 'lib', 'test']
|
9
|
+
if isdirectory(x)
|
10
|
+
let g:RbNavPaths .= x.' '
|
11
|
+
endif
|
12
|
+
endfor
|
13
|
+
endif
|
14
|
+
|
15
|
+
let s:last_class_search = ""
|
16
|
+
|
17
|
+
func! RbNavClasses()
|
18
|
+
endfunc
|
19
|
+
|
20
|
+
func! RbNavMethods()
|
21
|
+
endfunc
|
22
|
+
|
23
|
+
func! s:trimString(string)
|
24
|
+
let string = substitute(a:string, '\s\+$', '', '')
|
25
|
+
return substitute(string, '^\s\+', '', '')
|
26
|
+
endfunc
|
27
|
+
|
28
|
+
func! s:prepare_autocomplete()
|
29
|
+
let s:current_file = bufname('')
|
30
|
+
leftabove split rb_nav_prompt
|
31
|
+
setlocal textwidth=0
|
32
|
+
setlocal buftype=nofile
|
33
|
+
setlocal noswapfile
|
34
|
+
setlocal modifiable
|
35
|
+
setlocal nowrap
|
36
|
+
resize 2
|
37
|
+
noremap <buffer> <Esc> :close<cr>
|
38
|
+
inoremap <buffer> <Tab> <C-x><C-u>
|
39
|
+
endfunc
|
40
|
+
|
41
|
+
" Classes
|
42
|
+
|
43
|
+
function! s:autocomplete_classes()
|
44
|
+
call s:prepare_autocomplete()
|
45
|
+
inoremap <buffer> <cr> <Esc>:call <SID>open_class_file()<cr>
|
46
|
+
noremap <buffer> <cr> <Esc>:call <SID>open_class_file()<cr>
|
47
|
+
setlocal completefunc=AutocompleteRbNavClasses
|
48
|
+
call setline(1, "Select a class or module: ")
|
49
|
+
call setline(2, "") " s:last_class_search)
|
50
|
+
normal G$
|
51
|
+
call feedkeys("a\<c-x>\<c-u>\<c-p>", 't')
|
52
|
+
endfunction
|
53
|
+
|
54
|
+
function! AutocompleteRbNavClasses(findstart, base)
|
55
|
+
if a:findstart
|
56
|
+
let start = 0
|
57
|
+
return start
|
58
|
+
else
|
59
|
+
let res = []
|
60
|
+
for m in RbNavClasses()
|
61
|
+
" why doesn't case insensitive flag work?
|
62
|
+
if m =~ substitute(a:base, '\*', '\\*', '')
|
63
|
+
call add(res, m)
|
64
|
+
endif
|
65
|
+
endfor
|
66
|
+
return res
|
67
|
+
endif
|
68
|
+
endfun
|
69
|
+
|
70
|
+
func! RbNavClasses()
|
71
|
+
let command = "grep -rn ".g:RbNavPaths." --include='*.rb' -e '^\\s*\\(class\\|module\\) \\+[A-Z]' | rb_nav_classes | sort"
|
72
|
+
let res = system(command)
|
73
|
+
return split(res, "\n")
|
74
|
+
endfunc
|
75
|
+
|
76
|
+
" Methods
|
77
|
+
|
78
|
+
function! s:autocomplete_methods()
|
79
|
+
call s:prepare_autocomplete()
|
80
|
+
inoremap <buffer> <cr> <Esc>:call <SID>jump_to_method()<cr>
|
81
|
+
noremap <buffer> <cr> <Esc>:call <SID>jump_to_method()<cr>
|
82
|
+
setlocal completefunc=AutocompleteRbNavMethods
|
83
|
+
call setline(1, "Select a method: ")
|
84
|
+
call setline(2, "")
|
85
|
+
normal G$
|
86
|
+
call feedkeys("a\<c-x>\<c-u>\<c-p>", 't')
|
87
|
+
endfunction
|
88
|
+
|
89
|
+
function! AutocompleteRbNavMethods(findstart, base)
|
90
|
+
if a:findstart
|
91
|
+
let start = 0
|
92
|
+
return start
|
93
|
+
else
|
94
|
+
let res = []
|
95
|
+
for m in RbNavMethods()
|
96
|
+
" why doesn't case insensitive flag work?
|
97
|
+
if m =~ '^\c.\?' . substitute(a:base, '\*', '\\*', '')
|
98
|
+
call add(res, m)
|
99
|
+
endif
|
100
|
+
endfor
|
101
|
+
return res
|
102
|
+
endif
|
103
|
+
endfun
|
104
|
+
|
105
|
+
func! RbNavMethods()
|
106
|
+
let command = "grep -rn '^\\s*\\def ' ".s:current_file." | rb_nav_methods "
|
107
|
+
echom command
|
108
|
+
let res = system(command)
|
109
|
+
return split(res, "\n")
|
110
|
+
endfunc
|
111
|
+
|
112
|
+
func! s:open_class_file()
|
113
|
+
if (getline(2) =~ '^\s*$')
|
114
|
+
close
|
115
|
+
return
|
116
|
+
endif
|
117
|
+
let selection = s:trimString(getline(2))
|
118
|
+
close
|
119
|
+
let query = get(split(selection, '\s\+'), 0)
|
120
|
+
let location = get(split(selection, '\s\+'), -1)
|
121
|
+
let path = get(split(location, ':'), 0)
|
122
|
+
let line = get(split(location, ':'), 1)
|
123
|
+
if filereadable(path)
|
124
|
+
let s:last_class_search = query
|
125
|
+
exec 'edit '.path
|
126
|
+
exec "normal ".line."G"
|
127
|
+
call feedkeys("z\<cr>", "t")
|
128
|
+
else
|
129
|
+
echo "File ".path." not found"
|
130
|
+
endif
|
131
|
+
endfunc
|
132
|
+
|
133
|
+
func! s:jump_to_method()
|
134
|
+
if (getline(2) =~ '^\s*$')
|
135
|
+
close
|
136
|
+
return
|
137
|
+
endif
|
138
|
+
let selection = s:trimString(getline(2))
|
139
|
+
close
|
140
|
+
let line = get(split(selection, '\s\+'), -1)
|
141
|
+
exec 'normal '.line.'G'
|
142
|
+
call feedkeys("z\<cr>", "t")
|
143
|
+
endfunc
|
144
|
+
|
145
|
+
|
146
|
+
au BufRead,BufNewFile *.rb nnoremap <Leader>N :call <SID>autocomplete_classes()<cr>
|
147
|
+
au BufRead,BufNewFile *.rb nnoremap <Leader>n :call <SID>autocomplete_methods()<cr>
|
148
|
+
|
149
|
+
|
150
|
+
|
data/rb_nav.gemspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "rb_nav/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "rb_nav"
|
7
|
+
s.version = RbNav::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.required_ruby_version = '>= 1.8.6'
|
10
|
+
|
11
|
+
s.authors = ["Daniel Choi"]
|
12
|
+
s.email = ["dhchoi@gmail.com"]
|
13
|
+
s.homepage = "http://danielchoi.com/software/rb_nav.html"
|
14
|
+
s.summary = %q{Browse Ruby documentation in Vim}
|
15
|
+
s.description = %q{Browse Ruby documentation in Vim}
|
16
|
+
|
17
|
+
s.rubyforge_project = "rb_nav"
|
18
|
+
|
19
|
+
s.files = `git ls-files`.split("\n")
|
20
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
21
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
22
|
+
s.require_paths = ["lib"]
|
23
|
+
|
24
|
+
message = "* Now please run rb_nav_install to install the Vim plugin *"
|
25
|
+
divider = "*" * message.length
|
26
|
+
s.post_install_message = [divider, message, divider].join("\n")
|
27
|
+
|
28
|
+
end
|
29
|
+
|
metadata
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rb_nav
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 0.0.1
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Daniel Choi
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2011-07-08 00:00:00 -04:00
|
14
|
+
default_executable:
|
15
|
+
dependencies: []
|
16
|
+
|
17
|
+
description: Browse Ruby documentation in Vim
|
18
|
+
email:
|
19
|
+
- dhchoi@gmail.com
|
20
|
+
executables:
|
21
|
+
- rb_nav_classes
|
22
|
+
- rb_nav_install
|
23
|
+
- rb_nav_methods
|
24
|
+
extensions: []
|
25
|
+
|
26
|
+
extra_rdoc_files: []
|
27
|
+
|
28
|
+
files:
|
29
|
+
- .gitignore
|
30
|
+
- MIT-LICENSE.txt
|
31
|
+
- NOTES
|
32
|
+
- README.markdown
|
33
|
+
- Rakefile
|
34
|
+
- bin/rb_nav_classes
|
35
|
+
- bin/rb_nav_install
|
36
|
+
- bin/rb_nav_methods
|
37
|
+
- lib/rb_nav.rb
|
38
|
+
- lib/rb_nav.vim
|
39
|
+
- lib/rb_nav/version.rb
|
40
|
+
- rb_nav.gemspec
|
41
|
+
has_rdoc: true
|
42
|
+
homepage: http://danielchoi.com/software/rb_nav.html
|
43
|
+
licenses: []
|
44
|
+
|
45
|
+
post_install_message: |-
|
46
|
+
***********************************************************
|
47
|
+
* Now please run rb_nav_install to install the Vim plugin *
|
48
|
+
***********************************************************
|
49
|
+
rdoc_options: []
|
50
|
+
|
51
|
+
require_paths:
|
52
|
+
- lib
|
53
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: 1.8.6
|
59
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
60
|
+
none: false
|
61
|
+
requirements:
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: "0"
|
65
|
+
requirements: []
|
66
|
+
|
67
|
+
rubyforge_project: rb_nav
|
68
|
+
rubygems_version: 1.6.1
|
69
|
+
signing_key:
|
70
|
+
specification_version: 3
|
71
|
+
summary: Browse Ruby documentation in Vim
|
72
|
+
test_files: []
|
73
|
+
|