From 976de7a5ccaf45dbcf222033abe6e4fd0ed68080 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1niel=20Buga?= Date: Mon, 11 Apr 2022 18:55:45 +0200 Subject: [PATCH] Take selections by either value or ref --- lapce-data/src/buffer/data.rs | 4 ++-- lapce-data/src/data.rs | 22 +++++++--------------- lapce-data/src/movement.rs | 6 ++++++ 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/lapce-data/src/buffer/data.rs b/lapce-data/src/buffer/data.rs index 26f86bb4..28770b43 100644 --- a/lapce-data/src/buffer/data.rs +++ b/lapce-data/src/buffer/data.rs @@ -659,14 +659,14 @@ pub fn first_non_blank_character_on_line(&self, line: usize) -> usize { pub fn edit_multiple( &mut self, - edits: &[(&Selection, &str)], + edits: &[(impl AsRef, &str)], edit_type: EditType, ) -> RopeDelta { let mut builder = DeltaBuilder::new(self.len()); let mut interval_rope = Vec::new(); for (selection, content) in edits { let rope = Rope::from(content); - for region in selection.regions() { + for region in selection.as_ref().regions() { interval_rope.push((region.min(), region.max(), rope.clone())); } } diff --git a/lapce-data/src/data.rs b/lapce-data/src/data.rs index 59b9d973..12c3bc0b 100644 --- a/lapce-data/src/data.rs +++ b/lapce-data/src/data.rs @@ -12,8 +12,8 @@ use crossbeam_channel::{unbounded, Receiver, Sender}; use druid::{ piet::{PietText, PietTextLayout, Text, TextLayout, TextLayoutBuilder}, - theme, Command, Data, Env, EventCtx, ExtEventSink, FontFamily, Lens, - Point, Rect, Size, Target, Vec2, WidgetId, WindowId, + theme, Command, Data, Env, EventCtx, ExtEventSink, FontFamily, Lens, Point, + Rect, Size, Target, Vec2, WidgetId, WindowId, }; use lapce_rpc::{ @@ -1916,7 +1916,7 @@ pub fn document_format( if !edits.is_empty() { let buffer = self.open_files.get_mut(path).unwrap(); - let edits: Vec<(Selection, String)> = edits + let edits: Vec<(Selection, &str)> = edits .iter() .map(|edit| { let selection = Selection::region( @@ -1929,20 +1929,11 @@ pub fn document_format( config.editor.tab_width, ), ); - (selection, edit.new_text.clone()) + (selection, edit.new_text.as_str()) }) .collect(); - self.edit( - path, - &edits.iter().map(|(s, c)| (s, c.as_str())).collect::>( - ), - EditType::Other, - config, - ); + self.edit(path, &edits, EditType::Other, config); } } } @@ -2042,7 +2033,7 @@ fn cursor_apply_delta(&mut self, path: &Path, delta: &RopeDelta) { pub fn edit( &mut self, path: &Path, - edits: &[(&Selection, &str)], + edits: &[(impl AsRef, &str)], edit_type: EditType, config: &Config, ) -> Option { @@ -2053,6 +2044,7 @@ pub fn edit( let buffer_len = buffer.len(); let mut move_cursor = true; for (selection, _) in edits.iter() { + let selection = selection.as_ref(); if selection.min_offset() == 0 && selection.max_offset() >= buffer_len - 1 { diff --git a/lapce-data/src/movement.rs b/lapce-data/src/movement.rs index 603b6313..a623f28b 100644 --- a/lapce-data/src/movement.rs +++ b/lapce-data/src/movement.rs @@ -502,6 +502,12 @@ pub struct Selection { last_inserted: usize, } +impl AsRef for Selection { + fn as_ref(&self) -> &Selection { + self + } +} + impl Selection { pub fn new() -> Selection { Selection {