@@ -30,7 +30,7 @@ export { IEnvVars };
3030export type ReleaseMetadata = Map < string , Map < string , Map < string , string [ ] > > > ;
3131
3232type 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
3636const 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