diff options
Diffstat (limited to 'support/texlab/src/action.rs')
-rw-r--r-- | support/texlab/src/action.rs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/support/texlab/src/action.rs b/support/texlab/src/action.rs new file mode 100644 index 0000000000..da52333ff0 --- /dev/null +++ b/support/texlab/src/action.rs @@ -0,0 +1,37 @@ +use crate::workspace::Uri; +use lsp_types::ProgressToken; +use std::mem; +use std::sync::Mutex; + +#[derive(Debug, PartialEq, Eq, Clone)] +pub enum LintReason { + Change, + Save, +} + +#[derive(Debug, PartialEq, Eq, Clone)] +pub enum Action { + CheckInstalledDistribution, + DetectRoot(Uri), + PublishDiagnostics, + RunLinter(Uri, LintReason), + Build(Uri), + CancelBuild(ProgressToken), +} + +#[derive(Debug, Default)] +pub struct ActionManager { + actions: Mutex<Vec<Action>>, +} + +impl ActionManager { + pub fn push(&self, action: Action) { + let mut actions = self.actions.lock().unwrap(); + actions.push(action); + } + + pub fn take(&self) -> Vec<Action> { + let mut actions = self.actions.lock().unwrap(); + mem::replace(&mut *actions, Vec::new()) + } +} |