diff --git a/Cargo.lock b/Cargo.lock index 5ce4a8084c1..9c65b39f761 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -902,8 +902,8 @@ version = "0.1.0" dependencies = [ "join_to_string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "ra_db 0.1.0", + "ra_fmt 0.1.0", "ra_hir 0.1.0", - "ra_ide_api_light 0.1.0", "ra_syntax 0.1.0", "ra_text_edit 0.1.0", "test_utils 0.1.0", @@ -934,6 +934,14 @@ dependencies = [ "test_utils 0.1.0", ] +[[package]] +name = "ra_fmt" +version = "0.1.0" +dependencies = [ + "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ra_syntax 0.1.0", +] + [[package]] name = "ra_hir" version = "0.1.0" @@ -988,6 +996,7 @@ dependencies = [ "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "join_to_string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "proptest 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ra_fmt 0.1.0", "ra_syntax 0.1.0", "ra_text_edit 0.1.0", "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/crates/ra_assists/Cargo.toml b/crates/ra_assists/Cargo.toml index 20bc253e30b..71ab2dcd2a0 100644 --- a/crates/ra_assists/Cargo.toml +++ b/crates/ra_assists/Cargo.toml @@ -7,9 +7,9 @@ authors = ["Aleksey Kladov "] [dependencies] join_to_string = "0.1.3" -ra_ide_api_light = { path = "../ra_ide_api_light" } ra_syntax = { path = "../ra_syntax" } ra_text_edit = { path = "../ra_text_edit" } +ra_fmt = { path = "../ra_fmt" } ra_db = { path = "../ra_db" } hir = { path = "../ra_hir", package = "ra_hir" } diff --git a/crates/ra_assists/src/assist_ctx.rs b/crates/ra_assists/src/assist_ctx.rs index 41c8ac2f69d..e240c35d6f3 100644 --- a/crates/ra_assists/src/assist_ctx.rs +++ b/crates/ra_assists/src/assist_ctx.rs @@ -5,7 +5,7 @@ use ra_syntax::{ SourceFile, TextRange, AstNode, TextUnit, SyntaxNode, algo::{find_leaf_at_offset, find_node_at_offset, find_covering_node, LeafAtOffset}, }; -use ra_ide_api_light::formatting::{leading_indent, reindent}; +use ra_fmt::{leading_indent, reindent}; use crate::{AssistLabel, AssistAction}; diff --git a/crates/ra_assists/src/replace_if_let_with_match.rs b/crates/ra_assists/src/replace_if_let_with_match.rs index a22ec558473..f74ab3c6730 100644 --- a/crates/ra_assists/src/replace_if_let_with_match.rs +++ b/crates/ra_assists/src/replace_if_let_with_match.rs @@ -1,5 +1,5 @@ use ra_syntax::{AstNode, ast}; -use ra_ide_api_light::formatting::extract_trivial_expression; +use ra_fmt::extract_trivial_expression; use hir::db::HirDatabase; use crate::{AssistCtx, Assist}; diff --git a/crates/ra_fmt/Cargo.toml b/crates/ra_fmt/Cargo.toml new file mode 100644 index 00000000000..1cf1b520fdd --- /dev/null +++ b/crates/ra_fmt/Cargo.toml @@ -0,0 +1,11 @@ +[package] +edition = "2018" +name = "ra_fmt" +version = "0.1.0" +authors = ["Aleksey Kladov "] +publish = false + +[dependencies] +itertools = "0.8.0" + +ra_syntax = { path = "../ra_syntax" } diff --git a/crates/ra_ide_api_light/src/formatting.rs b/crates/ra_fmt/src/lib.rs similarity index 93% rename from crates/ra_ide_api_light/src/formatting.rs rename to crates/ra_fmt/src/lib.rs index 8bc03f974af..62e6fb9c1b0 100644 --- a/crates/ra_ide_api_light/src/formatting.rs +++ b/crates/ra_fmt/src/lib.rs @@ -1,3 +1,5 @@ +//! This crate provides some utilities for indenting rust code. +//! use itertools::Itertools; use ra_syntax::{ AstNode, @@ -50,7 +52,7 @@ pub fn extract_trivial_expression(block: &ast::Block) -> Option<&ast::Expr> { Some(expr) } -pub(crate) fn compute_ws(left: &SyntaxNode, right: &SyntaxNode) -> &'static str { +pub fn compute_ws(left: &SyntaxNode, right: &SyntaxNode) -> &'static str { match left.kind() { L_PAREN | L_BRACK => return "", L_CURLY => { diff --git a/crates/ra_ide_api_light/Cargo.toml b/crates/ra_ide_api_light/Cargo.toml index c1e4314cece..86311e6779a 100644 --- a/crates/ra_ide_api_light/Cargo.toml +++ b/crates/ra_ide_api_light/Cargo.toml @@ -13,6 +13,7 @@ rustc-hash = "1.0" ra_syntax = { path = "../ra_syntax" } ra_text_edit = { path = "../ra_text_edit" } +ra_fmt = { path = "../ra_fmt" } [dev-dependencies] test_utils = { path = "../test_utils" } diff --git a/crates/ra_ide_api_light/src/join_lines.rs b/crates/ra_ide_api_light/src/join_lines.rs index 03770c52e47..970afd3277b 100644 --- a/crates/ra_ide_api_light/src/join_lines.rs +++ b/crates/ra_ide_api_light/src/join_lines.rs @@ -5,10 +5,11 @@ use ra_syntax::{ algo::find_covering_node, ast, }; - +use ra_fmt::{ + compute_ws, extract_trivial_expression +}; use crate::{ LocalEdit, TextEditBuilder, - formatting::{compute_ws, extract_trivial_expression}, }; pub fn join_lines(file: &SourceFile, range: TextRange) -> LocalEdit { diff --git a/crates/ra_ide_api_light/src/lib.rs b/crates/ra_ide_api_light/src/lib.rs index f3078f51e59..6d1ce8dbfb6 100644 --- a/crates/ra_ide_api_light/src/lib.rs +++ b/crates/ra_ide_api_light/src/lib.rs @@ -3,7 +3,6 @@ //! This usually means functions which take syntax tree as an input and produce //! an edit or some auxiliary info. -pub mod formatting; mod extend_selection; mod folding_ranges; mod line_index; diff --git a/crates/ra_ide_api_light/src/typing.rs b/crates/ra_ide_api_light/src/typing.rs index a08a5a8c567..9dd9f1c1d9f 100644 --- a/crates/ra_ide_api_light/src/typing.rs +++ b/crates/ra_ide_api_light/src/typing.rs @@ -4,8 +4,8 @@ use ra_syntax::{ algo::{find_node_at_offset, find_leaf_at_offset, LeafAtOffset}, ast::{self, AstToken}, }; - -use crate::{LocalEdit, TextEditBuilder, formatting::leading_indent}; +use ra_fmt::leading_indent; +use crate::{LocalEdit, TextEditBuilder}; pub fn on_enter(file: &SourceFile, offset: TextUnit) -> Option { let comment =