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) {
|
||||
// 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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue
Block a user