@@ -235,7 +235,11 @@ function! easycomplete#util#GetUserData(item) " {{{
235235 if ! empty (ret )
236236 return ret
237237 endif
238- let user_data_str = get (a: item , ' user_data' , " " )
238+ if has_key (a: item , ' user_data' )
239+ let user_data_str = a: item [" user_data" ]
240+ else
241+ let user_data_str = " "
242+ endif
239243 if empty (user_data_str)
240244 return {}
241245 endif
@@ -1493,37 +1497,38 @@ endfunction
14931497" }
14941498function ! easycomplete#util#LspType (c_type)
14951499 if string (a: c_type ) = ~ " ^\\ d\\ {0,2}$"
1496- let l: kinds = [
1497- \ ' ' ,
1498- \ ' text' ,
1499- \ ' method' ,
1500- \ ' function' ,
1501- \ ' constructor' ,
1502- \ ' field' ,
1503- \ ' variable' ,
1504- \ ' class' ,
1505- \ ' interface' ,
1506- \ ' module' ,
1507- \ ' property' ,
1508- \ ' unit' ,
1509- \ ' value' ,
1510- \ ' enum' ,
1511- \ ' keyword' ,
1512- \ ' snippet' ,
1513- \ ' color' ,
1514- \ ' file' ,
1515- \ ' reference' ,
1516- \ ' folder' ,
1517- \ ' enummember' ,
1518- \ ' constant' ,
1519- \ ' struct' ,
1520- \ ' event' ,
1521- \ ' operator' ,
1522- \ ' typeparameter' ,
1523- \ ]
1524- call extend (l: kinds , [
1525- \ ' const'
1526- \ ])
1500+ if ! exists (" s:easycomplete_kinds" )
1501+ let s: easycomplete_kinds = [
1502+ \ ' ' ,
1503+ \ ' text' ,
1504+ \ ' method' ,
1505+ \ ' function' ,
1506+ \ ' constructor' ,
1507+ \ ' field' ,
1508+ \ ' variable' ,
1509+ \ ' class' ,
1510+ \ ' interface' ,
1511+ \ ' module' ,
1512+ \ ' property' ,
1513+ \ ' unit' ,
1514+ \ ' value' ,
1515+ \ ' enum' ,
1516+ \ ' keyword' ,
1517+ \ ' snippet' ,
1518+ \ ' color' ,
1519+ \ ' file' ,
1520+ \ ' reference' ,
1521+ \ ' folder' ,
1522+ \ ' enummember' ,
1523+ \ ' constant' ,
1524+ \ ' struct' ,
1525+ \ ' event' ,
1526+ \ ' operator' ,
1527+ \ ' typeparameter' ,
1528+ \ ' const'
1529+ \ ]
1530+ endif
1531+ let l: kinds = s: easycomplete_kinds
15271532 try
15281533 let l: type_fullname = l: kinds [str2nr (a: c_type )]
15291534 let l: type_shortname = l: type_fullname [0 ]
@@ -1539,7 +1544,7 @@ function! easycomplete#util#LspType(c_type)
15391544 let l: type_shortname = l: type_fullname [0 ]
15401545 endif
15411546 if has_key (g: easycomplete_lsp_type_font , l: type_fullname )
1542- let symble = get ( g: easycomplete_lsp_type_font, l: type_fullname)
1547+ let symble = g: easycomplete_lsp_type_font[ l: type_fullname]
15431548 else
15441549 let symble = get (g: easycomplete_lsp_type_font , l: type_shortname , l: type_shortname )
15451550 endif
@@ -1844,14 +1849,16 @@ function! easycomplete#util#GetVimCompletionItems(response, plugin_name)
18441849 let l: expandable = get (l: completion_item , ' insertTextFormat' , 1 ) == 2
18451850 if has_key (l: completion_item , " kind" )
18461851 let l: lsp_type_obj = easycomplete#util#LspType (l: completion_item [" kind" ])
1852+ let l: kind = l: completion_item [" kind" ]
18471853 else
18481854 let l: lsp_type_obj = easycomplete#util#LspType (0 )
1855+ let l: kind = 0
18491856 endif
18501857 let l: menu_str = g: easycomplete_menu_abbr ? " [" . toupper (a: plugin_name ) ." ]" : l: lsp_type_obj [" fullname" ]
18511858 let l: vim_complete_item = {
1852- \ ' kind' : get ( l: lsp_type_obj, " symble" ) ,
1859+ \ ' kind' : l: lsp_type_obj[ " symble" ] ,
18531860 \ ' dup' : 1 ,
1854- \ ' kind_number' : get ( l: completion_item , ' kind' , 0 ) ,
1861+ \ ' kind_number' : l: kind ,
18551862 \ ' menu' : l: menu_str ,
18561863 \ ' empty' : 1 ,
18571864 \ ' icase' : 1 ,
@@ -1942,7 +1949,11 @@ function! easycomplete#util#GetVimCompletionItems(response, plugin_name)
19421949 else
19431950 let l: vim_complete_item [' abbr' ] = l: completion_item [' label' ]
19441951 endif
1945- let l: t_info = s: NormalizeLspInfo (get (l: completion_item , " documentation" , " " ))
1952+ if has_key (l: completion_item , " documentation" )
1953+ let l: t_info = s: NormalizeLspInfo (l: completion_item [" documentation" ])
1954+ else
1955+ let l: t_info = []
1956+ endif
19461957 if ! empty (get (l: completion_item , " detail" , " " ))
19471958 let l: vim_complete_item [' info' ] = [get (l: completion_item , " detail" , " " )] + l: t_info
19481959 else
@@ -1985,18 +1996,6 @@ function! s:NormalizeLspInfo(info)
19851996 let l: li = split (info, " \n " )
19861997 let l: str = []
19871998
1988- " for item in l:li
1989- " if item ==# ''
1990- " call add(l:str, item)
1991- " else
1992- " if len(l:str) == 0
1993- " call add(l:str, item)
1994- " else
1995- " let l:old = l:str[len(l:str) - 1]
1996- " let l:str[len(l:str) - 1] = l:old . " " . item
1997- " endif
1998- " endif
1999- " endfor
20001999 for item in l: li
20012000 if item == # ' ```' || item = ~ " ^```\[ a-zA-Z0-9]\\ {-}$"
20022001 continue
0 commit comments