Skip to content

Commit

Permalink
chore(ctx): reload clangd when compile_commands.json changed
Browse files Browse the repository at this point in the history
  • Loading branch information
fannheyward committed May 28, 2020
1 parent bebd730 commit 372af93
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 11 deletions.
12 changes: 11 additions & 1 deletion src/ctx.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { Executable, ExtensionContext, LanguageClient, LanguageClientOptions, ServerOptions, services, StaticFeature, workspace } from 'coc.nvim';
import { Executable, ExtensionContext, extensions, LanguageClient, LanguageClientOptions, ServerOptions, services, StaticFeature, workspace } from 'coc.nvim';
import { basename } from 'path';
import { TextDocumentClientCapabilities } from 'vscode-languageserver-protocol';
import { Config } from './config';
import { SemanticHighlightingFeature } from './semantic-highlighting';
Expand Down Expand Up @@ -71,4 +72,13 @@ export class Ctx {

this.client = client;
}

watch(url: string) {
const msg = `${basename(url)} has changed, reload clangd now?`;
workspace.showPrompt(msg).then(async (prompt) => {
if (prompt) {
await extensions.reloadExtension('coc-clangd');
}
});
}
}
4 changes: 2 additions & 2 deletions src/file_status.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ export class FileStatus implements Disposable {

private statuses = new Map<string, any>();

onFileUpdated(fileStatus: any) {
this.statuses.set(fileStatus.uri, fileStatus);
onFileUpdated(status: any) {
this.statuses.set(status.uri, status);
this.updateStatus();
}

Expand Down
21 changes: 13 additions & 8 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,29 +28,34 @@ export async function activate(context: ExtensionContext): Promise<void> {
return;
}

const status = new FileStatus();
const fileStatus = new FileStatus();
const fileWatcher = workspace.createFileSystemWatcher('**/{compile_commands.json,compile_flags.txt,.clang-tidy}');
fileWatcher.onDidChange((e) => ctx.watch(e.fsPath));
fileWatcher.onDidCreate((e) => ctx.watch(e.fsPath));

context.subscriptions.push(
status,
fileWatcher,
fileStatus,

commands.registerCommand('clangd.switchSourceHeader', cmds.switchSourceHeader(ctx)),
commands.registerCommand('clangd.symbolInfo', cmds.symbolInfo(ctx)),

ctx.client!.onDidChangeState((e) => {
if (e.newState === State.Running) {
ctx.client?.onNotification('textDocument/clangd.fileStatus', (fileStatus) => {
status.onFileUpdated(fileStatus);
ctx.client?.onNotification('textDocument/clangd.fileStatus', (status) => {
status.onFileUpdated(status);
});
} else if (e.newState === State.Stopped) {
status.clear();
fileStatus.clear();
}
}),

workspace.onDidOpenTextDocument(() => {
status.updateStatus();
fileStatus.updateStatus();
})
);

ctx.client?.onNotification('textDocument/clangd.fileStatus', (fileStatus) => {
status.onFileUpdated(fileStatus);
ctx.client?.onNotification('textDocument/clangd.fileStatus', (status) => {
fileStatus.onFileUpdated(status);
});
}

0 comments on commit 372af93

Please sign in to comment.