extract AtomEdit and Edit into new ra_text_edit crate
This commit is contained in:
parent
f655f993fe
commit
7344d28768
12
Cargo.lock
generated
12
Cargo.lock
generated
@ -610,6 +610,7 @@ dependencies = [
|
||||
"ra_editor 0.1.0",
|
||||
"ra_hir 0.1.0",
|
||||
"ra_syntax 0.1.0",
|
||||
"ra_text_edit 0.1.0",
|
||||
"rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"relative-path 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
@ -649,6 +650,7 @@ dependencies = [
|
||||
"itertools 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"join_to_string 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"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)",
|
||||
"superslice 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"test_utils 0.1.0",
|
||||
@ -687,6 +689,7 @@ dependencies = [
|
||||
"ra_analysis 0.1.0",
|
||||
"ra_editor 0.1.0",
|
||||
"ra_syntax 0.1.0",
|
||||
"ra_text_edit 0.1.0",
|
||||
"rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"relative-path 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
@ -710,6 +713,7 @@ dependencies = [
|
||||
"drop_bomb 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"itertools 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"ra_text_edit 0.1.0",
|
||||
"rowan 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"test_utils 0.1.0",
|
||||
"text_unit 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
@ -717,6 +721,14 @@ dependencies = [
|
||||
"walkdir 2.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ra_text_edit"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"test_utils 0.1.0",
|
||||
"text_unit 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.4.3"
|
||||
|
@ -14,6 +14,7 @@ rustc-hash = "1.0"
|
||||
parking_lot = "0.6.4"
|
||||
ra_syntax = { path = "../ra_syntax" }
|
||||
ra_editor = { path = "../ra_editor" }
|
||||
ra_text_edit = { path = "../ra_text_edit" }
|
||||
ra_db = { path = "../ra_db" }
|
||||
hir = { path = "../ra_hir", package = "ra_hir" }
|
||||
test_utils = { path = "../test_utils" }
|
||||
|
@ -1,10 +1,11 @@
|
||||
mod reference_completion;
|
||||
|
||||
use ra_editor::find_node_at_offset;
|
||||
use ra_text_edit::AtomEdit;
|
||||
use ra_syntax::{
|
||||
algo::visit::{visitor_ctx, VisitorCtx},
|
||||
ast,
|
||||
AstNode, AtomEdit,
|
||||
AstNode,
|
||||
SyntaxNodeRef,
|
||||
};
|
||||
use ra_db::SyntaxDatabase;
|
||||
|
@ -18,7 +18,8 @@ macro_rules! ctry {
|
||||
|
||||
use std::{fmt, sync::Arc};
|
||||
|
||||
use ra_syntax::{AtomEdit, SourceFileNode, TextRange, TextUnit};
|
||||
use ra_syntax::{SourceFileNode, TextRange, TextUnit};
|
||||
use ra_text_edit::AtomEdit;
|
||||
use ra_db::FileResolverImp;
|
||||
use rayon::prelude::*;
|
||||
use relative_path::RelativePathBuf;
|
||||
|
@ -12,6 +12,7 @@ join_to_string = "0.1.1"
|
||||
rustc-hash = "1.0"
|
||||
|
||||
ra_syntax = { path = "../ra_syntax" }
|
||||
ra_text_edit = { path = "../ra_text_edit" }
|
||||
|
||||
[dev-dependencies]
|
||||
test_utils = { path = "../test_utils" }
|
||||
|
@ -1,5 +1,4 @@
|
||||
mod code_actions;
|
||||
mod edit;
|
||||
mod extend_selection;
|
||||
mod folding_ranges;
|
||||
mod line_index;
|
||||
@ -10,14 +9,13 @@
|
||||
|
||||
pub use self::{
|
||||
code_actions::{add_derive, add_impl, flip_comma, introduce_variable, LocalEdit},
|
||||
edit::{Edit, EditBuilder},
|
||||
extend_selection::extend_selection,
|
||||
folding_ranges::{folding_ranges, Fold, FoldKind},
|
||||
line_index::{LineCol, LineIndex},
|
||||
symbols::{file_structure, file_symbols, FileSymbol, StructureNode},
|
||||
typing::{join_lines, on_enter, on_eq_typed},
|
||||
};
|
||||
pub use ra_syntax::AtomEdit;
|
||||
use ra_text_edit::{Edit, EditBuilder};
|
||||
use ra_syntax::{
|
||||
algo::find_leaf_at_offset,
|
||||
ast::{self, AstNode, NameOwner},
|
||||
|
@ -3,11 +3,12 @@
|
||||
use ra_syntax::{
|
||||
algo::{find_covering_node, find_leaf_at_offset, LeafAtOffset},
|
||||
ast,
|
||||
text_utils::{contains_offset_nonstrict, intersect},
|
||||
text_utils::intersect,
|
||||
AstNode, SourceFileNode, SyntaxKind,
|
||||
SyntaxKind::*,
|
||||
SyntaxNodeRef, TextRange, TextUnit,
|
||||
};
|
||||
use ra_text_edit::text_utils::contains_offset_nonstrict;
|
||||
|
||||
use crate::{find_node_at_offset, EditBuilder, LocalEdit};
|
||||
|
||||
|
@ -28,6 +28,7 @@ rustc-hash = "1.0"
|
||||
|
||||
ra_syntax = { path = "../ra_syntax" }
|
||||
ra_editor = { path = "../ra_editor" }
|
||||
ra_text_edit = { path = "../ra_text_edit" }
|
||||
ra_analysis = { path = "../ra_analysis" }
|
||||
gen_lsp_server = { path = "../gen_lsp_server" }
|
||||
|
||||
|
@ -3,7 +3,8 @@
|
||||
TextDocumentItem, TextDocumentPositionParams, TextEdit, Url, VersionedTextDocumentIdentifier,
|
||||
};
|
||||
use ra_analysis::{FileId, FileSystemEdit, SourceChange, SourceFileNodeEdit, FilePosition};
|
||||
use ra_editor::{AtomEdit, Edit, LineCol, LineIndex};
|
||||
use ra_editor::{LineCol, LineIndex};
|
||||
use ra_text_edit::{AtomEdit, Edit};
|
||||
use ra_syntax::{SyntaxKind, TextRange, TextUnit};
|
||||
|
||||
use crate::{req, server_world::ServerWorld, Result};
|
||||
|
@ -9,7 +9,8 @@
|
||||
WorkspaceEdit, ParameterInformation, SignatureInformation, Hover, HoverContents,
|
||||
};
|
||||
use ra_analysis::{FileId, FoldKind, Query, RunnableKind, FilePosition};
|
||||
use ra_syntax::{TextUnit, text_utils::{contains_offset_nonstrict, intersect}};
|
||||
use ra_syntax::{TextUnit, text_utils::intersect};
|
||||
use ra_text_edit::text_utils::contains_offset_nonstrict;
|
||||
use rustc_hash::FxHashMap;
|
||||
use serde_json::to_value;
|
||||
|
||||
|
@ -15,6 +15,7 @@ drop_bomb = "0.1.4"
|
||||
parking_lot = "0.6.0"
|
||||
rowan = "0.1.2"
|
||||
text_unit = "0.1.5"
|
||||
ra_text_edit = { path = "../ra_text_edit" }
|
||||
|
||||
[dev-dependencies]
|
||||
test_utils = { path = "../test_utils" }
|
||||
|
@ -41,13 +41,13 @@
|
||||
pub use crate::{
|
||||
ast::AstNode,
|
||||
lexer::{tokenize, Token},
|
||||
reparsing::AtomEdit,
|
||||
syntax_kinds::SyntaxKind,
|
||||
yellow::{
|
||||
Direction, OwnedRoot, RefRoot, SyntaxError, SyntaxNode, SyntaxNodeRef, TreeRoot, WalkEvent, Location,
|
||||
},
|
||||
};
|
||||
|
||||
use ra_text_edit::AtomEdit;
|
||||
use crate::yellow::GreenNode;
|
||||
|
||||
/// `SourceFileNode` represents a parse tree for a single Rust file.
|
||||
|
@ -6,29 +6,7 @@
|
||||
use crate::text_utils::replace_range;
|
||||
use crate::yellow::{self, GreenNode, SyntaxError, SyntaxNodeRef};
|
||||
use crate::{SyntaxKind::*, TextRange, TextUnit};
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct AtomEdit {
|
||||
pub delete: TextRange,
|
||||
pub insert: String,
|
||||
}
|
||||
|
||||
impl AtomEdit {
|
||||
pub fn replace(range: TextRange, replace_with: String) -> AtomEdit {
|
||||
AtomEdit {
|
||||
delete: range,
|
||||
insert: replace_with,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn delete(range: TextRange) -> AtomEdit {
|
||||
AtomEdit::replace(range, String::new())
|
||||
}
|
||||
|
||||
pub fn insert(offset: TextUnit, text: String) -> AtomEdit {
|
||||
AtomEdit::replace(TextRange::offset_len(offset, 0.into()), text)
|
||||
}
|
||||
}
|
||||
use ra_text_edit::AtomEdit;
|
||||
|
||||
pub(crate) fn incremental_reparse(
|
||||
node: SyntaxNodeRef,
|
||||
|
@ -1,8 +1,4 @@
|
||||
use crate::{TextRange, TextUnit};
|
||||
|
||||
pub fn contains_offset_nonstrict(range: TextRange, offset: TextUnit) -> bool {
|
||||
range.start() <= offset && offset <= range.end()
|
||||
}
|
||||
use crate::TextRange;
|
||||
|
||||
pub fn intersect(r1: TextRange, r2: TextRange) -> Option<TextRange> {
|
||||
let start = r1.start().max(r2.start());
|
||||
|
@ -1,7 +1,8 @@
|
||||
use std::{fmt, ops};
|
||||
|
||||
use ra_text_edit::text_utils::contains_offset_nonstrict;
|
||||
use crate::{
|
||||
text_utils::{contains_offset_nonstrict, intersect},
|
||||
text_utils::intersect,
|
||||
SyntaxNodeRef, TextRange, TextUnit,
|
||||
};
|
||||
|
||||
|
12
crates/ra_text_edit/Cargo.toml
Normal file
12
crates/ra_text_edit/Cargo.toml
Normal file
@ -0,0 +1,12 @@
|
||||
[package]
|
||||
edition = "2018"
|
||||
name = "ra_text_edit"
|
||||
version = "0.1.0"
|
||||
authors = ["Aleksey Kladov <aleksey.kladov@gmail.com>"]
|
||||
publish = false
|
||||
|
||||
[dependencies]
|
||||
text_unit = "0.1.5"
|
||||
|
||||
[dev-dependencies]
|
||||
test_utils = { path = "../test_utils" }
|
@ -1,5 +1,6 @@
|
||||
use crate::{TextRange, TextUnit};
|
||||
use ra_syntax::{text_utils::contains_offset_nonstrict, AtomEdit};
|
||||
use crate::AtomEdit;
|
||||
use crate::text_utils::contains_offset_nonstrict;
|
||||
use text_unit::{TextRange, TextUnit};
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct Edit {
|
29
crates/ra_text_edit/src/lib.rs
Normal file
29
crates/ra_text_edit/src/lib.rs
Normal file
@ -0,0 +1,29 @@
|
||||
mod edit;
|
||||
pub mod text_utils;
|
||||
|
||||
pub use crate::edit::{Edit, EditBuilder};
|
||||
|
||||
use text_unit::{TextRange, TextUnit};
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct AtomEdit {
|
||||
pub delete: TextRange,
|
||||
pub insert: String,
|
||||
}
|
||||
|
||||
impl AtomEdit {
|
||||
pub fn replace(range: TextRange, replace_with: String) -> AtomEdit {
|
||||
AtomEdit {
|
||||
delete: range,
|
||||
insert: replace_with,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn delete(range: TextRange) -> AtomEdit {
|
||||
AtomEdit::replace(range, String::new())
|
||||
}
|
||||
|
||||
pub fn insert(offset: TextUnit, text: String) -> AtomEdit {
|
||||
AtomEdit::replace(TextRange::offset_len(offset, 0.into()), text)
|
||||
}
|
||||
}
|
5
crates/ra_text_edit/src/text_utils.rs
Normal file
5
crates/ra_text_edit/src/text_utils.rs
Normal file
@ -0,0 +1,5 @@
|
||||
use text_unit::{TextRange, TextUnit};
|
||||
|
||||
pub fn contains_offset_nonstrict(range: TextRange, offset: TextUnit) -> bool {
|
||||
range.start() <= offset && offset <= range.end()
|
||||
}
|
Loading…
Reference in New Issue
Block a user