From dda0980c4de190fa7979aabb001cc32db09ec6ef Mon Sep 17 00:00:00 2001 From: Yuya Nishihara Date: Tue, 3 Sep 2024 17:18:49 +0900 Subject: [PATCH] graphlog: inline node_template_for_key() It's easier to follow than function call with 3 string parameters. --- cli/src/commands/evolog.rs | 4 ++-- cli/src/commands/log.rs | 27 +++++++++++++++++---------- cli/src/commands/operation/log.rs | 27 +++++++++++++++++---------- cli/src/graphlog.rs | 15 --------------- 4 files changed, 36 insertions(+), 37 deletions(-) diff --git a/cli/src/commands/evolog.rs b/cli/src/commands/evolog.rs index 4a79e57c6..cd4017dd7 100644 --- a/cli/src/commands/evolog.rs +++ b/cli/src/commands/evolog.rs @@ -85,6 +85,7 @@ pub(crate) fn cmd_evolog( let start_commit = workspace_command.resolve_single_rev(&args.revision)?; let diff_renderer = workspace_command.diff_renderer_for_log(&args.diff_format, args.patch)?; + let graph_style = GraphStyle::from_settings(command.settings())?; let with_content_format = LogContentFormat::new(ui, command.settings())?; let template; @@ -105,7 +106,7 @@ pub(crate) fn cmd_evolog( node_template = workspace_command .parse_template( &language, - &get_node_template(command.settings())?, + &get_node_template(graph_style, command.settings())?, CommitTemplateLanguage::wrap_commit_opt, )? .labeled("node"); @@ -144,7 +145,6 @@ pub(crate) fn cmd_evolog( commits.truncate(n); } if !args.no_graph { - let graph_style = GraphStyle::from_settings(command.settings())?; let mut graph = get_graphlog(graph_style, formatter.raw()); for commit in commits { let mut edges = vec![]; diff --git a/cli/src/commands/log.rs b/cli/src/commands/log.rs index b72cd41a7..3119288e8 100644 --- a/cli/src/commands/log.rs +++ b/cli/src/commands/log.rs @@ -20,6 +20,7 @@ use jj_lib::repo::Repo; use jj_lib::revset::RevsetExpression; use jj_lib::revset::RevsetFilterPredicate; use jj_lib::revset::RevsetIteratorExt; +use jj_lib::settings::ConfigResultExt as _; use jj_lib::settings::UserSettings; use tracing::instrument; @@ -31,7 +32,6 @@ use crate::command_error::CommandError; use crate::commit_templater::CommitTemplateLanguage; use crate::diff_util::DiffFormatArgs; use crate::graphlog::get_graphlog; -use crate::graphlog::node_template_for_key; use crate::graphlog::Edge; use crate::graphlog::GraphStyle; use crate::ui::Ui; @@ -120,6 +120,7 @@ pub(crate) fn cmd_log( let store = repo.store(); let diff_renderer = workspace_command.diff_renderer_for_log(&args.diff_format, args.patch)?; + let graph_style = GraphStyle::from_settings(command.settings())?; let use_elided_nodes = command .settings() @@ -145,7 +146,7 @@ pub(crate) fn cmd_log( node_template = workspace_command .parse_template( &language, - &get_node_template(command.settings())?, + &get_node_template(graph_style, command.settings())?, CommitTemplateLanguage::wrap_commit_opt, )? .labeled("node"); @@ -165,7 +166,6 @@ pub(crate) fn cmd_log( let limit = args.limit.or(args.deprecated_limit).unwrap_or(usize::MAX); if !args.no_graph { - let graph_style = GraphStyle::from_settings(command.settings())?; let mut graph = get_graphlog(graph_style, formatter.raw()); let forward_iter = TopoGroupedGraphIterator::new(revset.iter_graph()); let iter: Box> = if args.reversed { @@ -297,11 +297,18 @@ pub(crate) fn cmd_log( Ok(()) } -pub fn get_node_template(settings: &UserSettings) -> Result { - node_template_for_key( - settings, - "templates.log_node", - "builtin_log_node", - "builtin_log_node_ascii", - ) +pub fn get_node_template( + style: GraphStyle, + settings: &UserSettings, +) -> Result { + let symbol = settings + .config() + .get_string("templates.log_node") + .optional()?; + let default = if style.is_ascii() { + "builtin_log_node_ascii" + } else { + "builtin_log_node" + }; + Ok(symbol.unwrap_or_else(|| default.to_owned())) } diff --git a/cli/src/commands/operation/log.rs b/cli/src/commands/operation/log.rs index 00b96e8ae..9c1422e07 100644 --- a/cli/src/commands/operation/log.rs +++ b/cli/src/commands/operation/log.rs @@ -15,6 +15,7 @@ use std::slice; use jj_lib::op_walk; +use jj_lib::settings::ConfigResultExt as _; use jj_lib::settings::UserSettings; use crate::cli_util::format_template; @@ -22,7 +23,6 @@ use crate::cli_util::CommandHelper; use crate::cli_util::LogContentFormat; use crate::command_error::CommandError; use crate::graphlog::get_graphlog; -use crate::graphlog::node_template_for_key; use crate::graphlog::Edge; use crate::graphlog::GraphStyle; use crate::operation_templater::OperationTemplateLanguage; @@ -73,6 +73,7 @@ pub fn cmd_op_log( }; let op_store = current_op.op_store(); + let graph_style = GraphStyle::from_settings(command.settings())?; let with_content_format = LogContentFormat::new(ui, command.settings())?; let template; @@ -99,7 +100,7 @@ pub fn cmd_op_log( .parse_template( ui, &language, - &get_node_template(command.settings())?, + &get_node_template(graph_style, command.settings())?, OperationTemplateLanguage::wrap_operation, )? .labeled("node"); @@ -117,7 +118,6 @@ pub fn cmd_op_log( let limit = args.limit.or(args.deprecated_limit).unwrap_or(usize::MAX); let iter = op_walk::walk_ancestors(slice::from_ref(¤t_op)).take(limit); if !args.no_graph { - let graph_style = GraphStyle::from_settings(command.settings())?; let mut graph = get_graphlog(graph_style, formatter.raw()); for op in iter { let op = op?; @@ -152,11 +152,18 @@ pub fn cmd_op_log( Ok(()) } -fn get_node_template(settings: &UserSettings) -> Result { - node_template_for_key( - settings, - "templates.op_log_node", - "builtin_op_log_node", - "builtin_op_log_node_ascii", - ) +fn get_node_template( + style: GraphStyle, + settings: &UserSettings, +) -> Result { + let symbol = settings + .config() + .get_string("templates.op_log_node") + .optional()?; + let default = if style.is_ascii() { + "builtin_op_log_node_ascii" + } else { + "builtin_op_log_node" + }; + Ok(symbol.unwrap_or_else(|| default.to_owned())) } diff --git a/cli/src/graphlog.rs b/cli/src/graphlog.rs index 4d5f0ab1f..ec9a33f60 100644 --- a/cli/src/graphlog.rs +++ b/cli/src/graphlog.rs @@ -17,7 +17,6 @@ use std::io; use std::io::Write; use itertools::Itertools; -use jj_lib::settings::ConfigResultExt as _; use jj_lib::settings::UserSettings; use renderdag::Ancestor; use renderdag::GraphRowRenderer; @@ -125,20 +124,6 @@ impl GraphStyle { } } -pub fn node_template_for_key( - settings: &UserSettings, - key: &str, - fallback: &str, - ascii_fallback: &str, -) -> Result { - let symbol = settings.config().get_string(key).optional()?; - if GraphStyle::from_settings(settings)?.is_ascii() { - Ok(symbol.unwrap_or_else(|| ascii_fallback.to_owned())) - } else { - Ok(symbol.unwrap_or_else(|| fallback.to_owned())) - } -} - pub fn get_graphlog<'a, K: Clone + Eq + Hash + 'a>( style: GraphStyle, formatter: &'a mut dyn Write,