gem-ripper-tags-optional 1.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 40daf008565e59498df0a4aadc391c0a933f11f324b0dd6004cf5708f6462a36
4
+ data.tar.gz: 69d929c7f968d802bfe51ace4f95badb2e9aaa0fa52283865c169b5352214b96
5
+ SHA512:
6
+ metadata.gz: a29f0cf9b1ab6a5ee44db79ebef6512e21fb0273774faa359167bfb132425da664d3fcc3395a557ee4bcba3ce5739fd7cf373b27a78868aebf67a2e29f71a8ca
7
+ data.tar.gz: 30a750cc5f95c863b17f04a38e9f9d6d2a8bc86f7fdbf74f7a3ce31adaa751a9c9e499516b4559163402cd7e59600bc32aff0047a05a0eaf2ec996bed3c2c902
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+ gemspec
3
+
4
+ gem 'ripper-tags'
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) Tim Pope
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.
data/README.markdown ADDED
@@ -0,0 +1,111 @@
1
+ RubyGems Automatic Ctags Generator
2
+ ==================================
3
+
4
+ If you do like Vim and Ctags like I or [Tim Pope][] do, you maybe appreciate
5
+ automatic generation of ctags for each installed gem. This small project is
6
+ based on Tim's [gem-ctags][], but the main difference is it does *not* use
7
+ [Exuberant Ctags][].
8
+
9
+ Upstream site is at: https://github.com/RobertAudi/gem-ripper-tags
10
+
11
+ Usage
12
+ -----
13
+
14
+ Install the thing (only Ruby 1.9+):
15
+
16
+ gem install gem-ripper-tags
17
+
18
+ Then generate tags for all already installed gems:
19
+
20
+ gem ripper_tags
21
+
22
+ Anytime you install a gem now, tags will be automatically created.
23
+
24
+ gem instal some_gem ...
25
+
26
+ If you're using RVM, I recommend extending your global gemset by adding
27
+ `gem-ripper-tags` to `~/.rvm/gemsets/global.gems`. Put it at the top so the
28
+ gems below it will be indexed.
29
+
30
+ You can use the gem even with 1.8 gemsets, but since Ruby 1.8 is not
31
+ supported, it will (silently) not register the gem hook.
32
+
33
+ ### Skip tags generation
34
+
35
+ Set the `SKIP_RIPPER_TAGS` environment variable to skip tags generation:
36
+
37
+ SKIP_RIPPER_TAGS=1 gem instal some_gem ...
38
+
39
+ Motivation
40
+ ----------
41
+
42
+ Why would you care about not using ctags in the first place? Ctags is a great
43
+ project and it does support many (like 50) languages. But Ruby support is very
44
+ weak, the parser is not in good condition and it has not been changed 4 years
45
+ now.
46
+
47
+ * Ctags doesn't deal with: module A::B
48
+ * Ctags doesn't tag (at least some of) the operator methods like ==
49
+ * Ctags doesn't support qualified tags, -type=+
50
+ * Ctags doesn't output tags for constants or attributes.
51
+
52
+ Unfortunately all the others (I found 2) Ruby ctags generators are either
53
+ outdated (no Ruby 1.9+ support) or very slow. This project makes use of
54
+ [ripper-tags][] that leverages built-in Ruby parser API called Ripper. It is
55
+ fast and it works as expected.
56
+
57
+ Regeneration
58
+ ------------
59
+
60
+ If you want to regenerate all tagfiles from scratch, use:
61
+
62
+ gem ripper_tags --reindex
63
+
64
+ Emacs support
65
+ -------------
66
+
67
+ To support Emacs, you need two steps. First, reindex everything with Emacs
68
+ enabled:
69
+
70
+ gem ripper_tags --reindex --emacs
71
+
72
+ And make sure this environment variable is set to all shells where you use
73
+ "gem install" command so new gems are generated with Emacs TAGS files.
74
+
75
+ RIPPER_TAGS_EMACS=1
76
+
77
+ Vim Tips
78
+ --------
79
+
80
+ To easily edit a gem with your current working directory set to the
81
+ gem's root, install [gem-browse][].
82
+
83
+ If you have [rake.vim][] installed (which, by the way, is a misleading
84
+ name), Vim will already know where to look for the tags file when
85
+ editing a gem.
86
+
87
+ If you have [bundler.vim][] installed, Vim will be aware of all tags
88
+ files from all gems in your bundle.
89
+
90
+ If you want to get crazy, add this to your vimrc to get Vim to search
91
+ all gems in your current RVM gemset (requires [pathogen.vim][]):
92
+
93
+ autocmd FileType ruby let &l:tags = pathogen#legacyjoin(pathogen#uniq(
94
+ \ pathogen#split(&tags) +
95
+ \ map(split($GEM_PATH,':'),'v:val."/gems/*/tags"')))
96
+
97
+ Tim Pope doesn't like to get crazy. ;-)
98
+
99
+ License
100
+ -------
101
+
102
+ Copyright (c) Tim Pope; Lukáš Zapletal. MIT License.
103
+
104
+ [Tim Pope]: http://tpo.pe/
105
+ [Exuberant Ctags]: http://ctags.sourceforge.net/
106
+ [gem-ctags]: https://github.com/tpope/gem-ctags
107
+ [gem-browse]: https://github.com/tpope/gem-browse
108
+ [bundler.vim]: https://github.com/tpope/vim-bundler
109
+ [pathogen.vim]: https://github.com/tpope/vim-pathogen
110
+ [rake.vim]: https://github.com/tpope/vim-rake
111
+ [ripper-tags]: https://github.com/tmm1/ripper-tags
data/Rakefile ADDED
@@ -0,0 +1,11 @@
1
+ $:.unshift(File.join(File.dirname(__FILE__), 'lib')).uniq!
2
+
3
+ begin
4
+ require "bundler/gem_tasks"
5
+ rescue LoadError
6
+ end
7
+
8
+ task :default do
9
+ require 'rubygems/commands/ripper_tags_command'
10
+ Gem::Commands::RipperTagsCommand.new.execute
11
+ end
@@ -0,0 +1,20 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "gem-ripper-tags-optional"
6
+ s.version = `git describe --abbrev=0 --tags`
7
+ s.authors = ["Tim Pope", "Lukas Zapletal"]
8
+ s.email = ["code@tpop"+'e.net', "lzap+rpm@red"+'hat.com']
9
+ s.homepage = "https://github.com/lzap/gem-ripper-tags"
10
+ s.summary = %q{fast and accurate ctags generator on gem install}
11
+ s.license = 'MIT'
12
+
13
+ s.files = `git ls-files`.split("\n")
14
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
15
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
16
+ s.require_paths = ["lib"]
17
+
18
+ s.add_dependency 'ripper-tags', '>= 0.1.2'
19
+ s.add_development_dependency 'rake'
20
+ end
@@ -0,0 +1,69 @@
1
+ require 'rubygems/command'
2
+ require 'ripper-tags'
3
+
4
+ class Gem::Commands::RipperTagsCommand < Gem::Command
5
+ def initialize
6
+ super 'ripper_tags', 'Generate ctags for gems with Ruby/Ripper parser'
7
+
8
+ add_option("--emacs", "Generate Emacs TAGS instead Vim tags") do |value, options|
9
+ options[:emacs] = true
10
+ end
11
+ add_option("--reindex", "Reindex all tags again") do |value, options|
12
+ options[:reindex] = true
13
+ end
14
+ add_option("--debug", "Enable debugging output") do |value, options|
15
+ options[:debug] = true
16
+ end
17
+ end
18
+
19
+ def execute
20
+ if Gem::Specification.respond_to?(:each)
21
+ Gem::Specification
22
+ else
23
+ Gem.source_index.gems.values
24
+ end.each do |spec|
25
+ self.class.index(spec, options[:reindex], options[:emacs]) do |message|
26
+ say message
27
+ end
28
+ end
29
+ rescue Exception => e
30
+ if options[:debug] || ENV['RIPPER_TAGS_DEBUG']
31
+ puts e.message
32
+ puts e.backtrace.join("\n")
33
+ end
34
+ raise e
35
+ end
36
+
37
+ def self.index(spec, reindex, emacs)
38
+ return unless File.directory?(spec.full_gem_path)
39
+
40
+ if emacs
41
+ tag_filename = 'TAGS'
42
+ format = "emacs"
43
+ else
44
+ tag_filename = 'tags'
45
+ format = "vim"
46
+ end
47
+
48
+ Dir.chdir(spec.full_gem_path) do
49
+ if (!File.directory?(tag_filename) && reindex) || (!File.file?(tag_filename) && !File.directory?(tag_filename))
50
+ yield "Ripper is generating ctags for #{spec.full_name}" if block_given?
51
+ riopt = RipperTags.default_options
52
+ riopt.tag_file_name = "./#{tag_filename}"
53
+ riopt.format = format
54
+ riopt.recursive = true
55
+ riopt.force = true
56
+ RipperTags.run riopt
57
+ end
58
+
59
+ target = 'lib/bundler/cli.rb'
60
+ if File.writable?(target) && !File.read(target).include?('load_plugins')
61
+ yield "Injecting gem-ripper-tags into #{spec.full_name}" if block_given?
62
+ File.open(target, 'a') do |f|
63
+ f.write "\nGem.load_plugins rescue nil\n"
64
+ end
65
+ end
66
+
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,16 @@
1
+ require 'rubygems/command_manager'
2
+ begin
3
+ require 'rubygems/commands/ripper_tags_command'
4
+ rescue LoadError => e
5
+ old_ruby = true
6
+ end
7
+
8
+ unless old_ruby
9
+ Gem::CommandManager.instance.register_command :ripper_tags
10
+
11
+ Gem.post_install do |installer|
12
+ unless ENV['SKIP_RIPPER_TAGS']
13
+ Gem::Commands::RipperTagsCommand.index(installer.spec, false, !ENV['RIPPER_TAGS_EMACS'].nil?)
14
+ end
15
+ end
16
+ end
data/release.sh ADDED
@@ -0,0 +1,12 @@
1
+ #!/bin/bash
2
+ #
3
+ # Before running this make sure you tagged and pushed!
4
+ #
5
+
6
+ VERSION=$(git describe --abbrev=0 --tags)
7
+
8
+ git checkout $VERSION && \
9
+ gem build gem-ripper-tags-optional.gemspec && \
10
+ gem push gem-ripper-tags-optional-$VERSION.gem
11
+
12
+ git checkout master
data/test.sh ADDED
@@ -0,0 +1,8 @@
1
+ #!/bin/bash
2
+
3
+ rm gem-ripper-tags-optinal*.gem
4
+
5
+ gem build gem-ripper-tags-optional.gemspec \
6
+ && gem uninstall gem-ripper-tags-optional \
7
+ && gem install gem-ripper-tags-optional-*.gem \
8
+ && gem ripper-tags --debug
metadata ADDED
@@ -0,0 +1,83 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gem-ripper-tags-optional
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.7
5
+ platform: ruby
6
+ authors:
7
+ - Tim Pope
8
+ - Lukas Zapletal
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2019-04-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: ripper-tags
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: 0.1.2
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: 0.1.2
28
+ - !ruby/object:Gem::Dependency
29
+ name: rake
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ description:
43
+ email:
44
+ - code@tpope.net
45
+ - lzap+rpm@redhat.com
46
+ executables: []
47
+ extensions: []
48
+ extra_rdoc_files: []
49
+ files:
50
+ - ".gitignore"
51
+ - Gemfile
52
+ - MIT-LICENSE
53
+ - README.markdown
54
+ - Rakefile
55
+ - gem-ripper-tags-optional.gemspec
56
+ - lib/rubygems/commands/ripper_tags_command.rb
57
+ - lib/rubygems_plugin.rb
58
+ - release.sh
59
+ - test.sh
60
+ homepage: https://github.com/lzap/gem-ripper-tags
61
+ licenses:
62
+ - MIT
63
+ metadata: {}
64
+ post_install_message:
65
+ rdoc_options: []
66
+ require_paths:
67
+ - lib
68
+ required_ruby_version: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ required_rubygems_version: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ requirements: []
79
+ rubygems_version: 3.0.3
80
+ signing_key:
81
+ specification_version: 4
82
+ summary: fast and accurate ctags generator on gem install
83
+ test_files: []