All Projects → JetBrains → Resharper Fsharp

JetBrains / Resharper Fsharp

Licence: apache-2.0
F# support in JetBrains Rider

Programming Languages

fsharp
127 projects

Projects that are alternatives of or similar to Resharper Fsharp

Poetry Pycharm Plugin
A PyCharm plugin for poetry
Stars: ✭ 113 (-47.69%)
Mutual labels:  jetbrains, plugin
Nord Jetbrains
An arctic, north-bluish clean and elegant JetBrains IDE UI and editor color theme.
Stars: ✭ 293 (+35.65%)
Mutual labels:  jetbrains, plugin
Envfile
EnvFile 3.0 is a plugin for JetBrains IDEs that allows you to set environment variables for your run configurations from one or multiple files.
Stars: ✭ 293 (+35.65%)
Mutual labels:  jetbrains, plugin
Resharper Unity
Unity support for both ReSharper and Rider
Stars: ✭ 953 (+341.2%)
Mutual labels:  jetbrains, plugin
A File Icon Idea
Atom File Icons plugin for IntelliJ IDEA products
Stars: ✭ 90 (-58.33%)
Mutual labels:  jetbrains, plugin
Multihighlight
Jetbrains IDE plugin: highlight identifiers with custom colors 🖌💡
Stars: ✭ 65 (-69.91%)
Mutual labels:  jetbrains, plugin
Runconfigurationasaction
Provides a way to use IntelliJ run configurations as buttons
Stars: ✭ 17 (-92.13%)
Mutual labels:  jetbrains, plugin
Resharper Cyclomatic Complexity
ReSharper plugin to measure cyclomatic complexity as you type
Stars: ✭ 107 (-50.46%)
Mutual labels:  jetbrains, plugin
Resharper Angularjs
ReSharper plugin for AngularJS support
Stars: ✭ 135 (-37.5%)
Mutual labels:  jetbrains, plugin
Vue Editor Js
editor.js for Vue users
Stars: ✭ 205 (-5.09%)
Mutual labels:  plugin
Pisces
♓️ Fish shell plugin that helps you to work with paired symbols in the command line
Stars: ✭ 210 (-2.78%)
Mutual labels:  plugin
Wechatplugin Macos
No description or website provided.
Stars: ✭ 13,280 (+6048.15%)
Mutual labels:  plugin
Prise
A .NET Plugin Framework.
Stars: ✭ 207 (-4.17%)
Mutual labels:  plugin
Prettier Plugin Sort Imports
A prettier plugin to sort imports in typescript and javascript files by the provided RegEx order.
Stars: ✭ 205 (-5.09%)
Mutual labels:  plugin
Plugins
Plugins for Flutter maintained by the Flutter team
Stars: ✭ 14,956 (+6824.07%)
Mutual labels:  plugin
Mosquitto Go Auth
Auth plugin for mosquitto.
Stars: ✭ 212 (-1.85%)
Mutual labels:  plugin
Casbin Authz Plugin
Docker Authorization Plugin based on Casbin
Stars: ✭ 204 (-5.56%)
Mutual labels:  plugin
Flutter statusbarcolor
A package can help you to change your flutter app's statusbar's color or navigationbar's color programmatically.
Stars: ✭ 203 (-6.02%)
Mutual labels:  plugin
Blenderseed
appleseed plugin for Blender
Stars: ✭ 214 (-0.93%)
Mutual labels:  plugin
Idangr
Use angr in the IDA Pro debugger generating a state from the current debug session
Stars: ✭ 214 (-0.93%)
Mutual labels:  plugin

F# language support in JetBrains Rider

JetBrains official project Join the chat at https://gitter.im/JetBrains/resharper-fsharp build-test

F# support in Rider is implemented as a plugin made of two major components:

  • ReSharper.Host plugin (referred to as the backend) that adds F# support to ReSharper and is implemented in ReSharper.FSharp solution. ReSharper.Host is a modification of ReSharper used as a language service that the IntelliJ Platform interacts with. The backend is written in F# and C#.
  • IntelliJ Platform plugin for Rider (referred to as the frontend) that defines F# as a new IntelliJ Platform language but delegates most of the work to the backend. This part also adds F# Interactive support. The frontend is written in Kotlin and Java.

F# support in Rider makes use of open source software, most notably FSharp.Compiler.Service and Fantomas.

Building the plugin

Requirements

Optional

Building the plugin and launching Rider in a sandbox

  1. Install SDK and prepare backend plugin build using Gradle

    • if using IntelliJ IDEA:

      Open the rider-fsharp project in IntelliJ IDEA. When suggested to import Gradle projects, accept the suggestion: Gradle will download Rider SDK and set up all necessary dependencies. rider-fsharp uses the gradle-intellij-plugin Gradle plugin that downloads the IntelliJ Platform SDK, packs the F# plugin and installs it into a sandboxed IDE or its test shell, which allows testing the plugin in a separate environment.

      Open the Gradle tool window in IntelliJ IDEA (View | Tool Windows | Gradle), and execute the rider-fsharp/prepare task.

    • if using Gradle command line:

      $ cd ./rider-fsharp
      $ ./gradlew prepare
      
  2. Open ReSharper.FSharp.sln solution and build using the Debug configuration. The output assemblies are later copied to the frontend plugin directories by Gradle. (If you're seeing build errors in Rider, choose File | Settings | Build, Execution, Deployment | Toolset and Build, and in the Use MSBuild version drop-down, make sure that Rider uses MSBuild shipped with .NET Core SDK.)

  3. Launch Rider with the plugin installed

    • if using IntelliJ IDEA:

      Open the Gradle tool window in IntelliJ IDEA (View | Tool Windows | Gradle), and execute the intellij/runIde task. This will build the frontend, install the plugin to a sandbox, and launch Rider with the plugin.

    • if using Gradle command line:

      $ ./gradlew runIde
      

Installing to an existing Rider instance

  1. Build the Debug configuration in ReSharper.FSharp.sln.
  2. Execute the buildPlugin Gradle task.
  3. Install the plugin (rider-fsharp/build/distributions/*.zip) to your Rider installation from disk.

Contributing

We welcome contributions that address any F# plugin issues that are open in Rider's issue tracker. Some of these issues are marked as Up for grabs: we expect issues tagged this way to be easier addressed by external contributors as they are unlikely to require any changes outside the F# plugin. Note that some issues are marked as third-party problems, and addressing them requires fixes from FCS or other projects that this plugin depends on.

If you are willing to work on an issue, please leave a comment under the issue. Doing this will make sure that the team doesn't start working on the same issue, and help you get any necessary assistance.

New code is usually written in F#, except for the FSharp.Psi project that is written in C#.

As soon as you are done with changes in your fork, please open a pull request for review.

Note that the public CI server is not set up at this point but it's going to be available shortly.

We suggest that you read docs on the two SDKs that this plugin uses:

Development notes

The main development branch is changed on each release (i.e. net212 correspond to 2021.2 development cycle), and builds from this branch are bundled with nightly Rider builds available via JetBrains Toolbox App.

By default, the project depends on nightly SDK builds, but a specific SDK version can be referenced in rider-fsharp/build.gradle if necessary.

Gradle downloads a newer SDK from time to time. To force an update, run the prepare --refresh-dependencies Gradle task.

To debug the backend, attach debugger to the ReSharper.Host process launched via the runIde Gradle task. To debug the frontend, start the runIde task in Debug mode.

Rider's JVM-based frontend and .NET-based backend communicate using RdProtocol with APIs available on both sides. For backend-frontend communication in plugins, RdProtocol should be used as well. Protocol model is defined in this file.

Running backend tests is not yet possible on macOS and Linux.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].