A simple CPU rendered GUI IDE experience.
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs24
1 files changed, 9 insertions, 15 deletions
diff --git a/src/main.rs b/src/main.rs
index 362762b..93d43f6 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -75,7 +75,7 @@ use winit::window::Icon;
use crate::bar::Bar;
use crate::hov::Hovr;
-use crate::lsp::{RedrawAfter, RequestError, RqS};
+use crate::lsp::{Client, RedrawAfter, RequestError, RqS};
use crate::sym::Symbols;
use crate::text::{Diff, Mapping, TextArea, col, is_word};
mod bar;
@@ -1265,7 +1265,7 @@ hovering.request = (DropH::new(handle), cursor_position).into();
if let Some(lsp) = lsp {
let State::Symbols(Rq { result :Some(x), request}) = &mut state else {unreachable!()};
let ptedit = x.tedit.rope.clone();
- if handle2(&event.logical_key, &mut x.tedit).is_some() || ptedit != x.tedit.rope {
+ if handle2(&event.logical_key, &mut x.tedit, lsp!()).is_some() || ptedit != x.tedit.rope {
*request = Some((DropH::new(lsp.runtime.spawn(window.redraw_after(lsp.symbols(x.tedit.rope.to_string())))), ()));
// state = State::Symbols(Rq::new(lsp.runtime.spawn(lsp.symbols("".into()))));
}
@@ -1351,15 +1351,8 @@ hovering.request = (DropH::new(handle), cursor_position).into();
).unwrap();
let mut f_ = |edits: &[SnippetTextEdit]|{
// let mut first = false;
- for SnippetTextEdit { text_edit, insert_text_format ,..}in edits {
- match insert_text_format {
- Some(InsertTextFormat::SNIPPET) => {
- text.apply_snippet(&text_edit).unwrap()
- },
- _ => {
- text.apply_adjusting(text_edit).unwrap();
- }
- }
+ for edit in edits {
+ text.apply_snippet_tedit(edit).unwrap();
}
};
match act.edit {
@@ -1427,7 +1420,7 @@ hovering.request = (DropH::new(handle), cursor_position).into();
let cb4 = text.cursor;
if let Key::Named(Enter | ArrowUp | ArrowDown | Tab) = event.logical_key && let CompletionState::Complete(..) = complete{
} else {
- handle2(&event.logical_key, &mut text);
+ handle2(&event.logical_key, &mut text, lsp!());
}
text.scroll_to_cursor();
inlay!();
@@ -1646,7 +1639,7 @@ hovering.request = (DropH::new(handle), cursor_position).into();
winit_app::run_app(event_loop, app);
}
-fn handle2<'a>(key: &'a Key, text: &mut TextArea) -> Option<&'a str> {
+fn handle2<'a>(key: &'a Key, text: &mut TextArea, l: Option<(&Client, &Path)>) -> Option<&'a str> {
use Key::*;
match key {
@@ -1676,6 +1669,7 @@ fn handle2<'a>(key: &'a Key, text: &mut TextArea) -> Option<&'a str> {
Named(ArrowDown) => text.down(),
Named(PageDown) => text.page_down(),
Named(PageUp) => text.page_up(),
+ Named(Enter) if let Some((l, p)) = l => l.enter(p, text),
Named(Enter) => text.enter(),
Character(x) => {
text.insert(&x);
@@ -1685,8 +1679,8 @@ fn handle2<'a>(key: &'a Key, text: &mut TextArea) -> Option<&'a str> {
};
None
}
-fn handle(key: Key, mut text: TextArea) -> TextArea {
- handle2(&key, &mut text);
+fn handle(key: Key, mut text: TextArea,) -> TextArea {
+ handle2(&key, &mut text,None);
text
}
pub static FONT: LazyLock<FontRef<'static>> = LazyLock::new(|| {