Skip to content

Commit f05a466

Browse files
committed
性能优化
1 parent a8e28a2 commit f05a466

File tree

1 file changed

+47
-48
lines changed

1 file changed

+47
-48
lines changed

autoload/easycomplete/util.vim

Lines changed: 47 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -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
" }
14941498
function! 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

Comments
 (0)