Blaž Hrastnik
|
ca98210d20
|
fix: insert() | delete() would calculate the new insert incorrectly
Refs #386
|
2021-06-28 17:49:34 +09:00 |
|
Ivan Tham
|
7cc13fefe9
|
Derive debug without feature
Note that this also removed those `finish_non_exhaustive()`.
|
2021-06-10 22:00:08 +09:00 |
|
notoria
|
1a3a924634
|
Implement Debug for data structure as a feature
|
2021-06-10 22:00:08 +09:00 |
|
Kirawi
|
b873fb9897
|
Fix Unicode (#135)
* init
* wip
* wip
* fix unicode break
* fix unicode break
* Update helix-core/src/transaction.rs
Co-authored-by: Benoît Cortier <benoit.cortier@fried-world.eu>
* clippy
* fix
* add changes
* added test
* wip
* wip
* wip
* wip
* fix
* fix view
* fix #88
Co-authored-by: Benoît Cortier <benoit.cortier@fried-world.eu>
|
2021-06-08 13:20:15 +09:00 |
|
Kirawi
|
c17dcb8633
|
Fixing Multiple Panics (#121)
* init
* wip
* wip
|
2021-06-05 12:49:19 +09:00 |
|
Ivan Tham
|
f5f46b1fed
|
Separate document history into Cell
As history is used separately from the rest of the edits, separating it
can avoid needless borrowing and cloning. But one need to be aware later.
|
2021-06-02 23:47:50 +08:00 |
|
Blaž Hrastnik
|
f00cb15137
|
core: Improve changeset composition behavior.
It would fail to combine with an empty set.
|
2021-04-06 19:01:48 +09:00 |
|
Blaž Hrastnik
|
9eaef6e333
|
Fully drop State references.
|
2021-03-31 15:45:18 +09:00 |
|
Blaž Hrastnik
|
1d96cbfbd2
|
Transaction: Add a changes_iter() that can convert back to a list of Changes
|
2021-03-29 14:56:00 +09:00 |
|
Blaž Hrastnik
|
a74ff6bc03
|
Transaction: need to consume insert | delete properly.
|
2021-03-29 14:55:35 +09:00 |
|
Blaž Hrastnik
|
06aca7691c
|
clippy lint
|
2021-03-24 14:58:01 +09:00 |
|
Blaž Hrastnik
|
cbcacb1063
|
Merge some imports.
|
2021-03-22 12:40:07 +09:00 |
|
Blaž Hrastnik
|
798dbd27c5
|
Selection: fail early if new() is called with no ranges.
|
2021-03-22 12:22:33 +09:00 |
|
Blaž Hrastnik
|
f29f01858d
|
Implement iter() and len() directly on Selection.
|
2021-03-19 11:14:13 +09:00 |
|
Blaž Hrastnik
|
59e6024186
|
Remove State from a few more signatures.
|
2021-03-18 14:17:32 +09:00 |
|
Blaž Hrastnik
|
8eaf9a432d
|
Make Transaction::change only rely on the rope.
|
2021-03-18 13:39:56 +09:00 |
|
Blaž Hrastnik
|
1cf887dea9
|
Cleanup: use doc.selection() instead of doc.state.selection().
|
2021-03-14 17:14:34 +09:00 |
|
Blaž Hrastnik
|
af55ebd002
|
transaction: Also modify map_pos to work with insert|delete order.
|
2021-02-18 12:17:33 +09:00 |
|
Blaž Hrastnik
|
9cac44c7c0
|
minor changes
|
2021-02-17 17:26:27 +09:00 |
|
Blaž Hrastnik
|
9821c4dd3b
|
Optimize Changeset::is_empty()
Checked the ASM output for these three options:
pub enum Operation {
/// Move cursor by n characters.
Retain(usize),
/// Delete n characters.
Delete(usize),
/// Insert text at position.
Insert(String),
}
pub struct A {
changes: Vec<Operation>,
len: usize,
}
impl A {
pub fn is_empty1(&self) -> bool {
match self.changes.as_slice() {
[] => true,
[Operation::Retain(_)] => true,
_ => false,
}
}
/// `true` when the set is empty.
pub fn is_empty2(&self) -> bool {
let len = self.changes.len();
len == 0
|| (
len == 1
&& self.changes[0] == Operation::Retain(self.len)
)
}
pub fn is_empty3(&self) -> bool {
match self.changes.as_slice() {
[] | [Operation::Retain(_)] => true,
_ => false
}
}
}
|
2021-02-16 13:39:04 +09:00 |
|
Blaž Hrastnik
|
b0b5451c38
|
Since insert preceedes deletes, follow that ordering in Transaction::changes.
Produces the same output but will take the happy path.
|
2021-02-16 11:09:05 +09:00 |
|
Blaž Hrastnik
|
b4312c9492
|
transaction: Use builder methods to generate compact changesets.
|
2021-02-16 11:03:36 +09:00 |
|
Blaž Hrastnik
|
19fb4ed835
|
transaction: Merge consecutive inserts on compose.
|
2021-02-16 00:15:49 +09:00 |
|
Blaž Hrastnik
|
777a80917d
|
Address clippy lints.
|
2021-01-08 16:37:36 +09:00 |
|
Blaž Hrastnik
|
cc6bdf8f66
|
Text change generation, RPC call handling.
|
2020-12-03 13:10:35 +09:00 |
|
Blaž Hrastnik
|
b39849dde1
|
Refactor: Document type as a wrapper around barebones State.
|
2020-12-03 13:10:35 +09:00 |
|
Blaž Hrastnik
|
0b74d423d0
|
Validate compose len after applying a is same as before applying b.
|
2020-10-14 13:35:54 +09:00 |
|
Blaž Hrastnik
|
7fcc6f8f1b
|
Fix overlapping (insert | delete) compose
|
2020-10-14 11:48:01 +09:00 |
|
Blaž Hrastnik
|
94f9603c74
|
Fix compose not merging certain changesets correctly.
|
2020-10-14 09:38:52 +09:00 |
|
Blaž Hrastnik
|
4a648555ed
|
Don't try to compose zero-width deletes.
|
2020-10-13 23:13:56 +09:00 |
|
Blaž Hrastnik
|
490e23b645
|
Simplify changeset tracking.
|
2020-10-13 23:13:56 +09:00 |
|
Blaž Hrastnik
|
8098279676
|
Cleanup
|
2020-10-13 23:13:56 +09:00 |
|
Blaž Hrastnik
|
1dba0f2b1c
|
Simple yank/paste registers.
|
2020-10-13 23:13:56 +09:00 |
|
Blaž Hrastnik
|
eba5b1ef33
|
Fix changeset composition, lengths don't have to match.
|
2020-10-13 23:13:56 +09:00 |
|
Blaž Hrastnik
|
b765c17896
|
Hacky undo/redo integration.
|
2020-10-13 23:13:56 +09:00 |
|
Blaž Hrastnik
|
fd311fb8ad
|
Undo tree draft.
We keep a tree of transactions. This allows for persistent undo by
simply serializing the changesets.
|
2020-10-13 23:13:56 +09:00 |
|
Blaž Hrastnik
|
883b77bd24
|
Fix transaction.invert()/.apply() using byte counts instead of char counts.
|
2020-10-04 17:37:46 +09:00 |
|
Blaž Hrastnik
|
aa077a07f3
|
Implement Transaction::invert.
|
2020-10-02 18:16:26 +09:00 |
|
Blaž Hrastnik
|
36e7e2133f
|
Split selection on regex, fix InputEdit generation.
|
2020-09-29 01:01:27 +09:00 |
|
Blaž Hrastnik
|
3020077da8
|
Extend selection commands.
|
2020-09-29 01:00:35 +09:00 |
|
Blaž Hrastnik
|
48330ddb5f
|
Command needs access to view information for certain changes.
|
2020-09-19 23:16:00 +09:00 |
|
Blaž Hrastnik
|
3859f6963d
|
More work on the UI.
|
2020-09-19 11:58:08 +09:00 |
|
Blaž Hrastnik
|
088f8a82af
|
Incremental parsing: rough draft.
|
2020-09-17 16:32:40 +09:00 |
|
Blaž Hrastnik
|
96db02742e
|
Simplify some more code.
|
2020-09-13 23:40:11 +09:00 |
|
Blaž Hrastnik
|
0427acd18c
|
Avoid collect() by accepting iterators into Transaction::change.
|
2020-09-13 23:12:14 +09:00 |
|
Blaž Hrastnik
|
b08278807e
|
Add 'A', 'I' commands.
|
2020-09-13 20:04:16 +09:00 |
|
Blaž Hrastnik
|
fb0f56b747
|
Add 'o' command.
|
2020-09-13 19:51:42 +09:00 |
|
Blaž Hrastnik
|
22cb7b3338
|
Change -> Operation, Change2 -> Change
|
2020-09-13 19:18:05 +09:00 |
|
Blaž Hrastnik
|
d86f0feafc
|
Abstract Transaction::change from change_by_selection.
|
2020-09-13 15:48:15 +09:00 |
|
Blaž Hrastnik
|
d466882d04
|
Abstract Transaction::change_by_selection, working del/backspace.
|
2020-09-13 11:32:37 +09:00 |
|