style(core): expand some TODO comments

This commit is contained in:
Federico Terzi 2021-04-30 17:06:26 +02:00
parent 2f53752e97
commit f07ff326b5
5 changed files with 11 additions and 9 deletions

View File

@ -39,8 +39,6 @@ impl <'a> TextInjector for EventInjectorAdapter<'a> {
} }
fn inject_text(&self, text: &str) -> anyhow::Result<()> { fn inject_text(&self, text: &str) -> anyhow::Result<()> {
// TODO: wait for modifiers release
// Handle CRLF or LF line endings correctly // Handle CRLF or LF line endings correctly
let split_sequence = if text.contains("\r\n") { let split_sequence = if text.contains("\r\n") {
"\r\n" "\r\n"

View File

@ -33,8 +33,6 @@ impl<'a> KeyInjectorAdapter<'a> {
impl<'a> KeyInjector for KeyInjectorAdapter<'a> { impl<'a> KeyInjector for KeyInjectorAdapter<'a> {
fn inject_sequence(&self, keys: &[crate::engine::event::input::Key]) -> anyhow::Result<()> { fn inject_sequence(&self, keys: &[crate::engine::event::input::Key]) -> anyhow::Result<()> {
// TODO: wait for modifiers release
let converted_keys: Vec<_> = keys.iter().map(convert_to_inject_key).collect(); let converted_keys: Vec<_> = keys.iter().map(convert_to_inject_key).collect();
self.injector.send_keys(&converted_keys, Default::default()) // TODO: handle options self.injector.send_keys(&converted_keys, Default::default()) // TODO: handle options
} }

View File

@ -26,7 +26,10 @@ use log::warn;
use crate::engine::process::ModifierStatusProvider; use crate::engine::process::ModifierStatusProvider;
// TODO: explain /// This duration represents the maximum length for which a pressed modifier
/// event is considered valid. This is useful when the "release" event is
/// lost for whatever reason, so that espanso becomes eventually consistent
/// after a while.
const MAXIMUM_MODIFIERS_PRESS_TIME_RECORD: Duration = Duration::from_secs(30); const MAXIMUM_MODIFIERS_PRESS_TIME_RECORD: Duration = Duration::from_secs(30);
#[derive(Debug, Hash, PartialEq, Eq)] #[derive(Debug, Hash, PartialEq, Eq)]

View File

@ -17,8 +17,6 @@
* along with espanso. If not, see <https://www.gnu.org/licenses/>. * along with espanso. If not, see <https://www.gnu.org/licenses/>.
*/ */
// TODO: explain why this is needed
use std::{ use std::{
time::{Duration, Instant}, time::{Duration, Instant},
}; };
@ -28,13 +26,18 @@ use log::{trace, warn};
use super::super::Middleware; use super::super::Middleware;
use crate::engine::event::{Event, EventType}; use crate::engine::event::{Event, EventType};
// TODO: pass through config /// Maximum time to wait for modifiers being released before
/// giving up.
const MODIFIER_DELAY_TIMEOUT: Duration = Duration::from_secs(3); const MODIFIER_DELAY_TIMEOUT: Duration = Duration::from_secs(3);
pub trait ModifierStatusProvider { pub trait ModifierStatusProvider {
fn is_any_modifier_pressed(&self) -> bool; fn is_any_modifier_pressed(&self) -> bool;
} }
/// This middleware is used to delay the injection of text until
/// all modifiers have been released. This is needed as otherwise,
/// injections might misbehave as pressed modifiers might alter
/// the keys being injected.
pub struct DelayForModifierReleaseMiddleware<'a> { pub struct DelayForModifierReleaseMiddleware<'a> {
provider: &'a dyn ModifierStatusProvider, provider: &'a dyn ModifierStatusProvider,
} }

View File

@ -201,7 +201,7 @@ fn main() {
// .subcommand(install_subcommand) // .subcommand(install_subcommand)
// .subcommand(uninstall_subcommand); // .subcommand(uninstall_subcommand);
// TODO: explain that the start and restart commands are only meaningful // TODO: explain that the register and unregister commands are only meaningful
// when using the system daemon manager on macOS and Linux // when using the system daemon manager on macOS and Linux
let matches = clap_instance.clone().get_matches(); let matches = clap_instance.clone().get_matches();