Skip to content

Commit 5784b25

Browse files
committed
Improve plugin initialization
1 parent 1d1a579 commit 5784b25

File tree

2 files changed

+10
-7
lines changed

2 files changed

+10
-7
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@
166166
"haskell.manageHLS": {
167167
"scope": "resource",
168168
"type": "string",
169-
"default": null,
169+
"default": "PATH",
170170
"description": "How to manage/find HLS installations.",
171171
"enum": [
172172
"GHCup",

src/hlsBinaries.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export { IEnvVars };
3030
export type ReleaseMetadata = Map<string, Map<string, Map<string, string[]>>>;
3131

3232
type ManageHLS = 'GHCup' | 'PATH';
33-
let manageHLS = workspace.getConfiguration('haskell').get('manageHLS') as ManageHLS | null;
33+
let manageHLS = workspace.getConfiguration('haskell').get('manageHLS') as ManageHLS;
3434

3535
// On Windows the executable needs to be stored somewhere with an .exe extension
3636
const exeExt = process.platform === 'win32' ? '.exe' : '';
@@ -239,12 +239,14 @@ export async function findHaskellLanguageServer(
239239
fs.mkdirSync(storagePath);
240240
}
241241

242-
if (!manageHLS) {
243-
// plugin needs initialization
242+
243+
// first plugin initialization
244+
if (manageHLS !== 'GHCup' && !context.globalState.get("pluginInitialized") as boolean | null) {
244245
const promptMessage = 'How do you want the extension to manage/discover HLS and the relevant toolchain?';
245246

246-
const decision =
247-
(await window.showInformationMessage(promptMessage, 'Automatically via GHCup', 'Manually via PATH')) || null;
247+
const popup = window.showInformationMessage(promptMessage, 'Automatically via GHCup', 'Manually via PATH');
248+
249+
const decision = (await popup) || null;
248250
if (decision === 'Automatically via GHCup') {
249251
manageHLS = 'GHCup';
250252
} else if (decision === 'Manually via PATH') {
@@ -256,9 +258,10 @@ export async function findHaskellLanguageServer(
256258
manageHLS = 'PATH';
257259
}
258260
workspace.getConfiguration('haskell').update('manageHLS', manageHLS, ConfigurationTarget.Global);
261+
context.globalState.update("pluginInitialized", true);
259262
}
260263

261-
if (manageHLS === 'PATH' || manageHLS === null) {
264+
if (manageHLS === 'PATH') {
262265
return findHLSinPATH(context, logger, folder);
263266
} else {
264267
// we manage HLS, make sure ghcup is installed/available

0 commit comments

Comments
 (0)