language_server 0.8.0 → 0.9.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7139ff0bb62fcf30de5f216cc102cc2e06a52f8a
4
- data.tar.gz: '019a3200bde8868ffa962478c9a0f5347adeebdb'
3
+ metadata.gz: eea2a987076e6db2c0d04467487fbe2e23af67ca
4
+ data.tar.gz: a171c9796c6cb96bc70175728d19f2ff093928e9
5
5
  SHA512:
6
- metadata.gz: dae2397674045b4c88433c9efd9d4191739f2ed0cd36f908a86aca03d634bde4f1741900539439a72c252600f89008f7149d28b24cba6fc62e4d1963c724b406
7
- data.tar.gz: 6c49f740e25807d8856df833c297d02a42802863d1abeb2b9c5278c9968d87c69c69b7be59ef7c79a1ebbc5d14a2a6e290adc91390e196aff4b75c54ca854818
6
+ metadata.gz: 456d5911f25822d1fc2ffc270b4ea979a34aacb9fa79f283a7298f2647581032857242ce9e33afe6af2af8695fda533e2c93747c83fc378b12b1fb7bfdcf0124
7
+ data.tar.gz: 39a4b4ab6984d4d55d6de26d480817d3eaab800d04c06389242e61bbd574bf514da8fec3f8ef3ea53b6ecf4177cb1947cb0dceaa6565d3c08808669f5d61c95b
data/.dockerignore ADDED
@@ -0,0 +1,2 @@
1
+ .git
2
+ .??*
data/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## Not released
4
4
 
5
+ ## 0.9.0
6
+
7
+ - rubocop support #27
8
+
5
9
  ## 0.8.0
6
10
 
7
11
  - Use RubyVM::InstructionSequence.compile instead of open3
data/Guardfile ADDED
@@ -0,0 +1,9 @@
1
+ # More info at https://github.com/guard/guard#readme
2
+
3
+ guard :minitest, all_after_pass: true do
4
+ # with Minitest::Unit
5
+ watch(%r{^test/(.*)\/?test_(.*)\.rb$})
6
+ watch(%r{^test/(.*)\/?(.*)_test\.rb$})
7
+ watch(%r{^lib/(.*/)?([^/]+)\.rb$}) { |m| "test/#{m[1]}test_#{m[2]}.rb" }
8
+ watch(%r{^test/test_helper\.rb$}) { 'test' }
9
+ end
data/README.md CHANGED
@@ -56,10 +56,18 @@ https://docs.docker.com/engine/installation
56
56
 
57
57
  ### Run test
58
58
 
59
+ You can run test via m:
60
+
59
61
  $ docker-compose run app bin/m
60
62
  $ docker-compose run ruby-2-3 bin/m
61
63
  $ docker-compose run ruby-2-2 bin/m
62
64
 
65
+ Or run via guard:
66
+
67
+ $ docker-compose run app bin/guard
68
+ $ docker-compose run ruby-2-3 bin/guard
69
+ $ docker-compose run ruby-2-2 bin/guard
70
+
63
71
  ## Contributing
64
72
 
65
73
  Bug reports and pull requests are welcome on GitHub at https://github.com/mtsmfm/language_server-ruby. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
data/bin/_guard-core ADDED
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+ #
4
+ # This file was generated by Bundler.
5
+ #
6
+ # The application '_guard-core' is installed as part of a gem, and
7
+ # this file is here to facilitate running it.
8
+ #
9
+
10
+ require "pathname"
11
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
12
+ Pathname.new(__FILE__).realpath)
13
+
14
+ require "rubygems"
15
+ require "bundler/setup"
16
+
17
+ load Gem.bin_path("guard", "_guard-core")
data/bin/guard ADDED
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+ #
4
+ # This file was generated by Bundler.
5
+ #
6
+ # The application 'guard' is installed as part of a gem, and
7
+ # this file is here to facilitate running it.
8
+ #
9
+
10
+ require "pathname"
11
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
12
+ Pathname.new(__FILE__).realpath)
13
+
14
+ require "rubygems"
15
+ require "bundler/setup"
16
+
17
+ load Gem.bin_path("guard", "guard")
data/bin/setup CHANGED
@@ -4,5 +4,3 @@ IFS=$'\n\t'
4
4
  set -vx
5
5
 
6
6
  bundle install
7
-
8
- # Do any other automated setup that you need to do here
@@ -31,9 +31,13 @@ Gem::Specification.new do |spec|
31
31
  spec.add_development_dependency "bundler", "~> 1.14"
32
32
  spec.add_development_dependency "rake", "~> 10.0"
33
33
  spec.add_development_dependency "minitest", "~> 5.0"
34
+ spec.add_development_dependency "guard"
35
+ spec.add_development_dependency "guard-minitest"
36
+ spec.add_development_dependency "minitest-color"
34
37
  spec.add_development_dependency "pry-byebug"
35
38
  spec.add_development_dependency "minitest-power_assert"
36
39
  spec.add_development_dependency "m"
37
40
  spec.add_development_dependency "awesome_print"
38
41
  spec.add_development_dependency "benchmark-ips"
42
+ spec.add_development_dependency "rubocop"
39
43
  end
@@ -0,0 +1,55 @@
1
+ begin
2
+ require 'rubocop'
3
+ rescue LoadError
4
+ end
5
+
6
+ module LanguageServer
7
+ module Linter
8
+ class Rubocop
9
+ def initialize(source, config_path="")
10
+ @source = source
11
+ @config_path = config_path
12
+ end
13
+
14
+
15
+ def call
16
+ return [] unless defined? ::RuboCop
17
+ args = []
18
+ args += ["--config", @config_path] if @config_path != ''
19
+ args += ["--format", "json","--stdin", "lsp_buffer.rb"]
20
+ o = nil
21
+ begin
22
+ $stdin = StringIO.new(@source)
23
+ $stdout = StringIO.new
24
+ config_store = ::RuboCop::ConfigStore.new
25
+ options, paths = ::RuboCop::Options.new.parse(args)
26
+ config_store.options_config = options[:config] if options[:config]
27
+ runner = ::RuboCop::Runner.new(options, config_store)
28
+ runner.run(paths)
29
+ o = $stdout.string
30
+ ensure
31
+ $stdin = STDIN
32
+ $stdout = STDOUT
33
+ end
34
+ return [] unless o
35
+ JSON
36
+ .parse(o)['files'].map { |v| v['offenses'] }
37
+ .flatten
38
+ .map { |v| Error.new(line_num: v['location']['line'].to_i - 1, message: v['message'], type: convert_type(v['severity'])) }
39
+ end
40
+
41
+ private
42
+
43
+ def convert_type(type)
44
+ case type
45
+ when 'refactor' then 'warning'
46
+ when 'convention' then 'warning'
47
+ when 'warning' then 'warning'
48
+ when 'error' then 'error'
49
+ when 'fatal' then 'error'
50
+ end
51
+ end
52
+
53
+ end
54
+ end
55
+ end
@@ -1,3 +1,3 @@
1
1
  module LanguageServer
2
- VERSION = "0.8.0"
2
+ VERSION = "0.9.0"
3
3
  end
@@ -2,6 +2,7 @@ require "language_server/version"
2
2
  require "language_server/logger"
3
3
  require "language_server/protocol"
4
4
  require "language_server/linter/ruby_wc"
5
+ require "language_server/linter/rubocop"
5
6
  require "language_server/completion_provider/rcodetools"
6
7
  require "language_server/completion_provider/ad_hoc"
7
8
  require "language_server/definition_provider/ad_hoc"
@@ -93,8 +94,9 @@ module LanguageServer
93
94
  text = request[:params][:contentChanges][0][:text]
94
95
  file_store.cache(uri, text)
95
96
  project.recalculate_result(uri)
97
+ diagnostics = (Linter::Rubocop.new(text).call + Linter::RubyWC.new(text).call).flatten
96
98
 
97
- diagnostics = Linter::RubyWC.new(text).call.map do |error|
99
+ diagnostics = diagnostics.map do |error|
98
100
  Protocol::Interface::Diagnostic.new(
99
101
  message: error.message,
100
102
  severity: error.warning? ? Protocol::Constant::DiagnosticSeverity::WARNING : Protocol::Constant::DiagnosticSeverity::ERROR,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: language_server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fumiaki MATSUSHIMA
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-10-15 00:00:00.000000000 Z
11
+ date: 2017-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rcodetools
@@ -80,6 +80,48 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '5.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: guard
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: guard-minitest
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: minitest-color
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
83
125
  - !ruby/object:Gem::Dependency
84
126
  name: pry-byebug
85
127
  requirement: !ruby/object:Gem::Requirement
@@ -150,6 +192,20 @@ dependencies:
150
192
  - - ">="
151
193
  - !ruby/object:Gem::Version
152
194
  version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: rubocop
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
153
209
  description: A Ruby Language Server implementation
154
210
  email:
155
211
  - mtsmfm@gmail.com
@@ -158,6 +214,7 @@ executables:
158
214
  extensions: []
159
215
  extra_rdoc_files: []
160
216
  files:
217
+ - ".dockerignore"
161
218
  - ".gitignore"
162
219
  - ".vscode/settings.json"
163
220
  - CHANGELOG.md
@@ -165,11 +222,14 @@ files:
165
222
  - Dockerfile
166
223
  - Dockerfile.development
167
224
  - Gemfile
225
+ - Guardfile
168
226
  - LICENSE.txt
169
227
  - README.md
170
228
  - Rakefile
171
229
  - benchmark/ruby_wc
230
+ - bin/_guard-core
172
231
  - bin/console
232
+ - bin/guard
173
233
  - bin/language_server-ruby
174
234
  - bin/m
175
235
  - bin/setup
@@ -184,6 +244,7 @@ files:
184
244
  - lib/language_server/completion_provider/rcodetools.rb
185
245
  - lib/language_server/definition_provider/ad_hoc.rb
186
246
  - lib/language_server/file_store.rb
247
+ - lib/language_server/linter/rubocop.rb
187
248
  - lib/language_server/linter/ruby_wc.rb
188
249
  - lib/language_server/logger.rb
189
250
  - lib/language_server/project.rb