import { ExtensionContext, languages, workspace, commands } from 'coc.nvim' import { BrowserCompletionProvider } from './completion' import { fsStat, fsMkdir } from './util' import Server from './server' export async function activate(context: ExtensionContext): Promise { const { subscriptions, storagePath } = context const stat = await fsStat(storagePath) if (!(stat?.isDirectory())) { await fsMkdir(storagePath) } const config = workspace.getConfiguration('browser') const server = new Server( config.get('port'), storagePath ) await server.start() subscriptions.push(server) const browserCompletionProvider = new BrowserCompletionProvider( server, config.get>('patterns') ) subscriptions.push( commands.registerCommand( 'browser.clearCache', async () => { await browserCompletionProvider.clearCache() } ) ) subscriptions.push( languages.registerCompletionItemProvider( 'coc-browser', config.get('shortcut'), null, browserCompletionProvider, [], config.get('priority'), [], ) ) }