diff --git a/package.json b/package.json index 2e1e5fc..71ee2cd 100644 --- a/package.json +++ b/package.json @@ -20,14 +20,16 @@ "C++", "clang", "clangd", - "LLVM" + "LLVM", + "HLSL" ], "activationEvents": [ "onLanguage:c", "onLanguage:cpp", "onLanguage:cuda-cpp", "onLanguage:objective-c", - "onLanguage:objective-cpp" + "onLanguage:objective-cpp", + "onLanguage:hlsl" ], "main": "./out/bundle", "scripts": { @@ -194,6 +196,11 @@ "type": "boolean", "default": true, "description": "Enable clangd language server features" + }, + "clangd.enableHLSL": { + "type": "boolean", + "default": false, + "description": "Enable experimental HLSL Support." } } }, diff --git a/src/clangd-context.ts b/src/clangd-context.ts index 4e51365..7c68185 100644 --- a/src/clangd-context.ts +++ b/src/clangd-context.ts @@ -21,8 +21,18 @@ export const clangdDocumentSelector = [ {scheme: 'file', language: 'objective-cpp'}, ]; +function getDocumentSelector() +{ + var documentSelector = clangdDocumentSelector; + if (vscode.workspace.getConfiguration('clangd').get('enableHLSL')) + documentSelector.push({scheme: 'file', language: 'hlsl'}); + return documentSelector; +} + export function isClangdDocument(document: vscode.TextDocument) { - return vscode.languages.match(clangdDocumentSelector, document); + const documentSelector = getDocumentSelector(); + + return vscode.languages.match(documentSelector, document); } class ClangdLanguageClient extends vscodelc.LanguageClient { @@ -104,7 +114,7 @@ export class ClangdContext implements vscode.Disposable { const clientOptions: vscodelc.LanguageClientOptions = { // Register the server for c-family and cuda files. - documentSelector: clangdDocumentSelector, + documentSelector: getDocumentSelector(), initializationOptions: { clangdFileStatus: true, fallbackFlags: await config.get('fallbackFlags')