A simple CPU rendered GUI IDE experience.
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/main.rs b/src/main.rs
index 8130ba2..7adae38 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -41,6 +41,7 @@ mod sym;
mod trm;
use std::fmt::{Debug, Display};
+use std::hash::Hash;
use std::mem::MaybeUninit;
use std::num::NonZeroU32;
use std::sync::LazyLock;
@@ -223,9 +224,10 @@ const BORDER: [u8; 3] = col!("#ffffff");
static mut __ED: MaybeUninit<Editor> = MaybeUninit::uninit();
extern "C" fn cleanup() {
- unsafe { __ED.assume_init_mut().store() };
+ unsafe { __ED.assume_init_mut().store().unwrap() };
}
extern "C" fn sigint(_: i32) {
+ cleanup();
std::process::exit(12);
}
@@ -551,8 +553,8 @@ impl<T> M<T> for Option<T> {
}
rust_fsm::state_machine! {
- #[derive(Debug)]
- pub(crate) CompletionState => CompletionAction<'i> => CDo
+ #[derive(Debug,Serialize,Deserialize)]
+ pub(crate) CompletionState => #[derive(Debug)] pub(crate) CompletionAction<'i> => pub(crate) CDo
None => Click => None,
None => K(Key<&'i str> => Key::Character(k @ ("." | ":"))) => Complete(
RqS<Complete, lsp_types::request::Completion, usize> => default()
@@ -599,3 +601,8 @@ fn filter(text: &TextArea) -> String {
.collect::<String>()
}
}
+
+pub fn hash(x: &impl Hash) -> u64 {
+ use std::hash::BuildHasher;
+ rustc_hash::FxBuildHasher::default().hash_one(x)
+}