Rls: Support another editor

Created on 29 Sep 2016  路  17Comments  路  Source: rust-lang/rls

Should be non-LS protocol based. My vote is for Sublime, but could also try Atom, Vim, or Emacs.

Necessary to ensure the RLS is editor-independent.

Most helpful comment

In GNOME Builder we've landed support for most of the Language Server Protocol features of rustls. There are a few things to finish up, but I expect to release our next stable release in the coming week with a Rust Language Server preview.

We'll continue working on features in the mean time to fill out the missing bits we don't yet support.

https://git.gnome.org/browse/gnome-builder/tree/plugins/rust-langserv/

All 17 comments

Agreed, this should block the alpha release imho

Sublime would be better considering there's already a rust-lang maintained project https://github.com/rust-lang/sublime-rust
I maintain the sublime-rust package and am currently in the process of tidying it up and we have some features people are adding in

@Jayflux - do you know if there's a Sublime plugin for the Language Server Protocol (https://github.com/Microsoft/language-server-protocol/blob/master/protocol.md) by chance? I'm in the process of moving the RLS over to it, and for editors that support it, it should greatly speed up getting Rust support to them.

Why non-LS protocol, @nrc? It seems a bit nicer for everyone if all the "RLS" plugins were actually just LS plugins - one protocol for RLS to support, one interface for editors to support. I've already started on an emacs LS plugin :)

@cmr in case there is some editor that refuses to ever support LS for whatever reason, then it would be good to know we can still use the RLS. To be clear, I think we should still use the LS protocol, just that we don't use native LS support in the editor, so emacs + LS plugin would satisfy that.

Ah, I see now.

In practice, _hopefully_ when someone writes a plugin that supports the LS protocol, everyone else writing a language plugin that uses it can share that code for a given editor.

I'm the de-facto maintainer of racer.el for Emacs, and I'd be very interested in building supporting for RLS in an Emacs package :)

Do we have a GitHub organisation for editor packages? I know rust-mode.el is an official Rust project.

@Jayflux - do you know if there's a Sublime plugin for the Language Server Protocol (https://github.com/Microsoft/language-server-protocol/blob/master/protocol.md) by chance? I'm in the process of moving the RLS over to it, and for editors that support it, it should greatly speed up getting Rust support to them.

I don't think so, ill have to investigate

@Jayflux - do you know if there's a Sublime plugin for the Language Server Protocol (https://github.com/Microsoft/language-server-protocol/blob/master/protocol.md) by chance? I'm in the process of moving the RLS over to it, and for editors that support it, it should greatly speed up getting Rust support to them.

There's a Sublime plugin for OmniSharp [https://github.com/OmniSharp/omnisharp-sublime], so the lion's share of work for supporting the protocol on Sublime should already be done.
I imagine a setup similar to what sublimelinter has would be useful in the longterm; that is, the base plugin + plumbing to support different languages.

I've done some work on compiler integration for the Coq language for Vim, and I'd be interested in working on the (Neo?)Vim plugin. I'm not quite sure where to start though.

I suppose I could try and change out the typescript specific stuff from https://github.com/clausreinke/typescript-tools.vim and see what happens.

Thanks @owlbit, ill have a play. Im still new to the whole LS stuff so ill be doing a lot of learning

@Wilfred

Do we have a GitHub organisation for editor packages? I know rust-mode.el is an official Rust project.

Existing 'official' editor plugins are in the rust-lang org: https://github.com/rust-lang. A new editor plugin would probably start off in the nursery.

My first guess would be that the sublime and vim plugins could share some python code for handling the Language Server Protocol. This could expose an server interface for sending and receiving commands, then each editor could bind those commands one their own.

I'm started something quick here, any thoughts?

https://gist.github.com/tbelaire/94ace69a6c7536f68e6495a9305e2ed8

In GNOME Builder we've landed support for most of the Language Server Protocol features of rustls. There are a few things to finish up, but I expect to release our next stable release in the coming week with a Rust Language Server preview.

We'll continue working on features in the mean time to fill out the missing bits we don't yet support.

https://git.gnome.org/browse/gnome-builder/tree/plugins/rust-langserv/

Closing as complete as @chergert 's work checks this box for us.

As we get to the beta, we'll probably want to expand to even more, making sure we have good emacs, eclipse, vim support (and likely others)

+1 for Sublime support

Was this page helpful?
0 / 5 - 0 ratings