mirror of
https://github.com/martinvonz/jj.git
synced 2025-02-05 19:14:43 +00:00
templater: pass RepoLoader to OperationTemplateLanguage
UserSettings will be obtained from there. If operation template supported "self.repo() -> Repo" method, RepoLoader would be needed. It's equivalent to Repo in CommitTemplateLanguage.
This commit is contained in:
parent
83d237a32c
commit
4e30fc7215
3 changed files with 8 additions and 6 deletions
|
@ -1717,7 +1717,7 @@ to the current parents may contain changes from multiple commits.
|
|||
/// Creates operation template language environment for this workspace.
|
||||
pub fn operation_template_language(&self) -> OperationTemplateLanguage {
|
||||
OperationTemplateLanguage::new(
|
||||
self.repo().op_store().root_operation_id(),
|
||||
self.workspace.repo_loader(),
|
||||
Some(self.repo().op_id()),
|
||||
self.env.operation_template_extensions(),
|
||||
)
|
||||
|
|
|
@ -108,7 +108,7 @@ fn do_op_log(
|
|||
let op_node_template;
|
||||
{
|
||||
let language = OperationTemplateLanguage::new(
|
||||
repo_loader.op_store().root_operation_id(),
|
||||
repo_loader,
|
||||
Some(current_op.id()),
|
||||
workspace_env.operation_template_extensions(),
|
||||
);
|
||||
|
|
|
@ -22,6 +22,7 @@ use jj_lib::extensions_map::ExtensionsMap;
|
|||
use jj_lib::object_id::ObjectId;
|
||||
use jj_lib::op_store::OperationId;
|
||||
use jj_lib::operation::Operation;
|
||||
use jj_lib::repo::RepoLoader;
|
||||
|
||||
use crate::template_builder;
|
||||
use crate::template_builder::merge_fn_map;
|
||||
|
@ -49,7 +50,7 @@ pub trait OperationTemplateLanguageExtension {
|
|||
}
|
||||
|
||||
pub struct OperationTemplateLanguage {
|
||||
root_op_id: OperationId,
|
||||
repo_loader: RepoLoader,
|
||||
current_op_id: Option<OperationId>,
|
||||
build_fn_table: OperationTemplateBuildFnTable,
|
||||
cache_extensions: ExtensionsMap,
|
||||
|
@ -59,7 +60,7 @@ impl OperationTemplateLanguage {
|
|||
/// Sets up environment where operation template will be transformed to
|
||||
/// evaluation tree.
|
||||
pub fn new(
|
||||
root_op_id: &OperationId,
|
||||
repo_loader: &RepoLoader,
|
||||
current_op_id: Option<&OperationId>,
|
||||
extensions: &[impl AsRef<dyn OperationTemplateLanguageExtension>],
|
||||
) -> Self {
|
||||
|
@ -74,7 +75,8 @@ impl OperationTemplateLanguage {
|
|||
}
|
||||
|
||||
OperationTemplateLanguage {
|
||||
root_op_id: root_op_id.clone(),
|
||||
// Clone these to keep lifetime simple
|
||||
repo_loader: repo_loader.clone(),
|
||||
current_op_id: current_op_id.cloned(),
|
||||
build_fn_table,
|
||||
cache_extensions,
|
||||
|
@ -336,7 +338,7 @@ fn builtin_operation_methods() -> OperationTemplateBuildMethodFnMap<Operation> {
|
|||
"root",
|
||||
|language, _diagnostics, _build_ctx, self_property, function| {
|
||||
function.expect_no_arguments()?;
|
||||
let root_op_id = language.root_op_id.clone();
|
||||
let root_op_id = language.repo_loader.op_store().root_operation_id().clone();
|
||||
let out_property = self_property.map(move |op| op.id() == &root_op_id);
|
||||
Ok(L::wrap_boolean(out_property))
|
||||
},
|
||||
|
|
Loading…
Reference in a new issue