config folder watcher improvement

This commit is contained in:
Dongdong Zhou 2022-09-27 20:25:45 +01:00
parent f4a93b61f0
commit 7dbcfc0a6c
2 changed files with 22 additions and 11 deletions

View File

@ -11,7 +11,7 @@
};
use indexmap::IndexMap;
use lapce_proxy::{directory::Directory, plugin::wasi::find_all_volts};
use parking_lot::RwLock;
use parking_lot::{Mutex, RwLock};
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use structdesc::FieldNames;
@ -606,11 +606,15 @@ pub struct Config {
pub struct ConfigWatcher {
event_sink: ExtEventSink,
delay_handler: Arc<Mutex<Option<()>>>,
}
impl ConfigWatcher {
pub fn new(event_sink: ExtEventSink) -> Self {
Self { event_sink }
Self {
event_sink,
delay_handler: Arc::new(Mutex::new(None)),
}
}
}
@ -621,11 +625,19 @@ fn handle_event(&mut self, event: notify::Result<notify::Event>) {
notify::EventKind::Create(_)
| notify::EventKind::Modify(_)
| notify::EventKind::Remove(_) => {
let _ = self.event_sink.submit_command(
LAPCE_UI_COMMAND,
LapceUICommand::ReloadConfig,
Target::Auto,
);
*self.delay_handler.lock() = Some(());
let delay_handler = self.delay_handler.clone();
let event_sink = self.event_sink.clone();
std::thread::spawn(move || {
std::thread::sleep(std::time::Duration::from_millis(500));
if delay_handler.lock().take().is_some() {
let _ = event_sink.submit_command(
LAPCE_UI_COMMAND,
LapceUICommand::ReloadConfig,
Target::Auto,
);
}
});
}
_ => (),
}

View File

@ -93,7 +93,6 @@ fn count(&self) -> usize {
#[cfg(test)]
mod test {
use crate::command::CommandExecuted::No;
use crate::selection_range::SyntaxSelectionRanges;
use lapce_rpc::buffer::BufferId;
use lsp_types::{Position, Range, SelectionRange};
@ -136,11 +135,11 @@ fn should_get_next_selection_range() {
rev: 0,
last_known_selection: None,
ranges: SelectionRange {
range: range_zero.clone(),
range: range_zero,
parent: Some(Box::new(SelectionRange {
range: range_one.clone(),
range: range_one,
parent: Some(Box::new(SelectionRange {
range: range_two.clone(),
range: range_two,
parent: None,
})),
})),