Rollup merge of #76794 - richkadel:graphviz-font, r=ecstatic-morse
Make graphviz font configurable 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`. r? @ecstatic-morse
This commit is contained in:
commit
3bf66ae25f
@ -591,14 +591,14 @@ pub trait GraphWalk<'a> {
|
|||||||
fn target(&'a self, edge: &Self::Edge) -> Self::Node;
|
fn target(&'a self, edge: &Self::Edge) -> Self::Node;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Copy, Clone, PartialEq, Eq, Debug)]
|
#[derive(Clone, PartialEq, Eq, Debug)]
|
||||||
pub enum RenderOption {
|
pub enum RenderOption {
|
||||||
NoEdgeLabels,
|
NoEdgeLabels,
|
||||||
NoNodeLabels,
|
NoNodeLabels,
|
||||||
NoEdgeStyles,
|
NoEdgeStyles,
|
||||||
NoNodeStyles,
|
NoNodeStyles,
|
||||||
|
|
||||||
Monospace,
|
Fontname(String),
|
||||||
DarkTheme,
|
DarkTheme,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -633,11 +633,14 @@ pub fn render_opts<'a, N, E, G, W>(g: &'a G, w: &mut W, options: &[RenderOption]
|
|||||||
// Global graph properties
|
// Global graph properties
|
||||||
let mut graph_attrs = Vec::new();
|
let mut graph_attrs = Vec::new();
|
||||||
let mut content_attrs = Vec::new();
|
let mut content_attrs = Vec::new();
|
||||||
if options.contains(&RenderOption::Monospace) {
|
let font;
|
||||||
let font = r#"fontname="Courier, monospace""#;
|
if let Some(fontname) = options.iter().find_map(|option| {
|
||||||
graph_attrs.push(font);
|
if let RenderOption::Fontname(fontname) = option { Some(fontname) } else { None }
|
||||||
content_attrs.push(font);
|
}) {
|
||||||
};
|
font = format!(r#"fontname="{}""#, fontname);
|
||||||
|
graph_attrs.push(&font[..]);
|
||||||
|
content_attrs.push(&font[..]);
|
||||||
|
}
|
||||||
if options.contains(&RenderOption::DarkTheme) {
|
if options.contains(&RenderOption::DarkTheme) {
|
||||||
graph_attrs.push(r#"bgcolor="black""#);
|
graph_attrs.push(r#"bgcolor="black""#);
|
||||||
content_attrs.push(r#"color="white""#);
|
content_attrs.push(r#"color="white""#);
|
||||||
|
@ -306,7 +306,8 @@ fn write_graphviz_results<A>(
|
|||||||
let mut buf = Vec::new();
|
let mut buf = Vec::new();
|
||||||
|
|
||||||
let graphviz = graphviz::Formatter::new(body, def_id, results, style);
|
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 {
|
if tcx.sess.opts.debugging_opts.graphviz_dark_mode {
|
||||||
render_opts.push(dot::RenderOption::DarkTheme);
|
render_opts.push(dot::RenderOption::DarkTheme);
|
||||||
}
|
}
|
||||||
|
@ -55,9 +55,9 @@ pub fn write_mir_fn_graphviz<'tcx, W>(
|
|||||||
writeln!(w, "{} {}Mir_{} {{", kind, cluster, def_name)?;
|
writeln!(w, "{} {}Mir_{} {{", kind, cluster, def_name)?;
|
||||||
|
|
||||||
// Global graph properties
|
// Global graph properties
|
||||||
let font = r#"fontname="Courier, monospace""#;
|
let font = format!(r#"fontname="{}""#, tcx.sess.opts.debugging_opts.graphviz_font);
|
||||||
let mut graph_attrs = vec![font];
|
let mut graph_attrs = vec![&font[..]];
|
||||||
let mut content_attrs = vec![font];
|
let mut content_attrs = vec![&font[..]];
|
||||||
|
|
||||||
let dark_mode = tcx.sess.opts.debugging_opts.graphviz_dark_mode;
|
let dark_mode = tcx.sess.opts.debugging_opts.graphviz_dark_mode;
|
||||||
if dark_mode {
|
if dark_mode {
|
||||||
|
@ -1762,6 +1762,10 @@ pub fn build_session_options(matches: &getopts::Matches) -> Options {
|
|||||||
debugging_opts.symbol_mangling_version = SymbolManglingVersion::V0;
|
debugging_opts.symbol_mangling_version = SymbolManglingVersion::V0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let Ok(graphviz_font) = std::env::var("RUSTC_GRAPHVIZ_FONT") {
|
||||||
|
debugging_opts.graphviz_font = graphviz_font;
|
||||||
|
}
|
||||||
|
|
||||||
if !cg.embed_bitcode {
|
if !cg.embed_bitcode {
|
||||||
match cg.lto {
|
match cg.lto {
|
||||||
LtoCli::No | LtoCli::Unspecified => {}
|
LtoCli::No | LtoCli::Unspecified => {}
|
||||||
|
@ -911,6 +911,9 @@ fn parse_target_feature(slot: &mut String, v: Option<&str>) -> bool {
|
|||||||
"set the optimization fuel quota for a crate"),
|
"set the optimization fuel quota for a crate"),
|
||||||
graphviz_dark_mode: bool = (false, parse_bool, [UNTRACKED],
|
graphviz_dark_mode: bool = (false, parse_bool, [UNTRACKED],
|
||||||
"use dark-themed colors in graphviz output (default: no)"),
|
"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; can be overridden by setting \
|
||||||
|
environment variable `RUSTC_GRAPHVIZ_FONT` (default: `Courier, monospace`)"),
|
||||||
hir_stats: bool = (false, parse_bool, [UNTRACKED],
|
hir_stats: bool = (false, parse_bool, [UNTRACKED],
|
||||||
"print some statistics about AST and HIR (default: no)"),
|
"print some statistics about AST and HIR (default: no)"),
|
||||||
human_readable_cgu_names: bool = (false, parse_bool, [TRACKED],
|
human_readable_cgu_names: bool = (false, parse_bool, [TRACKED],
|
||||||
|
Loading…
Reference in New Issue
Block a user