Skip to content

Commit 7344d28

Browse files
committed
extract AtomEdit and Edit into new ra_text_edit crate
1 parent f655f99 commit 7344d28

File tree

19 files changed

+81
-40
lines changed

19 files changed

+81
-40
lines changed

Cargo.lock

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/ra_analysis/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ rustc-hash = "1.0"
1414
parking_lot = "0.6.4"
1515
ra_syntax = { path = "../ra_syntax" }
1616
ra_editor = { path = "../ra_editor" }
17+
ra_text_edit = { path = "../ra_text_edit" }
1718
ra_db = { path = "../ra_db" }
1819
hir = { path = "../ra_hir", package = "ra_hir" }
1920
test_utils = { path = "../test_utils" }

crates/ra_analysis/src/completion.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
mod reference_completion;
22

33
use ra_editor::find_node_at_offset;
4+
use ra_text_edit::AtomEdit;
45
use ra_syntax::{
56
algo::visit::{visitor_ctx, VisitorCtx},
67
ast,
7-
AstNode, AtomEdit,
8+
AstNode,
89
SyntaxNodeRef,
910
};
1011
use ra_db::SyntaxDatabase;

crates/ra_analysis/src/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ pub mod mock_analysis;
1818

1919
use std::{fmt, sync::Arc};
2020

21-
use ra_syntax::{AtomEdit, SourceFileNode, TextRange, TextUnit};
21+
use ra_syntax::{SourceFileNode, TextRange, TextUnit};
22+
use ra_text_edit::AtomEdit;
2223
use ra_db::FileResolverImp;
2324
use rayon::prelude::*;
2425
use relative_path::RelativePathBuf;

crates/ra_editor/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ join_to_string = "0.1.1"
1212
rustc-hash = "1.0"
1313

1414
ra_syntax = { path = "../ra_syntax" }
15+
ra_text_edit = { path = "../ra_text_edit" }
1516

1617
[dev-dependencies]
1718
test_utils = { path = "../test_utils" }

crates/ra_editor/src/lib.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
mod code_actions;
2-
mod edit;
32
mod extend_selection;
43
mod folding_ranges;
54
mod line_index;
@@ -10,14 +9,13 @@ mod typing;
109

1110
pub use self::{
1211
code_actions::{add_derive, add_impl, flip_comma, introduce_variable, LocalEdit},
13-
edit::{Edit, EditBuilder},
1412
extend_selection::extend_selection,
1513
folding_ranges::{folding_ranges, Fold, FoldKind},
1614
line_index::{LineCol, LineIndex},
1715
symbols::{file_structure, file_symbols, FileSymbol, StructureNode},
1816
typing::{join_lines, on_enter, on_eq_typed},
1917
};
20-
pub use ra_syntax::AtomEdit;
18+
use ra_text_edit::{Edit, EditBuilder};
2119
use ra_syntax::{
2220
algo::find_leaf_at_offset,
2321
ast::{self, AstNode, NameOwner},

crates/ra_editor/src/typing.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@ use std::mem;
33
use ra_syntax::{
44
algo::{find_covering_node, find_leaf_at_offset, LeafAtOffset},
55
ast,
6-
text_utils::{contains_offset_nonstrict, intersect},
6+
text_utils::intersect,
77
AstNode, SourceFileNode, SyntaxKind,
88
SyntaxKind::*,
99
SyntaxNodeRef, TextRange, TextUnit,
1010
};
11+
use ra_text_edit::text_utils::contains_offset_nonstrict;
1112

1213
use crate::{find_node_at_offset, EditBuilder, LocalEdit};
1314

crates/ra_lsp_server/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ rustc-hash = "1.0"
2828

2929
ra_syntax = { path = "../ra_syntax" }
3030
ra_editor = { path = "../ra_editor" }
31+
ra_text_edit = { path = "../ra_text_edit" }
3132
ra_analysis = { path = "../ra_analysis" }
3233
gen_lsp_server = { path = "../gen_lsp_server" }
3334

crates/ra_lsp_server/src/conv.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ use languageserver_types::{
33
TextDocumentItem, TextDocumentPositionParams, TextEdit, Url, VersionedTextDocumentIdentifier,
44
};
55
use ra_analysis::{FileId, FileSystemEdit, SourceChange, SourceFileNodeEdit, FilePosition};
6-
use ra_editor::{AtomEdit, Edit, LineCol, LineIndex};
6+
use ra_editor::{LineCol, LineIndex};
7+
use ra_text_edit::{AtomEdit, Edit};
78
use ra_syntax::{SyntaxKind, TextRange, TextUnit};
89

910
use crate::{req, server_world::ServerWorld, Result};

crates/ra_lsp_server/src/main_loop/handlers.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ use languageserver_types::{
99
WorkspaceEdit, ParameterInformation, SignatureInformation, Hover, HoverContents,
1010
};
1111
use ra_analysis::{FileId, FoldKind, Query, RunnableKind, FilePosition};
12-
use ra_syntax::{TextUnit, text_utils::{contains_offset_nonstrict, intersect}};
12+
use ra_syntax::{TextUnit, text_utils::intersect};
13+
use ra_text_edit::text_utils::contains_offset_nonstrict;
1314
use rustc_hash::FxHashMap;
1415
use serde_json::to_value;
1516

crates/ra_syntax/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ drop_bomb = "0.1.4"
1515
parking_lot = "0.6.0"
1616
rowan = "0.1.2"
1717
text_unit = "0.1.5"
18+
ra_text_edit = { path = "../ra_text_edit" }
1819

1920
[dev-dependencies]
2021
test_utils = { path = "../test_utils" }

crates/ra_syntax/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,13 @@ pub use rowan::{SmolStr, TextRange, TextUnit};
4141
pub use crate::{
4242
ast::AstNode,
4343
lexer::{tokenize, Token},
44-
reparsing::AtomEdit,
4544
syntax_kinds::SyntaxKind,
4645
yellow::{
4746
Direction, OwnedRoot, RefRoot, SyntaxError, SyntaxNode, SyntaxNodeRef, TreeRoot, WalkEvent, Location,
4847
},
4948
};
5049

50+
use ra_text_edit::AtomEdit;
5151
use crate::yellow::GreenNode;
5252

5353
/// `SourceFileNode` represents a parse tree for a single Rust file.

crates/ra_syntax/src/reparsing.rs

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -6,29 +6,7 @@ use crate::parser_impl;
66
use crate::text_utils::replace_range;
77
use crate::yellow::{self, GreenNode, SyntaxError, SyntaxNodeRef};
88
use crate::{SyntaxKind::*, TextRange, TextUnit};
9-
10-
#[derive(Debug, Clone)]
11-
pub struct AtomEdit {
12-
pub delete: TextRange,
13-
pub insert: String,
14-
}
15-
16-
impl AtomEdit {
17-
pub fn replace(range: TextRange, replace_with: String) -> AtomEdit {
18-
AtomEdit {
19-
delete: range,
20-
insert: replace_with,
21-
}
22-
}
23-
24-
pub fn delete(range: TextRange) -> AtomEdit {
25-
AtomEdit::replace(range, String::new())
26-
}
27-
28-
pub fn insert(offset: TextUnit, text: String) -> AtomEdit {
29-
AtomEdit::replace(TextRange::offset_len(offset, 0.into()), text)
30-
}
31-
}
9+
use ra_text_edit::AtomEdit;
3210

3311
pub(crate) fn incremental_reparse(
3412
node: SyntaxNodeRef,

crates/ra_syntax/src/text_utils.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
use crate::{TextRange, TextUnit};
2-
3-
pub fn contains_offset_nonstrict(range: TextRange, offset: TextUnit) -> bool {
4-
range.start() <= offset && offset <= range.end()
5-
}
1+
use crate::TextRange;
62

73
pub fn intersect(r1: TextRange, r2: TextRange) -> Option<TextRange> {
84
let start = r1.start().max(r2.start());

crates/ra_syntax/src/yellow/syntax_text.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
use std::{fmt, ops};
22

3+
use ra_text_edit::text_utils::contains_offset_nonstrict;
34
use crate::{
4-
text_utils::{contains_offset_nonstrict, intersect},
5+
text_utils::intersect,
56
SyntaxNodeRef, TextRange, TextUnit,
67
};
78

crates/ra_text_edit/Cargo.toml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
[package]
2+
edition = "2018"
3+
name = "ra_text_edit"
4+
version = "0.1.0"
5+
authors = ["Aleksey Kladov <[email protected]>"]
6+
publish = false
7+
8+
[dependencies]
9+
text_unit = "0.1.5"
10+
11+
[dev-dependencies]
12+
test_utils = { path = "../test_utils" }

crates/ra_editor/src/edit.rs renamed to crates/ra_text_edit/src/edit.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
use crate::{TextRange, TextUnit};
2-
use ra_syntax::{text_utils::contains_offset_nonstrict, AtomEdit};
1+
use crate::AtomEdit;
2+
use crate::text_utils::contains_offset_nonstrict;
3+
use text_unit::{TextRange, TextUnit};
34

45
#[derive(Debug, Clone)]
56
pub struct Edit {

crates/ra_text_edit/src/lib.rs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
mod edit;
2+
pub mod text_utils;
3+
4+
pub use crate::edit::{Edit, EditBuilder};
5+
6+
use text_unit::{TextRange, TextUnit};
7+
8+
#[derive(Debug, Clone)]
9+
pub struct AtomEdit {
10+
pub delete: TextRange,
11+
pub insert: String,
12+
}
13+
14+
impl AtomEdit {
15+
pub fn replace(range: TextRange, replace_with: String) -> AtomEdit {
16+
AtomEdit {
17+
delete: range,
18+
insert: replace_with,
19+
}
20+
}
21+
22+
pub fn delete(range: TextRange) -> AtomEdit {
23+
AtomEdit::replace(range, String::new())
24+
}
25+
26+
pub fn insert(offset: TextUnit, text: String) -> AtomEdit {
27+
AtomEdit::replace(TextRange::offset_len(offset, 0.into()), text)
28+
}
29+
}

crates/ra_text_edit/src/text_utils.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
use text_unit::{TextRange, TextUnit};
2+
3+
pub fn contains_offset_nonstrict(range: TextRange, offset: TextUnit) -> bool {
4+
range.start() <= offset && offset <= range.end()
5+
}

0 commit comments

Comments
 (0)