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
|
|
@ -25,6 +25,7 @@ pub use signature::*;
|
|||
pub mod semantic_tokens;
|
||||
pub use semantic_tokens::*;
|
||||
use tinymist_world::vfs::WorkspaceResolver;
|
||||
use tinymist_world::WorldDeps;
|
||||
use typst::syntax::Source;
|
||||
use typst::World;
|
||||
mod post_tyck;
|
||||
|
|
@ -39,7 +40,7 @@ mod prelude;
|
|||
mod global;
|
||||
pub use global::*;
|
||||
|
||||
use ecow::eco_format;
|
||||
use ecow::{eco_format, EcoVec};
|
||||
use lsp_types::Url;
|
||||
use typst::diag::{FileError, FileResult};
|
||||
use typst::foundations::{Func, Value};
|
||||
|
|
@ -71,6 +72,10 @@ pub trait LspWorldExt {
|
|||
|
||||
/// Resolve the uri for a file id.
|
||||
fn uri_for_id(&self, fid: FileId) -> FileResult<Url>;
|
||||
|
||||
/// Get all depended file ids of a compilation, inclusively.
|
||||
/// Note: must be called after compilation.
|
||||
fn depended_files(&self) -> EcoVec<FileId>;
|
||||
}
|
||||
|
||||
impl LspWorldExt for tinymist_project::LspWorld {
|
||||
|
|
@ -96,6 +101,14 @@ impl LspWorldExt for tinymist_project::LspWorld {
|
|||
log::info!("uri_for_id: {fid:?} -> {res:?}");
|
||||
res.map_err(|err| FileError::Other(Some(eco_format!("convert to url: {err:?}"))))
|
||||
}
|
||||
|
||||
fn depended_files(&self) -> EcoVec<FileId> {
|
||||
let mut deps = EcoVec::new();
|
||||
self.iter_dependencies(&mut |file_id| {
|
||||
deps.push(file_id);
|
||||
});
|
||||
deps
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ use tinymist_project::LspWorld;
|
|||
use tinymist_std::debug_loc::DataSource;
|
||||
use tinymist_std::hash::{hash128, FxDashMap};
|
||||
use tinymist_world::vfs::{PathResolution, WorkspaceResolver};
|
||||
use tinymist_world::{EntryReader, WorldDeps, DETACHED_ENTRY};
|
||||
use tinymist_world::{EntryReader, DETACHED_ENTRY};
|
||||
use typst::diag::{eco_format, At, FileError, FileResult, SourceResult, StrResult};
|
||||
use typst::engine::{Route, Sink, Traced};
|
||||
use typst::eval::Eval;
|
||||
|
|
@ -370,12 +370,7 @@ impl LocalContext {
|
|||
/// Get all depended file ids of a compilation, inclusively.
|
||||
/// Note: must be called after compilation.
|
||||
pub fn depended_files(&self) -> EcoVec<TypstFileId> {
|
||||
let mut deps = EcoVec::new();
|
||||
self.world.iter_dependencies(&mut |file_id| {
|
||||
deps.push(file_id);
|
||||
});
|
||||
|
||||
deps
|
||||
self.world.depended_files()
|
||||
}
|
||||
|
||||
/// Get the world surface for Typst compiler.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue