class Solargraph::LanguageServer::Message::Initialize
Public Instance Methods
process()
click to toggle source
# File lib/solargraph/language_server/message/initialize.rb, line 6 def process 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 } } } } # FIXME: lsp default is utf-16, may have different position result[:capabilities][:positionEncoding] = "utf-32" if params.dig("capabilities", "general", "positionEncodings")&.include?("utf-32") 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') result[:capabilities].merge! static_highlights unless dynamic_registration_for?('textDocument', 'documentHighlight') # @todo Temporarily disabled # result[:capabilities].merge! static_code_action unless dynamic_registration_for?('textDocument', 'codeAction') set_result result 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 152 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 65 def static_code_action { codeActionProvider: true, codeActionKinds: ["quickfix"] } end
static_completion()
click to toggle source
# File lib/solargraph/language_server/message/initialize.rb, line 55 def static_completion return {} unless host.options['completion'] { completionProvider: { resolveProvider: true, triggerCharacters: ['.', ':', '@'] } } end
static_definitions()
click to toggle source
# File lib/solargraph/language_server/message/initialize.rb, line 116 def static_definitions return {} unless host.options['definitions'] { definitionProvider: true } end
static_document_formatting()
click to toggle source
# File lib/solargraph/language_server/message/initialize.rb, line 96 def static_document_formatting return {} unless host.options['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 return {} unless host.options['symbols'] { documentSymbolProvider: true } end
static_folding_range()
click to toggle source
# File lib/solargraph/language_server/message/initialize.rb, line 136 def static_folding_range return {} unless host.options['folding'] { foldingRangeProvider: true } end
static_highlights()
click to toggle source
# File lib/solargraph/language_server/message/initialize.rb, line 143 def static_highlights { documentHighlightProvider: true } end
static_hover()
click to toggle source
# File lib/solargraph/language_server/message/initialize.rb, line 89 def static_hover return {} unless host.options['hover'] { hoverProvider: true } end
static_on_type_formatting()
click to toggle source
# File lib/solargraph/language_server/message/initialize.rb, line 80 def static_on_type_formatting { documentOnTypeFormattingProvider: { firstTriggerCharacter: '{', moreTriggerCharacter: ['('] } } end
static_references()
click to toggle source
# File lib/solargraph/language_server/message/initialize.rb, line 129 def static_references return {} unless host.options['references'] { referencesProvider: true } end
static_rename()
click to toggle source
# File lib/solargraph/language_server/message/initialize.rb, line 123 def static_rename { renameProvider: {prepareProvider: true} } end
static_signature_help()
click to toggle source
# File lib/solargraph/language_server/message/initialize.rb, line 72 def static_signature_help { signatureHelpProvider: { triggerCharacters: ['(', ','] } } end
static_workspace_symbols()
click to toggle source
# File lib/solargraph/language_server/message/initialize.rb, line 110 def static_workspace_symbols { workspaceSymbolProvider: true } end
support_workspace_folders?()
click to toggle source
# File lib/solargraph/language_server/message/initialize.rb, line 48 def support_workspace_folders? params['capabilities'] && params['capabilities']['workspace'] && params['capabilities']['workspace']['workspaceFolders'] && params['workspaceFolders'] end