A simple CPU rendered GUI IDE experience.
Diffstat (limited to 'src/text.rs')
| -rw-r--r-- | src/text.rs | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/text.rs b/src/text.rs index e37c8c7..293244f 100644 --- a/src/text.rs +++ b/src/text.rs @@ -17,7 +17,7 @@ use helix_core::Syntax; use helix_core::syntax::{HighlightEvent, Loader}; use implicit_fn::implicit_fn; use log::error; -use lsp_types::{Position, SemanticToken, SemanticTokensLegend}; +use lsp_types::{Position, SemanticToken, SemanticTokensLegend, TextEdit}; use ropey::{Rope, RopeSlice}; use tree_house::Language; use winit::keyboard::{NamedKey, SmolStr}; @@ -308,6 +308,13 @@ impl TextArea { self.set_ho(); } + pub fn apply(&mut self, x: TextEdit) -> Result<(), ropey::Error> { + let begin = self.l_position(x.range.start)?; + let end = self.l_position(x.range.end)?; + self.rope.try_remove(begin..end)?; + self.rope.try_insert(begin, &x.new_text)?; + Ok(()) + } pub fn cursor(&self) -> (usize, usize) { self.xy(self.cursor) } |