Extract VimModeSetting
to its own crate (#21019)
This PR extracts the `VimModeSetting` out of the `vim` crate and into its own `vim_mode_setting` crate. A number of crates were depending on the entirety of the `vim` crate just to reference `VimModeSetting`, which was not ideal. Release Notes: - N/A
This commit is contained in:
parent
790fdcf737
commit
b102a40e04
13 changed files with 85 additions and 39 deletions
17
crates/vim_mode_setting/Cargo.toml
Normal file
17
crates/vim_mode_setting/Cargo.toml
Normal file
|
@ -0,0 +1,17 @@
|
|||
[package]
|
||||
name = "vim_mode_setting"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
publish = false
|
||||
license = "GPL-3.0-or-later"
|
||||
|
||||
[lints]
|
||||
workspace = true
|
||||
|
||||
[lib]
|
||||
path = "src/vim_mode_setting.rs"
|
||||
|
||||
[dependencies]
|
||||
anyhow.workspace = true
|
||||
gpui.workspace = true
|
||||
settings.workspace = true
|
1
crates/vim_mode_setting/LICENSE-GPL
Symbolic link
1
crates/vim_mode_setting/LICENSE-GPL
Symbolic link
|
@ -0,0 +1 @@
|
|||
../../LICENSE-GPL
|
36
crates/vim_mode_setting/src/vim_mode_setting.rs
Normal file
36
crates/vim_mode_setting/src/vim_mode_setting.rs
Normal file
|
@ -0,0 +1,36 @@
|
|||
//! Contains the [`VimModeSetting`] used to enable/disable Vim mode.
|
||||
//!
|
||||
//! This is in its own crate as we want other crates to be able to enable or
|
||||
//! disable Vim mode without having to depend on the `vim` crate in its
|
||||
//! entirety.
|
||||
|
||||
use anyhow::Result;
|
||||
use gpui::AppContext;
|
||||
use settings::{Settings, SettingsSources};
|
||||
|
||||
/// Initializes the `vim_mode_setting` crate.
|
||||
pub fn init(cx: &mut AppContext) {
|
||||
VimModeSetting::register(cx);
|
||||
}
|
||||
|
||||
/// Whether or not to enable Vim mode.
|
||||
///
|
||||
/// Default: false
|
||||
pub struct VimModeSetting(pub bool);
|
||||
|
||||
impl Settings for VimModeSetting {
|
||||
const KEY: Option<&'static str> = Some("vim_mode");
|
||||
|
||||
type FileContent = Option<bool>;
|
||||
|
||||
fn load(sources: SettingsSources<Self::FileContent>, _: &mut AppContext) -> Result<Self> {
|
||||
Ok(Self(
|
||||
sources
|
||||
.user
|
||||
.or(sources.server)
|
||||
.copied()
|
||||
.flatten()
|
||||
.unwrap_or(sources.default.ok_or_else(Self::missing_default)?),
|
||||
))
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue