coc-ultisnips
Version:
ultisnips source for coc.nvim
47 lines (43 loc) • 1.18 kB
JavaScript
const {sources, workspace} = require('coc.nvim')
exports.activate = context => {
let {nvim} = workspace
let loadError = false
let source = {
name: 'ultisnips',
triggerCharacters: [],
doComplete: async function () {
let loaded = await nvim.getVar('did_plugin_ultisnips')
if (!loaded) {
if (!loadError) workspace.showMessage('Ultisnips not loaded', 'error')
loadError = true
return
}
let res = await nvim.call('UltiSnips#SnippetsInCurrentScope')
let items = []
if (Array.isArray(res)) {
for (let item of res) {
items.push({
word: item.key,
info: item.description || '',
menu: this.menu,
isSnippet: true
})
}
} else {
for (let key of Object.keys(res)) {
items.push({
word: key,
info: res[key] || '',
menu: this.menu,
isSnippet: true
})
}
}
return {items}
},
onCompleteDone: () => {
nvim.call('UltiSnips#ExpandSnippet', [], true)
}
}
context.subscriptions.push(sources.createSource(source))
}