Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'src/edi/st.rs')
| -rw-r--r-- | src/edi/st.rs | 85 |
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(_) => _, |