class Steep::Server::InteractionWorker
def response_to_completion(path:, line:, column:, trigger:)
def response_to_completion(path:, line:, column:, trigger:) Steep.logger.tagged("#response_to_completion") do Steep.logger.info "path: #{path}, line: #{line}, column: #{column}, trigger: #{trigger}" target = project.targets.find {|target| target.source_file?(path) } or return target.type_check(target_sources: [], validate_signatures: false) case (status = target&.status) when Project::Target::TypeCheckStatus subtyping = status.subtyping source = target.source_files[path] provider = Project::CompletionProvider.new(source_text: source.content, path: path, subtyping: subtyping) items = begin provider.run(line: line, column: column) rescue Parser::SyntaxError [] end completion_items = items.map do |item| format_completion_item(item) end Steep.logger.debug "items = #{completion_items.inspect}" LSP::Interface::CompletionList.new( is_incomplete: false, items: completion_items ) end end end