Method: Standard::LSP::Server#initialize
- Defined in:
- lib/standard/lsp/server.rb
#initialize(standardizer) ⇒ Server
Returns a new instance of Server.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/standard/lsp/server.rb', line 16 def initialize(standardizer) self.standardizer = standardizer self.writer = Proto::Transport::Io::Writer.new($stdout) self.reader = Proto::Transport::Io::Reader.new($stdin) self.logger = $stderr self.text_cache = {} self.subscribers = { "initialize" => ->(request) { init_result = Proto::Interface::InitializeResult.new( capabilities: Proto::Interface::ServerCapabilities.new( document_formatting_provider: true, diagnostic_provider: true, text_document_sync: Proto::Constant::TextDocumentSyncKind::FULL ) ) writer.write(id: request[:id], result: init_result) }, "initialized" => ->(request) { logger.puts "standard v#{Standard::VERSION} initialized, pid #{Process.pid}" }, "shutdown" => ->(request) { logger.puts "asked to shutdown, exiting..." exit }, "textDocument/didChange" => ->(request) { params = request[:params] result = diagnostic(params[:textDocument][:uri], params[:contentChanges][0][:text]) writer.write(result) }, "textDocument/didOpen" => ->(request) { td = request[:params][:textDocument] result = diagnostic(td[:uri], td[:text]) writer.write(result) }, "textDocument/didClose" => ->(request) { text_cache.delete(request.dig(:params, :textDocument, :uri)) }, "textDocument/formatting" => ->(request) { uri = request[:params][:textDocument][:uri] writer.write({id: request[:id], result: format_file(uri)}) }, "textDocument/didSave" => ->(request) {} } end |