mirror of
https://github.com/prabirshrestha/vim-lsp.git
synced 2026-06-09 15:37:30 +02:00
44608334f9
It is sometimes useful to generate `workspace_config` using a callback. For example, if the produced config needs to include some information from the actual workspace.
184 lines
6.3 KiB
VimL
184 lines
6.3 KiB
VimL
Describe lsp#utils#workspace_config
|
|
|
|
Describe lsp#utils#workspace_config#get
|
|
It should return the workspace config, when it is a dict
|
|
let l:name = 'Unit Test Server'
|
|
|
|
call lsp#register_server({
|
|
\ 'name': l:name,
|
|
\ 'workspace_config': {
|
|
\ 'a': {
|
|
\ 'a1': v:true,
|
|
\ 'a2': {
|
|
\ 'a21': 'disabled',
|
|
\ },
|
|
\ },
|
|
\ 'b': 'path/to/file',
|
|
\ }
|
|
\ })
|
|
|
|
let l:config = lsp#utils#workspace_config#get(l:name)
|
|
|
|
Assert Equals(l:config['a']['a1'], v:true)
|
|
Assert Equals(l:config['a']['a2']['a21'], 'disabled')
|
|
Assert Equals(l:config['b'], 'path/to/file')
|
|
end
|
|
|
|
It should return the workspace config, produced by a callback
|
|
let l:name = 'Unit Test Server'
|
|
|
|
let l:callResult = {}
|
|
|
|
call lsp#register_server({
|
|
\ 'name': l:name,
|
|
\ 'workspace_config': {server_info->l:callResult},
|
|
\ })
|
|
|
|
let l:config = lsp#utils#workspace_config#get(l:name)
|
|
Assert Equals(l:config, {})
|
|
|
|
let l:callResult = {
|
|
\ 'a': {
|
|
\ 'a1': v:true,
|
|
\ 'a2': {
|
|
\ 'a21': 'disabled',
|
|
\ },
|
|
\ },
|
|
\ 'b': 'path/to/file'
|
|
\ }
|
|
|
|
let l:config = lsp#utils#workspace_config#get(l:name)
|
|
Assert Equals(l:config['a']['a1'], v:true)
|
|
Assert Equals(l:config['a']['a2']['a21'], 'disabled')
|
|
Assert Equals(l:config['b'], 'path/to/file')
|
|
end
|
|
End
|
|
|
|
Describe lsp#utils#workspace_config#project
|
|
It should return a projection of a dictionary
|
|
let l:config = {
|
|
\ 'a': {
|
|
\ 'a1': v:true,
|
|
\ 'a2': {
|
|
\ 'a21': 'disabled',
|
|
\ },
|
|
\ },
|
|
\ 'b': 'path/to/file',
|
|
\ }
|
|
|
|
let l:config_a_a1 = lsp#utils#workspace_config#projection(
|
|
\ l:config,
|
|
\ { 'section': 'a.a1' },
|
|
\ )
|
|
let l:config_a_a2_a21 = lsp#utils#workspace_config#projection(
|
|
\ l:config,
|
|
\ { 'section': 'a.a2.a21' },
|
|
\ )
|
|
let l:config_b = lsp#utils#workspace_config#projection(
|
|
\ l:config,
|
|
\ { 'section': 'b' },
|
|
\ )
|
|
let l:config_c = lsp#utils#workspace_config#projection(
|
|
\ l:config,
|
|
\ { 'section': 'c' },
|
|
\ )
|
|
|
|
Assert Equals(l:config_a_a1, v:true)
|
|
Assert Equals(l:config_a_a2_a21, 'disabled')
|
|
Assert Equals(l:config_b, 'path/to/file')
|
|
Assert Equals(l:config_c, v:null)
|
|
end
|
|
End
|
|
|
|
Describe lsp#utils#workspace_config#get_value
|
|
It should return a projection of the workspace config, when it is a dict
|
|
let l:name = 'Unit Test Server'
|
|
|
|
call lsp#register_server({
|
|
\ 'name': l:name,
|
|
\ 'workspace_config': {
|
|
\ 'a': {
|
|
\ 'a1': v:true,
|
|
\ 'a2': {
|
|
\ 'a21': 'disabled',
|
|
\ },
|
|
\ },
|
|
\ 'b': "path/to/file",
|
|
\ }
|
|
\ })
|
|
|
|
let l:config_a_a1 = lsp#utils#workspace_config#get_value(
|
|
\ l:name,
|
|
\ { 'section': 'a.a1' },
|
|
\ )
|
|
let l:config_a_a2_a21 = lsp#utils#workspace_config#get_value(
|
|
\ l:name,
|
|
\ { 'section': 'a.a2.a21' },
|
|
\ )
|
|
let l:config_b = lsp#utils#workspace_config#get_value(
|
|
\ l:name,
|
|
\ { 'section': 'b' },
|
|
\ )
|
|
let l:config_c = lsp#utils#workspace_config#get_value(
|
|
\ l:name,
|
|
\ { 'section': 'c' },
|
|
\ )
|
|
|
|
Assert Equals(l:config_a_a1, v:true)
|
|
Assert Equals(l:config_a_a2_a21, 'disabled')
|
|
Assert Equals(l:config_b, 'path/to/file')
|
|
Assert Equals(l:config_c, v:null)
|
|
end
|
|
|
|
It should return a projection of the workspace config, produced by a callback
|
|
let l:name = 'Unit Test Server'
|
|
|
|
let l:callResult = {}
|
|
|
|
call lsp#register_server({
|
|
\ 'name': l:name,
|
|
\ 'workspace_config': {server_info->l:callResult},
|
|
\ })
|
|
|
|
let l:config = lsp#utils#workspace_config#get_value(
|
|
\ l:name,
|
|
\ { 'section': '' },
|
|
\ )
|
|
Assert Equals(l:config, {})
|
|
|
|
let l:callResult = {
|
|
\ 'a': {
|
|
\ 'a1': v:true,
|
|
\ 'a2': {
|
|
\ 'a21': 'disabled',
|
|
\ },
|
|
\ },
|
|
\ 'b': "path/to/file",
|
|
\ }
|
|
|
|
let l:config_a_a1 = lsp#utils#workspace_config#get_value(
|
|
\ l:name,
|
|
\ { 'section': 'a.a1' },
|
|
\ )
|
|
let l:config_a_a2_a21 = lsp#utils#workspace_config#get_value(
|
|
\ l:name,
|
|
\ { 'section': 'a.a2.a21' },
|
|
\ )
|
|
let l:config_b = lsp#utils#workspace_config#get_value(
|
|
\ l:name,
|
|
\ { 'section': 'b' },
|
|
\ )
|
|
let l:config_c = lsp#utils#workspace_config#get_value(
|
|
\ l:name,
|
|
\ { 'section': 'c' },
|
|
\ )
|
|
|
|
Assert Equals(l:config_a_a1, v:true)
|
|
Assert Equals(l:config_a_a2_a21, 'disabled')
|
|
Assert Equals(l:config_b, 'path/to/file')
|
|
Assert Equals(l:config_c, v:null)
|
|
end
|
|
End
|
|
End
|
|
|