ruby_language_server 0.3.17 → 0.4.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 +4 -4
- data/CHANGELOG.txt +9 -0
- data/Gemfile.lock +106 -66
- data/Guardfile +1 -1
- data/lib/config/initializers/active_record.rb +1 -1
- data/lib/ruby_language_server/application.rb +0 -1
- data/lib/ruby_language_server/io.rb +2 -2
- data/lib/ruby_language_server/project_manager.rb +14 -23
- data/lib/ruby_language_server/scope_data/scope.rb +1 -1
- data/lib/ruby_language_server/server.rb +2 -6
- data/lib/ruby_language_server/version.rb +1 -1
- data/ruby_language_server.gemspec +10 -13
- metadata +64 -52
- data/lib/resources/fallback_rubocop.yml +0 -2
- data/lib/ruby_language_server/good_cop.rb +0 -172
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 948555ce0af9e594b0617d804ce0a0c593868c22ab0521aa9bf8bb9121fa3db0
|
4
|
+
data.tar.gz: 46136fc0951e709c892faa17f769a122daea64e67db08d5dc473e105ebe2a7c7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b2246964b443cebc9896783c605f97d8eda90481b064150f0802c15c66a2553762b7647a9dba3df4ad5602c618893348660dfe50f9f5a2b00d080e5b8ff47c5a
|
7
|
+
data.tar.gz: 7621d28c3dac448c9fb86b31a11225290ee68f0df8e9b9f43a3ec5cc9032c1b2037f3e06ca59e16ec13a27edda4a15fb4e6e287b2b8c1bb12c9572fcb2902415
|
data/CHANGELOG.txt
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
#### 0.4.0 Fri May 9 22:33:03 PDT 2025
|
4
|
+
|
5
|
+
* Ditch rubocop - it has its own LSP
|
6
|
+
* Also update rails version
|
7
|
+
|
8
|
+
#### 0.3.18 Tue Sep 10 20:10:21 PDT 2024
|
9
|
+
|
10
|
+
* bump dependencies
|
11
|
+
|
3
12
|
#### 0.3.17 Mon Aug 19 21:47:30 PDT 2024
|
4
13
|
|
5
14
|
* Update ruby to 3.3
|
data/Gemfile.lock
CHANGED
@@ -1,51 +1,66 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ruby_language_server (0.
|
4
|
+
ruby_language_server (0.4.0)
|
5
5
|
activerecord (~> 7.0)
|
6
6
|
amatch
|
7
7
|
bundler
|
8
8
|
etc
|
9
9
|
fuzzy_match
|
10
10
|
json
|
11
|
-
|
12
|
-
|
13
|
-
rubocop-performance
|
14
|
-
rubocop-rspec
|
15
|
-
sqlite3 (< 1.5.0)
|
11
|
+
ostruct
|
12
|
+
sqlite3
|
16
13
|
|
17
14
|
GEM
|
18
15
|
remote: https://rubygems.org/
|
19
16
|
specs:
|
20
|
-
activemodel (7.
|
21
|
-
activesupport (= 7.
|
22
|
-
activerecord (7.
|
23
|
-
activemodel (= 7.
|
24
|
-
activesupport (= 7.
|
25
|
-
|
26
|
-
|
17
|
+
activemodel (7.2.2.1)
|
18
|
+
activesupport (= 7.2.2.1)
|
19
|
+
activerecord (7.2.2.1)
|
20
|
+
activemodel (= 7.2.2.1)
|
21
|
+
activesupport (= 7.2.2.1)
|
22
|
+
timeout (>= 0.4.0)
|
23
|
+
activesupport (7.2.2.1)
|
24
|
+
base64
|
25
|
+
benchmark (>= 0.3)
|
26
|
+
bigdecimal
|
27
|
+
concurrent-ruby (~> 1.0, >= 1.3.1)
|
28
|
+
connection_pool (>= 2.2.5)
|
29
|
+
drb
|
27
30
|
i18n (>= 1.6, < 2)
|
31
|
+
logger (>= 1.4.2)
|
28
32
|
minitest (>= 5.1)
|
29
|
-
|
33
|
+
securerandom (>= 0.3)
|
34
|
+
tzinfo (~> 2.0, >= 2.0.5)
|
30
35
|
amatch (0.4.1)
|
31
36
|
mize
|
32
37
|
tins (~> 1.0)
|
33
38
|
ansi (1.5.0)
|
34
|
-
ast (2.4.
|
35
|
-
|
36
|
-
|
39
|
+
ast (2.4.3)
|
40
|
+
base64 (0.2.0)
|
41
|
+
benchmark (0.4.0)
|
42
|
+
bigdecimal (3.1.9)
|
43
|
+
builder (3.3.0)
|
37
44
|
coderay (1.1.3)
|
38
|
-
concurrent-ruby (1.
|
39
|
-
|
40
|
-
|
45
|
+
concurrent-ruby (1.3.5)
|
46
|
+
connection_pool (2.5.3)
|
47
|
+
debug (1.10.0)
|
48
|
+
irb (~> 1.10)
|
49
|
+
reline (>= 0.3.8)
|
50
|
+
drb (2.2.1)
|
51
|
+
etc (1.4.5)
|
52
|
+
ffi (1.17.2-aarch64-linux-musl)
|
53
|
+
ffi (1.17.2-x86_64-linux-gnu)
|
41
54
|
formatador (1.1.0)
|
42
55
|
fuzzy_match (2.1.0)
|
43
|
-
guard (2.
|
56
|
+
guard (2.19.1)
|
44
57
|
formatador (>= 0.2.4)
|
45
58
|
listen (>= 2.7, < 4.0)
|
59
|
+
logger (~> 1.6)
|
46
60
|
lumberjack (>= 1.0.12, < 2.0)
|
47
61
|
nenv (~> 0.1)
|
48
62
|
notiffany (~> 0.0)
|
63
|
+
ostruct (~> 0.6)
|
49
64
|
pry (>= 0.13.0)
|
50
65
|
shellany (~> 0.0)
|
51
66
|
thor (>= 0.18.1)
|
@@ -56,93 +71,118 @@ GEM
|
|
56
71
|
guard-rubocop (1.5.0)
|
57
72
|
guard (~> 2.0)
|
58
73
|
rubocop (< 2.0)
|
59
|
-
i18n (1.14.
|
74
|
+
i18n (1.14.7)
|
60
75
|
concurrent-ruby (~> 1.0)
|
61
|
-
|
62
|
-
|
76
|
+
io-console (0.7.1)
|
77
|
+
irb (1.13.1)
|
78
|
+
rdoc (>= 4.0.0)
|
79
|
+
reline (>= 0.4.2)
|
80
|
+
json (2.11.3)
|
81
|
+
language_server-protocol (3.17.0.4)
|
82
|
+
lint_roller (1.1.0)
|
83
|
+
listen (3.9.0)
|
63
84
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
64
85
|
rb-inotify (~> 0.9, >= 0.9.10)
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
minitest
|
86
|
+
logger (1.7.0)
|
87
|
+
lumberjack (1.2.10)
|
88
|
+
method_source (1.1.0)
|
89
|
+
minitest (5.25.5)
|
90
|
+
minitest-reporters (1.7.1)
|
69
91
|
ansi
|
70
92
|
builder
|
71
93
|
minitest (>= 5.0)
|
72
94
|
ruby-progressbar
|
73
|
-
mize (0.
|
74
|
-
protocol (~> 2.0)
|
95
|
+
mize (0.6.1)
|
75
96
|
nenv (0.3.0)
|
76
97
|
notiffany (0.1.3)
|
77
98
|
nenv (~> 0.1)
|
78
99
|
shellany (~> 0.0)
|
79
|
-
|
80
|
-
|
100
|
+
ostruct (0.6.1)
|
101
|
+
parallel (1.27.0)
|
102
|
+
parser (3.3.8.0)
|
81
103
|
ast (~> 2.4.1)
|
82
104
|
racc
|
83
|
-
|
84
|
-
|
85
|
-
pry (0.14.1)
|
105
|
+
prism (1.4.0)
|
106
|
+
pry (0.15.2)
|
86
107
|
coderay (~> 1.1)
|
87
108
|
method_source (~> 1.0)
|
109
|
+
psych (5.1.2)
|
110
|
+
stringio
|
88
111
|
racc (1.8.1)
|
89
112
|
rainbow (3.1.1)
|
90
|
-
rake (13.
|
113
|
+
rake (13.2.1)
|
91
114
|
rb-fsevent (0.11.2)
|
92
|
-
rb-inotify (0.
|
115
|
+
rb-inotify (0.11.1)
|
93
116
|
ffi (~> 1.0)
|
94
|
-
|
95
|
-
|
96
|
-
|
117
|
+
rdoc (6.6.3.1)
|
118
|
+
psych (>= 4.0.0)
|
119
|
+
regexp_parser (2.10.0)
|
120
|
+
reline (0.5.10)
|
121
|
+
io-console (~> 0.5)
|
122
|
+
rubocop (1.75.5)
|
97
123
|
json (~> 2.3)
|
124
|
+
language_server-protocol (~> 3.17.0.2)
|
125
|
+
lint_roller (~> 1.1.0)
|
98
126
|
parallel (~> 1.10)
|
99
|
-
parser (>= 3.
|
127
|
+
parser (>= 3.3.0.2)
|
100
128
|
rainbow (>= 2.2.2, < 4.0)
|
101
|
-
regexp_parser (>=
|
102
|
-
|
103
|
-
rubocop-ast (>= 1.24.1, < 2.0)
|
129
|
+
regexp_parser (>= 2.9.3, < 3.0)
|
130
|
+
rubocop-ast (>= 1.44.0, < 2.0)
|
104
131
|
ruby-progressbar (~> 1.7)
|
105
|
-
unicode-display_width (>=
|
106
|
-
rubocop-ast (1.
|
107
|
-
parser (>= 3.3.
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
rubocop (>= 1.
|
113
|
-
|
114
|
-
|
115
|
-
rubocop (
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
132
|
+
unicode-display_width (>= 2.4.0, < 4.0)
|
133
|
+
rubocop-ast (1.44.1)
|
134
|
+
parser (>= 3.3.7.2)
|
135
|
+
prism (~> 1.4)
|
136
|
+
rubocop-minitest (0.38.0)
|
137
|
+
lint_roller (~> 1.1)
|
138
|
+
rubocop (>= 1.75.0, < 2.0)
|
139
|
+
rubocop-ast (>= 1.38.0, < 2.0)
|
140
|
+
rubocop-performance (1.25.0)
|
141
|
+
lint_roller (~> 1.1)
|
142
|
+
rubocop (>= 1.75.0, < 2.0)
|
143
|
+
rubocop-ast (>= 1.38.0, < 2.0)
|
144
|
+
rubocop-rake (0.7.1)
|
145
|
+
lint_roller (~> 1.1)
|
146
|
+
rubocop (>= 1.72.1)
|
147
|
+
rubocop-rspec (3.6.0)
|
148
|
+
lint_roller (~> 1.1)
|
149
|
+
rubocop (~> 1.72, >= 1.72.1)
|
150
|
+
ruby-progressbar (1.13.0)
|
151
|
+
securerandom (0.4.1)
|
122
152
|
shellany (0.0.1)
|
123
|
-
sqlite3 (
|
153
|
+
sqlite3 (2.6.0-aarch64-linux-musl)
|
154
|
+
sqlite3 (2.6.0-x86_64-linux-gnu)
|
155
|
+
stringio (3.1.1)
|
124
156
|
sync (0.5.0)
|
125
|
-
thor (1.2
|
126
|
-
|
157
|
+
thor (1.3.2)
|
158
|
+
timeout (0.4.3)
|
159
|
+
tins (1.38.0)
|
160
|
+
bigdecimal
|
127
161
|
sync
|
128
162
|
tzinfo (2.0.6)
|
129
163
|
concurrent-ruby (~> 1.0)
|
130
|
-
unicode-display_width (
|
164
|
+
unicode-display_width (3.1.4)
|
165
|
+
unicode-emoji (~> 4.0, >= 4.0.4)
|
166
|
+
unicode-emoji (4.0.4)
|
131
167
|
|
132
168
|
PLATFORMS
|
133
169
|
aarch64-linux-musl
|
134
170
|
x86_64-linux
|
135
171
|
|
136
172
|
DEPENDENCIES
|
137
|
-
|
173
|
+
debug
|
138
174
|
guard
|
139
175
|
guard-minitest
|
140
176
|
guard-rubocop
|
141
177
|
minitest
|
142
178
|
minitest-reporters
|
143
179
|
rake
|
180
|
+
rubocop (> 1.38.0)
|
181
|
+
rubocop-ast (> 1.32.0)
|
144
182
|
rubocop-minitest
|
183
|
+
rubocop-performance
|
145
184
|
rubocop-rake
|
185
|
+
rubocop-rspec
|
146
186
|
ruby_language_server!
|
147
187
|
|
148
188
|
BUNDLED WITH
|
data/Guardfile
CHANGED
@@ -25,7 +25,7 @@ group :red_green_refactor, halt_on_fail: true do
|
|
25
25
|
# watch(%r{^test/test_helper\.rb$}) { 'test' }
|
26
26
|
|
27
27
|
# with Minitest::Spec
|
28
|
-
watch(%r{^spec
|
28
|
+
watch(%r{^spec/*/(.*)_spec\.rb$})
|
29
29
|
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
30
30
|
watch(%r{^spec/spec_helper\.rb$}) { 'spec' }
|
31
31
|
end
|
@@ -7,7 +7,7 @@ ActiveRecord::Base.establish_connection(
|
|
7
7
|
timeout: 30.seconds # does not seem to help
|
8
8
|
)
|
9
9
|
|
10
|
-
database = ActiveRecord::Base.connection.
|
10
|
+
database = ActiveRecord::Base.connection.raw_connection
|
11
11
|
database.enable_load_extension(1)
|
12
12
|
if Gem.win_platform?
|
13
13
|
# load DLL from PATH
|
@@ -13,7 +13,7 @@ module RubyLanguageServer
|
|
13
13
|
return_response(id, response, $stdout) unless id.nil?
|
14
14
|
rescue SignalException => e
|
15
15
|
RubyLanguageServer.logger.error "We received a signal. Let's bail: #{e}"
|
16
|
-
exit
|
16
|
+
exit
|
17
17
|
rescue Exception => e
|
18
18
|
RubyLanguageServer.logger.error "Something when horribly wrong: #{e}"
|
19
19
|
backtrace = e.backtrace * "\n"
|
@@ -69,7 +69,7 @@ module RubyLanguageServer
|
|
69
69
|
retry unless retries <= 0
|
70
70
|
end
|
71
71
|
end
|
72
|
-
exit
|
72
|
+
exit if response == 'EXIT'
|
73
73
|
[id, response]
|
74
74
|
else
|
75
75
|
RubyLanguageServer.logger.warn "SERVER DOES NOT RESPOND TO #{method_name}"
|
@@ -49,22 +49,13 @@ module RubyLanguageServer
|
|
49
49
|
|
50
50
|
@root_uri = "file://#{path}"
|
51
51
|
# This is {uri: code_file} where content stuff is like
|
52
|
-
@additional_gems_installed = false
|
53
|
-
@additional_gem_mutex = Mutex.new
|
52
|
+
# @additional_gems_installed = false
|
53
|
+
# @additional_gem_mutex = Mutex.new
|
54
54
|
end
|
55
55
|
|
56
|
-
def diagnostics_ready?
|
57
|
-
|
58
|
-
end
|
59
|
-
|
60
|
-
def install_additional_gems(gem_names)
|
61
|
-
Thread.new do
|
62
|
-
RubyLanguageServer::GemInstaller.install_gems(gem_names)
|
63
|
-
@additional_gem_mutex.synchronize { @additional_gems_installed = true }
|
64
|
-
rescue StandardError => e
|
65
|
-
RubyLanguageServer.logger.error("Issue installing rubocop gems: #{e} #{e.backtrace}")
|
66
|
-
end
|
67
|
-
end
|
56
|
+
# def diagnostics_ready?
|
57
|
+
# @additional_gem_mutex.synchronize { @additional_gems_installed }
|
58
|
+
# end
|
68
59
|
|
69
60
|
def text_for_uri(uri)
|
70
61
|
code_file = code_file_for_uri(uri)
|
@@ -219,17 +210,17 @@ module RubyLanguageServer
|
|
219
210
|
return code_file.diagnostics if code_file.text == text
|
220
211
|
|
221
212
|
code_file.update_text(text)
|
222
|
-
diagnostics_ready? ? updated_diagnostics_for_codefile(code_file) : []
|
213
|
+
# diagnostics_ready? ? updated_diagnostics_for_codefile(code_file) : []
|
223
214
|
end
|
224
215
|
|
225
|
-
def updated_diagnostics_for_codefile(code_file)
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
end
|
216
|
+
# def updated_diagnostics_for_codefile(code_file)
|
217
|
+
# # Maybe we should be sharing this GoodCop across instances
|
218
|
+
# RubyLanguageServer.logger.debug("updated_diagnostics_for_codefile: #{code_file.uri}")
|
219
|
+
# project_relative_filename = filename_relative_to_project(code_file.uri)
|
220
|
+
# # code_file.diagnostics = GoodCop.instance&.diagnostics(code_file.text, project_relative_filename)
|
221
|
+
# RubyLanguageServer.logger.debug("code_file.diagnostics: #{code_file.diagnostics}")
|
222
|
+
# code_file.diagnostics
|
223
|
+
# end
|
233
224
|
|
234
225
|
# Returns the context of what is being typed in the given line
|
235
226
|
def context_at_location(uri, position)
|
@@ -25,7 +25,7 @@ module RubyLanguageServer
|
|
25
25
|
# attr_accessor :superclass_name # superclass name
|
26
26
|
|
27
27
|
def self.build(parent = nil, type = TYPE_ROOT, name = '', top_line = 1, column = 1)
|
28
|
-
full_name = [parent
|
28
|
+
full_name = [parent&.full_name, name].compact.join(JoinHash[type])
|
29
29
|
create!(
|
30
30
|
parent:,
|
31
31
|
top_line:,
|
@@ -5,6 +5,7 @@ require 'json'
|
|
5
5
|
# Deal with the various languageserver calls.
|
6
6
|
module RubyLanguageServer
|
7
7
|
class Server
|
8
|
+
Position = Struct.new('Position', :line, :character)
|
8
9
|
attr_accessor :io
|
9
10
|
|
10
11
|
def initialize(mutex)
|
@@ -18,9 +19,6 @@ module RubyLanguageServer
|
|
18
19
|
root_uri = params['rootUri']
|
19
20
|
@project_manager = ProjectManager.new(root_path, root_uri)
|
20
21
|
@project_manager.scan_all_project_files
|
21
|
-
gem_string = ENV.fetch('ADDITIONAL_GEMS', nil)
|
22
|
-
gem_array = (gem_string.split(',').compact.map(&:strip).reject { |string| string == '' } if gem_string && !gem_string.empty?)
|
23
|
-
@project_manager.install_additional_gems(gem_array)
|
24
22
|
{
|
25
23
|
capabilities: {
|
26
24
|
textDocumentSync: 1,
|
@@ -124,11 +122,9 @@ module RubyLanguageServer
|
|
124
122
|
textDocument['uri']
|
125
123
|
end
|
126
124
|
|
127
|
-
Position = Struct.new('Position', :line, :character)
|
128
|
-
|
129
125
|
def postition_from_params(params)
|
130
126
|
position = params['position']
|
131
|
-
Position.new(
|
127
|
+
Position.new(position['line'].to_i, position['character'].to_i)
|
132
128
|
end
|
133
129
|
end
|
134
130
|
end
|
@@ -35,30 +35,27 @@ Gem::Specification.new do |spec|
|
|
35
35
|
spec.require_paths = ['lib']
|
36
36
|
|
37
37
|
# Normally the system will have these - but not if it's a stripped down docker image
|
38
|
+
spec.add_dependency 'activerecord', '~>7.0'
|
39
|
+
spec.add_dependency 'amatch' # in c
|
38
40
|
spec.add_dependency 'bundler'
|
39
41
|
spec.add_dependency 'etc'
|
40
|
-
spec.add_dependency 'json'
|
41
|
-
|
42
|
-
# No - do not put these in dev - they are needed for the app
|
43
|
-
spec.add_dependency 'rubocop', '>1.38.0' # Something broke in 1.38.0. Move to rubocop --server?
|
44
|
-
spec.add_dependency 'rubocop-ast', '>1.32.0' # Something broke in 1.38.0. Move to rubocop --server?
|
45
|
-
spec.add_dependency 'rubocop-performance' # Linter - no longer needed - use additional gems?
|
46
|
-
spec.add_dependency 'rubocop-rspec' # Linter - no longer needed - use additional gems?
|
47
|
-
|
48
|
-
spec.add_dependency 'amatch' # in c
|
49
42
|
spec.add_dependency 'fuzzy_match' # completion matching
|
43
|
+
spec.add_dependency 'json'
|
44
|
+
spec.add_dependency 'ostruct'
|
45
|
+
spec.add_dependency 'sqlite3'
|
50
46
|
|
51
|
-
spec.
|
52
|
-
spec.add_dependency 'sqlite3', '<1.5.0' # 1.5.0 breaks in docker M1 at least
|
53
|
-
|
54
|
-
spec.add_development_dependency 'byebug'
|
47
|
+
spec.add_development_dependency 'debug'
|
55
48
|
spec.add_development_dependency 'guard'
|
56
49
|
spec.add_development_dependency 'guard-minitest'
|
57
50
|
spec.add_development_dependency 'guard-rubocop'
|
58
51
|
spec.add_development_dependency 'minitest'
|
59
52
|
spec.add_development_dependency 'minitest-reporters'
|
60
53
|
spec.add_development_dependency 'rake' # required by guard :-(
|
54
|
+
spec.add_development_dependency 'rubocop', '>1.38.0' # Something broke in 1.38.0. Move to rubocop --server?
|
55
|
+
spec.add_development_dependency 'rubocop-ast', '>1.32.0' # Something broke in 1.38.0. Move to rubocop --server?
|
61
56
|
spec.add_development_dependency 'rubocop-minitest'
|
57
|
+
spec.add_development_dependency 'rubocop-performance' # Linter - no longer needed - use additional gems?
|
62
58
|
spec.add_development_dependency 'rubocop-rake'
|
59
|
+
spec.add_development_dependency 'rubocop-rspec' # Linter - no longer needed - use additional gems?
|
63
60
|
spec.metadata['rubygems_mfa_required'] = 'true'
|
64
61
|
end
|
metadata
CHANGED
@@ -1,31 +1,31 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_language_server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kurt Werle
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-05-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: activerecord
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
19
|
+
version: '7.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
26
|
+
version: '7.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: amatch
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
@@ -39,7 +39,7 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
@@ -53,35 +53,35 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: etc
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: '0'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: fuzzy_match
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: '0'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: json
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - ">="
|
@@ -95,7 +95,7 @@ dependencies:
|
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: ostruct
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - ">="
|
@@ -109,7 +109,7 @@ dependencies:
|
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: sqlite3
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - ">="
|
@@ -123,13 +123,13 @@ dependencies:
|
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
126
|
+
name: debug
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - ">="
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: '0'
|
132
|
-
type: :
|
132
|
+
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
@@ -137,35 +137,35 @@ dependencies:
|
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
140
|
+
name: guard
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
|
-
- - "
|
143
|
+
- - ">="
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: '
|
146
|
-
type: :
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
|
-
- - "
|
150
|
+
- - ">="
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version: '
|
152
|
+
version: '0'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
154
|
+
name: guard-minitest
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
|
-
- - "
|
157
|
+
- - ">="
|
158
158
|
- !ruby/object:Gem::Version
|
159
|
-
version:
|
160
|
-
type: :
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
|
-
- - "
|
164
|
+
- - ">="
|
165
165
|
- !ruby/object:Gem::Version
|
166
|
-
version:
|
166
|
+
version: '0'
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
168
|
+
name: guard-rubocop
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
170
170
|
requirements:
|
171
171
|
- - ">="
|
@@ -179,7 +179,7 @@ dependencies:
|
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: '0'
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
|
-
name:
|
182
|
+
name: minitest
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
184
184
|
requirements:
|
185
185
|
- - ">="
|
@@ -193,7 +193,7 @@ dependencies:
|
|
193
193
|
- !ruby/object:Gem::Version
|
194
194
|
version: '0'
|
195
195
|
- !ruby/object:Gem::Dependency
|
196
|
-
name:
|
196
|
+
name: minitest-reporters
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|
198
198
|
requirements:
|
199
199
|
- - ">="
|
@@ -207,7 +207,7 @@ dependencies:
|
|
207
207
|
- !ruby/object:Gem::Version
|
208
208
|
version: '0'
|
209
209
|
- !ruby/object:Gem::Dependency
|
210
|
-
name:
|
210
|
+
name: rake
|
211
211
|
requirement: !ruby/object:Gem::Requirement
|
212
212
|
requirements:
|
213
213
|
- - ">="
|
@@ -221,21 +221,35 @@ dependencies:
|
|
221
221
|
- !ruby/object:Gem::Version
|
222
222
|
version: '0'
|
223
223
|
- !ruby/object:Gem::Dependency
|
224
|
-
name:
|
224
|
+
name: rubocop
|
225
225
|
requirement: !ruby/object:Gem::Requirement
|
226
226
|
requirements:
|
227
|
-
- - "
|
227
|
+
- - ">"
|
228
228
|
- !ruby/object:Gem::Version
|
229
|
-
version:
|
229
|
+
version: 1.38.0
|
230
230
|
type: :development
|
231
231
|
prerelease: false
|
232
232
|
version_requirements: !ruby/object:Gem::Requirement
|
233
233
|
requirements:
|
234
|
-
- - "
|
234
|
+
- - ">"
|
235
235
|
- !ruby/object:Gem::Version
|
236
|
-
version:
|
236
|
+
version: 1.38.0
|
237
237
|
- !ruby/object:Gem::Dependency
|
238
|
-
name:
|
238
|
+
name: rubocop-ast
|
239
|
+
requirement: !ruby/object:Gem::Requirement
|
240
|
+
requirements:
|
241
|
+
- - ">"
|
242
|
+
- !ruby/object:Gem::Version
|
243
|
+
version: 1.32.0
|
244
|
+
type: :development
|
245
|
+
prerelease: false
|
246
|
+
version_requirements: !ruby/object:Gem::Requirement
|
247
|
+
requirements:
|
248
|
+
- - ">"
|
249
|
+
- !ruby/object:Gem::Version
|
250
|
+
version: 1.32.0
|
251
|
+
- !ruby/object:Gem::Dependency
|
252
|
+
name: rubocop-minitest
|
239
253
|
requirement: !ruby/object:Gem::Requirement
|
240
254
|
requirements:
|
241
255
|
- - ">="
|
@@ -249,7 +263,7 @@ dependencies:
|
|
249
263
|
- !ruby/object:Gem::Version
|
250
264
|
version: '0'
|
251
265
|
- !ruby/object:Gem::Dependency
|
252
|
-
name:
|
266
|
+
name: rubocop-performance
|
253
267
|
requirement: !ruby/object:Gem::Requirement
|
254
268
|
requirements:
|
255
269
|
- - ">="
|
@@ -263,7 +277,7 @@ dependencies:
|
|
263
277
|
- !ruby/object:Gem::Version
|
264
278
|
version: '0'
|
265
279
|
- !ruby/object:Gem::Dependency
|
266
|
-
name: rubocop-
|
280
|
+
name: rubocop-rake
|
267
281
|
requirement: !ruby/object:Gem::Requirement
|
268
282
|
requirements:
|
269
283
|
- - ">="
|
@@ -277,7 +291,7 @@ dependencies:
|
|
277
291
|
- !ruby/object:Gem::Version
|
278
292
|
version: '0'
|
279
293
|
- !ruby/object:Gem::Dependency
|
280
|
-
name: rubocop-
|
294
|
+
name: rubocop-rspec
|
281
295
|
requirement: !ruby/object:Gem::Requirement
|
282
296
|
requirements:
|
283
297
|
- - ">="
|
@@ -315,13 +329,11 @@ files:
|
|
315
329
|
- lib/config/initializers/active_record.rb
|
316
330
|
- lib/config/initializers/sqlite.rb
|
317
331
|
- lib/db/schema.rb
|
318
|
-
- lib/resources/fallback_rubocop.yml
|
319
332
|
- lib/ruby_language_server.rb
|
320
333
|
- lib/ruby_language_server/application.rb
|
321
334
|
- lib/ruby_language_server/code_file.rb
|
322
335
|
- lib/ruby_language_server/completion.rb
|
323
336
|
- lib/ruby_language_server/gem_installer.rb
|
324
|
-
- lib/ruby_language_server/good_cop.rb
|
325
337
|
- lib/ruby_language_server/io.rb
|
326
338
|
- lib/ruby_language_server/line_context.rb
|
327
339
|
- lib/ruby_language_server/location.rb
|
@@ -362,7 +374,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
362
374
|
- !ruby/object:Gem::Version
|
363
375
|
version: '0'
|
364
376
|
requirements: []
|
365
|
-
rubygems_version: 3.5.
|
377
|
+
rubygems_version: 3.5.22
|
366
378
|
signing_key:
|
367
379
|
specification_version: 4
|
368
380
|
summary: Provide a language server implementation for ruby in ruby.
|
@@ -1,172 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'rubocop'
|
4
|
-
|
5
|
-
module RubyLanguageServer
|
6
|
-
class GoodCop < RuboCop::Runner
|
7
|
-
def initialize(config_path, initialization_error = nil)
|
8
|
-
@initialization_error = initialization_error
|
9
|
-
unless @initialization_error
|
10
|
-
initialize_rubocop_ivars
|
11
|
-
@config_store.options_config = config_path
|
12
|
-
RubyLanguageServer.logger.debug("Rubocop config_path: #{config_path}")
|
13
|
-
super({}, @config_store)
|
14
|
-
end
|
15
|
-
rescue Exception => e
|
16
|
-
RubyLanguageServer.logger.error(e)
|
17
|
-
@initialization_error = "There was an issue loading the rubocop configuration file: #{e}. Maybe you need to add some additional gems to the ide-ruby settings?"
|
18
|
-
end
|
19
|
-
|
20
|
-
# namespace DiagnosticSeverity {
|
21
|
-
# /**
|
22
|
-
# * Reports an error.
|
23
|
-
# */
|
24
|
-
# export const Error = 1;
|
25
|
-
# /**
|
26
|
-
# * Reports a warning.
|
27
|
-
# */
|
28
|
-
# export const Warning = 2;
|
29
|
-
# /**
|
30
|
-
# * Reports an information.
|
31
|
-
# */
|
32
|
-
# export const Information = 3;
|
33
|
-
# /**
|
34
|
-
# * Reports a hint.
|
35
|
-
# */
|
36
|
-
# export const Hint = 4;
|
37
|
-
# }
|
38
|
-
|
39
|
-
# interface Diagnostic {
|
40
|
-
# /**
|
41
|
-
# * The range at which the message applies.
|
42
|
-
# */
|
43
|
-
# range: Range;
|
44
|
-
#
|
45
|
-
# /**
|
46
|
-
# * The diagnostic's severity. Can be omitted. If omitted it is up to the
|
47
|
-
# * client to interpret diagnostics as error, warning, info or hint.
|
48
|
-
# */
|
49
|
-
# severity?: number;
|
50
|
-
#
|
51
|
-
# /**
|
52
|
-
# * The diagnostic's code. Can be omitted.
|
53
|
-
# */
|
54
|
-
# code?: number | string;
|
55
|
-
#
|
56
|
-
# /**
|
57
|
-
# * A human-readable string describing the source of this
|
58
|
-
# * diagnostic, e.g. 'typescript' or 'super lint'.
|
59
|
-
# */
|
60
|
-
# source?: string;
|
61
|
-
#
|
62
|
-
# /**
|
63
|
-
# * The diagnostic's message.
|
64
|
-
# */
|
65
|
-
# message: string;
|
66
|
-
# }
|
67
|
-
|
68
|
-
def diagnostic_severity_for(severity)
|
69
|
-
case severity.to_s
|
70
|
-
when 'error', 'fatal'
|
71
|
-
1
|
72
|
-
when 'warning'
|
73
|
-
2
|
74
|
-
when 'refactor', 'convention'
|
75
|
-
3
|
76
|
-
else
|
77
|
-
RubyLanguageServer.logger.error("Could not map severity for #{severity} - returning 2")
|
78
|
-
2
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
def diagnostics(text, filename = nil)
|
83
|
-
return initialization_offenses unless @initialization_error.nil?
|
84
|
-
|
85
|
-
maximum_severity = 4 # (ENV['LINT_LEVEL'] || 4).to_i
|
86
|
-
enabled_offenses = offenses(text, filename).reject { |offense| offense.status == :disabled }
|
87
|
-
enabled_offenses.map do |offense|
|
88
|
-
{
|
89
|
-
range: Location.position_hash(offense.location.line, offense.location.column, offense.location.last_line, offense.location.last_column),
|
90
|
-
severity: diagnostic_severity_for(offense.severity),
|
91
|
-
# code?: number | string;
|
92
|
-
code: 'code',
|
93
|
-
source: "RuboCop:#{offense.cop_name}",
|
94
|
-
message: offense.message
|
95
|
-
}
|
96
|
-
end.select { |hash| hash[:severity] <= maximum_severity }
|
97
|
-
end
|
98
|
-
|
99
|
-
private
|
100
|
-
|
101
|
-
def offenses(text, filename)
|
102
|
-
if excluded_file?(filename)
|
103
|
-
[]
|
104
|
-
else
|
105
|
-
ruby_version = 3.1
|
106
|
-
processed_source = RuboCop::ProcessedSource.new(text, ruby_version, filename)
|
107
|
-
offenses = inspect_file(processed_source)
|
108
|
-
offenses.compact.flatten.reject(&:blank?) # reject blank because some are `false`
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
def initialize_rubocop_ivars
|
113
|
-
@config_store ||= RuboCop::ConfigStore.new
|
114
|
-
@options ||= {}
|
115
|
-
@errors ||= []
|
116
|
-
@warnings ||= []
|
117
|
-
end
|
118
|
-
|
119
|
-
def inspect_file(source)
|
120
|
-
initialize_rubocop_ivars
|
121
|
-
super
|
122
|
-
end
|
123
|
-
|
124
|
-
def initialization_offenses
|
125
|
-
[
|
126
|
-
{
|
127
|
-
range: Location.position_hash(1, 1, 1, 1),
|
128
|
-
severity: 'startup', # diagnostic_severity_for(offense.severity),
|
129
|
-
# code?: number | string;
|
130
|
-
code: 'code',
|
131
|
-
source: 'RuboCop:RubyLanguageServer',
|
132
|
-
message: @initialization_error
|
133
|
-
}
|
134
|
-
]
|
135
|
-
end
|
136
|
-
|
137
|
-
class << self
|
138
|
-
def instance
|
139
|
-
return @instance if @instance
|
140
|
-
|
141
|
-
@config_path ||= config_path
|
142
|
-
config_path_timestamp = File.mtime(@config_path)
|
143
|
-
if @cached_config_path_timestamp.nil? || @cached_config_path_timestamp < config_path_timestamp
|
144
|
-
@cached_config_path_timestamp = config_path_timestamp
|
145
|
-
@instance = new(@config_path)
|
146
|
-
else
|
147
|
-
@instance = new
|
148
|
-
end
|
149
|
-
rescue StandardError => e
|
150
|
-
@instance = new(@config_path, e.to_s)
|
151
|
-
end
|
152
|
-
|
153
|
-
private
|
154
|
-
|
155
|
-
def config_path
|
156
|
-
my_path = __FILE__
|
157
|
-
pathname = Pathname.new(my_path)
|
158
|
-
my_directory = pathname.dirname
|
159
|
-
fallback_pathname = "#{my_directory}/../resources/fallback_rubocop.yml"
|
160
|
-
project_path = "#{RubyLanguageServer::ProjectManager.root_path}.rubocop.yml"
|
161
|
-
possible_config_paths = [project_path, fallback_pathname.to_s]
|
162
|
-
possible_config_paths.detect { |path| File.exist?(path) }
|
163
|
-
end
|
164
|
-
end
|
165
|
-
|
166
|
-
def excluded_file?(filename)
|
167
|
-
initialize_rubocop_ivars
|
168
|
-
file_config = @config_store.for(filename)
|
169
|
-
file_config.file_to_exclude?(filename)
|
170
|
-
end
|
171
|
-
end
|
172
|
-
end
|