mirror of
https://github.com/Myriad-Dreamin/tinymist.git
synced 2025-11-25 13:23:44 +00:00
feat: run project compilations on main thread (#1197)
* dev: handle compile interrupt * dev: remove cache task use * feat: create project crate again dev: changes feat: delete unused code fix: errors fix: errors * feat: extra compilation is not needed * dev: implement all todos * fix: make event queue unbounded * fix: make preview work again * feat: event-driven recompilation * feat: evict vfs cache * feat: update evict strategy * feat: remove lock update
This commit is contained in:
parent
02a14c9cc9
commit
e4bf2e9e46
30 changed files with 1895 additions and 1778 deletions
|
|
@ -205,6 +205,16 @@ impl<M: PathAccessModel + Clone + Sized> Vfs<M> {
|
|||
access_model: self.access_model.clone(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn fork(&self) -> Self {
|
||||
Self {
|
||||
source_cache: self.source_cache.clone(),
|
||||
managed: Arc::new(Mutex::new(EntryMap::default())),
|
||||
paths: Arc::new(Mutex::new(PathMap::default())),
|
||||
revision: NonZeroUsize::new(1).expect("initial revision is 1"),
|
||||
access_model: self.access_model.clone(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<M: PathAccessModel + Sized> Vfs<M> {
|
||||
|
|
@ -245,8 +255,8 @@ impl<M: PathAccessModel + Sized> Vfs<M> {
|
|||
/// Reset all state.
|
||||
pub fn reset_all(&mut self) {
|
||||
self.reset_access_model();
|
||||
self.reset_cache();
|
||||
self.take_state();
|
||||
self.reset_mapping();
|
||||
self.take_source_cache();
|
||||
}
|
||||
|
||||
/// Reset access model.
|
||||
|
|
@ -255,7 +265,7 @@ impl<M: PathAccessModel + Sized> Vfs<M> {
|
|||
}
|
||||
|
||||
/// Reset all possible caches.
|
||||
pub fn reset_cache(&mut self) {
|
||||
pub fn reset_mapping(&mut self) {
|
||||
self.revise().reset_cache();
|
||||
}
|
||||
|
||||
|
|
@ -271,10 +281,14 @@ impl<M: PathAccessModel + Sized> Vfs<M> {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn take_state(&mut self) -> SourceCache {
|
||||
pub fn take_source_cache(&mut self) -> SourceCache {
|
||||
std::mem::take(&mut self.source_cache)
|
||||
}
|
||||
|
||||
pub fn clone_source_cache(&self) -> SourceCache {
|
||||
self.source_cache.clone()
|
||||
}
|
||||
|
||||
/// Resolve the real path for a file id.
|
||||
pub fn file_path(&self, id: TypstFileId) -> Result<PathResolution, FileError> {
|
||||
self.access_model.inner.resolver.path_for_id(id)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue