Skip to content

Commit 104a1c7

Browse files
authored
Merge pull request #558 from hasufell/improve
Improve
2 parents 1d1a579 + 04a5938 commit 104a1c7

File tree

2 files changed

+11
-16
lines changed

2 files changed

+11
-16
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: 10 additions & 15 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
@@ -550,15 +553,7 @@ async function getLatestToolFromGHCup(context: ExtensionContext, logger: Logger,
550553
);
551554
const latestInstalled = installedVersions.split(/\r?\n/).pop();
552555
if (latestInstalled) {
553-
const latestInstalledVersion = latestInstalled.split(/\s+/)[1];
554-
555-
const bin = await callGHCup(context, logger, ['whereis', tool, `${latestInstalledVersion}`], undefined, false);
556-
const ver = await callAsync(`${bin}`, ['--numeric-version'], logger, undefined, undefined, false);
557-
if (ver) {
558-
return ver;
559-
} else {
560-
throw new Error(`Could not figure out version of ${bin}`);
561-
}
556+
return latestInstalled.split(/\s+/)[1];
562557
}
563558

564559
return getLatestAvailableToolFromGHCup(context, logger, tool);

0 commit comments

Comments
 (0)