class RubyLanguageServer::Server
Constants
- Position
Attributes
io[RW]
Public Class Methods
new(mutex)
click to toggle source
# File lib/ruby_language_server/server.rb, line 10 def initialize(mutex) @mutex = mutex end
Public Instance Methods
on_initialize(params)
click to toggle source
# File lib/ruby_language_server/server.rb, line 14 def on_initialize(params) RubyLanguageServer.logger.info("on_initialize: #{params}") RubyLanguageServer::CodeFile.all # Just to warm up active_record. root_path = params['rootPath'] root_uri = params['rootUri'] @project_manager = ProjectManager.new(root_path, root_uri) @project_manager.scan_all_project_files(@mutex) gem_string = ENV.fetch('ADDITIONAL_GEMS', nil) gem_array = (gem_string.split(',').compact.map(&:strip).reject { |string| string == '' } if gem_string && !gem_string.empty?) @project_manager.install_additional_gems(gem_array) { capabilities: { textDocumentSync: 1, hoverProvider: true, signatureHelpProvider: { triggerCharacters: ['(', ','] }, definitionProvider: true, referencesProvider: true, documentSymbolProvider: true, workspaceSymbolProvider: true, xworkspaceReferencesProvider: true, xdefinitionProvider: true, xdependenciesProvider: true, completionProvider: { resolveProvider: true, triggerCharacters: ['.', '::'] }, codeActionProvider: true, renameProvider: true, executeCommandProvider: { commands: [] }, xpackagesProvider: true } } end
on_initialized(_hash)
click to toggle source
# File lib/ruby_language_server/server.rb, line 52 def on_initialized(_hash) RubyLanguageServer.logger.info("RubyLanguageServer::VERSION #{RubyLanguageServer::VERSION}") end
on_shutdown(_params)
click to toggle source
# File lib/ruby_language_server/server.rb, line 116 def on_shutdown(_params) RubyLanguageServer.logger.info('on_shutdown') end
on_textDocument_completion(params)
click to toggle source
# File lib/ruby_language_server/server.rb, line 107 def on_textDocument_completion(params) RubyLanguageServer.logger.info("on_textDocument_completion #{params}") uri = uri_from_params(params) position = postition_from_params(params) completions = @project_manager.completion_at(uri, position) RubyLanguageServer.logger.debug("completions: #{completions}") completions end
on_textDocument_definition(params)
click to toggle source
# File lib/ruby_language_server/server.rb, line 79 def on_textDocument_definition(params) RubyLanguageServer.logger.debug("on_textDocument_definition #{params}") uri = uri_from_params(params) position = postition_from_params(params) @project_manager.possible_definitions(uri, position) end
on_textDocument_didChange(params)
click to toggle source
# File lib/ruby_language_server/server.rb, line 99 def on_textDocument_didChange(params) uri = uri_from_params(params) RubyLanguageServer.logger.debug("on_textDocument_didChange #{uri}") content_changes = params['contentChanges'] text = content_changes.first['text'] send_diagnostics(uri, text) end
on_textDocument_didOpen(params)
click to toggle source
# File lib/ruby_language_server/server.rb, line 91 def on_textDocument_didOpen(params) textDocument = params['textDocument'] uri = textDocument['uri'] RubyLanguageServer.logger.debug("on_textDocument_didOpen #{uri}") text = textDocument['text'] send_diagnostics(uri, text) end
on_textDocument_documentSymbol(params)
click to toggle source
# File lib/ruby_language_server/server.rb, line 68 def on_textDocument_documentSymbol(params) RubyLanguageServer.logger.debug('on_textDocument_documentSymbol') RubyLanguageServer.logger.debug(params) uri = uri_from_params(params) # {"kind":"module","line":4,"language":"Ruby","path":"(eval)","pattern":"module RubyLanguageServer","full_name":"RubyLanguageServer","name":"RubyLanguageServer"} symbols = @project_manager.tags_for_uri(uri) RubyLanguageServer.logger.debug("symbols #{symbols}") symbols end
on_textDocument_hover(params)
click to toggle source
# File lib/ruby_language_server/server.rb, line 62 def on_textDocument_hover(params) RubyLanguageServer.logger.debug('on_textDocument_hover') RubyLanguageServer.logger.debug(params) {} end
on_workspace_didChangeWatchedFiles(params)
click to toggle source
# File lib/ruby_language_server/server.rb, line 56 def on_workspace_didChangeWatchedFiles(params) RubyLanguageServer.logger.debug('on_workspace_didChangeWatchedFiles') RubyLanguageServer.logger.debug(params) {} end
send_diagnostics(uri, text)
click to toggle source
# File lib/ruby_language_server/server.rb, line 86 def send_diagnostics(uri, text) hash = @project_manager.update_document_content(uri, text) io.send_notification('textDocument/publishDiagnostics', uri: uri, diagnostics: hash) end
Private Instance Methods
postition_from_params(params)
click to toggle source
# File lib/ruby_language_server/server.rb, line 129 def postition_from_params(params) position = params['position'] Position.new((position['line']).to_i, position['character'].to_i) end
uri_from_params(params)
click to toggle source
# File lib/ruby_language_server/server.rb, line 122 def uri_from_params(params) textDocument = params['textDocument'] textDocument['uri'] end