class Steep::Server::InteractionWorker
def format_completion_item(item)
def format_completion_item(item) range = LanguageServer::Protocol::Interface::Range.new( start: LanguageServer::Protocol::Interface::Position.new( line: item.range.start.line-1, character: item.range.start.column ), end: LanguageServer::Protocol::Interface::Position.new( line: item.range.end.line-1, character: item.range.end.column ) ) case item when Project::CompletionProvider::LocalVariableItem LanguageServer::Protocol::Interface::CompletionItem.new( label: item.identifier, kind: LanguageServer::Protocol::Constant::CompletionItemKind::VARIABLE, detail: "#{item.identifier}: #{item.type}", text_edit: LanguageServer::Protocol::Interface::TextEdit.new( range: range, new_text: "#{item.identifier}" ) ) when Project::CompletionProvider::MethodNameItem label = "def #{item.identifier}: #{item.method_type}" method_type_snippet = method_type_to_snippet(item.method_type) LanguageServer::Protocol::Interface::CompletionItem.new( label: label, kind: LanguageServer::Protocol::Constant::CompletionItemKind::METHOD, text_edit: LanguageServer::Protocol::Interface::TextEdit.new( new_text: "#{item.identifier}#{method_type_snippet}", range: range ), documentation: item.definition.comment&.string, insert_text_format: LanguageServer::Protocol::Constant::InsertTextFormat::SNIPPET, sort_text: item.inherited_method ? 'z' : 'a' # Ensure language server puts non-inherited methods before inherited methods ) when Project::CompletionProvider::InstanceVariableItem label = "#{item.identifier}: #{item.type}" LanguageServer::Protocol::Interface::CompletionItem.new( label: label, kind: LanguageServer::Protocol::Constant::CompletionItemKind::FIELD, text_edit: LanguageServer::Protocol::Interface::TextEdit.new( range: range, new_text: item.identifier, ), insert_text_format: LanguageServer::Protocol::Constant::InsertTextFormat::SNIPPET ) end end