Fix minor bug from the move to the new buffer.

This commit is contained in:
Nathan Vegdahl 2020-02-23 20:10:30 +09:00
parent c4fa72405f
commit 4a33750a6b
2 changed files with 21 additions and 6 deletions

View File

@ -338,19 +338,24 @@ impl Editor {
pub fn insert_text_at_cursor(&mut self, text: &str) {
// TODO: handle multiple cursors.
let mark = self.buffer.mark_sets[self.c_msi].main().unwrap();
let range = mark.range();
let range = self.buffer.mark_sets[self.c_msi][0].range();
// Do the edit.
self.buffer.edit((range.start, range.end), text);
// Adjust cursor position.
let len = text.chars().count();
self.buffer.mark_sets[self.c_msi][0].head = range.start + len;
self.buffer.mark_sets[self.c_msi][0].tail = range.start + len;
self.buffer.mark_sets[self.c_msi][0].hh_pos = None;
// Adjust view
self.move_view_to_cursor();
}
pub fn insert_tab_at_cursor(&mut self) {
// TODO: handle multiple cursors.
let mark = self.buffer.mark_sets[self.c_msi].main().unwrap();
let range = mark.range();
let range = self.buffer.mark_sets[self.c_msi][0].range();
if self.soft_tabs {
// Figure out how many spaces to insert
@ -368,8 +373,18 @@ impl Editor {
];
self.buffer
.edit((range.start, range.end), space_strs[space_count]);
// Adjust cursor position.
self.buffer.mark_sets[self.c_msi][0].head = range.start + space_count;
self.buffer.mark_sets[self.c_msi][0].tail = range.start + space_count;
self.buffer.mark_sets[self.c_msi][0].hh_pos = None;
} else {
self.buffer.edit((range.start, range.end), "\t");
// Adjust cursor position.
self.buffer.mark_sets[self.c_msi][0].head = range.start + 1;
self.buffer.mark_sets[self.c_msi][0].tail = range.start + 1;
self.buffer.mark_sets[self.c_msi][0].hh_pos = None;
}
// Adjust view

View File

@ -78,7 +78,7 @@ impl Mark {
// Head.
let head = if self.head > range.1 {
self.head + new_len - (range.1 - range.0)
} else if self.head >= range.0 {
} else if self.head > range.0 {
range.0 + new_len
} else {
self.head
@ -87,7 +87,7 @@ impl Mark {
// Tail.
let tail = if self.tail > range.1 {
self.tail + new_len - (range.1 - range.0)
} else if self.tail >= range.0 {
} else if self.tail > range.0 {
range.0 + new_len
} else {
self.tail