mirror of https://github.com/helix-editor/helix
Reduce State use a bit further
This is a legacy type that should be fully removed.pull/658/head
parent
44a0512d95
commit
9d4c301563
|
@ -1,6 +1,5 @@
|
||||||
use crate::{Rope, Selection};
|
use crate::{Rope, Selection};
|
||||||
|
|
||||||
/// A state represents the current editor state of a single buffer.
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct State {
|
pub struct State {
|
||||||
pub doc: Rope,
|
pub doc: Rope,
|
||||||
|
@ -15,27 +14,4 @@ impl State {
|
||||||
selection: Selection::point(0),
|
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
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1828,15 +1828,14 @@ mod test {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_input_edits() {
|
fn test_input_edits() {
|
||||||
use crate::State;
|
|
||||||
use tree_sitter::InputEdit;
|
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(
|
let transaction = Transaction::change(
|
||||||
&state.doc,
|
&doc,
|
||||||
vec![(6, 11, Some("test".into())), (12, 17, None)].into_iter(),
|
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);
|
// transaction.apply(&mut state);
|
||||||
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
|
@ -1862,13 +1861,13 @@ mod test {
|
||||||
);
|
);
|
||||||
|
|
||||||
// Testing with the official example from tree-sitter
|
// 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 =
|
let transaction =
|
||||||
Transaction::change(&state.doc, vec![(8, 8, Some("a: u32".into()))].into_iter());
|
Transaction::change(&doc, vec![(8, 8, Some("a: u32".into()))].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.doc);
|
transaction.apply(&mut doc);
|
||||||
|
|
||||||
assert_eq!(state.doc, "fn test(a: u32) {}");
|
assert_eq!(doc, "fn test(a: u32) {}");
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
edits,
|
edits,
|
||||||
&[InputEdit {
|
&[InputEdit {
|
||||||
|
|
|
@ -689,21 +689,21 @@ mod test {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn transaction_change() {
|
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(
|
let transaction = Transaction::change(
|
||||||
&state.doc,
|
&state.doc,
|
||||||
// (1, 1, None) is a useless 0-width delete
|
// (1, 1, None) is a useless 0-width delete
|
||||||
vec![(1, 1, None), (6, 11, Some("void".into())), (12, 17, None)].into_iter(),
|
vec![(1, 1, None), (6, 11, Some("void".into())), (12, 17, None)].into_iter(),
|
||||||
);
|
);
|
||||||
transaction.apply(&mut state.doc);
|
transaction.apply(&mut doc);
|
||||||
assert_eq!(state.doc, Rope::from_str("hello void! 123"));
|
assert_eq!(doc, Rope::from_str("hello void! 123"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn changes_iter() {
|
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 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);
|
assert_eq!(transaction.changes_iter().collect::<Vec<_>>(), changes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue