mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-10-10 04:44:53 +00:00
[clangd] Add support for vscode extension configuration
Summary: Adds vscode workspace level configuration options for path to clangd binary and its arguments. Contributed by stanionascu! Reviewers: cfe-commits, bkramer, krasimir Reviewed By: krasimir Differential Revision: https://reviews.llvm.org/D31121 llvm-svn: 298696
This commit is contained in:
parent
45bbe0117b
commit
af4adfa3ad
@ -33,5 +33,26 @@
|
||||
"mocha": "^2.3.3",
|
||||
"@types/node": "^6.0.40",
|
||||
"@types/mocha": "^2.2.32"
|
||||
},
|
||||
"contributes": {
|
||||
"configuration": {
|
||||
"type": "object",
|
||||
"title": "clangd configuration",
|
||||
"properties": {
|
||||
"clangd.path": {
|
||||
"type": "string",
|
||||
"default": "clangd",
|
||||
"description": "The path to clangd executable, e.g.: /usr/bin/clangd"
|
||||
},
|
||||
"clangd.arguments": {
|
||||
"type": "array",
|
||||
"default": [],
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": "Arguments for clangd server"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,15 +1,25 @@
|
||||
import * as vscode from 'vscode';
|
||||
import * as vscodelc from 'vscode-languageclient';
|
||||
|
||||
/**
|
||||
* Method to get workspace configuration option
|
||||
* @param option name of the option (e.g. for clangd.path should be path)
|
||||
* @param defaultValue default value to return if option is not set
|
||||
*/
|
||||
function getConfig<T>(option: string, defaultValue?: any) : T {
|
||||
const config = vscode.workspace.getConfiguration('clangd');
|
||||
return config.get<T>(option, defaultValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* this method is called when your extension is activate
|
||||
* your extension is activated the very first time the command is executed
|
||||
*/
|
||||
export function activate(context: vscode.ExtensionContext) {
|
||||
// TODO: make this configurable
|
||||
const clangdPath = '/usr/bin/clangd';
|
||||
const clangdPath = getConfig<string>('path');
|
||||
const clangdArgs = getConfig<string[]>('arguments');
|
||||
|
||||
const serverOptions: vscodelc.ServerOptions = { command: clangdPath };
|
||||
const serverOptions: vscodelc.ServerOptions = { command: clangdPath, args: clangdArgs };
|
||||
|
||||
const clientOptions: vscodelc.LanguageClientOptions = {
|
||||
// Register the server for C/C++ files
|
||||
@ -39,4 +49,4 @@ export function activate(context: vscode.ExtensionContext) {
|
||||
const disposable = clangdClient.start();
|
||||
|
||||
context.subscriptions.push(disposable, vscode.commands.registerCommand('clangd.applyFix', applyTextEdits));
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user