36 if (diagnostics.empty()) {
37 ImGui::TextDisabled(
"No diagnostics");
42 int errors = 0, warnings = 0, notes = 0;
43 for (
const auto& d : diagnostics) {
58 ImGui::Text(
"%d error(s), %d warning(s), %d note(s)", errors, warnings,
61 ImGui::Text(
"%d error(s), %d warning(s)", errors, warnings);
65 if (ImGui::BeginTable(
"##diagnostics", 3,
66 ImGuiTableFlags_RowBg | ImGuiTableFlags_Resizable |
67 ImGuiTableFlags_ScrollY)) {
68 ImGui::TableSetupColumn(
"Severity", ImGuiTableColumnFlags_WidthFixed,
70 ImGui::TableSetupColumn(
"Location", ImGuiTableColumnFlags_WidthFixed,
72 ImGui::TableSetupColumn(
"Message", ImGuiTableColumnFlags_WidthStretch);
73 ImGui::TableHeadersRow();
75 for (std::size_t i = 0; i < diagnostics.size(); ++i) {
76 const auto& d = diagnostics[i];
77 const auto style = StyleFor(d.severity);
79 ImGui::PushID(
static_cast<int>(i));
80 ImGui::TableNextRow();
82 ImGui::TableSetColumnIndex(0);
85 ImGui::Text(
"%s %s", style.icon, style.label);
88 ImGui::TableSetColumnIndex(1);
89 if (!d.file.empty()) {
90 std::string label = d.file +
":" + std::to_string(d.line);
92 label +=
":" + std::to_string(d.column);
93 if (ImGui::Selectable(label.c_str(),
false,
94 ImGuiSelectableFlags_SpanAllColumns)) {
100 ImGui::TextDisabled(
"<unknown>");
103 ImGui::TableSetColumnIndex(2);
104 ImGui::TextWrapped(
"%s", d.message.c_str());