Use absolute paths in key! macro

This commit is contained in:
Joscha 2022-08-30 17:25:50 +02:00
parent 5eeabea2de
commit 21245a8274
10 changed files with 26 additions and 36 deletions

View file

@ -10,7 +10,6 @@ use std::io;
use std::sync::{Arc, Weak}; use std::sync::{Arc, Weak};
use std::time::{Duration, Instant}; use std::time::{Duration, Instant};
use crossterm::event::KeyCode;
use parking_lot::FairMutex; use parking_lot::FairMutex;
use tokio::sync::mpsc::error::TryRecvError; use tokio::sync::mpsc::error::TryRecvError;
use tokio::sync::mpsc::{self, UnboundedReceiver, UnboundedSender}; use tokio::sync::mpsc::{self, UnboundedReceiver, UnboundedSender};
@ -25,7 +24,7 @@ use crate::vault::Vault;
pub use self::chat::ChatMsg; pub use self::chat::ChatMsg;
use self::chat::ChatState; use self::chat::ChatState;
use self::input::{key, InputEvent, KeyBindingsList, KeyEvent}; use self::input::{key, InputEvent, KeyBindingsList};
use self::rooms::Rooms; use self::rooms::Rooms;
use self::widgets::layer::Layer; use self::widgets::layer::Layer;
use self::widgets::list::ListState; use self::widgets::list::ListState;

View file

@ -9,14 +9,13 @@ use std::collections::HashSet;
use std::sync::Arc; use std::sync::Arc;
use async_trait::async_trait; use async_trait::async_trait;
use crossterm::event::KeyCode;
use parking_lot::FairMutex; use parking_lot::FairMutex;
use tokio::sync::Mutex; use tokio::sync::Mutex;
use toss::frame::{Frame, Pos, Size}; use toss::frame::{Frame, Pos, Size};
use toss::terminal::Terminal; use toss::terminal::Terminal;
use crate::store::{Msg, MsgStore}; use crate::store::{Msg, MsgStore};
use crate::ui::input::{key, InputEvent, KeyBindingsList, KeyEvent}; use crate::ui::input::{key, InputEvent, KeyBindingsList};
use crate::ui::util; use crate::ui::util;
use crate::ui::widgets::editor::EditorState; use crate::ui::widgets::editor::EditorState;
use crate::ui::widgets::Widget; use crate::ui::widgets::Widget;

View file

@ -1,6 +1,5 @@
use std::sync::Arc; use std::sync::Arc;
use crossterm::event::KeyCode;
use crossterm::style::{ContentStyle, Stylize}; use crossterm::style::{ContentStyle, Stylize};
use euphoxide::api::PersonalAccountView; use euphoxide::api::PersonalAccountView;
use euphoxide::conn::Status; use euphoxide::conn::Status;
@ -8,7 +7,7 @@ use parking_lot::FairMutex;
use toss::terminal::Terminal; use toss::terminal::Terminal;
use crate::euph::Room; use crate::euph::Room;
use crate::ui::input::{key, InputEvent, KeyBindingsList, KeyEvent}; use crate::ui::input::{key, InputEvent, KeyBindingsList};
use crate::ui::util; use crate::ui::util;
use crate::ui::widgets::editor::EditorState; use crate::ui::widgets::editor::EditorState;
use crate::ui::widgets::empty::Empty; use crate::ui::widgets::empty::Empty;

View file

@ -1,11 +1,10 @@
use std::sync::Arc; use std::sync::Arc;
use crossterm::event::KeyCode;
use parking_lot::FairMutex; use parking_lot::FairMutex;
use toss::terminal::Terminal; use toss::terminal::Terminal;
use crate::euph::Room; use crate::euph::Room;
use crate::ui::input::{key, InputEvent, KeyBindingsList, KeyEvent}; use crate::ui::input::{key, InputEvent, KeyBindingsList};
use crate::ui::util; use crate::ui::util;
use crate::ui::widgets::editor::EditorState; use crate::ui::widgets::editor::EditorState;
use crate::ui::widgets::popup::Popup; use crate::ui::widgets::popup::Popup;

View file

@ -1,11 +1,10 @@
use std::io; use std::io;
use crossterm::event::KeyCode;
use crossterm::style::{ContentStyle, Stylize}; use crossterm::style::{ContentStyle, Stylize};
use linkify::{LinkFinder, LinkKind}; use linkify::{LinkFinder, LinkKind};
use toss::styled::Styled; use toss::styled::Styled;
use crate::ui::input::{key, InputEvent, KeyBindingsList, KeyEvent}; use crate::ui::input::{key, InputEvent, KeyBindingsList};
use crate::ui::widgets::list::ListState; use crate::ui::widgets::list::ListState;
use crate::ui::widgets::popup::Popup; use crate::ui::widgets::popup::Popup;
use crate::ui::widgets::text::Text; use crate::ui::widgets::text::Text;

View file

@ -1,13 +1,12 @@
use std::sync::Arc; use std::sync::Arc;
use crossterm::event::KeyCode;
use euphoxide::conn::Joined; use euphoxide::conn::Joined;
use parking_lot::FairMutex; use parking_lot::FairMutex;
use toss::styled::Styled; use toss::styled::Styled;
use toss::terminal::Terminal; use toss::terminal::Terminal;
use crate::euph::{self, Room}; use crate::euph::{self, Room};
use crate::ui::input::{key, InputEvent, KeyBindingsList, KeyEvent}; use crate::ui::input::{key, InputEvent, KeyBindingsList};
use crate::ui::util; use crate::ui::util;
use crate::ui::widgets::editor::EditorState; use crate::ui::widgets::editor::EditorState;
use crate::ui::widgets::padding::Padding; use crate::ui::widgets::padding::Padding;

View file

@ -1,7 +1,6 @@
use std::collections::VecDeque; use std::collections::VecDeque;
use std::sync::Arc; use std::sync::Arc;
use crossterm::event::KeyCode;
use crossterm::style::{ContentStyle, Stylize}; use crossterm::style::{ContentStyle, Stylize};
use euphoxide::api::{Data, PacketType, Snowflake}; use euphoxide::api::{Data, PacketType, Snowflake};
use euphoxide::conn::{Joined, Joining, Status}; use euphoxide::conn::{Joined, Joining, Status};
@ -16,7 +15,7 @@ use crate::euph::{self, EuphRoomEvent};
use crate::macros::{ok_or_return, some_or_return}; use crate::macros::{ok_or_return, some_or_return};
use crate::store::MsgStore; use crate::store::MsgStore;
use crate::ui::chat::{ChatState, Reaction}; use crate::ui::chat::{ChatState, Reaction};
use crate::ui::input::{key, InputEvent, KeyBindingsList, KeyEvent}; use crate::ui::input::{key, InputEvent, KeyBindingsList};
use crate::ui::widgets::border::Border; use crate::ui::widgets::border::Border;
use crate::ui::widgets::editor::EditorState; use crate::ui::widgets::editor::EditorState;
use crate::ui::widgets::join::{HJoin, Segment, VJoin}; use crate::ui::widgets::join::{HJoin, Segment, VJoin};

View file

@ -53,33 +53,32 @@ impl From<crossterm::event::KeyEvent> for KeyEvent {
} }
} }
// TODO Use absolute paths
#[rustfmt::skip] #[rustfmt::skip]
macro_rules! key { macro_rules! key {
// key!(Paste text) // key!(Paste text)
( Paste $text:ident ) => { InputEvent::Paste($text) }; ( Paste $text:ident ) => { crate::ui::input::InputEvent::Paste($text) };
// key!('a') // key!('a')
( $key:literal ) => { InputEvent::Key(KeyEvent { code: KeyCode::Char($key), shift: _, ctrl: false, alt: false, }) }; ( $key:literal ) => { crate::ui::input::InputEvent::Key(crate::ui::input::KeyEvent { code: crossterm::event::KeyCode::Char($key), shift: _, ctrl: false, alt: false, }) };
( Ctrl + $key:literal ) => { InputEvent::Key(KeyEvent { code: KeyCode::Char($key), shift: _, ctrl: true, alt: false, }) }; ( Ctrl + $key:literal ) => { crate::ui::input::InputEvent::Key(crate::ui::input::KeyEvent { code: crossterm::event::KeyCode::Char($key), shift: _, ctrl: true, alt: false, }) };
( Alt + $key:literal ) => { InputEvent::Key(KeyEvent { code: KeyCode::Char($key), shift: _, ctrl: false, alt: true, }) }; ( Alt + $key:literal ) => { crate::ui::input::InputEvent::Key(crate::ui::input::KeyEvent { code: crossterm::event::KeyCode::Char($key), shift: _, ctrl: false, alt: true, }) };
// key!(Char c) // key!(Char c)
( Char $key:pat ) => { InputEvent::Key(KeyEvent { code: KeyCode::Char($key), shift: _, ctrl: false, alt: false, }) }; ( Char $key:pat ) => { crate::ui::input::InputEvent::Key(crate::ui::input::KeyEvent { code: crossterm::event::KeyCode::Char($key), shift: _, ctrl: false, alt: false, }) };
( Ctrl + Char $key:pat ) => { InputEvent::Key(KeyEvent { code: KeyCode::Char($key), shift: _, ctrl: true, alt: false, }) }; ( Ctrl + Char $key:pat ) => { crate::ui::input::InputEvent::Key(crate::ui::input::KeyEvent { code: crossterm::event::KeyCode::Char($key), shift: _, ctrl: true, alt: false, }) };
( Alt + Char $key:pat ) => { InputEvent::Key(KeyEvent { code: KeyCode::Char($key), shift: _, ctrl: false, alt: true, }) }; ( Alt + Char $key:pat ) => { crate::ui::input::InputEvent::Key(crate::ui::input::KeyEvent { code: crossterm::event::KeyCode::Char($key), shift: _, ctrl: false, alt: true, }) };
// key!(F n) // key!(F n)
( F $key:pat ) => { InputEvent::Key(KeyEvent { code: KeyCode::F($key), shift: false, ctrl: false, alt: false, }) }; ( F $key:pat ) => { crate::ui::input::InputEvent::Key(crate::ui::input::KeyEvent { code: crossterm::event::KeyCode::F($key), shift: false, ctrl: false, alt: false, }) };
( Shift + F $key:pat ) => { InputEvent::Key(KeyEvent { code: KeyCode::F($key), shift: true, ctrl: false, alt: false, }) }; ( Shift + F $key:pat ) => { crate::ui::input::InputEvent::Key(crate::ui::input::KeyEvent { code: crossterm::event::KeyCode::F($key), shift: true, ctrl: false, alt: false, }) };
( Ctrl + F $key:pat ) => { InputEvent::Key(KeyEvent { code: KeyCode::F($key), shift: false, ctrl: true, alt: false, }) }; ( Ctrl + F $key:pat ) => { crate::ui::input::InputEvent::Key(crate::ui::input::KeyEvent { code: crossterm::event::KeyCode::F($key), shift: false, ctrl: true, alt: false, }) };
( Alt + F $key:pat ) => { InputEvent::Key(KeyEvent { code: KeyCode::F($key), shift: false, ctrl: false, alt: true, }) }; ( Alt + F $key:pat ) => { crate::ui::input::InputEvent::Key(crate::ui::input::KeyEvent { code: crossterm::event::KeyCode::F($key), shift: false, ctrl: false, alt: true, }) };
// key!(other) // key!(other)
( $key:ident ) => { InputEvent::Key(KeyEvent { code: KeyCode::$key, shift: false, ctrl: false, alt: false, }) }; ( $key:ident ) => { crate::ui::input::InputEvent::Key(crate::ui::input::KeyEvent { code: crossterm::event::KeyCode::$key, shift: false, ctrl: false, alt: false, }) };
( Shift + $key:ident ) => { InputEvent::Key(KeyEvent { code: KeyCode::$key, shift: true, ctrl: false, alt: false, }) }; ( Shift + $key:ident ) => { crate::ui::input::InputEvent::Key(crate::ui::input::KeyEvent { code: crossterm::event::KeyCode::$key, shift: true, ctrl: false, alt: false, }) };
( Ctrl + $key:ident ) => { InputEvent::Key(KeyEvent { code: KeyCode::$key, shift: false, ctrl: true, alt: false, }) }; ( Ctrl + $key:ident ) => { crate::ui::input::InputEvent::Key(crate::ui::input::KeyEvent { code: crossterm::event::KeyCode::$key, shift: false, ctrl: true, alt: false, }) };
( Alt + $key:ident ) => { InputEvent::Key(KeyEvent { code: KeyCode::$key, shift: false, ctrl: false, alt: true, }) }; ( Alt + $key:ident ) => { crate::ui::input::InputEvent::Key(crate::ui::input::KeyEvent { code: crossterm::event::KeyCode::$key, shift: false, ctrl: false, alt: true, }) };
} }
pub(crate) use key; pub(crate) use key;

View file

@ -2,7 +2,6 @@ use std::collections::{HashMap, HashSet};
use std::iter; use std::iter;
use std::sync::Arc; use std::sync::Arc;
use crossterm::event::KeyCode;
use crossterm::style::{ContentStyle, Stylize}; use crossterm::style::{ContentStyle, Stylize};
use euphoxide::api::SessionType; use euphoxide::api::SessionType;
use euphoxide::conn::{Joined, Status}; use euphoxide::conn::{Joined, Status};
@ -16,7 +15,7 @@ use crate::euph::EuphRoomEvent;
use crate::vault::Vault; use crate::vault::Vault;
use super::euph::room::{EuphRoom, RoomStatus}; use super::euph::room::{EuphRoom, RoomStatus};
use super::input::{key, InputEvent, KeyBindingsList, KeyEvent}; use super::input::{key, InputEvent, KeyBindingsList};
use super::widgets::editor::EditorState; use super::widgets::editor::EditorState;
use super::widgets::join::{HJoin, Segment, VJoin}; use super::widgets::join::{HJoin, Segment, VJoin};
use super::widgets::layer::Layer; use super::widgets::layer::Layer;

View file

@ -1,10 +1,9 @@
use std::sync::Arc; use std::sync::Arc;
use crossterm::event::KeyCode;
use parking_lot::FairMutex; use parking_lot::FairMutex;
use toss::terminal::Terminal; use toss::terminal::Terminal;
use super::input::{key, InputEvent, KeyBindingsList, KeyEvent}; use super::input::{key, InputEvent, KeyBindingsList};
use super::widgets::editor::EditorState; use super::widgets::editor::EditorState;
pub fn prompt( pub fn prompt(
@ -73,8 +72,8 @@ pub fn handle_editor_input_event(
// Enter with *any* modifier pressed - if ctrl and shift don't // Enter with *any* modifier pressed - if ctrl and shift don't
// work, maybe alt does // work, maybe alt does
key!(Enter) => return false, key!(Enter) => return false,
InputEvent::Key(KeyEvent { InputEvent::Key(crate::ui::input::KeyEvent {
code: KeyCode::Enter, code: crossterm::event::KeyCode::Enter,
.. ..
}) if char_filter('\n') => editor.insert_char(terminal.frame(), '\n'), }) if char_filter('\n') => editor.insert_char(terminal.frame(), '\n'),