Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'src/edi/st.rs')
-rw-r--r--src/edi/st.rs85
1 files changed, 42 insertions, 43 deletions
diff --git a/src/edi/st.rs b/src/edi/st.rs
index 3fe6b31..40be312 100644
--- a/src/edi/st.rs
+++ b/src/edi/st.rs
@@ -1,10 +1,9 @@
#![allow(dead_code, unused, unexpected_cfgs)]
use Default::default;
use NamedKey::*;
-use lsp_types::request::HoverRequest;
use lsp_types::*;
use regex::Regex;
-use rust_analyzer::lsp::ext::Runnable;
+use rust_analyzer::lsp::ext::{CodeAction, Runnable};
use winit::event::MouseButton;
use winit::keyboard::{Key, NamedKey, SmolStr};
@@ -35,6 +34,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
@@ -78,9 +82,15 @@ Default => {
K(_) => _ [Edit],
M(_) => _,
},
+// Matches(x) => {
+ // K(Key::Character("d") if ctrl()) => _ [GoToMatch],
+ // C(_) => Default [Reinsert],
+ // K(_) => Default [Reinsert],
+ // K(_) => Default [Reinsert],
+// },
Hovered => {
HOnSomething(((usize, usize)) => pos) => Hovering(Rq<Hovring, Option<Hovr>, ((usize, usize), TextDocumentPositionParams), RequestError<HoverRequest>> => default()) [SetHovering],
- HOnNothing => Default,
+ HOnNothing => Default [R(bool => false)],
},
Hovering(x) => {
// now hovering over something else, cancel existing hover
@@ -93,46 +103,10 @@ Hovering(x) => {
C(_) => _ [Hover],
MovedOut => Default,
Scrolled => Default,
- // reconsidering
- K(Key::Character("s") if ctrl()) => Save [Save],
- K(Key::Character("q") if ctrl()) => Dead [Quit],
- K(Key::Character("v") if ctrl()) => Default [Paste],
- K(Key::Character("z") if ctrl()) => Default [Undo],
- K(Key::Character("d") if ctrl()) => Default [GoToMatch],
- K(Key::Character("y") if ctrl()) => Default [Redo],
- K(Key::Character("f") if ctrl()) => Procure((default(), InputRequest::Search)),
- K(Key::Character("o") if ctrl()) => Procure((default(), InputRequest::OpenFile)),
- K(Key::Character("c") if ctrl()) => Default ,
- K(Key::Character("l") if ctrl()) => Default [Symbols],
- K(Key::Character(".") if ctrl()) => Default [CodeAction],
- K(Key::Character("0") if ctrl()) => Default [MatchingBrace],
- K(Key::Character("`") if ctrl()) => Default [SpawnTerminal],
- K(Key::Character("/") if ctrl()) => Default [Comment(State => State::Default)],
- K(Key::Character("p") if ctrl()) => Command(Commands => default()),
- K(Key::Named(Backspace) if alt()) => Default [DeleteBracketPair],
- K(Key::Named(F1)) => Procure((default(), InputRequest::RenameSymbol)),
- K(Key::Named(F10)) => GoToL(GoToList => default()) [GoToImplementations],
- K(Key::Named(k @ (ArrowUp | ArrowDown)) if alt()) => Default [InsertCursor(Direction => {
- if k == ArrowUp {Direction::Above} else { Direction::Below }
- })],
- K(Key::Named(ArrowUp | ArrowLeft | ArrowDown | ArrowRight | Home | End) if shift()) => Selection [StartSelection],
- M(MouseButton::Left if shift()) => Selection [StartSelection],
- M(MouseButton::Left if alt()) => Default [InsertCursorAtMouse],
- M(MouseButton::Left if ctrl()) => Default [GoToDefinition(Option<TextDocumentPositionParams> => None)],
- M(MouseButton::Left) => Default [MoveCursor],
- K(Key::Character("=") if ctrl()) => Default [NavForward],
- K(Key::Character("-") if ctrl()) => Default [NavBack],
- M(MouseButton::Back) => Default [NavBack],
- M(MouseButton::Forward) => _ [NavForward],
- C(((usize, usize)) => .. if unsafe { CLICKING }) => Selection [StartSelection],
- Changed => RequestBoolean(BoolRequest => BoolRequest::ReloadFile),
- K(Key::Named(Escape)) => Default [Escape],
- K(_) => Default [Edit],
- // duplicate zone
-
+ K(_) => Default [Reinsert],
M(MouseButton::Left if ctrl()) => Default [GoToDefinition(x.request.map(|x| x.1.1).or(x.result.and_then(|x| x.of.iter().find_map(|x| x.tdpp()))))],
- M(_) => _ [ClickedHover],
+ M(_) => Default [Reinsert],
},
Command(_) => K(Key::Named(Escape)) => Default,
Command(t) => K(Key::Named(Enter) if let Some(Ok(x)) = t.sel(None)) => Default [ProcessCommand((Commands, crate::commands::Cmd) => (t, x))],
@@ -144,21 +118,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::RunnablesRequest> => 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(_) => _,
},
@@ -186,6 +171,20 @@ Symbols(Rq::<Symbols, Option<SymbolsList>, (), AQErr> => _rq) => {
C(_) => _,
M(_) => _,
},
+
+
+KillRing(crate::killring::KillRM => x) => {
+ K(Key::Named(Tab) if shift()) => KillRing({ let mut x = x; x.next(); x }),
+ K(Key::Named(ArrowDown)) => KillRing({ let mut x = x; x.next(); x }),
+ K(Key::Named(ArrowUp | Tab)) => KillRing({ let mut x = x; x.back(); x }),
+ K(Key::Named(Enter)) => Default [Revive(crate::killring::KillRM => x)],
+ K(Key::Named(Escape)) => Default,
+ K(_) => _ [KillRMHandleKey],
+ // K(_) => _ [GTLHandleKey],
+ C(_) => _,
+ M(_) => _,
+},
+
CodeAction(Rq { result : Some(_x), request }) => {
K(Key::Named(Tab) if shift()) => _ [CASelectPrev],
K(Key::Named(ArrowDown | Tab)) => _ [CASelectNext],
@@ -193,7 +192,7 @@ CodeAction(Rq { result : Some(_x), request }) => {
K(Key::Named(Enter | ArrowRight)) => _ [CASelectRight],
K(Key::Named(ArrowLeft)) => _ [CASelectLeft],
},
-CodeAction(RqS<act::CodeActions, lsp_request!("textDocument/codeAction")> => rq) => {
+CodeAction(RqS<act::CodeActions, rust_analyzer::lsp::ext::CodeActionRequest> => rq) => {
K(Key::Named(Escape)) => Default,
C(_) => _,
M(_) => _,