mirror of https://github.com/helix-editor/helix
dont lock the engine when grabbing the docs
parent
6f4b41c9e8
commit
f40100a0cd
|
@ -14,7 +14,7 @@ use steel::{
|
||||||
IntoSteelVal, SteelString,
|
IntoSteelVal, SteelString,
|
||||||
},
|
},
|
||||||
steel_vm::{builtin::BuiltInModule, engine::Engine, register_fn::RegisterFn},
|
steel_vm::{builtin::BuiltInModule, engine::Engine, register_fn::RegisterFn},
|
||||||
RootToken, RootedSteelVal, SteelVal,
|
RootedSteelVal, SteelVal,
|
||||||
};
|
};
|
||||||
use tokio::sync::Mutex;
|
use tokio::sync::Mutex;
|
||||||
use tui::{
|
use tui::{
|
||||||
|
|
|
@ -149,6 +149,16 @@ where
|
||||||
(f)(&mut acquire_engine_lock())
|
(f)(&mut acquire_engine_lock())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn try_enter_engine<F, R>(f: F) -> Option<R>
|
||||||
|
where
|
||||||
|
F: FnOnce(&mut Engine) -> R,
|
||||||
|
{
|
||||||
|
match GLOBAL_ENGINE.try_lock() {
|
||||||
|
Ok(mut v) => Some((f)(&mut v)),
|
||||||
|
Err(_) => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub struct InterruptHandler {
|
pub struct InterruptHandler {
|
||||||
controller: ThreadStateController,
|
controller: ThreadStateController,
|
||||||
running: Arc<AtomicBool>,
|
running: Arc<AtomicBool>,
|
||||||
|
@ -1908,18 +1918,19 @@ impl super::PluginSystem for SteelScriptingEngine {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_doc_for_identifier(&self, ident: &str) -> Option<String> {
|
fn get_doc_for_identifier(&self, ident: &str) -> Option<String> {
|
||||||
enter_engine(|engine| get_doc_for_global(engine, ident))
|
try_enter_engine(|engine| get_doc_for_global(engine, ident)).unwrap_or_default()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Just dump docs for all top level values?
|
// Just dump docs for all top level values?
|
||||||
fn available_commands<'a>(&self) -> Vec<Cow<'a, str>> {
|
fn available_commands<'a>(&self) -> Vec<Cow<'a, str>> {
|
||||||
enter_engine(|engine| {
|
try_enter_engine(|engine| {
|
||||||
engine
|
engine
|
||||||
.readable_globals(*GLOBAL_OFFSET.get().unwrap())
|
.readable_globals(*GLOBAL_OFFSET.get().unwrap())
|
||||||
.iter()
|
.iter()
|
||||||
.map(|x| x.resolve().to_string().into())
|
.map(|x| x.resolve().to_string().into())
|
||||||
.collect()
|
.collect()
|
||||||
})
|
})
|
||||||
|
.unwrap_or_default()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn generate_sources(&self) {
|
fn generate_sources(&self) {
|
||||||
|
|
Loading…
Reference in New Issue