A simple CPU rendered GUI IDE experience.
Diffstat (limited to 'src/edi/st.rs')
-rw-r--r--src/edi/st.rs18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/edi/st.rs b/src/edi/st.rs
index db98b9a..efc2081 100644
--- a/src/edi/st.rs
+++ b/src/edi/st.rs
@@ -35,6 +35,11 @@ pub enum LR {
Left,
Right,
}
+
+#[cfg(target_family = "unix")]
+type Run = crate::runnables::Runnables;
+#[cfg(not(target_family = "unix"))]
+type Run = ();
rust_fsm::state_machine! {
#[derive(Debug)]
pub(crate) State => #[derive(Debug)] pub(crate) Action => #[derive(Debug)] pub(crate) Do
@@ -114,21 +119,32 @@ Command(mut t) => K(k) => Command({ if let Some(_) = handle2(&k, &mut t.tedit, N
}; t }) [CmdTyped],
Command(t) => C(_) => _,
Command(t) => K(_) => _,
+#[cfg(target_family = "unix")]
Runnables(_x) => {
+ #[cfg(target_family = "unix")]
K(Key::Named(Escape)) => Default,
},
-Runnables(RqS::<crate::runnables::Runnables, rust_analyzer::lsp::ext::Runnables> => Rq { result: Some(mut x), request }) => {
+#[cfg(target_family = "unix")]
+Runnables(RqS::<Run, rust_analyzer::lsp::ext::Runnables> => Rq { result: Some(mut x), request }) => {
+ #[cfg(target_family = "unix")]
K(Key::Named(Tab) if shift()) => Runnables({ x.next(); Rq { result: Some(x), request }}),
+ #[cfg(target_family = "unix")]
K(Key::Named(ArrowDown)) => Runnables({ x.next(); Rq { result: Some(x), request }}),
+ #[cfg(target_family = "unix")]
K(Key::Named(ArrowUp | Tab)) => Runnables({ x.back(); Rq { result: Some(x), request }}),
+ #[cfg(target_family = "unix")]
K(Key::Named(Enter) if let Some(Ok(x_)) = x.clone().sel(None)) => Default [Run(Runnable => x_.clone())],
+ #[cfg(target_family = "unix")]
K(k) => Runnables({
if let Some(_) = handle2(&k, &mut x.tedit, None) {
x.selection = 0; x.vo = 0;
}; Rq { result: Some(x), request } }),
},
+#[cfg(target_family = "unix")]
Runnables(_x) => {
+ #[cfg(target_family = "unix")]
C(_) => _,
+ #[cfg(target_family = "unix")]
M(_) => _,
},