pub mod search;
pub mod utils;
mod var;
pub use var::*;
use serde::de::DeserializeOwned;
use serde_json::Value;
use std::io;
pub fn load_buffer_var(name: &str, allow_zero: bool) -> io::Result<Option<Value>> {
let cmd = utils::find_cmd()?;
let scope = Scope::Buffer;
VimVar::new(cmd, scope, name).load(allow_zero)
}
pub fn load_typed_buffer_var<T>(name: &str, allow_zero: bool) -> io::Result<Option<T>>
where
T: DeserializeOwned,
{
let cmd = utils::find_cmd()?;
let scope = Scope::Buffer;
VimVar::new(cmd, scope, name).load_typed(allow_zero)
}
pub fn load_window_var(name: &str, allow_zero: bool) -> io::Result<Option<Value>> {
let cmd = utils::find_cmd()?;
let scope = Scope::Window;
VimVar::new(cmd, scope, name).load(allow_zero)
}
pub fn load_typed_window_var<T>(name: &str, allow_zero: bool) -> io::Result<Option<T>>
where
T: DeserializeOwned,
{
let cmd = utils::find_cmd()?;
let scope = Scope::Window;
VimVar::new(cmd, scope, name).load_typed(allow_zero)
}
pub fn load_tabpage_var(name: &str, allow_zero: bool) -> io::Result<Option<Value>> {
let cmd = utils::find_cmd()?;
let scope = Scope::Tabpage;
VimVar::new(cmd, scope, name).load(allow_zero)
}
pub fn load_typed_tabpage_var<T>(name: &str, allow_zero: bool) -> io::Result<Option<T>>
where
T: DeserializeOwned,
{
let cmd = utils::find_cmd()?;
let scope = Scope::Tabpage;
VimVar::new(cmd, scope, name).load_typed(allow_zero)
}
pub fn load_local_var(name: &str, allow_zero: bool) -> io::Result<Option<Value>> {
let cmd = utils::find_cmd()?;
let scope = Scope::Local;
VimVar::new(cmd, scope, name).load(allow_zero)
}
pub fn load_typed_local_var<T>(name: &str, allow_zero: bool) -> io::Result<Option<T>>
where
T: DeserializeOwned,
{
let cmd = utils::find_cmd()?;
let scope = Scope::Local;
VimVar::new(cmd, scope, name).load_typed(allow_zero)
}
pub fn load_script_var(name: &str, allow_zero: bool) -> io::Result<Option<Value>> {
let cmd = utils::find_cmd()?;
let scope = Scope::Script;
VimVar::new(cmd, scope, name).load(allow_zero)
}
pub fn load_typed_script_var<T>(name: &str, allow_zero: bool) -> io::Result<Option<T>>
where
T: DeserializeOwned,
{
let cmd = utils::find_cmd()?;
let scope = Scope::Script;
VimVar::new(cmd, scope, name).load_typed(allow_zero)
}
pub fn load_function_arg_var(name: &str, allow_zero: bool) -> io::Result<Option<Value>> {
let cmd = utils::find_cmd()?;
let scope = Scope::FunctionArg;
VimVar::new(cmd, scope, name).load(allow_zero)
}
pub fn load_typed_function_arg_var<T>(name: &str, allow_zero: bool) -> io::Result<Option<T>>
where
T: DeserializeOwned,
{
let cmd = utils::find_cmd()?;
let scope = Scope::FunctionArg;
VimVar::new(cmd, scope, name).load_typed(allow_zero)
}
pub fn load_global_var(name: &str, allow_zero: bool) -> io::Result<Option<Value>> {
let cmd = utils::find_cmd()?;
let scope = Scope::Global;
VimVar::new(cmd, scope, name).load(allow_zero)
}
pub fn load_typed_global_var<T>(name: &str, allow_zero: bool) -> io::Result<Option<T>>
where
T: DeserializeOwned,
{
let cmd = utils::find_cmd()?;
let scope = Scope::Global;
VimVar::new(cmd, scope, name).load_typed(allow_zero)
}
pub fn load_vim_var(name: &str, allow_zero: bool) -> io::Result<Option<Value>> {
let cmd = utils::find_cmd()?;
let scope = Scope::Vim;
VimVar::new(cmd, scope, name).load(allow_zero)
}
pub fn load_typed_vim_var<T>(name: &str, allow_zero: bool) -> io::Result<Option<T>>
where
T: DeserializeOwned,
{
let cmd = utils::find_cmd()?;
let scope = Scope::Vim;
VimVar::new(cmd, scope, name).load_typed(allow_zero)
}