UNPKG

coc-ccls

Version:

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

59 lines (51 loc) 1.53 kB
import { LanguageClient } from 'vscode-languageclient/lib/main'; import { Position, } from "vscode-languageserver-protocol"; import Uri from "vscode-uri"; import { IHierarchyNode } from '../types'; import { Hierarchy } from './hierarchy'; enum MemberKind { Func = 3, Var = 4, } interface MemberHierarchyNode extends IHierarchyNode { children: MemberHierarchyNode[]; } export class MemberHierarchyProvider extends Hierarchy<MemberHierarchyNode> { protected contextValue: string = 'extension.ccls.memberHierarchyVisible'; constructor( languageClient: LanguageClient ) { super(languageClient, 'ccls.memberHierarchy', 'ccls.closeMemberHierarchy'); } public onTreeItem(ti: TreeItem, element: MemberHierarchyNode) { // } protected async onGetChildren(element: MemberHierarchyNode): Promise<MemberHierarchyNode[]> { const result = await this.languageClient.sendRequest<MemberHierarchyNode>('$ccls/member', { hierarchy: true, id: element.id, kind: MemberKind.Var, levels: 1, qualified: false, }); element.children = result.children; return result.children; } protected async onReveal(uri: Uri, position: Position): Promise<MemberHierarchyNode> { return this.languageClient.sendRequest<MemberHierarchyNode>( '$ccls/member', { hierarchy: true, kind: MemberKind.Var, levels: 2, position, qualified: false, textDocument: { uri: uri.toString(true), }, } ); } }