How to contribute
Please take a moment to review this document in order to make the contribution process easy and effective for everyone involved!
Using the issue tracker
Use the issues tracker for:
Personal support request should be discussed on F# Software Foundation Slack.
A bug is either a demonstrable problem that is caused in Ionide failing to provide the expected feature or indicate missing, unclear, or misleading documentation. Good bug reports are extremely helpful - thank you!
Guidelines for bug reports:
Use the GitHub issue search — check if the issue has already been reported.
Check if the issue has been fixed — try to reproduce it using the
masterbranch in the repository.
Isolate and report the problem — ideally create a reduced test case.
Please try to be as detailed as possible in your report. Include information about
your Operating System, as well as your
mono \ .NET Framework), and F# versions. Please provide steps to
reproduce the issue as well as the outcome you were expecting! All these details
will help developers to fix any potential bugs.
Ionide provide an easy way to gather all this information:
Ctrl+Shift+P > F#: Get info for diagnostics, this will open a file with something like:
Steps to reproduce
- Operating system: Darwin
- Arch: x64
- VSCode: 1.23.1
- Runtime: netcore
- Dotnet version: 2.1.103
Now, you can copy/paste this file in the issue on github and fill the gaps. You can let the lines started by
<!-- they will not be displayed by github.
Feature requests are welcome and should be discussed on issue tracker. But take a moment to find out whether your idea fits with the scope and aims of the project. It's up to you to make a strong case to convince the community of the merits of this feature. Please provide as much detail and context as possible.
Good pull requests - patches, improvements, new features - are a fantastic help. They should remain focused in scope and avoid containing unrelated commits.
IMPORTANT: By submitting a patch, you agree that your work will be licensed under the license used by the project.
If you have any large pull request in mind (e.g. implementing features, refactoring code, etc), please ask first otherwise you risk spending a lot of time working on something that the project's developers might not want to merge into the project.
Please adhere to the coding conventions in the project (indentation, accurate comments, etc.).
How to build and test a local version of Ionide
Fork, from the github interface https://github.com/ionide/ionide-vscode-fsharp
- if you don't use a certificate for committing to github:
git clone https://github.com/YOUR_GITHUB_USER/ionide-vscode-fsharp.git
- if you use a certificate for github authentication:
git clone email@example.com:YOUR_GITHUB_USER/ionide-vscode-fsharp.git
First time build:
cd ionide-vscode-fsharp ./build.sh # or build.cmd if your OS is Windows (might need ./build Build here)
dotnet restore gives the error
The tools version "14.0" is unrecognized, then you need to install [msbuildtools2015][msbuildtools2015]
dotnet restore gives the error
error MSB4126: The specified solution configuration "Debug|x64" is invalid, there's a good chance you have the
Platform environment variable set to "x64". Unset the variable and try the restore command again.
./build.sh gives errors, you may need to run
./build.sh -t Build one time.
Everything is done via
build -t Builddoes a full-build, including package installation and copying some necessary files.
It should always be done at least once after any clone/pull.
- If a git dependency fails to build paket won't re-do it you can run their build scripts manually:
fake run build.fsx
Launching the extension
Once the initial build on the command line is completed, you should use vscode itself to build and launch the development extension. To do this,
- open the project folder in vscode
- Use one of the following two configurations which will build the project and launch a new vscode instance running your vscode extension
- In VSCode two configurations are possible to run:
Build and Launch Extension
- Start the
Watchtask and when a build is done start
These two options can be reached in VsCode in the side bar (look for a Beetle symbol), or by typing
control-P Debug <space> and then selecting either
Build and Launch or
The new extension window will appear with window title
Extension development host
Working with FSAC
- Open FSAC from a new instance of VSCode from the directory:
- Build the FSAC solution and copy the dll output from the output log, it should be something like:
netcoreapp2.1may be a different version.
- In the instance of VSCode that you have Ionide open, open settings (
Ctrl ,), and find the section
FSharp > Fsac: Net Core Dll Pathand paste the output you copied from step 3.
- Now find the section
FSharp > Fsac: Attach Debuggerand check the check box.
- Close settings
- Goto the debug section and hit
Build and Launch extension, after a while another instance of VSCode will start, you can use this instance to test Ionide/FsAutoComplete.
- To attach the debugger go back to the instance of VSCode where you open FSAC and goto the debug section, hit
.NET Core Attachin the list shown you should see all the dotnet processes running, choose one that has
fsautocomplete.dll --mode lsp --attachdebuggershown.
- Now you will be able to use breakpoints in the FsAutocomplete solution to debug the instance from step 6.
There is a video here that goes through the steps and fixing a bug in a little more detail.
Remove the settings from steps 3 and 4 to go back to FSAC bundled in Ionide extension.