aboutsummaryrefslogtreecommitdiff
path: root/helix-core
diff options
context:
space:
mode:
authorBlaž Hrastnik2021-08-24 14:43:05 +0000
committerBlaž Hrastnik2021-08-26 00:21:07 +0000
commit9d4c3015632abba2ae6713874907825f6335b71a (patch)
tree02a28ed2b4418141e3a2598a531733e4506d275a /helix-core
parent44a0512d951806cc98ab30ccc73009ba2631e42f (diff)
Reduce State use a bit further
This is a legacy type that should be fully removed.
Diffstat (limited to 'helix-core')
-rw-r--r--helix-core/src/state.rs24
-rw-r--r--helix-core/src/syntax.rs17
-rw-r--r--helix-core/src/transaction.rs10
3 files changed, 13 insertions, 38 deletions
diff --git a/helix-core/src/state.rs b/helix-core/src/state.rs
index 7e4a7f70..dcc4b11b 100644
--- a/helix-core/src/state.rs
+++ b/helix-core/src/state.rs
@@ -1,6 +1,5 @@
use crate::{Rope, Selection};
-/// A state represents the current editor state of a single buffer.
#[derive(Debug, Clone)]
pub struct State {
pub doc: Rope,
@@ -15,27 +14,4 @@ impl State {
selection: Selection::point(0),
}
}
-
- // update/transact:
- // update(desc) => transaction ? transaction.doc() for applied doc
- // transaction.apply(doc)
- // doc.transact(fn -> ... end)
-
- // replaceSelection (transaction that replaces selection)
- // changeByRange
- // changes
- // slice
- //
- // getters:
- // tabSize
- // indentUnit
- // languageDataAt()
- //
- // config:
- // indentation
- // tabSize
- // lineUnit
- // syntax
- // foldable
- // changeFilter/transactionFilter
}
diff --git a/helix-core/src/syntax.rs b/helix-core/src/syntax.rs
index 4bceb73b..64b921e6 100644
--- a/helix-core/src/syntax.rs
+++ b/helix-core/src/syntax.rs
@@ -1828,15 +1828,14 @@ mod test {
#[test]
fn test_input_edits() {
- use crate::State;
use tree_sitter::InputEdit;
- let state = State::new("hello world!\ntest 123".into());
+ let doc = Rope::from("hello world!\ntest 123");
let transaction = Transaction::change(
- &state.doc,
+ &doc,
vec![(6, 11, Some("test".into())), (12, 17, None)].into_iter(),
);
- let edits = LanguageLayer::generate_edits(state.doc.slice(..), transaction.changes());
+ let edits = LanguageLayer::generate_edits(doc.slice(..), transaction.changes());
// transaction.apply(&mut state);
assert_eq!(
@@ -1862,13 +1861,13 @@ mod test {
);
// Testing with the official example from tree-sitter
- let mut state = State::new("fn test() {}".into());
+ let mut doc = Rope::from("fn test() {}");
let transaction =
- Transaction::change(&state.doc, vec![(8, 8, Some("a: u32".into()))].into_iter());
- let edits = LanguageLayer::generate_edits(state.doc.slice(..), transaction.changes());
- transaction.apply(&mut state.doc);
+ Transaction::change(&doc, vec![(8, 8, Some("a: u32".into()))].into_iter());
+ let edits = LanguageLayer::generate_edits(doc.slice(..), transaction.changes());
+ transaction.apply(&mut doc);
- assert_eq!(state.doc, "fn test(a: u32) {}");
+ assert_eq!(doc, "fn test(a: u32) {}");
assert_eq!(
edits,
&[InputEdit {
diff --git a/helix-core/src/transaction.rs b/helix-core/src/transaction.rs
index e20e550f..f465992d 100644
--- a/helix-core/src/transaction.rs
+++ b/helix-core/src/transaction.rs
@@ -689,21 +689,21 @@ mod test {
#[test]
fn transaction_change() {
- let mut state = State::new("hello world!\ntest 123".into());
+ let mut doc = Rope::from("hello world!\ntest 123".into());
let transaction = Transaction::change(
&state.doc,
// (1, 1, None) is a useless 0-width delete
vec![(1, 1, None), (6, 11, Some("void".into())), (12, 17, None)].into_iter(),
);
- transaction.apply(&mut state.doc);
- assert_eq!(state.doc, Rope::from_str("hello void! 123"));
+ transaction.apply(&mut doc);
+ assert_eq!(doc, Rope::from_str("hello void! 123"));
}
#[test]
fn changes_iter() {
- let state = State::new("hello world!\ntest 123".into());
+ let doc = Rope::from("hello world!\ntest 123".into());
let changes = vec![(6, 11, Some("void".into())), (12, 17, None)];
- let transaction = Transaction::change(&state.doc, changes.clone().into_iter());
+ let transaction = Transaction::change(&doc, changes.clone().into_iter());
assert_eq!(transaction.changes_iter().collect::<Vec<_>>(), changes);
}