UNPKG

coc-ccls

Version:

C/C++/ObjC language server supporting cross references, hierarchies, completion and semantic highlighting

43 lines (34 loc) 1.22 kB
import { commands } from "coc.nvim"; import * as path from "path"; import * as util from "util"; import { Disposable } from "vscode-languageserver-protocol"; import Uri from "vscode-uri"; export function resourcePath(...paths: string[]): string { return path.join(__dirname, "..", "resources", ...paths); } export function unwrap<T>(value: T|undefined, tip = "?"): T { if (value === undefined) throw new Error("undefined " + tip); return value; } export function disposeAll(items: Disposable[]): any[] { return items.reverse().map((d) => d.dispose()); } export function normalizeUri(u: string): string { return Uri.parse(u).toString(true); } export function setContext(name: string, value: any): void { commands.executeCommand("setContext", name, value); } export function dedent(templateStrings: TemplateStringsArray, ...args: any[]) { const strings = templateStrings.map((value) => value.replace(/\r?\n[ ]*$/, '\n')); let result = strings[0]; for (let i = 0; i < args.length; i++) { result += args[i] + strings[i + 1]; } return result; } const setTimeoutPromised = util.promisify(setTimeout); export async function wait(millisecs: number) { return setTimeoutPromised(millisecs); }