Skip to content

Commit 89c4c64

Browse files
Only highlight holes in Effekt files (#86)
* Only highlight holes in Effekt files * Extract language id literals to constants
1 parent 59ba403 commit 89c4c64

1 file changed

Lines changed: 17 additions & 6 deletions

File tree

src/extension.ts

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ import * as net from 'net';
1818
let client: EffektLanguageClient;
1919
let effektManager: EffektManager;
2020
const outputChannel = vscode.window.createOutputChannel('Effekt Extension');
21+
export const LANG_ID_EFFEKT = 'effekt';
22+
export const LANG_ID_LITERATE_EFFEKT = 'literate effekt';
2123

2224
function logMessage(level: 'INFO' | 'ERROR', message: string) {
2325
outputChannel.appendLine(
@@ -191,8 +193,8 @@ async function startEffektLanguageServer(context: vscode.ExtensionContext) {
191193
const clientOptions: LanguageClientOptions = {
192194
initializationOptions: vscode.workspace.getConfiguration('effekt'),
193195
documentSelector: [
194-
{ scheme: 'file', language: 'effekt' },
195-
{ scheme: 'file', language: 'literate effekt' },
196+
{ scheme: 'file', language: LANG_ID_EFFEKT },
197+
{ scheme: 'file', language: LANG_ID_LITERATE_EFFEKT },
196198
],
197199
diagnosticCollectionName: 'effekt',
198200
synchronize: {
@@ -225,11 +227,11 @@ async function startEffektLanguageServer(context: vscode.ExtensionContext) {
225227
function registerCodeLensProviders(context: vscode.ExtensionContext) {
226228
context.subscriptions.push(
227229
vscode.languages.registerCodeLensProvider(
228-
{ language: 'effekt', scheme: 'file' },
230+
{ language: LANG_ID_EFFEKT, scheme: 'file' },
229231
new EffektRunCodeLensProvider(),
230232
),
231233
vscode.languages.registerCodeLensProvider(
232-
{ language: 'literate effekt', scheme: 'file' },
234+
{ language: LANG_ID_LITERATE_EFFEKT, scheme: 'file' },
233235
new EffektRunCodeLensProvider(),
234236
),
235237
);
@@ -306,12 +308,12 @@ function initializeHolesView(context: vscode.ExtensionContext) {
306308

307309
function registerInlayProvider() {
308310
vscode.languages.registerInlayHintsProvider(
309-
{ scheme: 'file', language: 'effekt' },
311+
{ scheme: 'file', language: LANG_ID_EFFEKT },
310312
new InlayHintProvider(client),
311313
);
312314

313315
vscode.languages.registerInlayHintsProvider(
314-
{ scheme: 'file', language: 'literate effekt' },
316+
{ scheme: 'file', language: LANG_ID_LITERATE_EFFEKT },
315317
new InlayHintProvider(client),
316318
);
317319
}
@@ -346,6 +348,15 @@ function initializeHoleDecorations(context: vscode.ExtensionContext) {
346348
return;
347349
}
348350

351+
// Only highlight holes in Effekt files
352+
if (
353+
![LANG_ID_EFFEKT, LANG_ID_LITERATE_EFFEKT].includes(
354+
editor.document.languageId,
355+
)
356+
) {
357+
return;
358+
}
359+
349360
const text = editor.document.getText();
350361
const positionAt = editor.document.positionAt;
351362

0 commit comments

Comments
 (0)