All Projects β†’ bryphe β†’ merlin-language-server

bryphe / merlin-language-server

Licence: MIT license
Minimal cross-platform LSP wrapper for merlin

Programming Languages

ocaml
1615 projects
typescript
32286 projects

Projects that are alternatives of or similar to merlin-language-server

ltex-ls
LTeX Language Server: LSP language server for LanguageTool πŸ”βœ”οΈ with support for LaTeX πŸŽ“, Markdown πŸ“, and others
Stars: ✭ 182 (+550%)
Mutual labels:  lsp, lsp-server
glsp-examples
Example diagram editors built with Eclipse GLSP
Stars: ✭ 28 (+0%)
Mutual labels:  lsp, lsp-server
tds-vscode
Totvs Developer Studio for vscode
Stars: ✭ 135 (+382.14%)
Mutual labels:  lsp, lsp-server
ansible-language-server
Ansible Language Server
Stars: ✭ 114 (+307.14%)
Mutual labels:  lsp, lsp-server
glsp-server
Java-based server framework of the graphical language server platform
Stars: ✭ 25 (-10.71%)
Mutual labels:  lsp, lsp-server
camel-language-server
The Apache Camel LSP server implementation
Stars: ✭ 31 (+10.71%)
Mutual labels:  lsp, lsp-server
LspCpp
A Language Server Protocol implementation in C++
Stars: ✭ 40 (+42.86%)
Mutual labels:  lsp, lsp-server
tower-lsp
Language Server Protocol implementation written in Rust
Stars: ✭ 455 (+1525%)
Mutual labels:  lsp
vscode
The Visual Studio Code Extension for the Erlang Language Server
Stars: ✭ 62 (+121.43%)
Mutual labels:  lsp
atom-ide-d
Adds D language support for Atom
Stars: ✭ 33 (+17.86%)
Mutual labels:  lsp
groovy-language-server
A language server for Groovy
Stars: ✭ 132 (+371.43%)
Mutual labels:  lsp
typescript-language-server
TypeScript & JavaScript Language Server
Stars: ✭ 1,118 (+3892.86%)
Mutual labels:  lsp
Spyglass
Development tools for vanilla Minecraft: Java Edition data pack developers.
Stars: ✭ 163 (+482.14%)
Mutual labels:  lsp
navigator.lua
Source code analysis & navigation plugin for Neovim. Navigate codes like a breeze🎐. Exploring LSP and 🌲Treesitter symbols a piece of 🍰. Take control like a boss 🦍.
Stars: ✭ 781 (+2689.29%)
Mutual labels:  lsp
coc-elixir
Elixir language server extension based on elixir-ls for coc.nvim
Stars: ✭ 150 (+435.71%)
Mutual labels:  lsp
csharp-language-server
Roslyn-based LSP language server for C#
Stars: ✭ 155 (+453.57%)
Mutual labels:  lsp-server
neovimfiles
My Neovim configuration written in Lua
Stars: ✭ 52 (+85.71%)
Mutual labels:  lsp
nvim-lsp-ts-utils
Utilities to improve the TypeScript development experience for Neovim's built-in LSP client.
Stars: ✭ 437 (+1460.71%)
Mutual labels:  lsp
spacemacs.d
rich Clojure & LSP config for Spacemacs
Stars: ✭ 102 (+264.29%)
Mutual labels:  lsp
dotfiles
Current dotfiles and scripts
Stars: ✭ 35 (+25%)
Mutual labels:  lsp

Build Status

merlin-language-server

Simple LSP protocol wrapper for merlin, written in reason

⚠️ Alpha quality

Overview

merlin-language-server is a thin wrapper over the excellent merlin tooling - implementing the LSP protocol on-top of merlin's protocol.

As with ocaml-language-server, this is not intended as a replacement for any existing Reason / OCaml tooling, but to make it more accessible across editors.

Why?

There are already two excellent language server implementations - reason-language-server and ocaml-language-server - why another one?

The current language-server landspace could be summarized with this table:

Language Server Uses merlin Implemented in reason Supports Windows
ocaml-language-server βœ… ❌ ❌ (1)
reason-language-server ❌ βœ… ❌ (2)
merlin-language-server βœ… βœ… βœ…

NOTE (1): I believe ocaml-language-server may support Windows, but I was not able to get it working.

NOTE (2): reason-language-server mentions Windows support as a goal, but again, it did not work for me. I contributed several fixes towards this (PRs #36, #130, #199), but there is still significant investment required to get support on parity with merlin on Windows.

The primary issue for me being that there was not a language server implementation that worked well for me on Windows. It turns out that merlin works great on Windows - so having a native-reason LSP implementation that uses merlin is a natural choice.

In the future, perhaps we could integrate this more fully into merlin at some point, or incorporate merlin as a library that we call directly.

Building

Prerequisites

  • You will need esy to build - npm install -g esy
  • For running tests, you will need node.

Build

  • git clone https://github.com/bryphe/merlin-language-server
  • esy install
  • esy build

Tests

  • Unit tests: esy x TestRunner.exe
  • E2E tests:
    • cd test-e2e
    • npm install
    • npm test

Roadmap

  • Distribution
    • First-class Oni integration
    • VSCode Plugin
    • NPM package with pre-built binaries
  • Features
    • Text synchronization
      • textDocument/didOpen
      • textDocument/didChange
      • Full document sync
      • Incremental document sync
    • Language Features
      • completion
      • hover
      • definition
      • implementation
      • references
      • signatureHelp
      • codeAction?
      • codeLens
      • formatting
      • rangeFormatting
      • onTypeFormatting

Contributions

Contributions & PRs are welcome! Please ensure that test coverage is added for any new functionality - either in the form of unit tests or E2E tests.

License

MIT License

Copyright 2018 Bryan Phelps

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].