mirror of
https://github.com/roc-lang/roc.git
synced 2025-10-02 08:11:12 +00:00
newline bugfixes
This commit is contained in:
parent
91490044f6
commit
adeccd3819
7 changed files with 18 additions and 25 deletions
|
@ -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(
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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());
|
||||
|
||||
|
|
|
@ -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());
|
||||
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue