rls icon indicating copy to clipboard operation
rls copied to clipboard

Tracking issue - support other editors

Open nrc opened this issue 8 years ago • 37 comments

cc #18

  • [X] Emacs
    • https://github.com/emacs-lsp/lsp-mode
    • https://github.com/joaotavora/eglot
  • [X] (Neo)vim (https://github.com/autozimu/LanguageClient-neovim)
  • [x] Eclipse (https://github.com/eclipse/corrosion)
  • [x] Sublime Text
    • https://github.com/rust-lang/rust-enhanced
    • https://github.com/tomv564/LSP
  • [x] Atom (https://github.com/rust-lang/atom-ide-rust)
  • [X] Visual Studio (https://github.com/dgriffen/rls-vs2017)
  • [x] Gnome Builder (https://git.gnome.org/browse/gnome-builder/tree/plugins/rust-langserv/)
  • [ ] Kate (https://github.com/KDE/kate, see https://github.com/rust-lang/rls/issues/1521#issuecomment-520971163)
  • [ ] Xi
    • https://github.com/xi-editor/xi-editor/issues/845
    • https://github.com/xi-editor/xi-editor/issues/659
    • https://github.com/xi-editor/xi-editor/issues/160#issuecomment-294995411

Cloud

  • [X] Theia (based on https://github.com/theia-ide/theia-rust-extension)
    • https://gitpod.io (out of box)
  • [ ] Eclipse Che (https://internals.rust-lang.org/t/introducing-rust-language-server-source-release/4209/24)
  • [ ] Cloud 9 IDE (see https://github.com/rust-lang-nursery/rls/issues/87#issuecomment-333310433)

Check out all issues labelled with 'clients'

nrc avatar Nov 06 '16 21:11 nrc

FYI, for vim/neovim users, one can check https://github.com/autozimu/LanguageClient-neovim. Thanks.

autozimu avatar Feb 11 '17 23:02 autozimu

Don't forget the rust extension for vscode: https://marketplace.visualstudio.com/items?itemName=kalitaalexey.vscode-rust

booyaa avatar Mar 17 '17 10:03 booyaa

I'm working on creating an Atom package using the atom/atom-languageclient package. The package code can be found here: https://github.com/aergonaut/languageserver-rust

Autocomplete, definitions, hover, and lint diagnostics all work currently.

aergonaut avatar May 17 '17 03:05 aergonaut

@aergonaut, I'll definitely be watching yours closely. My visualizer project can do much more in atom than in vscode. I'm looking forward to it!

Nashenas88 avatar May 17 '17 10:05 Nashenas88

@Nashenas88 Major derp on my part, I had an outdated version of RLS installed that had a bug in it making it report paths incorrectly. Updating RLS cleared up the problems I was having with showing lints.

aergonaut avatar May 19 '17 18:05 aergonaut

probably worth tracking these related issues...

#261 - website for configuring RLS with your favourite editor #214 - sublime support #55 - eclipse che support

booyaa avatar Jun 30 '17 16:06 booyaa

Haven't tested this yet, but I've found emacs support: https://github.com/emacs-lsp/lsp-rust

booyaa avatar Jun 30 '17 16:06 booyaa

Haven't tested this yet, but I've found emacs support: https://github.com/emacs-lsp/lsp-rust

According to http://langserver.org/ , https://github.com/emacs-lsp/lsp-mode may be better.

bbigras avatar Jun 30 '17 20:06 bbigras

Haven't tested this yet, but I've found emacs support: https://github.com/emacs-lsp/lsp-rust

According to http://langserver.org/ , https://github.com/emacs-lsp/lsp-mode may be better.

Actually it is the same thing, lsp-mode is like "main function", and lsp-rust is "subroutine" that called from "main function". To work with rust you need lsp-mode+lsp-rust, to work with go you need lsp-mode+lsp-go and so on.

Dushistov avatar Jun 30 '17 20:06 Dushistov

https://github.com/booyaa/rustlangserver.github.io/pull/4 added to document the installation process for vim 8. It also includes a bash script which will install the entire rustc/rls toolchain and configure vim (on a posix machine)

rrichardson avatar Sep 06 '17 16:09 rrichardson

@vibhavp @aergonaut @autozimu and others in this thread. We'll be using next week's dev-tools team meeting to discuss getting more clients supporting the RLS. It would be really useful if people who are (or who are interested in) implementing editor support can attend. The meeting will be on irc, in the #rust-dev-tools channel on the Mozilla server at 8pm UTC on Monday 11th September. If you have anything specific to add to the agenda, or any questions please feel free to ask here or email me at my github username at mozilla.com.

nrc avatar Sep 07 '17 03:09 nrc

I haven't seen it mentioned on any issues but there is a new sublime LSP plugin that is tested with RLS and works well from my initial testing: https://github.com/tomv564/LSP

Dunno if its enough to be checked off on the list, if you need any more information i can do some testing.

ghost avatar Sep 13 '17 18:09 ghost

@Slikrick - great minds. I just added it. Yeah, it seems to work great so I checked Sublime off the list.

sophiajt avatar Sep 13 '17 18:09 sophiajt

To be clear on Atom, both langaugeserver-rust and ide-rust would need language-rust and atom-ide-ui installed for them to work ( ide-rust now will install the dependencies automatically so you don't need to worry about it ).


I apparently didn't realize there was a languageserver-rust when I wrote ide-rust. Care to merge in some way, @aergonaut ? It'd be nice to have 2 pairs of eyes on one.

mehcode avatar Sep 13 '17 19:09 mehcode

@mehcode that actually sounds like a great idea

aergonaut avatar Sep 13 '17 22:09 aergonaut

I added some docs about implementing clients - https://github.com/rust-lang-nursery/rls/blob/master/clients.md

nrc avatar Sep 13 '17 23:09 nrc

For the impl period, I'd really like to push ahead in this area. If people have an editor they'd like to work on that is great, if you'd like to help out I'd recommend working on Atom - there is already existing work, Atom are keen on supporting the LSP as a first-class component (see Atom-IDE), and it is a popular editor. If work there progresses quickly, or lots of people are interested then we should pick another target editor to focus on.

nrc avatar Sep 14 '17 06:09 nrc

@nrc The ide-rust package is as feature complete as it can be with the status of atom-ide.

See https://github.com/mehcode/atom-ide-rust/blob/master/README.md#features

mehcode avatar Sep 14 '17 06:09 mehcode

@mehcode can we support our extensions to the LSP in Atom (I hope we can, the LSP is designed to be extensible). Are all the configuration options implemented?

nrc avatar Sep 14 '17 06:09 nrc

Actually let me move this conversation over to #478

nrc avatar Sep 14 '17 06:09 nrc

Could you please add Cloud9 IDE to the list? It's a super efficient web-based IDE, which we use for https://janitor.technology (a web service that makes it easy to contribute to Firefox, Servo and other open source projects).

Cloud9 already has basic support for Rust (well, syntax highlighting at least) but nothing too advanced like it does for other languages like JavaScript (e.g. jump to definition, rename symbol, linting, etc). It would be amazing to integrate rls in Cloud9, especially since many Janitor users use Cloud9 to work on Rust code in Servo and Firefox.

It can be done by writing Cloud9 SDK plugins, and more specifically by:

  • [ ] Making Cloud9 support the Language Server Protocol (by hooking up its relevant IDE features with a new LSP plugin, as described in this thread)
  • [ ] Integrating rls in Cloud9 by connecting the IDE to the language server itself (see above thread for details as well)

I'd love to work on this, but I'd appreciate any help and suggestions I can get. Thanks! 😄

jankeromnes avatar Sep 30 '17 14:09 jankeromnes

So there seems to be no LSP support for the Cloud9 itself (which seems to be requested and would improve language support considerably in general) so the very first step would be to implement an LSP client for that.

This section might also prove useful to see what needs to be done from the LSP side: https://github.com/rust-lang-nursery/rls/blob/master/clients.md#where-there-is-no-lsp-support.

@jankeromnes would you be willing to start working on such client? From what I understand the language handler would have to register itself as the provider for all the necessary IDE features. A generic LSP client could be implemented as a separate package, which other language-specific language handlers could consume (just like with rls-vscode using the LSP client of https://github.com/Microsoft/vscode-languageserver-node).

Xanewok avatar Oct 04 '17 20:10 Xanewok

For spacemacs users (an emacs distribution), I maintain a rust rls layer here: https://github.com/bkchr/rustrls

bkchr avatar Oct 30 '17 08:10 bkchr

There is some new work on using the RLS from Eclipse: https://github.com/LucasBullen/redOx

nrc avatar Jan 25 '18 22:01 nrc

The Eclipse Corrosion project provides Rust edition in Eclipse IDE using RLS. This project is part of the package "Eclipse IDE for Rust Developers" which will be available as release in a month, and which is already available for testing at https://www.eclipse.org/downloads/index-developer.php

mickaelistria avatar May 27 '18 22:05 mickaelistria

@nrc Are you able to add a link to Corrosion in this issue's initial comment for exposure? Either the project link (https://github.com/eclipse/corrosion) or the link to the one-click Eclipse IDE for Rust Developers (https://www.eclipse.org/downloads/eclipse-packages/)

LucasBullen avatar Jul 09 '18 14:07 LucasBullen

RLS seems to work reasonably well in Emacs using the eglot package. No special configuration was necessary.

david-christiansen avatar Aug 17 '18 01:08 david-christiansen

Thanks for comments everyone! I updated the list with most recent plugins/extensions.

@dgriffen does VS support work out of box with https://github.com/dgriffen/rls-vs2017? Should I link in the OP?

@cmyr @raphlinus is the link at https://github.com/xi-editor/xi-editor/issues/659 the most recent tracking issue on LSP/plugins support? Is there anything we can do on our side to help with this?

@svenefftinge does Theia work out of box with Rust? I noticed https://github.com/theia-ide/theia-rust-extension/ and I'm not sure whether it should be linked in the OP as well.

Xanewok avatar Mar 01 '19 10:03 Xanewok

@Xanewok Theia as well as https://gitpod.io support Rust, based on the extension you referenced. So, yes, please add them. :heart:

svenefftinge avatar Mar 01 '19 10:03 svenefftinge

Done, thanks! (Just checked and gitpod.io indeed works out of box, nice work!)

Xanewok avatar Mar 01 '19 10:03 Xanewok

@Xanewok it should work out of the box. Right now I'm chasing down a few issues that seem to have surfaced with recent versions of the Rust compiler.

ZoeyR avatar Mar 01 '19 16:03 ZoeyR

@Xanewok LSP support in xi is currently blocked on a rewrite of the plugin system, although I'm hoping to make progress on that this month. The best overview of the current situation and what the rewrite would address is probably https://github.com/xi-editor/xi-editor/issues/845; there's no explicit tracking issue at the moment.

cmyr avatar Mar 02 '19 19:03 cmyr

Eclipse Che is deprecated in favor of Theia, somebody might like to remove it from the OP.

ShalokShalom avatar May 05 '19 11:05 ShalokShalom

@ShalokShalom thanks for the heads up! Do you have any link to a post or an article with deprecation notice?

Xanewok avatar May 05 '19 12:05 Xanewok

It seems like I misread something. Che is actually integrated in Theia. Thanks

ShalokShalom avatar May 05 '19 13:05 ShalokShalom

It's the other way round Eclipse Che (that is a container based Development Environment where "editor" is only one brick of the solution) embeds by default Eclipse Theia as editor/IDE. But Eclipse Che using containers allows an addition/different way of creating plugins, defining the language servers in containers and hooking them in Theia.

mickaelistria avatar May 05 '19 14:05 mickaelistria

Kakoune works with RLS via: kak-lsp

https://github.com/ul/kak-lsp

jwhite927 avatar Apr 05 '20 13:04 jwhite927