Fix #2515 - Send client capabilities to LSP servers
This commit is contained in:
parent
9d908ecc66
commit
4ee28d3129
@ -321,7 +321,69 @@ endfunction
|
|||||||
|
|
||||||
function! s:SendInitMessage(conn) abort
|
function! s:SendInitMessage(conn) abort
|
||||||
let [l:init_id, l:init_data] = ale#lsp#CreateMessageData(
|
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
|
let a:conn.init_request_id = l:init_id
|
||||||
call s:SendMessageData(a:conn, l:init_data)
|
call s:SendMessageData(a:conn, l:init_data)
|
||||||
|
@ -28,14 +28,13 @@ function! ale#lsp#message#GetNextVersionID() abort
|
|||||||
return l:id
|
return l:id
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! ale#lsp#message#Initialize(root_path, initialization_options) abort
|
function! ale#lsp#message#Initialize(root_path, options, capabilities) abort
|
||||||
" TODO: Define needed capabilities.
|
|
||||||
" NOTE: rootPath is deprecated in favour of rootUri
|
" NOTE: rootPath is deprecated in favour of rootUri
|
||||||
return [0, 'initialize', {
|
return [0, 'initialize', {
|
||||||
\ 'processId': getpid(),
|
\ 'processId': getpid(),
|
||||||
\ 'rootPath': a:root_path,
|
\ 'rootPath': a:root_path,
|
||||||
\ 'capabilities': {},
|
\ 'capabilities': a:capabilities,
|
||||||
\ 'initializationOptions': a:initialization_options,
|
\ 'initializationOptions': a:options,
|
||||||
\ 'rootUri': ale#path#ToURI(a:root_path),
|
\ 'rootUri': ale#path#ToURI(a:root_path),
|
||||||
\}]
|
\}]
|
||||||
endfunction
|
endfunction
|
||||||
|
@ -20,7 +20,7 @@ Execute(ale#lsp#message#Initialize() should return correct messages):
|
|||||||
\ 'rootUri': 'file:///foo/bar',
|
\ '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):
|
Execute(ale#lsp#message#Initialized() should return correct messages):
|
||||||
AssertEqual [1, 'initialized', {}], ale#lsp#message#Initialized()
|
AssertEqual [1, 'initialized', {}], ale#lsp#message#Initialized()
|
||||||
|
@ -138,9 +138,67 @@ Before:
|
|||||||
\ 'params': {
|
\ 'params': {
|
||||||
\ 'initializationOptions': {},
|
\ 'initializationOptions': {},
|
||||||
\ 'rootUri': ale#path#ToURI(a:root),
|
\ 'rootUri': ale#path#ToURI(a:root),
|
||||||
\ 'capabilities': {},
|
|
||||||
\ 'rootPath': a:root,
|
\ 'rootPath': a:root,
|
||||||
\ 'processId': getpid(),
|
\ '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,
|
||||||
|
\ },
|
||||||
|
\ },
|
||||||
|
\ },
|
||||||
\ },
|
\ },
|
||||||
\ },
|
\ },
|
||||||
\ ],
|
\ ],
|
||||||
|
Loading…
Reference in New Issue
Block a user