Fix minor bug from the move to the new buffer.
This commit is contained in:
parent
c4fa72405f
commit
4a33750a6b
|
@ -338,19 +338,24 @@ impl Editor {
|
||||||
|
|
||||||
pub fn insert_text_at_cursor(&mut self, text: &str) {
|
pub fn insert_text_at_cursor(&mut self, text: &str) {
|
||||||
// TODO: handle multiple cursors.
|
// TODO: handle multiple cursors.
|
||||||
let mark = self.buffer.mark_sets[self.c_msi].main().unwrap();
|
let range = self.buffer.mark_sets[self.c_msi][0].range();
|
||||||
let range = mark.range();
|
|
||||||
|
|
||||||
|
// Do the edit.
|
||||||
self.buffer.edit((range.start, range.end), text);
|
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
|
// Adjust view
|
||||||
self.move_view_to_cursor();
|
self.move_view_to_cursor();
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn insert_tab_at_cursor(&mut self) {
|
pub fn insert_tab_at_cursor(&mut self) {
|
||||||
// TODO: handle multiple cursors.
|
// TODO: handle multiple cursors.
|
||||||
let mark = self.buffer.mark_sets[self.c_msi].main().unwrap();
|
let range = self.buffer.mark_sets[self.c_msi][0].range();
|
||||||
let range = mark.range();
|
|
||||||
|
|
||||||
if self.soft_tabs {
|
if self.soft_tabs {
|
||||||
// Figure out how many spaces to insert
|
// Figure out how many spaces to insert
|
||||||
|
@ -368,8 +373,18 @@ impl Editor {
|
||||||
];
|
];
|
||||||
self.buffer
|
self.buffer
|
||||||
.edit((range.start, range.end), space_strs[space_count]);
|
.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 {
|
} else {
|
||||||
self.buffer.edit((range.start, range.end), "\t");
|
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
|
// Adjust view
|
||||||
|
|
|
@ -78,7 +78,7 @@ impl Mark {
|
||||||
// Head.
|
// Head.
|
||||||
let head = if self.head > range.1 {
|
let head = if self.head > range.1 {
|
||||||
self.head + new_len - (range.1 - range.0)
|
self.head + new_len - (range.1 - range.0)
|
||||||
} else if self.head >= range.0 {
|
} else if self.head > range.0 {
|
||||||
range.0 + new_len
|
range.0 + new_len
|
||||||
} else {
|
} else {
|
||||||
self.head
|
self.head
|
||||||
|
@ -87,7 +87,7 @@ impl Mark {
|
||||||
// Tail.
|
// Tail.
|
||||||
let tail = if self.tail > range.1 {
|
let tail = if self.tail > range.1 {
|
||||||
self.tail + new_len - (range.1 - range.0)
|
self.tail + new_len - (range.1 - range.0)
|
||||||
} else if self.tail >= range.0 {
|
} else if self.tail > range.0 {
|
||||||
range.0 + new_len
|
range.0 + new_len
|
||||||
} else {
|
} else {
|
||||||
self.tail
|
self.tail
|
||||||
|
|
Loading…
Reference in New Issue
Block a user