FoamScience / foam-language-server

A language server for OpenFOAM case files
25 stars 0 forks source link

I want to contribute, what can I do? #7

Closed FoamScience closed 2 years ago

FoamScience commented 2 years ago

There are a few places where help is needed and much appreciated; This issue lists some:

The parser library

This project uses a Tree-Sitter based parser library to define and (quickly) parse grammar for OpenFOAM files in an error-tolerant manner.

  1. You're encouraged to run testOFFiles against your custom case files and report any failing files (or even significant drops in performance) on that repository.
  2. PRs to improve the grammar and fix bugs are most welcome (It's a mixed C-Javascript project).

The language server

The language server is the core project which provides intelliSense-like features to text editors.

  1. The simplest contribution would be adding common keyword and snippet documentation to foamPlainText.ts and foamMarkdown.ts
  2. This project is written entirely in TypeScript. Please refer to CONTRIBUTING.md for best practices when wanting to PR to this repo.
  3. This project is using jest unit testing framework to write tests for the critical functionalities (currently, only the core language server functionality is tested). You can add (Javascript code) unit tests yourself.
  4. We're running CI for Ubuntu, MacOS and Windows to make sure everything runs smoothly everywhere, but you never know when things will fail. If you experience annoying/strange behavior, please open issues here. The CONTRIBUTING.md file also might help.

The language client for VS-Code

VS-Code does not have generic LSP client extensions, so each server must have a matching client. Note that I don't indent to build an extensive VS-Code extension for OpenFOAM, as all of its features will be implemented on the server side. But, PRs to the client, which provide VS-Code specific functionality are still encouraged.

Language clients for your favorite text editor

Please note that NeoVim is the main text editor we're supporting. But the server will work on all editors which support the language server protocol and implement generic clients. If there is no client for your favorite one, please open an issue.