aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax/src/ast/generated.rs
diff options
context:
space:
mode:
authorbors[bot] <bors[bot]@users.noreply.github.com>2018-10-15 17:48:17 +0100
committerbors[bot] <bors[bot]@users.noreply.github.com>2018-10-15 17:48:17 +0100
commita230b438e025c5878b8d17e11d3928cbad95bb28 (patch)
tree231872915ede46874b6e7d2b3d1240d1defa5231 /crates/ra_syntax/src/ast/generated.rs
parente031b65f93f73164a5729cf81ff60299708bc931 (diff)
parent2bc9e9f32711047b06940c335eb5327281f8c555 (diff)
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 <[email protected]>
Diffstat (limited to 'crates/ra_syntax/src/ast/generated.rs')
-rw-r--r--crates/ra_syntax/src/ast/generated.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/crates/ra_syntax/src/ast/generated.rs b/crates/ra_syntax/src/ast/generated.rs
index 48c9038dc..4db1bcbf9 100644
--- a/crates/ra_syntax/src/ast/generated.rs
+++ b/crates/ra_syntax/src/ast/generated.rs
@@ -2197,3 +2197,21 @@ impl<'a> WhileExpr<'a> {
2197 } 2197 }
2198} 2198}
2199 2199
2200// Whitespace
2201#[derive(Debug, Clone, Copy)]
2202pub struct Whitespace<'a> {
2203 syntax: SyntaxNodeRef<'a>,
2204}
2205
2206impl<'a> AstNode<'a> for Whitespace<'a> {
2207 fn cast(syntax: SyntaxNodeRef<'a>) -> Option<Self> {
2208 match syntax.kind() {
2209 WHITESPACE => Some(Whitespace { syntax }),
2210 _ => None,
2211 }
2212 }
2213 fn syntax(self) -> SyntaxNodeRef<'a> { self.syntax }
2214}
2215
2216impl<'a> Whitespace<'a> {}
2217