diff --git a/.gitignore b/.gitignore index f0094c069..57c00c713 100644 --- a/.gitignore +++ b/.gitignore @@ -22,21 +22,8 @@ lib/NUnit* lib/FsUnit FSharp.AutoComplete/test/unit/build -FSharp.AutoComplete/packages +packages +.paket/paket.exe -# Vim - -vim/packages - -# Emacs -*.elc -emacs/deps -emacs/tmp - -# Sublime Text -*.sublime-workspace - -sublimetext/FSharp/fsac/fsac/*.* -sublimetext/plugin_dev.json .DS_Store diff --git a/.paket/paket.bootstrapper.exe b/.paket/paket.bootstrapper.exe new file mode 100644 index 000000000..1f862639d Binary files /dev/null and b/.paket/paket.bootstrapper.exe differ diff --git a/.paket/paket.targets b/.paket/paket.targets new file mode 100644 index 000000000..22c9f0a87 --- /dev/null +++ b/.paket/paket.targets @@ -0,0 +1,38 @@ + + + + + true + + true + $(MSBuildThisFileDirectory) + $(MSBuildThisFileDirectory)..\ + + + + $(PaketToolsPath)paket.exe + $(PaketToolsPath)paket.bootstrapper.exe + "$(PaketExePath)" + mono --runtime=v4.0.30319 $(PaketExePath) + "$(PaketBootStrapperExePath)" + mono --runtime=v4.0.30319 $(PaketBootStrapperExePath) + + $(MSBuildProjectDirectory)\paket.references + $(MSBuildProjectFullPath).paket.references + $(PaketCommand) restore --references-files "$(PaketReferences)" + $(PaketBootStrapperCommand) + + RestorePackages; $(BuildDependsOn); + + + + + + + + + + + + + diff --git a/.travis.yml b/.travis.yml index 3e4df23bb..ca3aa99e8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,10 +11,9 @@ before_install: - sudo apt-get update -qq install: - - sudo apt-get install -yq emacs24 emacs24-el emacs24-common-non-dfsg - sudo apt-get install -yq mono-complete nuget - sudo apt-get install -yq fsharp script: - - FSharp.AutoComplete/fake Test + - ./build.sh Test diff --git a/FSharp.AutoComplete/FSharp.AutoComplete.sln b/FSharp.AutoComplete.sln similarity index 85% rename from FSharp.AutoComplete/FSharp.AutoComplete.sln rename to FSharp.AutoComplete.sln index 2b24b3c86..3b095224d 100644 --- a/FSharp.AutoComplete/FSharp.AutoComplete.sln +++ b/FSharp.AutoComplete.sln @@ -1,11 +1,16 @@ - + Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2013 VisualStudioVersion = 12.0.30501.0 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.CompilerBinding", "..\FSharp.CompilerBinding\FSharp.CompilerBinding.fsproj", "{88F6940F-D300-474C-B2A7-E2ECD5B04B57}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".paket", ".paket", "{1BE8AF57-B314-4C92-82A9-64CD9B7A4990}" + ProjectSection(SolutionItems) = preProject + paket.dependencies = paket.dependencies + EndProjectSection EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.AutoComplete", "FSharp.AutoComplete.fsproj", "{B6AB4EF3-8F60-41A1-AB0C-851A6DEB169E}" +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.CompilerBinding", "FSharp.CompilerBinding\FSharp.CompilerBinding.fsproj", "{88F6940F-D300-474C-B2A7-E2ECD5B04B57}" +EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.AutoComplete", "FSharp.AutoComplete\FSharp.AutoComplete.fsproj", "{B6AB4EF3-8F60-41A1-AB0C-851A6DEB169E}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/FSharp.AutoComplete/.nuget/NuGet.targets b/FSharp.AutoComplete/.nuget/NuGet.targets deleted file mode 100644 index af2e5c9a2..000000000 --- a/FSharp.AutoComplete/.nuget/NuGet.targets +++ /dev/null @@ -1,136 +0,0 @@ - - - - $(MSBuildProjectDirectory)\..\ - - - false - - - false - - - true - - - false - - - - - - - - - - - $([System.IO.Path]::Combine($(SolutionDir), "..", "lib", "nuget")) - $([System.IO.Path]::Combine($(ProjectDir), "packages.config")) - - - - - $(SolutionDir)..\lib\nuget - packages.config - - - - - $(NuGetToolsPath)\NuGet.exe - @(PackageSource) - - "$(NuGetExePath)" - mono --runtime=v4.0.30319 $(NuGetExePath) - - $(TargetDir.Trim('\\')) - - -RequireConsent - -NonInteractive - - "$(SolutionDir) " - "$(SolutionDir)" - - - $(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir) - $(NuGetCommand) pack "$(ProjectPath)" -Properties "Configuration=$(Configuration);Platform=$(Platform)" $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols - - - - RestorePackages; - $(BuildDependsOn); - - - - - $(BuildDependsOn); - BuildPackage; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/FSharp.AutoComplete/FSharp.AutoComplete.fsproj b/FSharp.AutoComplete/FSharp.AutoComplete.fsproj index d8570cbe3..33b524e81 100644 --- a/FSharp.AutoComplete/FSharp.AutoComplete.fsproj +++ b/FSharp.AutoComplete/FSharp.AutoComplete.fsproj @@ -10,10 +10,9 @@ FSharp.AutoComplete fsautocomplete v4.5 - .\ + ..\ FSharp.InteractiveAutocomplete False - true 4.3.0.0 11 @@ -57,13 +56,12 @@ --> - - + @@ -72,21 +70,33 @@ - ..\lib\ndesk-options\NDesk.Options.dll + ..\packages\NDesk.Options\lib\NDesk.Options.dll + True - ..\lib\newtonsoft.json\Newtonsoft.Json.dll + ..\packages\Newtonsoft.Json\lib\net45\Newtonsoft.Json.dll + True + ..\packages\FSharp.Core\lib\net40\FSharp.Core.dll + True + + + ..\packages\FsUnit\Lib\Net40\FsUnit.NUnit.dll + True + + + ..\packages\FSharp.Compiler.Service\lib\net45\FSharp.Compiler.Service.dll + True + + + ..\packages\NUnit\lib\nunit.framework.dll True {88F6940F-D300-474C-B2A7-E2ECD5B04B57} FSharp.CompilerBinding - - $(SolutionDir)\packages\FSharp.Compiler.Service.0.0.85\lib\net45\FSharp.Compiler.Service.dll - - \ No newline at end of file + + diff --git a/FSharp.AutoComplete/FSharp.AutoComplete.fsproj.paket.references b/FSharp.AutoComplete/FSharp.AutoComplete.fsproj.paket.references new file mode 100644 index 000000000..32c9914cb --- /dev/null +++ b/FSharp.AutoComplete/FSharp.AutoComplete.fsproj.paket.references @@ -0,0 +1,6 @@ +FSharp.Compiler.Service +FSUnit +NUnit +NUnit.Runners +NDesk.Options +Newtonsoft.Json \ No newline at end of file diff --git a/FSharp.AutoComplete/Options.fs b/FSharp.AutoComplete/Options.fs index c8d9fc5f5..09bd6ab5d 100644 --- a/FSharp.AutoComplete/Options.fs +++ b/FSharp.AutoComplete/Options.fs @@ -6,7 +6,7 @@ namespace FSharp.InteractiveAutocomplete open System module Version = - let string = "FSharp.AutoComplete 0.13.3" + let string = "FSharp.AutoComplete 0.14.0" module Options = diff --git a/FSharp.AutoComplete/README.md b/FSharp.AutoComplete/README.md index 82787605f..9b9c0d3bc 100644 --- a/FSharp.AutoComplete/README.md +++ b/FSharp.AutoComplete/README.md @@ -58,7 +58,3 @@ The structured data returned is able to be richer. Note for example that the out For further insight into the communication protocol, have a look over the integration tests, which have examples of all the features. Each folder contains one or more `*Runner.fsx` files which specify a sequence of commands to send, and `*.txt` or `*.json` files, which contain the output. -### Scripts and projects - -Currently, intellisense can be offered for any number of scripts and one project at any one time. Intellisense requests are honoured for any script (`.fsx`) file and any `.fs` file for which a project containing it has most recently been loaded using the `project` command. It is an aim to lift this limitation. - diff --git a/FSharp.AutoComplete/fake b/FSharp.AutoComplete/fake deleted file mode 100755 index a83e8c2b5..000000000 --- a/FSharp.AutoComplete/fake +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash - -cd `dirname $0` - -FAKE="packages/FAKE/tools/FAKE.exe" - -if [[ ! -e ~/.config/.mono/certs ]]; -then - mozroots --import --sync --quiet -fi - -if [[ ! -e $FAKE ]]; -then - mono ../lib/nuget/NuGet.exe "Install" "FAKE" "-OutputDirectory" "packages" "-ExcludeVersion" -fi - -mono $FAKE "$@" - diff --git a/FSharp.AutoComplete/fake.cmd b/FSharp.AutoComplete/fake.cmd deleted file mode 100644 index e4e9621ee..000000000 --- a/FSharp.AutoComplete/fake.cmd +++ /dev/null @@ -1,18 +0,0 @@ -@echo off - -pushd %~dp0 - -IF EXIST packages\FAKE\tools\Fake.exe GOTO FAKEINSTALLED - -"..\lib\nuget\NuGet.exe" "install" "FAKE" "-OutputDirectory" "packages" "-ExcludeVersion" "-Prerelease" - -:FAKEINSTALLED - -SET TARGET="All" - -IF NOT [%1]==[] (set TARGET="%1") - -"packages\FAKE\tools\Fake.exe" "build.fsx" "target=%TARGET%" - -popd - diff --git a/FSharp.AutoComplete/packages.config b/FSharp.AutoComplete/packages.config deleted file mode 100644 index 7c773fb9c..000000000 --- a/FSharp.AutoComplete/packages.config +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/FSharp.CompilerBinding/FSharp.CompilerBinding.fsproj b/FSharp.CompilerBinding/FSharp.CompilerBinding.fsproj index b06b5b5da..e37a93e08 100644 --- a/FSharp.CompilerBinding/FSharp.CompilerBinding.fsproj +++ b/FSharp.CompilerBinding/FSharp.CompilerBinding.fsproj @@ -11,8 +11,7 @@ False FSharp.CompilerBinding v4.5 - ..\FSharp.AutoComplete\ - true + ..\ 4.3.0.0 11 @@ -58,22 +57,25 @@ - + + ..\packages\FSharp.Core\net40\FSharp.Core.dll True - ..\lib\mono.cecil\Mono.Cecil.dll + ..\packages\Mono.Cecil\lib\net45\Mono.Cecil.dll + True - $(SolutionDir)\packages\FSharp.Compiler.Service.0.0.85\lib\net45\FSharp.Compiler.Service.dll + ..\packages\FSharp.Compiler.Service\lib\net45\FSharp.Compiler.Service.dll + True - + diff --git a/FSharp.CompilerBinding/packages.config b/FSharp.CompilerBinding/packages.config deleted file mode 100644 index 4fc28f8b2..000000000 --- a/FSharp.CompilerBinding/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/FSharp.CompilerBinding/paket.references b/FSharp.CompilerBinding/paket.references new file mode 100644 index 000000000..ea534d5c8 --- /dev/null +++ b/FSharp.CompilerBinding/paket.references @@ -0,0 +1 @@ +FSharp.Compiler.Service \ No newline at end of file diff --git a/appveyor.yml b/appveyor.yml index 7d3169e7b..a67fc21ee 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,12 +1,8 @@ environment: - EMACSBIN: emacs-24.4-bin-i686-mingw32.7z FSharpBinding_BlockingTimeout: 1000 FSharpBinding_MaxTimeout: 10000 matrix: fast_finish: true -install: - - ps: Start-FileDownload "http://downloads.sourceforge.net/project/emacs-bin/releases/$env:EMACSBIN" - - ps: 7z x $env:EMACSBIN -oemacs-local | FIND /V "ing " build_script: - - cmd: FSharp.AutoComplete\fake.cmd Test + - cmd: fake.cmd Test test: off diff --git a/build.cmd b/build.cmd new file mode 100644 index 000000000..03d70ec28 --- /dev/null +++ b/build.cmd @@ -0,0 +1,18 @@ +echo off +cls + +.paket\paket.bootstrapper.exe +if errorlevel 1 ( + exit /b %errorlevel% +) + +.paket\paket.exe restore +if errorlevel 1 ( + exit /b %errorlevel% +) + +IF NOT EXIST build.fsx ( + .paket\paket.exe update + packages\FAKE\tools\FAKE.exe init.fsx +) +packages\FAKE\tools\FAKE.exe build.fsx %* diff --git a/FSharp.AutoComplete/build.fsx b/build.fsx similarity index 53% rename from FSharp.AutoComplete/build.fsx rename to build.fsx index 379bd57f6..664eeddbc 100644 --- a/FSharp.AutoComplete/build.fsx +++ b/build.fsx @@ -5,17 +5,9 @@ open System open System.IO open System.Text.RegularExpressions -Target "RestorePackages" (fun _ -> - "packages.config" - |> RestorePackage (fun p -> - { p with - ToolPath = "../lib/nuget/NuGet.exe" }) - ) - -let buildDir = "./bin/Debug/" -let buildReleaseDir = "./bin/Release/" -let integrationTestDir = "./test/integration/" -let emacsBinDir = "../emacs/bin/" +let buildDir = "./FSharp.AutoComplete/bin/Debug/" +let buildReleaseDir = "./FSharp.AutoComplete/bin/Release/" +let integrationTestDir = "./FSharp.AutoComplete/test/integration/" Target "BuildDebug" (fun _ -> MSBuildDebug buildDir "Build" ["./FSharp.AutoComplete.sln"] @@ -90,85 +82,18 @@ Target "IntegrationTest" (fun _ -> failwithf "Integration tests failed:\n%s" err ) - -Target "BuildEmacs" (fun _ -> - MSBuildDebug emacsBinDir "Build" ["./FSharp.AutoComplete.sln"] - |> Log "Build-Output: " -) - -module Emacs = - let emacsd = "../emacs/" - let srcFiles = !! (emacsd + "*.el") - - let testd = emacsd + "test/" - let utils = !! (testd + "/test-common.el") - - let tmpd = emacsd + "tmp/" - let bind = emacsd + "bin/" - - let exe = - match buildServer with - | AppVeyor -> Path.GetFullPath "../emacs-local/bin/emacs.exe" - | _ -> @"emacs" - - let compileOpts = - [ for f in srcFiles do - yield sprintf """--batch --eval "(package-initialize)" --eval "(add-to-list 'load-path \"%s\")" --eval "(setq byte-compile-error-on-warn t)" -f batch-byte-compile %s""" - ((Path.GetFullPath emacsd).Replace(@"\", @"\\").TrimEnd('\\')) - f ] - - let checkDeclareOpts = - sprintf """--batch --eval "(package-initialize)" --eval "(when (check-declare-directory \"%s\") (kill-emacs 1)))" """ - ((Path.GetFullPath emacsd).Replace(@"\", @"\\").TrimEnd('\\')) - - let makeLoad glob = - [ for f in glob do yield "-l " + f ] - |> String.concat " " - -Target "EmacsTest" (fun _ -> - if not (Directory.Exists (Path.GetFullPath Emacs.tmpd)) then - Directory.CreateDirectory Emacs.tmpd |> ignore - let home = Environment.GetEnvironmentVariable("HOME") - Environment.SetEnvironmentVariable("HOME", Path.GetFullPath Emacs.tmpd) - - let loadFiles = Emacs.makeLoad Emacs.utils - - let tests = - [ yield Emacs.exe, loadFiles + " --batch --eval \"(progn (set-default-coding-systems 'utf-8) (load-packages))\"" - yield Emacs.exe, loadFiles + " --batch -f run-fsharp-unit-tests" - // AppVeyor doesn't currently run the integration tests - if buildServer <> AppVeyor then - yield Emacs.exe, loadFiles + " --batch -f run-fsharp-integration-tests" - yield! [ for opts in Emacs.compileOpts do yield Emacs.exe, opts ] - // AppVeyor also fails to run check-declare-directory - if buildServer <> AppVeyor then - yield Emacs.exe, Emacs.checkDeclareOpts ] - - ProcessTestRunner.RunConsoleTests - (fun p -> { p with WorkingDir = Emacs.emacsd }) - tests - - Environment.SetEnvironmentVariable("HOME", home) -) - Target "Clean" (fun _ -> - CleanDirs [ buildDir; buildReleaseDir; emacsBinDir ] + CleanDirs [ buildDir; buildReleaseDir ] ) Target "Build" id Target "Test" id Target "All" id -"RestorePackages" - ==> "BuildDebug" +"BuildDebug" ==> "Build" ==> "IntegrationTest" -"RestorePackages" - ==> "BuildEmacs" - ==> "EmacsTest" - -"EmacsTest" ==> "Test" "IntegrationTest" ==> "Test" "BuildDebug" ==> "All" diff --git a/build.sh b/build.sh new file mode 100755 index 000000000..4c9d58569 --- /dev/null +++ b/build.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +set -eu +set -o pipefail + +cd `dirname $0` + + +LOADER="" +FSIARGS="" +OS=${OS:-"unknown"} +if test "$OS" != "Windows_NT" +then + LOADER=mono + FSIARGS="-d:MONO" +fi + +"$LOADER" .paket/paket.bootstrapper.exe + +[ ! -e ~/.config/.mono/certs ] && mozroots --import --sync --quiet + +"$LOADER" .paket/paket.exe restore + +"$LOADER" packages/FAKE/tools/FAKE.exe "$@" "$FSIARGS" build.fsx diff --git a/paket.dependencies b/paket.dependencies new file mode 100644 index 000000000..e6ab60763 --- /dev/null +++ b/paket.dependencies @@ -0,0 +1,11 @@ +source https://www.nuget.org/api/v2/ + +nuget FSharp.Compiler.Service 0.0.85 framework: >= net45 +nuget FSUnit 1.3.0.1 framework: >= net40 +nuget Mono.Cecil +nuget NDesk.Options +nuget NUnit 2.6.3 framework: >= net40 +nuget NUnit.Runners 2.6.3 framework: >= net40 +nuget Newtonsoft.Json +nuget FAKE +nuget FSharp.Core 3.0.2 \ No newline at end of file diff --git a/paket.lock b/paket.lock new file mode 100644 index 000000000..2662d1776 --- /dev/null +++ b/paket.lock @@ -0,0 +1,13 @@ +NUGET + remote: https://www.nuget.org/api/v2 + specs: + FAKE (3.31.4) + FSharp.Compiler.Service (0.0.85) - framework: >= net45 + FSharp.Core (3.0.2) + FsUnit (1.3.0.1) - framework: >= net40 + NUnit (>= 2.6.3) + Mono.Cecil (0.9.6.1) + NDesk.Options (0.2.1) + Newtonsoft.Json (6.0.8) + NUnit (2.6.3) - framework: >= net40 + NUnit.Runners (2.6.3) - framework: >= net40