Fix #2515 - Send client capabilities to LSP servers
This commit is contained in:
parent
9d908ecc66
commit
4ee28d3129
4 changed files with 126 additions and 7 deletions
|
@ -321,7 +321,69 @@ endfunction
|
|||
|
||||
function! s:SendInitMessage(conn) abort
|
||||
let [l:init_id, l:init_data] = ale#lsp#CreateMessageData(
|
||||
\ ale#lsp#message#Initialize(a:conn.root, a:conn.init_options),
|
||||
\ ale#lsp#message#Initialize(
|
||||
\ a:conn.root,
|
||||
\ a:conn.init_options,
|
||||
\ {
|
||||
\ 'workspace': {
|
||||
\ 'applyEdit': v:false,
|
||||
\ 'didChangeConfiguration': {
|
||||
\ 'dynamicRegistration': v:false,
|
||||
\ },
|
||||
\ 'symbol': {
|
||||
\ 'dynamicRegistration': v:false,
|
||||
\ },
|
||||
\ 'workspaceFolders': v:false,
|
||||
\ 'configuration': v:false,
|
||||
\ },
|
||||
\ 'textDocument': {
|
||||
\ 'synchronization': {
|
||||
\ 'dynamicRegistration': v:false,
|
||||
\ 'willSave': v:false,
|
||||
\ 'willSaveWaitUntil': v:false,
|
||||
\ 'didSave': v:true,
|
||||
\ },
|
||||
\ 'completion': {
|
||||
\ 'dynamicRegistration': v:false,
|
||||
\ 'completionItem': {
|
||||
\ 'snippetSupport': v:false,
|
||||
\ 'commitCharactersSupport': v:false,
|
||||
\ 'documentationFormat': ['plaintext'],
|
||||
\ 'deprecatedSupport': v:false,
|
||||
\ 'preselectSupport': v:false,
|
||||
\ },
|
||||
\ 'contextSupport': v:false,
|
||||
\ },
|
||||
\ 'hover': {
|
||||
\ 'dynamicRegistration': v:false,
|
||||
\ 'contentFormat': ['plaintext'],
|
||||
\ },
|
||||
\ 'references': {
|
||||
\ 'dynamicRegistration': v:false,
|
||||
\ },
|
||||
\ 'documentSymbol': {
|
||||
\ 'dynamicRegistration': v:false,
|
||||
\ 'hierarchicalDocumentSymbolSupport': v:false,
|
||||
\ },
|
||||
\ 'definition': {
|
||||
\ 'dynamicRegistration': v:false,
|
||||
\ 'linkSupport': v:false,
|
||||
\ },
|
||||
\ 'typeDefinition': {
|
||||
\ 'dynamicRegistration': v:false,
|
||||
\ },
|
||||
\ 'publishDiagnostics': {
|
||||
\ 'relatedInformation': v:true,
|
||||
\ },
|
||||
\ 'codeAction': {
|
||||
\ 'dynamicRegistration': v:false,
|
||||
\ },
|
||||
\ 'rename': {
|
||||
\ 'dynamicRegistration': v:false,
|
||||
\ },
|
||||
\ },
|
||||
\ },
|
||||
\ ),
|
||||
\)
|
||||
let a:conn.init_request_id = l:init_id
|
||||
call s:SendMessageData(a:conn, l:init_data)
|
||||
|
|
|
@ -28,14 +28,13 @@ function! ale#lsp#message#GetNextVersionID() abort
|
|||
return l:id
|
||||
endfunction
|
||||
|
||||
function! ale#lsp#message#Initialize(root_path, initialization_options) abort
|
||||
" TODO: Define needed capabilities.
|
||||
function! ale#lsp#message#Initialize(root_path, options, capabilities) abort
|
||||
" NOTE: rootPath is deprecated in favour of rootUri
|
||||
return [0, 'initialize', {
|
||||
\ 'processId': getpid(),
|
||||
\ 'rootPath': a:root_path,
|
||||
\ 'capabilities': {},
|
||||
\ 'initializationOptions': a:initialization_options,
|
||||
\ 'capabilities': a:capabilities,
|
||||
\ 'initializationOptions': a:options,
|
||||
\ 'rootUri': ale#path#ToURI(a:root_path),
|
||||
\}]
|
||||
endfunction
|
||||
|
|
|
@ -20,7 +20,7 @@ Execute(ale#lsp#message#Initialize() should return correct messages):
|
|||
\ 'rootUri': 'file:///foo/bar',
|
||||
\ }
|
||||
\ ],
|
||||
\ ale#lsp#message#Initialize('/foo/bar', {'foo': 'bar'})
|
||||
\ ale#lsp#message#Initialize('/foo/bar', {'foo': 'bar'}, {})
|
||||
|
||||
Execute(ale#lsp#message#Initialized() should return correct messages):
|
||||
AssertEqual [1, 'initialized', {}], ale#lsp#message#Initialized()
|
||||
|
|
|
@ -138,9 +138,67 @@ Before:
|
|||
\ 'params': {
|
||||
\ 'initializationOptions': {},
|
||||
\ 'rootUri': ale#path#ToURI(a:root),
|
||||
\ 'capabilities': {},
|
||||
\ 'rootPath': a:root,
|
||||
\ 'processId': getpid(),
|
||||
\ 'capabilities': {
|
||||
\ 'workspace': {
|
||||
\ 'applyEdit': v:false,
|
||||
\ 'didChangeConfiguration': {
|
||||
\ 'dynamicRegistration': v:false,
|
||||
\ },
|
||||
\ 'symbol': {
|
||||
\ 'dynamicRegistration': v:false,
|
||||
\ },
|
||||
\ 'workspaceFolders': v:false,
|
||||
\ 'configuration': v:false,
|
||||
\ },
|
||||
\ 'textDocument': {
|
||||
\ 'synchronization': {
|
||||
\ 'dynamicRegistration': v:false,
|
||||
\ 'willSave': v:false,
|
||||
\ 'willSaveWaitUntil': v:false,
|
||||
\ 'didSave': v:true,
|
||||
\ },
|
||||
\ 'completion': {
|
||||
\ 'dynamicRegistration': v:false,
|
||||
\ 'completionItem': {
|
||||
\ 'snippetSupport': v:false,
|
||||
\ 'commitCharactersSupport': v:false,
|
||||
\ 'documentationFormat': ['plaintext'],
|
||||
\ 'deprecatedSupport': v:false,
|
||||
\ 'preselectSupport': v:false,
|
||||
\ },
|
||||
\ 'contextSupport': v:false,
|
||||
\ },
|
||||
\ 'hover': {
|
||||
\ 'dynamicRegistration': v:false,
|
||||
\ 'contentFormat': ['plaintext'],
|
||||
\ },
|
||||
\ 'references': {
|
||||
\ 'dynamicRegistration': v:false,
|
||||
\ },
|
||||
\ 'documentSymbol': {
|
||||
\ 'dynamicRegistration': v:false,
|
||||
\ 'hierarchicalDocumentSymbolSupport': v:false,
|
||||
\ },
|
||||
\ 'definition': {
|
||||
\ 'dynamicRegistration': v:false,
|
||||
\ 'linkSupport': v:false,
|
||||
\ },
|
||||
\ 'typeDefinition': {
|
||||
\ 'dynamicRegistration': v:false,
|
||||
\ },
|
||||
\ 'publishDiagnostics': {
|
||||
\ 'relatedInformation': v:true,
|
||||
\ },
|
||||
\ 'codeAction': {
|
||||
\ 'dynamicRegistration': v:false,
|
||||
\ },
|
||||
\ 'rename': {
|
||||
\ 'dynamicRegistration': v:false,
|
||||
\ },
|
||||
\ },
|
||||
\ },
|
||||
\ },
|
||||
\ },
|
||||
\ ],
|
||||
|
|
Reference in a new issue