Alternative to PR ##76776.
To change the graphviz output to use an alternative `fontname` value,
add a command line option like: `rustc --graphviz-font=monospace`.
fn target(&'a self, edge: &Self::Edge) -> Self::Node;
}
-#[derive(Copy, Clone, PartialEq, Eq, Debug)]
+#[derive(Clone, PartialEq, Eq, Debug)]
pub enum RenderOption {
NoEdgeLabels,
NoNodeLabels,
NoEdgeStyles,
NoNodeStyles,
- Monospace,
+ Fontname(String),
DarkTheme,
}
// Global graph properties
let mut graph_attrs = Vec::new();
let mut content_attrs = Vec::new();
- if options.contains(&RenderOption::Monospace) {
- let font = r#"fontname="Courier, monospace""#;
- graph_attrs.push(font);
- content_attrs.push(font);
- };
+ let font;
+ if let Some(fontname) = options.iter().find_map(|option| {
+ if let RenderOption::Fontname(fontname) = option { Some(fontname) } else { None }
+ }) {
+ font = format!(r#"fontname="{}""#, fontname);
+ graph_attrs.push(&font[..]);
+ content_attrs.push(&font[..]);
+ }
if options.contains(&RenderOption::DarkTheme) {
graph_attrs.push(r#"bgcolor="black""#);
content_attrs.push(r#"color="white""#);
let mut buf = Vec::new();
let graphviz = graphviz::Formatter::new(body, def_id, results, style);
- let mut render_opts = vec![dot::RenderOption::Monospace];
+ let mut render_opts =
+ vec![dot::RenderOption::Fontname(tcx.sess.opts.debugging_opts.graphviz_font.clone())];
if tcx.sess.opts.debugging_opts.graphviz_dark_mode {
render_opts.push(dot::RenderOption::DarkTheme);
}
writeln!(w, "{} {}Mir_{} {{", kind, cluster, def_name)?;
// Global graph properties
- let font = r#"fontname="Courier, monospace""#;
- let mut graph_attrs = vec![font];
- let mut content_attrs = vec![font];
+ let font = format!(r#"fontname="{}""#, tcx.sess.opts.debugging_opts.graphviz_font);
+ let mut graph_attrs = vec![&font[..]];
+ let mut content_attrs = vec![&font[..]];
let dark_mode = tcx.sess.opts.debugging_opts.graphviz_dark_mode;
if dark_mode {
"set the optimization fuel quota for a crate"),
graphviz_dark_mode: bool = (false, parse_bool, [UNTRACKED],
"use dark-themed colors in graphviz output (default: no)"),
+ graphviz_font: String = ("Courier, monospace".to_string(), parse_string, [UNTRACKED],
+ "use the given `fontname` in graphviz output (default: `Courier, monospace`)"),
hir_stats: bool = (false, parse_bool, [UNTRACKED],
"print some statistics about AST and HIR (default: no)"),
human_readable_cgu_names: bool = (false, parse_bool, [TRACKED],