rust-lang / rls

Repository for the Rust Language Server (aka RLS)
Other
3.53k stars 258 forks source link

Tracking issue - support other editors #87

Open nrc opened 7 years ago

nrc commented 7 years ago

cc #18

Check out all issues labelled with 'clients'

autozimu commented 7 years ago

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

booyaa commented 7 years ago

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

aergonaut commented 7 years ago

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.

Nashenas88 commented 7 years ago

@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!

aergonaut commented 7 years ago

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

booyaa commented 7 years ago

probably worth tracking these related issues...

261 - website for configuring RLS with your favourite editor

214 - sublime support

55 - eclipse che support

booyaa commented 7 years ago

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

bbigras commented 7 years ago

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.

Dushistov commented 7 years ago

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.

rrichardson commented 6 years ago

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)

nrc commented 6 years ago

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

ghost commented 6 years ago

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.

sophiajt commented 6 years ago

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

mehcode commented 6 years ago

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.

aergonaut commented 6 years ago

@mehcode that actually sounds like a great idea

nrc commented 6 years ago

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

nrc commented 6 years ago

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.

mehcode commented 6 years ago

@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

nrc commented 6 years ago

@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 commented 6 years ago

Actually let me move this conversation over to #478

jankeromnes commented 6 years ago

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:

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

Xanewok commented 6 years ago

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

bkchr commented 6 years ago

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

nrc commented 6 years ago

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

mickaelistria commented 6 years ago

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

LucasBullen commented 6 years ago

@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/)

david-christiansen commented 5 years ago

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

Xanewok commented 5 years ago

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.

svenefftinge commented 5 years ago

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

Xanewok commented 5 years ago

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

ZoeyR commented 5 years ago

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

cmyr commented 5 years ago

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

ShalokShalom commented 5 years ago

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

Xanewok commented 5 years ago

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

ShalokShalom commented 5 years ago

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

mickaelistria commented 5 years ago

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.

jwhite927 commented 4 years ago

Kakoune works with RLS via: kak-lsp

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