class Solargraph::LanguageServer::Message::Initialize
Public Instance Methods
process()
click to toggle source
# File lib/solargraph/language_server/message/initialize.rb, line 9 def process bm = Benchmark.measure { host.configure params['initializationOptions'] host.client_capabilities = params['capabilities'] if support_workspace_folders? host.prepare_folders params['workspaceFolders'] elsif params['rootUri'] host.prepare UriHelpers.uri_to_file(params['rootUri']) else host.prepare params['rootPath'] end result = { capabilities: { textDocumentSync: 2, # @todo What should this be? workspace: { workspaceFolders: { supported: true, changeNotifications: true } } } } result[:capabilities].merge! static_completion unless dynamic_registration_for?('textDocument', 'completion') result[:capabilities].merge! static_signature_help unless dynamic_registration_for?('textDocument', 'signatureHelp') # result[:capabilities].merge! static_on_type_formatting unless dynamic_registration_for?('textDocument', 'onTypeFormatting') result[:capabilities].merge! static_hover unless dynamic_registration_for?('textDocument', 'hover') result[:capabilities].merge! static_document_formatting unless dynamic_registration_for?('textDocument', 'formatting') result[:capabilities].merge! static_document_symbols unless dynamic_registration_for?('textDocument', 'documentSymbol') result[:capabilities].merge! static_definitions unless dynamic_registration_for?('textDocument', 'definition') result[:capabilities].merge! static_rename unless dynamic_registration_for?('textDocument', 'rename') result[:capabilities].merge! static_references unless dynamic_registration_for?('textDocument', 'references') result[:capabilities].merge! static_workspace_symbols unless dynamic_registration_for?('workspace', 'symbol') result[:capabilities].merge! static_folding_range unless dynamic_registration_for?('textDocument', 'foldingRange') # @todo Temporarily disabled # result[:capabilities].merge! static_code_action unless dynamic_registration_for?('textDocument', 'codeAction') set_result result } Solargraph.logger.unknown "Solargraph initialized (#{bm.real} seconds)" end
Private Instance Methods
dynamic_registration_for?(section, capability)
click to toggle source
@param section [String] @param capability [String] @return [Boolean]
# File lib/solargraph/language_server/message/initialize.rb, line 142 def dynamic_registration_for? section, capability result = (params['capabilities'] && params['capabilities'][section] && params['capabilities'][section][capability] && params['capabilities'][section][capability]['dynamicRegistration']) host.allow_registration("#{section}/#{capability}") if result result end
static_code_action()
click to toggle source
# File lib/solargraph/language_server/message/initialize.rb, line 67 def static_code_action { codeActionProvider: true, codeActionKinds: ["quickfix"] } end
static_completion()
click to toggle source
# File lib/solargraph/language_server/message/initialize.rb, line 58 def static_completion { completionProvider: { resolveProvider: true, triggerCharacters: ['.', ':', '@'] } } end
static_definitions()
click to toggle source
# File lib/solargraph/language_server/message/initialize.rb, line 115 def static_definitions { definitionProvider: true } end
static_document_formatting()
click to toggle source
# File lib/solargraph/language_server/message/initialize.rb, line 97 def static_document_formatting { documentFormattingProvider: true } end
static_document_symbols()
click to toggle source
# File lib/solargraph/language_server/message/initialize.rb, line 103 def static_document_symbols { documentSymbolProvider: true } end
static_folding_range()
click to toggle source
# File lib/solargraph/language_server/message/initialize.rb, line 133 def static_folding_range { foldingRangeProvider: true } end
static_hover()
click to toggle source
# File lib/solargraph/language_server/message/initialize.rb, line 91 def static_hover { hoverProvider: true } end
static_on_type_formatting()
click to toggle source
# File lib/solargraph/language_server/message/initialize.rb, line 82 def static_on_type_formatting { documentOnTypeFormattingProvider: { firstTriggerCharacter: '{', moreTriggerCharacter: ['('] } } end
static_references()
click to toggle source
# File lib/solargraph/language_server/message/initialize.rb, line 127 def static_references { referencesProvider: true } end
static_rename()
click to toggle source
# File lib/solargraph/language_server/message/initialize.rb, line 121 def static_rename { renameProvider: {prepareProvider: true} } end
static_signature_help()
click to toggle source
# File lib/solargraph/language_server/message/initialize.rb, line 74 def static_signature_help { signatureHelpProvider: { triggerCharacters: ['(', ','] } } end
static_workspace_symbols()
click to toggle source
# File lib/solargraph/language_server/message/initialize.rb, line 109 def static_workspace_symbols { workspaceSymbolProvider: true } end
support_workspace_folders?()
click to toggle source
# File lib/solargraph/language_server/message/initialize.rb, line 51 def support_workspace_folders? params['capabilities'] && params['capabilities']['workspace'] && params['capabilities']['workspace']['workspaceFolders'] && params['workspaceFolders'] end