Skip to content

Commit

Permalink
Clean up initialization options
Browse files Browse the repository at this point in the history
  • Loading branch information
jmbockhorst committed May 13, 2023
1 parent 49e8bd2 commit a6567f7
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 11 deletions.
22 changes: 15 additions & 7 deletions src/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ import {
} from "./providers/diagnostics/elmAnalyseJsonService";
import { ILanguageServer } from "./server";
import { DocumentEvents } from "./util/documentEvents";
import { IClientSettings, Settings } from "./util/settings";
import { Settings } from "./util/settings";
import { TextDocumentEvents } from "./util/textDocumentEvents";
import { IFileSystemHost } from "./types";
import { IFileSystemHost, InitializationOptions } from "./types";
import { URI, Utils } from "vscode-uri";

export function startCommonServer(
Expand All @@ -45,7 +45,18 @@ export function startCommonServer(

connection.onInitialize(
async (params: InitializeParams): Promise<InitializeResult> => {
await Parser.init();
const initializationOptions =
<InitializationOptions>params.initializationOptions ?? {};

const options: object | undefined =
initializationOptions.treeSitterWasmUri
? {
locateFile(): string | undefined {
return initializationOptions.treeSitterWasmUri;
},
}
: undefined;
await Parser.init(options);
const absolute = Path.join(__dirname, "tree-sitter-elm.wasm");
const pathToWasm = Path.relative(process.cwd(), absolute);
connection.console.info(
Expand All @@ -69,16 +80,13 @@ export function startCommonServer(
useValue: new CapabilityCalculator(params.capabilities),
});

const initializationOptions: IClientSettings =
params.initializationOptions ?? {};

container.register("Settings", {
useValue: new Settings(initializationOptions, params.capabilities),
});

const { Server } = await import("./server");

server = new Server(params, fileSystemHost);
server = new Server(params, fileSystemHost, initializationOptions);

initSuccessfull = server.initSuccessfull.valueOf();

Expand Down
6 changes: 2 additions & 4 deletions src/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ import { FindTestsProvider } from "./providers/findTestsProvider";
import { ElmReviewDiagnostics } from "./providers/diagnostics/elmReviewDiagnostics";
import { findElmJsonFiles } from "./node";
import { VirtualFileProvider } from "./providers/virtualFileProvider";
import { IFileSystemHost } from "./types";
import { IFileSystemHost, InitializationOptions } from "./types";

export interface ILanguageServer {
readonly capabilities: InitializeResult;
Expand All @@ -50,11 +50,9 @@ export class Server implements ILanguageServer {
constructor(
private params: InitializeParams,
private fileSystemHost: IFileSystemHost,
initializationOptions: InitializationOptions,
) {
this.connection = container.resolve("Connection");
const initializationOptions = params.initializationOptions as {
elmJsonFiles?: string[];
};

const uri = this.getWorkspaceUri(this.params);

Expand Down
8 changes: 8 additions & 0 deletions src/types.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,15 @@
import { URI } from "vscode-uri";
import { IClientSettings } from "./util/settings";

export interface IFileSystemHost {
readFile(uri: URI): Promise<string>;
readDirectory(uri: URI, include?: string, depth?: number): Promise<URI[]>;
watchFile(uri: URI, callback: () => void): void;
}

export type InitializationOptions = IClientSettings & {
treeSitterWasmUri?: string;

// Needed to support virtual workspaces
elmJsonFiles?: string[];
};

0 comments on commit a6567f7

Please sign in to comment.