class Yoda::Server::Providers::Definition
Public Class Methods
provider_method()
click to toggle source
# File lib/yoda/server/providers/definition.rb, line 5 def self.provider_method :'textDocument/definition' end
Public Instance Methods
provide(params)
click to toggle source
# File lib/yoda/server/providers/definition.rb, line 9 def provide(params) calculate(params[:text_document][:uri], params[:position]) end
timeout()
click to toggle source
# File lib/yoda/server/providers/definition.rb, line 13 def timeout 10 end
Private Instance Methods
calculate(uri, position, include_declaration = false)
click to toggle source
@param uri [String] @param position [{Symbol => Integer}] @param include_declaration [Boolean]
# File lib/yoda/server/providers/definition.rb, line 22 def calculate(uri, position, include_declaration = false) source = session.file_store.get(uri) location = Parsing::Location.of_language_server_protocol_position(line: position[:line], character: position[:character]) node_worker = Evaluation::CurrentNodeExplain.new(session.registry, source, location) references = node_worker.defined_files references.map { |(path, line, column)| create_location(path, line, column) } end
create_location(path, line, column)
click to toggle source
@param path [String] @param line [Integer] @param column [Integer]
# File lib/yoda/server/providers/definition.rb, line 34 def create_location(path, line, column) location = Parsing::Location.new(row: line - 1, column: column) LanguageServer::Protocol::Interface::Location.new( uri: session.uri_of_path(path), range: LanguageServer::Protocol::Interface::Range.new(Parsing::Range.new(location, location).to_language_server_protocol_range), ) end