Ryan Cumming abc0784e57 Fix cargo watch code action filtering
There are two issues with the implementation of `provideCodeActions`
introduced in #1439:

1. We're returning the code action based on the file its diagnostic is
   in; not the file the suggested fix is in. I'm not sure how often
   fixes are suggested cross-file but it's something we should handle.

2. We're not filtering code actions based on the passed range. The means
   if there is any suggestion in a file we'll show an action for every
   line of the file. I naively thought that VS Code would filter for us
   but that was wrong.

Unfortunately the VS Code `CodeAction` object is very complex - it can
handle edits across multiple files, run commands, etc. This makes it
complex to check them for equality or see if any of their edits
intersects with a specified range.

To make it easier to work with suggestions this introduces a
`SuggestedFix` model object and a `SuggestFixCollection` code action
provider. This is a layer between the raw Rust JSON and VS Code's
`CodeAction`s. I was reluctant to introduce another layer of abstraction
here but my attempt to work directly with VS Code's model objects was
worse.
2019-06-29 17:39:36 +10:00
2019-06-11 01:47:37 +03:00
2019-06-29 00:08:02 +03:00
2019-04-05 23:31:58 +08:00
2019-04-05 22:06:15 +01:00
2019-05-30 10:17:29 +03:00
2019-04-21 19:26:01 +03:00
⬆️ rowan
2019-06-27 01:02:10 +03:00
⬆️ salsa
2019-06-07 09:44:28 +03:00
2018-01-10 22:47:04 +03:00
2018-01-10 22:47:04 +03:00
2019-05-21 17:43:24 +03:00
2019-02-08 14:49:26 +03:00

Rust Analyzer

Build Status

Rust Analyzer is an experimental modular compiler frontend for the Rust language. It is a part of a larger rls-2.0 effort to create excellent IDE support for Rust. If you want to get involved, check the rls-2.0 working group in the compiler-team repository:

https://github.com/rust-lang/compiler-team/tree/master/working-groups/rls-2.0

Work on the Rust Analyzer is sponsored by

Ferrous Systems

Language Server Quick Start

Rust Analyzer is a work-in-progress, so you'll have to build it from source, and you might encounter critical bugs. That said, it is complete enough to provide a useful IDE experience and some people use it as a daily driver.

To build rust-analyzer, you need:

  • latest stable rust for language server itself
  • latest stable npm and VS Code for VS Code extension (code should be in path)

For setup for other editors, see ./docs/user.

# clone the repo
$ git clone https://github.com/rust-analyzer/rust-analyzer && cd rust-analyzer

# install both the language server and VS Code extension
$ cargo install-code

# alternatively, install only the server. Binary name is `ra_lsp_server`.
$ cargo install-lsp

Documentation

If you want to contribute to rust-analyzer or just curious about how things work under the hood, check the ./docs/dev folder.

If you want to use rust-analyzer's language server with your editor of choice, check ./docs/user folder. It also contains some tips & tricks to help you be more productive when using rust-analyzer.

Getting in touch

We are on the rust-lang Zulip!

https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Frls-2.2E0

License

Rust analyzer is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0).

See LICENSE-APACHE and LICENSE-MIT for details.

Description
A Rust compiler front-end for IDEs
Readme 139 MiB
Languages
Rust 96.8%
HTML 1.6%
TypeScript 1.6%