rust-analyzer/crates
bors[bot] a230b438e0 Merge #127
127: Improve folding r=matklad a=aochagavia

I was messing around with adding support for multiline comments in folding and ended up changing a bunch of other things. 

First of all, I am not convinced of folding groups of successive items. For instance, I don't see why it is worthwhile to be able to fold something like the following:

```rust
use foo;
use bar;
```

Furthermore, this causes problems if you want to fold a multiline import:

```rust
use foo::{
  quux
};
use bar;
```

The problem is that now there are two possible folds at the same position: we could fold the first use or we could fold the import group. IMO, the only place where folding groups makes sense is when folding comments. Therefore I have **removed folding import groups in favor of folding multiline imports**.

Regarding folding comments, I made it a bit more robust by requiring that comments can only be folded if they have the same flavor. So if you have a bunch of `//` comments followed by `//!` comments, you will get two separate fold groups instead of a single one.

Finally, I rewrote the API in such a way that it should be trivial to add new folds. You only need to:

* Create a new FoldKind
* Add it to the `fold_kind` function that converts from `SyntaxKind` to `FoldKind`

Fixes #113 

Co-authored-by: Adolfo Ochagavía <github@adolfo.ochagavia.xyz>
2018-10-15 16:48:17 +00:00
..
gen_lsp_server Prepare gen_lsp_server for publishing 2018-10-09 12:55:23 +03:00
ra_analysis A FnDescriptor shouldn't exist without a name 2018-10-12 07:54:57 -04:00
ra_cli Add emacs function for extend shirnk selection 2018-09-19 00:46:10 +03:00
ra_editor Improve tests 2018-10-13 21:33:15 +02:00
ra_lsp_server Language Server: textDocument/signatureHelp 2018-10-11 16:40:46 -04:00
ra_syntax Merge #127 2018-10-15 16:48:17 +00:00
salsa yet another db api 2018-09-16 00:00:05 +03:00
test_utils Improve tests 2018-10-13 21:33:15 +02:00
tools rename all things 2018-09-16 13:07:39 +03:00