aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_fmt
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_fmt')
-rw-r--r--crates/ra_fmt/Cargo.toml15
-rw-r--r--crates/ra_fmt/src/lib.rs28
2 files changed, 0 insertions, 43 deletions
diff --git a/crates/ra_fmt/Cargo.toml b/crates/ra_fmt/Cargo.toml
deleted file mode 100644
index d42ca62be..000000000
--- a/crates/ra_fmt/Cargo.toml
+++ /dev/null
@@ -1,15 +0,0 @@
1[package]
2edition = "2018"
3name = "ra_fmt"
4version = "0.1.0"
5authors = ["rust-analyzer developers"]
6publish = false
7license = "MIT OR Apache-2.0"
8
9[lib]
10doctest = false
11
12[dependencies]
13itertools = "0.9.0"
14
15syntax = { path = "../syntax" }
diff --git a/crates/ra_fmt/src/lib.rs b/crates/ra_fmt/src/lib.rs
deleted file mode 100644
index b92477f9e..000000000
--- a/crates/ra_fmt/src/lib.rs
+++ /dev/null
@@ -1,28 +0,0 @@
1//! This crate provides some utilities for indenting rust code.
2
3use std::iter::successors;
4
5use syntax::{
6 ast::{self, AstToken},
7 SmolStr, SyntaxNode, SyntaxToken,
8};
9
10/// If the node is on the beginning of the line, calculate indent.
11pub fn leading_indent(node: &SyntaxNode) -> Option<SmolStr> {
12 for token in prev_tokens(node.first_token()?) {
13 if let Some(ws) = ast::Whitespace::cast(token.clone()) {
14 let ws_text = ws.text();
15 if let Some(pos) = ws_text.rfind('\n') {
16 return Some(ws_text[pos + 1..].into());
17 }
18 }
19 if token.text().contains('\n') {
20 break;
21 }
22 }
23 None
24}
25
26fn prev_tokens(token: SyntaxToken) -> impl Iterator<Item = SyntaxToken> {
27 successors(token.prev_token(), |token| token.prev_token())
28}