From ad4762f01243f0fcdc8baa2b4a3dfd0d9a77cb53 Mon Sep 17 00:00:00 2001 From: Federico Terzi Date: Sat, 25 Sep 2021 15:56:28 +0200 Subject: [PATCH] feat(core): add VSCode patch on Windows --- espanso/src/patch/mod.rs | 1 + espanso/src/patch/patches/win/mod.rs | 3 +- espanso/src/patch/patches/win/vscode_win.rs | 44 +++++++++++++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 espanso/src/patch/patches/win/vscode_win.rs diff --git a/espanso/src/patch/mod.rs b/espanso/src/patch/mod.rs index e7c4185..94a1ca3 100644 --- a/espanso/src/patch/mod.rs +++ b/espanso/src/patch/mod.rs @@ -32,6 +32,7 @@ fn get_builtin_patches() -> Vec { #[cfg(target_os = "windows")] return vec![ patches::win::onenote_for_windows_10::patch(), + patches::win::vscode_win::patch(), ]; #[cfg(target_os = "macos")] diff --git a/espanso/src/patch/patches/win/mod.rs b/espanso/src/patch/patches/win/mod.rs index c3cc1a7..6988331 100644 --- a/espanso/src/patch/patches/win/mod.rs +++ b/espanso/src/patch/patches/win/mod.rs @@ -17,4 +17,5 @@ * along with espanso. If not, see . */ -pub mod onenote_for_windows_10; \ No newline at end of file +pub mod onenote_for_windows_10; +pub mod vscode_win; \ No newline at end of file diff --git a/espanso/src/patch/patches/win/vscode_win.rs b/espanso/src/patch/patches/win/vscode_win.rs new file mode 100644 index 0000000..df0ed7d --- /dev/null +++ b/espanso/src/patch/patches/win/vscode_win.rs @@ -0,0 +1,44 @@ +/* + * This file is part of espanso. + * + * Copyright (C) 2019-2021 Federico Terzi + * + * espanso is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * espanso is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with espanso. If not, see . + */ + +use std::sync::Arc; + +use espanso_config::config::Backend; + +use crate::patch::patches::{PatchedConfig, Patches}; +use crate::patch::PatchDefinition; + +pub fn patch() -> PatchDefinition { + PatchDefinition { + name: module_path!().split(":").last().unwrap_or("unknown"), + is_enabled: || cfg!(target_os = "windows"), + should_patch: |app| app.exec.unwrap_or_default().contains("Code.exe"), + apply: |base, name| { + Arc::new(PatchedConfig::patch( + base, + name, + Patches { + key_delay: Some(Some(10)), + backend: Some(Backend::Clipboard), + ..Default::default() + }, + )) + }, + } +} \ No newline at end of file