@@ -17,7 +17,7 @@ export async function activate(context: vscode.ExtensionContext) {
17
17
// update config
18
18
vscode . workspace . onDidChangeConfiguration ( e => { config = conf . getConfig ( ) ; } ) ;
19
19
// check stack/cabal project
20
- let hasConf = async ( f : string ) => ( await vscode . workspace . findFiles ( f ) ) . length > 0 ;
20
+ const hasConf = async ( f : string ) => ( await vscode . workspace . findFiles ( f ) ) . length > 0 ;
21
21
let project : conf . ProjectTy = ( await hasConf ( "stack.yaml" ) ) ? "stack" : ( await hasConf ( "*.cabal" ) ? "cabal" : "none" ) ;
22
22
let inproject = project !== "none" ;
23
23
@@ -31,9 +31,15 @@ export async function activate(context: vscode.ExtensionContext) {
31
31
// currently at GHCi
32
32
const term = terminal . flatmap ( option . filterOption ( t => t . name === "GHCi" ) )
33
33
. or ( util . getTermOption ( "GHCi" ) ) . map ( term => ( ) => {
34
- filename
35
- . map ( f => f . split ( "\\" ) . join ( "\\\\" ) ) // windows path may contain backslash
36
- . map ( f => term . sendText ( inproject ? ":r" : ( ":l " + f ) ) ) ;
34
+ if ( inproject ) {
35
+ term . sendText ( ":r" ) ; // reload modules in project
36
+ } else {
37
+ filename
38
+ . map ( f => f . split ( "\\" ) . join ( "\\\\" ) ) // windows path may contain backslash
39
+ . map ( f => ( ) => term . sendText ( ":l " + f ) )
40
+ . orelse ( ( ) => vscode . window . showInformationMessage (
41
+ "Cannot load a non-Haskell file to GHCi" ) ) ( ) ;
42
+ }
37
43
return term ;
38
44
} ) . orelse ( ( ) => {
39
45
let term = vscode . window . createTerminal ( "GHCi" ) ;
@@ -53,7 +59,9 @@ export async function activate(context: vscode.ExtensionContext) {
53
59
. map ( s => ":{\n" + s + "\n:}\n" ) // in case of multi-line selection
54
60
. map ( s => {
55
61
const term = terminal . flatmap ( option . filterOption ( t => t . name === "GHCi" ) )
56
- . or ( util . getTermOption ( "GHCi" ) ) . map ( term => ( ) => term ) . orelse ( ( ) => {
62
+ . or ( util . getTermOption ( "GHCi" ) )
63
+ . map ( term => ( ) => term )
64
+ . orelse ( ( ) => {
57
65
let term = vscode . window . createTerminal ( "GHCi" ) ;
58
66
term . sendText ( config . ghciTool ( project ) ) ; // we're not loading the file here
59
67
return term ;
@@ -88,9 +96,9 @@ export async function activate(context: vscode.ExtensionContext) {
88
96
setupProject ( "Cabal" , config . cabalPath ) ;
89
97
break ;
90
98
case "none" : // default behavior
91
- util . registerPrompt ( context , "runner2.hstest" , "Not in a stack/ cabal project!" ) ;
92
- util . registerPrompt ( context , "runner2.hsbuild" , "Not in a stack/ cabal project!" ) ;
93
- util . registerPrompt ( context , "runner2.hsrun" , "Not in a stack/ cabal project!" ) ;
99
+ util . registerPrompt ( context , "runner2.hstest" , "Not in a stack or cabal project!" ) ;
100
+ util . registerPrompt ( context , "runner2.hsbuild" , "Not in a stack or cabal project!" ) ;
101
+ util . registerPrompt ( context , "runner2.hsrun" , "Not in a stack or cabal project!" ) ;
94
102
break ;
95
103
}
96
104
0 commit comments