Leverage complete_add()

I was moving in the direction of using an asynchronous callback before
deciding it didn't actually add much.  But getting rid of that map()
string still feels like an improvement.
This commit is contained in:
Tim Pope
2022-06-15 16:20:02 -04:00
parent f8b70f5ef3
commit dcff4d605c

View File

@@ -249,6 +249,21 @@ endfunction
" Section: Issues " Section: Issues
function! s:CompleteAddIssues(response, prefix) abort
for issue in get(a:response, 'items', [])
call complete_add({
\ 'word': a:prefix . issue.number,
\ 'abbr': '#' . issue.number,
\ 'menu': issue.title,
\ 'info': substitute(empty(issue.body) ? "\n" : issue.body,'\r','','g'),
\ })
endfor
if !has_key(a:response, 'message')
return
endif
throw 'rhubarb: ' . response.message
endfunction
let s:reference = '\<\%(\c\%(clos\|resolv\|referenc\)e[sd]\=\|\cfix\%(e[sd]\)\=\)\>' let s:reference = '\<\%(\c\%(clos\|resolv\|referenc\)e[sd]\=\|\cfix\%(e[sd]\)\=\)\>'
function! rhubarb#Complete(findstart, base) abort function! rhubarb#Complete(findstart, base) abort
if a:findstart if a:findstart
@@ -266,16 +281,10 @@ function! rhubarb#Complete(findstart, base) abort
let prefix = s:repo_homepage().'/issues/' let prefix = s:repo_homepage().'/issues/'
let query = a:base let query = a:base
endif endif
let response = rhubarb#RepoSearch('issues', 'state:open '.query) let response = rhubarb#RepoSearch('issues', 'state:open ' . query)
if has_key(response, 'message') call s:CompleteAddIssues(response, prefix)
call s:throw(response.message)
else
let issues = get(response, 'items', [])
endif
return map(issues, '{"word": prefix.v:val.number, "abbr": "#".v:val.number, "menu": v:val.title, "info": substitute(empty(v:val.body) ? "\n" : v:val.body,"\\r","","g")}')
endif endif
catch /^rhubarb:.*is not a GitHub repository/ catch /^rhubarb:.*is not a GitHub repository/
return []
catch /^\%(fugitive\|rhubarb\):/ catch /^\%(fugitive\|rhubarb\):/
echoerr v:errmsg echoerr v:errmsg
endtry endtry