@@ -3,7 +3,8 @@ namespace Ionide.VSCode.FSharp
3
3
open Fable.Core
4
4
open Fable.Core .JsInterop
5
5
open Fable.Import
6
- open Fable.Import .vscode
6
+ open Fable.Import .VSCode
7
+ open Fable.Import .VSCode .Vscode
7
8
open global.Node
8
9
open Ionide.VSCode .Helpers
9
10
open DTO
@@ -48,8 +49,8 @@ module LaunchJsonVersion2 =
48
49
49
50
let assertVersion2 ( cfg : WorkspaceConfiguration ) =
50
51
promise {
51
- do ! cfg.update( " version" , " 0.2.0" , false )
52
- do ! cfg.update( " configurations" , ResizeArray< obj>(), false )
52
+ do ! cfg.update( " version" , Some ( box " 0.2.0" ), U2.Case2 false )
53
+ do ! cfg.update( " configurations" , Some ( box ( ResizeArray< obj>())), U2.Case2 false )
53
54
}
54
55
55
56
module Debugger =
@@ -60,15 +61,15 @@ module Debugger =
60
61
let launcher = Project.getLauncherWithShell project
61
62
match launcher with
62
63
| None ->
63
- window.showWarningMessage " Can't start project"
64
+ window.showWarningMessage( " Can't start project" , null )
64
65
|> ignore
65
66
| Some l ->
66
67
let! terminal = l " "
67
68
terminal.show()
68
69
}
69
70
70
71
let setProgramPath project ( cfg : LaunchJsonVersion2.RequestLaunch ) =
71
- let relativeOutPath = node.path.relative( workspace.rootPath, project.Output) .Replace( " \\ " , " /" )
72
+ let relativeOutPath = node.path.relative( workspace.rootPath.Value , project.Output) .Replace( " \\ " , " /" )
72
73
let programPath = sprintf " ${workspaceRoot}/%s " relativeOutPath
73
74
74
75
// WORKAROUND the project.Output is the obj assembly, instead of bin assembly
@@ -87,16 +88,18 @@ module Debugger =
87
88
let cfg = LaunchJsonVersion2.createRequestLaunch ()
88
89
match debuggerRuntime project with
89
90
| None ->
90
- window.showWarningMessage " Can't start debugger"
91
+ window.showWarningMessage( " Can't start debugger" , null )
91
92
|> ignore
92
93
| Some rntm ->
93
94
cfg |> setProgramPath project
94
95
cfg?`` type `` <- rntm
95
96
cfg?preLaunchTask <- None
96
97
cfg?args <- args
97
98
98
- let folder = workspace.workspaceFolders.[ 0 ]
99
- let! _ = debug.startDebugging( folder, unbox cfg)
99
+ let debugConfiguration = cfg |> box |> unbox
100
+
101
+ let folder = workspace.workspaceFolders.Value.[ 0 ]
102
+ let! _ = debug.startDebugging( Some folder, U2.Case2 debugConfiguration)
100
103
return ()
101
104
}
102
105
@@ -107,21 +110,21 @@ module Debugger =
107
110
let cfg = LaunchJsonVersion2.createRequestLaunch ()
108
111
match debuggerRuntime project with
109
112
| None ->
110
- window.showWarningMessage " Can't start debugger"
113
+ window.showWarningMessage( " Can't start debugger" , null )
111
114
|> ignore
112
115
| Some rntm ->
113
116
cfg |> setProgramPath project
114
117
cfg?`` type `` <- rntm
115
118
cfg?preLaunchTask <- None
119
+ let debugConfiguration = cfg |> box |> unbox
116
120
117
- let folder = workspace.workspaceFolders.[ 0 ]
121
+ let folder = workspace.workspaceFolders.Value . [0 ]
118
122
let! msbuildExit = MSBuild.buildProjectPath " Build" project
119
123
match msbuildExit.Code with
120
124
| Some code when code <> 0 ->
121
125
return ! Promise.reject ( sprintf " msbuild 'Build' failed with exit code %i " code)
122
126
| _ ->
123
- // let! res = vscode.commands.executeCommand("vscode.startDebug", cfg)
124
- let! res = debug.startDebugging( folder, unbox cfg)
127
+ let! res = debug.startDebugging( Some folder, U2.Case2 debugConfiguration)
125
128
return ()
126
129
}
127
130
@@ -130,7 +133,7 @@ module Debugger =
130
133
131
134
let setDefaultProject ( project : Project ) =
132
135
startup <- Some project
133
- context |> Option.iter ( fun c -> c.workspaceState.update( " defaultProject" , project) |> ignore )
136
+ context |> Option.iter ( fun c -> c.workspaceState.update( " defaultProject" , Some ( box project) ) |> ignore )
134
137
135
138
let chooseDefaultProject () =
136
139
promise {
@@ -181,9 +184,9 @@ module Debugger =
181
184
182
185
183
186
let activate ( c : ExtensionContext ) =
184
- commands.registerCommand( " fsharp.runDefaultProject" , ( buildAndRunDefault) |> objfy2 ) |> c.subscriptions.Add
185
- commands.registerCommand( " fsharp.debugDefaultProject" , ( buildAndDebugDefault) |> objfy2 ) |> c.subscriptions.Add
186
- commands.registerCommand( " fsharp.chooseDefaultProject" , ( chooseDefaultProject) |> objfy2 ) |> c.subscriptions.Add
187
+ commands.registerCommand( " fsharp.runDefaultProject" , ( buildAndRunDefault) |> objfy2 ) |> c.Subscribe
188
+ commands.registerCommand( " fsharp.debugDefaultProject" , ( buildAndDebugDefault) |> objfy2 ) |> c.Subscribe
189
+ commands.registerCommand( " fsharp.chooseDefaultProject" , ( chooseDefaultProject) |> objfy2 ) |> c.Subscribe
187
190
188
191
context <- Some c
189
192
startup <- c.workspaceState.get< Project> " defaultProject"
0 commit comments