newline bugfixes

This commit is contained in:
Anton-4 2021-09-06 11:27:54 +02:00
parent 91490044f6
commit adeccd3819
7 changed files with 18 additions and 25 deletions

View file

@ -186,11 +186,11 @@ impl<'a> EdModel<'a> {
for &node_id in leaf_node_ids {
let mark_node = self.mark_node_pool.get(node_id);
let node_content_str = mark_node.get_full_content();
let node_full_content = mark_node.get_full_content();
if node_content_str.contains('\n') {
if node_full_content.contains('\n') {
//insert seperate lines separately
let split_lines = node_content_str.split_inclusive('\n');
let split_lines = node_full_content.split('\n');
for line in split_lines {
@ -208,17 +208,19 @@ impl<'a> EdModel<'a> {
col_nr = 0;
}
} else {
let node_content = mark_node.get_content();
self.grid_node_map.insert_between_line(
line_nr,
col_nr,
node_content_str.len(),
node_content.len(),
node_id,
)?;
self.code_lines
.insert_between_line(line_nr, col_nr, &node_content_str)?;
.insert_between_line(line_nr, col_nr, &node_content)?;
col_nr += node_content_str.len();
col_nr += node_content.len();
}
}
@ -296,16 +298,9 @@ impl<'a> EdModel<'a> {
self.code_lines.del_range_at_line(line_nr, col_range)
}
pub fn del_blank_node(&mut self, txt_pos: TextPos, with_newline: bool) -> UIResult<()> {
pub fn del_blank_node(&mut self, txt_pos: TextPos) -> UIResult<()> {
let line_nr = txt_pos.line;
let column = txt_pos.column;
if with_newline {
self.del_range_at_line(line_nr, column..column + 2) // 1 for newline + 1 because range excludes end
} else {
self.del_at_line(line_nr, column)
}
self.del_at_line(txt_pos.line, txt_pos.column)
}
pub fn set_selected_expr(

View file

@ -93,7 +93,7 @@ pub fn start_new_let_value(ed_model: &mut EdModel, new_char: &char) -> EdResult<
.replace_node(curr_mark_node_id, val_mark_node);
// remove data corresponding to Blank node
ed_model.del_blank_node(old_caret_pos, curr_mark_node_has_nl)?;
ed_model.del_blank_node(old_caret_pos)?;
let char_len = 1;
ed_model.simple_move_carets_right(char_len);

View file

@ -62,7 +62,7 @@ pub fn start_new_list(ed_model: &mut EdModel) -> EdResult<InputOutcome> {
.mark_node_pool
.replace_node(curr_mark_node_id, nested_node);
ed_model.del_blank_node(old_caret_pos, curr_mark_node_has_nl)?;
ed_model.del_blank_node(old_caret_pos)?;
ed_model.simple_move_carets_right(nodes::LEFT_SQUARE_BR.len());

View file

@ -59,7 +59,7 @@ pub fn start_new_record(ed_model: &mut EdModel) -> EdResult<InputOutcome> {
.mark_node_pool
.replace_node(curr_mark_node_id, nested_node);
ed_model.del_blank_node(old_caret_pos, curr_mark_node_has_nl)?;
ed_model.del_blank_node(old_caret_pos)?;
ed_model.simple_move_carets_right(nodes::LEFT_ACCOLADE.len());

View file

@ -159,7 +159,7 @@ pub fn start_new_string(ed_model: &mut EdModel) -> EdResult<InputOutcome> {
.replace_node(curr_mark_node_id, new_string_node);
// remove data corresponding to Blank node
ed_model.del_blank_node(old_caret_pos, curr_mark_node_has_nl)?;
ed_model.del_blank_node(old_caret_pos)?;
// update GridNodeMap and CodeLines
EdModel::insert_between_line(

View file

@ -54,13 +54,11 @@ pub fn start_new_tld_value(ed_model: &mut EdModel, new_char: &char) -> EdResult<
let NodeContext {
old_caret_pos,
curr_mark_node_id,
curr_mark_node,
curr_mark_node:_,
parent_id_opt: _,
ast_node_id,
} = get_node_context(ed_model)?;
let curr_mark_node_has_nl = curr_mark_node.has_newline_at_end();
let val_expr_node = Expr2::Blank;
let val_expr_id = ed_model.module.env.pool.add(val_expr_node);
@ -123,7 +121,7 @@ pub fn start_new_tld_value(ed_model: &mut EdModel, new_char: &char) -> EdResult<
set_parent_for_all(curr_mark_node_id, &mut ed_model.mark_node_pool);
// remove data corresponding to old Blank node
ed_model.del_blank_node(old_caret_pos, curr_mark_node_has_nl)?;
ed_model.del_blank_node(old_caret_pos)?;
let char_len = 1;
ed_model.simple_move_carets_right(char_len);

View file

@ -114,7 +114,7 @@ pub fn move_caret_left<T: Lines>(
} else {
let curr_line_len = lines.line_len(old_line_nr - 1)?;
(old_line_nr - 1, curr_line_len - 1)
(old_line_nr - 1, curr_line_len)
}
} else {
(old_line_nr, old_col_nr - 1)
@ -185,7 +185,7 @@ pub fn move_caret_right<T: Lines>(
let is_last_line = lines.is_last_line(old_line_nr);
if !is_last_line {
if old_col_nr + 2 > curr_line_len {
if old_col_nr + 1 > curr_line_len {
(old_line_nr + 1, 0)
} else {
(old_line_nr, old_col_nr + 1)