diff options
Diffstat (limited to 'helix-view/src/document.rs')
-rw-r--r-- | helix-view/src/document.rs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/helix-view/src/document.rs b/helix-view/src/document.rs index db12fb92..b2a9ddec 100644 --- a/helix-view/src/document.rs +++ b/helix-view/src/document.rs @@ -1,5 +1,6 @@ use anyhow::{anyhow, bail, Context, Error}; use arc_swap::access::DynAccess; +use arc_swap::ArcSwap; use futures_util::future::BoxFuture; use futures_util::FutureExt; use helix_core::auto_pairs::AutoPairs; @@ -158,6 +159,7 @@ pub struct Document { language_server: Option<Arc<helix_lsp::Client>>, diff_handle: Option<DiffHandle>, + version_control_head: Option<Arc<ArcSwap<Box<str>>>>, } use std::{fmt, mem}; @@ -404,6 +406,7 @@ impl Document { language_server: None, diff_handle: None, config, + version_control_head: None, } } pub fn default(config: Arc<dyn DynAccess<Config>>) -> Self { @@ -707,6 +710,8 @@ impl Document { None => self.diff_handle = None, } + self.version_control_head = provider_registry.get_current_head_name(&path); + Ok(()) } @@ -1158,6 +1163,17 @@ impl Document { } } + pub fn version_control_head(&self) -> Option<Arc<Box<str>>> { + self.version_control_head.as_ref().map(|a| a.load_full()) + } + + pub fn set_version_control_head( + &mut self, + version_control_head: Option<Arc<ArcSwap<Box<str>>>>, + ) { + self.version_control_head = version_control_head; + } + #[inline] /// Tree-sitter AST tree pub fn syntax(&self) -> Option<&Syntax> { |