A simple CPU rendered GUI IDE experience.
Diffstat (limited to 'src/text.rs')
| -rw-r--r-- | src/text.rs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/text.rs b/src/text.rs index 00a2e65..0873802 100644 --- a/src/text.rs +++ b/src/text.rs @@ -478,6 +478,28 @@ impl TextArea { } Ok(()) } + pub fn apply_snippet_tedit_raw( + SnippetTextEdit { text_edit: x, insert_text_format, .. }: &SnippetTextEdit, + text: &'_ mut Rope, + ) -> Option<()> { + match insert_text_format { + Some(lsp_types::InsertTextFormat::SNIPPET) => { + let begin = text.l_position(x.range.start)?; + let end = text.l_position(x.range.end)?; + text.try_remove(begin..end).ok()?; + let (_, tex) = + crate::sni::Snippet::parse(&x.new_text, begin)?; + text.try_insert(begin, &tex).ok()?; + } + _ => { + let begin = text.l_position(x.range.start)?; + let end = text.l_position(x.range.end)?; + text.try_remove(begin..end).ok()?; + text.try_insert(begin, &x.new_text).ok()?; + } + } + Some(()) + } pub fn apply_snippet_tedit( &mut self, SnippetTextEdit { text_edit, insert_text_format, .. }: &SnippetTextEdit, @@ -491,6 +513,7 @@ impl TextArea { } Ok(()) } + pub fn apply_snippet(&mut self, x: &TextEdit) -> anyhow::Result<()> { let begin = self .l_position(x.range.start) |