1- let g: _codeium_version = ' 1.0.0'
2- let g: ide = ' jetbrains'
3- let g: api_key = ' '
4-
51let s: hlgroup = ' CodeiumSuggestion'
62let s: annot_hlgroup = ' CodeiumAnnotation'
73let s: request_nonce = 0
@@ -13,13 +9,6 @@ if empty(prop_type_get(s:annot_hlgroup))
139 call prop_type_add (s: annot_hlgroup , {' highlight' : s: annot_hlgroup })
1410endif
1511
16- function ! s: Log (str) abort
17- let fname = expand (' ~' ) . ' /codeium.log'
18- execute ' redir >> ' . l: fname
19- echo a: str
20- redir END
21- endfunction
22-
2312function ! codeium#CompletionText () abort
2413 try
2514 return remove (s: , ' completion_text' )
@@ -65,23 +54,28 @@ function! codeium#Accept() abort
6554 let delete_text = move_to_end . " \<C-O> d0" . move_to_start . repeat (" \<C-O> DJ" , end_row - start_row) . " \<C-O> dl"
6655 endif
6756
57+ call codeium#server#Request (' AcceptCompletion' , {' metadata' : codeium#server#RequestMetadata (), " completion_id" : current_completion.completion.completion_id})
6858 return delete_text . insert_text
6959 endif
7060
7161 return default
7262endfunction
7363
7464function ! s: HandleCompletionsResult (out, status) abort
75- let response_text = join (a: out , ' ' )
76- if empty (response_text)
77- call s: Log (' Null response' )
78- elseif exists (' b:_codeium_completions' )
79- let response = json_decode (response_text)
80- let completionItems = response- >get (' completionItems' , [])
81-
82- let b: _codeium_completions .items = completionItems
83- let b: _codeium_completions .index = 0
84- call s: RenderCurrentCompletion ()
65+ if exists (' b:_codeium_completions' )
66+ let response_text = join (a: out , ' ' )
67+ try
68+ let response = json_decode (response_text)
69+ let completionItems = response- >get (' completionItems' , [])
70+
71+ let b: _codeium_completions .items = completionItems
72+ let b: _codeium_completions .index = 0
73+
74+ call s: RenderCurrentCompletion ()
75+ catch
76+ call codeium#log#Error (" Invalid response from language server" )
77+ call codeium#log#Exception ()
78+ endtry
8579 endif
8680endfunction
8781
@@ -111,7 +105,7 @@ function! s:RenderCurrentCompletion() abort
111105 let start_offset = current_completion.range - >get (' startOffset' , 0 )
112106 let [start_row, start_col] = codeium#util#OffsetToPosition (start_offset + 1 )
113107 if start_row != line (' .' )
114- call s: Log (" Ignoring completion, line number is not the current line." )
108+ call codeium#log#Info (" Ignoring completion, line number is not the current line." )
115109 return ' '
116110 endif
117111
@@ -147,46 +141,20 @@ function! s:RenderCurrentCompletion() abort
147141 endfor
148142endfunction
149143
150- function ! s: GetCompletionRequestData () abort
151- let metadata = {
152- \ " api_key" : g: api_key ,
153- \ " ide_name" : g: ide ,
154- \ " extension_version" : g: _codeium_version ,
155- \ }
156-
157- let document = codeium#doc#GetCurrentDocument ()
158- let editor_options = codeium#doc#GetEditorOptions ()
159-
160- let api_server_params = {
161- \ " api_timeout_ms" : 5000 ,
162- \ " first_temperature" :0.2 ,
163- \ " max_completions" : 10 ,
164- \ " max_newlines" :20 ,
165- \ " max_tokens" :256 ,
166- \ " min_log_probability" :-15.0 ,
167- \ " temperature" :0.2 ,
168- \ " top_k" :50 ,
169- \ " top_p" :1.0
170- \ }
171-
172- return {
173- \ " metadata" : metadata,
174- \ " document" : document,
175- \ " editor_options" : editor_options,
176- \ " api_server_params" : api_server_params
177- \ }
178- endfunction
179-
180144function ! codeium#Clear (... ) abort
181145 if exists (' g:_codeium_timer' )
182146 call timer_stop (remove (g: , ' _codeium_timer' ))
183147 endif
184148
185- " Cancel anny existing request.
149+ " Cancel any existing request.
186150 if exists (' b:_codeium_completions' )
187151 let request_id = b: _codeium_completions- >get (' request_id' , 0 )
188152 if request_id > 0
189- call codeium#server#Request (' 42100' , ' CancelRequest' , {' request_id' : request_id})
153+ try
154+ call codeium#server#Request (' CancelRequest' , {' request_id' : request_id})
155+ catch
156+ call codeium#log#Exception ()
157+ endtry
190158 endif
191159 call s: RenderCurrentCompletion ()
192160 unlet ! b: _codeium_completions
@@ -235,7 +203,23 @@ function! codeium#Complete(...) abort
235203 call timer_stop (remove (g: , ' _codeium_timer' ))
236204 endif
237205
238- let data = s: GetCompletionRequestData ()
206+ let data = {
207+ \ " metadata" : codeium#server#RequestMetadata (),
208+ \ " document" : codeium#doc#GetCurrentDocument (),
209+ \ " editor_options" : codeium#doc#GetEditorOptions (),
210+ \ " api_server_params" : {
211+ \ " api_timeout_ms" : 5000 ,
212+ \ " first_temperature" :0.2 ,
213+ \ " max_completions" : 10 ,
214+ \ " max_newlines" :20 ,
215+ \ " max_tokens" :256 ,
216+ \ " min_log_probability" :-15.0 ,
217+ \ " temperature" :0.2 ,
218+ \ " top_k" :50 ,
219+ \ " top_p" :1.0
220+ \ }
221+ \ }
222+
239223 if exists (' b:_codeium_completions.request_data' ) && b: _codeium_completions .request_data == # data
240224 return
241225 endif
@@ -247,13 +231,17 @@ function! codeium#Complete(...) abort
247231 let request_id = s: request_nonce
248232 let data.metadata.request_id = request_id
249233
250- let request_job = codeium#server#Request (' 42100' , ' GetCompletions' , data, function (' s:HandleCompletionsResult' , []))
234+ try
235+ let request_job = codeium#server#Request (' GetCompletions' , data, function (' s:HandleCompletionsResult' , []))
251236
252- let b: _codeium_completions = {
253- \ " request_data" : request_data,
254- \ " request_id" : request_id,
255- \ " job" : request_job
256- \ }
237+ let b: _codeium_completions = {
238+ \ " request_data" : request_data,
239+ \ " request_id" : request_id,
240+ \ " job" : request_job
241+ \ }
242+ catch
243+ call codeium#log#Exception ()
244+ endtry
257245endfunction
258246
259247function ! codeium#DebouncedComplete (... ) abort
0 commit comments