module Lsp::LanguageServer
Constants
- LanguageServerError
- NotImplementedError
Attributes
language_server[W]
Public Instance Methods
handle_initialize(request)
click to toggle source
# File lib/lsp.rb, line 170 def handle_initialize(request) raise NotImplementedError end
handle_text_document_definition(request)
click to toggle source
# File lib/lsp.rb, line 166 def handle_text_document_definition(request) raise NotImplementedError end
handle_text_document_did_open()
click to toggle source
# File lib/lsp.rb, line 174 def handle_text_document_did_open raise NotImplementedError end
handle_text_document_hover(request)
click to toggle source
# File lib/lsp.rb, line 162 def handle_text_document_hover(request) raise NotImplementedError end
notify(method_name, params)
click to toggle source
# File lib/lsp.rb, line 130 def notify(method_name, params) case method_name when "textDocument/didOpen" handle_text_document_did_open when "textDocument/didChange" handle_text_document_did_change( DidChangeTextDocumentParams.new( VersionedTextDocumentIdentifier.new( URI(params.fetch(:textDocument).fetch(:uri)), params.fetch(:textDocument).fetch(:version)), params.fetch(:contentChanges).map do |contentChange| next if contentChange[:range] TextDocumentContentChangeEvent.new( contentChange.fetch(:text)) end.compact)) end rescue NotImplementedError end
request(id, method_name, params)
click to toggle source
# File lib/lsp.rb, line 95 def request(id, method_name, params) response = case method_name when "textDocument/hover" handle_text_document_hover( TextDocumentPositionParams.new( TextDocumentIdentifier.new( URI(params.fetch(:textDocument).fetch(:uri))), Position.from_hash(params.fetch(:position)))) when "textDocument/definition" handle_text_document_definition( TextDocumentPositionParams.new( TextDocumentIdentifier.new( URI(params.fetch(:textDocument).fetch(:uri))), Position.from_hash(params.fetch(:position)))) when "initialize" handle_initialize( InitializeRequest.new( URI(params.fetch(:rootUri)))) when "textDocument/completion" handle_text_document_completion( TextDocumentPositionParams.new( TextDocumentIdentifier.new( URI(params.fetch(:textDocument).fetch(:uri))), Position.from_hash(params.fetch(:position)))) else ResponseMessage.new(nil, ResponseError::MethodNotFound.new) end @language_server.response( id, to_result(response.result), to_result(response.error)) rescue NotImplementedError ResponseMessage.new(nil, ResponseError::MethodNotFound.new) end
to_result(obj)
click to toggle source
# File lib/lsp.rb, line 149 def to_result(obj) case obj when Array obj.map {|elem| to_result(elem) } when NilClass nil else obj.to_h end end