Skip to content

Commit

Permalink
Enable the SemanticTokensFeature by default
Browse files Browse the repository at this point in the history
This is covered under vscode's "editor.semanticHighlighting.enabled"
setting plus the user has to have a theme that has opted into highlighting.

Bumps required vscode stable to 1.44
  • Loading branch information
kjeremy committed Apr 8, 2020
1 parent 779555c commit 6f0f86d
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 18 deletions.
7 changes: 1 addition & 6 deletions editors/code/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
"Programming Languages"
],
"engines": {
"vscode": "^1.43.0"
"vscode": "^1.44.0"
},
"enableProposedApi": true,
"scripts": {
Expand Down Expand Up @@ -342,11 +342,6 @@
"default": true,
"description": "Show function name and docs in parameter hints"
},
"rust-analyzer.highlighting.semanticTokens": {
"type": "boolean",
"default": false,
"description": "Use proposed semantic tokens API for syntax highlighting"
},
"rust-analyzer.updates.channel": {
"type": "string",
"enum": [
Expand Down
16 changes: 6 additions & 10 deletions editors/code/src/client.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import * as lc from 'vscode-languageclient';
import * as vscode from 'vscode';

import { Config } from './config';
import { CallHierarchyFeature } from 'vscode-languageclient/lib/callHierarchy.proposed';
import { SemanticTokensFeature, DocumentSemanticsTokensSignature } from 'vscode-languageclient/lib/semanticTokens.proposed';

export async function createClient(config: Config, serverPath: string, cwd: string): Promise<lc.LanguageClient> {
export async function createClient(serverPath: string, cwd: string): Promise<lc.LanguageClient> {
// '.' Is the fallback if no folder is open
// TODO?: Workspace folders support Uri's (eg: file://test.txt).
// It might be a good idea to test if the uri points to a file.
Expand Down Expand Up @@ -73,15 +72,12 @@ export async function createClient(config: Config, serverPath: string, cwd: stri
};

// To turn on all proposed features use: res.registerProposedFeatures();
// Here we want to just enable CallHierarchyFeature since it is available on stable.
// Note that while the CallHierarchyFeature is stable the LSP protocol is not.
// Here we want to enable CallHierarchyFeature and SemanticTokensFeature
// since they are available on stable.
// Note that while these features are stable in vscode their LSP protocol
// implementations are still in the "proposed" category for 3.16.
res.registerFeature(new CallHierarchyFeature(res));

if (config.package.enableProposedApi) {
if (config.highlightingSemanticTokens) {
res.registerFeature(new SemanticTokensFeature(res));
}
}
res.registerFeature(new SemanticTokensFeature(res));

return res;
}
1 change: 0 additions & 1 deletion editors/code/src/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,6 @@ export class Config {
get serverPath() { return this.cfg.get<null | string>("serverPath")!; }
get channel() { return this.cfg.get<UpdatesChannel>("updates.channel")!; }
get askBeforeDownload() { return this.cfg.get<boolean>("updates.askBeforeDownload")!; }
get highlightingSemanticTokens() { return this.cfg.get<boolean>("highlighting.semanticTokens")!; }
get traceExtension() { return this.cfg.get<boolean>("trace.extension")!; }

get inlayHints() {
Expand Down
2 changes: 1 addition & 1 deletion editors/code/src/ctx.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ export class Ctx {
serverPath: string,
cwd: string,
): Promise<Ctx> {
const client = await createClient(config, serverPath, cwd);
const client = await createClient(serverPath, cwd);
const res = new Ctx(config, extCtx, client, serverPath);
res.pushCleanup(client.start());
await client.onReady();
Expand Down

0 comments on commit 6f0f86d

Please sign in to comment.