diff --git a/CHANGELOG.md b/CHANGELOG.md index 38da54e..6b7d84d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## Not released +- Remove rcodetools integration (for now) + ## 0.10.0 - Add --experimental-features flag diff --git a/Rakefile b/Rakefile index d433a1e..252c62c 100644 --- a/Rakefile +++ b/Rakefile @@ -5,6 +5,7 @@ Rake::TestTask.new(:test) do |t| t.libs << "test" t.libs << "lib" t.test_files = FileList["test/**/*_test.rb"] + t.warning = false end task :default => :test diff --git a/language_server.gemspec b/language_server.gemspec index f88ba52..8745ca7 100644 --- a/language_server.gemspec +++ b/language_server.gemspec @@ -26,7 +26,6 @@ Gem::Specification.new do |spec| spec.require_paths = ["lib"] spec.add_dependency "language_server-protocol", "0.4.0" - spec.add_dependency "rcodetools" spec.add_development_dependency "awesome_print" spec.add_development_dependency "benchmark-ips" diff --git a/lib/language_server.rb b/lib/language_server.rb index d0dda4e..e92b932 100644 --- a/lib/language_server.rb +++ b/lib/language_server.rb @@ -3,7 +3,6 @@ require "language_server/protocol" require "language_server/linter/ruby_wc" require "language_server/linter/rubocop" -require "language_server/completion_provider/rcodetools" require "language_server/completion_provider/ad_hoc" require "language_server/definition_provider/ad_hoc" require "language_server/file_store" @@ -137,14 +136,15 @@ def on(method, &callback) ) end - on :"textDocument/completion" do |request:, file_store:, project:| + on :"textDocument/completion" do |request:, project:| uri = request[:params][:textDocument][:uri] line, character = request[:params][:position].fetch_values(:line, :character).map(&:to_i) - providers = [CompletionProvider::Rcodetools.new(uri: uri, line: line, character: character, file_store: file_store)] - providers << CompletionProvider::AdHoc.new(uri: uri, line: line, character: character, project: project) if LanguageServer.adhoc_enabled? - - providers.flat_map(&:call) + if LanguageServer.adhoc_enabled? + [ + CompletionProvider::AdHoc.new(uri: uri, line: line, character: character, project: project), + ].flat_map(&:call) + end end on :"textDocument/definition" do |request:, project:| diff --git a/lib/language_server/completion_provider/rcodetools.rb b/lib/language_server/completion_provider/rcodetools.rb deleted file mode 100644 index afbcbbf..0000000 --- a/lib/language_server/completion_provider/rcodetools.rb +++ /dev/null @@ -1,43 +0,0 @@ -require "language_server/protocol" -require "rcodetools/completion" - -module LanguageServer - module CompletionProvider - class Filter < ::Rcodetools::XMPCompletionFilter - @candidates_with_description_flag = true - - def completion_code(*args) - candidates_with_class(*args) - rescue NewCodeError, RuntimeDataError, NoCandidates - [nil, []] - end - end - - class Rcodetools - def initialize(uri:, line:, character:, file_store:) - @uri = uri - @line = line - @character = character - @file_store = file_store - end - - def call - _, candidates = Filter.run(source, lineno: @line + 1, column: @character) - candidates.map do |candidate| - method_name, description = candidate.split(/\0/, 2) - Protocol::Interface::CompletionItem.new( - label: method_name, - detail: description, - kind: Protocol::Constant::CompletionItemKind::METHOD, - ) - end - end - - private - - def source - @file_store.read_remote_uri(@uri) - end - end - end -end diff --git a/test/language_server/completion_provider/rcodetools_test.rb b/test/language_server/completion_provider/rcodetools_test.rb deleted file mode 100644 index bbd899a..0000000 --- a/test/language_server/completion_provider/rcodetools_test.rb +++ /dev/null @@ -1,60 +0,0 @@ -require "test_helper" - -module LanguageServer - module CompletionProvider - class RcodetoolsTest < Minitest::Test - def setup - @uri = "file:///foo.rb" - @file_store = FileStore.new - end - - def test_array - @file_store.cache(@uri, <<-EOS.strip_heredoc) - [].l - EOS - - provider = Rcodetools.new(uri: @uri, line: 0, character: 4, file_store: @file_store) - - candidates = [ - Protocol::Interface::CompletionItem.new(label: "last", kind: Protocol::Constant::CompletionItemKind::METHOD, detail: "Array#last"), - Protocol::Interface::CompletionItem.new(label: "lazy", kind: Protocol::Constant::CompletionItemKind::METHOD, detail: "Enumerable#lazy"), - Protocol::Interface::CompletionItem.new(label: "length", kind: Protocol::Constant::CompletionItemKind::METHOD, detail: "Array#length"), - ] - - assert { provider.call.to_json == candidates.to_json } - end - - def test_no_candidates - @file_store.cache(@uri, <<-EOS.strip_heredoc) - [].not_exists - EOS - - provider = Rcodetools.new(uri: @uri, line: 0, character: 13, file_store: @file_store) - - assert { provider.call == [] } - end - - def test_syntax_error - @file_store.cache(@uri, <<-EOS.strip_heredoc) - class Foo - [].l - EOS - - provider = Rcodetools.new(uri: @uri, line: 1, character: 4, file_store: @file_store) - - assert { provider.call == [] } - end - - def test_runtime_error - @file_store.cache(@uri, <<-EOS.strip_heredoc) - require "not_exists" - [].l - EOS - - provider = Rcodetools.new(uri: @uri, line: 1, character: 4, file_store: @file_store) - - assert { provider.call == [] } - end - end - end -end