Skip to content

Commit a31573b

Browse files
Merge pull request #95 from ionide/hackForge
Forge changes
2 parents aef3ac0 + bc0500f commit a31573b

17 files changed

+208
-171
lines changed

build.fsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,6 @@ Target "CopyForge" (fun _ ->
102102
CleanDir releaseBinForge
103103

104104
!! (forgeBin </> "Forge.exe" )
105-
++ (forgeBin </> "Mono.Posix.dll")
106105
|> CopyFiles releaseBinForge
107106
)
108107

paket.dependencies

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
source https://nuget.org/api/v2
22

33
git https://github.com/ionide/ionide-vscode-helpers.git master build:"build.cmd", OS: windows
4-
git https://github.com/ionide/FsAutoComplete.git projectSymbols build:"build.cmd LocalRelease", OS: windows
4+
git https://github.com/ionide/FsAutoComplete.git master build:"build.cmd LocalRelease", OS: windows
55
git https://github.com/fsprojects/Forge.git master build:"build.cmd", OS: windows
66

77
git https://github.com/ionide/ionide-vscode-helpers.git master build:"build.sh", OS: mono
8-
git https://github.com/ionide/FsAutoComplete.git projectSymbols build:"build.sh LocalRelease", OS: mono
8+
git https://github.com/ionide/FsAutoComplete.git master build:"build.sh LocalRelease", OS: mono
99
git https://github.com/fsprojects/Forge.git master build:"build.sh", OS: mono
1010

1111
git [email protected]:ionide/ionide-fsgrammar.git

paket.lock

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
NUGET
22
remote: https://www.nuget.org/api/v2
3-
FAKE (4.29.2)
3+
FAKE (4.31.1)
44
Microsoft.Bcl (1.1.10) - framework: net10, net11, net20, net30, net35, net40, net40-full
55
Microsoft.Bcl.Build (>= 1.0.14)
66
Microsoft.Bcl.Build (1.0.21) - import_targets: false, framework: net10, net11, net20, net30, net35, net40, net40-full
@@ -21,24 +21,24 @@ GIT
2121
build: build.sh
2222
os: mono
2323
remote: https://github.com/ionide/FsAutoComplete.git
24-
(810be5ada43482572575c16ba78f53e687ce8339)
24+
(e8d2a88369ef166ded48d3a52cf2a0cff02b0372)
2525
build: build.cmd LocalRelease
2626
os: windows
27-
(810be5ada43482572575c16ba78f53e687ce8339)
27+
(e8d2a88369ef166ded48d3a52cf2a0cff02b0372)
2828
build: build.sh LocalRelease
2929
os: mono
3030
remote: https://github.com/fsprojects/Forge.git
31-
(5a71633e50eec713046fdc2d5b2ba607f6debc12)
31+
(22d2225486c5a50924442379e8a8b55145e2624d)
3232
build: build.cmd
3333
os: windows
34-
(5a71633e50eec713046fdc2d5b2ba607f6debc12)
34+
(22d2225486c5a50924442379e8a8b55145e2624d)
3535
build: build.sh
3636
os: mono
3737
remote: [email protected]:ionide/ionide-fsgrammar.git
3838
(c8fea8dc0a224a2ceb2371bc5e941157aca3de9e)
3939
GITHUB
4040
remote: fsharp/FAKE
41-
modules/Octokit/Octokit.fsx (c56456abac6b744c3bb95b217687db19fd19b367)
41+
modules/Octokit/Octokit.fsx (40dd0ff66fc379474450f93fd1ba545f6cf6c121)
4242
Octokit (>= 0.20)
4343
remote: Ionide/ionide-vscode-helpers
4444
Fable.Import.Axios.fs (777815f9c3f9b3925e42c6394c7f1f5fac124d6a)

release/.vscodeignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
.vscode/**
2+
templates

release/package.json

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,18 @@
153153
"command": "fsharp.MoveFileDown",
154154
"key": "ctrl+shift+down"
155155
}
156-
]
156+
],
157+
"configuration": {
158+
"type": "object",
159+
"title": "FAKE configuration",
160+
"properties": {
161+
"FSharp.automaticProjectModification": {
162+
"type": "boolean",
163+
"default": false,
164+
"description": "Automatically shows FAKE output panel"
165+
}
166+
}
167+
}
157168
},
158169
"activationEvents": [
159170
"onLanguage:fsharp",

src/Components/Autocomplete.fs

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,18 @@ module Autocomplete =
2828
| _ -> 0
2929

3030
let mapCompletion (doc : TextDocument) (pos : Position) (o : CompletionResult) =
31-
o.Data |> Array.map (fun c ->
32-
let range = doc.getWordRangeAtPosition pos
33-
let length = if JS.isDefined range then range.``end``.character - range.start.character else 0.
34-
let result = createEmpty<CompletionItem>
35-
result.kind <- c.GlyphChar |> convertToInt |> unbox
36-
result.label <- c.Name
37-
result.insertText <- c.ReplacementText
38-
result)
39-
|> ResizeArray
31+
if o |> unbox <> null then
32+
o.Data |> Array.map (fun c ->
33+
let range = doc.getWordRangeAtPosition pos
34+
let length = if JS.isDefined range then range.``end``.character - range.start.character else 0.
35+
let result = createEmpty<CompletionItem>
36+
result.kind <- c.GlyphChar |> convertToInt |> unbox
37+
result.label <- c.Name
38+
result.insertText <- c.ReplacementText
39+
result)
40+
|> ResizeArray
41+
else
42+
ResizeArray ()
4043

4144
let mapHelptext (sug : CompletionItem) (o : HelptextResult) =
4245
let res = (o.Data.Overloads |> Array.fold (fun acc n -> (n |> Array.toList) @ acc ) []).Head

src/Components/Definition.fs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,20 @@ module Definition =
1212
let private createProvider () =
1313

1414
let mapResult (doc : TextDocument) (pos : Position) (o : FindDeclarationResult) : Definition =
15-
let loc = createEmpty<Location>
16-
let range = doc.getWordRangeAtPosition pos
17-
let length = range.``end``.character - range.start.character
18-
loc.uri <- Uri.file o.Data.File
19-
loc.range <- Range(float o.Data.Line - 1., float o.Data.Column - 1., float o.Data.Line - 1., float o.Data.Column + length - 1.)
20-
loc |> Case1
15+
if o |> unbox <> null then
16+
let loc = createEmpty<Location>
17+
let range = doc.getWordRangeAtPosition pos
18+
let length = range.``end``.character - range.start.character
19+
loc.uri <- Uri.file o.Data.File
20+
loc.range <- Range(float o.Data.Line - 1., float o.Data.Column - 1., float o.Data.Line - 1., float o.Data.Column + length - 1.)
21+
loc |> Case1
22+
else
23+
createEmpty<Location> |> Case1
2124

22-
2325

2426
{ new DefinitionProvider
2527
with
26-
member this.provideDefinition(doc, pos, ct) =
28+
member this.provideDefinition(doc, pos, ct) =
2729
promise {
2830
let! res = LanguageService.findDeclaration (doc.fileName) (int pos.line + 1) (int pos.character + 1)
2931
return mapResult doc pos res

src/Components/Forge.fs

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,7 @@ module Forge =
5656
sprintf "move file -n %s -d" editor.document.fileName |> spawnForge |> ignore
5757

5858
let refreshTemplates () =
59-
let cp = "refresh" |> spawnForge
60-
cp.on("exit", (fun _ -> window.showInformationMessage "Templates refreshed") |> unbox )
59+
"refresh" |> spawnForge |> ignore
6160

6261
let addCurrentFileToProject () =
6362
let editor = vscode.window.activeTextEditor
@@ -139,8 +138,27 @@ module Forge =
139138

140139
let newProject () =
141140
promise {
142-
let! lst = "list templates" |> execForge
143-
let n = handleForgeList lst
141+
//let! lst = "list templates" |> execForge
142+
// let n = handleForgeList lst
143+
let n =
144+
[
145+
"classlib"
146+
"console"
147+
"fslabbasic"
148+
"fslabjournal"
149+
"pcl259"
150+
"suave"
151+
"windows"
152+
"fsunit"
153+
"aspwebapi2"
154+
"websharperspa"
155+
"websharperserverclient"
156+
"websharpersuave"
157+
"servicefabrichost"
158+
"servicefabricsuavestateless"
159+
] |> ResizeArray
160+
161+
144162
if n.Count <> 0 then
145163
let! template = window.showQuickPick ( n |> Case1)
146164
if JS.isDefined template then
@@ -165,8 +183,9 @@ module Forge =
165183

166184
let activate disposables =
167185
let watcher = workspace.createFileSystemWatcher ("**/*.fs")
168-
watcher.onDidCreate $ (onFsFileCreateHandler, null, disposables) |> ignore
169-
watcher.onDidDelete $ (onFsFileRemovedHandler, null, disposables) |> ignore
186+
let cfg = workspace.getConfiguration ()
187+
if cfg.get("FSharp.automaticProjectModification", false) then watcher.onDidCreate $ (onFsFileCreateHandler, null, disposables) |> ignore
188+
if cfg.get("FSharp.automaticProjectModification", false) then watcher.onDidDelete $ (onFsFileRemovedHandler, null, disposables) |> ignore
170189
commands.registerCommand("fsharp.MoveFileUp", moveFileUp |> unbox) |> ignore
171190
commands.registerCommand("fsharp.MoveFileDown", moveFileDown |> unbox) |> ignore
172191
commands.registerCommand("fsharp.NewProject", newProject |> unbox) |> ignore
@@ -177,4 +196,6 @@ module Forge =
177196
commands.registerCommand("fsharp.RemoveProjectReference", removeProjectReference |> unbox) |> ignore
178197
commands.registerCommand("fsharp.AddReference", addReference |> unbox) |> ignore
179198
commands.registerCommand("fsharp.RemoveReference", removeReference |> unbox) |> ignore
199+
refreshTemplates () |> ignore
200+
180201
()

src/Components/Highlights.fs

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,20 @@ module Highlights =
1313
let private createProvider () =
1414

1515
let mapResult (o : SymbolUseResult) =
16-
o.Data.Uses |> Array.map (fun d ->
17-
let res = createEmpty<DocumentHighlight>
18-
res.range <- Range(float d.StartLine - 1., float d.StartColumn - 1., float d.EndLine - 1., float d.EndColumn - 1.)
19-
res.kind <- (0 |> unbox)
20-
res )
21-
|> ResizeArray
22-
23-
24-
{ new DocumentHighlightProvider
16+
if o |> unbox <> null then
17+
o.Data.Uses |> Array.map (fun d ->
18+
let res = createEmpty<DocumentHighlight>
19+
res.range <- Range(float d.StartLine - 1., float d.StartColumn - 1., float d.EndLine - 1., float d.EndColumn - 1.)
20+
res.kind <- (0 |> unbox)
21+
res )
22+
|> ResizeArray
23+
else
24+
ResizeArray ()
25+
26+
27+
{ new DocumentHighlightProvider
2528
with
26-
member this.provideDocumentHighlights(doc, pos, ct) =
29+
member this.provideDocumentHighlights(doc, pos, ct) =
2730
promise {
2831
let! res = LanguageService.symbolUse (doc.fileName) (int pos.line + 1) (int pos.character + 1)
2932
return mapResult res

src/Components/Linter.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,11 @@ module Linter =
8686
window.onDidChangeActiveTextEditor $ (handlerOpen, (), disposables) |> ignore
8787

8888

89-
parseProject() |> ignore
9089
match window.visibleTextEditors |> Seq.toList with
9190
| [] -> Promise.lift (null |> unbox)
9291
| [x] -> parseFile x.document
9392
| x::tail ->
9493
tail
9594
|> List.fold (fun acc e -> acc |> Promise.bind(fun _ -> parseFile e.document ) )
9695
(parseFile x.document )
96+
|> Promise.bind (parseProject)

0 commit comments

Comments
 (0)