All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@git.madduck.net.
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
1 Describe lsp#internal#work_done_progress
3 let g:lsp_work_done_progress_enabled = 1
4 call lsp#internal#work_done_progress#_enable()
8 let g:lsp_work_done_progress_enabled = 0
9 call lsp#internal#work_done_progress#_disable()
12 It should be able to subscribe to $progress stream
13 let l:server1_response1 = {'method': '$/progress', 'params':{'token':'token text','value':{'kind':'begin', 'title':'title'}}}
14 let l:server1_response2 = {'method': '$/progress', 'params':{'token':'token text','value':{'percentage':50,'message':'test message','kind':'report'}}}
15 let l:server1_response3 = {'method': '$/progress', 'params':{'token':'token text','value':{'kind':'end'}}}
17 Assert Equals(lsp#internal#work_done_progress#get_progress(), [])
19 call lsp#stream(1, { 'server': 'server1', 'response': l:server1_response1 })
20 Assert Equals(lsp#internal#work_done_progress#get_progress(),
21 \ [{'message': '', 'token': 'token text', 'title': 'title', 'server': 'server1'}])
23 call lsp#stream(1, { 'server': 'server1', 'response': l:server1_response2 })
24 Assert Equals(lsp#internal#work_done_progress#get_progress(),
25 \ [{'message': 'test message', 'token': 'token text', 'percentage': 50, 'title': 'title', 'server': 'server1'}])
27 call lsp#stream(1, { 'server': 'server1', 'response': l:server1_response3 })
28 Assert Equals(lsp#internal#work_done_progress#get_progress(), [])
31 It should be able to subscribe to multi $progress stream
32 let l:server1_response1 = {'method': '$/progress', 'params':{'token':'token text','value':{'kind':'begin', 'title':'title1'}}}
33 let l:server1_response2 = {'method': '$/progress', 'params':{'token':'token text','value':{'percentage':50,'message':'msg1','kind':'report'}}}
34 let l:server1_response3 = {'method': '$/progress', 'params':{'token':'token text','value':{'percentage':90,'message':'msg1','kind':'report'}}}
35 let l:server1_response4 = {'method': '$/progress', 'params':{'token':'token text','value':{'kind':'end'}}}
36 let l:server2_response1 = {'method': '$/progress', 'params':{'token':'server2_token','value':{'kind':'begin', 'title':'title2'}}}
37 let l:server2_response2 = {'method': '$/progress', 'params':{'token':'server2_token','value':{'percentage':0,'message':'msg2','kind':'report'}}}
38 let l:server2_response3 = {'method': '$/progress', 'params':{'token':'server2_token','value':{'kind':'end'}}}
40 Assert Equals(lsp#internal#work_done_progress#get_progress(), [])
42 call lsp#stream(1, { 'server': 'server1', 'response': l:server1_response1 })
43 Assert Equals(lsp#internal#work_done_progress#get_progress(),
44 \ [{'message': '', 'token': 'token text', 'title': 'title1', 'server': 'server1'}])
46 call lsp#stream(1, { 'server': 'server2', 'response': l:server2_response1 })
47 Assert Equals(lsp#internal#work_done_progress#get_progress(),
48 \ [{'message': '', 'token': 'server2_token', 'title': 'title2', 'server': 'server2'},
49 \ {'message': '', 'token': 'token text', 'title': 'title1', 'server': 'server1'}])
51 call lsp#stream(1, { 'server': 'server2', 'response': l:server2_response2 })
52 Assert Equals(lsp#internal#work_done_progress#get_progress(),
53 \ [{'message': 'msg2', 'token': 'server2_token', 'percentage':0, 'title': 'title2', 'server': 'server2'},
54 \ {'message': '', 'token': 'token text', 'title': 'title1', 'server': 'server1'}])
56 call lsp#stream(1, { 'server': 'server1', 'response': l:server1_response2 })
57 Assert Equals(lsp#internal#work_done_progress#get_progress(),
58 \ [{'message': 'msg1', 'token': 'token text', 'percentage':50, 'title': 'title1', 'server': 'server1'},
59 \ {'message': 'msg2', 'token': 'server2_token', 'percentage':0, 'title': 'title2', 'server': 'server2'}])
61 call lsp#stream(1, { 'server': 'server1', 'response': l:server1_response3 })
62 Assert Equals(lsp#internal#work_done_progress#get_progress(),
63 \ [{'message': 'msg1', 'token': 'token text', 'percentage':90, 'title': 'title1', 'server': 'server1'},
64 \ {'message': 'msg2', 'token': 'server2_token', 'percentage':0, 'title': 'title2', 'server': 'server2'}])
66 call lsp#stream(1, { 'server': 'server1', 'response': l:server1_response4 })
67 Assert Equals(lsp#internal#work_done_progress#get_progress(),
68 \ [{'message': 'msg2', 'token': 'server2_token', 'percentage':0, 'title': 'title2', 'server': 'server2'}])
70 call lsp#stream(1, { 'server': 'server2', 'response': l:server2_response3 })
71 Assert Equals(lsp#internal#work_done_progress#get_progress(), [])
74 It should be returned correctly even if percentage and message do not exist.
75 let l:server1_response1 = {'method': '$/progress', 'params':{'token':'token text','value':{'kind':'begin', 'title':'title'}}}
76 let l:server1_response2 = {'method': '$/progress', 'params':{'token':'token text','value':{'kind':'report'}}}
77 let l:server1_response3 = {'method': '$/progress', 'params':{'token':'token text','value':{'kind':'end'}}}
79 Assert Equals(lsp#internal#work_done_progress#get_progress(), [])
81 call lsp#stream(1, { 'server': 'server1', 'response': l:server1_response1 })
82 Assert Equals(lsp#internal#work_done_progress#get_progress(),
83 \ [{'message': '', 'token': 'token text', 'title': 'title', 'server': 'server1'}])
85 call lsp#stream(1, { 'server': 'server1', 'response': l:server1_response2 })
86 Assert Equals(lsp#internal#work_done_progress#get_progress(),
87 \ [{'message': '', 'token': 'token text', 'title': 'title', 'server': 'server1'}])
89 call lsp#stream(1, { 'server': 'server1', 'response': l:server1_response3 })
90 Assert Equals(lsp#internal#work_done_progress#get_progress(), [])