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